Мы делали плату, на плис Xilinx Virtex + PCI ядро Target\Master на базе ядра Xilinx. Так вот, под нее я делал такой тест - инициируется передача буфера 1 МБ в память ПК (Bus Master), ожидается прерывание завершения передачи, все это дело повторяется заданное число раз (т.е. без обработки данных) и засекается время всего этого. Далее рассчитывается якобы пропускная способность шины.Все это дело работаль под виндой. Вобщем получалось не менее (на той машине) 112 МБ\сек, пиковая 120 МБ\сек. Но такой тест по сути разовая повторяющаяся пересылка - один раз быстрее другой раз медленее. Был у нас на базе этой же платы другой проект в котором необходимо было реализовать непрерывную передачу потока данных в компьютер естественно с обработкой. Были построены так называемые "качели" - один буфер передается в ПК, другой в это время обрабатывается. Вопрос стоял так что время затрачиваемое на обработку буфера естественно будет заведомо меньше времени передачи следующего буфера. В общем все это под виндой кончилось тем что и следовало ожидать. Видна для таких задач СОВСЕМ не подходит (покрайней мере без каких либо модификация). Простенькая тестовая программа отрисовывала конец двух переданных буферов, дабы показать на сигнале что между буферами нет разрыва. Данные были с АЦП. Если данную программу запустить и на компе ничего не трогать (даже не шевелить мышку) удавалось (то время что я на нее дуплил) достигнуть передачу 80 МБ\сек непрерывного потока. Но естественно это не работы. Вообщем у меня сложилось мнение что в связи со спецификой построения современных настольных ПК аля IBM PC, когда на PCI шине сидит до черта устройств, единственный вариант это использование каких либо спец операционных систем (QNX или оптимально собранный Linux или еще что-то) c полным управлением всеми устройствами на шине и возможностью выполнения обработки без переключения на другие задачи. Тогда наверно этом процессом можно будет управлять и добится непрерывного потока данных по PCI ну скажем приближающегося к пиковому или заведомо работающего необходимого меньшего.
|