Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
23/04/2007

< Computadores XXXII: >
<
Células de memória >


Na coluna anterior, a lenda da Gralha Azul nos ensinou que para que se possa usar mais tarde não basta guardar, há ainda que saber muito bem sabido onde se guardou. Ou seja: memória não é apenas um dispositivo (ou “lugar”) onde se armazenam dados, mas sim onde dados são armazenados de forma organizada de modo a poderem ser recuperados quando precisarmos deles. Do ponto de vista de um sistema de computação, então, “memória é um componente do sistema que permite armazenar de uma forma organizada dados ou informações que são ou poderão vir a ser processados pelo sistema de modo a permitir recuperar esses dados ou informações quando necessários”.

Mas sistemas de computação são entidades complexas e em virtude disso existem diversos tipos de memória, classificadas de acordo com diferentes critérios. Por exemplo: como é impossível falar de placas-mãe, execução de programas e coisas que tais sem falar de memória, os que estão acompanhando esta série e leram as colunas “XVII: Placas-mãe e memória principal” e subseqüentes tiveram uma boa noção de como se guardam e recuperam dados na memória principal ou memória RAM (um tipo de memória) e como funcionam os registradores internos da UCP (outro tipo de memória). Mas estes, embora talvez os mais importantes, são apenas dois dos muitos tipos de memória, ambos agrupados na categoria de “memória interna” ou “memória primária”. Há também os dispositivos chamados de “armazenamento de massa” que ficam fora da placa-mãe (discos rígidos, discos óticos como CDs e DVDs) e por isso fazem parte da categoria de “memória externa” ou “memória secundária”.

A razão da existência de diversos tipos de memória decorre do fato de não se ter ainda conseguido desenvolver um dispositivo de memória que seja ao mesmo tempo de grande capacidade – como os discos magnéticos – de grande rapidez de acesso – como os registradores e as memórias cache – e de baixíssimo custo unitário (ou custo por GB armazenado) – como as fitas magnéticas. Se houvesse uma memória assim, não haveria necessidade de outro tipo, ela seria usada para todos os fins. Mas como (ainda) não há, é forçoso escolher cuidadosamente cada tipo de memória de acordo com sua utilização.

Voltaremos ao tema em detalhes, mas apenas para não deixar assuntos pendentes: toda a complicação deriva do fato de que capacidade, rapidez de acesso e custo não andam de mãos dadas. Quanto maior a capacidade, maior o custo e menor a rapidez de acesso, quanto mais rápida, menor a capacidade e mais cara e quanto mais barata mais lenta e menor capacidade. Agora pense um pouco: durante o uso normal de um computador, compare a freqüência com que a UCP faz acessos à memória principal ou memória RAM (dispositivo de semicondutores, memória interna) e a freqüência com que a mesma UCP, através dos dispositivos de entrada/saída, faz acessos ao disco rígido (dispositivo magnético, memória externa). E entenda porque a memória RAM tem de ser de um tipo que permite acessos mais rápidos mesmo que custe mais caro. Por isso há tipos diferentes de memória e por isso um módulo de memória principal de, digamos, 1 GB custa o mesmo que um disco rígido de capacidade centenas de vezes maior.

Mas antes de entrar neste tipo de detalhes vamos examinar alguns conceitos comuns a todos os tipos de memória.

Operações com a memória

Seja qual for o tipo do dispositivo de memória, ele aceitará apenas duas operações. A primeira consiste em guardar um elemento (ou um conjunto de elementos) de dados ou informações (se não sabe a diferença entre uma coisa e outra sugiro retornar ao início da série e reler a coluna “I: Dados e Informações”). A segunda é a localização e recuperação daquilo que foi guardado.

Em informática a primeira operação recebe a designação genérica de “armazenamento” e a ação realizada para executá-la chama-se “escrita” ou “gravação” (esta última expressão mais utilizada para meios magnéticos ou óticos). Já a segunda é conhecida genericamente como “recuperação” e a ação realizada para executá-la chama-se “leitura”.

