Вход

Просмотр полной версии : DRAM SDRAM DDR2/3/4/5



bigral
10.08.2018, 18:26
Привет всем. Решил завести тему про динамическую память. Вот смотрю часто в "корках" используется SDRAM, я то думал что это потому что на самих devboard чаще всего стоит SDRAM (ну а стоит он там изза цены, и цена упала, так как новые устройства проектируют уже под DDR). Но что-то не клеится в этих рассуждениях. В проекте MISTer используют спец плату с SDRAM якобы потому что DDR еще медленее эмулирует произвольный доступ чем SDRAM! Звучит как-то странно. Хотелось бы составить маленькую табличку в которой указать на каких частотах SDRAM, DDR, DDR2, DDR3 могут эмулировать DRAM 150ns, 120ns, 100ns, 80ns (по-моему более быстрая память не применялась в ретро компах, ну скажем для реализации "двух-портовости" может потребоваться максимум 40ns).

Saar
10.08.2018, 19:33
А что тут странного? у DDR очень большая латентность. Выборка произвольной ячейки очень долгая. Я сейчас не помню точно, но там порядка 20-25 тактов клока требуется чтобы получить данные из ячейки. Ессно, если выбирать серию последовательных ячеек (burst) то скорость будет высокой.
У SDR SDRAM нужно 7-8 циклов клока. Вот и считай что быстрее.
К тому же для DDR используется аппаратный контроллер, где нет контроля цикла рефреша, который может наступить в любой момент - это еще задержка на те же 20-25 циклов. То есть грубо говоря а общем случае порядка 40-50 циклов может уходить на выбор одной произвольной ячейки.
У SDR рефреш можно распределить самому так чтобы он был незаметным - поэтому те же 7-8 циклов сохраняются.
Если для эмулируемой системы точность циклов не важна, то можно заюзать и DDR.

- - - Добавлено - - -

на SDR можно эмулировать частоту DRAM ровно 1/8 скорости SDRAM. то есть при клоке 128MHz можно спокойно иметь скорость выборки эквивалентно SRAM(!) на 16MHz.

- - - Добавлено - - -

на MiSTer стоит DDR3 800MHz. При этом эмулировать ZX Spectrum с точными таймингами невозможно. С SDR SDRAM можно точно сэмулировать даже если SDRAM на 32MHz работает.

ivagor
10.08.2018, 19:57
на SDR можно эмулировать частоту DRAM ровно 1/8 скорости SDRAM. то есть при клоке 128MHz можно спокойно иметь скорость выборки эквивалентно SRAM(!) на 16MHz.
Не вполне корректно сравнивать в общем случае SDRAM без учета рефреша со SRAM. Нужно оговорить подразумеваемые ограничения.

- - - Добавлено - - -

На рефреш по минимуму нужно менее процента времени (скорее даже полпроцента). Да, это почти ничто, если есть возможность куда-нибудь "спрятать" рефреш.

bigral
10.08.2018, 20:01
К тому же для DDR используется аппаратный контроллер, где нет контроля цикла рефреша, который может наступить в любой момент - это еще задержка на те же 20-25 циклов. То есть грубо говоря а общем случае порядка 40-50 циклов может уходить на выбор одной произвольной ячейки.

Это как я понимаю речь именно про MISTer железо. А можно ли отказаться от использования встроенного железного DDR3 контроллера и заменить его на vhdl реализацию с "равномерным" и "детерменированным" распределением торможения в следствии refresh-a и доступа со стороны arm-a? Ну так чтобы retro core имел гарантированную скорость произвольного доступа.

По сути это привязка всей схемы к clk domain-у ddr контроллера со строго определенными time slots.

А по другому ассинхронному варианту - 800mhz /50 раз задержки = 16mhz... что теоретически говорит о том что "в худшем случае" частота в 16mhz таки достижима.

shurik-ua
10.08.2018, 20:10
есть драм память в которой внутри все мультиплексоры и логика для рефреша и наружу видна как статик рам - pseudo-sram
вот тут можно увидеть их цены и характеристики https://www.arrow.com/en/categories/memory/memory-chips/psram

