Перейти к содержанию
    

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

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

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

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

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

 

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

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

 

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

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

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

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

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

Удачи вам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По работе использую плату 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 например)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

:biggrin:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...