O armazenamento de informações é função essencial num computador. Existem informações que precisam ser armazenadas apenas pelos períodos em que o computador executa alguma tarefa, como também informações que precisam ser armazenadas por tempo indeterminado, pois delas depende a própria inicialização das operações quando ligamos a máquina. As memórias são os dispositivos que armazenam informações e a evolução das técnicas eletrônicas, principalmente a física dos semicondutores, tem nos levado à tipos cada vez mais sofisticados e com maior capacidade. Neste artigo focalizamos algumas memórias, seu princípio de funcionamento e suas características.

 

Obs. Este artigo é de 1989. Nele apenas descrevemos os funcionamentos das memórias que existiam na época. Hoje existem outros tipos como as memórias flash largamente usadas nos microcontroladores.

 

A capacidade operacional de um computador está na possibilidade que a máquina tem de armazenar uma grande quantidade de informações e trabalhar estas informações, segundo um determinado procedimento, e chegar a resultados.

Desta forma, o que um computador pode fazer não depende apenas de sua velocidade, do número de operações que ele “conhece", mas também da quantidade de informações que ele pode armazenar e trabalhar.

Este último item depende de um setor de grande importância para a informática, o setor que trata das memórias

A unidade de informação é o bit, que pode ser 1 ou 0.

Uma memória para um circuito eletrônico pode ser uma simples chave, um flip-flop ou um capacitor, onde a chave fechada significa o armazenamento de um bit “1 um flip-flop com sua saída no nível alto armazena o nível 1 e o capacitor carregado armazena o 1 (figura 1).

 

Figura 1 – memorizando um bit
Figura 1 – memorizando um bit

 

 

A operação com grandes quantidades de informações e o fato de que os bytes que formam as “palavras” são constituídos por determinado número de bits (4, 8 ou 16), levou à necessidade de termos dispositivos bem elaborados para armazenamento dos níveis lógicos.

Nos computadores antigos existiam memórias de “núcleos magnéticos“ que, conforme mostra a figura 2, armazenavam as informações pela magnetização de pequenos anéis de ferrite organizados segundo uma matriz.

 

Figura 2 – Memória de núcleos magnéticos (antiga)
Figura 2 – Memória de núcleos magnéticos (antiga)

 

Tínhamos, então, as linhas por onde eram “gravadas” as informações, as linhas de leitura e também as linhas de apagamento.

Outro tipo de memória, que também já esteve em uso, são as formadas por fitas de papel perfurado, ou mesmo cartões, como mostra a figura 3.

 

Figura 3 – Fitas e cartões como memórias
Figura 3 – Fitas e cartões como memórias

 

 

Os furos representavam o “1 "e a falta do furo o “0”.

A evolução do circuito integrado, entretanto, nos levou a um tipo de memória mais compacta, com maior capacidade de armazenamento de informações, ou seja, maior quantidade de bits, e maior velocidade de operação.

Veja que a necessidade de se realizar milhões de operações por segundo num computador moderno exige que se tenha acesso rápido às informações.

Temos, assim, circuitos especiais que podem armazenar informações, denominados memórias, cuja capacidade se mede em milhares, dezenas de milhares e mesmo centenas de milhares de bits (Hoje milhões e até bilhões de bits) e que são usados nos computadores....

É claro que a existência destas memórias ainda não elimina a necessidade de também se empregar alguns processos de armazenamento de informação mais tradicionais como o disco rígido, o disco flexível e a fita magnética.

Estes elementos de memória possuem uma capacidade muito maior do que as próprias memórias do tipo semicondutor, podendo ser medida em centenas de quilobits ou mesmo milhões de bits.

Interessa-nos, em especial, neste artigo as memórias do tipo semicondutor, que se caracterizam pela sua velocidade e, em alguns casos, pela possibilidade de serem apagadas e reprogramadas.

 

MEMÓRIAS SEMICONDUTORAS

A ideia básica e inicial para a construção de uma memória parte do flip-flop, que é uma configuração cuja estrutura é mostrada na figura 4.

 

   Figura 4 – Flip-flop como memória
Figura 4 – Flip-flop como memória

 

O flip-flop ou multivibrador biestável (ou ainda “báscula biestável“) é uma configuração que admite apenas duas situações estáveis.

Quando o transistor Q1 está saturado, obrigatoriamente Q2 está no corte, e quando Q1 está no corte, Q2 obrigatoriamente está saturado.

Para que o circuito passe de uma situação para outra é preciso aplicar um impulso externo.

Se tivermos uma sequência de flip-flops, conforme mostra a figura 5, as saídas que correspondem a 0 (transistor saturado) ou 1 (transistor em corte) formam um byte ou uma “'palavra“ que estará armazenada no circuito.

 

Figura 5 – Armazenando diversos bits
Figura 5 – Armazenando diversos bits

 

 

Conjuntos de flip-flops formavam os primeiros tipos de memória.

Partindo de uma situação em que a saída de todos os flip-flops fica em zero, podemos, a partir da “entrada de dados”, levar os flip-flops a armazenar a informação desejada.

