Как получить доступ к оперативной памяти для использования с FPGA для высокопроизводительных вычислений

Я изучаю идею использования ПЛИС для линейной алгебры. Хотелось бы возможность работы на больших матрицах (>4 Гб). Но современные high-end FPGA имеют оперативную память порядка мегабайт.

Пожалуйста, опишите, как я могу:

  • добавить внешний чип оперативной памяти
  • доступ и использование оперативной памяти подключенного компьютера

Любые другие комментарии или отзывы приветствуются.

У меня сейчас Digilent basys2. Я начинающий.

Выбор типа оперативной памяти может сильно повлиять на производительность вашей системы; тщательно выбирайте.
Учитывая, что на этой плате всего 16 вводов-выводов общего назначения, взаимодействие с внешней памятью в стиле ПК, вероятно, будет проблемой, и единственные решения SPI, которые я могу придумать, намного меньше. Хотя производительность будет плохой для начального обучения и экспериментов, возможно, вам лучше попробовать использовать порт USB. Глядя на схему, кажется, что у нее есть AT90USB, который, по крайней мере, заботится о некоторых аспектах протокола USB. Я только новичок в FPGA, чтобы ждать, какие ответы вы получите, но я думаю, что в целом это может быть немного сложнее, чем кажется с этой платой.
В общем, если вы застряли с этой доской, вы не в лучшем положении для этого проекта. Если вы работаете с таким большим объемом данных и скорость имеет значение, вам нужна память на одной плате с FPGA, возможно, с интерфейсом DDR2 или DDR3 между ними (но я не эксперт в этом). Если скорость не имеет значения, то просто решите проблему на ПК и избавьте себя от возни с ПЛИС.
Есть ли причина, по которой вы не используете компьютер с очень быстрой видеокартой? NVIDIA CUDA или что-то подобное.
@KevinChen У меня есть карты Nvidia Tesla CUDA. Я студент-исследователь в очень гетерогенных системах. С FPGA можно проводить интересные эксперименты для решения проблем, которые не подходят для этой архитектуры.

Ответы (1)

По разным причинам Digilent Basys2 и Xilinx Spartan-3E вам не подойдут.

Для такого объема оперативной памяти вам понадобится что-то вроде DDR2 или DDR3 SDRAM, работающее с довольно высокой тактовой частотой. Это не то, что вы можете просто припаять к прототипу печатной платы. Печатная плата должна быть спроектирована для взаимодействия с памятью, в идеале с ОЗУ, уже припаянным к печатной плате. Если вы никогда не проектировали такую ​​схему, я предлагаю вам приобрести плату FPGA, на которой уже есть ОЗУ. Однако это будет сложно, поскольку все платы FPGA, которые я видел (за 5 минут просмотра), имели намного меньше 4 ГБ ОЗУ.

Дальше нужно что-то поновее, чем Спартанец-3/3А/3Е. В то время как S3 — хорошая FPGA, серия Spartan-6 может предложить вам гораздо больше. У него намного больше внутренней памяти (но вам все еще нужна внешняя память), намного больше блоков DSP48 и больше логики. Но самое главное, у него гораздо лучший интерфейс SDRAM, чем у Spartan-3. И под «намного лучше» я подразумеваю «намного проще для успешного использования новичком». Контроллер памяти в S6 представляет собой жесткий IP-адрес, что для вас означает, что гораздо проще выполнить строгие требования по времени взаимодействия с SDRAM.

Но управлять DDR2/DDR3 SDRAM непросто. У Xilinx есть инструмент под названием «Генератор интерфейса памяти», который можно найти в Core Generator. Это сгенерирует для вас логику интерфейса памяти и даст вам множество интересных функций, которые сделают вашу жизнь проще.

Альтернативой Spartan-6 может быть Virtex-5 или любая из частей 7-й серии. Все они имеют интерфейсы памяти не хуже или лучше, чем у Spartan-6.

Эта плата на базе Virtex-7 имеет разъем для двух модулей SO-DIMM, что может дать вам больше 4 ГБ ОЗУ, но это очень дорого — 5000 долларов США.

Я также должен упомянуть, что если вы делаете это, потому что хотите узнать о ПЛИС и электронике, я поддерживаю ваши усилия. Но если вы думаете, что это каким-то образом будет быстрее, чем стандартный ПК, то у меня для вас плохие новости. За эти деньги трудно превзойти четырехъядерную машину на базе Intel i7 с разумной картой GPU. Просто предупреждаю вас, если все, что вас действительно волнует, это математическая скорость.

+1 за комментарий о том, что современные процессоры/графические процессоры не превосходят по математике. Есть причина, по которой современные суперкомпьютеры сделаны с ними, а не с ПЛИС!