реклама на сайте
подробности

 
 
> Организация обмена с устройством PCI-Express через DMA
alee
сообщение Apr 1 2007, 21:45
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 19-09-05
Пользователь №: 8 716



Подскажите как повысить скорость обмена с устройством, подключенным к шине PCIe?
Логично использовать в этом случае DMA.
Интересует два момента: 1-вопрос связанный программированием (написанием драйвера); 2-поддержка DMA самим устройством (если данный пункт необходим).

На макетной плате получаем результаты: скорость чтения примерно 6Мбайт, на запись - 2Мбайта.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Doka
сообщение Apr 1 2007, 21:49
Сообщение #2


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



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

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

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


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
alee
сообщение Apr 1 2007, 22:17
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 19-09-05
Пользователь №: 8 716



Цитата(Doka @ Apr 1 2007, 22:49) *
2. поддержка со стороны PCIe-device фичи DMA просто необходима


Это в теории или на практике? Ведь в PCI Express нет выделенных линий для захвата шины в отличае от PCI. Каким образом устройство должно обеспечить работу через DMA?
Go to the top of the page
 
+Quote Post
Doka
сообщение Apr 1 2007, 22:23
Сообщение #4


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



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

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


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
alee
сообщение Apr 1 2007, 22:42
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 19-09-05
Пользователь №: 8 716



Цитата(Doka @ Apr 1 2007, 23:23) *
насчет отсутствия линий захвата шины: так в PCI Express каждый слот к индивидуальному хосту подключен


Все еще не понятен механизм организации такого обмена. Складывается впечатление, что должно быть промежуточное звено на шине (возможно Root Complex - в терминах спецификации), которое и отвечает за прямой доступ к памяти.
Go to the top of the page
 
+Quote Post
InvisibleFed
сообщение Apr 3 2007, 07:59
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469



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

1. поддержка устройства
2. поддержка ОСи!!!

Я честно не особо разбирался, но где-то читал, что имеено потому что GeForce8800 и DirectX 10 предусматривают нечто подобное, DirectX 10 и существует ТОЛЬКО под Vista, под XP его нет.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Jul 19 2007, 21:54
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(alee @ Apr 2 2007, 02:17) *
Это в теории или на практике? Ведь в PCI Express нет выделенных линий для захвата шины в отличае от PCI. Каким образом устройство должно обеспечить работу через DMA?


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

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


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
alee
сообщение Jul 20 2007, 06:21
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 19-09-05
Пользователь №: 8 716



Спасибо за ответы, ситуация прояснилась!
Go to the top of the page
 
+Quote Post
Playnet
сообщение Jan 7 2008, 22:39
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 132
Регистрация: 10-05-06
Пользователь №: 16 930



Поделитесь плз доками про программирование PCIe и пример драйвера.... Драйвер WDM обычно делают? И в чем? smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016