Arquitetura de Computadores – Memória Prof. Luiz Marcelo Chiesse da Silva MEMÓRIAS SEMICONDUTORAS Em um sistema computacional subentende-se memória como qualquer dispositivo capaz de armazenar dados, mesmo temporariamente. Atualmente, os métodos de armazenamento de informação digital (armazenamento de bits) mais utilizados são as memórias semicondutoras, memórias de núcleos magnéticos (disquetes, HD´s de computadores, fitas magnéticas,...) e óticos (CD´s). As memórias modernas são compostas por circuitos semicondutores (eletrônicos), apresentando a vantagem de não envolver dispositivos eletromecânicos e sensores presentes em outros tipos de mídias, permitindo maior velocidade de acesso. Novas tecnologias são criadas atualmente permitindo maior capacidade de armazenamento, maior velocidade e maior eficiência das memórias. Abaixo encontra-se um quadro com uma estimativa entre as velocidades de acesso entre um dispositivo eletromecânico e um eletrônico: dispositivo Velocidade Memória RAM 30 ns. (30x10-9 s.) HD 3 ms. (3x10-3 s.) Apesar das memórias semicondutoras apresentarem maior rapidez, a capacidade de armazenamento em massa (grande quantidade de informação) é relativamente pequena em relação a outros tipos de dispositivos de armazenamento, devido ao alto custo na fabricação. O armazenamento dos valores dos bits em uma memória semicondutora pode ser realizada por flip-flops, como na SRAM – Static RAM (RAM estática), ou por um circuito de armazenamento de cargas elétricas, como na DRAM – Dynamic RAM (RAM dinâmica). Quanto à escrita e leitura dos dados, as memórias podem ser classificadas em: - memória apenas de leitura (ROM – Read Only Memory): programada em fábrica; - memória de leitura programável (PROM – Programable ROM): programável apenas uma vez, como os CD´s graváveis; - memória de leitura programável e apagável (EPROM – Eletrical PROM): é possível programar e reprogramar. As memórias que possuem armazenamento volátil são as que perdem os dados sem alimentação elétrica. Geralmente as RAMs são voláteis e as ROMs são não-voláteis, mas o advento de novas tecnologias, como a Flash RAM, permitem a escrita, leitura, e a retenção dos dados por um grande intervalo de tempo. A unidade básica de armazenamento em uma memória, ou a menor quantidade de informação que uma memória pode armazenar é denominada célula de memória. Uma memória semicondutora consiste em uma matriz retangular Cefet/PR – Cornélio Procópio 1 Arquitetura de Computadores – Memória Prof. Luiz Marcelo Chiesse da Silva destas células, fabricada na forma de circuito integrado, sendo que cada célula pode armazenar um bit ou mais. A maioria dos computadores utiliza células de memória de oito bits. Computador Tamanho da célula IBM PC célula de 8 bits DEC PDP-8 célula de 12 bits IBM 1130 célula de 16 bits CDC Cyber célula de 60 bits "n" colunas ENDEREÇAMENTO É o processo de seleção de uma célula de memória para a escrita ou leitura. Então uma célula de memória é a menor unidade de armazenamento de dados endereçável, sendo dispostas em linhas e colunas (na forma de matriz) para formar uma memória. Para o acesso ao conteúdo armazenado é necessário um circuito de controle para “ativar” a linha e coluna em que se localiza a respectiva célula, sendo necessário uma identificação ou endereço. Esta identificação é definida como endereço da célula de memória. 0 1 2 3 "n" 0 1 2 célula de endereço 13 célula de endereço 22 3 "m" linhas célula de endereço 30 "m" Cefet/PR – Cornélio Procópio 2 Arquitetura de Computadores – Memória Prof. Luiz Marcelo Chiesse da Silva DEMUX endereço Exemplos de circuitos de controle para acesso à memória são o mux e o demux, em que o valor do endereço a ser ativado é dado pelas variáveis de seleção. DEMUX endereço HIERARQUIA DE MEMÓRIA EM UM COMPUTADOR Em função de características como tempo de acesso, capacidade de armazenamento, custo, etc., é possível estabelecer uma hierarquia de dispositivos de armazenamento em computadores. Tipo Capacidade Velocidade Custo Localização Volatilidade Muito Registradores Bytes muito alta UCP Volátil alto Memória Kbytes alta Alto UCP/placa Volátil Cache Memória Mbytes média Médio Placa Volátil Principal Memória Gbytes baixa Baixo Externa Não Volátil Auxiliar A UCP vê nesta ordem e acessa primeiro a que está mais próxima. Subindo na hierarquia, quanto mais próximo da UCP: maior velocidade, maior custo, porém Cefet/PR – Cornélio Procópio 3 Arquitetura de Computadores – Memória Prof. Luiz Marcelo Chiesse da Silva menor capacidade de armazenamento. Em um microcomputador, como o IBM PC, a memória principal é denominada memória RAM e a memória auxiliar consiste nos outros dispositivos de armazenamento não voláteis como o HD, disquetes e CD´s. Os registradores e a memória cache estão incluídos no chip da UCP, mas atualmente existe a possibilidade de expansão da cache fora do chip da UCP. REGISTRADORES Registradores são dispositivos de armazenamento temporário, localizados na UCP, extremamente rápidos, com pequena capacidade (menos de 128 bits cada). Devido a sua tecnologia de construção e por estar localizado como parte da própria pastilha ("chip") da UCP, é muito caro. A utilização de registradores surgiu da necessidade da UCP de armazenar temporariamente dados intermediários durante um processamento. Por exemplo, um resultado de alguma operação precisa ser armazenado até que o resultado de uma busca da memória esteja disponível para realizar uma nova operação. Máquinas RISC são geralmente construídas com um grande conjunto de registradores, de forma a trazer os dados para o mais próximo possível da UCP, de forma que o programa opere sempre sobre dados que estão em registradores. MEMÓRIA CACHE Com o desenvolvimento dos circuitos computacionais da UCP e das memórias semicondutoras surgiu um problema: os circuitos das UCPs tornaram-se mais rápidos que os circuitos de acesso às memórias semicondutoras, porque os fabricantes concentraram-se mais no desenvolvimento da capacidade de armazenamento das memórias do que na sua velocidade de acesso. Assim, os tempos de acesso às memórias tornaram-se defasados em relação às UCPs. Uma UCP, ao buscar um dado na memória necessitava gastar um tempo de muitos ciclos do clock na “espera” ("wait state") até a memória terminar esta busca e retornar o dado desejado, o que configura o chamado “gargalo” (ou "bottleneck") no desempenho do sistema. Por esse motivo, desenvolveram-se outras arquiteturas de memória privilegiando a velocidade de acesso. A arquitetura da memória cache é muito diferente da arquitetura da memória principal e o acesso a ela é muitas vezes mais rápido (p.ex: 5 ns contra 70 ns). No entanto, o custo de fabricação da memória cache é muito maior que o da memória principal. Desta forma, não é econômico construir um computador somente com tecnologia de memória cache. Criou-se então um artifício, incorporando-se ao computador uma pequena porção de memória cache, localizada entre a UCP e a memória principal, e que funciona como um espelho de parte da memória principal. Desenvolveram-se ainda algoritmos que fazem com que, a cada momento, a memória cache armazene a porção de código ou dados (por exemplo, uma subrotina) que estão sendo usados pelas UCP. Esta transferência (memória principal <Cefet/PR – Cornélio Procópio 4 Arquitetura de Computadores – Memória Prof. Luiz Marcelo Chiesse da Silva -> Cache) é feita pelo hardware: ela independe do software, que ignora se existe ou não memória cache, portanto ignora essa transferência A memória cache opera em função de um princípio estatístico comprovado: em geral, os programas tendem a referenciar várias vezes pequenos trechos de programas, como loops, sub-rotinas, funções e só tem sentido porque programas executados linearmente, seqüencialmente, são raros. Desta forma, algoritmos (chamados algoritmos de cache) podem controlar qual parte do código ficará copiado na cache, a cada momento. Quando a memória principal busca um determinado trecho de código e o encontra na cache, ocorre o denominado "cache hit", enquanto se o dado não estiver presente na cache será necessário requisitar o mesmo à memória principal, acarretando atraso no processamento e ocorre o "cache miss" ou "cache fault". O índice de cache hit ou taxa de acerto da cache é geralmente acima de 90%. MEMÓRIAS AUXILIARES Memórias auxiliares resolvem problemas de armazenamento de grandes quantidades de informações. A capacidade da memória principal é limitada pelo seu alto custo, enquanto as memórias auxiliares tem maior capacidade e menor custo; portanto, o custo por bit armazenado é muito menor. Outra vantagem importante é que as memórias auxiliares não são voláteis, isto é, não dependem de estar energizadas para manter gravado seu conteúdo. Os principais dispositivos de memória auxiliar são: discos rígidos (ou HD), drives de disquete, unidades de fita, CD-ROM, DVD, unidades ótico-magnéticas, etc. OBS.: A chamada cache de disco não é a mesma tecnologia da memória cache. Trata-se do emprego do mesmo conceito da memória cache, para acelerar a transferência de dados entre disco, memória principal e UCP, mas utilizando um software (por ex.: SmartDrive) para manter um espelho do conteúdo de parte do disco (a mais provável de ser requisitada a seguir pela UCP) gravado em uma parte da memória principal. Recentemente, as unidades de disco passaram a incorporar em sua interface chips de memória para acelerar a transferência de dados, utilizando um algoritmo de cache. Cefet/PR – Cornélio Procópio 5