Jump to content

    
Sign in to follow this  
Kopart

PCI-E. Сколько DW данных в TLP пакете возможно без DMA?

Recommended Posts

В Virtex 5 с их ядром PCI-E (hard).

 

Проверил теоретическую скорость (без DMA, чтение всегда подтверждается на trn-интерфейсе).

Получилось не больше 70Мб/с - на запись. Но я все не могу найти ответ на вопрос - без поддержки DMA в плате возможно чтобы root complex (ПК) пересылал больше чем одно DW в пакете.

 

Пока получается на 3 DW заголовка 1 DW данных (приблизительно и соответсвуют 70Mб/c).

 

Возможно ли слать из ПК больше чем одно DW данных в пакете без поддержки DMA в целевой плате? (WinDriver, Чипсет G31)

Share this post


Link to post
Share on other sites

Меня тоже очень интересует данный вопрос...

Балуюсь с софтовым ядром ксалинкса (endpoint v3.6) на Virtex-4.

Мне пока не удалось переслать более 1 dw данных с хоста...

Может у кого-нить имеется опыт работы с PCI-e ? Поделитесь, подскажите !

Share this post


Link to post
Share on other sites
Мне пока не удалось переслать более 1 dw данных с хоста...

Может у кого-нить имеется опыт работы с PCI-e ? Поделитесь, подскажите !

 

Максимум, что я получил для Completer - это запись - 120Мбайт/с, чтение - 10Мбайт/с.

 

Максимально в этом режиме можно пересылать только два DWORD полезных данных в пакете в каждую сторону.

 

Больше DW только в режиме Reqester.

Share this post


Link to post
Share on other sites

Можно попробовать использовать команды пересылки из расширений MMX/SSE, если речь идет о хосте x86 архитектуры. Сам не специалист по такого рода программированию, но было дело для пакетного обмена на высокой скорости через PCI заказчик использовал команды из этих расширений. При этом за одну транзакцию PCI пересылалось четыре слова. Как на эти команды отреагирует PCIe мост, сказать не могу. Кроме того, для PCI если обращения шли по последовательным адресам, то мост их "слепливал" в одну транзакцию шины.

Share this post


Link to post
Share on other sites
Это на скольки лейнах ?? Маловато будет!

Это было для х8 с ядром Xilinx Block Plus и Windriver, режим - Completer (по аналогии с pci - target). Время оценивалось по выходу из пользовательской функции пересылки windriver'a.

Точно не проверял, но для х4 значения не сильно уменьшались.

Смотрел чипском на внутреннем интерфейсе ядра пакеты записи появлялись групами по 8 пакетов. Внутри группы была задержка в 3 такта частоты, между группой тактов 10. Как я уже писал в пакете было только 2 DW payload.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Максимум, что я получил для Completer - это запись - 120Мбайт/с, чтение - 10Мбайт/с.

 

Максимально в этом режиме можно пересылать только два DWORD полезных данных в пакете в каждую сторону.

 

Больше DW только в режиме Reqester.

А какой приоритет TC использовали в пакете ?

Сюдя по невысокой скорости чтения , стояло по умолчанию TC0

Share this post


Link to post
Share on other sites

Обычно используем DMA и скорость записи/чтения в режиме completer не замеряли.

Но недавно полез с чипскопом в pci-ный модуль и заметил следующее.

 

Раньше, на старых материнских платах, начиная с P4 до Core2Duo под Win2k/2003Server, обмен процессора с девайсом производился всегда строго по одному слову (4 байта). Правда, программную часть толком не копали.

 

На современных же системах: Core i7/Win7 обмен идёт уже блоками по 16 слов (64 байта). Встречаются транзакции и меньшей длины, но основной поток всё же 16DW.

 

И ещё один момент. Есть такое мнение, существенный вклад тут и чипсета. В системе на i7 ещё под Win2003 наблюдались пересылки по 2-3-4DW. Вероятно, хост-контроллер сам уже умеет склеивать последовательные транзакции.

Edited by Eugenius

Share this post


Link to post
Share on other sites
да xilinx ядра только TC0 и разрешают

обойти это нельзя никак ?

 

 

На современных же системах: Core i7/Win7 обмен идёт уже блоками по 16 слов (64 байта). Встречаются транзакции и меньшей длины, но основной поток всё же 16DW.

Вы хотите сказать, что макс пакет данных 16DW ? А как же стандарт со своими 1024DW , как это реализовать ?

Share this post


Link to post
Share on other sites
обойти это нельзя никак ?

 

 

 

Вы хотите сказать, что макс пакет данных 16DW ? А как же стандарт со своими 1024DW , как это реализовать ?

зайдите на intensys.com, посмотрите как сделано, там есть исходники для windriver

Share this post


Link to post
Share on other sites
Вы хотите сказать, что макс пакет данных 16DW ? А как же стандарт со своими 1024DW , как это реализовать ?

Это вопрос реализации обмена процессора с системными устройствами. Тут уж Intel/Microsoft как хотят, так и поступают. Можно лишь оценивать эффективность решения.

 

Вот ограничения чипсета на длину пакета (128/256 байт), когда устройсто в режиме DMA при всём желании не может передавать больши блоки данных - это, действительно, не полная поддержка стандарта PCI-E.

Share this post


Link to post
Share on other sites
зайдите на intensys.com, посмотрите как сделано, там есть исходники для windriver

спасибо, разбираемся.

Пока никак не могу понять, зачем они используют прерывания.

 

Это вопрос реализации обмена процессора с системными устройствами. Тут уж Intel/Microsoft как хотят, так и поступают. Можно лишь оценивать эффективность решения.

понятно. попробуем на низком уровне подцепится к pcie, без windriver

Share this post


Link to post
Share on other sites
спасибо, разбираемся.

Пока никак не могу понять, зачем они используют прерывания.

 

 

понятно. попробуем на низком уровне подцепится к pcie, без windriver

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this