Você está na página 1de 9

TIO- Trabalho Interdisciplinar Orientado

Setembro de 2019 - Faculdade de Engenharia Eletrônica com Ênfase em Auto-


mação Industrial - São Paulo - SP, Brasil.

MANIPULAÇÃO DE LATÊNCIAS DE DRAM EM DDR3 PARA


APRIMORAMENTO NO PROCESSAMENTO DE DADOS

Daniel Pinheiro de Sousa¹; Gleison Silva²

¹danielpinheirobkp@gmail.com; ²gleison.silva@drummond.com.br

Departamento de Engenharia, Universidade Drummond


R. Professor Pedreira de Freitas, 415 – Tatuapé, São Paulo - SP
E-mail: imprensa@drummond.com.br

Resumo: As latências das memórias DRAM exercem influência sobre a execução de tarefas em
microcomputadores. Existem pelo menos 4 latências principais que agem diretamente com o
controlador de memória do processador, e são: tCAS (Column Access Strobe), tRCD (RAS to CAS
Delay), tRP (Row Precharge) e tRAS (Row Active Time). Essas temporizações são responsáveis
pelos tempos de resposta entre o requerimento dos dados pelo processador e a resposta da DRAM.
Portanto, neste artigo trata sobre mostrado como o manuseio destas latências podem melhorar o uso
da máquina em ambientes de grande demanda por processamento, como na execução de jogos,
edição de vídeos, áudio e imagens, modelamento e em testes sintéticos que visam emular o uso real
da máquina, chamados benchmarks.

Abstract: DRAM memory latencies influence the execution of tasks in microcomputers. There are
at least 4 main latencies that act directly with the processor memory controller, and are: tCAS
(Column Access Strobe), tRCD (RAS to CAS Delay), tRP (Row Precharge) and tRAS (Row Active
Time). These timings are responsible for the response times between the data requirement by the
processor and the DRAM response. Therefore, this article discusses how handling these latencies
can improve machine usage in high-demand processing environments, such as playing games,
editing video, audio and images, modeling, and synthesizing testing to emulate usage. real machine,
called benchmarks.

Palavras-chave: Latências, leitura, escrita, memória, DRAM, multi-core.

Keywords: Latencies, read, write, memory, DRAM, multi-core.


TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

1. Introdução Teórica

No início dos anos 1960, a memória RAM (Random Access Memory) era um conceito já
conhecido e usado: um dispositivo de memória primária reservada para ser escrita e lida de modo
temporário. Ou seja, os dados são perdidos sempre que o computador é desligado. Entretanto, este
tipo de memória demandava um aparato volumoso e complicado de imãs e fios e era ineficiente
energeticamente falando, tornando as RAM um tipo de tecnologia inviável para a produção em
massa e limitando-as a serem utilizadas somente em laboratórios. Os primeiros chips RAM eram
chamados de Core MRAM ou Core Magnetic Random Access Memory. Um core era um arranjo de
ferrita, um material cerâmico ferromagnético que poderia ser magnetizado em uma direção, assim
provendo a entrada e a saída de informação do núcleo. Um dos primeiros chips de RAM está
ilustrado na figura 1.

Figura 1. Foto de um chip MRAM. Fonte: (Wikipedia, n.d.).

Com o objetivo de baratear os custos e trazer uma nova possibilidade para armazenamento
de instruções para o processador, o engenheiro americano Robert Dennard que, à época, trabalhava
na empresa de tecnologia IBM, desenvolveu um novo conceito de memória RAM que utilizava
apenas um transistor e um capacitor dentro de uma pequena célula de memória, como mostra a Fig.2.
O chip é formado por uma malha composta por linhas e colunas, entre as quais estão localizados os
transistores e os capacitores. Um capacitor carregado representa um bit de memória e corresponde
em linguagem binária ao número 1, enquanto um capacitor descarregado representa um bit de
memória e corresponde em linguagem binária ao número 0. Essa nova tecnologia de célula-
transistor-capacitor ficou inicialmente conhecida como “Field-effect transistor memory” ou
memória FET. Este tipo de memória veio a ser chamado, no começo dos anos 70, de DRAM ou
Dynamic Random Access Memory. (Lemelson, n.d.)

