LIÇÃO 17 - REGISTRADORES, CACHES,
MEMÓRIA PRINCIPAL E SECUNDÁRIAS
MEMÓRIA PRINCIPAL E SECUNDÁRIAS
Seja bem-vindo à nossa lição! Nesta aula, abordaremos os conceitos referentes a toda e qualquer memória no contexto computacional. Veremos que existem diferentes tipos, tamanhos, frequências e, para cada situação, existe uma memória específica.
O computador convencional é constituído por um sistema de hierarquia de memórias, dividido em subsistemas. As memórias primárias são acessadas, diretamente, pelo processador, já as secundárias não. Independentemente do tamanho ou da capacidade de processamento, cada qual com sua tecnologia, sua organização, seu desempenho, sua frequência e consequentemente, seu preço.
Com a evolução da tecnologia e, consequentemente, das memórias, três critérios ganham destaque em sua evolução, a cada nova versão, são discutidos e aperfeiçoados para fins de melhorias em todo desempenho computacional, e essas três características são:
Capacidade de armazenamento.
Acesso rápido.
Baixo custo.
Estas características envolvem todo tipo de memórias, pois independentemente de ser primária ou secundária, toda memória precisa evoluir nos três critérios apresentados.
No quesito de capacidade de armazenamento grande, existe uma organização de memória externa, que era baseada em projetos com discos magnéticos e, hoje, comumente são substituídos por discos em estado sólido cuja estrutura é chamada de RAID (Redundant Array of Independent Disks), sobre os quais veremos mais detalhes, no decorrer desta lição.
Você sabe como funciona o sistema de nomenclatura das memórias RAM e como foi sua evolução? A nomenclatura das memórias RAM, geralmente, é feita pelo acrônimo DDRX-YYYY, onde:
x: é a geração da tecnologia
yyyy: é o clock da memória
Lançada no ano de 2002, a primeira geração de memórias DDR (Double Date Rate) tinha maior largura de banda do que a anterior SDR (Single Data Rate). Só pela nomenclatura delas, podemos deduzir que a taxa de transferência é o dobro, desconsiderando o aumento do clock de memória. Com o seu aparecimento, houve um aumento significativo no desempenho sobre a arquitetura tradicional.
Seguindo a evolução computacional, mais especificamente, a arquitetura de computadores, o DDR precisava ser melhorado para atender às necessidades de alto desempenho. Então, em 2004, surgiram as memórias DDR2 com upgrades de largura de banda, clock de memória e consumo de energia.
Em 2007, surgem as memórias DDR3, com melhorias principalmente no consumo energético (40% menos) e buffer prefetch de 8 bits. Nesta geração, foram adicionadas duas funções importantes, o ASR (Automatic Self-Refresh) e SRT (Self-Refresh Temperature), ambas controlam a frequência da memória de acordo com a variação da temperatura dela.
Seguindo a evolução das memórias, em 2014, foi lançada a DDR4, destaque na eficiência no consumo de energia, pois operam a uma tensão de 1,2 volts e com uma alta taxa de transferência. Foram implementadas outras funções importantes, como o DBI (Data Bus Inversion) e o CRC (Cyclic Redundancy Check), o que permitiu melhorar a integridade do sinal da memória bem como a estabilidade de transmissão/acesso a dados.
Atualmente, temos a memória DDR5, lançada em 2021, com quatro vezes mais densidade comparada à antecessora, frequência de até 6.400 MHz, capaz de chegar aos 64 Gb.
Falaremos sobre as frequências das memórias e explicaremos um erro comum que acaba confundindo muitas pessoas. Desde o início das memórias RAM, a velocidade de trabalho sempre foi medida em Megahertz (MHz), milhões de pulsos por segundo. Mas, em 2021, outra unidade de medida passou a ser utilizada, o Megatransfers (MT/s), ou milhões de transferências por segundo, que é justamente o dobro do MHz.
Tabela 1 - Versões de memórias DDR, MHz, MT/s e Tensão
Fonte: o autor.
#PraCegoVer: a tabela possui quatro colunas e seis linhas; na primeira linha, temos a legenda, DDr, Mhz, MT/s e Voltz. Na segunda linha, temos a primeira geração das memórias DDR, com frequência de 133 a 200 MHz, MT/s de 266 a 400 utilizando 2.5 volts. Na terceira linha, temos a DDR, com frequência de 266 a 400 MHz, 533 a 800 MT/s consumindo 1.8 volts. Na quarta linha, temos a versão DDR3 com frequência de 533 a 800 MHZ, MT/s de 1066 a 1600, consumindo 1.35 a 1.5 volts. Na quinta linha, a DDR4, que vai de 1066 a 1600 MHz, 2133 a 3200 MT/s com consumo de 1.2 a 1.4 volts. Sexta e última linha é sobre a memória DDR5, que opera na frequência de 2400 a 3200 MHz com MT/s de 4800 a 6400, consumindo de 1.1 a 1.8 volts.
Observando a tabela, percebe-se que não é porque a memória tem uma frequência maior que ela consumirá mais energia, isso é possível devido à evolução em sua arquitetura. Portanto, é correto afirmar que quanto maior a frequência da memória, mais rápido será o computador? Então! Sim e não! Sim, pois, realmente, quanto maior a frequência, mais rápida a memória será, e não porque não é só a frequência que influencia no desempenho de todo o computador, o tamanho da memória também deve ser levado em consideração, por exemplo.
Já passou por uma situação em que você estava em um jogo ou digitando um texto e, repentinamente, o PC desliga? Pode ser por problema técnico ou falta de energia. Então, o que você estava fazendo no exato momento da falta de energia não foi salvo no computador, pois aquele dado em questão estava na memória RAM (primária) e não estava salvo em uma memória secundária. Sua definição é:
A parte do computador onde são armazenados programas e dados. Alguns cientistas da computação (em especial, os britânicos) usam o termo armazém ou armazenagem em vez de memória, se bem que o termo “armazenagem” está sendo usado cada vez mais para a armazenagem em disco. Sem uma memória da qual os processadores possam ler e na qual possam gravar, ou escrever, informações, não haveria computadores digitais com programas armazenados (TANENBAUM, 2013, p. 57).
Antes de entrarmos em termos mais técnicos, primeiramente, é preciso entender duas classificações das memórias, se elas são primárias ou secundárias e quanto à sua volatilidade. As memórias primárias são mais rápidas e têm o papel fundamental de manter as informações necessárias para o processador trabalhar, um bom exemplo são as memórias: RAM (Random Access Memory), memória ROM (Read Only Memory), registradores e memórias cache.
Por outro lado, as memórias secundárias sempre foram mais lentas, até a chegada do SSD, que, embora tenha melhorado, significamente, a velocidade de leitura e escrita, ainda não se compara à velocidade de uma memória RAM, por exemplo. Essas memórias servem para armazenar arquivos, como fotos, vídeos, programas, entre outros, definitivamente. Exemplo de memórias secundárias são: HD, SSD, Pen Drive, etc.
Complementando as memórias primárias e secundárias, para que haja todo funcionamento computacional, a informação precisa ser carregada na memória primária (HD ou SSD) antes de passar pelo processador. O computador não precisa estritamente dela para funcionar. Elas, geralmente, são não-voláteis, permitindo, assim, guardar os dados, permanentemente.
Já quanto à classificação relacionada à volatilidade, é que uma memória volátil sempre perde todo seu conteúdo da ausência de alimentação elétrica, ou seja, quando o equipamento em que ela está inserida for desligado, todo seu conteúdo será apagado, por outro lado, a memória não volátil não perde os dados na ausência de alimentação, os dados são mantidos quando o dispositivo é desligado.
Figura 1- Hierarquia de memória de cinco níveis
Fonte: Tanenbaum (2013, p. 67).
#PraCegoVer: a imagem demonstra a hierarquia da memória em cinco níveis em um formato de pirâmide. No nível mais baixo, na base, temos a fita e o disco óptico, no quarto nível, os discos magnéticos ou em estado sólido, no terceiro nível, temos a memória principal, no segundo nível, a memória cache e, por fim, no topo da pirâmide, os registradores.
Entre os níveis de hierarquia de memória temos:
No nível mais alto (mais perto do processador), estão os registradores do processador. Em seguida, vêm um ou mais níveis de cache. Quando são usados múltiplos níveis, eles são indicados por L1, L2 e assim por diante. Em seguida, vem a memória principal, que normalmente é uma memória dinâmica de acesso aleatório e dinâmico (DRAM). Todos estes são considerados internos ao sistema de computação. A hierarquia continua com a memória externa, com o próximo nível geralmente sendo um disco rígido fixo, e um ou mais níveis abaixo disso consistindo em mídia removível, como discos ópticos e fita (STALLINGS, 2008, p. 89).
Outro tipo de memória, segundo Tanembaum (2013, p. 65), “a ideia geral é que, quando uma palavra for referenciada, ela e algumas de suas vizinhas sejam trazidas da memória grande e lenta para a cache, de modo que, na próxima vez em que for usada, ela possa ser acessada rapidamente”.
Figura 2 - A localização lógica da cache é entre a CPU e a memória principal
Fonte: Tanenbaum (2013, p. 65).
#PraCegoVer: a imagem demonstra a localização física da memória cache e a memória principal em um sistema computacional. A memória cache é conectada no barramento entre o CPU (Processador) e a memória principal.
Ainda na Figura 2, temos o barramento, que é definido como:
Um barramento do sistema consiste, normalmente, em cerca de cinquenta a centenas de linhas separadas. Cada linha recebe um significado ou função em particular. Embora existam muitos projetos de barramento diferentes, em qualquer barramento as linhas podem ser classificadas em três grupos funcionais (figura 3): linhas de dados, endereço e controle. Além disso, pode haver linhas de distribuição de potência, que fornecem energia aos módulos conectados (STALLINGS, 2008, p. 68).
Figura 3 - Esquema de interconexão de barramento
Fonte: Stallings (2008, p. 69).
#PraCegoVer: a imagem demonstra o CPU, as Memórias e os dispositivos de entrada e saída conectadas às linhas de controle, de endereço e de dados. As linhas de controle são usadas para controlar o acesso e o uso das linhas de dados e endereço. As linhas de endereço são usadas para designar a origem ou o destino dos dados no barramento de dados, e as linhas de dados oferecem um caminho para a movimentação de dados entre os módulos do sistema. Essas linhas, coletivamente, são chamadas de barramento de dados.
Portanto, concluímos que todo o sistema de memória computacional é complexo, não é simplesmente armazenar dados de forma definitiva ou temporária, existem muitos desafios pela parte dos projetistas em chegar a uma memória com velocidade e durabilidade efetivas ao ponto de serem produzidas em larga escala para atender ao mundo todo.
Escolher qual nível de RAID aplicar é uma tarefa um tanto quanto complexa, dependendo do RAID escolhido o investimento pode mudar completamente, pois a quantidade de discos exigidos por um nível pode ser completamente diferente da de outro nível.
Para conseguir maior desempenho e maior disponibilidade, servidores e sistemas de grande porte utilizam tecnologia de disco RAID. RAID é uma família de técnicas para utilização de múltiplos discos como um array paralelo de dispositivos de armazenamento de dados, com a redundância embutida para compensar a falha futura (STALLINGS, 2008, p. 149).
Existem vários níveis de RAID, cada qual com sua particularidade, conforme demonstra a Figura 4.
Figura 4 - níveis de RAID
Fonte: Tanenbaum (2013, p. 75).
#PraCegoVer: a imagem demonstra os níveis de RAID referenciados as letras de “a” a “f”,
a) RAID nível 0: consiste em ver o disco virtual simulado pelo RAID como se fosse dividido em tiras de k setores cada: os setores 0 a k – 1 são a tira 0, os setores k a 2k – 1 são a tira 1, e assim por diante.
b) RAID nível 1: considerado um RAID verdadeiro. Ele duplica todos os discos, portanto, há quatro discos primários e quatro de backup. Para uma escrita, cada tira é escrita duas vezes.
c) RAID nível 2: trabalha por palavras, possivelmente, até por byte. Imagine dividir cada byte do disco virtual único em um par de nibbles de 4 bits e, então, acrescentar um código de Hamming a cada um para formar uma palavra de 7 bits, dos quais os bits 1, 2 e 4 fossem de paridade.
d) RAID nível 3: é uma versão simplificada do RAID nível 2. Nesse arranjo, um único bit de paridade é computado para cada palavra de dados e escrito em um drive de paridade.
e) RAID nível 4: similar ao RAID nível 0, com paridade tira por tira, escrita em um drive extra.
f) RAID nível 5: distribui os bits de paridade, uniformemente, por todos os drives, por alternância circular.
O RAID mais comum é nível 1, conhecido também como espelhamento cujos dados são replicados em mais de um disco, entretanto não é o mais seguro nem efetivo, mas caiu na popularidade por ter um custo de implantação relativamente baixo.
TANENBAUM, A. S. Organização Estruturada de Computadores. 6. Ed. São Paulo: Prentice-Hall do Brasil, 2013.
STALLINGS, W. Arquitetura e Organização de Computadores. 8. ed. São Paulo: Pearson Pratice Hall, 2010.