Na configuração indicada temos um inconveniente, que é a necessidade de termos uma entrada para ativar cada flip-flop, o que significa muitas

Conexões se quisermos constituir uma memória de grande capacidade.

O acréscimo de um decodificador permita não só dirigir a informação para os flip-flops desejados, como também fazer sua leitura.

Temos, na figura 6, uma- melhor organização para a memória.

 

   Figura 6 – Organização melhor de uma memória
Figura 6 – Organização melhor de uma memória

 

 

Os flip-flops são dispostos em 32 filas de 4, ou seja, formando 32 “palavras” de 4 bits.

Trata-se de uma memória de 128 bits, mas organizada na forma 32 x 4.

Através de um decodificador podemos selecionar, por meio de níveis lógicos, que fila de flip-flops estará sendo ativada, quer seja para a gravação da informação (armazenamento), quer seja para a leitura.

É importante observar que, como trabalhamos sempre com a base 2, a capacidade de uma memória será sempre uma potência, como por exemplo:

2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 etc.

Mas, mesmo com a utilização, de um decodificador que permita o acesso ao ponto exato da memória em que está a informação desejada, se quisermos capacidades muito grandes ainda deveremos ter uma organização melhor.

As matrizes que formam cada chip podem ser arrumadas em conjuntos, de modo a termos não a seleção da linha de um chip em que está a informação desejada, como também a seleção do próprio chip.

Termos importantes devem ser introduzidos a partir daqui, para que você se familiarize melhor com o que falamos.

Estes termos se referem aos nomes encontrados nos manuais e diagramas que envolvem memórias (figura 7).

 

Figura 7 – Termos para memórias
Figura 7 – Termos para memórias

 

 

TERMOS

A0...A3 - São as linhas de direcionamento de dados ou “endereços”.

Aplicando níveis lógicos nestas entradas, informamos à memória que linha deve ser ativada, ou seja, damos o “endereço” da linha dentro da memória.

Veja que, se tivermos para endereçamento 4 entradas, só teremos 16 combinações possíveis ou 16 endereços.

Se tivermos 8 entradas já teremos 256 posições possíveis.

lo - In - Estas são as entradas de dados ou “Inputs“ (l).

Nelas aplicamos a informação que deve ser gravada na célula determinada pelo direcionamento ou endereço.

O0 - On - Estas são as saídas de dados ou “Outputs“ (O).

Nelas obtemos as informações que estão na célula determinada pelo direcionamento ou endereço.

Em alguns chips de memórias para não termos número muito grande de pinos, por exemplo, 8 para entrada e 8 í para saída, podemos empregar somente 8, comutando sua função pela aplicação de um nível lógico num único pino.

Temos então os pinos IIO (entrada e saída) que servem para leitura ou gravação de dados.

Como leitura em inglês é “Read" e a gravação ou escrever é “Write", estes pinos de seleção da função aparecem com a abreviação R/W

R/W - Trata-se, como vimos, do terminal em que escolhemos se a memória vai ser lida ou gravada.

A barra sobra o W indica que esta função está ativa quando aplicamos um nível zero (0 ou LO) neste pino.

Assim R/W significa que, o nível HI nesta entrada mostra que a memória está na posição de leitura e o nível baixo (LO) a leva à posição de gravação da informação.

S, S/ - Estas entradas fazem a seleção do chip.

Vss e Vdd - São os pinos de alimentação.

 

RAMs - MEMÓRIAS DE ACESSO ALEATORIO

São memórias que podem ser lidas ou gravadas através de sinais apropriados.

Trata-se de uma memória “volátil”, ou seja, que perde todas as informações gravadas quando a sua alimentação é desligada.

O nome “acesso aleatório” (do inglês RAMDOM) se deve ao fato de que o tempo de acesso a uma determinada informação independe de seu endereço.

Numa fita, por exemplo, este tempo de acesso depende da posição da informação, chegamos mais rápido a uma informação que está no início da fita do que a uma que está em seu final.

As RAMs podem ser classificadas em estáticas e dinâmicas, segundo o tipo de célula que usam, e ainda podem ser bipolares ou MOS, segundo a tecnologia de fabricação.

Na RAM estática basta direcionar o dado e aplicá-lo nas entradas para que seja gravado.

Numa RAM dinâmica existe um circuito de clock ou oscilador que sincroniza tanto a gravação como a leitura.

Num chip típico de RAM não encontramos somente uma matriz de célula onde são armazenadas as informações.

Além disso, temos os circuitos decodificadores, buffers que amplificam tanto os sinais de saída como os de entrada, e muitos outros.

Uma memória dinâmica (RAM dinâmica) é sempre do tipo MOS e tem a estrutura mostrada na figura 8.

 

Figura 8 – RAM dinâmica
Figura 8 – RAM dinâmica

 

 

Cada célula tem transistores MOS e um elemento capacitivo, cuja carga determina o bit armazenado, ou seja, se é um 0 ou 1.

