Способ синхронизации времени в процессорах и устройствах вычислительной машины
METHOD OF SYNCHRONIZATION OF TIME IN PROCESSORS AND COMPUTER DEVICES

ОБЛАСТЬ ТЕХНИКИ
Изобретение относится к цифровой обработке данных, в частности к синхронизации часов ЭВМ.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Требования к точности синхронизации времени сейчас повысились и составляют десятки или сотни наносекунд. Это обеспечивается доступностью спутниковых систем навигации, атомных часов и устройств с поддержкой стандарта Presicion Time Protocol IEEE 1588. С другой стороны, повышение производительности ЭВМ достигалось за счет асинхронной работы устройств ЭВМ, буферов, очередей обслуживания. Это усугубляет проблемы в синхронизации времени между устройствами машины.
В однопроцессорных ЭВМ для подсчета времени использовался счетчик тактов процессора. В процессорах х86 это был Time Stamp Clock (TSC). При появлении процессоров с частотой, изменяемой для экономии электричества, было предложено использовать Power Management Timer (РМТ). Но он имел низкую точность, долгое время чтения и был не доступен устройствам ввода-вывода (УВВ).
При появлении многопроцессорных систем делалась попытка синхронизовать счетчики времени всех процессоров перекрестной синхронизацией (US 3932847 Time-of-day clock synchronization among multiple processing units), но это не прижилось из-за большого количества сложных связей, и вернулись к РМТ и подобным счетчикам времени.
В патенте от Hewlett-Packard (US 5832254) «Scalable resynchronization of remote counters» описывается синхронизация времени в системе SPP2000, которая состоит из 7 плоскостей по 16 процессоров. Один из процессоров раздает время из своего счетчика ТОС через «processor agent chip» (РАС) своим соседям, а через memory access controllers (MAC) и через toroidal access chip (TAC) раздается и процессорам на других печатных платах. Очевидно, что модуль MAC может быть занят передачей других данных в(из) память(-и). Подобные недетерминированные задержки снижают точность синхронизации. Основным недостатком такой схемы является то, что в результате всей этой сложности всего лишь вырабатывается прерывание, чтобы ОС занялась выравниванием счетчиков времени на процессоре.
В патенте (US 20140136877) "GENERATION AND DISTRIBUTION OF A SYNCHRONIZED TIME SOURCE" описывают способ синхронизации времени процессора по NTP (Network Time Protocol). Описываемый метод хорош тем, что он охватывает не только процессоры, но и УВВ. Недостаток в том, что он жестко ориентирован на NTP и предусматривает регулировку только частоты (скорости хода часов), но не фазы (смещения) времени. Собственно схема и предназначена только для подсчета интервалов времени, а не для получения и хранения астрономического времени.
Компания Alcatel запатентовала систему (US 6760764) «Real time stamp distribution», в которой real time stamp (RTS) делится на порцию низкой точности, средней и высокой точности. Разделение на низкую и высокую точность - это хорошее решение, но дальше не удачное решение по передаче времени средней точности IRTS (intermediate portion of the real time stamp) посредством широтно-импульсной модуляции. Много аппаратуры используется и не эффективно. Положительно также то, что регистр высокой точности перезапускается при каждом обновлении даты и времени и таким образом синхронизуется. Но синхронизовать регистр высокой точности надо бы не только при каждой установке даты, но чаще, чем устанавливается дата – периодически, чтобы компенсировать дрейф частоты генератора, используемого для регистра высокой точности.
Патент (US 20030065963) «Synchronizing multiple time stamps distributed within a computer system with main time of day register» предлагает ввести специальную шину STI для передачи времени между процессорами. А каждые 128 мкс выдавать импульс точной синхронизации другим процессорам. Время вычисляется по формуле
TOD (microseconds)=(TIME STAMP+T COUNT)+(TS LOW)+(FTP)-128
Недостаток этого метода в том, что
- нужна специальная шина Self Timed Interface;
- не учитывается работа со многими процессорами;
- периодический импульс синхронизации должен быть достаточно частым, чтобы дрейф локального генератора действительно можно было не учитывать.
В патенте CN 1749916 «Method for realizing precisino time alignment by computer inserting GPS second pulse signal» описывается способ, опирающийся на то, что ежесекундный сигнал подается на один из контактов tty (СОМ) порта. Известно, что такой способ очень не точен из-за задержек в обработке прерываний. Но ориентация именно на ежесекундный сигнал - это удачное решение.
В патенте CN 1798225 «Equipment and method for raising precision of time inside system by using negative feedback mode» подсчитывают количество импульсов генераторов каждого процессора за статистический период. В следующий период разницу отнимают рассредоточено в следующий статистический период. Таким образом, выравнивают скорость хода часов. Относительное смещение часов выравнивается по-видимому только программно, а это снижает точность.
При появлении УВВ (Ethernet-контроллеров) с поддержкой Presicion Time Protocol IEEE 1588, например Ethernet-контроллеров Intel 82576, хранителем точного времени в ЭВМ стал этот контроллер. Но время доступа к контроллеру из процессора было недетерминированным из-за возможных ожиданий при передаче данных по шине PCI.
Известно, что приемники GPS/ГЛОНАСС и многие атомные часы выдают ежесекундный импульс точного времени PPS (Pulse per second). Ethernet-контроллеры с поддержкой стандарта IEEE 1588 могут быть настроены так, чтобы получать или выдавать ежесекундный импульс от своих внутренних часов, которые получают точное время по Ethernet. Почти все используемые в ЭВМ микросхемы RTC (Real Time Clock), которые служат для хранения времени и при выключенной машине, тоже способны выдавать ежесекундный сигнал. Его можно использовать как единый источник импульсов для синхронизации хода часов всех процессоров и УВВ в данной ЭВМ.
ПЕРЕЧЕНЬ ФИГУР
Изобретение, описанное здесь, проиллюстрировано посредством примера, а не посредством ограничения, на приложенных чертежах.
Рис. 1 - иллюстрация процесса синхронизации счетчика времени по ежесекундным сигналам.
ПОДРОБНОЕ ОПИСАНИЕ
Предлагаемый способ синхронизации времени между устройствами ЭВМ позволяет передавать время по имеющимся шинам передачи данных и выполнять точную синхронизацию времени используя импульсы точного времени. Ниже приведены примеры реализации предлагаемого способа синхронизации при использовании разных источников точного времени.
Если ЭВМ получает ежесекундные сигналы точного времени, например, от атомных часов или от спутникового приемника GPS или ГЛОНАСС, то этот сигнал разумно подключить к каждому процессору и к тем устройствам ввода-вывода (УВВ), которым нужно точное время для своей работы. Таким устройством, например, является Ethernet-контроллер с поддержкой РТР IEEE 1588. Кроме ежесекундного сигнала указанные источники точного времени поставляют дату и время в байтовом формате по каналу RS-232 или подобному каналу. Разброс задержек при приеме данных по таким каналам значительно больше сотен наносекунд из-за задержек при обработке прерываний и задержек в шинах передачи данных. Но с точностью до секунды вполне надежно можно установить время в регистре низкой точности. Надо только позаботиться о том, чтобы эта установка регистра низкой точности не совпала с приходом импульса точного времени. Это реально выполнить, потому что известно, когда приходил предыдущий импульс и период тоже известен.
Следует отметить, что если частота процессора изменяется с целью экономии электричества, то регистр низкой точности следует инкрементировать от источника неизменяемой частоты.
Если ЭВМ является клиентом, получающим время по протоколу IEEE 1588, и если Ethernet-контроллер имеет возможность выдачи ежесекундных сигналов, этот сигнал используется для выдачи импульсов точного времени для процессоров и других УВВ данной ЭВМ.
Если ЭВМ не получает внешних импульсов синхронизации и не имеет сетевого контроллера, способного выдавать такие импульсы, то такие импульсы можно получить от RTC (Real Time Clock) или подобного источника единого для всех устройств данной ЭВМ. Это обеспечит синхронный ход часов во всех процессорах и УВВ при коротком и детерминированном времени доступа к часам.
Счетчик времени в процессоре или в устройстве ввода-вывода (УВВ) состоит из двух регистров (рис. 1). Регистр низкой точности ТН (1) инкрементируется при поступлении каждого импульса синхронизации времени S. Регистр высокой точности TL (2) инкрементируется от тактового генератора процессора или УВВ. При поступлении импульса S значение TL (2) сохраняется в регистре TP (3) и регистр TL (2) обнуляется. Время, выраженное в периодах импульса S, вычисляется по формуле TH+TL/TP.
Погрешность счета времени определяется тем, на сколько изменится частота тактового генератора за период S. Частота кварцевого генератора, обычно используемого в ЭВМ, зависит от его температуры. Если импульс S ежесекундный, а температура кварца изменяется на 1 градус в секунду, то погрешность будет равна 10 наносекунд. Чем меньше период S, тем выше точность хода времени по регистру TL (2).
Разные процессоры и разные УВВ могут оказаться на разном расстоянии от источника импульсов точного времени. Как правило, это можно и проигнорировать в рамках одой ЭВМ, поскольку задержка составляет 5 нс/м. Перед счетчиками времени могут быть усилители-формирователи импульса S, специфические для данного процессора или УВВ. Если указанные задержки соизмеримы с требуемой точностью синхронизации времени, то следует использовать регистр коррекции ТС, в который при инициализации системы записывается величина задержки импульса S. Тогда время вычисляется по формуле TH+TL/TP-TC.
Поскольку скорость продвижения регистров ТН (1) одинакова во всех процессорах и устройствах, то только один раз при инициализации надо установить значение, согласованное с внешними часами точного времени. Для того чтобы изменение ТН (1) не случилось в момент прихода импульса S, программа инициализации выполняет это изменение в период времени, достаточно далекий от момента поступления импульса S, например в момент, когда TL (2) равно ТР/2. Из этого следует, что период S должен быть больше, чем разброс продолжительности операции записи в регистр ТН. Выбрать период равным одной секунде и удобно, и целесообразно с точки зрения получения точности более высокой чем 100 нс. Ежесекундный импульс заведомо удовлетворяет обоим требованиям к периоду S. Точность 10 наносекунд в десять раз меньше того, что обеспечивают устройства, поддерживающие стандарт Precision Time Protocol IEEE 1588.
При вычислении текущего времени по формуле TH+TL/TP выполняется деление на переменную величину TP (3). Такое деление можно заменить делением на константу или даже сдвигом, если есть возможность не изменять частоту тактового генератора, которая часто выбирается для целей стабилизации функционирования процессора, например. Тогда разницу между текущим TP и целевым (константным) ТРС используют для коррекции скорости приращения TL, используя, например, способ, описанный в патенте (JP 2006047101) TIMEPIECE PRECISION CORRECTION DEVICE.