Assim, seja qual for o dispositivo de memória, seu tipo, capacidade ou rapidez de acesso, ele suporta apenas duas ações: armazenamento (ou escrita) e recuperação (ou leitura).

Mas armazenamento e recuperação de que? Bem, disso já sabemos: de dados ou informações. Mas como são expressos os dados e informações? Quem leu as colunas sobre digitalização de grandezas ( IV a VII desta série) sabe que, para serem armazenados e processados por um sistema de computação, os dados devem ser convertidos em números que serão expressos no sistema binário, o sistema posicional de base 2, que admite apenas dois algarismos, ou “dígitos”, o “zero” e o “um”, por isso mesmo chamados de bits (derivado de BInary digiTS).

Então qual é a menor “quantidade” de informação que pode ser armazenada?

Quem respondeu “um bit” acertou na mosca.

E o local onde se armazena um único bit recebe o nome de “célula de memória”.

Então se pode definir “célula de memória” como o local ou dispositivo capaz de armazenar um bit de informação e permitir a verificação de seu estado (ou seja, determinar, em um dado momento, qual o valor do bit armazenado, “zero” ou “um”).

Células de memória

Mas com que se parece (ou seja, o que pode ser usado como) uma célula de memória?
Se você lembrar que um bit é um algarismo ou dígito binário que só pode assumir dois valores, zero e um, verá que há uma imensa quantidade de coisas, objetos corriqueiros, que podem ser usados como células de memória. Por exemplo: uma lâmpada (acesa representa “um”, apagada “zero”), um copo (cheio representa “um”, vazio “zero”), uma casa de um tabuleiro de damas (ocupada, “um”, vazia, “zero”) e assim por diante.

O que todos estes “dispositivos” têm em comum?

Bem, todos eles cumprem as três condições necessárias para que um dispositivo possa ser usado como célula de memória. Que são as seguintes (lembre-se delas, são importantes):

Qualquer dispositivo pode ser usado como uma célula de memória desde que obedeça obrigatoriamente às três condições seguintes:

  1. Poder assumir dois estados diferentes, mutuamente exclusivos;
  2. Permitir que esses estados sejam alterados (pelo menos uma vez);
  3. Permitir que o estado assumido em um determinado instante seja “lido”.

As condições são óbvias por si mesmas e nem é preciso analisá-las muito mas, por amor à clareza, vamos fazê-lo.

“Mutuamente exclusivos” significa que “um exclui o outro”, ou seja, ou o dispositivo está em um estado ou em outro (uma lâmpada não pode estar ao mesmo tempo acesa e apagada nem um copo pode estar simultaneamente cheio e vazio; para a nossa análise não existe o conceito de “meio cheio” ou “meio vazio”).

A exigência da possibilidade de alterar o estado é evidente por si mesma: a célula deve poder armazenar tanto o “um” quanto o “zero” (e a restrição para que isto seja feito pelo menos uma vez é para levar em conta os dispositivos que só podem ser gravados uma vez, como os discos CD R).

E a terceira condição também é evidente: de pouco me adiantaria armazenar algo que mais tarde eu não pudesse recuperar.

Pois assim é uma célula de memória e nela armazenamos a menor quantidade possível de informação, um bit. O que parece pouco, mas pode representar muita coisa (considere o sinal vermelho que, aceso, indica que um trem não deve entrar em um determinado ramal porque nele circula outro trem em sentido contrário; armazena apenas um bit, mas pode salvar milhares de vidas).

Então agora já temos uma idéia genérica do que é uma célula de memória e que operações podemos nela realizar. A Figura 1 mostra esquematicamente as operações de leitura e escrita em uma célula de memória (de qualquer tipo) em um sistema de computação.

Figura 1: Operações de leitura e escrita em uma célula de memória.

Em geral toda célula de memória dispõe de pelo menos três terminais ou contatos que podem receber um “sinal elétrico” (ou pulso de tensão), mostrados como T1, T2 e T3.

