Memórias - Computer Science Master
Vinicius dos Santos 8/08/2016
Neste artigo iremos entender como funciona um dos componentes de maior importância para a área da informática denominados memórias. Estes componentes são dispositivos que armazenam informações codificadas digitalmente que podem representar números, letras, caracteres quaisquer, comandos de operações, endereços ou ainda qualquer outro tipo de dado.
As memórias têm grande utilidade no campo da informática, sendo utilizadas principalmente em computadores e periféricos. Em resumo, as memórias acessam informações em lugares denominados localidades de memórias. Para que seja possível acessar os dados de modo eficiente, cada uma das localidades de uma memória possui um conjunto de bits no que nos permite o seu acesso. A esse conjunto de bits damos o nome de endereço. Esse conceito é fácil compreensão, pois como o próprio nome diz, o conjunto de bits representa o endereço da localidade onde está armazenada uma informação. Armazena dados para endereçamentos, programação e para constituir o conjunto de programas internos para funcionalidade do próprio sistema.
As memórias existentes hoje no mercado sofreram por um processo de evolução. Diversas características delas são derivadas do seu processo de construção. Para que algumas características das memórias não decretassem sua inutilidade, elas foram adaptadas de acordo com suas características para usos diferentes.
Na produção das memórias a busca principal é a otimização da capacidade de armazenamento, velocidade de transmissão de dados e a redução custo para produção. A busca de um preço razoável para produção e popularização das memórias tornou o mercado propenso a busca de novas tecnologias. Podemos classificar as memórias segundo várias características, sendo as principais:
Principais características das memórias
Acesso ou "tempo de acesso": A informação é acessada através de endereços, que são um conjunto de bits associados às posições de memória. O tempo de acesso de uma memória é o tempo necessário desde a entrada de um endereço até o momento em que a informação apareça na saída. No caso de memórias de leitura/escrita, também é o tempo para a informação ser gravada. É possível ter acesso a uma dada posição de memória de duas maneiras diferentes:
1. Acesso sequencial – É preciso percorrer todas as posições anteriores até chegar à posição desejada. Assim, o tempo de acesso depende da posição.
2. Acesso aleatório – É possível que se chegue ao endereço diretamente. O tempo de acesso independe então da posição.
Volatilidade: As memórias voláteis são aquelas que, perdem as informações armazenadas ao se desligar a alimentação. Um exemplo típico são as RAM. As memórias não voláteis são aquelas que mesmo sem alimentação, continuam com as informações armazenadas. Exemplos são as memórias magnéticas e as memórias ROM, PROM e EPROM.
Troca de dados: No que se refere à troca de dados com outros componentes do sistema, as memórias podem ser de escrita/leitura (ex: RAM) ou memórias de apenas leitura (ex: ROM).
Tipo de armazenamento: Quanto ao tipo de armazenamento as memórias classificam-se em:
1. Estáticas – São aquelas em que, uma vez inserido, o dado lá permanece.
2. Dinâmicas – Necessitam que a informação seja re-inserida periodicamente, caso contrário esta informação é perdida
Estrutura geral e organização de uma memória
Apesar das especificidades de cada dispositivo eles são compostos em geral de uma mesma estrutura. As principais funções que devem ser executadas é a entrada e saída dos dados e o endereçamento. Para acessar as localidades, o bloco possui uma série de terminais de entrada de endereços, estes terminais são ligados a um conjunto de fios denominado barra de endereços (address bus). Para a entrada e saída dos dados, o bloco possui uma série de terminais ligados à barra de dados (data bus). Além disto, o bloco possui terminais de controle ligados à barra de controle (control bus). Este sistema está representado na Figura 1.
1. Barra de endereços: Responsável pelo endereçamento de um sistema típico com microprocessador.
2. Barra de dados: Entrada e saída de dados.
3. Barra de controle: Terminais de controle.
A Figura 1 ainda destaca que a barra de dados é bidirecional, isto indica que a memória em questão é do tipo leitura/escrita.
As fornecedoras de inovação e tecnologia sempre buscam aumentar a quantidade de dados armazenados. Neste meio utilizamos a notação Nxm, onde o "N" letra indica o número de localidades de memória e o "m" indica o número de bits de informação por localidade. Por exemplo:
1. 256x8
2. 1Kx16
3. 128Mx32
A designação K (kilo) significa um fator 210 = 1024, e a M (mega) significa um fator de 220 = 1048576. Por exemplo, a memória 128Mx32 possui 128x1048576=134217728 localidades com 32 bits em cada uma, necessitando de 27 terminais para endereçamento.
1. 64 K x 8: 64 x 1024 = 65.536 localidades, com 8 bits (1 byte) em cada uma, necessitando de 16 terminais para endereçamento.
2. 2 M x 16: 2x 1.048.576 = 2.097.152 localidades, com 16 bits, necessitando 21 terminais para endereçamento.
A palavra de endereço, definida como o conjunto de níveis lógicos necessários para o endereçamento de uma determinada localidade de memória para o acesso ao dado. Para facilitar a escrita da palavra de endereço, bem como a sua utilização em programação, é comum transcrever-se este conjunto de bits para o hexadecimal, principalmente no caso de memórias de alta capacidade (agrupando-se os bits em grupos de 4).
Memórias ROM e arquitetura
1. Permitir somente a leitura dos dados;
2. Memória apenas de leitura;
3. Acesso aleatório;
4. Não-voláteis (não perdem seus dados armazenados com o desligamento da alimentação);
5. Armazenamento de programas de sistemas operacionais em computadores e outros sistemas digitais;
6. Podem ser utilizadas em circuitos de geração de caracteres e para construção de um circuito combinacional qualquer;
7. Podem ser consideradas como circuitos combinacionais, pois apresentam as saídas de dados em função das combinações entre as variáveis de entrada (endereçamento).
Figura 2 - memória ROM
A Figura 2 é um bloco representativo de uma memória ROM, com terminais e barramentos conhecidos e mais um terminal de controle, para habilitação de pastilha ou chip.
O terminal de controle para habilitação ou seleção de pastilha, CS é, na realidade, uma entrada de nível lógico para ativar ou não as saídas da ROM.
Se aplicarmos a esta entrada um nível lógico 0, as saídas serão habilitadas, ou seja, serão internamente comutadas para fornecer os dados, conforme funcionamento normal de endereçamento.
Porém, se aplicarmos um nível 1, estas serão desabilitadas, assumindo estados de alta impedância, liberando a barra de dados para utilização por outros dispositivos presentes no sistema controlado normalmente por microprocessadores.
O traço sobre o CS, indica que a habilitação da pastilha é feita com nível 0, sendo esta uma forma de nomenclatura muito utilizada na prática.
A escolha da ativação por nível 0 deve-se, também, ao fato desta proporcionar maior imunidade ao ruído, pois, em situação contrária, haveria maior susceptibilidade para o acionamento dos blocos dentro do sistema, frente a este fatos transiente indesejado.
Arquitetura das Memórias ROM
A Figura 3 mostra a arquitetura básica de uma ROM genérica, com os respectivos terminais e barramentos de entrada e saída.
Figura 3 - Arquitetura de uma memória ROM
O primeiro bloco consiste num decodificador de endereços (gerador de produtos canônicos), responsável por ativar (fornecer nível 1) um fio de saída por vez, em função do endereçamento.
Figura 4 - Circuito representativo de uma memória ROM
O segundo bloco é constituído por uma matriz de dados, que é um arranjo de linha e colunas que, através de um elo de ligação, possibilita a gravação de dados pelo fabricante e conseqüentemente leitura pelo usuário.
Para a saída dos dados, a memória possui um conjunto de chaves, que conforme habilitação do terminal CS, possibilita a conexão das saídas (nível 0), ou as deixa em alta impedância (nível 1), desconectando-as da barra de dados do sistema.
A Figura 4 é uma releitura do circuito da memória ROM. A matriz de dados é construída por um conjunto de diodos (formando uma série de portas OU). A presença do diodo dá origem ao nível "1" na localidade, e a sua ausência, ao nível "0".
1. Permitem o armazenamento dos dados pelo próprio usuário, porém feito de modo definitivo;
2. Após a programação a PROM torna-se uma ROM;
3. O princípio básico de programação ou armazenamento de dados em uma PROM, é o de destruir, através de nível de tensão conveniente especificado pelo fabricante, as pequenas ligações semicondutoras existentes internamente nas localidades onde se quer armazenar a palavra de dados, conforme endereçamento feito;
4. Após a instalação o processo é irreversível, não sendo possível nenhuma alteração;
5. Não-volátil;
6. Acesso aleatório e de apenas leitura
1. ROM programável e apagável;
2. Permitem a programação de modo semelhante à das PROMs;
3. Podem ser normalmente apagadas, mediante banho de luz ultravioleta (15 a50 minutos);
4. Também conhecidas com UVPROM (Ultraviolet PROM).
1. A0 - A10: barra de endereços;
2. D0 – D7: barra de dados;
3. CE: habilitação da pastilha (função de ativar o bloco através de nível 0, e quando em nível 1 deixa desativado;
4. OE: habilitação da saída (função de habilitar ou desabilitar apenas o barramento de saída, agindo semelhante ao CE);
5. PGM: habilitação da programação;
6. Vpp: tensão de programação.
1. Avanço tecnológico em relação às EPROMs;
2. As alterações de programação são efetuadas pelo próprio sistema no qual a memória esteja inserida;
3. Permitem que o apagamento dos dados seja feito "eletricamente", isoladamente por palavra de dados, sem necessidade de reprogramação total. A escrita de uma palavra de dados, alterando a programação, é obtida através do endereçamento e respectiva aplicação de palavra nos terminais da barra de dados, isto com o terminal OE em nível 1, e o de habilitação da escrita W, em nível 0, dentro de um ciclo de tempo mínimo, especificado em manual pelo fabricante do CI.
As memórias RAM, permitem a leitura e escrita dos dados;
Possuem acesso aleatório ou randômico. Vem daí o nome (Random Access Memory);
São voláteis, pois perdem seus dados armazenados com o desligamento da alimentação;
Possuem um tempo de acesso muito reduzido;
Quanto ao armazenamento, são estáticas (SRAM) ou dinâmicas (DRAM);
As SRAM's estáticas possuem como célula básica de memória o flip-flop;
As DRAM's possuem circuitos mais simples, porém necessitam de re-inserção de dados periódica (refresh), sua célula básica armazena cada dado por efeito capacitivo de cada micro-elemento semicondutor interno, por isto tem a vantagem de alta capacidade de armazenamento por circuito integrado.
Figura 7 - Modelo de Memória SRAM
A Figura 7 vemos um bloco de memória SRAM, com terminais e barramentos de endereçamento e de dados e mais um terminal de controle R/W de dupla função, para possibilitar a leitura , ou escrita dos dados nas localidades endereçadas.
Figura 8 - Circuito representativo RAM
Para escrever um dado, selecionamos a célula, o que é feito por um circuito de endereçamento que faz SEL = 1 e passamos o sinal de controle para escrita. Depois aplicamos o dado no terminal D, que está então configurado como entrada.
A Figura 8 mostra um bloco de memória e para melhor entender o funcionamento desta tecnologia as entradas desde bloco é resumido na tabela:
Figura 9 - Bloco de memória
Arquitetura das Memórias RAM
Vamos, por exemplo, pensar numa RAM estática 4x4 como a mostrada na Figura 10:
Figura 10 - Arquitetura de uma memória 4x4
Já vimos que um bloco de memórias assim especificado contém 4 posições cada uma com quatro bits. Podemos notar que o bloco é composto de um decodificador de endereços com dois terminais (A1 e A0) que ativará a entrada SEL da linha de células interligadas horizontalmente selecionada. Os terminais de dados (D) estão interligados, mas por posicionamento do bit na palavra de dados, isto porque no endereçamento de cada conjunto através de SEL, os outros não endereçados estão na situação de alta impedância (tri-state), portanto desconectados do fio comum. Vemos também as entradas interligadas de modo a se controlar simultaneamente a leitura ou escrita para todas as posições.
Vamos, por exemplo, armazenar o dado 516 (01012), na posição 116 endereçada por 01. Se a pastilha não estiver selecionada,o nível 0 na saída das portas E após o inversor, faz com que SEL=0 em todas as células fazendo com que elas fiquem em alta impedância. Se a pastilha foi selecionada,e o endereçamento é (A1=0 e A0=1), a segunda linha do seletor de endereços estará em 1 fazendo SEL=1 para a segunda linha de células. Com o controle em 0 (escrita) aplicamos os dados nos terminais, agora configurados como entradas (D3=0, D2=1, D1=0 eD0=1) sendo estes então armazenados pelas células.
Com a passagem de para 1, para leitura, os dados irão permanecer armazenados, mesmo se a célula for de-selecionada com. Vale ainda lembrar mais uma vez que a informação será perdida caso se desligue a alimentação da pastilha. Este mesmo processo de escrita pode ser estendido para outras localidades, para isto, basta endereçar, passar para 0 e aplicar os dados às entradas D.
Figura 11 - Modelo RAM
Para a leitura de uma informação devemos selecionar a pastilha e com igual a 1, endereçar a posição, obtendo desta forma a informação nos terminais D, que agora estão configuradas como saídas. O bloco que acabamos de descrever é mostrado na Figura 10.
Expansão da Capacidade da Memória RAM
Vamos estudar agora como podemos expandir a capacidade de uma memória RAM, que é algo que ocorre frequentemente na prática, ressaltamos que o processo vale também para outras memórias. A expansão pode ser obtida pela palavra de dados, pelo aumento de posições, ou ainda por ambos, conforme a situação. Vamos começar ilustrando o aumento pela expansão da palavra de dados. Vamos formar uma RAM 256x8 à partir de dois blocos de 256x4. A expansão é mostrada na figura abaixo.
Notamos que os terminais de endereçamento (A7 a A0), de seleção de pastilha e de controle de leitura/escrita são interligados, já estas operações são comuns aos dois blocos na nova memória. A barra de dados, agora é composta pela associação da barra de cada memória (4 bits) resultando em uma palavra de dados maior (8 bits), aumentando assim a capacidade de memória. Nesta nova memória, o endereço da posição inicial é 0016 (000000002), e o final FF16 (111111112).
As memórias descritas neste artigo são aquelas que são utilizadas como memória principal. As memórias secundárias como o HD, por exemplo, possuem um funcionamento mecânico diferente e características próprias.
O desenvolvimento de memórias RAM de alta velocidade de endereçamento, acesso de leitura e escrita propiciou aos desenvolvedores produzirem softwares cada vez mais poderosos. O custo destes materiais para serem construídos ainda é muito alto, infelizmente, tecnologias de alto desempenho e com alta capacidade de armazenamento muitas vezes são inviáveis. Visando amenizar estes problemas foram criadas técnicas de caching e vários outros algoritmos que possibilitam o melhor uso das memórias.