Продолжим разговор про динамическую память. Забегая несколько вперед….

Времени всегда не хватает, потому я еще не разобрался со многими аспектами SDRAM (в том числе и всех DDR) и просто проведу общий обзор SDRAM углубляясь, там где я чего-то понял или думаю(ошибаясь при этом) что понял. Если такие ошибки будут мной обнаружены в последствии я заострю на них ваше внимание.
И так…все что можно, из обычной динамической памяти было выжато, примерно к появлению Pentium MMX. Последняя память такого рода была EDO (Extended data output) — память с расширенным выходом данных. Суть заключалась (как я понимаю на данный момент…как оно есть на самом деле я уточню в течении пары недель и если что поправлюсь) в том, что у этой памяти, при чтении, дольше сохранялся заряд на адресующих элементах и можно было получить больший пакет данных за раз. Основной проблемой старой динамической памяти было то, что процессор вынужден был ждать пока память отдаст ему данные. В следствии чего была предложена концепция синхронной динамической памяти, т.е. такой, в которой все происходит не по временным задержкам, а по задержкам, в количестве тактов задающего генератора, работающего синхронно со всей системой. Таким образом, в синхронной динамической памяти (SDRAM) появился сигнал CLK (clock). И вот теперь интересный момент. (Я пока абстрагируюсь от таких вещей как быстродействие мостов, шины процессора и т.п.) У меня имеется мат. плата ASUS P5Q, в ней, как во многих асусовский платах есть возможность в широком пределе менять настройки памяти, процессора и т.п.
Кроме того, она в биосе показывает все настройки из SM-Bus микросхемы (обычно 24С02) модуля памяти (ну или взятые максимумы. если стоят несколько разных модулей). И вот что я подметил:

Record0 Record1 Record2
CAS Latency 3.0 4.0 5.0
RAS to CAS delay 3 4 5
RAS Precharge 3 4 5
tRAS 9 12 18
tRC 12 16 23

Для чего в этой таблице дается tRC не совсем понятно, это полное время цикла чтения, и оно равно RAS Precharge + tRAS. Но суть не в этом.
Если учесть что эти записи соответствуют 200, 266 и 400 МГц, то видно что количество тактов, на больших частотах пропорционально больше.
И в принципе при произвольной выборке (когда адреса выбираются случайно) время работы этой памяти на любой частоте будет совершенно одинаковым.
Но..тут есть два момента:
1-й. Если производится чтение нескольких ячеек подряд, то время отдачи их(после того как адрес выбран) для DDR(1,2,3) составляет пол такта. (т.к. отдаются данные по восходящему и спадающему фронтам сигнала CLK) Т.е. если мы читаем 4-е ячейки подряд. То имеем некий выигрыш. Время от запроса процессора до получения первой выборки данных равно сумме RAS to CAS delay и CAS Latency (даю не в порядке следования параметров, а в порядке действия этих задержек в цикле обращения. По достижении этого времени, на выводах шины данных памяти будет значение первой ячейки и следующие полтакта защелкнут их и статический буфер и передадут процессору. И дальше мы можем получить еще 3 выборки с шагом в полтакта.
Итого:
200Мгц : 1-я выборка через 6 тактов, 4-е выборки за 8 тактов. Но каждые 4-е выборки возможны только после еще 4-х тактов.
266Мгц : 1-я выборка через 8, 4-е выборки за 10 тактов. И еще 6 тактов на завершение.
400Мгц : 1-я через 10, 4-е за 12 тактов и еще 11 тактов.
То есть тоже самое но во времени:
200Мгц : 1-я через 30 ns, 4-е за 40 ns, и еще 20 ns на завершение цикла
266Мгц : 1-я через 30,075 ns, 4-е за 37,6 ns и еще 22,556 ns
400Mгц : 1-я через 25 ns, 4-е за 30 ns и еще 27,5 тактов.
Т.е. в принципе, чем быстрее память, тем меньше процессору ждать второй выборки. И т.к. остальные по-идее защелкиваются в статический буфер моста и могут быть получены процессором за 2 такта его FSB (DDR и по-идее 1 такт QDR но тут я божиться не стану), тем меньше ждет процессор и быстрее работает вся система.
Кстати надо еще учитывать, что длина очереди выборок ( burst length ) может быть и не 4 а больше. И некоторые BIOS позволяют ее менять (если это позволяет память)
2-й же момент заключается в том что время таймингов измеряется на самом деле не в тактах, а в нано и пико секундах. А в тактах она только выражается, так как память синхронная и менеджеру памяти нужны четкие длины циклов для работы.
Из произведенных нами выше вычислений видно, что для выбора первой ячейки нам достаточно 25 наносекунд, т.е. CAS Latency + RAS to CAS Delay для 200 и 266 МГц завышен. Значит его можно смело менять на 7 для 266 и 5 для 200 Мгц. Т.е. например по-пол такта с каждого параметра. Правда за частую в половинках можно выставлять, только CAS Latency, ну чтож с паршивой овцы хоть шерсти клок. Пол такта это 2,5 и 1,88 наносекунды выигрыша соответственно (в том числе и с полного цикла, т.к. время зарядки уменьшится).
P.S.
Все вышесказанное это компиляция моего понимания DDR, беглого осмотра отличий его с DDR2 и наблюдений сделанных на своем компе оснащенном DDR2.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *