sábado, 27 de fevereiro de 2010

Memória e Timing - O Gia Completo

Memória

Todos os módulos de memória atuais, sem exceção, possuem o chip ESPD, que armazena as configurações indicadas pelo fabricante, incluindo a freqüência do módulo e os tempos de acesso. Apesar disso, muitas placas-mãe (possivelmente a maioria) oferecem um conjunto bastante completo de opções relacionadas à memória. Por padrão, as configurações são detectadas automaticamente, a partir do SPD, mas você pode alterá-las manualmente de forma a ganhar alguns pontos percentuais de desempenho.

É recomendável sempre executar o teste completo do memtest depois de alterar as opções relacionadas à memória, de forma a confirmar a estabilidade do micro. Ele é extremamente eficiente em detectar problemas transitórios, que aparecem apenas em determinadas circunstâncias. Ao fazer overclock da memória, ele pode indicar erros similares aos de um módulo com defeitos físicos (já que ele não tem com saber o que causou o erro, sabe apenas onde ele ocorreu), mas nesses casos basta voltar às configuração originais para que tudo se normalize. Vamos, então, às configurações:



Opções relacionadas à memória


Memclock Mode (Timing Mode): Por default, esta opção vem com o valor "SPD" ou "Auto", o que que faz com que o BIOS configure as opções relacionadas à memória utilizado os valores definidos pelo fabricante (gravados no chip SPD do módulo). Normalmente você precisa alterar a configuração para "Manual" para ter acesso às demais opções.

Memclock Value (Memclock Index Value, DRAM Speed ou DRAM Frequency): Esta opção permite ajustar a freqüência de operação dos módulos de memória. Lembre-se de que as memórias DDR realizam duas transferências por ciclo, as DDR2 realizam 4 e as DDR3 realizam 8. Em algumas placas é mostrado o valor "real" (geralmente de 100 a 233 MHz), enquanto outras mostram o valor "composto", que vai até 466 (DDR), 933 (DDR2) ou 1866 MHz (DDR3), o que no final dá na mesma. Assim como no caso dos processadores, os módulos de memória suportam sempre trabalhar a freqüências um pouco superiores às especificadas, o que permite obter pequenos ganhos de desempenho, em troca de menos estabilidade.

Ao contrário das placas antigas, onde a freqüência da memória era atrelada à do FSB, nas atuais você pode ajustar as duas coisas de forma independente. Na maioria, você pode especificar a freqüência da memória diretamente, enquanto em algumas você ajusta um multiplicador, que indica a freqüência da memória em relação ao FSB.

Outra opção ao fazer overclock da memória é manter (ou até mesmo reduzir) a freqüência de operação, mas em compensação reduzir os tempos de acesso. Como vimos anteriormente, nos PCs atuais, com memórias DDR2 ou DDR3, reduções nos tempos de acesso resultam geralmente em ganhos de desempenhos maiores que aumentos na freqüência.

Memory Voltage (ou DDR Voltage Control): Os módulos de memória DDR2 e DDR3 utilizam tensões de, respectivamente, 1.8V e 1.5V. Assim como no caso dos processadores, aumentar a tensão da memória faz com que o módulo seja capaz de suportar freqüências de operação ligeiramente maiores (ou tempos de acesso mais baixos). Muitos módulos DDR2 "premium" utilizam tensões de 1.9V, 2.0V ou mesmo 2.1V por padrão, justamente para permitir que o módulo suporte temporizações mais agressivas.

Você pode obter pequenos ganhos de desempenho (mesmo usando módulos genéricos) ao fazer o mesmo. O problema é que aumentando a tensão você aumenta também a dissipação de calor dos módulos, o que, sem um dissipador apropriado, pode acabar tendo um efeito contrário. De uma forma geral, aumentos de até 0.2V na tensão podem ser considerados seguros, mas aumentos maiores podem reduzir a vida útil do módulo.

CAS Latency (CL ou TCL): O CAS Latency é a principal configuração relacionada ao tempo de acesso da memória. Ele determina o número de ciclos necessários para iniciar um burst de leituras. Os antigos módulos SDRAM trabalhavam com CAS Latency de 2 ou 3 ciclos, enquanto os módulos DDR2 atuais trabalham quase sempre com 4 tempos ou mais. Isso não significa que os módulos estejam regredindo, muito pelo contrário. Os 4 ciclos do módulo DDR2 equivalem a um único ciclo de um módulo SDRAM (já que o controlador opera ao dobro da freqüência e realiza duas transferências por ciclo, fazendo com que cada ciclo demore apenas um quarto do tempo). Alguns módulos DDR2 de alta qualidade chegam a trabalhar com apenas dois tempos, mas eles são mais caros e relativamente raros.

