|
Bus Master DMA для PCIe |
|
|
|
Oct 8 2015, 19:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Приветствую. Собрал систему (см. рисунок) для передачи данных по PCIe. Ядро AXI Bridge for PCIe сконфигурировано в режиме x4, 64 bit, 250MHz, должно позволить прокачивать поток 16 Гбит/с. В качестве DMA используется ядро AXI DMA v7.1 в режиме Scatter-Gather. Кольцо дескрипторов и буферы данных выделяются в памяти ядра Linux. Ранее было сделано так, пропускная способность канала составляла ~6 Гбит/с. Тут опять упёрся в 6 Гбит/с, думал, что софт ограничивает производительность канала. Потом убрал вмешательство системы в работу DMA - инициализирую кольцо дескрипторов, запускаю DMA. DMA бросает данные пока не закончатся дескрипторы. Оценивая время обработки кольца дескрипторов и переданный объём данных, получаю чуть больше 6 Гбит/с. Вытянул сигналы AXI4-Stream между FIFO и DMA на ILA, вижу - FIFO держит TVALID всегда в 1, а DMA периодически (очень часто) сбрасывает TREADY в 0. Получается DMA является виновником ограничения скорости потока. В доке вычитал, что в тестах получали пропускную способность до ~70%, но это ~11,2 Гбит/с, меня бы устроило. Вопрос - как поднять производительность DMA? Как понимаю, AXI Interconnect и PCIe мост могут тормозить DMA?
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Oct 12 2015, 10:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(toshas @ Oct 12 2015, 12:43)  Под линуксом выполните "lspci -vv" и посмотрите с какими параметрами ядро сконфигурировано, а с какими система разрешила работать. Слот в котором стоит плата поддерживает Gen 3, ядро настроено на Gen 2, почему Gen 2 должен не установиться? Нашёл, надо было вводить команду с правами суперпользователя, получил следующее: Цитата 07:00.0 Multimedia controller: Xilinx Corporation Device 7024 Subsystem: Xilinx Corporation Device 0007 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 31 Region 0: Memory at f7100000 (64-bit, non-prefetchable) [size=128K] Capabilities: [80] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000feeff00c Data: 4182 Capabilities: [c0] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 5GT/s, Width x4, ASPM not supported, Exit Latency L0s unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR-, OBFF Not Supported DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Kernel driver in use: htg_v7_g3 Получается что работает как Gen 1? PS: Как его загнать в 5 GT/s?
|
|
|
|
Сообщений в этой теме
doom13 Bus Master DMA для PCIe Oct 8 2015, 19:17 toshas Цитата(doom13 @ Oct 8 2015, 22:17) Кольцо... Oct 8 2015, 19:44 doom13 Цитата(toshas @ Oct 8 2015, 22:44) Может ... Oct 8 2015, 19:53 toshas На сколько тактов сбрасывает ? Какими пачками идет... Oct 9 2015, 04:27 doom13 На AXI4-Stream между FIFO и DMA картина следующая: Oct 9 2015, 12:14 toshas А что дальше, между dma и pcie ?
Я к тому, что ядр... Oct 9 2015, 12:26 doom13 На AXI4 между DMA и AXI Interconnect вот такая шту... Oct 9 2015, 13:23 doom13 Засинхронизировал триггер по начальному адресу буф... Oct 10 2015, 10:34 doom13 Увеличил burst size для DMA до максимального 256, ... Oct 10 2015, 14:13 toshas Можете в pcie-mm ядре встать анализатором на pipe ... Oct 10 2015, 19:22 doom13 Цитата(toshas @ Oct 10 2015, 22:22) Может... Oct 10 2015, 19:34 doom13 Цитата(toshas @ Oct 10 2015, 22:22) Может... Oct 16 2015, 11:33  RobFPGA Приветствую!
Цитата(doom13 @ Oct 16 2015... Oct 16 2015, 14:33   doom13 Цитата(RobFPGA @ Oct 16 2015, 17:33) ... ... Oct 16 2015, 19:45 toshas Мне кажется pcie-mm всегда позиционировалось как у... Oct 10 2015, 20:34 doom13 Цитата(toshas @ Oct 10 2015, 23:34) Мне к... Oct 10 2015, 21:23  RobFPGA Приветствую!
Для начала неплохо бы убедится ч... Oct 11 2015, 12:20   doom13 Цитата(RobFPGA @ Oct 11 2015, 15:20) Для ... Oct 11 2015, 20:19   doom13 Цитата(RobFPGA @ Oct 11 2015, 15:20) ... ... Oct 12 2015, 09:08  RobFPGA Приветствую!
Цитата(doom13 @ Oct 12 2015... Oct 12 2015, 14:33   doom13 Цитата(RobFPGA @ Oct 12 2015, 17:33) Хи-x... Oct 12 2015, 15:36 toshas Попробуйте воткнуть плату в слот ближайший к проце... Oct 12 2015, 11:06 doom13 Цитата(toshas @ Oct 12 2015, 14:06) Попро... Oct 12 2015, 12:01  KPiter Нет ли в биосе Initialization at Gen1\Gen2... Oct 12 2015, 12:33   doom13 Цитата(KPiter @ Oct 12 2015, 15:33) Нет л... Oct 12 2015, 12:58    KPiter Не понял был ли испробован вариант: поставить Xili... Oct 12 2015, 13:19 doom13 Цитата(toshas @ Oct 12 2015, 14:06) Попро... Oct 12 2015, 13:40 gosu-art 1. посмотреть в биосе материнки настройки PCIe
У ... Oct 12 2015, 11:09 toshas Есть ли в биосе настройка pcie spread spectrum clo... Oct 12 2015, 13:57 doom13 Цитата(toshas @ Oct 12 2015, 16:57) Есть ... Oct 12 2015, 14:08 gosu-art Может пока отложить видеокарту и подключится к вст... Oct 12 2015, 14:15 doom13 На другом ПК (на котором и видео работает в режиме... Oct 13 2015, 15:04 toshas Интересно узнать какую скорость удастся достигнуть... Oct 13 2015, 16:59 doom13 Перебрали систему - плата запустилась на 5 GT/s. Н... Oct 14 2015, 14:51 krux burst 128 попробуйте.
в большинстве случаев PCIe P... Oct 14 2015, 15:08 doom13 Цитата(krux @ Oct 14 2015, 18:08) burst 1... Oct 15 2015, 07:23 doom13 На верхнем слоте PCIe получил пропускную способнос... Oct 15 2015, 18:16 toshas Нет я как раз предлагал посмотреть трафик в систем... Oct 16 2015, 17:14 RobFPGA Приветствую!
Цитата(toshas @ Oct 16 2015... Oct 16 2015, 17:55  doom13 Цитата(RobFPGA @ Oct 16 2015, 20:55) Так ... Dec 1 2015, 11:06 RobFPGA Приветствую!
BVALID формирует axi_bridge ког... Oct 16 2015, 21:25 RobFPGA Приветствую!
Как говорится "Даренному ко... Oct 18 2015, 20:21 doom13 Цитата(RobFPGA @ Oct 18 2015, 23:21)
А ч... Oct 19 2015, 06:42 RobFPGA Приветствую!
Цитата(doom13 @ Oct 19 2015... Oct 19 2015, 07:45 doom13 Цитата(RobFPGA @ Oct 19 2015, 10:45) Кодa... Oct 19 2015, 08:53  RobFPGA Приветствую!
Цитата(doom13 @ Oct 19 2015... Oct 19 2015, 09:01 doom13 Для AXI Interconnect эти параметры надо править:
К... Oct 19 2015, 10:10 RobFPGA Приветствую!
Увы это издержки "удобств... Oct 19 2015, 11:07 Dmitrij68 Цитата(RobFPGA @ Oct 19 2015, 14:07) Прив... Oct 29 2015, 08:03 Dmitrij68 Цитата(RobFPGA @ Oct 19 2015, 14:07) Прив... Oct 29 2015, 08:03 doom13 Сделал всё, как Вы советовали. Должно было увеличи... Oct 19 2015, 13:42 doom13 Уточню вопрос: достаточно ли последних двух осцилл... Oct 19 2015, 18:59 RobFPGA Приветствую!
А у Вас часом не включен Interru... Oct 19 2015, 19:35 doom13 Проверю конечно, но разрешал прерывание по заверше... Oct 19 2015, 19:59 doom13 Извиняюсь, ввёл в заблуждение. Рисунки из поста вы... Oct 20 2015, 07:09 RobFPGA Приветствую!
По картинкам видно что тормозит ... Oct 20 2015, 09:34 doom13 Цитата(RobFPGA @ Oct 20 2015, 12:34) По к... Oct 20 2015, 12:37 RobFPGA Приветствую!
"Ну, что же Вы, Иван Иваныч... Oct 20 2015, 12:42 doom13 Цитата(RobFPGA @ Oct 20 2015, 15:42)
Зап... Oct 20 2015, 14:40 doom13 Надо выбросить AXI Interconnect, что автоматом сге... Oct 29 2015, 08:09 doom13 Приветствую.
Новый вопрос по DMA. Сейчас делаю пер... Nov 30 2015, 12:03 RobFPGA Приветствую!
Дело не в том что для READ треб... Dec 1 2015, 13:45 doom13 Цитата(RobFPGA @ Dec 1 2015, 16:45) Дело ... Dec 1 2015, 14:16 doom13 Похоже, проблема либо в AXI Interconnect, либо в с... Dec 2 2015, 11:07
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|