Перейти к содержанию
    

Выбор памяти для быстрого случайного доступа

Добрый день.

Возникла задача: нужно хранить в памяти довольно большую таблицу (около 20 МБайт) и чтение из нее должно производиться по случайным адресам целым словом (32 бита)... Количество чтений в секунду не менее 5120000 (т.е. читать нужно такое количество раз в секунду по случайным адресам). Система проектируется на ПЛИС Zynq, прогнали тест на готовом модуле с DDR, получили около 4000000 чтений, при этом проц должен будет выполнять функции управления, обмена и т.д. Встал вопрос какую память выбрать вместо DDR.

Поделитесь опытом, пожалуйста...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На EDN была статья Design with QDR-IV for high-performance networking systems, в которой сравнивали разные типы памяти:

memory_performance_RTR.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На EDN была статья Design with QDR-IV for high-performance networking systems, в которой сравнивали разные типы памяти:

memory_performance_RTR.jpg

 

Спасибо за наводку, буду изучать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Встал вопрос какую память выбрать вместо DDR.

Поделитесь опытом, пожалуйста...

1. Взять 2 DDR продублировать массивы и иметь счастье :)

2. Взять флешку параллельную. Она без проблем потянет нужное количество запросов секунду. Так как требований к записи никаких должна подойти.

3. Взять жменьку обычных статический озушек.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Взять 2 DDR продублировать массивы и иметь счастье :)

2. Взять флешку параллельную. Она без проблем потянет нужное количество запросов секунду. Так как требований к записи никаких должна подойти.

3. Взять жменьку обычных статический озушек.

Если можно, про п.2 доскажите подробнее, нашел флешки только со временем доступа около 70 нс, что многовато...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если можно, про п.2 доскажите подробнее, нашел флешки только со временем доступа около 70 нс, что многовато...
В смысле маловато? 1/70нс > 14 МГц. Вам нужно если я правильно посчитал нули чуть быстрее 5 МГц. Соответственно можно ставить флешку даже на 16 бит а не на 32. Или в чём вопрос?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот и приходим к PSRAM, она быстрее флеша, стоимость адекватная. Из минусов - ток потребления.

QDR для этих вещей избыточна, она больше для телекомуникаций итд.

Из флеша можно еще посмотреть NOR - у нее рандомное чтение быстрее чем у обычной NAND.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В том виде как это написано в документе да, это пакетное чтение.

т.е. время от принятой команды до выставления данных, соответственно для рандома - опять адрес, команда - выставление данных.

Для NOR – Random access times as fast as 55 ns более менее типичное значение.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Добрый день.

Возникла задача: нужно хранить в памяти довольно большую таблицу (около 20 МБайт) и чтение из нее должно производиться по случайным адресам целым словом (32 бита)... Количество чтений в секунду не менее 5120000 (т.е. читать нужно такое количество раз в секунду по случайным адресам). Система проектируется на ПЛИС Zynq, прогнали тест на готовом модуле с DDR, получили около 4000000 чтений, при этом проц должен будет выполнять функции управления, обмена и т.д. Встал вопрос какую память выбрать вместо DDR.

Поделитесь опытом, пожалуйста...

 

Вы бы уточнили - кто будет читать - проц или свой аппаратный блок ?

Если проц - то тут может дело не в памяти а в самой шине или алгоритме чтения - попробуйте для начала сравнить скорость чтения по тому же агоритму из внутреннего блока RAM что в Zynq присутствует.

 

Удачи! Rob.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу чтения как раз и стоит вопрос - вешать это на проц или писать свою корку... Что такое "алгоритм чтения" не совсем понял, чтение выполняется по случайным адресам из заданного диапазона (пока в ДДР это обычный большой статический массив интов...) и перекладывание прочитанного слова в BRAM в PL по адресу, который инкрементируется. Адрес чтения из большого массива берется из BRAM. Это получается что-то вроде гигантской LUT... Если Вы имеете в виду непосредственный обмен с памятью, то туда не лажу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...