Jump to content

    

Скорость одиночных транзакций

Имеется Arria 2GX и связанный с нею модуль на базе NanoETX Intel Antom под LINUX

Наблюдается скорость следования одиночных транзакций

- по записи период следования примерно 120нс

- по чтению период следования примерно 1800нс

 

реальная задержка ответа на запрос чтения составляет менее 50нс...

Вопрос, это нормально что по чтению так медленно или где то что то не так?

Подскажите, можно ли ускорить темп одиночных транзакций чтения?

 

Share this post


Link to post
Share on other sites
Имеется Arria 2GX и связанный с нею модуль на базе NanoETX Intel Antom под LINUX

Наблюдается скорость следования одиночных транзакций

- по записи период следования примерно 120нс

- по чтению период следования примерно 1800нс

 

реальная задержка ответа на запрос чтения составляет менее 50нс...

Вопрос, это нормально что по чтению так медленно или где то что то не так?

Подскажите, можно ли ускорить темп одиночных транзакций чтения?

 

Приветствую.

Не буду расспрашивать об особенностях вашей реализации, тем более, что работаю на Xilinx.

Посоветую лишь http://www.4shared.com/file/05UAB2jM/PCI_E...rchitectur.html

Очень неплохая книга. Все, что и в стандарте, но более понятно.

А по времянкам на одиночных транзакциях у меня приблизительно так-же.

Удачи вам.

Share this post


Link to post
Share on other sites
Имеется Arria 2GX и связанный с нею модуль на базе NanoETX Intel Antom под LINUX

Наблюдается скорость следования одиночных транзакций

- по записи период следования примерно 120нс

- по чтению период следования примерно 1800нс

 

реальная задержка ответа на запрос чтения составляет менее 50нс...

Вопрос, это нормально что по чтению так медленно или где то что то не так?

Подскажите, можно ли ускорить темп одиночных транзакций чтения?

Нельзя, светлый путь - только dma.

Share this post


Link to post
Share on other sites
Нельзя, светлый путь - только dma.

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

Share this post


Link to post
Share on other sites
Просто очень странно что разница между циклами почти в десять раз. Dma конечно здорово но если в приложении не используются блочные пересылки смысла от него тоже нет.

А что странного? Для записи цпу выполняет команды записи в память одну за другой, а для чтения - нужно ждать ответа перед выполнением следующей команды, а задержка в pcie очень большая.

Share this post


Link to post
Share on other sites

Какая же латентность у канала? Получается примерно 800-900нс в одну сторону.

 

Share this post


Link to post
Share on other sites

По работе использую плату Stratix IV GX Dev. Kit, включена в режиме х8 в ПК под Fedore. Интервалы между запросами на запись порядка 40 нс, на чтение - 400 нс.

Share this post


Link to post
Share on other sites

если я все правильно понимаю скорость следования одиночных транзакций не зависит от количества лэйнов.

а вот с чем связана моя латентность я уже ума не приложу... всеж 400нс это не 1800нс...

хотя может много зависит от руткомплекса, надо будет поэкспериментировать еще где нить

Share this post


Link to post
Share on other sites
По работе использую плату 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 например)?

Share this post


Link to post
Share on other sites
Наблюдается скорость следования одиночных транзакций

- по записи период следования примерно 120нс

- по чтению период следования примерно 1800нс

Можно спросить - чем Вы меряете скорость транзакций?

 

 

Share this post


Link to post
Share on other sites

Еще раз в тему. Мы настроили обмен между SP605 и ML605 через PCIe свич. SP605 постоянно записывает данные в память ML605. Настроили пины на платах так, что SP605 меняет состояние пина, когда пакет отправляется, а ML605 - когда пакет принимается. На пины смотрим осциллографом.

В итоге реальная задержка - 1700+-50нс. Пробовали делать двухсторонний обмен - т.е. SP605 читает данные из памяти ML605 - получили 3400нс.

Вопрос - почему у меня ваши тайминги не получаются?

Ведь хост в этих делах, вроде как, участие не принимает? Или принимает?

Share this post


Link to post
Share on other sites
Имеется Arria 2GX и связанный с нею модуль на базе NanoETX Intel Antom под LINUX

Наблюдается скорость следования одиночных транзакций

- по записи период следования примерно 120нс

- по чтению период следования примерно 1800нс

 

реальная задержка ответа на запрос чтения составляет менее 50нс...

Вопрос, это нормально что по чтению так медленно или где то что то не так?

Подскажите, можно ли ускорить темп одиночных транзакций чтения?

Всё абсолютно правильно, одиночные транзакции записи на порядок быстрее транзакций чтения. Это характерно для шин PCI/PCIe и связано с механизмом кэширования записи, т. н. Posted Write (отложенная запись). Когда вы записываете данные в плату - устройство (возможно, мост) может и "не торопиться" выполнять физическую запись, поэтому только запоминает в кэше и отпускает процессор, так как на дальнейшее выполнение программы это не влияет, а вот когда происходит чтение - устройство обязано сначала отработать все предыдущие posted-транзакции записи и только потом физическое чтение, которое невозможно отложить в принципе. Пока всё это не будет выполнено - процессор висит и ждёт, так как прочитанные данные влияют на дальнейший ход программы.

Share this post


Link to post
Share on other sites
Всё абсолютно правильно, одиночные транзакции записи на порядок быстрее транзакций чтения. Это характерно для шин PCI/PCIe и связано с механизмом кэширования записи,

 

Не совсем так. Транзакция записи идёт только в одну сторону, а транзакция чтения - туда и обратно. Вот и получается в два раза больше по времени.

 

 

 

 

 

Share this post


Link to post
Share on other sites
Не совсем так. Транзакция записи идёт только в одну сторону, а транзакция чтения - туда и обратно. Вот и получается в два раза больше по времени.

:biggrin:

Смайлик забыли поставить.

Вообще-то, у топикстартера разница времён на порядок.

Share this post


Link to post
Share on other sites

Подниму старую тему, так как уже на протяжении 3 лет меня терроризирует начальник, почему время на чтение по PCIE составляет 400нс. Сейчас собрал новый проект на Arria V, на ней получилось 700нс на одиночное чтение и опять этот вопрос всплыл. Может кто расписать на пальцах, желательно с сылками на литературу, почему такая латентность?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this