Каков максимальный размер одного Memwr TLP (BAR ACCESS) от корневого комплекса до конечной точки на платформе X86?

Каков максимальный размер одного Memwr TLP (BAR ACCESS) от корневого комплекса до конечной точки на платформе X86?

Настройка моей системы заключается в том, что к ПК X86 подключено конечное устройство PCIe, размер bar0 этого устройства составляет 1 МБ, и этот диапазон памяти был сопоставлен с пространством пользователя.

Если я копирую данные в часть памяти, я могу получить доступ к бару (MemWr) на стороне конечной точки. Но если я сделаю большую копию, например. 1 МБ, запросы Memwr всегда разбиваются на очень маленькие TLP Memwr (8 байт или 4 байта), что далеко от максимального размера полезной нагрузки. с составляет 128 байт.

Почему корневой комплекс разделяет запросы? Это связано с платформой X86? Каков максимальный размер Memwr TLP от корневого комплекса до конечной точки на платформе X86?

Спасибо.

C


person TiisCool    schedule 02.07.2013    source источник
comment
Я знаю, что лучшей производительности можно добиться, используя DMA. Используя чтение DMA, мы можем получить Cpl с 64 байтами в одном TLP (обычно для RCB). Но DMA, о котором мы здесь говорим, — это прямой доступ к памяти хоста. FPGA может получить доступ (rd/wr) к памяти хоста с помощью прямого доступа к памяти. Мой вопрос заключается в том, может ли HOST выполнять прямой доступ к памяти FPGA, когда память FPGA сопоставлена ​​с адресом BAR? Основываясь на том, что я сейчас заметил, memwr от хоста до FPGA ограничен 8 байтами на TLP, кроме размера MPS.   -  person TiisCool    schedule 02.07.2013
comment
даже я использую memcpy для доступа (wr или rd) BAR0 с большим диапазоном (например, 1 КБ), я все равно получаю маленькие TLP (‹ = 8 байт). Похоже, что запросы memwr (от HOST к FPGA) были разделены, чтобы соответствовать 8-байтовой границе, отличной от MPS (128 байт).   -  person TiisCool    schedule 02.07.2013


Ответы (1)


Максимальный размер полезной нагрузки (MPS), который используется в канале, является минимальным между EPs MPS и RCs MPS. В вашем случае кажется, что ограничивающей фигурой здесь является RC.

Другая причина, по которой это происходит, заключается в том, что если у вас недостаточно кредитов управления потоком (FCC), ваш водитель может самостоятельно решить разделить MWr, вместо того, чтобы ждать, пока FCC достигнет необходимого значения, если они вообще доберутся туда.

Привет, Надав.

person Nadav    schedule 03.07.2013
comment
Спасибо за ответ, Надав. Я также думаю, что ограничение от RC. И это не должно быть вызвано управлением потоком. Поскольку я скопировал только 1 КБ данных (memwr) в конечную точку, и перед этой передачей шина в основном простаивает. - person TiisCool; 04.07.2013