Figura 2. Desenho esquemático da memória DRAM de Dennard. Fonte: (Jacob, Spencer e Wang, 2008).
TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

Os módulos de memória RAM passaram por drásticas melhorias até chegar (veja a seguir)
ao modelo atual. Os chips tiveram diversas modificações em seus designs, porém a disposição dos
elementos na célula de memória permaneceu essencialmente a mesma com o passar dos anos, com
as modificações sendo feitas principalmente nos métodos de leitura e escrita na DRAM.
A primeira grande evolução dos designs das memórias RAM ocorreu com o advento da
chamada Synchronous DRAM (SDRAM) que, diferente das memórias mais antigas, operava com
absoluta sincronização entre o clock (frequência) da memória por meio de um controlador interno
que se comunicava diretamente com o controlador de memória do processador. O princípio para essa
mudança foi simples: associando todos os dados e a transferência de controle a um único sinal, o
tempo dos eventos torna-se mais previsível. (Jacob, Spencer e Wang, 2008)
Todavia, a principal mudança de design das DRAM ao longo do tempo definitivamente é a
introdução do método DDR - Double Data Rate ao processo de transmissão de dados da memória.
A grande diferença aqui, é que enquanto as DRAM’s tradicionais (chamadas também de SDR –
Single Data Rate) transmitem as informações uma vez por ciclo de clock, as memórias DDR
transmitem o dobro em um único ciclo, como mostra a Fig. 3. Isto é, a memória DDR passou a
prover dados com duas vezes a velocidade do clock interno. A Tab.1 mostra as diferenças entre os
tipos de SDRAM e DDR.

Figura 3. Ilustração da transmissão de dados da memória RAM por ciclo de clock em módulos SDR e
DDR. Fonte: (National Instruments, 2019).
A taxa de dados é dada pelo dobro do Bus clock, pois os módulos de memória em DDR são
produzidos no formato DIMM (Double Inline Memory Module), o que significa que os módulos
DIMM possuem contatos em ambos os lados do módulo, o que justifica seu nome “módulo de
memória em dupla linha de contato” (Morimoto, 2005)
Clock interno Bus clock Taxa de dados Taxa de Tensão
Tipo de (MHz) (MHz) (MT/s) transferência (V)
SDRAM (GB/s)

SDRAM 100-166 100-166 100-166 0,8-1,3 3,3

DDR1 133-200 133-200 266-400 2,1-3,2 2,5/2,6

DDR2 133-200 266-400 533-800 4,2-6,4 1,8

DDR3 133-200 533-800 1066-1600 8,5-14,9 1,35/1,5

DDR4 133-200 1066-1600 2133-3200 1,7-21,3 1,2


Tabela 1. As diferenças internas dos tipos e das gerações DDR. Fonte: (Transcend, n.d.).
TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

Essas mudanças nos designs exigiram que algumas coisas mudassem na questão das
pinagens dos módulos de memória. A mudança mais radical no módulo foi após a chegada dos
módulos DIMM, que ocasionaram profundas mudanças na largura de banda das memórias, como
mostra a Fig. 4. Um módulo de memória é uma placa impressa com os chips DRAM soldados na
mesma. Os padrões das pinagens (conexões com a placa-mãe) mudaram ao passar do tempo para
satisfazer as novas demandas de consumo e de largura de banda.

Figura 4. Um módulo de memória RAM. Fonte: (Kingston, n.d.).

1.1. Tempo de acesso, latência ou “timings”

Tendo como objetivo o aprimoramento do processamento e a utilização produtiva dos dados


no âmbito de benchmarks e testes sintéticos, a boa otimização das latências das DRAM’s se faz
necessária.

Para os dados serem devidamente lidos e escritos pela DRAM, é necessário que os sinais
lógicos percorram um caminho do controlador de memória do processador até o módulo de memória.
onde o sinal é analisado, processado e respondido com os dados. O tempo que este sinal demora para
voltar para o controlador de memória é chamado de latência e é afetado por diversos procedimentos
que são realizados no interior dos chips DRAM.

