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

 
 
 
Reply to this topicStart new topic
> Быстрое чтение из DDR3 по AXI4.
count_enable
сообщение Jan 26 2014, 21:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Написал IP AXI4-lite Master, читает из DDR3 по одному 32-бит слову. Память используется как таблица роутинга, нет смысла читать ее burstами. Между ARVALID и RVALID (запрос адреса и приход данных) проходит 17 клоков, частота 100 МГц. Память однопортовая, на шине еще сидит проц, но он остановлен. Возможно ли как-то ускорить чтение? Надо остаться на шине AXI4, т.к. память используется как буфер для ПДП, плюс таблица роутинга (которую читают) записывается и обновляется процессором microblaze. Камень XC6SLX45.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 27 2014, 08:02
Сообщение #2


Знающий
****

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



Цитата(count_enable @ Jan 27 2014, 04:43) *
Написал IP AXI4-lite Master, читает из DDR3 по одному 32-бит слову. Память используется как таблица роутинга, нет смысла читать ее burstами. Между ARVALID и RVALID (запрос адреса и приход данных) проходит 17 клоков, частота 100 МГц. Память однопортовая, на шине еще сидит проц, но он остановлен. Возможно ли как-то ускорить чтение? Надо остаться на шине AXI4, т.к. память используется как буфер для ПДП, плюс таблица роутинга (которую читают) записывается и обновляется процессором microblaze. Камень XC6SLX45.

DDR не предназначена для такого использования. Она как раз заточена на большие последовательные посылки. Варианта два - поместить вашу табличку в блочную память (если размер позволяет), либо пользовать внешнюю SRAM для этих целей.

З Ы А вообще довольно странно, что вопрос этот возник у вас сейчас, когда всё уже почти реализовано, а не на этапе изначального проектирования системы.
Go to the top of the page
 
+Quote Post
count_enable
сообщение Jan 27 2014, 08:28
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Проблема возникла когда таблицу перенесли из BRAM в DDR3 - появилась потребность в увеличении оной. В блочной, понятно оно летает.

Извините за нубский вопрос, не работал со SRAM "на скорость". Какие там обычные скорости чтения?
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 27 2014, 09:21
Сообщение #4


Знающий
****

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



Цитата(count_enable @ Jan 27 2014, 15:28) *
Проблема возникла когда таблицу перенесли из BRAM в DDR3 - появилась потребность в увеличении оной. В блочной, понятно оно летает.

Извините за нубский вопрос, не работал со SRAM "на скорость". Какие там обычные скорости чтения?

Скорости для обычной SRAM - в районе 100МГц такт, задержка 2-3 такта.
Есть ещё RLDRAM но это чуть посложнее будет, и подороже.
Напрмер вот.
Go to the top of the page
 
+Quote Post
count_enable
сообщение Jan 27 2014, 09:23
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Спасибо за информацию. Я так понимаю, что даже подключив DDR3 через MIG напрямую к своей корке я быстрее одиночные слова читать не смогу?
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 27 2014, 09:51
Сообщение #6


Гуру
******

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



Цитата(count_enable @ Jan 27 2014, 13:23) *
даже подключив DDR3 через MIG напрямую к своей корке я быстрее одиночные слова читать не смогу?


Максимум, чего можно добиться, это кол-во клоков CL (CAS Latency) + AL (Additive Latency) + 4/5 - и это число не постоянно, оно временами может увеличиваться, если в это время автомат DDR-корки что-то там ждет, например tRP, tWTR, tRFC, или, например, требуется открытие банка перед данным чтением...
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 27 2014, 10:12
Сообщение #7


Знающий
****

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



Цитата(count_enable @ Jan 27 2014, 16:23) *
Спасибо за информацию. Я так понимаю, что даже подключив DDR3 через MIG напрямую к своей корке я быстрее одиночные слова читать не смогу?

Проблема в том, что в вашем случае адрес меняется почти рандомно, то есть это изменение нельзя предсказать заранее, на этом "перезаряде" адреса и умирает вся производительность.
Плюс к этому любой контроллер (типа MIG, MPMC или самодельный) как правило работают на максимально возможной частоте, соответственно всё что можно там распайплайнить - максимально
распилено регистрами. Отсюда имеем приличную задержку на операциях чтения, зато при потоковой записи получается максимальная скорость и тайминги гарантированно сходятся на приличных частотах.
DDR просто не предназначена для random access.
Go to the top of the page
 
+Quote Post
krux
сообщение Jan 27 2014, 11:03
Сообщение #8


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



если очень хочется использовать именно DDR под такую задачу, то для получения хоть какой-то вменяемой производительности придется делать конвейеризацию запросов, кеш, и арбитр доступа к DDR-контроллеру.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 2nd July 2025 - 02:57
Рейтинг@Mail.ru


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