Наносекундная синхронизация по ядру? - PullRequest
0 голосов
/ 09 декабря 2011

Я планирую записать некоторое программное обеспечение непосредственно на сетевую карту FPGA, чтобы перехватывать входящие настроенные сетевые пакеты.

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

Какие инструменты синхронизации наносекундной длительности можно использовать из-за требуемой точности, а также из-за того, что я синхронизирую продолжительность между приемом на сетевой карте PCI-E и приемом в ядре?

Это будет в Linux, с кодом "драйвера" (я могу поставить пользовательское приложение на этом уровне, чтобы уменьшить задержку), написанным на C.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

В linux доступ к тактовой частоте ЦП осуществляется через tsc , эквивалентный Windows QueryPerformanceCOunter

1 голос
/ 09 декабря 2011

clock_gettime использует HPET, если доступно, что является простым, надежным и максимально надежным.

Если HPET недоступен , у вас нет надежного таймера.в любом случае, так что, к несчастью, разрешение clock_gettime будет хуже, но это только то, что есть, и вы ничего не можете с этим поделать.

Любой другой источник, включая tsc, имеет либо меньшее разрешение, либоненадежный или оба.

0 голосов
/ 09 декабря 2011

В программном обеспечении все происходит на множестве системных часов. Я думаю, вы можете использовать любую функцию измерения времени, которая возвращает количество прошедших тактов, например, clock() должно дать вам достаточную точность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...