A redução destas latências significa na redução do tempo de processamento. Ou seja, os


dados estarão prontos mais rápidos, o que deve causar uma melhoria no desempenho do sistema,
principalmente quando são feitas renderizações pesadas, testes sintéticos e modelagens. Esses
timings estão expostos nos módulos de memória como está explicitado na Fig.5. Os números CL7-
7-7-18 representam os diferentes tipos de latências presentes na operação da DRAM, e são,
respectivamente, a latência, tCAS, tRCD, tRP e tRAS.

Figura 5. A forma em que as latências são expostas em um módulo de memória RAM. Fonte: (Torres, 2011).

A latência tCAS ou tCL (Column Access Strobe) representa quantos ciclos internos da
memória para o módulo DRAM acessar um conjunto específico de dados em uma de suas colunas e
disponibilizar esses dados nos pinos de saída, a partir de quanto o controlador de memória solicitar
esses dados. Diferente das outras latências, o número que representa a tCAS não é o máximo que o
timing consegue atingir, e sim um número exato que deve estar de acordo com o clock do controlador
TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

de memória do processador. Isto acontece pois estamos lidando com uma Synchronous DRAM, como
vimos acima. (Jacob, Spencer e Wang, 2008)

O número mínimo de ciclos necessários para se acessar uma linha e encontrar o dado na
coluna correta é chamado de latência tRCD (RAS# to CAS# Delay). Pode ser resumida como o
atraso potencial entre a escrita e a leitura dos dados após o requerimento dos dados pelo controlador
de memória do processador. Sempre que o controlador necessitar de um dado que está em uma linha
que ainda não foi acessada, a latência, em ciclos, para que o dado chegue até o mesmo será o valor
do tRCD somado com o valor do tCAS. (Lathan, 2018)

O terceiro número da sequência é a latência tRP (Row Precharge), é o número de ciclos


necessários para que uma linha seja reaberta após um comando. Isto é, num cenário em que houve
um erro e foram recebidos os dados de uma linha errada, o tRP é o número de ciclos necessários
entre esta linha ser fechada e outra ser aberta. Neste caso de erro, o tempo para que o controlador de
memória receba os dados que requisitou será a soma das latências tRP, tRCD e tCAS.

De acordo com Lathan, a quantidade de ciclos necessária para descarregar, restaurar uma
célula e estar pronta para repetir todo o ciclo é chamada de latência tRAS (Row Active Time). Em
outras palavras, é o tempo em que uma célula fica inativa após ser usada para apresentar um novo
dado, e por este motivo a latência tRAS é a maior dentre os timings principais.

2. Metodologia

Para a elaboração dos resultados obtidos por meio das manipulações das latências foram
utilizados softwares de testes de estabilidade de sistemas e programas de monitoramento, como, por
exemplo, contemplam os softwares CPU-Z (CPUID), HWMonitor (CPUID), AIDA64 Extreme
(FinalWire), UserBenchmark (UserBenchkmark) e o teste de memória do próprio Windows 7. Esses
softwares foram escolhidos pois são os programas que atuam o mais próximo da realidade possível
devido a forma em que eles realizam os testes. Mesmo sendo testes sintéticos, trabalham de modo a
modelar a realidade do usuário.

Os dados foram obtidos por meio de um sistema operacional Windows 7 Professional


restaurado e sem programas em execução em segundo plano, com um processador Intel Celeron
G540@2,5GHz Dual Core, numa placa-mãe POS-EIH61CE, chipset Sandy Bridge e socket LGA
1155. Além disso, o sistema foi equipado com dois módulos de memória DDR3 1333 MHz,
operando em Dual-Channel e inicialmente com timings de 7-7-7-20.

Os testes de estabilidade de sistema foram realizados toda vez em que era mudado alguma
das latências no sistema integrado de entrada de saída (BIOS, Basic Input/Output System) placa
mãe, utilizando do teste de memória do Windows 7 para diagnosticar algum problema maior e
utilizando o teste de estabilidade do AIDA64 Extreme para ter certeza de que o sistema estava
estável. Foi utilizado o benchmark de simulação com foco em rotinas diárias de trabalho e jogos do
UserBenchmark para tentar adicionar grande estresse no sistema, além disso foi utilizado o seu
próprio sistema de score nesse trabalho e cada amostragem representa um conjunto de latências
diferente.
TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

É importante salientar que nos testes do software UserBenchmark, foram escolhidos quatro
parâmetros para comparação, que são:

● UBM Effective Speed, que é uma medida percentual da velocidade dos componentes
no mundo real, ou seja, é um indicativo da performance que é relevante ao consumidor
comum. Foram medidos por meio deste índice o processamento de mundo real tanto do
processador quanto da DRAM.

● Multi-core integer speed (Extreme) é um índice que mede a habilidade do processador


de performar 64 operações pesadas de processamento ao mesmo tempo.

● Multi-core of RAM processing capacity, é o máximo desempenho da memória


utilizando vários núcleos de processamento.

Os timings escolhidos para os testes foram selecionados pensando na possibilidade prática


do usuário comum em atingi-las, partindo dos timings padrões dos módulos e manipulando-os de
forma a diminuir uma latência de cada vez e realizando os testes em seguida.

3. Resultados

O gráfico 1 a seguir ilustra a relação entre a capacidade de cópia sequencial, leitura


sequencial, escrita sequencial e latência das DRAM em função dos seus timings. Este parâmetro é
importante pois é o melhor desempenho que o sistema irá atingir com estas configurações e não
avalia a estabilidade do sistema como um todo, mas sim em tarefas específica de renderização e
modelamento para que seja possível analisar os dados separadamente. Este primeiro teste leva em
consideração somente fatores de processamento de dados e exclui o sistema como um todo,
revelando somente a capacidade bruta do setup.

Cópia, leitura e escrita sequencial


14248
7-7-7-20 15324
15089

14383
6-6-6-24 15385
15271 Cópia
Escrita
14398
6-6-6-20 15447 Leitura
15246

14249
6-7-7-22 15332
15103

13600 13800 14000 14200 14400 14600 14800 15000 15200 15400 15600

Gráfico 1. Relação entre timings e capacidade de leitura, escrita e cópia sequencial. Dados medidos em MB/s
pelo software AIDA 64 Extreme. Quanto maior, melhor. Fonte: Autor.
TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

O gráfico 2 ilustra importantíssima relação da resultante das latências da DRAM em comparação com
seus timings internos.

Latência

7-7-7-20 80,3

6-6-6-24 74,1
Latência (ns)
6-6-6-20 74,4

6-7-7-22 77,2

Gráfico 2. Relação entre timings e latência resultante da DRAM. Dados medidos em nanossegundos, pelo
software AIDA 64 Extreme. Quanto menor, melhor. Fonte: Autor.

A partir do Gráfico 3, os dados aqui apresentados representam a real situação do sistema


quando submetido ao processamento em tempo real em rotinas diárias como jogos, modelamento,
renderização e tarefas administrativas como trabalhar com planilhas, fazer vídeo chamadas, etc. Os
dados de DRAM foram calculados baseados na capacidade de gerar dados em single-core, multi-
core e a latência que é requisitada nesses processos.

Processamento do mundo real


39,90%
7-7-7-20
32,30%

41%
6-6-6-24
32,40% UBM Effective Speed (DRAM)

40,60% UBM Effective Speed


6-6-6-20 (Processador)
32,50%

40,30%
6-7-7-22
32,40%

0,00% 10,00% 20,00% 30,00% 40,00% 50,00%

Gráfico 3. Porcentagens calculadas a partir do processamento de mundo real, tanto de processador quanto de
memória RAM. Fonte: Autor.
TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

O gráfico 4 contém os dados dos testes mais exigentes realizados. Ele ilustra a relação entre
timings e a capacidade máxima tanto do CPU quando da DRAM de operar diversas instruções e
comandos ao mesmo tempo utilizando todos os núcleos de processamento.

Processamento multi-core

7-7-7-20 13,6
129

6-6-6-24 13,7
129 Multi-core of RAM processing
capaciy

6-6-6-20 13,7 Multi-core integer Speed


130

6-7-7-22 13,6
128

0 50 100 150
Gráfico 4. Relação entre timings e capacidade de processamento de dados em cenários multi-core. Multi-core of
RAM processing capacity é medido em GB/s, quanto maior, melhor. Multi-core integer speed é medido em pontos,
quanto maior, melhor. Fonte: Autor.

3.1. Discussão

Numa primeira verificação, reduzir uma latência em 2 nanossegundos pode não trazer
benefícios óbvios, porém quando se olha num amplo espectro e leva-se em consideração as
melhorias que se tem em longo prazo, principalmente quando o processamento precisa ser realizado
em tempos curtos como por exemplo num cenário de multitarefa onde é necessário grande poder de
processamento, a manipulação, mesmo que mínima das latências da memória pode trazer benefícios.

No decorrer dos testes os conjuntos de latências {6-6-6-20} e {6-6-6-24} falharam em todos


os testes de estabilidade e estresse do sistema. A análise dos dados do gráfico 1 deve ser realizada
com o conhecimento de que menores latências não significam automaticamente que o sistema
reagirá melhor aos novos timings. Mesmo ultrapassando o desempenho dos timings padrões dos
módulos em 0,8% e 0,3%, respectivamente, esses dois conjuntos se provaram ineficazes em manter
o sistema coeso.

Além disso, os ganhos que se obtêm quando reduzimos as latências de {7-7-7-20} para {6-
6-6-24} são ínfimos mesmo quando se trata de processamento de mundo real, onde os ganhos não
chegam a 2%, um delta de apenas 0,1 GB/s de memória processada.

4. Considerações finais

A manipulação destes timings mostrou que, neste caso, não vale o risco de ter um sistema
instável, já que os ganhos apresentados aqui foram todos menores de 1% e ocasionaram sérios
problemas na inicialização do sistema e na estabilidade do mesmo.
TIO – Trabalho Interdisciplinar Orientado – Outubro 2019 – Faculdade de Engenharia Eletrônica com
Ênfase em Automação Industrial – São Paulo, SP.

5. Referências Bibliográficas

TORRES, Gabriel. Understending RAM Timings, 2011. Disponível em:


<https://www.hardwaresecrets.com/understanding-ram-timings/> Acessado em: 29/11/2019.

JACOB, Bruce; SPENCER, W. Ng.; WANG, T. David. In Prayse of Memory Systems: Cache,
DRAM, Disk. Elsevier Inc. EUA, 2008.

KINGSTON. Memory Module Specifications - KVR16S11K2/16. Disponível em:


<https://www.kingston.com/br>, Acessado em: 29/11/2019.

LATHAN, Patrick. What are memory timings? GamerNexus. EUA, 2018. Disponível em:
<https://www.gamersnexus.net/guides/3333-memory-timings-defined-cas-latency-trcd-trp-tras>,
Acesso em: 20 de outrublo de 2019.

LEMELSON. Robert Dennard - Dynamic Random Access Memory. Massachusetts Institute of


Technology. Massachusetts, nd. Disponível em: <https://lemelson.mit.edu/resources/robert-
dennard>, Acesso em: 06 de setembro de 2019.

MORIMOTO, E. Carlos. Double Inline Memory Module. 2005. Disponível em:


<https://www.hardware.com.br/termos/dimm>, Acesso em: 18 de outubro de 2019.

NATIONAL INSTRUMENTS. Advanced Features of High-Speed Digital I/O devices: Double


Data Rate, 2019. Disponível em: <https://www.ni.com/pt-br/innovations/white-
papers/08/advanced-features-of-high-speed-digital-i-o-devices---double-dat.html> Acessado em:
29/11/2019.

TRANSCEND. What is the difference between SDRAM, DDR1, DDR2, DDR3, DDR4?
Transcend-info, n.d. Disponível em: <https://ua.transcend-info.com/Support/FAQ-296> Acessado
em: 29/11/2019.

WIKIPEDIA. Magnetic-core memory. Wikipedia, the free encyclopedia, nd. Disponível em:
<https://en.wikipedia.org/wiki/Magnetic-core_memory> Acessado em: 29/11/2019.

Você também pode gostar