Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Встроенный

Создание устройства более точного времени с открытым исходным кодом

Инженеры Facebook создали и открыли исходный код открытого вычислительного устройства времени, важного компонента современной инфраструктуры времени. Чтобы сделать это возможным, мы придумали карту времени - карту PCI Express (PCIe), которая может превратить практически любой обычный сервер в устройство времени. С помощью сообщества OCP мы создали Open Compute Time Appliance Project и открыли исходный код всех аспектов Open Time Server. В этой статье рассказывается о разработке тайм-карт.

В марте 2020 года мы объявили, что находимся в процессе переключения серверов в наших центрах обработки данных (вместе с нашими потребительскими продуктами) на новую службу хронометража, основанную на протоколе сетевого времени (NTP). Новый сервис, созданный собственными силами, а затем открытый исходный код, был более масштабируемым и повысил точность хронометража в инфраструктуре Facebook с 10 миллисекунд до 100 микросекунд. Более точное ведение времени позволяет более совершенное управление инфраструктурой в наших центрах обработки данных, а также более высокую производительность распределенных баз данных.

В новой архитектуре времени на основе NTP используется Stratum 1 - важный компонент, который напрямую связан с авторитетным источником времени, таким как Глобальная навигационная спутниковая система (GNSS) или цезиевые часы, как показано ниже:

Многие компании полагаются на публичные пулы NTP, такие как time.facebook.com, в качестве своего Stratum 1. Однако у этого подхода есть свои недостатки. Эти пулы добавляют зависимость от подключения к Интернету и могут повлиять на общую безопасность и надежность системы. Например, если соединение потеряно или внешняя служба не работает, это может привести к сбоям или смещению сроков для зависимой системы.

Чтобы удалить эти зависимости, мы создали новое специализированное оборудование, называемое устройством времени, которое состоит из приемника GNSS и миниатюрных атомных часов (MAC). Пользователи приборов для измерения времени могут вести точное время даже в случае потери связи с GNSS. Создавая наше устройство времени, мы также изобрели карту времени, карту PCIe, которая может превратить любой обычный сервер в устройство времени.

Зачем нужен новый прибор для измерения времени?

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

Однако эти решения также имеют свои недостатки:

До сих пор компаниям приходилось соглашаться на эти компромиссы и работать в рамках ограничений, описанных выше. Мы решили, что пришло время попробовать что-то другое, поэтому серьезно рассмотрели, что потребуется для создания нового устройства времени, в частности, использующего архитектуру x86.

Создание прототипа прибора для измерения времени

Вот блок-схема того, что мы предполагали:

Все начинается с приемника GNSS, который обеспечивает время суток (ToD), а также один импульс в секунду (PPS). Когда приемник поддерживается высокостабильным генератором (например, атомными часами или кварцевым генератором, управляемым печью), он может обеспечивать время с точностью до наносекунды. Время доставляется по сети через стандартную сетевую карту, которая поддерживает ввод / вывод PPS и аппаратную метку времени пакетов, например NVIDIA Mellanox ConnectX-6 Dx, используемую в нашем первоначальном устройстве.

Выходные данные GPSDO передавались в метку времени EXT сетевой карты ConnectX-6 Dx. Кроме того, приемник GNSS предоставляет ToD через последовательный порт и популярный протокол передачи данных GPS, называемый NMEA. Использование инструмента ts2phc позволило нам синхронизировать физические аппаратные часы сетевой карты с точностью до пары десятков наносекунд, как показано ниже:

Наш прототип вселил в нас уверенность в возможности создания такого устройства. Однако есть много возможностей для улучшения.

Чтобы повысить надежность системы, мы разделили ее на две основные части:полезная нагрузка и доставка. Полезная нагрузка - это точное время, которое, по сути, представляет собой систему интерполяции, управляемую гетеродином для создания наносекунд измерения времени между последовательными сигналами PPS, полученными приемником GNSS. Мы рассмотрели вариант размещения GNSS-приемника, высокостабильного гетеродина и необходимой логики обработки в форм-факторе PCIe и назвали это временной картой (см. Ниже).

Вот набросок временной карты, которую мы изначально представляли на салфетке:

Мы использовали встроенный MAC, многополосный приемник GNSS и FPGA для реализации механизма времени. Работа механизма времени заключается в интерполяции в наносекундах требуемой степени детализации между последовательными сигналами PPS. Приемник GNSS также предоставляет ToD в дополнение к сигналу 1 PPS. В случае потери приема GNSS механизм времени полагается на текущую синхронизацию атомных часов на основе среднего набора последовательных импульсов PPS.

Механизм времени состоит из набора блоков обработки, реализованных на ПЛИС временной карты. Эти блоки обработки включают в себя различные фильтрацию, синхронизацию, проверку ошибок, отметку времени и подсистемы, связанные с PCIe, чтобы карта времени могла работать как периферийное устройство системы, обеспечивающее точное время для открытого сервера времени.

