Здравствуйте, alex_line, Вы писали:
_>Необходимо обеспечить передачу от устройства на шине PCI-Express в память компа потока в 20Мбайт/с примерно. Устройство это предоставляет буфер, из которого нужно читать порциями по 2Кб. Простое копирование процессором из буфера девайса в ОЗУ не успевает копировать весь поток. Полагаю дело в том, что в этом случае чтение идет порциями по 4 байта, а пакет, передаваемый по шине, содержит много служебной информации и пропускной способности шины не хватает. _>Как можно сделать (у девайса пока нет ДМА) обмен по шине с большей длиной пакета (с большим куском полезных данных) и возможно ли это в принципе?
--
Боюсь, что гарантированно пропустить такой поток данных, без использования DMA, будет очень трудно даже через PCI-e.
Мы как-то пытались увеличить burst-size для PCI шины, и нам удавалось немного улучшить ее bandwith, используя поток с очень большим IRQL, в котором в цикле просто записывали байты в устройство. На быстрых машинах это приводил к тому, что PCI bridge объединял последовательные запросы к устройству в один burst. Но улучшения не были большими, по сравнению с DMA.