Estas células têm um inconveniente: o capacitor que armazena a informação tende a se descarregar com o tempo, na verdade, até rapidamente.

Isso significa que a memória precisa ter a informação restaurada periodicamente, ou seja, deve haver um meio de se conferir a carga de capacitor e aqueles que estiverem com elas num nível muito baixo, devem ser “recarregados”, de modo que a informação não seja perdida.

Evidentemente, os que estiverem no nível baixo, ou sem carga não precisarão disso.

Existe. então um circuito de “refresco“ (Refresh) que, em intervalos regulares de tempo, da ordem de milissegundos, restaura as cargas de cada capacitor.

A célula de uma RAM estática, por outro lado, tem uma estrutura diferente, conforme mostra a figura 9.

 

   Figura 9 – RAM estática
Figura 9 – RAM estática

 

 

Esta célula consiste num flip-flop e, portanto, não tem elementos capacitivos, o que significa que não necessita de ciclo de refresco.

Por outro lado, ela tem como desvantagem o fato de ser muito mais lenta, sendo, por este motivo, menos usada.

As células bipolares são também estáticas (flip-flop), mas são mais rápidas que as MOS.

O fato de que elementos bipolares apresentam maior consumo do que os CMOS também deve ser considerado.

Estas memórias são empregadas durante o funcionamento do computador para receber informações externas, para armazenar informações durante os processos de cálculos, perdendo todas as informações quando o aparelho tem sua alimentação desligada.

 

ROMs - MEMÓRIAS SOMENTE DE LEITURA

As Read Only Memories, ou memórias somente de leitura, são programadas durante o processo de fabricação, com uma informação que não mais pode ser alterada.

Os dados existentes nestas memórias podem ser extraídos à vontade, mas não podemos fazer qualquer alteração nos mesmos ou então gravar novas informações.

Como se trata de uma memória não volátil, os dados gravados permanecem por tempo indeterminado, mesmo quando a alimentação do aparelho é desligada.

Nestas memórias são gravadas as informações que inicializam a operação do computador e que correspondem à realização de todas as operações previstas pelo fabricante.

A organização geral de uma memória deste tipo não foge à regra: as células que armazenam cada bit são organizadas em forma de matriz.

Existem em sua volta circuitos de decodificação e direcionamento de dados, assim como amplificadores e buffers.

Também podemos elaborar estas memórias tanto em tecnologia bipolar como CMOS.

Na figura 10 temos uma estrutura simplificada de uma memória deste tipo.

 

   Figura 10 – Uma ROM
Figura 10 – Uma ROM

 

 

A partir de um processo especial de fabricação, a impedância da zona de contato metálico pode ser feita alta ou baixa a partir da utilização de uma máscara de programação.

Conforme a impedância do ponto r(célula) seja alta ou baixa, quando for feito o direcionamento da leitura teremos ou não a condução do transistor, com o aparecimento dos níveis 0 ou 1 na saída.

Um outro tipo de memória ROM utiliza dois transistores ligados em série e entre eles a saída, conforme mostra a figura 11.

 

Figura 11 – Memória com dois transistores em série
Figura 11 – Memória com dois transistores em série

 

 

Durante a programação, podemos aplicar alta tensão a um outro transistor, gerando em sua base uma carga estática que se manterá.

Esta carga, conforme o transistor, o polariza de modo a estabelecer o nível lógico 0 ou 1 na saída, como mostra a figura 12.

 

   Figura 12 – Modos de programação
Figura 12 – Modos de programação

 

 

Este tipo de memória pode ser “apagada”, quando submetemos o chip a raios ultravioleta.

Como elas são “apagáveis” (Erase = apagar), ou seja, “eraseble“, temos sua denominação de EPROM

Esta memória pode ser fornecida totalmente “apagada“ e ser programada pelo usuário.

Para apagar um programa já existente, bastará expô-la à radiação ultravioleta.

Estas memórias possuem uma “janela“ de material transparente à radiação ultravioleta.

Para apagar basta expor o chip a este tipo de radiação.

E, uma vez programada podemos “tampar“ a janela de modo a não termos uma perda de informações por incidência de radiação.

Um tipo de ROM apenas programável, ou seja, PROM, tem a estrutura mostrada na figura 13.

 

   Figura 13 – estrutura da PROM
Figura 13 – estrutura da PROM

 

 

Em cada célula existem micro-fusíveis, que são obtidos do próprio chip durante o processo de fabricação.

Estes fusíveis são à base de níquel-cromo e podem ser fundidos com uma corrente muito baixa, da ordem de 15 mA, que é a corrente de programação.

Desta forma, aplicamos correntes nos fusíveis, que devem ser rompidos, abrindo assim o circuito e estabelecendo um nível lógico 0.

Os fusíveis que se mantêm intactos garantem o nível lógico 1.

Este tipo de memória apresenta alguns inconvenientes como, por exemplo, o fato de não se conseguir uma corrente precisa para a fusão dos fusíveis, além do fato de que aqueles que são rompidos podem voltar a entrar em curto.