SDRAM

Postby KOE » 06 Jun 2017, 18:07

Есть вопрос по сабжу. Имею желание прикрутить сабж к пентагону 2.666. Имею микросхемы HY57V641620FTP-H. Не будем вдаваться в схемотехнические детали прикручивания, вопрос теоретический: производится ли в SDRAM регенерация всей строки при чтении одиночного слова из нее (как в 565ру5 и им подобных). И второй вопрос, производится ли вообще регенерация строки при чтении слова из неё? Покурил доки на SDRAM и у меня сложилось впечатление, что её необходимо принудительно регенерировать специальным циклом авторегенерации (когда cas и ras даются одновременно) 4096 раз за 64 миллисекунды. Т.е. старая спектрумовская фича, когда адреса видеоконтроллера разбрасываются по столбцам, чтобы можно было обходиться без специальных циклов регенерации и регенерировать память выборками данных видеоконтроллера не прокатывает?
Вообще, как-то не очень шустро получается. На чтение/запись слова по произвольному адресу в произвольный банк требуется 8 тактов клока,
что заметно проигрывает по скорости по сравнению со sram.
Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
User avatar
KOE
 
Posts: 4667
Joined: 15 Apr 2007, 13:06
Group: Registered users

Postby lvd » 07 Jun 2017, 08:17

Чото посмотрел датый шыт - нихера не описано там нормально. Но поскольку все сдрамки стандартны и варьируются только такие вещи как битность, ширина разных адресов (row column bank) и тайминги, то для раскуривания можно смело читать другие доки, например issi http://www.issi.com/WW/pdf/42-45S16400J.pdf или micron https://www.micron.com/~/media/document ... at_sdr.pdf
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7229
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby lvd » 07 Jun 2017, 08:30

В сдрамках команда 'active' -- аналог опускания /ras в 0 в ру5, 'precharge' -- аналог поднимания /ras. Когда даешь active или опускаешь ras, выбранный ряд присоединяется к усилителям чтения, слабенький зарядик кондеров переводит предварительно 'пречаржнутые' усилители в настоящий 0 или 1, тем самым ряд регенерируется и остается в таком состоянии пока не поднимешь рас или не дашь команду precharge. В это время ряд можно читать как угодно и писать (или ничего не делать -- пофигу, аналог дерготни касом под нулевым расом). После поднятия раса или пречарджа ряд отсоединяется а усилители приводятся в готовность для следующего чтения, что собственно и называется пречаржем.

Команда 'auto refresh' -- аналог cbr рефреша в рушках (правда не в ру5) и работает точно так же -- внутренний счетчик и автоматическое открытие-закрытие рядов. Перед ней надо вручную закрыть ряды (сделать пречарж) во всех банках. Но если гарантируешь, что переберешь все ряды во всех банках за указанное в шыте время регенерации -- то она не нужна. Иначе делай авторефреш по таймаутам или когда можно (на бордюре например).
Last edited by lvd on 07 Jun 2017, 08:38, edited 1 time in total.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7229
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby lvd » 07 Jun 2017, 08:34

Попробуй выбрать более быстрые по наносекундам мсх и даже, возможно, понизить частоту (!), чтобы клоки точнее соответствовали требуемым задержкам мсх в нанах. Но конечно все равно рандомный доступ на сдрамах -- боль, зато берстами читать одно удовольствие, можно непрерывно прочитать всю мсх, пока один банк читается берстом, другие можно открывать-закрывать и подготавливать к чтению.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7229
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby KOE » 07 Jun 2017, 09:14

Ну я и курил другую доку, микроновскую, там подробно описано. Мне надо было удостовериться, что precharge по функционалу аналогичен рефрешу. В доках этот вопрос описан скользкой и допускает двоякую трактовку. Т.е. правильно ли я понял, что если в цикле чтения я выдерживают тайминги на задержку cas после ras, потом выдерживаю задержку на precharge, то после такого цикла чтения у меня вся строка окажется регенерированной и в ближайшие 64 мс про неё можно забыть?
Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
User avatar
KOE
 
Posts: 4667
Joined: 15 Apr 2007, 13:06
Group: Registered users

Postby KOE » 07 Jun 2017, 09:24

Кстати, на спектруме чтение берстом практически неприменимо, т.к. чередуются циклы видео-рам/цпу рам, так только рандомное чтение. Поэтому преимущество клока с частотой, например, 133 мгц, теряется. 8 тактов это все равно дольше, чем даже не самая шустрая срам с временем выборки 10 нс, а уже и на 5 нс имеются. Думаю в дальнейшем использовать параллельно срам с сдрам. Сраму оставить 1-2 мб и использовать его как быстрый кэш, где проц на 28 МГц без вайтов работает. А если лезть в сдрам, то уже будет с вайтами, зато много и дёшево.
Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
User avatar
KOE
 
Posts: 4667
Joined: 15 Apr 2007, 13:06
Group: Registered users

Postby lvd » 07 Jun 2017, 09:46

KOE wrote:Т.е. правильно ли я понял, что если в цикле чтения я выдерживают тайминги на задержку cas после ras, потом выдерживаю задержку на precharge, то после такого цикла чтения у меня вся строка окажется регенерированной и в ближайшие 64 мс про неё можно забыть?

Типа того, да. Только этих строк у тебя 4096 штук в одном банке, а банков тоже 4, итого 16384 ручных открытий и закрытий надо сделать. Очевидно что открытие-закрытие одного банка можно делать например во время cas latency или чтения/записи другого, когда шина команд свободна.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7229
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby KOE » 08 Jun 2017, 16:46

Начал неспешно говнокод писать, посмотрим, что получится. Думаю сделать только циклы чтения/записи слова из рандомного адреса, без autoprecharge, но последовательно с каждым циклом будет идти команда precharge (не auto). Мануальный precharge допускается одновременно для всех 4 банков, а автоматический -- только для текущего. По времени и то, и то вместе с чтением/записью по рандомному адресу требует 8 тактов клока (в моем случае 114 МГц). На 28 МГц проц точно будет вайтиться, на других частотах - посмотрим, какая разблядовка тактов получится.
Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
User avatar
KOE
 
Posts: 4667
Joined: 15 Apr 2007, 13:06
Group: Registered users

Postby lvd » 09 Jun 2017, 11:10

Фотго девайса есть? :)
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7229
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby KOE » 13 Jun 2017, 06:58

IMG_20170529_165843.jpg
Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
User avatar
KOE
 
Posts: 4667
Joined: 15 Apr 2007, 13:06
Group: Registered users

Next

Return to Hardware

Who is online

Users browsing this forum: No registered users and 0 guests

cron