Перейти к содержанию
    

Организация обмена с устройством PCI-Express через DMA

Подскажите как повысить скорость обмена с устройством, подключенным к шине PCIe?

Логично использовать в этом случае DMA.

Интересует два момента: 1-вопрос связанный программированием (написанием драйвера); 2-поддержка DMA самим устройством (если данный пункт необходим).

 

На макетной плате получаем результаты: скорость чтения примерно 6Мбайт, на запись - 2Мбайта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. поддержка со стороны PCIe-device фичи DMA просто необходима

 

1. в драйвере особо революционных изменений нет: просто теперь вместо самих пересылок вам надо "заряжать" для их осуществления контроллер DMA на девайсе: с какого адреса брать и сколько данных (ну и направление)

 

(либо делать немножко послежнее -как это реализовано например в контроллере DMA для IDE PCI-платы: девайсу просто передается адрес таблицы, содержащей массив данных: адреса и размеры данных для пересылки - что позволяло "раскидывать" данные при пересылках произвольным образом внутри секторов 64К)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. поддержка со стороны PCIe-device фичи DMA просто необходима

 

Это в теории или на практике? Ведь в PCI Express нет выделенных линий для захвата шины в отличае от PCI. Каким образом устройство должно обеспечить работу через DMA?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

честно говоря сужу действительно по аналогии с PCI - должен существовать на стороне девайса некий автомат (контроллер DMA), который осуществляет пересылку без вмешательства со стороны CPU

 

насчет отсутствия линий захвата шины: так в PCI Express каждый слот к индивидуальному хосту подключен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

насчет отсутствия линий захвата шины: так в PCI Express каждый слот к индивидуальному хосту подключен

 

Все еще не понятен механизм организации такого обмена. Складывается впечатление, что должно быть промежуточное звено на шине (возможно Root Complex - в терминах спецификации), которое и отвечает за прямой доступ к памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот в nVidia как я понял хотят видяху обучить этому же - до того видать не умела. Так вот чего надо:

 

1. поддержка устройства

2. поддержка ОСи!!!

 

Я честно не особо разбирался, но где-то читал, что имеено потому что GeForce8800 и DirectX 10 предусматривают нечто подобное, DirectX 10 и существует ТОЛЬКО под Vista, под XP его нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это в теории или на практике? Ведь в PCI Express нет выделенных линий для захвата шины в отличае от PCI. Каким образом устройство должно обеспечить работу через DMA?

 

DMA (Direct Memory Access) в применении к PCI называется Bus Master. Если устройство хочет выполнить роль мастера - оно берет управление на себя и формирует требуемый цикл шины.

 

В PCIe, действительно, нет линий захвата шины. По одной причине: они не нужны. Так как все физические соединения последовательные точка-точка. По ним гоняются пакеты, хабы направляют пакеты в нужном направлении в порядке очереди и приоритетов, при необходимости их буферизуя. Если устройство хочет выполнить роль мастера - оно проста по своей шине посылает соответствующий пакет, следя, чтобы он не конфликтовал с другими пакетами, посылаемыми самим же устройством :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделитесь плз доками про программирование PCIe и пример драйвера.... Драйвер WDM обычно делают? И в чем? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...