самая быстрая 36нс - примерно 30Мгц )

ivagor
10.08.2018, 20:34
самая быстрая 36нс - примерно 30Мгц )
Неудачный пример и цифры не те. Для произвольного доступа надо смотреть не tACC=36 ns, а то что строчкой пониже, там 56 ns. И это еще без учета рефреша.

shurik-ua
10.08.2018, 20:41
да там и напряжения не те - применяется в кнопочных мобилках в основном.

omercury
10.08.2018, 23:54
SDRAM, DDR, DDR2, DDR3
Сейчас очень модно отправлять RTFM, но попробую в двух словах буквально на пальцах разобрать технологии.
Кстати, DDRx тоже SDRAM))), то есть (Synchronous)Синхронная с (Dynamic)Переменным (Random)Произвольным (Access)Доступом (Memory)Память.
Смысл переменного доступа в (а)переменной длине считвываемого/записываемого потока данных и (б) переменной последовательности слов данных.
Все процессы в обычной SDRAM (3,3v) синхронизированы с положительным перепадом на тактовом входе.
Память типов DDRx (Double Data Rate) отличается от обычной SDRAM тем, что данные читаются/записываются как по положительному, так и по отрицательному перепаду на тактовом входе. На самом деле у DDR дифференциальный вход такта, но для простоты восприятия лучше ИМХО учитывать прямой вход тактовой, на инверсном такт просто противофазный.
DDR разных видов отличаются между собой количеством считываемых/записываемых слов (в данном случае это не uint_16t, а количество пинов внешней шины данных), что достигается удвоенной/учетверённой/увосьмерённой шириной внутренней шины данных.
В DDR первого поколения по одному адресу читается 2 слова, в DDR-II - 4 слова, а в DDR-III - 8 слов последовательно. И считать их нужно обязательно все... Плюс всё это ещё умножается на длину бюрста. Всё это легко увидеть, рассматривая структурные схемы в документации на соответствующие типы памяти.


на MiSTer стоит DDR3 800MHz
Чистейшей воды маркетинг. ;)
На самом деле память работает на тактовой всего лишь 100-200МГц. 800 - эквивалентная пропускная способность, то есть столько было бы, если бы вся внутренняя шина данных была бы выведена наружу. )))
100МГц*8=800. 8 - отношение ширин внутренней к внешней шин данных.

Ну а дальше всё ещё веселей - латентность (задержка). Обозначается как CL - Cas Latency.
Этим понятием указывается количество циклов тактовой с момента подачи сигналов на пины чипа до того момента, как внутри что-то там переключится.
"Обычная" SDRAM имеет от 1(старые чипы) до 3 тактов CL, в DDR тактов стало намного больше - в DDR от 5 и чем больше цифра после DDR, тем их всё больше и больше. Потому, что сама структура схемы управления массивом памяти становится всё сложнее и сложнее, цепочки управляющих сигналов удлинняются, а задержки в кристалле меньше "почему-то" не становятся... Технологический предел.



А по другому ассинхронному варианту - 800mhz /50 раз задержки = 16mhz... что теоретически говорит о том что "в худшем случае" частота в 16mhz таки достижима.
100MHz/(6+6+6+4,5)=4,44. Не считая рефреша.
Увы...

- - - Добавлено - - -


Не вполне корректно сравнивать в общем случае SDRAM без учета рефреша со SRAM. Нужно оговорить подразумеваемые ограничения.

- - - Добавлено - - -

На рефреш по минимуму нужно менее процента времени (скорее даже полпроцента). Да, это почти ничто, если есть возможность куда-нибудь "спрятать" рефреш.

А это зависит от того, насколько Вы готовы усложнить контроллер SDRAM.
Например во время обратного хода луча (СГИ - 12,5% времени), память отображалке экрана совершенно не нужна.
А ведь есть ещё и КГИ. :)

CodeMaster
11.08.2018, 10:30
Смысл переменного доступа в (а)переменной длине считвываемого/записываемого потока данных

Т.е. сейчас Dynamic означает не то, что раньше (изготовление ячеек на основе конденсаторов и необходимость рефреша)?


