Необходимо обеспечить передачу от устройства на шине PCI-Express в память компа потока в 20Мбайт/с примерно. Устройство это предоставляет буфер, из которого нужно читать порциями по 2Кб. Простое копирование процессором из буфера девайса в ОЗУ не успевает копировать весь поток. Полагаю дело в том, что в этом случае чтение идет порциями по 4 байта, а пакет, передаваемый по шине, содержит много служебной информации и пропускной способности шины не хватает.
Как можно сделать (у девайса пока нет ДМА) обмен по шине с большей длиной пакета (с большим куском полезных данных) и возможно ли это в принципе?
Здравствуйте, alex_line, Вы писали:
_>Необходимо обеспечить передачу от устройства на шине PCI-Express в память компа потока в 20Мбайт/с примерно. Устройство это предоставляет буфер, из которого нужно читать порциями по 2Кб. Простое копирование процессором из буфера девайса в ОЗУ не успевает копировать весь поток. Полагаю дело в том, что в этом случае чтение идет порциями по 4 байта, а пакет, передаваемый по шине, содержит много служебной информации и пропускной способности шины не хватает. _>Как можно сделать (у девайса пока нет ДМА) обмен по шине с большей длиной пакета (с большим куском полезных данных) и возможно ли это в принципе?
--
Боюсь, что гарантированно пропустить такой поток данных, без использования DMA, будет очень трудно даже через PCI-e.
Мы как-то пытались увеличить burst-size для PCI шины, и нам удавалось немного улучшить ее bandwith, используя поток с очень большим IRQL, в котором в цикле просто записывали байты в устройство. На быстрых машинах это приводил к тому, что PCI bridge объединял последовательные запросы к устройству в один burst. Но улучшения не были большими, по сравнению с DMA.
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>Мы как-то пытались увеличить burst-size для PCI шины, и нам удавалось немного улучшить ее bandwith, используя поток с очень большим IRQL, в котором в цикле просто записывали байты в устройство. На быстрых машинах это приводил к тому, что PCI bridge объединял последовательные запросы к устройству в один burst. Но улучшения не были большими, по сравнению с DMA.
Я так понимаю, что системный DMA здесь тоже не поможет?
ГМ>Мы как-то пытались увеличить burst-size для PCI шины, и нам удавалось немного улучшить ее bandwith, используя поток с очень большим IRQL, в котором в цикле просто записывали байты в устройство. На быстрых машинах это приводил к тому, что PCI bridge объединял последовательные запросы к устройству в один burst. Но улучшения не были большими, по сравнению с DMA.
Когда я баловался железками при PIO обмене через PCI осциллографом выяснил, что транзакции на шине объединялись в пакеты длиной в среднем 4-8. В итоге для 33Мгц 32 битной PCI шины давало скорость около ( выше ) 30МБ/c. Данные писались порциями в DPC.
Да пребудет с тобою сила
Re[3]: Пакетное чтение по шине PCI-Express
От:
Аноним
Дата:
29.08.08 19:33
Оценка:
TC>Когда я баловался железками при PIO обмене через PCI осциллографом выяснил
Не перевелись еще на земле русской... NMI при помощи шариковой ручкой в ISA слот втыркнуто не доводилось генерить?