Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ПЛИС -> PCIe -> NVMe -> M.2 без SoC
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
syoma
Собственно вопрос - в системе есть Virtex-7 с PCIe и хотим стримить огромное количество данных на SSD по возможности напрямую через PCIe без участия центрального процессора. Потом эти данные нужно будет из SSD прочитать, возможно с помощью той же самой ПЛИС. Кто-нибудь такое уже делал? Реализуемо без всяких Petalinux, чисто на логике?
RobFPGA
Приветствую!
Цитата(syoma @ May 18 2018, 19:32) *
Собственно вопрос - в системе есть Virtex-7 с PCIe и хотим стримить огромное количество данных на SSD по возможности напрямую через PCIe без участия центрального процессора. Потом эти данные нужно будет из SSD прочитать, возможно с помощью той же самой ПЛИС. Кто-нибудь такое уже делал? Реализуемо без всяких Petalinux, чисто на логике?
Вы хотите чтобы FPGA была как root-complex на PCIe? или просто master - слать данные из FPGA на диск через PCIe напрямую.
И то и другое в принципе реализуемо но не думаю что совсем без поддержки софта можно будет обойтись.

Успехов! Rob.
AVR
Цитата(RobFPGA @ May 18 2018, 19:54) *
Вы хотите чтобы FPGA была как root-complex на PCIe? или просто master - слать данные из FPGA на диск через PCIe напрямую. И то и другое в принципе реализуемо но не думаю что совсем без поддержки софта можно будет обойтись

Мне кажется, пересылка между двумя PCIe EP должна поддерживаться чуть ли не с пол пинка, чуть ли не штатно. Я ошибаюсь? Только знать адрес второго устройства на шине и всё - дальше как обычно. Поправьте.

Другое дело что доступ к SSD завернут в такой хитрючий протокол, что я не знаю как можно это чисто на логике сделать, или даже с soft-CPU без Linux. Ну можно наверное, но будет на уровне персонального героизма.
yuri.job
собственно, ремарка номер раз - хватит ли одного ссд диска по пропускной способности? если хватит, то все ок, если нет, то придется параллелить диски, а значит либо делать ген2/3 руты софтварно в вирте, либо ставить после 8/16 лейнового хардового рута свич фабрику, например от броадкома, которая позволит пользовать один рут и несколько, параллельных полноскоростных м2 ссд дисков.

корка софтовая на рут ген2/3 стоит денег, поэтому мы, например, пошли по второму пути. и таки да, вирт7 может тупо брать и сливать данные на ссд, но вот чтобы потом из более менее осознанно достават, пришлось приделать к нашей фпаге цинк, на котором крутился линкус и который своим рут ген2 так же был воткнут в свич и имел достут к ссд дискам. это с одной стороны, и к оптике - с другой.
как то так
syoma
Цитата(RobFPGA @ May 18 2018, 18:54) *
Вы хотите чтобы FPGA была как root-complex на PCIe? или просто master - слать данные из FPGA на диск через PCIe напрямую.

Root Complex в системе есть. Хотим просто, чтобы FPGA выступала как мастер для этих данных. Фактически, сейчас мастер в FPGA периодически шлет по PCIe данные в DDR память процессорного модуля (ее там много), а процессор затем по триггеру сливает эту память в свою флеш. Медленно и затратно. Хотим сделать напрямую без задействования процессора.

Цитата
Мне кажется, пересылка между двумя PCIe EP должна поддерживаться чуть ли не с пол пинка, чуть ли не штатно. Я ошибаюсь? Только знать адрес второго устройства на шине и всё - дальше как обычно. Поправьте.

В принципе так и есть. У нас FPGA мастерит весь трафик на PCIe.

Цитата
Другое дело что доступ к SSD завернут в такой хитрючий протокол, что я не знаю как можно это чисто на логике сделать, или даже с soft-CPU без Linux. Ну можно наверное, но будет на уровне персонального героизма.

В том-то и дело, что c NVMe все должно стать гораздо проще. Никаких SATA, AHCI и прочей белиберды. И даже вроде как корки готовые существуют - https://www.xilinx.com/products/intellectua...y/1-f2v39l.html Вопрос именно в том, что это за фигня и насколько сложно забебехать такое самому. Ну и скорость тоже интересует.

Цитата
собственно, ремарка номер раз - хватит ли одного ссд диска по пропускной способности?