На самом деле память работает на тактовой всего лишь 100-200МГц. 800 - эквивалентная пропускная способность, то есть столько было бы, если бы вся внутренняя шина данных была бы выведена наружу. )))

Что значит "столько было бы"? Оно столько и есть (пропускная способность), но да не в произвольном доступе.
И проблема не в соотношении ширин шин, а в том что для одного байта вся эта пропускная способность ничего не даёт и память работает на той же физической частоте, но с всё бОльшими задержками между операциями доступа.

andreil
11.08.2018, 10:34
Сейчас очень модно отправлять RTFM, но попробую в двух словах буквально на пальцах разобрать технологии.
Кстати да, даже SDRAM очень медленная для таких целей и приходится использовать на максимальных частотах. В своём проекте думал использовать набортный чип для организации памяти (и в последующем - и в реале). По факту, для тактовой частоты Z80 в 12МГц память пришлось тактировать на все 130МГц, что бы она всё-всё успевала и не приходилось тормозить ЦП. А это для реала - уже убийство, иметь такую частоту на плате...

- - - Добавлено - - -


Т.е. сейчас Dynamic означает не то, что раньше (изготовление ячеек на основе конденсаторов и необходимость рефреша)?
То же, только между самой памятью как таковой и ПК появилась своя логика, которая находится в каждом чипе и управляет им. Эта логика занята циклами рефреша и собственно организацией доступа к памяти. Вот эта-то логика и требует тактирования и циклов работы.

CodeMaster
11.08.2018, 10:52
То же, только между самой памятью как таковой и ПК появилась своя логика, которая находится в каждом чипе и управляет им.
Я про вот это писание:

(Dynamic)Переменным ....
Смысл переменного доступа в (а)переменной длине считвываемого/записываемого потока данных и (б) переменной последовательности слов данных.



Кстати да, даже SDRAM очень медленная для таких целей и приходится использовать на максимальных частотах.
Для компов с небольшим объёмом ОЗУ его эмулируют внутри FPGA, по мере роста ёмкости / снижения цены думацо все ретрокомпы можно будет сделать в режиме SoC

Saar
11.08.2018, 11:33
Это как я понимаю речь именно про MISTer железо. А можно ли отказаться от использования встроенного железного DDR3 контроллера и заменить его на vhdl реализацию с "равномерным" и "детерменированным" распределением торможения в следствии refresh-a и доступа со стороны arm-a? Ну так чтобы retro core имел гарантированную скорость произвольного доступа.
Теоретически можно отключить встроенный железный контроллер на DE10-nano и использовать софт контроллер на FPGA. ARM в этом случае остается за бортом, ну или в очень ограниченном варианте с OCRAM и доступом к DDR через мосты и FPGA. Но в целом овчинка выделки не стоит. DDR всё равно будет медленнее в рандомной выборке. К тому же потеряются все прелести DDR. Именно благодаря DDR в MiSTer я могу использовать отличный видео скалер. В общем у каждой памяти свои эффективные применения.

- - - Добавлено - - -

DDR можно использовать и как большое хранилище для некоторых данных для тех же retro cores. Например буффер вавов магнитофона. Некоторые консоли имеют неспешный (или преимущественно последовательный) доступ к картриджам что позволяет запихать туда данные из него, как я это сделал для Genesis и TurboGrfx16.

omercury
11.08.2018, 12:56
Т.е. сейчас Dynamic означает не то, что раньше
Нет, Dynamic Acess как означал динамический доступ, так и продолжает его означать, и технология самого массива памяти к этому не имеет никакого отношения, как, впрочем, не имела и раньше.


Что значит "столько было бы"? Оно столько и есть (пропускная способность), но да не в произвольном доступе.
То и значит, что это пропускная способность в потоковом режиме, то бишь максимально возможная. Однако без оговорки на время доступа к данным (ввод команды, адреса, ожидание готовности данных...) и максимальную длину бюрста 8 адресов. К слову сказать у обычной SDRAM бюрст может быть до размера страницы, то есть 128/256 слов.



