Ваш браузер узнаёт актуальное время от компьютера. А как узнаёт время компьютер? Через батарейку в материнской плате. А откуда берётся время там? А кто отвечает за то, чтобы время у всех было точное? В этом посте мы проследим, как отсчитывается время, на которое ориентируется современная техника, и рассмотрим, какие потенциальные проблемы сулит такой расклад.
На нижнем уровне в архитектуре времени находятся часы. Атомные часы традиционно считаются самыми точными, но существуют и масштабные проекты, связанные, например, с механическими часами. Один из них, Clock of the Long Now, спонсирует Джефф Безос.
Но собственные аналоговые часы в каждое устройство не вставишь, поэтому они используют время цифровое. И как аналоговое время конвертируется в цифровое? Cloudflare, например, использует фотографии стеллажей с лавовыми лампами, чтобы добиться степени случайности, недоступной в цифровом мире. Может, и здесь используются какие-нибудь технологичные фотографии?
Эталоны времени
Большинство устройств, соединенных с интернетом, используют протокол NTP (network time protocol). В основе его лежит список доверенных источников времени — RCC-часов. Точный ход времени они синхронизируют через сигнал длинноволновых станций (так что здесь у нас не фото, а радио).
Но для трансляции времени таким образом в протоколе должен быть первоисточник. В России, Беларуси и ряде других ближайших стран таковым является Государственный первичный эталон единиц времени, частоты и национальной шкалы времени, за который отвечает Всероссийский научно-исследовательский институт физико-технических и радиотехнических измерений (ВНИИФТРИ).
Для воспроизведения синхронизирующего радиосигнала на частоте 25 кГц здесь используются квантовые водородные стандарты частоты и кварцевые часы, аппаратура внутренних и внешних сличений, аппаратура формирования рабочих шкал времени, средства обеспечения эталона гарантированным электроснабжением.
Первая версия эталона, утвержденная в 1967 году, включала квантовый водородный генератор. Он состоит из нескольких элементов, помещенных в вакуумный колпак. Резонатор с накопительной колбой соединен с источником пучка атомов водорода вакуум-проводом, в котором расположено устройство двойной магнитной сортировки состояний атомов водорода. Оно включает расположенный в магнитном экране соленоид, установленный вдоль оси распространения пучка атомов водорода между первым и вторым сортирующими магнитами. Подробней об устройстве этого стандарта можно почитать в базе патентов.
Квантовый водородный генератор — это лишь один из типов средств и измерений времени и частоты, включенных в государственный реестр России. Всего реестр включает более 1700 (!) таких средств, как указано на сайте ВНИИФТРИ. Некоторые их них мы указали парой абзацев выше. Такое множество, видимо, объясняется тем, что в реестр входят не типы средств, а их конкретные реализации.
В 1975 году водородный генератор заменили на цезиевый репер частоты (цезиевые атомные часы), где секунда равна продолжительности 9 192 631 770 периодов излучения, соответствующего переходу между двумя уровнями невозмущенного основного состояния атома цезия-133. Этот эталон было принят в 1967 году на 13-й Генеральной конференции по мерам и весам (ГКМВ).
Первичный эталон единиц времени развивается по сей день; последняя его версия была утверждена в феврале 2022 года. Основные изменения в последней версии коснулись допустимых порогов точности: в два раза уменьшена относительная нестабильность частоты эталона; более чем в два раза уменьшены пределы допускаемых смещений национальной шкалы времени относительно UTC.
Первичный источник эталонного времени расположен в Москве, вторичные же эталоны имеются еще в трех городах — Иркутске, Хабаровске и Новосибирске. Каждый из них имеет сервера, предоставляющие доступ по протоколу NTPv4 IPv4 в соответствии с международным стандартом RFC-5905, фиксирующим стандарты синхронизации компьютерного времени через интернет.
В США вопросами синхронизации времени занимается NIST — Национальный институт стандартов и технологий. В качестве эталона институт использует две модели цезиевых атомных часов, NIST-F3 и NIST-F4. Первая, скорее, предназначен для референса в качестве частоты, точность которой достигает здесь 10-15 единиц фрактальной частоты. Более того, в течение задокументированного периода наблюдений длительностью 5 месяцев точность составляла 10-17, что, по заявлению NIST, в 100 раз лучше возможных реализаций на водородном генераторе.
Что касается NIST-F4, то после всех оценок и тестирований они станут основным стандартом, гарантированно обеспечивающим точность 10-16 единиц фрактальной частоты. А может, и больше, если судить по предыдущей версии.
Описанные эталоны в пределах своего региона формируют первый уровень протокола, от которого время расходится на серверы первого уровня, что синхронизируются за несколько микросекунд. Эти серверы настроены для взаимного бэкапа и сверки. Далее в протоколе располагается еще два архитектурных слоя, каждый из которых синхронизируется со своим и предыдущим. Если внутреннее время компьютера по какой-то причине рассинхронизируется — например, сядет батарейка на материнской плате — то после восстановления работы оно быстро подтянет актуальное время через NTP-протокол. Или через SNTP — облегченную версию NTP-протокола, используемую во встраиваемых устройствах.
2038 год и другие проблемы цифрового времени
Почему точное время так важно для современных компьютеров? На основе точного времени работают SSL-сертификаты, логирование и сохранение данных. Благодаря временным отметкам вы понимаете, насколько актуальны те или иные ошибки, нужно ли их исправлять. Различные серверы находятся в разных временных зонах, и это тоже нужно учитывать. Проблемы могут даже усугубиться в случае с бессерверными, облачными вычислениями. В конце концов, на переводе времени когда-то (а может, все еще) основаны взломщики различных программных продуктов. Шутка, конечно же, мы не рекомендуем использовать пиратский софт никому.
Для решения возможных проблем со временем необходима стандартизация — и она была воплощена в виде ISO 8601. Он закрепляет представление времени от более значимого к менее значимому, от года к секунде. В качестве разделителя может использоваться дефис, двоеточие или буква T (при переходе ко времени конкретного дня, time). В конце опционально добавляется разница во времени по сравнению с UTC (всемирное координированное время). Международный стандарт был принят и адаптирован многими странами мира; в России он известен как ГОСТ ИСО 8601-2001.
У цифрового времени есть свои проблемы, не свойственные аналоговому — например, проблема 2038 года. Время в UNIX и POSIX-совместимых системах измеряется в секундах, в 32-битном формате начиная с 0:00 1 января 1970 года. Самое позднее время, которое может быть представлено таким образом, — это 03:14:07 19 января 2038 года. Чтобы предотвратить эту проблему, необходимо перейти на 64-битное представление времени во всех операционных системах на всех устройствах. Даже к 2038 это может быть проблематично, учитывая, сколько девайсов нас окружает. В противном случае более позднее время может быть признано операционной системой отрицательным, то есть как время в 1970 и 1901 году, в зависимости от конкретного случая.
Проблемы с переходом к следующему году рассматривали и раньше. Пожалуй, наиболее известна здесь проблема Y2K, 2000 года. Она связана с тем, что во многих устройствах для представления текущего года использовались лишь две последние цифры, то есть 2000 год здесь стал бы нулевым. Были созданы даже специальные государственные комиссии для решения этой проблемы. В итоге значительного эффекта она не возымела, так что ажиотаж был излишним. Были сделаны соответствующие фиксы в JavaScript, Microsoft Excel, других программных продуктах, и всё в целом прошло гладко. Похожие баги предсказывали с наступлением 1975, 2010 и 2022 года, но их эффект оказался еще менее заметен. Посмотрим, что будет со временем UNIX — ждать осталось уже меньше 15 лет.
Комментарии (17)
Tyusha
29.03.2024 07:57+8Ну ок, есть супер-точные часы, но как остальным с ними синхронизоваться с учётом неизвестного пинга. Я думала, здесь вы осветите этот непростой вопрос.
chnav
29.03.2024 07:57+1Нынче это относительно просто - через GPS/GLONASS и т.д. Синхронизация до наносекунд в зависимости от частоты тактового генератора и типа/точности приёмника. Даже институт есть "Российский Институт Радионавигации и Времени", что как бы намекает. Естественно пульс точного времени получается не по текстовому сообщению на серийном порту, а по выходу PPS. Если быть совсем точным, то в нормальных GPS-часах для этого предусмотрен коаксиальный выход BNC. Ключевые фразы для поиска "GPS Disciplined Clock" или "Trimble Thunderbolt". Но и обычные GPS-приёмники на такое способны, если есть доступ к пину PPS.
PS: но возможно я вас не понял и залез в дебри. Поэтому прямой ответ на ваш вопрос, то через интернет и прочие провода и радио точное время не получить невозможно. Сотовые сети тоже синхронизируются с GPS, всё сводится к нему.
timothyz
29.03.2024 07:57Но основное веселье начинается при вводе PPS в компьютер. Например, типичный способ ввода PPS через CD-pin COM-порта может подарить несколько микросекунд задержки.
chnav
29.03.2024 07:57+1>> CD-pin COM-порта может подарить несколько микросекунд задержки
Полностью согласен. За давностью лет уже не смогу найти исследование, какие задержки по COM-портам, скажу только что на последнем месте стояли килобаксовые DigiBoard с буфером, потом мультипортовые платы, шарящие одно прерывание, затем шли встроенные 16550, и на первом месте 16550 с отключённым FIFO. Ну а на сейсмосудне ставились отдельные апаратные блоки. Сегодня я бы реализовал это на FPGA.
PS: ой, речь же про DCD, а я написал про поток данных. В любом случае для метки времени у нас всегда задействовался отдельный порт на материнке.
timothyz
29.03.2024 07:57Ну, более доступным, чем FPGA решением являются сетевые карты, с аппаратной поддержкой PTP и распаянным пином для PPS. Особенно, карты с поддержкой PCIe PTM. Там вполне достижима ошибка меньше 10 нс. Теоретически, даже дешманские Intel i225 на это способны, однако в линуксовом драйвере это место то ломают, то чинят от патча к патчу.
novoselov
29.03.2024 07:57
Al_Pollitruk
29.03.2024 07:57А признать, что в 1999 году и ранее хорошо подготовились и отработали, воспитание не позволяет?
ptr128
29.03.2024 07:57+3Первичный источник эталонного времени расположен в Москве
Вы уверены, что его перенесли из Менделеево в Москву? Когда это случилось и как решили проблему сотрясений от линий метрополитена и прочего городского транспорта?
timothyz
29.03.2024 07:57+8Все смешалось, кони, люди... Напоминает реферат школьника, которому необходимо набрать заданный объём, а связных текстов нужного размера не нашлось.
DrrRos
29.03.2024 07:57Ждать до ближайшего бага со временем - меньше 4х лет, он состоится ровно 29 февраля 2028г.
GennPen
ШТО?
HardWrMan
Атомная же батарейка. Компьютер "компьютирует" колебания атомов в батарейке.