Considera-se memória como os elementos dum computador capazes
de conservar dados durante um período de tempo e sob condições
específicas e disponibilizá-los electronica e automaticamente
para processamento na forma binária.
Esta caracterização excluiu por exemplo uma folha de papel onde
esteja informação sobre a forma binária (0s e 1s),
pois não é possível converter automaticamente essa
informação em impulsos binários eléctricos.
Um computador tem por norma vários elementos de memória, tenda cada um propriedades e funcionalidades distintas. O conjunto de todos elementos de memória do computador denomina-se sistema de memória. O sistema de memória é um dos principais componentes do computador pois é aqui que toda a informação necessária para que o sistema funcione é mantida:
Dos vários elementos que compõem o sistema de memória, distinguem-se dois grandes grupos:
Embora a memória secundária seja estudada posteriormente, importa distinguir desde já estes dois grupos:
Velocidade | Capacidade | Persistência*) | Expansão | Espaço | Preço | |
Primária | Alta | Pequena | Volátil | Díficil | Grande | Alto |
Secundária | Baixa | Grande | "Eterna" | Simples | Pequeno | Baixo |
Tabela 4.1 - Principais diferenças entre memória primária e secundária
*) No entanto, a propriedade da persistência da informação não é generalizável a todo o tipo de memória primária, pois existem vários tipos caracterizáveis segundo essa propriedade:
Este módulo começa por caracterizar e classificar alguns dos muitos tipos de RAM existentes, passando depois a explicar sucintamente a aplicação e funcionalidade dos vários componentes do sistema de memória. Finalmente apresenta alguns termos e expressões associados a esta tecnologia.
No que se refere a memória RAM a sua classificação é feita segundo diferentes aspectos:
A memória RAM é caracterizada por necessitar de "alimentação" contínua de forma a não perder os valores aí registados. Este tipo de memória é constituído por capacitadores (tipo bateria) que mantêm determinada carga durante um curto espaço de tempo. Este processo denomina-se "refresh" e ocorre todos 15 microsegundos (valor de referência em 1998).
Além desta característica, são distiguidos dois tipos fundamentais de memória quanto ao seu funcionamento interno:
Memória dinâmica. Caracteriza-se pelo facto de perder os valores sempre que é lida. Os valores são perdidos e têm de ser reescritos, o que faz aumentar os tempos de acesso. Funcionalmente caracteriza-se por:
Memória estática. A sua denominção surge por contraponto com a DRAM, pois esta conserva os seus valores aquando da leitura, não sendo necessário perder o tempo de reescrita dos valores, aumentando por isso o seu desempenho. Funcionalmente caracteriza-se por:
Este aspecto relaciona a forma como a RAM comunica com o sistema e especialmente como responde ao CPU. Existem duas formas:
Em termos de comparação de tecnologias/siglas, as relações são as seguintes:
Dinâmica | Estática | |
Assincronismo | DRAM | SRAM |
Sincronismo | SDRAM | BSRAM |
A memória apresenta-se em diferentes formatos, correspondendo
a cada um várias características de interligação com o
sistema. Ou seja, determinada "apresentação" não
pode ser aplicada em qualquer tipo de sistema.
No seu aspecto mais básico, a memória é um circuito integrado
(tal como se apresenta na Figura 4.1).
Figura 4.1 - Representação de um chip de memória
Figura 4.2 - Representação da agregação de chips em módulos [fonte]
Um dos problemas relacionados com o acesso a memória é a
largura do barramento (em bits). Quanto mais largo fôr
mais eficiente será, tendo por contraponto o desempenho do tempo
de resposta da própria memória, o tamanho físico da interface
e o custo.
Quando os primeiros SIMM's surgiram tinham 30 pinos para
conexão, tendo posteriormente evoluído para 72. Com o
aparecimento da memória SDRAM (DRAM síncrona) em DIMM's, este
número aumentou para 168. A Figura 4.3 apresenta esses três
tipos de conectores.
Figura 4.3 - SIMM's de 30, 72 e 168 conectores [fonte]
Distinguem-se fundamentalmente 2 aplicações ao sistema de memória:
Na altura em que o computador é ligado, é necessário que algum dispositivo saiba o procedimento de arranque, que dispositivos existem, como se interligam com os outros, como se deve verificar a sua validade e funcionalidade, etc. Esta funcionalidade está dependente de instruções e dados inseridos em memória.
Tal dispositivo é o BIOS (Basic Input/Ouput System),
que não é mais do que uma ROM, PROM, EPROM ou EEPROM (cada vez
mais são EEPROM), na qual existem vários programas que permite
ao sistema auto-verifiar-se, auxiliar a configurar, agrupar
informação de coordenação, arrancar o sistema operativo e
posterior operação.
Quando o CPU recebe energia, transfere o comando do sistema para
o BIOS, que posteriormente lho devolverá através do Sistema
Operativo.
Cada dispositivo exterior poderá dispor de um BIOS
particular. Os programas aí existentes, denominadas
habitualmente rotinas de E/S, serão transferidas para memória
central e agrupada com as rotinas do BIOS de sistema. Desta forma
os dispositivos externos podem evoluir sem que o BIOS do sistema
seja alterado. Por exemplo a unidade de disquetes é
completamente dependente da BIOS do sistema, pelo que não é
possível alterá-la sem disponibilizar um BIOS particular.
Os programas do BIOS de cada dispositivo, servirão
posteriormente para que o S.O. aceda e disponibilize para as
aplicações, os recursos de cada um.
A fase de arranque é composta por três passos:
O primeiro procedimento de arranque é o POST (Power-On Self Test), auto-teste no arranque. Tem por missão executar procedimentos de teste dos componentes fundamentais instalados do sistema, tal como BIOS (nome e versão), CPU (tipo e quantidade), Memória (tipo e quantidade), Barramento E/S, etc.
Neste momento no entanto, não há garantias de que qualquer dispositivo E/S esteja a funcionar correctamente, pelo que este não deve recorrer ao monitor para apresentar as mensagens de erro. Assim, se ocorrer algum erro estes serão apresentados sobre a forma de som emitido pelo altifalante (nem sempre presente e nem sempre operacional!...). Para cada programa de POST existe no manual uma tabela com o número de sons emitidos e a respectiva descrição do erro.
Depois de todos os testes serem realizados, o BIOS organiza informação de coordenação dos vários componentes do sistema, nomeadamente IRQ's, prioridades, endereços de E/S, que serão posteriormente passados para arranque e operação do S.O..
No entanto, o BIOS não é auto-suficiente em informação acerca do sistema, pois este pode evoluir ao longo da vida. Por exemplo, a data e hora, unidades de discos, dispositivos externos, disco primário, etc. são evolutíveis. Estas características são necessárias aquando do arranque, mas não deverão ser constantemente definidas pelo utilizador.
Figura 4.4 - Representação da agregação de chips em módulos [fonte]
Como é que tudo isto fica armazenado de uma sessão para outra? Existe um componente do sistema de memória que mantem esses dados ao mesmo tempo que permite alterá-los. Este componente pode ser de dois tipos:
Nota: Em qualquer dos casos deverá existir uma bateria, capaz de fornecer corrente eléctrica ao relógio do sistema, para que os valores se mantenham actualizados.
A alteração dos valores aí existentes é realizada a comando do utilizador por um aplicação existente no BIOS, que se designa Configuration Setup. Para se executar essa aplicação devem seguir-se as instruções que aparecem no ecran, sendo necessário carregar numa tecla (normalmente DEL) em determinado momento do arranque.
O arranque do S.O. é também dependente do BIOS. Um dos parâmetros existentes na memória associada ao BIOS é a unidade de disco primária, ou seja, onde existe o sistema operativo.
Quando os testes terminam, o BIOS é responsável por procurar
no primeiro sector (Boot sector)
da unidade de disco especificada e transferir para memória
o que se designa por Master Boot Record. O programa
encontrado no Master Boot Record denomina-se Boot
Loader e não é mais do que um conjunto de
instruções que o CPU seguirá para o carregamento e arranque do
sistema operativo.
Por norma cada sistema operativo disponibiliza um Boot Loader
específico que carrega apenas o sistema operativo para que foi
criado. Existem no entanto outros boot loader's que
permitem especificar determinados parâmetros de arranque,
nomeadamente o próprio S.O.. Ou seja, um utilizador que disponha
de vários S.O. nas unidades de armazenamento do seu computador,
pode especificar aquando do arranque qual o S.O. que deseja
carregar.
Existe também a possibilidade de, aquando da junção dos BIOS dos diversos dispositivos exteriores na RAM, um deles especificar uma forma alternativa de carregamento do S.O.. Por exemplo, no caso do sistema operativo existir num servidor de ficheiros, o BIOS do adaptador de rede deverá informar o BIOS do sistema de que deverá passar a esse adaptador a competência de arranque. Outro exemplo é o caso do MS-Windows CE, existente nalguns computadores de bolso que existe em ROM, PROM, EPROM ou EEPROM e que substitui o S.O. tradicional existente em disco.
A Figura 4.5 resume o processo descrito.
Figura 4.5 - Esquema básico de utilização de memória ao longo de várias fases do funcionamento do computador [fonte]
Inicia-se então a fase de operação, na qual o S.O. é responsável pela gestão e coordenação do sistema. O S.O. e aplicações são transferidas para memória para serem executadas pelo CPU. Como é evidente, a aplicação é transferida para memória apenas na altura em que é necessário. Essa tarefa é realizada a pedido do utilizador ou mediante qualquer instrução interna. O S.O. é então responsável por encontrar a aplicação (em disco local, disco de rede, internet, etc.) e carregá-la em memória.
Esta memória é habitualmente do tipo DRAM, devido ao seus
custo e características físicas. Não se trata dum tipo de
memória de desempenho óptimo, mas o tipo razoável mediante
custo Vs. desempenho e aplicação Vs. solução.
Este tipo, apesar da evolução registada nos últimos anos (sincronismo e aumento de barramento),
tem um desempenho abaixo das exigências do CPU, o que implica
que o desempenho do sistema seja afectado por este baixo
(relativo) desempenho. Assim sendo, acontece por vezes compassos
de espera (wait states) por parte do CPU e que são
inconvenientes para o bom desempenho do sistema.
Por isso revelou-se necessário criar sistemas de memória mais rápidos e próximos do CPU capazes de diminuir ou excluir os estados de espera. Surgiu assim o conceito de memória cache, que se caracteriza por ser em pequena quantidade mas de grande desempenho, normalmente do tipo SRAM.
Esta memória pretende substituir a memória principal sempre que possível. Assim, quando o CPU manipular informação em memória pede ao sistema de memória (via controlador de memória), que se encarrega de cumprir os pedidos do CPU. Este por sua vez, fá-lo-á prioritariamente na memória cache, sendo acedidos na memória principal apenas quando não existam em memória cache. Se os dados não existirem em cache ou não poderem ser escritos aí, o controlador de memória encarrega-se de gerir o acesso à memória principal de forma transparente para o CPU. Os valores escritos em cache serão escritos na memória principal (pelo controlador de memória), quando não existirem pedidos a satisfazer, não prejudicando por isso o desempenho do resto do sistema.
Um computador actual típico dispões de vários tipos de cache, denominados níveis. Por norma existem três níveis:
BSRAM |
Burst Synchronous RAM, também conhecido por SynchBurst RAM. É um tipo de SRAM que funciona em modo síncrono, o que facilita a sincronização com o CPU. Usa o sinal de relógio do sistema ou do sistema de cache para sincronismo. Aplica-se fundamentalmente em cache de Nível 2. |
EDO RAM |
Extended Data Output RAM. Diz respeito a uma forma avançada de acesso aos valores dentro da própria memória, normalmente do tipo DRAM. Surgiu como uma melhoria do modo FPM, o que melhorou consideravelmente o desempenho da memória. Esta melhoria levantou a ideia de que a cache de Nível 2 era dispensável, mas com a evolução dos CPU's essa ideia foi abandonada. |
FPM |
Fast Page Mode DRAM. É um modo de acesso aos valores dentro da própria memória, noramalmente do tipo DRAM. Este modo está completamente obsoleto e não é utilizado vulgarmente. Os tempos de acesso conseguidos com este modo são superiores a 70 ns. Posteriormente surgiu o modo EDO. |
PC100 |
É uma especificação de memória síncrona, desenvolvida pela Intel para ser aplicada pelos fabricantes de memória. Esta especificação surgiu no sentido de caracterizar o tipo de memória necessário no chip set i440BX. Posteriormente vulgarizou-se o termo SDRAM. |
RAMDAC |
RAM Digital-to-Analogic Converter. É um tipo de RAM, composta por uma parte de SRAM e outra de 3 conversores de sinais analógicos em digitais (DAC). Na parte de SRAM existe uma tabela que relaciona os índices das cores recebidas da VRAM, com o sinal analógico referente a cada uma das cores Vermelho, Verde e Azul (RGB) com os quais qualquer outra cor é produzida. Os 3 DAC são responsáveis por traduzir os valores recebidos da parte SRAM em sinal analógico e emitir o sinal para o Tubo de Raios Catódicos. |
RDRAM |
Rambus Dynamic RAM é uma tentativa de especificação da memória do futuro, em desenvolvimento pela Rambus e Intel. Esta memória, síncrona, funcionará potencialmente a velocidades de 600MHz. |
VRAM |
Video RAM é o nome genério dum tipo de memória utilizado em adaptadores de video, e que se caracteriza pelo seu alto desempenho e pela sua dupla porta, o que significa que cada posição de memória pode ser simultaneamente lida e escrita, aumentando por isso o desempenho. Na realidade o que se passa é que cada posição de memória são duas, enquanto uma delas é lida a outra pode se escrita. |
É objectivo deste estudo:
Última actualização: 02 Maio 2005