И уже много лет как внутри компьютеров IBM PC находится аж трое часов. На кварцевых генераторах как с разной частотой и видами срезов, так и разной точностью:
- RTC — «Часты реального времени» стандартная микросхема с пластиной XY-среза, частота 32'768 Гц, точностью в ± 1,7...2,59 секунды в сутки (стандартные 20...30 ppm);
- HPET (High Precision Event Timer) — это т.н. «южном мосте» с пластиной AT-среза, частотой 14,31818 МГц, в три раза точнее RTC (стандартные 10 ppm);
- TSC (Time Stamp Counter) — внутри ЦПУ, однако работающий от BCLK с пластиной AT-среза.
Под TSC имеется в виду современный Constant/Invariant TSC, по частотам это 24,000 МГц начиная с Intel Skylake и 48,000 / 100,000 МГц со времён AMD Ryzen. Физически находится в процессоре (ЦПУ), но живёт на тактах обще-системного генератора на материнской плате (BCLK).
Теперь BCLK и HPET это физически два разных генератора, каждый из которых со своей пластинкой кварцевого пьезокристалла. Т.е. «прямая связь» между BCLK и таймером HPET оказалась упразднена начиная с Intel Skylake или AMD AM4, ранее физически это был один «кварц» выдающий две разные частоты (100,000 МГц для BCLK и 14,31818 МГц для всякой переферии в «южном мосте»).
Ядро современных ОС выключают использование HPET, предпочитая чтобы софтом использовался TSC — обращение к HPET обходится не дёшево, порядка 0,001−0,002 миллисекунды, т.к. микросхема расположена весьма далеко от ЦПУ по меркам материнской платы. При этом ОС не особо доверяет тому, что творится в процессоре (ЦПУ) и перепроверяет TSC через теперь уже независимый таймер HPET. Обнаружив нестабильность в работе TSC, ядро ОС выполняет корректировку хода времени или принудительно переключает систему на HPET.
Насколько это существенно?
В небольших локальных сетях задержка в доставке пакетов составляет менее 1 миллисекунды. И сложновато разобраться в событиях по журналам и логам, если время на машинах не синхронизировано до этой самой 1 миллисекунды.
Привязка шкалы времени у приёмника спутниковой системы навигации (GPS или ГЛОНАСС) составляет 20 наносекунд, т.е. это ровно 0,00002 миллисекунды (официально по спецификациям). А для определение местоположения с точностью в пять метров требуется 0,00017 миллисекунд точности (легко проверить через скорость света).
HPET и TSC по точности одинаковы, 10 ppm = 0,864 секунды в сутки или же 0,036 секунды в час. Расположены не рядом друг с другом и одновременно могут иметь разные температуры, однако полагаться на TSC нельзя. Потому и нет возможности повысить точность времени в системе за счёт сравнения показаний этих двух кварцевых генераторов, корректируя и между собой и относительно датчиков температуры.
RTC поддерживает время при отключении питания, экономично расходуя аккумулятор или же батарейку. Однако, при изрядном прогреве корпуса отклонение частоты может доходить и 200 ppm, поскольку стандартные 20...30 ppm выдерживаются лишь в узком диапазоне температур. На фоне этого HPET и TSC имеют не только 10 ppm стандартными, но и гораздо лучше сохраняются стабильность колебаний при существенном повышении температур в компьютерах. Что обусловлено использованием пластин с разными видами срезов.
Для сравнения, точность времени в специализированных термокомпенсированных вариантах (TCXO) кварцевых генераторов достигает 0,5−2 ppm, что минимум в пять раз точнее TSC и HPET.
В системах промышленной автоматики, царстве и вотчине АСУ ТП, диспетчеризации оборудования без синхронизации времени фактически не осуществима. Ориентиром является точность синхронизации до 1 миллисекунды, потому используются специализированные узлы-сервера получающие время от тех же ГНСС (GPS, ГЛОНАСС) и сохраняющие до получаса в термокомпенсированных вариантах «кварца». Поскольку даже 0,5 ppm за час даёт отклонение уже в 1,8 миллисекунды, а время в ГНСС-приёмниках в тысячи раз точнее одной миллисекунды.
#hardware #computerscience #время #микроэлектроника #схемотехника #часы #watch #watches #lang_ru @Russia