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

ПЛИС -> PCIe -> NVMe -> M.2 без SoC

Собственно вопрос - в системе есть Virtex-7 с PCIe и хотим стримить огромное количество данных на SSD по возможности напрямую через PCIe без участия центрального процессора. Потом эти данные нужно будет из SSD прочитать, возможно с помощью той же самой ПЛИС. Кто-нибудь такое уже делал? Реализуемо без всяких Petalinux, чисто на логике?

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


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

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

Собственно вопрос - в системе есть Virtex-7 с PCIe и хотим стримить огромное количество данных на SSD по возможности напрямую через PCIe без участия центрального процессора. Потом эти данные нужно будет из SSD прочитать, возможно с помощью той же самой ПЛИС. Кто-нибудь такое уже делал? Реализуемо без всяких Petalinux, чисто на логике?
Вы хотите чтобы FPGA была как root-complex на PCIe? или просто master - слать данные из FPGA на диск через PCIe напрямую.

И то и другое в принципе реализуемо но не думаю что совсем без поддержки софта можно будет обойтись.

 

Успехов! Rob.

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


Ссылка на сообщение
Поделиться на другие сайты
Вы хотите чтобы FPGA была как root-complex на PCIe? или просто master - слать данные из FPGA на диск через PCIe напрямую. И то и другое в принципе реализуемо но не думаю что совсем без поддержки софта можно будет обойтись

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

 

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

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


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

собственно, ремарка номер раз - хватит ли одного ссд диска по пропускной способности? если хватит, то все ок, если нет, то придется параллелить диски, а значит либо делать ген2/3 руты софтварно в вирте, либо ставить после 8/16 лейнового хардового рута свич фабрику, например от броадкома, которая позволит пользовать один рут и несколько, параллельных полноскоростных м2 ссд дисков.

 

корка софтовая на рут ген2/3 стоит денег, поэтому мы, например, пошли по второму пути. и таки да, вирт7 может тупо брать и сливать данные на ссд, но вот чтобы потом из более менее осознанно достават, пришлось приделать к нашей фпаге цинк, на котором крутился линкус и который своим рут ген2 так же был воткнут в свич и имел достут к ссд дискам. это с одной стороны, и к оптике - с другой.

как то так

Изменено пользователем yuri.job

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


Ссылка на сообщение
Поделиться на другие сайты
Вы хотите чтобы 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а в наличии нет.

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


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

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

 

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

Плюс в том что все можно сначала чисто на софте попробовать а потом уже перенести в FPGA.

 

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

 

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

Естественно нужно оценить что будет выгоднее - свой велик или адаптация чего то готового.

 

Удачи! Rob.

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


Ссылка на сообщение
Поделиться на другие сайты
Так как у SSD всегда есть провалы скорости (иногда непредсказуемые и ну очень печальные).

Я очень надеюсь, что как раз в NVMe этот вопрос решили. Возможно ошибаюсь... В принципе это легко узнать экспериментальным путем.

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


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

Тут поступила еще идея - размечать и создавать файловую систему с помощью средств операционки, которая крутится на центральном процессоре. Она также должна создавать и открывать для записи файл, а затем передавать (указатель?) на него в ПЛИС, чтобы она начинала запись. Вот такая гибридизация. ХММ, так вроде в картах видеозахвата было, не?

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


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

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

Тут поступила еще идея - размечать и создавать файловую систему с помощью средств операционки, которая крутится на центральном процессоре. Она также должна создавать и открывать для записи файл, а затем передавать (указатель?) на него в ПЛИС, чтобы она начинала запись. Вот такая гибридизация. ХММ, так вроде в картах видеозахвата было, не?

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

 

Удачи! Rob.

 

 

 

 

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


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

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

 

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

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


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

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

 

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

Для старта экспериментов.

 

Удачи! Rob.

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


Ссылка на сообщение
Поделиться на другие сайты
FPGA drive by Jeff Johnson project видели

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

 

Если вот это, то видел. Он тестировал с Петалинуксом на Microblaze и Arm, но и там и там теоретические скорости SSD и близко не были достигнуты. В итоге он задался тем же вопросом - есть ли железная корка, позволяющая достичь нужных значений.

Хотя с другой стороны мне нужно сначала посчитать, что там получается у PCIe с пропускной способностью. У меня всего лишь Gen.2 x4, да и то, для записи будет доступен не весь объем PCIe трафика, а что-то около 20%

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация