|
Скорость одиночных транзакций |
|
|
|
May 6 2011, 18:43
|
Местный
  
Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647

|
Цитата(aosp @ May 6 2011, 21:01)  Имеется Arria 2GX и связанный с нею модуль на базе NanoETX Intel Antom под LINUX Наблюдается скорость следования одиночных транзакций - по записи период следования примерно 120нс - по чтению период следования примерно 1800нс
реальная задержка ответа на запрос чтения составляет менее 50нс... Вопрос, это нормально что по чтению так медленно или где то что то не так? Подскажите, можно ли ускорить темп одиночных транзакций чтения? Приветствую. Не буду расспрашивать об особенностях вашей реализации, тем более, что работаю на Xilinx. Посоветую лишь http://www.4shared.com/file/05UAB2jM/PCI_E...rchitectur.htmlОчень неплохая книга. Все, что и в стандарте, но более понятно. А по времянкам на одиночных транзакциях у меня приблизительно так-же. Удачи вам.
|
|
|
|
|
Feb 15 2012, 06:33
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 15-01-09
Пользователь №: 43 406

|
Цитата(novartis @ Jun 7 2011, 21:16)  По работе использую плату Stratix IV GX Dev. Kit, включена в режиме х8 в ПК под Fedore. Интервалы между запросами на запись порядка 40 нс, на чтение - 400 нс. Сам использую Stratix IV GX Dev. Kit, но не могу получить такие же результаты. Смотрел времена на МБ с Intel P55 (160/1800) и с Intel 5500 (180/780). Использую PCIE Core от Altera для QSys (PCI 1.0 x8). Может кто что посоветует для уменьшения задержек? Может ядро какое другое (PLDA например)?
--------------------
|
|
|
|
|
Jun 19 2012, 13:29
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(aosp @ May 6 2011, 22:01)  Имеется Arria 2GX и связанный с нею модуль на базе NanoETX Intel Antom под LINUX Наблюдается скорость следования одиночных транзакций - по записи период следования примерно 120нс - по чтению период следования примерно 1800нс
реальная задержка ответа на запрос чтения составляет менее 50нс... Вопрос, это нормально что по чтению так медленно или где то что то не так? Подскажите, можно ли ускорить темп одиночных транзакций чтения? Всё абсолютно правильно, одиночные транзакции записи на порядок быстрее транзакций чтения. Это характерно для шин PCI/PCIe и связано с механизмом кэширования записи, т. н. Posted Write (отложенная запись). Когда вы записываете данные в плату - устройство (возможно, мост) может и "не торопиться" выполнять физическую запись, поэтому только запоминает в кэше и отпускает процессор, так как на дальнейшее выполнение программы это не влияет, а вот когда происходит чтение - устройство обязано сначала отработать все предыдущие posted-транзакции записи и только потом физическое чтение, которое невозможно отложить в принципе. Пока всё это не будет выполнено - процессор висит и ждёт, так как прочитанные данные влияют на дальнейший ход программы.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jun 20 2012, 12:56
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(gerber @ Jun 19 2012, 16:29)  Всё абсолютно правильно, одиночные транзакции записи на порядок быстрее транзакций чтения. Это характерно для шин PCI/PCIe и связано с механизмом кэширования записи, Не совсем так. Транзакция записи идёт только в одну сторону, а транзакция чтения - туда и обратно. Вот и получается в два раза больше по времени.
|
|
|
|
|
Jun 21 2012, 14:24
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(dsmv @ Jun 20 2012, 16:56)  Не совсем так. Транзакция записи идёт только в одну сторону, а транзакция чтения - туда и обратно. Вот и получается в два раза больше по времени. Смайлик забыли поставить. Вообще-то, у топикстартера разница времён на порядок.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Feb 7 2014, 03:03
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Цитата(krux @ Feb 6 2014, 00:13)  возьмем примерные значения времянок: Tx Application (min packet) = 15нс Tx Application (max packet) = 63нс TX Data Link + Transaction Layer = 15нс TX Data Link + Transaction Layer = 63нс TX SerDes + PMA + PCS + MAC = 20нс RX SerDes + PMA + PCS + MAC = 30нс RX Data Link + Transaction Layer (min packet) = 15нс RX Data Link + Transaction Layer (max packet) = 63нс RX Root-complex Action = 15нс
в случае, если пришедший в root-complex read-запрос (прошло ~ 90-110нс) не попал в открытую страницу DRAM (а там 99,95% miss rate) то сразу после этого по стандарту PCIe он обязан отправить обратно completion со значением not ready (прошло ещё ~ 110нс), и примерно через 50-70нс открывается нужная страница в DRAM. после этого отправляется следующий completion уже с данными (считайте ещё ~ от 110 до 240нс) это примерный минимум.
больше может получаться, если например, у вас multi-lane 4х или больше. тогда в зависимости от физического разбега по длине между лейнами (а там может оказаться даже 8 дюймов) со стороны RX потребуется ещё дополнительное время на пересборку раскиданного пакета.
вот и считайте.
если же пакет по дороге побился, то происходит ещё и перезапрос на Data Link Layer, и вы можете получить не менее фантастические 2000+ нс Спасибо за ответ! Но я ничего не понял. откуда эти цифры? где про это прочитать? И у меня не root-complex. В плисине реализован Endpoint. Вновь пришедший read-запрос в моей пользовательской логике обрабатывается сразу же с детерменированной задержкой в несколько тактов. Пусть будет 5 тактов. Моя пользовательская логика тикает на частоте 125 МГц (8нс). Таким образом, с того момента как альтера выдаст мне пакет с запросом на чтение и до того момента, как я верну ей пакет с откликом на чтение, проходит 5*8=40нс. При работе с коркой от альтеры я оперирую Transaction Layer Packet. И вот мне бы хотелось понять (и потом пересказать своему начальнику), где потом набигают 700нс. Чего такого делает pcie корка или чего она ждет, чтобы начать возвращать пакет в линию. Data Link Layer такой медленный? И все ли дело на строне плис, может существенная задержка на стороне root-комплекса с обработкой пришедшего completion?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|