|
[03/07]
:. IOzone, ferramenta para testes de desempenho do HD [03/07] :. Apple reduz preço do MacBook Air em $500 [03/07] :. Resumo do dia [03/07] :. Problemas graves com os links da Telefonica em SP [03/07] :. Texas Instruments integra projetor em BlackBarry [03/07] :. Willcom 9: celular pequeno e integrado ao Google [03/07] :. SSDs consomem mais energia que HDs convencionais [03/07] :. Firefox entrou para o Guinness Book [02/07] :. Revista GIMPZINE nº 8 [02/07] :. Os críticos estão errados: o KDE 4 não precisa de um fork [02/07] :. Resumo do dia [02/07] :. Everex preparando Cloudbook de 10,2 polegadas [02/07] :. AMD Phenom de 45 nm poderá suportar memória DDR3 [02/07] :. Instalando o VMWare Workstation 6.x no Mandriva Linux [01/07] :. Um ano de GPLv3: estudos sobre a adoção da licença :. Mais noticias » |
A memória RAM é bastante rápida e oferece tempos de acesso brutalmente mais baixos que o HD, mas possui a desvantagem de perder os dados armazenados quando o micro é desligado, daí a necessidade de salvar os arquivos periódicamente. O mais comum é que o processador carregue o programa a partir do HD ou outra unidade de armazenamento (um CD-ROM ou um pendrive, por exemplo), copie-o para a memória RAM, juntamente com outros dados necessários, e depois vá salvando os arquivos de volta no HD, conforme eles forem sendo modificados. É também por causa disso que o processo de boot é refeito cada vez que você liga o micro. Durante o boot, o sistema operacional, drivers, bibliotecas e aplicativos são novamente copiados para a memória, junto com suas configurações e preferências. A única forma de evitar repetir o demorado processo de boot é manter a memória RAM ativa, ou salvar seu conteúdo no HD, recuperando-o no próximo boot. Estas são as estratégias usadas pelas opções de suspender e hibernar, disponíveis tanto no Windows, quanto em várias distribuições Linux. Ao suspender, a maioria dos componentes do sistema são desligados, incluindo o HD, placa de vídeo e a maior parte dos componentes da placa mãe. Mesmo o processador fica num estado latente, onde opera numa freqüência muito baixa e mantém apenas os caches e alguns componentes essenciais ativos. Praticamente, os únicos componente que continuam realmente ativo durante o estado de hibernação são os pentes de memória; graças a isso o PC acaba consumindo menos de 20 watts de energia e pode voltar ao estágio original muito rapidamente. Ao hibernar, o conteúdo da memória RAM é copiado para uma área reservada do HD e o micro é realmente desligado. Ao ligar novamente, o conteúdo da memória é restaurado e novamente temos o sistema de volta sem precisar passar pelo processo normal de boot. O problema da hibernação é que a restauração demora muito mais tempo, já que é necessário ler 512 MB, 1 GB ou mesmo 4 GB de dados (equivalentes à quantidade de memória RAM instalada) a partir do HD, o que muitas vezes demora mais do que um boot completo :). Além dos diferentes tipos de memória RAM, existem também outras tecnologias de memórias de acesso aleatório, como as SRAM e mais recentemente as MRAM. Temos ainda as onipresentes memórias flash, que concorrem com os HDs como mídia de armazenamento, que veremos em detalhes mais adiante. O tipo mais comum de memória RAM, aquela que compramos no forma de pentes e instalamos na placa mãe, é chamada de DRAM, ou "dynamic RAM". Como vimos no capítulo 1, a memória DRAM passou a ser usada apenas a partir do final da década de 70, substituindo os chips de memória SRAM, que eram muito mais caros. Com o passar o tempo, as memória DRAM viraram o padrão, de forma que geralmente dizemos apenas "memória RAM" e não "memória DRAM" ;). Num chip de memória DRAM, cada bit é formado pelo conjunto de um transistor e um capacitor. O transistor controla a passagem da corrente elétrica, enquanto o capacitor a armazena por um curto período. Quando o capacitor contém um impulso elétrico, temos um bit 1 e quando ele está descarregado, temos um bit 0. Quando falo em "capacitor", tenha em mente que não estamos falando em nada similar aos capacitores eletrolíticos da placa mãe. Os "capacitores" usados nos chips de memória são extremamente pequenos e simples, basicamente dois pequenos blocos de metal ligados ao transístor, que conservam o impulso elétrico por apenas uma fração de segundo. Para evitar a perda dos dados, a placa mãe inclui um circuito de refresh, que é responsável por regravar o conteúdo da memória várias vezes por segundo (a cada 64 milessegundos ou menos), algo similar ao que temos num monitor CRT, onde o canhão de elétrons do monitor precisa atualizar a imagem várias vezes por segundo para evitar que as células de fósforo percam seu brilho. O processo de refresh atrapalha duplamente, pois consome energia (que acaba sendo transformada em calor, contribuindo para o aquecimento do micro) e torna o acesso à memória mais lento. Pesar disso, não existe muito o que fazer, pois a única solução seria passar a usar memória SRAM, que é absurdamente mais cara :). A principal diferença é que na memória SRAM cada célula é formada por 4 ou 6 transístores, ao invés de apenas um. Dois deles controlam a leitura e gravação de dados, enquanto os demais formam a célula que armazena o impulso elétrico (a célula continua armazenando um único bit). As memórias SRAM são muito mais rápidas e não precisam de refresh, o que faz com que também consumam pouca energia. Além de ser usada como memória cache, a memória SRAM é muito usada em palmtops e celulares, onde o consumo elétrico é uma questão crítica. Seria perfeitamente construir um PC que usasse memória SRAM como memória principal, mas o custo seria proibitivo. Foi por causa do custo que as memórias DRAM passaram a ser utilizadas em primeiro lugar. Mesmo utilizando um único transistor por bit, os pentes de memória RAM são formados por um número assustador deles, muito mais que os processadores e outros componentes. Um pente de memória de 1 GB, por exemplo, é formado geralmente por 8 chips de 1 gigabit cada um (8 gigabits = 1 gigabyte). Cada chip possui nada menos do que 1 bilhão de transístores e capacitores e o módulo inteiro acumula um total de 8 bilhões de conjuntos. Apesar dessa brutal quantidade de transistores, os chips de memória são relativamente simples de se produzir, já que basta repetir a mesma estrutura indefinidamente. É muito diferente de um processador, que além de ser muito mais complexo, precisa ser capaz de operar a freqüências muito mais altas. Com a evolução nas técnicas de fabricação, os pentes de memória foram ficando cada vez mais baratos com o passar das décadas. Na época dos micros 486, chegava-se a pagar 40 dólares por megabyte de memória, valor que hoje em dia compra um pente de 512 MB (ou até mais). O problema é que os requisitos dos sistemas operacionais e aplicativos também aumentaram, quase que na mesma proporção. Enquanto o MS-DOS rodava bem com 2 ou 4 MB de memória, o Windows 95 já precisava de pelo menos 16 MB. O Windows XP (assim como a maioria das distribuições Linux atuais) não roda bem com menos de 256 MB, enquanto no Vista o ideal é usar 1 GB ou mais. Na maioria das situações, ter uma quantidade suficiente de memória RAM instalada é mais importante que o desempenho do processador, pois sem memória RAM suficiente o sistema passa a utilizar memória swap, que é absurdamente mais lenta. Enquanto uma seqüência de 4 leituras num módulo de memória DDR2-800 demora cerca de 35 bilionésimos de segundo, enquanto que um acesso a um setor qualquer do HD demora pelo menos 10 milésimos. A taxa de transferência nominal do mesmo módulo de memória é de 6.4 GB/s, enquanto mesmo um HD rápido, de 7200 RPM tem dificuldades para superar a marca de 60 MB/s, mesmo lendo setores seqüenciais. Ou seja, a memória RAM neste caso possui um tempo de acesso quase 300.000 vezes menor e uma taxa de transferência contínua mais de 100 vezes maior que o HD. Se lembrarmos que a memória RAM já é muito mais lenta que o processador (justamente por isso temos os caches L1 e L2), fica fácil perceber o quanto o uso de memória swap por falta de memória RAM física pode prejudicar o desempenho do sistema. É fácil monitorar o uso de swap. No Windows XP ou Vista basta pressionar Ctrl+Alt+Del e acessar o gerenciador de tarefas, enquanto no Linux você pode usar o comando "free" ou um aplicativo de gerenciamento, como o ksysguard. No caso do Windows Vista é possível usar um pendrive como memória adicional, através do ReadyBoost (como veremos em mais detalhes mais adiante). Este recurso pode ajudar em micros com pouca memória RAM, pois o pendrive oferece tempos de acesso mais baixos que o HD (embora a taxa de transferência continue baixa) e também reduzir o tempo de carregamento dos programas. É uma opção para casos em que você já tem o pendrive e procura um uso para ele, mas não espere milagres. Em se tratando de memória, não existe o que inventar: ou você procura um sistema operacional e programas mais leves, ou compra mais memória. Não dá para ficar em cima do muro ;). É possível classificar os módulos de memória de duas formas: Tecnologias utilizadasUm chip de memória é um exército de clones, formado por um brutal número de células idênticas, organizadas na forma de linhas e colunas, de uma forma similar a uma planilha eletrônica. O chip de memória em si serve apenas para armazenar dados, não realiza nenhum tipo de processamento. Por isso, é utilizado um componente adicional, o controlador de memória, que pode ser incluído tanto no chipset da placa mãe, quanto dentro do próprio processador, como no caso do Athlon 64. Para acessar um determinado endereço de memória, o controlador primeiro gera o valor RAS (Row Address Strobe), ou o número da linha da qual o endereço faz parte, gerando em seguida o valor CAS (Column Address Strobe), que corresponde à coluna. Quando o RAS é enviado, toda a linha é ativada simultaneamente; depois de um pequeno tempo de espera, o CAS é enviado, fechando o circuito e fazendo com que os dados do endereço selecionado sejam lidos ou gravados: ![]() Não existe um caminho de volta, ligando cada endereço de volta ao controlador de memória. Ao invés disso, é usado um barramento comum, compartilhado por todos os endereços do módulo. O controlador de memória sabe que os dados que está recebendo são os armazenados no endereço X, pois ele se "lembra" que acabou de acessá-lo. Antigamente (na época dos módulos de 30 vias), cada chip de memória se comportava exatamente desta forma, lendo um bit de cada vez. Apesar disso, o processador lia 32 bits de dados a cada ciclo, de forma que eram usados 4 pentes, com 8 chips cada um. Do ponto de vista do processador, não existia divisão, os chips eram acessados como se fossem um só. O processador não via 32 endereços separados, em 32 chips diferentes, mas sim um único endereço, contendo 32 bits. Nos módulos DIMM atuais são geralmente usados 8 chips de 8 bits cada um, formando os 64 bits fornecidos ao processador. Existem ainda módulos com 16 chips de 4 bits cada, ou ainda, módulos com 4 chips de 16 bits (comuns em notebooks). Do ponto de vista do processador, não faz diferença, desde que somados os chips totalizem 64 bits. Imagine que o controlador de memória envia seqüências com 4, 8 ou 16 pares de endereços RAS e CAS e recebe de volta o mesmo número de pacotes de 64 bits. Mesmo em casos onde o processador precisa de apenas alguns poucos bytes, contendo uma instrução ou bloco de dados, ele precisa ler todo o bloco de 64 bits adjacente, mesmo que seja para descartar os demais. No caso das placas dual-channel, continuamos tendo acessos de 64 bits, a única diferença é que agora a placa mãe é capaz de acessar dois endereços diferentes (cada um em um pente de memória) a cada ciclo de clock, ao invés de apenas um. Isso permite transferir o dobro de dados por ciclo, fazendo com que o processador precise esperar menos tempo ao transferir grandes quantidades de dados. Na verdade, nos PCs atuais, praticamente qualquer dispositivo pode acessar a memória diretamente, através dos canais de DMA (Direct Memory Access) disponíveis através do barramento PCI, AGP, PCI Express e até mesmo a partir das portas SATA, IDE e USB. Naturalmente, todos os acessos são coordenados pelo processador, mas como a memória é uma só, temos situações onde o processador precisa esperar para acessar a memória, por que ela está sendo acessada por outro dispositivo. Existem várias formas de melhorar o desempenho da memória RAM: O primeiro é aumentar o número de bits lidos por ciclo, tornando o barramento mais largo, como o aumento de 32 para 64 bits introduzida pelo Pentium 1, que continua até os dias de hoje. O problema em usar um barramento mais largo é que o maior número de trilhas necessárias, tanto na placa mãe, quanto nos próprios pentes de memória, aumentam o custo de produção. A segunda é acessar dois ou mais módulos de memória simultaneamente, como nas placas dual-channel. O problema é que neste caso precisamos de dois pentes, além de circuitos e trilhas adicionais na placa mãe. A terceira é criar pentes de memória mais rápidos, como no caso das memórias DDR e DDR2. Esta questão da velocidade pode ser dividida em dois quesitos complementares: o número de ciclos por segundo e a latência, que é o tempo que a primeira operação numa série de operações de leitura ou escrita demora para ser concluída. O tempo de latência poderia ser comparado ao tempo de acesso de um HD. É aqui que entram as diferentes tecnologias de memórias que foram introduzidas ao longo das últimas décadas, começando pelas memórias regulares, usadas nos XTs e 286, que evoluíram para as memórias FPM, usadas em PCs 386 e 486, em seguida para as memórias EDO, usadas nos últimos micros 486s e nos Pentium. Estas três primeiras tecnologias foram então substituídas pelas memórias SDRAM, seguidas pelas memórias DDR e DDR2 usadas atualmente. Memórias RegularesAs memórias regulares são o tipo mais primitivo de memória RAM. Nelas, o acesso é feito da forma tradicional, enviando o endereço RAS, depois o CAS e aguardando a leitura dos dados para cada ciclo de leitura. Isto funcionava bem nos micros XT e 286, onde o clock do processador era muito baixo, de forma que a memória RAM era capaz de funcionar de forma sincronizada com ele. Em um 286 de 8 MHz, eram,usados chips com tempo de acesso de 125 ns (nanossegundos) e em um de 12 MHz eram usados chips de 83 ns. O problema era que a partir daí as memórias da época atingiram seu limite e passou a ser necessário fazer com que a memória trabalhasse de forma assíncrona, onde o processador trabalha a uma freqüência mais alta que a memória RAM. A partir do 386, a diferença passou a ser muito grande, de forma que as placas mãe passaram a trazer chips de memória cache, dando início à corrida que conhecemos.
» Gostou do texto? Veja nossos livros impressos
|