| Red Hat Enterprise Linux 4: Introdução à Administração de Sistemas | ||
|---|---|---|
| Anterior | Capítulo 4. Memória Física e Virtual | Próxima |
Os computadores atuais usam diversas tecnologias de armazenamento. Cada tecnologia é direcionada a uma função específica, com velocidades e capacidades correspondentes.
Estas tecnologias são:
Registradores de CPU
Memória cache
RAM
Discos rígidos
Armazenamento de backup off-line (fita, disco ótico, etc)
Em termos de capacidades e custos, estas tecnologias compoem um espectro. Por exemplo: os registradores da CPU são:
Muito rápido (tempos de acesso de alguns nanossegundos)
Baixa capacidade (geralmente menor que 200 bytes)
Capacidade de expansão muito limitada (seria necessária uma mudança na arquitetura da CPU)
Caro (mais de um dólar US por byte)
No entanto, na outra extremidade do espectro, o armazenamento de backup off-line é:
Muito lento (os tempos de acesso podem ser medidos em dias, caso a mídia de backup tenha que ser enviada através de distâncias longas)
Capacidade muito alta (10s - 100s de gigabytes)
Capacidades de expansão essencialmente ilimitadas (limitadas apenas pelo espaço no chão necessário para comportar a mídia de backup)
Muito barato (frações de centavos por byte)
Ao utilizar tecnologias diferentes com capacidades diferentes, é possível ajustar o design do sistema para um desepenho máximo com o menor custo possível. As seções seguintes exploram cada tecnologia dentro do espectro de armazenamento.
Cada CPU atual inclui registradores para uma gama de propósitos, desde armazenar endereços da instrução sendo executada ao armazenamento e manipulação de dados para propósitos genéricos. Os registradores da CPU rodam na mesma velocidade que o resto da CPU; caso contrário, seriam um sério gargalo para o desempenho geral do sistema. A razão disso é que praticamente todas as operações desempenhadas pela CPU envolvem os registradores de alguma forma.
O número de registradores da CPU (e seus usos) é estritamente dependente do design arquitetônico da CPU. Não há maneira de alterar o número de registradores da CPU, além de migrar para uma CPU com arquitetura diferente. Por estes motivos, o número de registradores da CPU pode ser considerado uma constante, já que são alteráveis somente com muito esforço e custo.
O propósito da memória cache é atuar como um buffer entre os registradores da CPU, muito limitados e de alta velocidade, e a memória principal do sistema, relativamente mais lenta e maior — geralmente referida como RAM[1]. A memória cache tem uma velocidade operacional similar à da própria CPU, portanto, quando a CPU acessa os dados no cache, não fica esperando os dados.
A memória cache é configurada de maneira que, sempre que os dados forem acessados pela RAM, o hardware do sistema primeiro verifica se os dados desejados estão no cache. Se os dados estiverem no cache, são rapidamente recuperados e usados pela CPU. Mas, se os dados não estão no cache, são acessados pela RAM e, enquanto são transferidos para a CPU, também são alocadas no cache (caso sejam novamente necessários mais tarde). Da perspectiva da CPU, tudo isso é feito transparentemente, de modo que a única diferença entre acessar os dados no cache e na RAM é o tempo de resposta.
Em termos de capacidade de armazenamento, o cache é bem menor que a RAM. Consequentemente, nem todo byte da RAM pode ter sua localidade única no cache. Sendo assim, é necessário dividir o cache em seções que podem ser usadas para armazenar áreas diferentes da memória RAM e também ter um mecanismo que permite a cada área do cache armazenar áreas diferentes de RAM em horas diferentes. Mesmo com a diferença de tamanho entre cache e RAM, dada a natureza sequencial e localizada do acesso ao armazenamento, uma pequena quantidade de cache pode, efetivamente, acelerar o acesso a uma grande quantidade de memória RAM.
Ao gravar dados pela CPU, as coisas podem complicar um pouco. Há duas táticas diferentes que podem ser usadas. Em ambos os casos os dados são gravados primeiro no cache. No entanto, como o propósito do cache é funcionar como uma cópia muito rápida do conteúdo de porções selecionadas da RAM, sempre que algum dado é alterado, deve ser gravado em ambos, na memória cache e na memória RAM. Caso contrário, os dados do cache e os dados da RAM não coincidiriam.
As duas táticas diferem no processo de como isso é feito. Uma tática, conhecida como cache de gravação direta, grava os dados modificados imediatamente na RAM. O cache de gravação reversa, no entanto, atrasa a gravação dos dados modificados de volta à RAM. A razão disto é reduzir o número de vezes que um dado frequentemente modificado deve ser gravado de volta à RAM.
O cache de gravação direta é um pouco mais simples para implementar e, por este motivo, é mais comum. O cache de gravação reversa é um pouco mais difícil de implementar; além de armazenar os dados reais, é necessário manter alguma espécie de mecanismo capaz de avisar se os dados do cache estão limpos (quando os dados do cache são os mesmos que os dados da RAM) ou sujos (quando os dados do cache foram modificados, o que significa que os dados da RAM não estão mais atualizados). Também é necessário implementar uma maneira de enviar periodicamente entradas sujas do cache de volta à RAM.
Os sub-sistemas do cache nos designs dos compudatores de hoje podem ser multi-níveis; ou seja, pode existir mais de um conjunto de cache entre a CPU e a memória principal. Os níveis do cache frequentemente são numerados, com os números menores mais próximos à CPU. Muitos sistemas têm dois níveis de cache:
O cache L1 (level 1) frequentemente é localizado diretamente no chip da CPU e roda na mesma velocidade que a CPU.
O cache L2 (level 2) frequentemente é parte do módulo da CPU, roda nas mesmas velocidades (ou próximas) da CPU, e geralmente é um pouco maior e mais lento que o cache L1.
Alguns sistemas (normalmente, os servidores de alto desempenho) também tem o cache L3, que geralmente é parte da placa-mãe do sistema. Conforme esperado, o cache L3 seria maior (e provavelmente mais lento) que o cache L2.
Em qualquer um dos casos, o objetivo de todos os sub-sistemas de cache — seja de nível simples ou multi-nível — é reduzir o tempo médio de acesso à memória RAM.
A RAM representa o armazenamento eletrônico em massa nos computadores de hoje. É usada como armazenamento para dados e programas, enquanto estes estão em uso. A velocidade da RAM na maioria dos sistemas de hoje fica entre a velocidade da memória cache e a dos discos rígidos; bem mais próxima à da memória cache.
A operação básica da RAM é, na verdade, bem simples. No nível mais baixo há chips da RAM — circuitos integrados que executam a "memorização" de verdade. Estes chips têm quatro tipos de conexões com o mundo externo:
Conexões de eletricidade (para operar os circuitos dentro do chip)
Conexões de dados (para permitir a transferência de dados para dentro ou para fora do chip)
Conexões de leitura/gravação (para controlar se os dados devem ser armazenados no ou recuperados pelo chip)
Conexões de endereço (para determinar onde os dados devem ser lidos/gravados dentro do chip)
Aqui estão os passos para armazenar dados na RAM:
Os dados a serem armazenados são apresentados às conexões de dados.
O endereço no qual os dados devem ser armazenados é apresentado às conexões de endereço.
A conexão leitura/gravação está ajustada no modo gravação (write).
Recuperar dados também é simples:
O endereço dos dados desejados é apresentado às conexões de endereço.
A conexão leitura/gravação é ajustada no modo leitura (read).
Os dados desejados são lidos (acessados) pelas conexões de dados.
Apesar destes passos parecerem simples, acontecem a velocidades muito altas, e o tempo gasto com cada passo é medido em nanossegundos.
Praticamente todos os chips de RAM criados hoje são vendidos como módulos. Cada módulo consiste de diversos chips de RAM ligados a uma pequena placa de circuito. A disposição mecânica e elétrica do módulo adere aos diversos padrões do setor, possibilitando adquirir memória de fabricantes variados.
![]() | Nota |
|---|---|
O principal benefício de um sistema usando módulos RAM padronizados é que custo da RAM tende a manter-se baixo, devido à possibilidade de adquirir módulos de mais de um fabricante de sistemas. Apesar da maioria dos computadores usar módulos RAM padronizados, há exceções. A mais notável é o laptop (e mesmo aqui já vem ocorrendo alguma padronização) e servidores high-end. No entanto, mesmo nestes casos, é provável que exista módulos de terceiros, assumindo que o sistema seja relativamente conhecido e que não seja um design completamente inovador. |
Todas as tecnologias abordadas até então são de natureza volátil. Em outras palavras, os dados contidos no armazenamento volátil são perdidos quando a energia é desligada.
Por outro lado, os discos rígidos são não-voláteis — os dados que eles contêm continuam lá, mesmo após a energia ser desligada. Por este motivo, os discos rígidos ocupam uma posição especial no espectro de armazenamento. Sua natureza não-volátil torna-os ideais para armazenar programas e dados para uso a longo prazo. Um outro aspecto único aos discos rígidos é que, ao contrário da memória RAM e do cache, não é possível executar programas diretamente quando estão armazenados em discos rígidos. Ao invés disso, eles precisam ser acessados primeiro pela memória RAM.
Também diferentemente das memórias RAM e cache, é a velocidade de armazenamnto e recuperação dos discos rígidos - pelo menos uma ordem de magnitude mais lentos que as tecnologias totalmente eletrônicas usadas para cache e RAM. A diferença de velocidades existe devido, principalmente, à sua natureza eletromecânica. Há quatro fases diferentes durante cada transferência para ou de um disco rígido. A lista seguinte ilustra estas fases, juntamente ao tempo que levaria a um drive típico de alto desempenho, em média, para completar cada fase:
Movimento de acesso com o braço (5,5 milissegundos)
Rotação do disco (0,1 milissegundos)
Heads acessando/gravando dados (0,00014 milissegundos)
Transferência de dados de/para os eletrônicos do drive (0,003 milissegundos)
Dentre estas, somente a última fase não é dependente de nenhuma operação mecânica.
![]() | Nota |
|---|---|
Apesar de haver muito mais a aprender sobre discos rígidos, as tecnologias de armazenamento em disco são abordadas com maior profundidade no Capítulo 5. Por enquanto, é necessário somente ter em mente a diferença enorme de velocidades entre as tecnologias baseadas em disco e baseadas na memória RAM, e que sua capacidade de armazenamento geralmente excede a da RAM em pelo menos 10 vezes, e frequentemente 100 vezes ou mais. |
O armazenamento de backup off-line vai um passo além do armazenamento no disco rígido em termos de capacidadade (maior) e velocidade (mais lenta). Aqui as capacidades são efetivamente limitadas somente pela sua capacidade em obter e armazenar a mídia removível.
As tecnologias usadas nestes dispositivos variam amplamente. Aqui estão os tipos mais conhecidos:
Fita magnética
Disco ótico
Obviamente, ter mídia removível significa que os tempos de acesso tornam-se ainda mais longos, particularmente quando os dados desejados estão numa mídia ainda não carregada pelo dispositivo de armazenamento. Esta situação é amenizada pelo uso de dispositivos robóticos capazes de carregar e descarregar mídia automaticamente, mas as capacidades do armazenamento de mídia destes dispositivos ainda é finita. Mesmo no melhor dos casos, os tempos de acesso são medidos em segundos, o que é bem mais longo que os tempos de acesso relativamente lentos de multi milissegundos de um disco rígido de alto desempenho.
Agora, após analisar rapidamente as diversas tecnologias de armazenamento usadas atualmente, vamos explorar os conceitos da memória virtual básica.
| [1] | Apesar de "RAM" ser o acrônimo de "Random Access Memory," e um termo que poderia ser facilmente aplicado a qualquer tecnologia de armazenamento, permitindo o acesso não-sequencial de dados armazenados, quando os administradores de sistemas falam sobre RAM, referem-se à memória principal do sistema. |