Kopart
Mar 11 2008, 14:03
В Virtex 5 с их ядром PCI-E (hard).
Проверил теоретическую скорость (без DMA, чтение всегда подтверждается на trn-интерфейсе).
Получилось не больше 70Мб/с - на запись. Но я все не могу найти ответ на вопрос - без поддержки DMA в плате возможно чтобы root complex (ПК) пересылал больше чем одно DW в пакете.
Пока получается на 3 DW заголовка 1 DW данных (приблизительно и соответсвуют 70Mб/c).
Возможно ли слать из ПК больше чем одно DW данных в пакете без поддержки DMA в целевой плате? (WinDriver, Чипсет G31)
Меня тоже очень интересует данный вопрос...
Балуюсь с софтовым ядром ксалинкса (endpoint v3.6) на Virtex-4.
Мне пока не удалось переслать более 1 dw данных с хоста...
Может у кого-нить имеется опыт работы с PCI-e ? Поделитесь, подскажите !
Цитата(RKOB @ Apr 7 2008, 13:43)

Мне пока не удалось переслать более 1 dw данных с хоста...
Может у кого-нить имеется опыт работы с PCI-e ? Поделитесь, подскажите !
Максимум, что я получил для Completer - это запись - 120Мбайт/с, чтение - 10Мбайт/с.
Максимально в этом режиме можно пересылать только два DWORD полезных данных в пакете в каждую сторону.
Больше DW только в режиме Reqester.
Можно попробовать использовать команды пересылки из расширений MMX/SSE, если речь идет о хосте x86 архитектуры. Сам не специалист по такого рода программированию, но было дело для пакетного обмена на высокой скорости через PCI заказчик использовал команды из этих расширений. При этом за одну транзакцию PCI пересылалось четыре слова. Как на эти команды отреагирует PCIe мост, сказать не могу. Кроме того, для PCI если обращения шли по последовательным адресам, то мост их "слепливал" в одну транзакцию шины.
Цитата
Максимум, что я получил для Completer - это запись - 120Мбайт/с, чтение - 10Мбайт/с.
Это на скольки лейнах ?? Маловато будет!
Цитата(RKOB @ Apr 8 2008, 11:58)

Это на скольки лейнах ?? Маловато будет!
Это было для х8 с ядром Xilinx Block Plus и Windriver, режим - Completer (по аналогии с pci - target). Время оценивалось по выходу из пользовательской функции пересылки windriver'a.
Точно не проверял, но для х4 значения не сильно уменьшались.
Смотрел чипском на внутреннем интерфейсе ядра пакеты записи появлялись групами по 8 пакетов. Внутри группы была задержка в 3 такта частоты, между группой тактов 10. Как я уже писал в пакете было только 2 DW payload.
vechnost
Jul 26 2008, 05:16
esli ya pravilno ponyal vopros, to eto zavisit ot kakoy request sdelayet processor, i zavisit konechno ot processora. AMD/Intel processori v principe ne mogut prosit bolshe odnogo cache line-a, eto 64byte-a, sto bez problem ukladivaetsya v odin pcie paket. esli ti smozes zastavit processor poprosit cache line iz memory mapped space-a na tvoyey pcie plate, to uvidis bolshoy payload.
Yesli processor prosit paru dword-ov, stolko i polucit. V chipset v principe ne kombiniruyetsa mnozestvo request-ov.
Костян
Jul 29 2011, 11:45
QUOTE (NiOS @ Apr 7 2008, 13:25)

Максимум, что я получил для Completer - это запись - 120Мбайт/с, чтение - 10Мбайт/с.
Максимально в этом режиме можно пересылать только два DWORD полезных данных в пакете в каждую сторону.
Больше DW только в режиме Reqester.
А какой приоритет TC использовали в пакете ?
Сюдя по невысокой скорости чтения , стояло по умолчанию TC0
dmitry-tomsk
Jul 29 2011, 17:02
Цитата(Костян @ Jul 29 2011, 14:45)

А какой приоритет TC использовали в пакете ?
Сюдя по невысокой скорости чтения , стояло по умолчанию TC0
да xilinx ядра только TC0 и разрешают
Eugenius
Jul 31 2011, 17:45
Обычно используем DMA и скорость записи/чтения в режиме completer не замеряли.
Но недавно полез с чипскопом в pci-ный модуль и заметил следующее.
Раньше, на старых материнских платах, начиная с P4 до Core2Duo под Win2k/2003Server, обмен процессора с девайсом производился всегда строго по одному слову (4 байта). Правда, программную часть толком не копали.
На современных же системах: Core i7/Win7 обмен идёт уже блоками по 16 слов (64 байта). Встречаются транзакции и меньшей длины, но основной поток всё же 16DW.
И ещё один момент. Есть такое мнение, существенный вклад тут и чипсета. В системе на i7 ещё под Win2003 наблюдались пересылки по 2-3-4DW. Вероятно, хост-контроллер сам уже умеет склеивать последовательные транзакции.
QUOTE (dmitry-tomsk @ Jul 29 2011, 16:02)

да xilinx ядра только TC0 и разрешают
обойти это нельзя никак ?
QUOTE
На современных же системах: Core i7/Win7 обмен идёт уже блоками по 16 слов (64 байта). Встречаются транзакции и меньшей длины, но основной поток всё же 16DW.
Вы хотите сказать, что макс пакет данных 16DW ? А как же стандарт со своими 1024DW , как это реализовать ?
dmitry-tomsk
Aug 1 2011, 07:08
Цитата(Костян @ Aug 1 2011, 09:18)

обойти это нельзя никак ?
Вы хотите сказать, что макс пакет данных 16DW ? А как же стандарт со своими 1024DW , как это реализовать ?
зайдите на intensys.com, посмотрите как сделано, там есть исходники для windriver
Eugenius
Aug 2 2011, 18:58
Цитата(Костян @ Aug 1 2011, 10:18)

Вы хотите сказать, что макс пакет данных 16DW ? А как же стандарт со своими 1024DW , как это реализовать ?
Это вопрос реализации обмена процессора с системными устройствами. Тут уж Intel/Microsoft как хотят, так и поступают. Можно лишь оценивать эффективность решения.
Вот ограничения чипсета на длину пакета (128/256 байт), когда устройсто в режиме DMA при всём желании не может передавать больши блоки данных - это, действительно, не полная поддержка стандарта PCI-E.
QUOTE (dmitry-tomsk @ Aug 1 2011, 05:08)

зайдите на intensys.com, посмотрите как сделано, там есть исходники для windriver
спасибо, разбираемся.
Пока никак не могу понять, зачем они используют прерывания.
QUOTE
Это вопрос реализации обмена процессора с системными устройствами. Тут уж Intel/Microsoft как хотят, так и поступают. Можно лишь оценивать эффективность решения.
понятно. попробуем на низком уровне подцепится к pcie, без windriver
dmitry-tomsk
Aug 3 2011, 08:39
Цитата(Костян @ Aug 3 2011, 09:57)

спасибо, разбираемся.
Пока никак не могу понять, зачем они используют прерывания.
понятно. попробуем на низком уровне подцепится к pcie, без windriver
прерывания используются для сигнализации об окончании обмена. А какая у Вас плис?
QUOTE (dmitry-tomsk @ Aug 3 2011, 06:39)

прерывания используются для сигнализации об окончании обмена. А какая у Вас плис?
V5 ML506
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.