Тест памяти DDR3: стоит ли переплачивать?

В данной статье мы постараемся выяснить, как влияют тактовая частота, тайминги и режим работы памяти на реальную производительность компьютера. Кроме того, мы попытаемся понять, стоит ли переплачивать за высокоскоростную память и адекватен ли прирост производительности от использования высокоскоростной памяти заплаченным за это деньгам.

22.07.2008 00:24,
Страницы: Пред. 1 2 3 4 5 След.

Структура модуля памяти

Модуль памяти состоит из нескольких микросхем (чипов) памяти. Для доступа к конкретному чипу памяти применяется специальный сигнал CS# (Chip Select). Когда сигнал активен, возможен доступ к чипу памяти, то есть чип активируется. В противном случае чип памяти недоступен.

Если говорить о модуле памяти, который включает несколько чипов памяти, то, кроме емкости, выражаемой в мегабайтах (Мбайт) или в гигабайтах (Гбайт), он характеризуется шириной или разрядностью интерфейса шины данных. Для всей современной памяти ширина шины данных составляет 64 бита. Ширина шины данных модуля памяти (64 бит) больше, чем ширина шины данных отдельного чипа памяти (4, 8, 16 или 32 бит). Для того чтобы согласовать передачу данных, используется простое слияние шин данных отдельных чипов памяти в шину данных модуля памяти.

Такое «заполнение» шины данных памяти принято называть составлением физического банка памяти. К примеру, для составления одного физического банка 64-разрядного модуля памяти SDRAM необходимо наличие 16 чипов шириной x4, или восьми чипов шириной x8, или четырех чипов шириной x16.

Как и отдельный чип памяти, модуль памяти характеризуется глубиной, которая определяется как емкость модуля, выраженная в битах и деленная на разрядность шины данных (64 бит). Соответственно произведение ширины на глубину дает полную емкость модуля и определяет его организацию. Так, для модуля памяти емкостью 1024 Мбайт справедлива запись 128 Мx64.

Частота, пропускная способность и обозначение памяти

Основной характеристикой памяти является ее пропускная способность, то есть максимальное количество данных, которое можно считать из памяти или записать в память в единицу времени. Именно эта характеристика прямо или косвенно отражается в названии типа памяти. Пропускная способность памяти зависит от ширины шины данных и частоты работы памяти. Ширина шины данных определяет количество бит, передаваемых за один такт, а частота работы памяти — количество тактов в единицу времени. Поэтому для того, чтобы определить пропускную способность памяти, нужно умножить частоту системной шины на ширину шины данных. Как уже отмечалось, память SDRAM имеет 64-битную (8-байтную) шину данных.

К примеру, память DDR-400, функционирующая на эффективной частоте 400 МГц, имеет пропускную способность 400 МГц x 8 байт = 3,2 Гбайт/с, а память DDR3-1066, функционирующая на эффективной частоте 1066 МГц, — 1066 МГцx8 байт = 8,5 Гбайт/с.

Кроме того, необходимо учесть, что синхронная память DDR, DDR2 и DDR3 может функционировать в двухканальном режиме, и в этом случае максимальная пропускная способность удваивается.

Существует так называемое официальное и неофициальное обозначение памяти. Официальное обозначение памяти базируется на ее пропускной способности, а неофициальное — на эффективной тактовой частоте. К примеру, неофициальное обозначение памяти DDR3, функционирующей на тактовой частоте 1066 МГц, выглядит так: DDR3-1066. Официальное обозначение той же памяти записывается в следующем виде: PC3-8500, где число 8500 обозначает пропускную способность в одноканальном режиме работы (8500 Мбайт/с). Отметим, что, несмотря на наличие официального обозначения, неофициальное обозначение употребляется чаще.

Если говорить об эффективной тактовой частоте, то для памяти DDR3 типичными эффективными частотами являются следующие: 1066, 1333 и 1600 МГц, то есть стандартными считаются следующие модули памяти: DDR3-1066 (PC3-8500), DDR3-1333 (PC3-10600) и DDR3-1600 (PC3-12800).

