6 Memória: 6.1 Representação de Memória: Toda a informação com a qual um sistema computacional trabalha está, em algum nível, armazenada em um sistema de memória, guardando os dados em caráter temporário ou permanente. Como já estudamos, a menor quantidade de informação que podemos armazenar é um dígito binário, ou BIT. Utilizando um bit estamos limitados a representar somente dois dados. Precisamos definir agrupamentos de bits para representarmos mais símbolos ou valores. Para representarmos uma letra ou número através de bits convencionou-se montar um agrupamento de 8 bits, chamado de byte. Um byte pode armazenar um caractere, que é a unidade básica de armazenamento na maioria dos sistemas computacionais. Vários padrões de codificação de caracteres utilizando bits foram criados, o que foi adotado pela maioria dos fabricantes foi o ASCII American Standard Code for Information Interchange. Alguns dos padrões existentes, como o ABNT (Associação Brasileira de Normas Técnicas) baseiam-se no padrão ASCII, fazendo adaptações para símbolos particulares de uma linguagem, como ~, ^ e ç. Alguns exemplos de codificação ASCII: Letra A é representada pelo byte: 01000001 Número 5 é representado pelo byte: 00110101 Espaço em branco é representado pelo byte: 01000000 Caracter ^ é representado pelo byte: 01011110 Os primeiros processadores tinham capacidade de trabalhar com somente um caractere por vez, eram chamados de processadores de 8 bits. A palavra é a quantidade de bits que uma UCP (Unidade Central de Processamento ou Processador) processa de uma vez. Quanto mais palavras a UCP consegue processar, maior sua velocidade. Uma UCP de 64 bits processa em uma operação a mesma quantidade de dados que uma UCP de 16 bits faz em quatro operações. - 40 -
O sistema de medida adotado para memória utiliza como base 2 por estarmos lidando com o sistema binário. Desta forma, 2 elevado a décima potência (2 10 = 1024) de uma unidade equivale a uma unidade no próximo nível da escala de valores. 1024 bytes = 1 Kilobyte (KB) 1024 kilobytes = 1 Megabyte (MB) 1024 megabytes = 1 Gigabyte (GB) 1024 gigabytes = 1 Terabyte (TB) 1024 terabytes = 1 Petabyte (PB) 1024 petabytes = 1 Exabyte (EB) 1024 exabytes = 1 Zetabyte (ZB) 1024 zetabytes = 1 Yottabyte (YB) 6.2 Tipos de Memória: Os componentes nos quais podemos armazenar informações em um sistema computacional, chamados de memória do computador podem formar em uma das seguintes classes: Memória secundária; Memória principal; Memória cache; Registradores. 6.3 Hierarquia de Memória: - 41 -
As características levadas em consideração para a utilização de um tipo de memória em um sistema computacional são o custo, a capacidade de armazenamento e a velocidade de acesso à informação. A medida que descemos na hierarquia de memória, observamos que: O custo por bit diminui; A capacidade aumenta; O tempo de acesso aumenta; A freqüência de acesso à memória pelo processador diminui. 6.3.1 Registradores: Registradores são dispositivos de memória presentes no interior da UCP, construídos utilizando semicondutores (por isso são elementos de armazenamento volátil). Sua função é a de armazenar dados que serão utilizados pela UCP para o processamento da instrução atual ou de uma das próximas; os resultados de um processamento também precisam ser guardados temporariamente na UCP para serem novamente utilizados pela ULA ou para serem transferidos a um dispositivo de memória externo a UCP. Registradores estão no topo da pirâmide, portanto possuem baixa capacidade de armazenamento (normalmente, o tamanho da palavra do processador), alta velocidade e alto custo. Sua utilização será estudada com mais detalhes ao analisarmos o funcionamento da UCP. 6.3.2 Memória Projeto de Von Neumann: No projeto de Von Neumann estava prevista uma área de memória a partir da qual estariam todos os dados que seriam lidos e escritos pelo programa em execução. É necessário que esta memória apresente baixo tempo de acesso, pois será altamente dinâmica, com dados sendo inseridos e retirados de suas posições de memória a todo momento. - 42 -
6.4 Comunicação entre Memórias: Na maioria dos sistemas de computação, a memória principal é considerada rápida, mas não existe em grande quantidade, e a memória secundária é barata e existe em grande quantidade, mas muito lenta se comparada com as demais. Devese analisar as necessidades de tipo de memória do sistema, para que este não seja desnecessariamente caro ou insuportavelmente lento. Na prática as memórias são organizadas de modo que as mais rápidas (e conseqüentemente, mais caras e de menor capacidade de armazenamento) são localizadas mais próximas do processador. São armazenados nas memórias de alta velocidade os dados e instruções que o processador vai utilizar com mais freqüência. Em memórias mais lentas, com grande capacidade de armazenamento podem ser usadas para guardar dados e instruções que não serão necessários naquele momento. As memórias são organizadas hierarquicamente de forma a obtermos um sistema com desempenho (velocidade) próximo ao da memória mais rápida e custo por bit próximo ao da memória de menor custo. Em sistemas de computação mais antigos, a pirâmide não possuía memória cache e, desse modo, o processador era ligado diretamente à memória principal (Memória em 2 níveis). A partir do processador 486 foi implementada a memória cache (Memória em 3 níveis). 6.5 - Interação entre Processador e Memória Principal: Apesar de nosso componente básico da memória principal ser uma célula de bit, em uma referência a memória, o processador não realiza o acesso ao conteúdo de uma única célula de bit, mas sim a um conjunto de células de bits. - 43 -
O menor conjunto de células de bits onde é feito o acesso é chamado de locação de memória. Na maioria dos sistemas uma locação de memória é formada por 8 células de bit, logo uma locação de memória é conhecida como byte de memória. Em um acesso, o processador deve fornecer uma identificação da locação onde será feito o acesso. Esta identificação é somente um número, chamado endereço de memória. De posse deste endereço, a memória principal seleciona a locação correspondente e fornece ao processador a informação ali contida, no caso de um acesso de leitura; em um acesso de escrita, a memória principal armazena na locação indicada pelo endereço o dado fornecido pelo processador. A memória principal e o processador são interligados através de três barramentos distintos: O barramento de endereço é a via através da qual o processador transmite para a memória principal o endereço da locação onde será feito o acesso. O barramento de dados é a via através da qual o conteúdo da locação é transferida entre o processador e a memória principal. Pelo barramento de controle trafegam diversos sinais, através dos quais o processador controla o acesso a memória, indicando, por exemplo, se o acesso é de leitura ou de escrita. O número de vias no barramento de dados é o fator determinante para o desempenho do processamento do sistema. - 44 -
6.6 Memória Principal (MP): A Memória Principal é a memória básica de um Sistema de Computação. É o dispositivo que armazena os dados a serem processados pela CPU, os resultados intermediários e finais de processamento e as instruções (programas) a serem processadas ou em execução. A MP dos microcomputadores é denominada Memória RAM ou simplesmente RAM. O termo é uma sigla das palavras inglesas Random Access Memory, cuja tradução é Memória de Acesso Aleatório (ou Randônico). As memórias RAM são construídas com tecnologia que lhes garante tempos de acesso na faixa dos nanossegundos (variável entre valores da ordem de 7 a 70 ns, de acordo com os elementos e processos de fabricação), tendo uma característica única e marcante: o tempo de acesso a qualquer de suas células é igual, independente da localização física da célula. Em outras palavras, se o tempo de acesso de uma determinada memória é, por exemplo, 70 ns, isto significa que este será o tempo para acessar a célula de endereço 0 (1ª célula). Se, em seguida, se desejar acessar a célula de maior endereço, o tempo também será igual a 70 ns, como também será de 70 ns se, após acessar a célula de endereço 13A, se desejar acessar a célula de endereço 13B. Qualquer que seja o endereço aleatoriamente ou randonicamente escolhido, o tempo de acesso será o mesmo. Daí o seu nome: Memória de Acesso Randônico (RAM). A memória RAM é formada por módulos divididos em duas categorias no que se refere à sua aplicação em um sistema de computação: memórias que servem para que seus conteúdos sejam lidos ou escritos (memória L/E), denominadas em inglês R/W memory (Read / Write), e memórias em que os programas aplicativos podem - 45 -
apenas ler seu conteúdo, não lhes sendo permitido gravar em suas células: as memórias do tipo ROM (Read Only Memory ou memória somente para leitura). Estas têm uma notável particularidade que é o fato de não serem voláteis, como as memórias L/E. 6.6.1 Memória de Leitura / Escrita: A memória de leitura/escrita do computador é a memória de trabalho da CPU e, portanto, deve permitir o armazenamento de instruções e dados (operação de escrita) e também a leitura destas mesmas instruções e dados de um programa em execução. Este tipo de memória tem uma particularidade desvantajosa que é o fato de ser volátil, isto é, perde o seu conteúdo quando a corrente elétrica é interrompida. No caso da ausência de corrente, todos os dados são imediatamente apagados de forma irrecuperável. Este tipo de memória só pode ser usado para o armazenamento temporário de dados. Este tipo de memória tem variações, que foram evoluindo com o tempo, as quais redundaram em vários diferentes tipos de memória. Estes tipos podem ser agrupados em duas vertentes: a SRAM (Static RAM) e DRAM (Dynamic RAM), isto é, a RAM estática e a RAM dinâmica. O primeiro tipo, mais caro e de custo mais elevado, costuma ser utilizado na construção das memórias cache, e o outro tipo, DRAM, é aquele usado genericamente nas memórias principais tradicionais. Ambos os tipos, no entanto, são voláteis. 6.6.2 Memórias ROM: As memórias ROM (Read Only Memory = Memória somente para leitura) são memórias fabricadas para atingir três objetivos: - 46 -
Ter desempenho semelhante ao das memórias de Leitura/Escrita, Ter segurança, permitindo apenas leitura de seu conteúdo, Ser uma memória não volátil. Todo sistema de computação utiliza uma parte do espaço da MP com memórias do tipo ROM. Nela estão localizadas rotinas que inicializam o computador quando este é ligado, chamadas de sistema de iniciação, boot loader ou bootstrap. As memórias ROM também sofreram uma evolução tecnológica ao longo do tempo, principalmente para torná-las mais práticas e comercialmente aceitáveis, sem perder a sua principal característica de serem memórias somente para leitura por parte dos programas aplicativos (embora, com sua evolução, elas possuam tipos que permitem a troca do seu conteúdo, sempre através de processos especiais e nunca por um simples programa aplicativo). A memória ROM pode ser de três tipos: PROM (Programmable Read Only Memory), EPROM (Erasable PROM) ou EEPROM (Electrically EPROM). A memória PROM permite apenas acessos para leitura dos dados nela gravados. As memórias EPROM e EEPROM podem ter seu conteúdo apagado através da exposição a raios ultravioleta e corrente elétrica, respectivamente. - 47 -