Цитата(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?