Тайминги памяти

Как уже отмечалось, кроме максимальной пропускной способности, память характеризуется латентностью.

Под латентностью принято понимать задержку между поступлением команды и ее реализацией. Латентность памяти определяется ее таймингами, то есть задержками, измеряемыми в количестве тактов между отдельными командами. Принято различать несколько разных таймингов памяти, соответствующих задержкам между различным командами. Тайминги памяти можно устанавливать в настройках BIOS системной платы, а потому рассмотрим их более подробно.

Для этого еще раз напомним, каким образом происходит считывание или запись в ячейку памяти. Для чтения или записи данных в память существует несколько служебных сигналов, комбинации которых определяют весь набор команд работы с памятью. Ранее мы упоминали о наиболее важных сигналах RAS# и CAS#, комбинации которых позволяют сформировать команды активации строки памяти и чтения (записи) данных ячейки памяти. Однако мы рассматривали эти сигналы на примере одной матрицы памяти, но ведь каждый чип памяти имеет логическую структуру нескольких банков, а модуль памяти состоит из нескольких чипов. Кроме того, необходимо каким-то образом определять, о чем конкретно идет речь — о чтении данных из памяти или о записи данных в память. Поэтому для работы с памятью применяется четыре типа сигналов: CS#, RAS#, CAS# и WE#.

Сигнал CS# (Chip Select) — это сигнал выбора чипа. Когда происходит изменение сигнала CS# с высокого уровня на низкий, чип активируется, то есть становится доступным. Если же уровень сигнала CS# поддерживается высоким, то чип памяти недоступен.

Сигнал RAS#, как уже отмечалось, используется для активации строки памяти (для считывания адреса строки памяти и ее выбора). Когда происходит изменение сигнала RAS# с высокого уровня на низкий, происходит считывание адреса строки памяти, ее выбор в матрице памяти и считывание всего значения строки памяти в усилитель уровня. Изменение сигнала RAS# с высокого уровня на низкий трактуется как команда ACTIVE. Естественно, что эта команда будет восприниматься только в том случае, если предварительно активирован чип памяти.

Сигнал CAS# служит для считывания адреса столбца памяти. Когда происходит изменение сигнала СAS# с высокого уровня на низкий, производится считывание адреса столбца памяти, после которого возможно либо чтение данных, соответствующих выбранному столбцу, либо запись данных в ячейку. При операции чтения данные, соответствующие выбранному столбцу, поступают из усилителя уровня в буфер вывода шины данных. При записи данных выбранный столбец подключается к буферу ввода данных и в элементарную ячейку памяти записывается бит данных (по сути, заряжается или разряжается конденсатор). Для того чтобы различать операции чтения и записи, применяется специальный сигнал WE# (Write Enable). Если этот сигнал поддерживается на высоком уровне, то реализуется операция чтения, а если он переводится в низкий уровень, то реализуется операция записи. Таким образом, для реализации чтения данных сигналы CS#, RAS#, WE# и CAS# должны быть переведены с высокого уровня на низкий.

Попутно заметим, что все события памяти (считывание адреса строки и столбца, выдача или запись данных) синхронизированы с тактирующими импульсами, определяющими частоту работы ядра памяти. Если точнее, то все события памяти синхронизированы с положительным фронтом тактирующих импульсов. К примеру, само считывание адреса строки происходит не в момент изменения сигнала RAS# c высокого уровня на низкий, а синхронно с положительным фронтом тактирующего импульса. Аналогичным образом считывание адреса столбца происходит после изменения уровня сигнала CAS# с высокого значения на низкое синхронно с положительным фронтом тактирующего импульса.

В совокупности сигналы CS#, RAS#, CAS# и WE# позволяют сформировать все команды, необходимые для работы с памятью, то есть команды активации строки и чипа памяти (ACTIVE), команду чтения (READ), команду записи (WRITE) и команду деактивации (закрытия) строки (PRECHARGE) (существуют и другие специфические команды, но для понимания сути процесса они не нужны).

