""Sinto muita pena do orgulho/tactica
dos infelizes, conseguem tudo que
querem,mas nao tem tudo que conseguem""
Fazbem F. Alberto
Conhecimento
sábado, 13 de outubro de 2018
segunda-feira, 22 de dezembro de 2014
Acesso à uma memória
principal
Conceito
A memória é um componente de um
sistema de computação cuja função é armazenar as informações que são, foram ou
serão manipuladas pelo sistema.
Segundo Von Neumann,
através dessas informações os dados ou as instruções de um programa entendem-se.
Realmente dentro do processamento em diversos componentes de um computador tem
havido coordenação dos dados e instruções.
Para
que um programa possa ser manipulado pela máquina, ele primeiro precisa estar armazenado
na memória principal.
A
memória principal dos computadores modernos é fabricada com tecnologia de
semicondutores, o que lhes permite elevada velocidade de acesso e transferência
de bits, já que são circuitos apenas eléctricos em funcionamento (não há partes
mecânicas ou magnéticas). A velocidade de propagação de um sinal eléctrico é
cerca de 300.000 km/s (velocidade de luz).
A
memória principal é a memória de trabalho da UCP, seu grande “bloco de
rascunho”, onde os programas e os dados e sucedem em execução, uns após os
outros.
Ela
é de acesso aleatório (do inglês Random Access Memory, frequentemente abreviado
para RAM) é um tipo de memória que permite a leitura e a escrita, utilizada como
memória primária em sistemas electrónicos digitais.
O termo acesso aleatório
identifica a capacidade de acesso a qualquer posição em qualquer momento, por oposição
ao acesso sequencial, imposto por alguns dispositivos de armazenamento, como
fitas magnéticas. O nome não é verdadeiramente apropriado, já que outros tipos
de memória (como a ROM) também permitem o acesso aleatório a seu conteúdo. O
nome mais apropriado seria Memória de Leitura e Escrita.
Apesar
do conceito de memória de acesso aleatório ser bastante amplo, actualmente o
termo é usado apenas para definir um dispositivo electrónico que o implementa,
basicamente um tipo específico de chip. Nesse caso, também fica implícito que é
uma memória volátil, isto é, todo o seu conteúdo é perdido quando a alimentação
da memória é desligada. A memória principal de um computador baseado na
Arquitectura de Von-Neumann é constituída por RAM. É nesta memória que são
carregados os programas em execução e os respectivos dados do utilizador. Uma
vez que se trata de memória volátil, os seus dados são perdidos quando o
computador é desligado. Para evitar perdas de dados, é necessário salvar a
informação para suporte não volátil, como o disco rígido.
Os circuitos da Memória Principal não
são combinatórios, eles têm capacidade de armazenar bits. Os circuitos usados
são do tipo "flip-flop", tem por finalidade permitir a comunicação
entre o usuário e o computador.
Uma memória de computador, o elemento a ser
manipulado é o bit, o qual, em
grupo de n bits, corresponde a uma unidade de informação a ser
armazenada, transferida ou recuperada. Para isso, realizam-se acções de armazenamento, transferência
de bits de outro componente (UCP ou HD) ou recuperação.
O
armazenamento pode ser
chamado de “escrita”, “gravação” ou “write”, enquanto a recuperação pode ser chamada de
“leitura” ou “read”. A gravação é destrutiva, ou
seja, os dados que estavam gravados anteriormente são substituídos pelos que
estão sendo gravados. Por outro lado, a recuperação apenas copia o valor armazenado
para outro local e valor original continua sem alteração.
Para
que um armazenamento em uma memória ocorra é necessário que seja definido um
local disponível identificado de alguma forma precisa e única, número ou código
associado ao local, que é o endereço (address) e irá permitir que a
informação possa ser localizada.
Hierarquia de memória
A
Memória Principal não é o único dispositivo de armazenamento de um computador.
Em função de características como tempo de acesso, capacidade de armazenamento,
custo, há uma hierarquia de dispositivos de memória em computadores.
Como mostra a
tabela abaixo:
Tipo
|
Capacidade
|
Velocidade
|
Custo
|
Localização
|
Volatilidade
|
Registrador
|
Bytes
|
Muito alta
|
Muito alto
|
UCP
|
Volátil
|
Memória cache
|
Kilobytes
|
Alta
|
Alto
|
UCP/placa
|
Volátil
|
Memória principal
|
Megabytes
|
Média
|
Médio
|
Placa
|
Volátil
|
Memória
auxiliar
|
Gigabytes
|
Baixa
|
Baixo
|
Externa
|
Não
volátil
|
A
UCP vê nesta ordem e acessa primeiro a que está mais próxima. Subindo na
hierarquia, quanto mais próximo da UCP, maior velocidade, maior custo, porém
menor capacidade de armazenamento.
A
memoria principal não só funciona directamente de e para a UCP. Cada momento, a
memória cache armazena a porção de código ou dados que estão sendo usados pela
UCP. Essa transferência da MP para memória Cache e da memória cache para MP é
feita pelo hardware, independentemente do software, que ignora se existe ou não memória cache, portanto ignora essa
transferência.
Cache, é um termo do inglês que deriva do francês “cacher” (em português significa
esconder). Na prática, para os demais componentes do sistema, tudo se passa
como se não houvesse cache, já
que nenhum deles, excepto o subsistema que controla o acesso à memória, toma
conhecimento de sua existência. Os dados nele armazenados são fornecidos como
se proviessem directamente do local de armazenamento original, apenas mais
rapidamente. É essa a razão do nome, já que as coisas se passam como se os
dados estivessem “escondidos” na cache.
A
memória cache opera em função
de um princípio estatístico comprovado: os programas tendem a referenciar
várias vezes pequenos trechos de programas, como loops, sub-rotinas, funções e só tem sentido porque programas
executados linearmente, sequencialmente, são raros. Desta forma, algoritmos
algoritmos de cache podem controlar qual parte do código ficará copiada na cache, a cada momento.
Quando
a MP busca um determinado trecho de código e o encontra na cache, dá-se um "cache hit" , enquanto se
o dado não estiver presente na cache será necessário requisitar o mesmo à MP, acarretando
atraso no processamento e dá-se um "cache miss" ou "cache
fault".
Para certas actividades
é fundamental que a transferência da informação seja a mais rápida possível
(menor “Tempo de Acesso”), enquanto a quantidade de bits (“Capacidade”) a ser manipulada
pode ser pequena. Em outras situações, o “Tempo de Acesso” não é tão
importante, mas sim o volume de dados gravado. A permanência da informação após
o desligamento do computador é outra característica relevante em algumas
situações.
Em
todos os casos, o custo da memória é inversamente proporcional à “capacidade” e
ao “tempo de acesso”. Assim sendo, para o correcto funcionamento de um
computador verifica-se a necessidade de diferentes tipos de memória. Este
conjunto de diferentes memórias é chamado “Subsistema de Memória”.
Tempo de acesso
Indica
quanto tempo a memória gasta para colocar uma informação na barra de dados após
uma determinada posição ter sido endereçada.
O tempo de acesso ou ciclo da memória
principal é construída por elementos cuja velocidade operacional se situa
abaixo das memórias cache, embora sejam muito mais rápidas que a memória
secundária.
Nos
primeiros sistemas usavam-se núcleos de ferrite (processo magnético) para
armazenar os bits na memória principal, até que foram substituídos pela
tecnologia de semicondutores. Os circuitos que representam os bits nas memórias
actuais possuem uma tecnologia bem mais avançada que seus predecessores de ferrite
e, portanto, têm velocidade mais elevada de transferência, garantindo baixos
tempos de acesso em comparação com o modelo anterior. São, porém, elementos
mais lentos do que aqueles que constituem as memórias cache. Na maioria dos sistemas
actuais esta tecnologia produz memória com elementos dinâmicos (DRAM.
Para que um programa seja executado
é necessário que ele esteja armazenado na memória principal incluindo com os
seus dados. Actualmente, é obrigatório apenas o armazenamento, na MP, da
instrução e dados que serão acessadas pela CPU. As instruções e os dados
permanecem temporariamente na MP, enquanto durar a execução do programa. Esta
temporariedade é bastante variável, dependendo de várias circunstâncias, como,
por exemplo, o tamanho do programa e sua duração, a quantidade de programas que
estão sendo processados juntos, e outras mais. No entanto, a transitoriedade
com que as informações permanecem armazenadas na MP é, em geral, mais duradoura
que na memória cache ou nos registradores, embora mais lenta que na memória
secundária.
O microprocessador gasta normalmente
dois pulsos de clock (“externo” – placa-mãe) para acessar a memória RAM. A
memória RAM tem que possuir um Tempo de Acesso (TA) inferior a este valor. Uma
memória de 60 ns num microcomputador de 66 MHz tem que esperar dois “Wait
States” de 15 ns, que somados ao T.A. mínimo de 30 ns vão permitir a
comunicação.
Como mostra o
exemplo abaixo:
Frequência de
Operação Máxima (MHz)
|
||
Clock externo
|
Tempo de um clock
|
Tempo
de acesso mínimo
|
66 MHz
|
15 ns
|
30
ns
|
100 MHz
|
10 ns
|
20
ns
|
133 MHz
|
7.5 ns
|
15
ns
|
200 MHz
|
5 ns
|
10
ns
|
400 MHz
|
2.5 ns
|
5 ns
|
Para
endereçar-se 4 “células” de memória utilizam-se 2 bits, porque =4.
Desta forma, para endereçar-se 32 células de memória irá se utilizar 5 bits (=
32). Para endereçar-se 256M endereços,irá se utilizar 28 bits ( * = ).
Assim, se E for o número de bits de um endereço e N for o número
de endereços, tem-se:
N =
O
endereçamento da memória utiliza o sistema “Linha/Coluna”, o qual permite
localizar um endereço a partir das coordenadas “Linha/Coluna” de uma matriz.
Assim se os 256M ()
endereços de uma memória estiverem distribuídos em uma matriz ,
precisaremos de apenas 14 bits (a metade dos 28 vistos anteriormente) para o
endereçamento.
Nesta
sistemática o endereço é dividido em dois: RAS (Row Address Strobe) e CAS
(Column
Address Strobe),
responsáveis pelos endereços “linha” e “coluna”, respectivamente.
A
memória é organizada como um conjunto de N células com M bits cada. Se possui N
células, necessita de N endereços. Por outro lado se a célula possui M bits,
podemos armazenar nela um valor entre 0 até.
O valor N representa a “capacidade da memória”, ou seja, a quantidade de
células ou de endereços, enquanto M indica a quantidade de bits que podem ser armazenados.
A memória
principal é o depósito de trabalho da UCP, isto é, a UCP e a MP trabalham
íntima e directamente na execução de um programa. As instruções e os dados do
programa ficam armazenados na MP e vai “buscando-os” um a um à medida que a
execução vai se desenrolando.
Os
programas são organizados de modo que os comandos são descritos sequencialmente
e o armazenamento das instruções se faz da mesma maneira, fisicamente
sequencial.
Um
microcomputador deve possuir três barramentos:
1. Barramento de dados: Interliga
a RDM à MP. É bidirecional, ou seja, os dados trafegam da UCP para a MP ou da
MP para a UCP.
2. Barramento de endereços: Interliga
a REM à MP. É unidirecional, uma vez que a UCP sempre informa à MP qual o
endereço pretende ler ou escrever.
3. Barramento de controle: Interliga
a UCP à MP, permitindo a passagem de sinais de controle durante uma operação de
leitura ou escrita. É bidirecional, pois a UCP pode enviar sinais de controle
para a MP (comando de leitura ou escrita), e a MP pode enviar sinais do tipo
WAIT (ordena que a UCP fique em estado de espera – WAIT STATE).
Devido
às temporizações dois módulos de memória com mesma taxa de transferência máxima
teórica podem apresentar desempenhos diferentes. As temporizações medem o tempo
em que o chip de memória demora para fazer algo internamente. A temporização da
memória é dada através de uma série de números, como, por exemplo 2-3-2-6-T1,
3-4-4-8 ou 2-2-2-5. Estes números indicam a quantidade de pulsos de clock que a
memória demora para fazer uma determinada operação. Quanto menor o número, mais
rápida é a memória. Na figura ao lado a temporização é 5-5-5-15.
Normalmente
as temporizações são padronizadas (“Auto” no SETUP), porém é possível a configuração
manual de temporizações menores para aumentar o desempenho do seu micro (OVERCLOCK).
Algumas placas-mãe podem não funcionar com temporizações muito baixas.
As
temporizações que estes números indicam são as seguintes: CL-tRCD-tRP-tRAS-CMD.
CL
(CAS Latency ou Latência do CAS): Indica a
quantidade de pulsos de clock que a memória leva para retornar um dado
solicitado. Uma memória com CL=3 demora três pulsos de clock para entregar um
dado, enquanto que uma memória com CL=5 demora cinco pulsos de clock para
realizar a mesma operação.
Dessa
maneira dois módulos trabalhando com o mesmo clock o que tiver a menor latência
do CAS será o mais rápido.
tRCD
(RAS to CAS Delay): Cada chip de memória é
organizado internamente como uma matriz. Internamente o processo de acessar um
dado é feito por dois sinais de controle chamados RAS (Row Address Strobe) e
CAS (Column Address Strobe). Quanto menor for o tempo entre esses dois sinais,
melhor, já que o dado será lido mais rapidamente. O parâmetro “RAS to CAS
Delay” ou (tRCD) mede este tempo.
tRP
(RAS Precharge): Tempo demorado entre desactivar o
acesso a uma linha de dados e iniciar o acesso a outra linha de dados. Após o
dado ter sido entregue pela memória, um comando chamado “Precharge” precisa ser
executado para desativar a linha da memória que estava sendo usada e para
permitir que uma nova linha seja
ativada. O tempo “RAS Precharge” (tRP) é
o tempo entre o comando “Precharge” e o próximo comando “Active” (“Ativar” ou
CS).
tRAS
(Active to Precharge Delay): Após um comando
“Active” (CS) ter sido enviado, um outro comando “Precharge” não pode ser
iniciado até que o tempo tRAS tenha decorrido. Em outras palavras, este
parâmetro limita quando a memória pode iniciar a leitura (ou escrita) em uma
linha diferente.
CMD
(Command Rate): Tempo demorado entre o chip de
memória ter sido ativado e o primeiro comando poder ser enviado para a memória.
Algumas vezes este valor não é informado. Normalmente possui o valor T1 (1
clock) ou T2 (2 clocks).
Bibliografia
http://www.di.ufpb.br/raimundo/Hierarquia/Mem
Principal.htmlpribcipal
Assinar:
Postagens (Atom)