Добрый день.
У меня есть устройство — ПЛИС (
Xilinx® Spartan-6 FPGA SP605). Моя задача сейчас добиться быстрого обмена по PCIe между этим устройством и компьютером.
Конфигурация PCIe v1.1, ширина x1. Как я понимаю, максимальная скорость для такого PCIe — это 250 МБ/с. Из этих 250 МБ/с я расчитывал выжать хотя бы половину, т.е. 125 МБ/с, но не могу получить даже такой производительности.
Сначала я написал KMDF-драйвер, работающий в режиме PIO и увидел скорость 200 Мбит/с (т.е. всего 25 МБ/с). В результате пришёл к выводу, что нужно использовать DMA. У меня на ПЛИС собственного DMA-контроллера нет. Системный контроллер на материнской плате я использовать также не могу. Пришёл к выводу, что нужно использовать режим Bus Mastering для PCIe.
По режиму Bus Mastering нашёл на сайте Xilinx
такой документ. Ознакомился, скачал прилагаемый архив (в составе архива: прошивка для платы, драйвер и приложение для тестирования). Всё установил, запустил приложение для тестирования, которое определяет скорость передачи. Приложение показало скорость записи примерно 800 Мбит/с, а скорость чтения — 600 МБит/с (т.е. 100 МБ/с и 75 МБ/с соответственно в режиме Bus Mastering). Такие скорости меня явно не устраивают
Вопросы. С чем могут быть связаны такие низкие скорости? На что ещё можно обратить внимание для повышения скорости передачи?
C уважением,
Чайка Сергей