Следует отметить, что точность приемника GNSS находится в пределах десятков наносекунд, в то время как требуемая текущая синхронизация (калибровка) MAC находится в пределах 10 пикосекунд (в 1000 раз точнее).

Поначалу это кажется невозможным. Однако система GNSS обеспечивает синхронизацию на основе непрерывной связи со стандартным временем. Эта способность позволяет постоянно синхронизировать бортовые часы GNSS с источником времени, предоставленным его группировке, что практически не дает долговременной дрейфующей ошибки. Следовательно, калибровка MAC выполняется путем сравнения счетчика, управляемого MAC, и импульса PPS, предоставленного GNSS. Увеличение времени на сравнение позволяет нам достичь более высокой точности калибровки MAC. Конечно, это с учетом того, что MAC является линейной инвариантной системой во времени.

На этой блок-схеме вы можете увидеть сигнал 10 МГц от рубидиевых часов, поступающий в механизм времени. Этот тактовый сигнал может быть заменен входом SMA 10 МГц. Тактовый сигнал подается в модуль цифрового тактового сигнала и цифровую ФАПЧ (12,5x получается из 25 и делится на 2), в результате получается частота 125 МГц. 125 МГц (периоды 8 наносекунд) подаются на блок ToD.

Блок ToD связывает 8-наносекундные приращения цифровых значений 0b000001, поскольку LSB (младший значащий бит) связан с 250 пикосекундами (определяется 32 битами субсекундной точности на gPTP).

С другой стороны, сигнал PPS, отфильтрованный из GNSS, используется для моментального снимка результата приращений. Если 125 МГц является точным, накопленные приращения должны давать точные интервалы в 1 секунду. Однако в действительности всегда существует несоответствие между накопленным значением и теоретическим интервалом в 1 секунду.


Значения можно регулировать с помощью внутреннего контура регулирования PI (пропорционального и интегрального). Регулировку можно выполнить либо изменением значения 0b000001 с шагом 250 пикосекунд, либо точной настройкой 12,5x PPL. Кроме того, можно применять дополнительные (более точно настроенные) настройки, управляя рубидиевым генератором.

Чем дольше GNSS недоступна, тем больше теряется точность времени. Скорость ухудшения точности времени называется удержанием. Обычно задержка описывается как временные рамки точности и время, необходимое для ее превышения. Например, задержка MAC составляет 1 микросекунду в течение 24 часов. Это означает, что через 24 часа точность времени недетерминирована, но с точностью до 1 микросекунды.

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

Как правило, чем точнее настройка, тем лучше может быть достигнута эффективность удержания. Что касается доставки, использование сетевого адаптера с точным синхронизацией гарантирует, что сетевые пакеты получают очень точные отметки времени, что имеет решающее значение для поддержания точного времени, поскольку оно совместно используется с другими серверами в сети. Такая сетевая карта также может получать сигнал PPS непосредственно с карты учета рабочего времени.

После осмысления идеи и различных итераций реализации мы смогли собрать прототип.

Устройство времени в действии

Карта времени позволяет превратить любую машину x86 с сетевой картой, способной аппаратно устанавливать временные метки, в устройство времени. Эта система не зависит от того, работает ли она с протоколом NTP, PTP, SyncE или любым другим протоколом синхронизации времени, поскольку точность и стабильность, обеспечиваемые картой времени, достаточны практически для любой системы.

Прелесть использования карт PCIe в том, что систему можно собрать даже на домашнем ПК, если на нем достаточно слотов PCIe.

Следующим шагом будет установка Linux. Драйвер карты времени включен в ядро ​​Linux 5.15 или новее. Или его можно собрать из репозитория OCP GitHub на ядре 5.12 или новее.

Драйвер предоставит доступ к нескольким устройствам, включая часы PHC, GNSS, PPS и последовательные атомные часы:

$ ls -l / sys / class / timecard / ocp0 /

lrwxrwxrwx. 1 root 0 3 августа 19:49 устройство -> ../../../0000:04:00.0/

-r – r – r–. 1 корень 4096 3 августа 19:49 gnss_sync

lrwxrwxrwx. 1 корень 0 3 августа 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/

lrwxrwxrwx. 1 корень 0 3 августа 19:49 pps -> ../../../../../virtual/pps/pps1/

lrwxrwxrwx. 1 корень 0 3 августа 19:49 ptp -> ../../ptp/ptp2/

lrwxrwxrwx. 1 root 0 3 августа 19:49 ttyGNSS -> ../../tty/ttyS7/

lrwxrwxrwx. 1 root 0 3 августа 19:49 ttyMAC -> ../../tty/ttyS8/

Драйвер также позволяет нам отслеживать временную карту, приемник GNSS и состояние атомных часов, а также запускать новый битовый поток FPGA с помощью команды devlink cli.

