Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Потоковое чтение с SSD
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Andre7
Имеем устройство (на базе ПЛИС) подключенное через Ethernet к компьютеру на котором стоит Linux и SSD винт.
Устройство на базе ПЛИС посылает запрос, на который должно получить ответ в виде блока данных с SSD диска.
Задача состоит в том что бы написать драйвер под Linux.

Вопросы:
1) Непонятна архитектура построения системы (Можно-ли настроить один контролер DMA который сраду будет передавать с SSD на Ethernet минуя оперативку. Или же нужны более сложные ухищрения)
2) Что нужно будет напсать в драйвере? (просто блок-схемами)
3) На самом деле, конечное усройство не разработано, поэтому можно поставить плату PCI express, как преобразователь ethernet. Можно ли делать запросы от PCIe (режим bus mastering) напрямую к SSD диску в режиме DMA?
sasamy
Цитата(Andre7 @ Sep 25 2013, 11:59) *
Имеем устройство (на базе ПЛИС) подключенное через Ethernet к компьютеру на котором стоит Linux и SSD винт.
Устройство на базе ПЛИС посылает запрос, на который должно получить ответ в виде блока данных с SSD диска.


Какая-то странная система
http://en.wikipedia.org/wiki/ATA_over_Ethernet

Цитата
1) Непонятна архитектура построения системы (Можно-ли настроить один контролер DMA который сраду будет передавать с SSD на Ethernet минуя оперативку.


Зачем тогда ОС нужна ?
Andre7
Цитата(sasamy @ Sep 25 2013, 15:51) *
Какая-то странная система
http://en.wikipedia.org/wiki/ATA_over_Ethernet



Зачем тогда ОС нужна ?


Операционная система обрабатывает файл и сохраняет его на SSD диск. Размер файла может достигать 100Гб. Устройство подключенное через Ethernet или PCIexpress должно получать кусочек этого файла. Если писать программу которая будет пересылать данные частями в оперативную память, то она будет медленно работать по сравнению c прямым доступом к SSD.

Если есть другие варианты реализации данной задачи, буду рад рассмотретьsm.gif
Golikov A.
мне интересно а как вы арбитраж сделаете?
как вы сможете гарантировать что в тот момент когда ПЛИС через езернет что-то читает, операционка ничего не запишет? Это даже не вопрос обращения к одному месту файла, это вопрос обращения 2 систем к одному физическому устройству. Ведь юник будет держать файловую систему на диске...

И второй момент, мне кажется что скорость доступа операционки к данным диска, будет много выше скорости езернет...
Andre7
Цитата(Golikov A. @ Sep 25 2013, 17:25) *
мне интересно а как вы арбитраж сделаете?
как вы сможете гарантировать что в тот момент когда ПЛИС через езернет что-то читает, операционка ничего не запишет? Это даже не вопрос обращения к одному месту файла, это вопрос обращения 2 систем к одному физическому устройству. Ведь юник будет держать файловую систему на диске...

И второй момент, мне кажется что скорость доступа операционки к данным диска, будет много выше скорости езернет...


У нас эта система сейчас реализована в оперативной памяти. Часть оперативки заберает линукс, а вторую часть оперативки методом mmap() делаем доступной для программы, которая записывает данные и дает добро ПЛИС для считывания. Т.е мы берем с жесткого диска и размещаем в оперативку, а затем при помощи DMA ПЛИС забирает данные себе. Хотелось бы избавиться от лишнего копирования в оперативную память, а напрямую забирать данные с диска

На счет скорости согласен, Ehernet был приведет в качестве примера, возможно более рационально использовать передачу, через PCIexpress. Возможно ли через PCIexpress достучаться к диску через виртуальные адреса?
gosu-art
http://www.youtube.com/watch?v=d42jhQoUBlU
Попробовать замутить Peer-to-Peer.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.