O CAS Latency é informado nas especificações do módulo. Em alguns casos, é possível baixá-lo em um tempo (de 5 para 4, por exemplo), mantendo a estabilidade, mas isso não é uma regra.

TRCD, TRP e TRAS: Estas três opções permitem ajustar os demais tempos de acesso.

O valor do TRCD (RAS to CAS delay) indica o tempo que o controlador espera entre o envio dos endereços RAS e CAS a cada leitura. O controlador envia o sinal RAS, espera o tempo referente ao valor do TRCD, envia o sinal CAS, aguarda o número de ciclos referente a ele e, então, finalmente obtém a leitura.

Em um módulo DDR2 4-4-4-12, tanto o tCL quanto o tRCD demoram 4 ciclos, de forma que o acesso inicial demoraria um total de 8 ciclos. Em um módulo 5-5-5-15, o tempo subiria para 10 ciclos. O TRCD não é tão importante quanto o CAS Latency, pois é usado apenas ao alterar a linha ativa.

O TRP (Row Precharge Time) é mais um tempo de espera adicionado quando o controlador precisa mudar a linha ativa. Antes acessar uma linha de endereços, o controlador precisa carregá-la (precharge). O Row Precharge Time (tRP) indica justamente o tempo necessário para fazer o carregamento.

Para realizar uma leitura em um módulo 4-4-4-12, o controlador precisa esperar 4 ciclos para o TRP, 4 ciclos para o tRCD, 4 ciclos para o tCL, totalizando 12 ciclos. Ao fazer vários acessos consecutivos à mesma linha, são perdidos 12 ciclos no primeiro acesso, mas apenas os 4 referentes ao TCL nos acessos subsequentes. Sendo um pouco repetitivo, o tempo referente ao TCL é perdido em cada burst de 4 leituras, enquanto os outros dois são perdidos apenas ao mudar a linha ativa, daí darmos mais ênfase ao TCL do que aos outros.

O TRAS (RAS Activate to Charge) indica o tempo necessário para realizar a leitura completa, que corresponde geralmente à soma dos três. O TRAS é o último número que aparece nas especificações do módulo. Em um módulo 4-4-4-12, o "12" corresponde ao TRAS.

Usei o termo "geralmente" porque existem casos de módulos nos quais o TRAS não é a soma dos três. Muitos módulos suportam um recurso chamado "Additive Latency", que permite que o comando para iniciar o precharge do banco seguinte seja enviado antes que a leitura termine. Isso faz com que o tempo total da leitura seguinte seja reduzido em 1 ou até mesmo 2 ciclos. Este é o caso dos módulos 5-4-4-11 ou 4-4-4-11, por exemplo. Em alguns módulos de baixo custo, é necessário um ciclo adicional para fechar o banco, que aumenta o tRAS ao invés de diminui-lo. É o caso dos módulos 5-5-5-16 ou 6-6-6-19, por exemplo.

Uma coisa curiosa sobre o TRAS é que usar um valor mais baixo que o suportado pelo módulo acaba reduzindo o desempenho ao invés de aumentá-lo, pois ele faz com que a página seja fechada antes que o burst de leituras seja concluído. Com isso o controlador precisa realizar um número maior de leituras, reduzindo drasticamente a taxa de transferência. Não é exibida nenhuma mensagem de erro, nem surgem problemas de estabilidade: o micro simplesmente fica mais lento.

É importante rodar algum programa de benchmark (os testes do Everest ou do Sandra servem bem) depois de alterar as opções, de forma a detectar eventuais quedas no desempenho e também medir os ganhos em caso de sucesso.

TRC, TRRD, TRFC, TWR, TWTR, TRTW e TWCL: Muitas placas oferecem um conjunto mais completo de opções, abrangendo também as temporizações mais exotéricas. Em muitas delas você precisa ativar a opção "Extended Memory Settings" (ou similar) para ter acesso a elas. Todas estas opções são secundárias e não afetam tanto o desempenho quanto as anteriores. Elas são apenas uma "última fronteira" para quem é perfeccionista e quer extrair até a última gota de desempenho. O volume e a ordem das opções variam de acordo com a placa, por isso procurei organizar a explicação de forma que ela seja útil no maior número possível de placas diferentes:

O TRC (Row Cycle Time) é o tempo necessário para um ciclo completo de acesso a uma linha qualquer do módulo. Como de praxe, valores mais baixos resultam em um pequeno ganho no desempenho de acesso à memória, mas usar um valor muito baixo acaba resultando em corrupção dos dados ou perda de desempenho, já que o controlador não tem tempo de terminar a leitura.

O TRRD (Row to Row Delay) indica o número de ciclos necessários para ativar a linha seguinte, no caso de leituras que envolvam dados armazenados em linhas diferentes. Esta opção é, de certa forma, similar ao Row Precharge Time. A diferença entre os dois é que o Row Precharge Time indica o tempo necessário para carregar as células da linha seguinte, enquanto o TRRD é um tempo de espera adicional que o controlador aguarda depois que a linha já está carregada.

O TRFC (Row Refresh Cycle Time) indica a duração dos ciclos de refresh do módulo. Novamente, reduzir o valor resulta em um ganho muito pequeno de desempenho, pois o refresh é feito apenas algumas dezenas de vezes por segundo. Usar um refresh muito curto pode causar problemas de estabilidade, sobretudo com o módulo operando a altas freqüências, por isso, usar valores mais baixos acaba servindo mais para reduzir o percentual de overclock do que para melhorar o desempenho.

O TWR (Write Recovery Time) é uma "pausa" incluída durante cada operação em uma seqüência de operações de escrita. Como elas são mais raras que as operações de leitura, ele acaba tendo um efeito pequeno sobre o desempenho. Outra opção similar é o TWTR (Write to Read Delay), uma pausa feita quando o controlador termina as operações de escrita e precisa iniciar uma série de operações de leitura. Em alguns casos, aumentar o valor padrão do TWR e do TWTR em um tempo pode ajudar a estabilizar o módulo ao usar ajustes mais agressivos nas outras opções, mas não espere nenhum ganho perceptível de desempenho ao reduzir os valores. O TRTW (Read to Write Delay) é similar ao TWTR, mas se aplica em situações onde o controlador executou uma série de operações de leitura e precisa agora iniciar uma série de operações de escrita.

Finalmente, temos o TWCL (Write CAS Latency), que conclui nossa exaustiva explicação. Ele é o primo pobre do CAS Latency (TCL), que é aplicado às operações de escrita, em vez das de leitura. Embora menos importante que o TCL, ele tem um efeito maior sobre o desempenho do que as demais opções secundárias.

CPC (ou 1T/2T Memory Timing): O CPC (Command Per Clock) é um tempo de espera adicional aplicado quando o controlador de memória alterna entre endereços em diferentes chips do módulo. Ao ativar um chip, o controlador precisa esperar um ou dois ciclos para que ele seja ativado, para só então enviar os comandos de leitura.

Esta opção está presente apenas em algumas placas e pode ser ajustada com o valor "1T" e "2T". Módulos single-sided, ou seja, os módulos de mais baixa capacidade, onde os chips ocupam apenas um dos lados, podem geralmente trabalhar com apenas 1 tempo, enquanto os módulos com chips dos dois lados freqüentemente precisam de 2 tempos. Usar a opção 1T naturalmente resulta em um melhor desempenho, mas em muitos casos usar a opção 2T faz com que o módulo seja capaz de operar a freqüências mais altas, o que pode compensar a perda.

DRAM ECC Enable: Quando presente, esta opção indica se o micro tem módulos de memória com ECC. O ECC consiste em um bit adicional para cada byte de dados, que é usado para verificar e corrigir os dados armazenados. Os chips de memória com ECC possuem 9 ou 18 chips ao invés de 8 ou 16 e são usados quase que exclusivamente em servidores e estações de trabalho, onde o pequeno ganho de confiabilidade compensa o gasto adicional. Naturalmente, esta opção deve ser ativada apenas ao usar módulos com ECC.

Memory Hole Remapping, Memory Hoisting (ou DRAM Over 4G Remapping): Como vimos no capítulo sobre memórias, ao usar 4 GB de memória ou mais, um grande trecho de memória entre os 3 e 4 GB é perdido, devido às faixas de endereços usadas pelos dispositivos. Ao usar um sistema operacional de 32 bits, esta faixa de memória é perdida e não existe nada o que você possa fazer. O melhor é se contentar em usar apenas 3 GB.

Ao combinar um sistema operacional de 64 bits com um processador equipado com as extensões AMD64 ou EM64, você ganha a possibilidade de usar mais do que 4 GB de memória, mas a faixa entre os 3 e 4 GB continua sendo perdida, de forma a manter compatibilidade com os programas de 32 bits.

Estas opções, disponíveis na maioria das placas recentes, fazem com que a área de endereços reservada para uso dos dispositivos seja movida para uma área mais alta do Virtual Address Space, liberando a maior parte da memória perdida. As duas seguem princípios diferentes, mas o resultado prático é o mesmo. Você encontra uma ou outra, de acordo com a placa usada.

Uma observação é que esta opção só deve ser ativada ao usar um sistema operacional de 64 bits e ao usar 4 GB ou mais de memória. Ela pode causar problemas de compatibilidade diversos, sobretudo com jogos e aplicativos 3D, por isso verifique a estabilidade do micro ao ativá-la.

Fonte: www.gdhpress.com.br


Nenhum comentário:

Postar um comentário

Dúvidas, gostou, não gostou... Poste colabore com o blogue.