|
|
  |
Вопрос по работе с SDRAM |
|
|
|
Mar 12 2005, 15:11
|

Местный
  
Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002

|
В общем случае, не позволит. Потому как любая динамическая память требует 1. Активация банка 2. Пауза 3. Команда 4. если запись, то паузы нет, если чтение, то пауза 5. пауза, пока последний записанный запишется. 6. Закрытие банка. (precharge)
кроме этого, обязательно каждые 7 микросекунд надо давать команду REFRESH, после чего некоторое время вообще ничего делать нельзя.
Конечно, можно использовать AUTOPRECHARGE, но он не работает на FULL PAGE MODE, а именно его надо использовать, если хочется максимально "выжать" производительность.
Но! МОжно использовать ширину шины данных 8, 16, 32 бита, также 64. Это позволит достичь заданной производительности. Но с увеличением ширины данных появляются другие проблемы - где брать клоки для ИС памяти и тд. Так что пути есть, но какой выбрать решить можете только вы сами.
--------------------
Умею молчать на 37 языках...
|
|
|
|
|
Mar 12 2005, 16:16
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(Gorby @ Mar 12 2005, 09:11) В общем случае, не позволит. В общем случае, конечно, позволит. Во первых, все современые плисины, наверное, имеют встроенную память которую можно использовать для блочной буферизации. И при таком подходе у меня в камере на одной DDR SDRAM микросхеме (16M x 16) при тактовой частоте 125МГц получается в среднем около 470МБ/сек (из 500 "теоретических) - но там очень слоажная организация данных и контроллер облуживает 8 конкурентных каналов доступа одновременно. С другой стороны, для такой простой задачи, как запись одного канала последовательных данных можно даже обойтись и без буфера - достаточно использовать банки с перекрытием.
|
|
|
|
|
Mar 12 2005, 16:23
|
Частый гость
 
Группа: Свой
Сообщений: 101
Регистрация: 4-09-04
Пользователь №: 603

|
Цитата(Andrey Filippov @ Mar 12 2005, 19:16) С другой стороны, для такой простой задачи, как запись одного канала последовательных данных можно даже обойтись и без буфера - достаточно использовать банки с перекрытием. Очень интересно! И как можно обойтись без буфера? И нельзя ли пояснить, что значит "использовать банки с перекрытием"?
|
|
|
|
|
Mar 12 2005, 17:25
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(NickS @ Mar 12 2005, 10:23) Очень интересно! И как можно обойтись без буфера? И нельзя ли пояснить, что значит "использовать банки с перекрытием"? Микросхемы SDRAM имеют 4 банка, и пока идет обмен с одним из них - 3 других могут отрабатывать активацию и закрытие. В DDR SDRAM команды поступают со скоростью тактов, хотя обмен данными производится вдвое быстрее. Так вот при чтении, например, не нужно подавать команду чтения в каждом такте - при исвользовании burst=8, при непрерывном чтении такая команда нужна только каждый 4-й такт, данные будут поступать все равно. Так вот "дырки" по три такта можно использовать для подготовки других банков, чтобы поток данных шел непрерывно. На приложенной картинке показано, как у меня используются банки при чтении и записи токенов в процессе видеокомпрессии - там последовательность записи и чтения почти "ортогональна" - данные в память идут внутри по номерам коэффициентов преобразования DCT, снаружи - по блокам в макроблоке и совсем снаружи - по макроблокам, а при чтении - все наоборот - номер DCT - это самый внешний цикл. В этом примере "дырок" при записи нет, т.к. данные идут не подряд, а в чтении есть и использованы - там адреса доступа последовательны, В этом варианте используется блочный доступ с буфером, так как необходимо обеспечить квази-одновременную работу многих каналов. Для одного канала можно аналогично сделать полностью непрерывную последовательность.
Прикрепленные файлы
fig_5.pdf ( 68.08 килобайт )
Кол-во скачиваний: 247
|
|
|
|
|
Mar 12 2005, 18:12
|
Знающий
   
Группа: Свой
Сообщений: 513
Регистрация: 1-02-05
Из: Харьков, СССР
Пользователь №: 2 334

|
И как можно обойтись без буфера? Можно, но лучше не надо. Головной боли будет меньше. И нельзя ли пояснить, что значит "использовать банки с перекрытием"? Есть такое понятие - интерлив, или чередование по-русски. Смысл в том, что пишутся данные в пакетном режиме в одну микросхему на полную длину строки. Замечу только, что надо выбирать СДРАМ умеющий записывать в пакете полную строку. У самсунгов и хайниксов в этом плане всё в порядке. Другая инициализируется точно вовремя, для того чтобы запись в первую ячейку второй микросхемы была в следующем такте после последней записи в первую микросхему. Вообще говоря обычно СДРАМ имеет четырёхбанковую архитектуру. Если вам достаточно общей длины пакета непрерывной записи в 2000 отсчетов (четыре банка на 512 слов ), то можно обойтись одной микросхемой. 512 слов - это длина строки для 128 и более мегабитных чипов 16-ти битной разрядности. Если чип 8-ми битной организации - строка вдвое длинней. Хотя про это пишут в даташитах  . Банки тоже можно чередовать для непрерывной записи, но когда запишите последний, то увы неизбежен пречардж, рефреш и ждать время для новой инициализации процесса записи, если читать не надо никогда вообще.
|
|
|
|
|
Mar 12 2005, 18:35
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(prototype @ Mar 12 2005, 12:12) Замечу только, что надо выбирать СДРАМ умеющий записывать в пакете полную строку. Совершенно не обязательно, burst=8 (4 такта у DDR SDRAM) вполне хватает для организации перекрытия (см картинку выше). Цитата(prototype @ Mar 12 2005, 12:12) Банки тоже можно чередовать для непрерывной записи, но когда запишите последний, то увы неизбежен пречардж, рефреш и ждать время для новой инициализации процесса записи, если читать не надо никогда вообще. Почему? После банка 3, например, может идти опять банк 0, а precharge и activate вполне "прячутся" во время обмена с активным банком.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|