Осталось только настроить сервер NTP и / или PTP на использование карты времени в качестве эталонных часов. Чтобы настроить chrony, достаточно указать атрибут refclock:

$ grep refclock /etc/chrony.conf
refclock PHC / dev / ptp2 tai poll 0 trust

И наслаждайтесь очень точным и стабильным сервером NTP Stratum 1:

источники $ chronyc
210 Количество источников =1
Имя MS / IP-адрес Stratum Poll Reach LastRx Последний образец
===============================================================================
# * PHC0 0 0 377 1 + 4 нс [+ 4 нс] +/- 36 нс

Для сервера PTP (например, ptp4u) сначала необходимо синхронизировать PHC карты времени с PHC сетевой карты. Это легко сделать с помощью инструмента phc2sys, который синхронизирует значения часов с высокой точностью, обычно не превышающей однозначных единиц наносекунд:

$ phc2sys -s / dev / ptp2 -c eth0 -O 0 -m

Для большей точности рекомендуется подключать карту времени и сетевой адаптер к одной линии PCIe ЦП. Для большей точности можно подключить выход PPS временной карты к входу PPS сетевой карты.

Чтобы проверить и подтвердить точность, мы использовали внешнее устройство проверки под названием Calnex Sentinel, подключенное к той же сети через несколько коммутаторов и независимую антенну GNSS. Он может выполнять тестирование PPS, а также протоколы NTP и / или PTP:

Синяя линия представляет результаты измерения NTP. Точность остается в пределах ± 40 микросекунд на протяжении 48-часового интервала измерения.

Оранжевая линия представляет результаты измерения PTP. Смещение практически равно 0 в диапазоне наносекунд.

Действительно, когда мы сравниваем 1 PPS между выводом карты времени и внутренним эталоном Calnex Sentinel, мы видим, что объединенная ошибка находится в пределах ± 200 наносекунд:

Но что еще более важно, эти измерения демонстрируют стабильность выходных сигналов устройства времени.

В случае потери сигнала GNSS нам необходимо убедиться, что временной сдвиг (он же задержка) карты времени с атомарной поддержкой остается в пределах 1 микросекунды за 24 часа. Вот график, показывающий задержку атомных часов (SA.53s) в течение 24-часового интервала. Как видите, дрейф PPS остается в пределах 300 наносекунд, что находится в пределах спецификации атомных часов.

Модульная конструкция карты времени позволяет заменять атомные часы кварцевым генератором с термокомпенсацией (OCXO) или кварцевым генератором с температурной компенсацией (TCXO) для бюджетного решения с компромиссом в отношении возможностей удержания.

Открытый исходный код дизайна прибора для измерения времени

Создание очень точного, недорогого и свободного от поставщика устройства устройства было само по себе достижением. Но мы хотели иметь большее влияние на отрасль. Мы хотели сделать его действительно бесплатным и доступным для всех, от исследователя до крупного облачного центра обработки данных.

Вот почему мы вместе с Open Compute Project (OCP) создали совершенно новый проект Time Appliance Project (TAP). Под эгидой OCP мы открыли исходный код в репозитории GitHub Time Appliance Project, включая спецификации, схемы, механизмы, спецификации и исходный код. Теперь, когда печать печатной платы и пайка крошечных компонентов не звучит страшно, любой может создать свою собственную карту времени за небольшую часть стоимости обычного устройства. Мы также работали с несколькими поставщиками, такими как Orolia, которые будут создавать и продавать тайм-карты, и Nvidia, которые продают ConnectX-6 Dx с функцией точной синхронизации (и BlueField-2 DPU с функцией точной синхронизации).

Мы опубликовали спецификацию Open Time Server на сайте www.opentimeserver.com, в которой подробно объясняется, как объединить оборудование (карта времени, сетевая карта и стандартный сервер) и программное обеспечение (драйвер ОС, NTP и / или сервер PTP. ), чтобы построить прибор времени. Создание устройства на основе этой спецификации предоставит инженерам, обслуживающим устройство, полный контроль, улучшая мониторинг, настройку, управление и безопасность.

Устройство времени - важный шаг на пути к совершенствованию инфраструктуры хронометража для всех, но еще многое предстоит сделать. Мы продолжим работать над другими элементами, включая повышение точности и точности синхронизации наших серверов, и мы намерены и дальше делиться этой работой с сообществом открытых вычислений.


Встроенный

  1. Песочные часы
  2. Сон питона ()
  3. Время - деньги:советы по использованию программного обеспечения для обслуживания, чтобы сэкономить время и т…
  4. Производителям пора отказаться от старых представлений об управлении запасами
  5. Руководители цепочек поставок, пора сыграть в наступление
  6. Цифровые близнецы:помочь поездам Западного побережья идти вовремя?
  7. Python — Дата и время
  8. Что такое ЧМИ?
  9. Crescent Crown становится более эффективной с точки зрения затрат и времени благодаря внедрению автоматизации
  10. Как упростить производство и доставку