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

 
 
> CAM-память на ПЛИС, Ассоциативная память, как лучше сделать?
ilkz
сообщение Mar 25 2015, 09:37
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084



Есть внешняя толстая sdram (несколько сотен мегабайт), в которую под завязку записываются пакеты (по несколько килобайт каждый) со всякими полями.
Требуется сделать поиск пакета по значению его поля (значение в процессе работы может меняться, т.е. пакеты живые), т.е. по сути - поиск по памяти (чем быстрее будет поиск, тем лучше).

Ограничения такие:
- все пакеты имеют фиксированную длину
- один пакет встречается в памяти один раз (дубликатов нет)
- за одну операцию поиска надо находить только один пакет (т.е. маска поиска не содержит звездочек)
- интенсивность поиска пускай будет 1 раз в 200 мс
- есть ниос, но его использовать наверное не хотелось бы, т.к. (имхо) он для этого медленен (переубедите если не прав)
- время поиска - чем меньше, тем лучше
- количество плиток на поиск пускай не более 1500 для 3-го Сыклона (обсуждаемо)

Даже не знаю с чего начать и куда копать. Посоветуйте как подобные задачи вообще решаются.

Сообщение отредактировал ilkz - Mar 25 2015, 09:39
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Mar 25 2015, 10:03
Сообщение #2


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

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



Цитата(ilkz @ Mar 25 2015, 16:37) *
Даже не знаю с чего начать и куда копать. Посоветуйте как подобные задачи вообще решаются.

из сдрам будет медленно и печально. Как вариант считать хеши по пакетам, делать CAM на элементах xilinx SRL16/RAMxD16/RAMxD64 для этих хешей с адресами пакетов. Затем поиск в 2 шага : 1. поиск хешей -> определение списка адресов 2. уточнение поиска из сдрам. На сыклоне, сделать большой CAM почти не реально, ресурса сожрет мама не горюй.

Еще совет, поищите в сети xapp201-204. На сайте xilinx их убрали почему то. Там на простых камах (типа CAM8x16) разбираются архитектуры КАМ и рассматриваются сильные и слабые стороны каждой архитектуры.

Цитата(ilkz @ Mar 25 2015, 16:37) *
- количество плиток на поиск пускай не более 1500 для 3-го Сыклона (обсуждаемо)

На пальцах : по сути КАМ это быстрый массив компараторов. Положим хотим быстро искать слово 32-бита. Итого нужно хранить само слово + логику сравнения. На сыклоне 64 плитки минимум. Итого 1024 плитки на 16 слов, остальное будет стыковая логика. Итого сможете сделать что-то вроде CAM16x32 (глубина 16, разрядность слова 32). Можно сделать на блочной памяти, но там память всего 13 бит по адресу (M9k), итого потребуется минимум 3 блока RAM, и это на одно вхождение слова, или 4 блока на 8 вхождений (память в режиме 1024х8). Т.е. 4 блока памяти на КАМ8х32 (глубина 8, разрядность слова 32).

ЗЫ. если ваше поле небольшое, то можно сделать CAM только для этого поля. Если больше 32-х бит, то лучше считать хеш.


--------------------
Go to the top of the page
 
+Quote Post
Alex77
сообщение Mar 25 2015, 11:01
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Цитата(des00 @ Mar 25 2015, 13:03) *
Еще совет, поищите в сети xapp201-204. На сайте xilinx их убрали почему то. Там на простых камах (типа CAM8x16) разбираются архитектуры КАМ и рассматриваются сильные и слабые стороны каждой архитектуры.

Мои извинения...
А это что ???
http://www.xilinx.com/support/documentatio...tes/xapp201.pdf
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 25 2015, 11:31
Сообщение #4


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

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



Цитата(Alex77 @ Mar 25 2015, 19:01) *
Мои извинения...
А это что ???

это оно, но я на него выходил как раз из гугла, поиск по сайту xilinx.com ничего не дал в свое время.


Цитата(Dr.Alex @ Mar 25 2015, 19:01) *
Если под меткой вы подразумеваете то же что и я (по сути номер пакета, или время там), то всё это не важно.
Важно только то, что пакетов единовременно не более 100 000, и метки уникальны.

хмм, может туплю. Пусть у нас 128 пакетов, пишем с 0. записали 126, 127, затем счетчик обернулся и началась запись в 0, 1 и т.д. И вот стоит задача, найти самый старый пакет, после оборота адрес пакета уже не будет совпадать с меткой времени. Тут нужно следить за "головой и хвостом".


--------------------
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Mar 25 2015, 11:47
Сообщение #5


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(des00 @ Mar 25 2015, 14:31) *
Тут нужно следить за "головой и хвостом".

Да это мелочи, имхо к самой проблеме не имеет отношения.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:32
Рейтинг@Mail.ru


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