Должно хватить. В принципе ориентируемся на перформанс одного диска, если не будет хватать - будем снижать количество данных. По любому должно быть быстрее, чем через процессор.

Собственно вопрос с софтом упирается в такое: можно ли писать на SSD данные без файловой системы или можно сделать какую-либо примитивную ФС только с помощью логики? Тот же Microblaze убьет всю скорость очень быстро. Zyncа в наличии нет.
RobFPGA
Приветствую!

Цитата(syoma @ May 22 2018, 10:34) *
В том-то и дело, что c NVMe все должно стать гораздо проще. Никаких SATA, AHCI и прочей белиберды. И даже вроде как корки готовые существуют - https://www.xilinx.com/products/intellectua...y/1-f2v39l.html Вопрос именно в том, что это за фигня и насколько сложно забебехать такое самому. Ну и скорость тоже интересует.
Думаю сделать такое не особо сложно - так как тут только логический уровень а физ. интерфейс стандартный - в основном геморой будет со вниканием в спецификацию и нюансы работы с NVM. Ну и отсутствие BFM для моделирования NVM добавить работы c железом.
Плюс в том что все можно сначала чисто на софте попробовать а потом уже перенести в FPGA.

Цитата(syoma @ May 22 2018, 10:34) *
Должно хватить. В принципе ориентируемся на перформанс одного диска, если не будет хватать - будем снижать количество данных. По любому должно быть быстрее, чем через процессор.
Ну это смотря какой проц. Да и буферизация в большой системной памяти играет свою роль. Так как у SSD всегда есть провалы скорости (иногда непредсказуемые и ну очень печальные).

Цитата(syoma @ May 22 2018, 10:34) *
Собственно вопрос с софтом упирается в такое: можно ли писать на SSD данные без файловой системы или можно сделать какую-либо примитивную ФС только с помощью логики? Тот же Microblaze убьет всю скорость очень быстро. Zyncа в наличии нет.
Писать и читать можно и без FS - тупым автоматом. Но совсем без файловой системы будет неудобно на мой взгляд. Но всегда можно подобрать что то или сваять свой велосипед упростив и оптимизировать для конкретных задач - например пишем линейно, крупными блоками. Для подобного и MB сгодится так как через него будет идти совсем немного для управления блоками.
Естественно нужно оценить что будет выгоднее - свой велик или адаптация чего то готового.

Удачи! Rob.
syoma
Цитата
Так как у SSD всегда есть провалы скорости (иногда непредсказуемые и ну очень печальные).

Я очень надеюсь, что как раз в NVMe этот вопрос решили. Возможно ошибаюсь... В принципе это легко узнать экспериментальным путем.
syoma
Тут поступила еще идея - размечать и создавать файловую систему с помощью средств операционки, которая крутится на центральном процессоре. Она также должна создавать и открывать для записи файл, а затем передавать (указатель?) на него в ПЛИС, чтобы она начинала запись. Вот такая гибридизация. ХММ, так вроде в картах видеозахвата было, не?
RobFPGA
Приветствую!
Цитата(syoma @ May 22 2018, 14:17) *
Тут поступила еще идея - размечать и создавать файловую систему с помощью средств операционки, которая крутится на центральном процессоре. Она также должна создавать и открывать для записи файл, а затем передавать (указатель?) на него в ПЛИС, чтобы она начинала запись. Вот такая гибридизация. ХММ, так вроде в картах видеозахвата было, не?

Зачем указатель - можно сразу список блоков LBA для записи/чтения файла, а в FPGA уже мастером только гнать по ним данные.

Удачи! Rob.



gutzzz
FPGA drive by Jeff Johnson project видели?

Там есть примеры для VC707, VC709 китов
RobFPGA
Приветствую!

А также можно порыться например тут user space NVMe driver.
Для старта экспериментов.

Удачи! Rob.
syoma
Цитата(gutzzz @ May 23 2018, 15:20) *
FPGA drive by Jeff Johnson project видели
Там есть примеры для VC707, VC709 китов


Если вот это, то видел. Он тестировал с Петалинуксом на Microblaze и Arm, но и там и там теоретические скорости SSD и близко не были достигнуты. В итоге он задался тем же вопросом - есть ли железная корка, позволяющая достичь нужных значений.
Хотя с другой стороны мне нужно сначала посчитать, что там получается у PCIe с пропускной способностью. У меня всего лишь Gen.2 x4, да и то, для записи будет доступен не весь объем PCIe трафика, а что-то около 20%
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.