Para executar uma operação qualquer (leitura ou escrita) na célula, a primeira coisa a fazer é selecioná-la, ou seja, informar que é nela que a operação será realizada e não em qualquer outra eventualmente ligada aos mesmos circuitos. Isto é feito aplicando-se um sinal a seu terminal de Seleção, T1.

O segundo passo é informar que operação será executada, leitura ou escrita. Isto é feito através da presença ou ausência de tensão no terminal T2, o terminal de controle.

O terceiro passo depende da operação a ser executada. Em uma operação de escrita é aplicada uma tensão no terminal T3 que irá ajustar o estado da célula de memória para o valor que se quer representar (“zero” ou “um”). Em uma operação de leitura é aplicado um sensor ao terminal T3 que permitirá determinar (ou “ler”) seu estado.

O tipo de sinal, os estados que representam “um” ou “zero” (carregado/descarregado, magnetizado/desmagnetizado, energizado/desenergizado, etc.) e a temporização em que os sinais são aplicados dependem do tipo físico de memória (de semicondutores, de superfície magnética, ótica, etc.) e da tecnologia usada para fabricar o dispositivo. Mas de uma forma bastante genérica, qualquer que seja seu tipo, o funcionamento de uma célula de memória é o acima descrito.

Neste ponto cabe notar um detalhe importante. Examine novamente a Figura 1 e perceba que as operações de leitura e escrita são bastante semelhantes: ambas precisam selecionar a célula, ambas precisam de um sinal de controle para informar o tipo de operação e ambas lidam com o conteúdo da célula, zero ou um. Mas há uma diferença importante que costuma passar despercebida e que tem a ver com a natureza conservativa da operação de leitura e com a natureza destrutiva da operação de escrita.

Vamos examinar a questão com maiores detalhes porque ela é importante.

Quando se faz uma operação de escrita, sempre se armazena um novo valor na célula de memória. Note que é até possível (na verdade, teoricamente, há 50% de probabilidade) que o novo valor seja igual ao “velho”, ou seja, a célula armazenava, digamos, o valor “um” e eu escrevo nela o valor “um”. Aparentemente nada mudou (a célula continuará armazenando o valor “um”) mas na prática o que se fez foi apagar (destruir) o valor “um” originalmente contido e escrever novamente na célula um novo valor “um” no lugar daquele. O novo valor pode ou não ser igual ao anterior, mas a operação de escrita é sempre destrutiva.

Já a natureza da operação de leitura é conservativa. Ela apenas consiste em utilizar uma espécie qualquer de sensor (magnético, elétrico ou ótico, dependendo do tipo de memória) para inspecionar o conteúdo da célula e emitir um sinal informando qual é este conteúdo, sem contudo modificá-lo. Na prática, tudo se passa como se o interior da célula fosse examinado e determinado o que lá havia, que será copiado em um outro lugar (o dispositivo que solicitou a leitura, geralmente a UCP).

Em suma: quando se escreve algo na memória (qualquer que seja o tipo de memória) destrói-se aquilo que lá estava previamente armazenado, mas quando se lê algo na memória, o conteúdo da memória se mantém preservado e pode ser lido novamente quantas vezes se desejar e permanecerá inalterado até que seja efetuada uma nova operação de escrita naquela mesma célula.

Agora que já sabemos como armazenar bits, resta uma questão: como fazer quando precisamos armazenar informações maiores que um bit?

Bem, quem leu a coluna “II: Bits e Bytes” sabe que nesse caso basta aumentar o número de células e considerá-las todas em conjunto, da mesma maneira de que, quando temos que representar no sistema decimal um número maior do que dez, basta aumentar o número de “casas”, ou de algarismos (ou “dígitos”). No caso do sistema binário, basta agrupar bits.

Na próxima coluna veremos como isto é feito, como esses bits são agrupados formando as chamadas “posições de memória” e como é possível nelas armazenar e localizar dados e informações.

Até lá.

 

B. Piropo