реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вопрос по регенерации в SDRAM
Geymur
сообщение Jan 13 2014, 12:29
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008



Здравствуйте,
Так ли необходимо проводить циклы автоматической регенерации строк SDRAM каждые 64мс если система гарантирует корректное обращение к каждой строке (по записи или чтению) за меньшее время ? Помнится, для FP DRAM такой вопрос не стоял. Достаточно было простого перебора строк (RoR). В документации на микросхему предписывается обязательное проведение циклов регенерации.

Поясню ситуацию. Делаю кольцевой буфер на SDRAM от Micron. Эти приборы поддерживают независимую работу всех 4 банков (не закрывая банк можно активировать другие).
Частота следования данных - 100 МГц, частота SDRAM - 100 МГц. При условии чередования банков и длине burst 4, можно обеспечить запись информации в каждом такте. Причем, каждый burst будет направлен в следующую строку.

Все замечательно, но циклы REFRESH портят всю картину. Придется увеличивать частоту SDRAM (задействовать еще 1 PLL), городить FIFO, да и управляющий автомат усложнится в разы.

Спасибо заранее.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jan 13 2014, 15:25
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Если Вы гарантировано будете рефрешить строки своими обращениями в требуемое время то
специально выполнять цикл REFRESH в этом случае не нужно.
Однако Вы должны выполнить полный цикл обращения ко всем строкам - то есть открыть ничего_не_делать|записать|прочитать и закрыть поскольку рефреш происходить при закрытии строки.

Успехов! Rob.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 13 2014, 16:11
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



REFRESH = ACT(ba, rowa) + PRECHARGE(ba). если период обращения к строке меньше 64мс и строки перебираются все, то забить как и советовал RobFPGA sm.gif


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 13 2014, 16:46
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(RobFPGA @ Jan 13 2014, 19:25) *
поскольку рефреш происходить при закрытии строки.


А это верно для всех типов SDRAM? DDR2 например? Откуда информация (вроде в JESD такого нет)?
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 14 2014, 02:32
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Jan 13 2014, 10:46) *
А это верно для всех типов SDRAM? DDR2 например? Откуда информация (вроде в JESD такого нет)?

Вопро тоже интересен, всегда считал что чтение из памяти разрушающее (разряжаются емкости затворов транзиторов) и их перезаряжают как раз при акивации банка.


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 14 2014, 08:13
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(des00 @ Jan 14 2014, 06:32) *
Вопро тоже интересен, всегда считал что чтение из памяти разрушающее (разряжаются емкости затворов транзиторов) и их перезаряжают как раз при акивации банка.


Если посмотреть на электрическую схему ячейки классической DRAM, их перезаряжают именно при чтении - считывание совмещается с последующей записью того, что считалось. PRECHARGE по электрической схеме классической DRAM - заряжает емкости всех линии выборки строк в состояние "лог.1" - получается состояние "ни одна не выбрана", активация - разряжает в "0" емкость нужной линии выборки строк из предварительно заряженных по precharge, но ни чтение, ни запись (и вообще линии выборки столбцов) не активируются.

так что я еще поверю, что регенерация не нужна, если в пределах этих 64 мс (tREFI) происходит чтение ВСЕХ ЯЧЕЕК, или запись ВСЕХ ЯЧЕЕК, но вот в то, что precharge или активация регенерирует, я не верю.
Go to the top of the page
 
+Quote Post
Geymur
сообщение Jan 15 2014, 07:51
Сообщение #7





Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008



Спасибо за обнадеживающие ответы. Буду пробовать в железе. По итогам отпишусь.

Смущают, конечно, слова "must refresh every 64 ms" в даташите.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 15 2014, 17:28
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



помню когда-то давно разбирался с ДДР контроллером тексавского ДСПешника, сейчас дословно не помню, но помниться что там было описаны пропуски рефрешей каких то областей (колонок рядов) в случае обращения в них, только вот не помню на чтение или на запись. То есть тот контроллер рефрешил весь ддр только в случае отсутствия обращений заданное время, а так рефрешил только выборочно области.
Надеюсь я не наврал с воспоминаниямиsm.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 16 2014, 05:03
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Jan 14 2014, 03:13) *
Если посмотреть на электрическую схему ячейки классической DRAM, их перезаряжают именно при чтении - считывание совмещается с последующей записью того, что считалось. PRECHARGE по электрической схеме классической DRAM - заряжает емкости всех линии выборки строк в состояние "лог.1" - получается состояние "ни одна не выбрана", активация - разряжает в "0" емкость нужной линии выборки строк из предварительно заряженных по precharge, но ни чтение, ни запись (и вообще линии выборки столбцов) не активируются.