Как мы уже отмечали, под таймингами памяти понимают задержки, измеряемые в количествах тактов синхроимпульса, между последовательностью команд или, что равносильно, между изменениями управляющих сигналов CS#, RAS#, CAS# и WE#. Различают несколько типов таймингов памяти.

RAS# to CAS# Delay (tRCD)

Первоначально происходит активация нужной строки памяти (команда ACTIVE), для чего сигнал RAS# переводится в низкий уровень и происходит считывание адреса логического банка памяти и строки в этом банке памяти (сигнал выбора чипа памяти для простоты не рассматривается). Далее следует команда записи (WRITE) или чтения (READ) данных, для чего сигнал CAS# переводится в низкий уровень. При установке CAS# в низкий уровень после прихода положительного фронта тактирующего импульса происходит выборка адреса столбца, наличествующего в данный момент на шине адреса, и открывается доступ к нужному столбцу матрицы памяти. Однако команда чтения или записи не может следовать непосредственно за командой активации — требуется, чтобы между этими командами, то есть между импульсами RAS# и CAS#, оставался некий промежуток времени — RAS-to-CAS Delay (задержка сигнала CAS# относительно сигнала RAS#). Эту задержку, измеряемую в тактах системной шины, принято обозначать tRCD. Учитывая, что импульс RAS# эквивалентен выполнению команды активации строки (ACTIVE), а импульс CAS# — команде READ, под задержкой RAS-to-CAS Delay можно понимать время между командами ACTIVE и READ (рис. 5).

Cкоростная память DDR3
Рис. 5. Определение таймингов памяти на примере чтения в случае одного логического банка

CAS# Latency (tCL)

От команды чтения (записи) данных и до выдачи первого элемента данных на шину (записи данных в ячейку памяти) проходит промежуток времени, который называется CAS Latency. Эта задержка обозначается tCL. В пакетном режиме работы в случае SDR памяти каждый следующий бит данных появляется на шине данных со следующим тактом до тех пор, пока не будет передан весь пакет (см. рис. 5).

Active to Precharge Delay (tRAS)