По факту, для тактовой частоты Z80 в 12МГц память пришлось тактировать на все 130МГц, что бы она всё-всё успевала
12*8(9)=96(108)МГц. 130/12=10,8333 Сбоит небось из-за несинхронности?
То же время доступа можно было получить при CL=2(6 тактов на операцию) на более низкой частоте. У Влада на ReVerSe есть корки для CL=2 и CL=3, но есть одна тонкость - тактовая должна быть строго кратна частоте доступа.

- - - Добавлено - - -


Для компов с небольшим объёмом ОЗУ его эмулируют внутри FPGA,
В DE-10 Nano блочной памяти >600 килобайт.
"хватит всем!" (с)


по мере роста ёмкости / снижения цены думацо все ретрокомпы можно будет сделать в режиме SoC
Ну если STM32F103 на своих 72МГц справляетцо, то почему бы не справится уже сейчас двухъядерному А9 на своих 800МГц?
Только одна загвоздка - #этонеспектрум. ;)

andreil
11.08.2018, 13:01
12*8(9)=96(108)МГц. 130/12=10,8333 Сбоит небось из-за несинхронности?
То же время доступа можно было получить при CL=2(6 тактов на операцию) на более низкой частоте. У Влада на ReVerSe есть корки для CL=2 и CL=3, но есть одна тонкость - тактовая должна быть строго кратна частоте доступа.
Я там в ходе экспериментов сохратил задержки чутка, выпилив 1 такт ожидания. Ну и частоту точно уже не помню - может и на 100 запускал. Процессор тактируется 12,5МГц, если точнее - в качестве исходной взял 25МГц, используется как пиксельклок.

Saar
11.08.2018, 13:38
Моя корка ZX на MiSTer имеет клок 112MHz на SDRAM. Частоты турбо вплоть до 14MHz работают на полной скорости. 28MHz и 56MHz имеют циклы ожидания, но даже на 56MHz эффективность на уровне 85-90%.

CodeMaster
11.08.2018, 14:00
Нет, Dynamic Acess как означал динамический доступ, так и продолжает его означать
Если быть точным, то "dynamic random access", т.е. доступ произвольный, а не динамический. Интересно, что тогда в твоём понимании означает "static" в SRAM?


и технология самого массива памяти к этому не имеет никакого отношения, как, впрочем, не имела и раньше.
Что-то не все так считают:

Каждая ячейка такой памяти имеет свойство разряжаться (из-за токов утечки и пр.), поэтому их постоянно надо подзаряжать — отсюда название «динамическая» (динамически подзаряжать).


В DE-10 Nano блочной памяти >600 килобайт.
"хватит всем!" (с)

Пока на Amiga A600 и кое чего ещё не хватает. Думацо в районе 8 метров уже должно хватить всем ;-)

omercury
11.08.2018, 18:43
Если быть точным, то "dynamic random access", т.е. доступ произвольный
За произвольный отвечает слово Random.


Интересно, что тогда в твоём понимании означает "static" в SRAM?
Ок, на пальцАх не получилось(((

Таки да, первая буква в DRAM/SRAM означает именно технологию энергозависимой памяти (бинго!), т.е. ячейки статической позволяет хранить данные сколь угодно долго без внешнего вмешательства, в отличие от динамической. Тут ты прав.
А вот за первой буквой аббревиатуры SDRAM/SSRAM (синхронная) кроется кроме синхронизации с клоком ещё очень много всего интересного. И про это интересное я уже на пальцах в двух словах рассказывать ничего не буду, а отправлю таки Read This Fucking Manual.

Алаверды. ;)

PavelZX
25.09.2020, 20:33
Пытаюсь сообразить, как можно сделать на девборде со вторым циклоном RGBI-VGA скандаблер используя набортную память SDRAM, 140 МГц она должна потянуть, 14 мГц вывести с девборды на комп, а не наоборот. К прошивке скандаблера разработанной и проверенной сообществом добавить контроллер SDRAM, вместо SRAM памяти. Писать строки изображения в пару длинных регистров (встроенная память у него 119 кБит). Один записывает вход с компа, а второй скидывает в ОЗУ, потом меняются. Может получится, как вы думаете?

Место ещё останется на контролеры клавы, джойстиков и чего-нибудь ещё...