так что я еще поверю, что регенерация не нужна, если в пределах этих 64 мс (tREFI) происходит чтение ВСЕХ ЯЧЕЕК, или запись ВСЕХ ЯЧЕЕК, но вот в то, что precharge или активация регенерирует, я не верю.

Может быть у современной памяти другая конструкция. Что касается SDR SDRAM, у меня сложилось мнение что регенерируется сразу вся строка и при активации банка вся эта строка читается в специальный буфер (Read Data Latches) и регенерация происходит именно при активации банка. Что интересно длительность периода refresh подозрительно совпадает с длительностью последовательности команд act + pre.


--------------------
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 16 2014, 07:24
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Оффтопик :
А какой вообще может быть глобальный смысл в экономии на циклах рефреша? Если мне не изменяет память, то эти циклы жрут меньше
1% от полной скорострельности памяти. Сама машина по вставке этих циклов - не сильно сложная.
За что в таком случае бьёмся-то?
Go to the top of the page
 
+Quote Post
Geymur
сообщение Jan 16 2014, 07:31
Сообщение #11





Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008



Память 100MHz, поток - 100MHz. Нужно писать каждый такт. Рефреш съест 4 такта, поток прервется. За то и бьемся. Чтоб пропуска не было нужно вводить FIFO и поднимать частоту памяти.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 16 2014, 09:45
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Geymur @ Jan 16 2014, 14:31) *
Память 100MHz, поток - 100MHz. Нужно писать каждый такт. Рефреш съест 4 такта, поток прервется. За то и бьемся. Чтоб пропуска не было нужно вводить FIFO и поднимать частоту памяти.

Не получится без фифо. Там ещё других накладных уйма.И рефреш тут - не самое страшное зло.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jan 16 2014, 10:19
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(Bad0512 @ Jan 16 2014, 11:45) *
Не получится без фифо. Там ещё других накладных уйма.И рефреш тут - не самое страшное зло.


Получится - я еще в 1999 году что-то похожее делал на max128. Типа цифрового осциллографа - быстрая потоковая запись оцифрованных данных в SDRAM, а затем медленное вычитывание через LPT порт. Открываем строку в банке (с autoprecharge) - пишем burst 4-8 слов - пока пишем открываем следующую строку в другом банке - закончили писать burst (строка закрылась автоматом) начали писать burst в следующий открытый банк ... и так конвейером по всем банкам/строкам. Ну а при медленном чтении естественно делался refresh.

2 SM, des00
Увы может и был неправ, давно это было вот и подзабыл - но то что без закрытия строки не обойтись помню точно.

Успехов! Rob.

Go to the top of the page
 
+Quote Post
Geymur
сообщение Jan 16 2014, 11:29
Сообщение #14





Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008



Цитата(RobFPGA @ Jan 16 2014, 14:19) *
Приветствую!



Получится - я еще в 1999 году что-то похожее делал на max128. Типа цифрового осциллографа - быстрая потоковая запись оцифрованных данных в SDRAM, а затем медленное вычитывание через LPT порт. Открываем строку в банке (с autoprecharge) - пишем burst 4-8 слов - пока пишем открываем следующую строку в другом банке - закончили писать burst (строка закрылась автоматом) начали писать burst в следующий открытый банк ... и так конвейером по всем банкам/строкам. Ну а при медленном чтении естественно делался refresh.

2 SM, des00
Увы может и был неправ, давно это было вот и подзабыл - но то что без закрытия строки не обойтись помню точно.

Успехов! Rob.


Спасибо, Rob на добром слове!
Думаю - должно получиться. Память поддерживает работу со всеми 4 банками одновременно. Пока пишется burst в первый банк, активируется второй. Первый закрывается и ждет Twr - во втором начинается активация. И т.д. Причем, строка+банк - в младших разрядах. Вначале перебираются банки и строки, потом столбцы. Следовательно, гарантировать перебор строк можно.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 16 2014, 11:52
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(RobFPGA @ Jan 16 2014, 14:19) *
без закрытия строки не обойтись помню точно.


Это само собой, безоговорочно, если открыл строку - закрой за собой. Ее предзарядить надо, чтобы потом открыть заново. Даже время есть - по истечение которого строка обязательно должна быть предзаряжена (tRAS имеет и min, и max)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 17:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.02771 секунд с 7
ELECTRONIX ©2004-2016