Circuitos de Memória: Tipos e Funcionamento Fabrício Noveletto Memória de semicondutores São dispositivos capazes de armazenar informações digitais. A menor unidade de informação que pode ser armazenada é o bit (0 ou 1). A primeira memória de semicondutores foi produzida em 1970 com capacidade de armazenamento de 256 bits. Configurações básicas Existem vários tipos de memórias, as quais possuem características e aplicações especificas, mas que podem ser representadas genericamente pelo diagrama funcional a seguir: Configurações básicas Barramentos Barramento de endereços (address bus): fornece a posição da informação (dados) que se deseja acessar. Barramento de dados (data bus): contém informação a ser lida ou armazenada no endereço acessado. Barramento de controle (control bus): é formado por sinais que controlam o funcionamento da memória: habilitação, leitura, escrita, programação, etc. Arquitetura básica A arquitetura de memória é formada geralmente por uma matriz, decodificadores e um bloco de controle. Arquitetura básica As linhas de endereços são direcionadas a dois decodificadores (linha e coluna). O cruzamento linha-coluna seleciona uma posição de memória, sendo que o número de posições é dado por 2n, onde n representa o número de linha de endereço. Cada posição contém uma ou várias células de memórias, onde cada célula é responsável pelo armazenamento da informação de um bit. Os decodificadores fazem a seleção da posição de memória que se deseja acessar e o bloco de controle determina a operação que deve ser realizada nesta posição como, por exemplo, a leitura da informação. Para representar a capacidade de uma memória utiliza-se a expressão genérica P x B onde P representa o número de posições de memória e B o número de bits de dados. Exemplo Uma memória de 16x2 tem 16 posições com 2 bits de dados em cada posição, perfazendo um total de 32 células de memória. Exemplo Para compreender melhor seu funcionamento, coloca-se um valor qualquer no barramento de endereços, por exemplo: A3 A2 A1 A0 = 1011. O decodificador de linha contém o endereço A1 A0 =11 (ativando a saída X3) e o decodificador de coluna de endereço A3 A2=10 (ativando a saída Y2) selecionando, assim, a posição destacada. Os bits de dados D1 e D0 correspondentes ficam disponíveis para leitura ou escrita de uma informação, dependendo dos níveis lógicos dos bits de controle, como mostra o tabela de sinais de controle abaixo: Características básicas Capacidade: quantidade de bits que é capaz de armazenar. Tempo de Acesso: tempo necessário para colocar os dados armazenados na saída (ciclo de leitura). Memória volátil: as informações armazenadas são perdidas ao se desligar a alimentação. Memória não volátil: as informações armazenadas na memória permanecem inalteradas mesmo sem alimentação. Exemplo: Capacidade Um chip de memória possui capacidade igual a 16 K x 4. Quantos bits podem ser armazenados no Chip? Solução: Um chip com capacidade igual a 16 K x 4 significa que possui 16 x 1024 (=16 K) posições de memória, cada uma com 4 bits. Portanto, pode armazenar 16 x 1024 x 4 bits, ou seja, 65536 bits. Exemplo Um chip de memória possui capacidade igual a 32 K x 8. Quantos são os terminais para entradas de endereço, para entradas de dados e para saídas de dados? Solução: Um Chip com capacidade igual a 32 K x 8 significa que possui 32 x 1024 (= 32 K) posições de memória, cada uma com 8 bits. Portanto, possui 32 x 1024 (= 32768) posições de memória. O número (n) de entradas de endereço é definido pela equação: 2n = número de posições. Neste caso, teríamos: 2n igual a 32768, ou seja, n deve ser igual a 15. Como cada posição possui 8 bits, serão necessários oito terminais para entradas de dados e oito para saídas de dado, salvo se o chip usar os mesmos terminais para entrada e saída de dados. Tipos de Memórias Memória ROM ROM: Read Only Memory (memória apenas de leitura) – esta memória permite somente a leitura de dados previamente armazenados em sua fabricação. Memória ROM A1 A0 D E C O D I F I C A D O R A Linha X B Linha Y C Linha Z D Linha W Saídas S0 Endereço S1 S2 S3 Linhas S4 S5 S6 S7 Saídas A1 A0 X Y Z W S0 S1 S2 S3 S4 S5 S6 S7 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 Memória PROM PROM: Programmable Read Only Memory (memória apenas de leitura programável) – mediante programação permite armazenamento de informações pelo próprio usuário, porém, de modo definitivo. Após esta programação a memória se transforma em uma ROM. Memória EPROM EPROM: erasable programmable read only memory (memória apenas de leitura programável e apagável) – permite a programação de modo semelhante a PROM, podendo ser apagada mediante banho de luz ultravioleta aplicado a janela existente em seu encapsulamento. Após o processo de apagar o conteúdo de memória, a mesma pode ser gravada novamente. Memória EEPROM EEPROM OU E2PROM: Eletrically Erasable Programmable Read Only Memory (memória apenas de leitura programável e apagável eletricamente) – permite programação de maneira idêntica a PROM, porém o apagamento é feito através de sinais elétricos aplicados em seus terminais, utilizando programas e equipamentos adequados. É geralmente utilizado em dispositivos aos quais se deseja permitir a alteração, possibilitando a carga de novas versões de programas ou para permitir a reprogramação dinâmica de funções específicas de um determinado programa, geralmente relativas ao hardware. Memórias RAM RAM: Random Access Memory (memória de acesso aleatório) são memórias que permitem a escrita e leitura de dados, com acesso às localizações de maneira aleatória. É uma memória volátil, ou seja, perde as informações armazenadas ao ser cortada a alimentação. Podem ser divididas em dois subtipos: RAM Estática – SRAM RAM Dinâmica – DRAM RAM Estática - SRAM Possui seu funcionamento baseado em circuitos flip-flops, portanto, não necessitam de um circuito externo de “refresh”, já que os flip-flops evitam a perda dos dados armazenados internamente. A principal desvantagem da SRAM é o seu baixo fator de integração, pois, por ser baseada em flip-flops ocupam muito espaço resultando em uma baixa capacidade de armazenamento por circuito integrado. A principal vantagem está no tempo de acesso aos dados que é bem menor do que as memórias dinâmicas, sendo então, utilizadas em aplicações que exigem alta performance e baixa capacidade de armazenamento, como por exemplo, memórias “cache”. RAM Dinâmica – DRAM São baseadas em capacitores e por este motivo têm a característica de perder a carga armazenada, se descarregando ao longo do tempo. Para que os dados não sejam perdidos, necessitam de um circuito externo chamado de “refresh”, que em ciclos periódicos predeterminados, reescreva os dados. Possuem uma alta integração resultando em alta capacidade de armazenamento por circuito integrado, sendo utilizadas como memória principal nos computadores. Associação de memórias É possível fazer associações de memórias a fim de se obter maior capacidade de armazenamento total de um sistema. Existem dois tipos básicos de associações: Associações paralelas (horizontal) de memórias: para o aumento do número de linhas de dados por posição de memória. Associação série (vertical) de memórias: para aumento do número de posições de memória. Associação Paralela Para aumentar o número de linhas de dados por posição de memória, devem-se ligar em paralelo as linhas de endereço e controle mantendo-se independentes as linhas de dados. Com isto, ao selecionar-se uma determinada posição (dada pelas linhas de endereço) todas as memórias estarão endereçadas na mesma posição, porém com dados independentes. Ao se manipularem as linhas de controle, todas as memórias estarão no mesmo estado (leitura, escrita, etc) multiplicando-se, assim, a capacidade de bits por posição de memória. Associação Paralela Exemplo: Obter uma memória de 1k x 8 a partir de memórias 1k x 4. Interligam-se as linhas de endereço e controle, mantendo as linhas de dados independentes . Associação Série Para aumentar o número de posições de memória devem-se ligar em paralelo as linhas de endereços, dados e controle, mantendo-se independentes somente as linhas de habilitação de memória. Estas linhas são controladas por um circuito combinacional que deve fazer a seleção das memórias de forma seqüencial (habilitando uma por vez). Assim, o endereço inicial de uma memória é a posição imediatamente subseqüente ao endereço final de memória anterior, colocando as memórias em série. O controle deste circuito combinacional que faz a seleção das memórias é realizado pelas linhas de endereços que completam o endereçamento total do sistema. Associação Série Exemplo: Para se obter um subsistema de memória 16k x 8 a partir de memórias 4k x 8, interliga-se endereços, dados e controle, mantendo-se independentes apenas os sinais de habilitação das memórias. Exemplo: RAM de 1K Aplicação de memórias ROM Usadas para guardar informações que não vão mudar durante a operação normal do sistema onde está inserida. Exemplos: Sistema operacional dos computadores Sistemas dedicados usando microcontroladores • Sistema de alarmes • Controle industrial • Equipamentos eletroeletrônicos Aplicação de memórias: Computadores O modelo de Von Neumann Aplicação de memórias: Hierarquia Hierarquia de dispositivos de armazenamento em computadores. A CPU enxerga nessa ordem e acessa primeiro a que está mais próxima. Subindo na hierarquia, quanto mais próximo da CPU, maior velocidade, maior custo, porém menor capacidade de armazenamento. Aplicação de memórias: Arquitetura Computacional – Simulador 80x86