Еще один тип задержки, называемый Active to Precharge Delay (иногда используется обозначение RAS# Activate to Precharge или RAS# AСT Time), — это минимальный промежуток времени, который должен пройти с момента подачи команды активации строки (RAS#) до команды PRECHARGE (см. рис. 5). То есть фактически это время, в течение которого строка остается активированной. Такая задержка обозначается tRAS и измеряется в тактах системной шины.

RAS# Precharge (tRP)

Завершение цикла обращения к банку памяти осуществляется подачей команды PRECHARGE, приводящей к закрытию строки памяти. От команды PRECHARGE и до поступления новой команды активации уже другой или той же самой строки памяти (в том же логическом банке) должен пройти промежуток времени (tRP), называемый RAS# Precharge (RAS# PRE Time) (см. рис. 5). Фактически RAS Precharge — это промежуток времени, необходимый для регенерации содержимого строки памяти после ее чтения.

Auto Refresh Cycle Time (tRC)

Активация какой-либо строки банка памяти не может быть осуществлена до тех пор, пока предыдущая строка этого банка остается открытой. Минимальный промежуток времени между активацией двух различных строк одного и того же банка называется Auto Refresh Cycle Time (tRC). Как нетрудно заметить, всегда tRC = tRAS+tRP (см. рис. 5).

RAS# to RAS# Delay (tRRD)

RAS# to RAS# Delay (tRRD) — это минимальный промежуток времени между командами активации строк (RAS#) в разных логических банках памяти (рис. 6).

Cкоростная память DDR3
Рис. 6. Определение таймингов памяти на примере чтения в случае двух логических банков

Write recovery time (tWR)

Write recovery time (tWR) — это минимальный промежуток времени между приемом последней порции данных, подлежащих записи, и готовностью строки памяти к ее закрытию с помощью команды PRECHARGE (рис. 7).

Cкоростная память DDR3
Рис. 7. Определение таймингов памяти на примере записи данных

Write to Read Delay (tWTR)

Write to Read Delay (tWTR) определяет минимальный промежуток времени между приемом последней порции данных, подлежащих записи, и командой чтения.

Read to Precharge Time (tRTP)

Read to Precharge Time (tRTP) — это минимальный промежуток времени между подачей команды на чтение до команды Precharge. Нетрудно убедиться, что tRTP=tRAS-tRCD (см. рис. 5).

Command Rate

Еще один тип задержки — это скорость выполнения команд (Command Rate), представляющая собой задержку в тактах системной шины между командой CS# выбора чипа и командой активации строки. Как правило, задержка Command Rate составляет один или два такта (1T или 2T).

Описанные тайминги определяют скоростные характеристики памяти. Наиболее значимыми по их влиянию на производительность являются тайминги tCL, tRCD, tRP и tRAS, иногда называемые основными, — именно они указываются на модулях памяти. Основные тайминги памяти принято записывать в виде последовательности tCL-tRCD-tRP-tRAS. К примеру, на модуле памяти указывается 7-7-7-20 — это означает, что для данного модуля CAS# Latency (tCL) составляет 7 тактов, RAS# to CAS# Delay (tRCD) — 7 тактов, RAS# Precharge (tRP) — 7 тактов и ACTIVE-to-precharge delay (tRAS) — 20 тактов.

Все остальные тайминги памяти, которые называют неосновными, обычно не указываются на модулях памяти. Кроме того, для неосновных таймингов памяти производители могут указывать иные названия. Строго определенной последовательности всех таймингов (основных и неосновных) вообще не существует, а если используется полная запись всех тайминов, нужно четко оговаривать, о каких именно таймингах идет речь. К примеру, в BIOS материнской платы, на которой мы тестировали память, использовалась следующая последовательность записи таймингов: tCL-tRCD-tRP-tRAS-tRRD-tRC-tWR-tWTR-tRTP.

Естественно, для каждого типа памяти значения различных задержек не могут быть произвольными и выбираются из допустимых значений. Кроме того, между разными таймингами должны соблюдаться вполне определенные соотношения. Понятно, например, что должно выполняться соотношение tRAS > tRCD+tCL. Действительно, поскольку tRAS — это время, в течение которого строка остается активированной (время между командой активации строки и командой закрытия строки (PRECHARGE)), оно не может быть меньше, чем время между командой активации строки и появлением данных на шине.

Вообще, в Интернете можно найти немало материалов, посвященных поиску «идеальной формулы» таймингов. Занятие это крайне увлекательное — сродни поиску философского камня. Увы, все эти изыскания абсолютно бесперспективны, поскольку никакой «идеальной формулы» таймингов попросту нет. А если бы она и существовала, то давно была бы реализована в BIOS.

Нужно отметить, что, несмотря на ограничения, которые налагаются на значения таймингов и их соотношения друг с другом, в BIOS материнских плат можно, как правило, устанавливать тайминги памяти независимо друг от друга и выставлять при этом, казалось бы, абсолютно некорректные и даже невозможные значения таймингов. Самое главное, что память при этом будет работать как ни в чем не бывало. Фокус здесь заключается в том, что при установке недопустимого значения одного из таймингов, скорее всего, используются минимально возможные для данного тайминга значения. Однако, каким именно образом это делается — на уровне BIOS или на уровне самих модулей памяти, — тайна, покрытая мраком.

Страницы: Пред. 1 2 3 4 5 След.
Оцените материал:  
(Голосов: 42, Рейтинг: 4.31)

Каждый вечер мы будем присылать вам одно письмо со всеми опубликованными за день материалами. Нет материалов - нет писем, просто и удобно (другие варианты).

Материалы по теме


Комментарии (0)