Изобретение относится к области вычислительной техники, а именно к цифровой обработке данных, где важна высокая точность синхронизации часов ЭВМ.
Из уровня техники известен «СПОСОБ И УСТРОЙСТВО ДЛЯ СИНХРОНИЗАЦИИ СЧЕТЧИКА ОТМЕТКИ ВРЕМЕНИ» (патент США №11579650 - «METHOD AND APPARATUS FOR SYNCHRONIZING THE TIME STAMP COUNTER»), выбранный в качестве аналога, в котором синхронизация TSC (TIME STAMP COUNTER) на каждом процессоре в многопроцессорной системе выполняется на базе иерархии TSC. В момент выполнения команды чтения TSC принимается решение, читать ли значение из ближайшего TSC или из TSC более высокой иерархии - если установлен флаг некорректности ближайшего TSC. Флаг некорректности ближайшего TSC устанавливается при смене процессорной частоты для экономии электричества или при пробуждении процессора из спящего режима.
Недостатком данного способа является то, что он ориентирован только на дискретное изменение частоты генератора для экономии электричества и не обнаруживает расхождения TSC процессоров при плавном уходе частоты генератора используемого для TSC и в нем не учитывается не детерминированность продолжительности времени чтения TSC. Это приводит к снижению точности синхронизации TSC на разных процессорах.
Также из уровня техники известен способ «Управление смещениями счетчика меток времени (TSC) для нескольких ядер и потоков» - патент США №08700943 «Controlling time stamp counter (TSC) offsets for mulitple cores and threads», в котором TSC сохраняются в оперативной памяти перед приостановкой процессора и восстанавливаются после пробуждения процессора.
Недостатком данного способа является то, что в нем не учитывается недетерминированность времени доступа к оперативной памяти и как следствие разброс значений TSC на разных процессорах, что приводит к снижению точности синхронизации TSC.
Прототипом данного изобретения является патент РФ на изобретение №2615326 от 13.02.2015 «Способ синхронизации времени в процессорах и устройствах вычислительной машины», в котором в каждом процессоре устанавливаются локальные часы, которые подсчитывают импульсы от тактового генератора процессора, а текущее время получают программным вычислением на основании значения в счетчике локальных часов и при этом выполняется коррекция значения времени на основании величины приращения локальных часов за прошедший секундный интервал между калибрующими импульсами.
Недостатком этого способа является то, что в момент прихода ежесекундного импульса и обнуления дробной части счетчика времени с увеличением на единицу части счетчика времени содержащей целую часть значения секунд происходит скачок вычисленного времени. Эти минимальные скачки времени могут привести к немонотонности хода времени, полученного из локальных часов, и требуют делать дополнительную программную коррекцию полученного значения времени для обеспечения строгой монотонности.
Цель данного изобретения - ликвидировать скачки времени, получаемого из локальных часов для повышения точности получаемого времени в момент коррекции и ликвидировать необходимость программного вычисления значения текущего времени из значения счетчика времени в локальных часах - получать время непосредственно из аппаратных локальных часов, что повысит производительность вычислительной машины.
Техническим результатом данного изобретения является повышение точности получаемого времени даже в процессе коррекции часов за счет использования регулируемого инкремента вместо обновляемого коэффициента пересчета; повышение производительности вычислительной машины за счет получения времени из часов расположенных в одном из процессорных регистров и за счет устранения программного пересчета тактов в локальных часах в наносекунды или другие единицы времени; а также повышение точности начальной установки времени на всех процессорах за счет двухэтапного выполнения команды сброса-переустановки локальных часов всех процессоров.
Технический результат данного изобретения достигается тем, что локальные для процессора или устройства ввода-вывода часы инкрементируются по импульсам от тактового генератора и обеспечивается возможность коррекции скорости хода времени полученного из локальных часов, локальные часы инкрементируются подстраиваемым значением из рабочего регистра инкремента по импульсам единого для всех процессоров тактового генератора хода времени, а обновление рабочего регистра инкремента выполняется из предварительного регистра инкремента одновременно по периодическим импульсам синхронизации времени. При этом значение предварительного регистра инкремента заполняется операционной системой на основании сравнения скорости хода локальных и внешних эталонных часов.
Заявленный технический результат изобретения достигается также тем, что в качестве источника периодических импульсов синхронизации времени между процессорами и между устройствами ввода-вывода служит один из сигналов переноса в счетчике локальных часов ведущего процессора, такой, что периодичность выбранного переноса больше максимальной задержки переписи данных из общей памяти вычислительной машины в предварительный регистр инкремента процессора.
Локальные часы и все регистры инкремента расширяются справа невидимыми для чтения разрядами, которые повышают точность настройки инкремента до требуемого значения точности хода времени.
Значение всех регистров инкремента выбирается таким, чтобы при чтении локальных часов получать время в наносекундах или других удобных единицах времени.
При инициализации подключаемого нового или пробужденного процессора в многопроцессорной системе устанавливается «режим подключения», при котором сигнал переноса для обновления рабочего регистра инкремента уже работающего процессора передается в подключаемый процессор и по этому сигналу обнуляются разряды локальных часов подключаемого процессора правее разряда переноса.
Сущность заявленного изобретения поясняется следующими иллюстрациями:
Фиг. 1. Связи между локальными часами и регистрами инкремента.
Фиг. 2. График хода времени в локальных часах по способу прототипа и по предлагаемому способу.
Способ синхронизации времени в процессорах и устройствах вычислительной машины осуществляется следующим образом.
В каждом процессоре и устройстве ввода-вывода (для которых это необходимо) устанавливаются локальные часы. Это исключает недетерминизм продолжительности доступа и чтения из общих часов. Но введение локальных часов вместо общих создает проблемы синхронизации локальных часов между собой. Эти проблемы решаются в данном изобретении путем введения отдельной шины для редких (около 1 сек) периодических сигналов синхронизации. По этим же импульсам выполняется одновременная смена параметра коррекции времени - инкремента - на всех процессорах.
На фиг. 1 показаны связи между локальными часами и регистрами инкремента. В предлагаемом способе коррекция скорости хода локальных часов производится не коэффициентом пересчета как в прототипе, а величиной инкремента счетчика времени локальных часов. На фиг. 2 можно сопоставить разницу хода получаемого времени при использовании этих двух способов.
Величина инкремента хранится в рабочем регистре инкремента. Термин «рабочий регистр инкремента» используется, чтобы подчеркнуть отличие от «предварительного регистра инкремента». Величина инкремента хранящаяся в рабочем регистре инкремента определяет скорость хода времени в локальных часах при текущем значении частоты единого для всех процессоров тактового генератора инкрементирования. Таким образом исключаются скачки хода времени, получаемого из локальных часов.
Изменение рабочего регистра инкремента происходит строго одновременно на всех процессорах (если процессоров много), чтобы исключить влияние недетерминированных задержек при пересылке значения величины нового инкремента через оперативную память на локальные часы каждого процессора. Для такой одновременной замены используется предварительный регистр инкремента, из которого перепись в рабочий регистр инкремента выполняется по единому для всех процессоров и устройств ввода-вывода сигналу.
Таким сигналом может быть ежесекундный сигнал, как в прототипе, но в данном изобретении предлагается использовать сигнал переноса в счетчике времени - в локальных часах данного процессора. Это снимает проблему выравнивания задержек передачи сигналов от единого центрального источника ко всем процессорам и устройствам ввода-вывода в которых есть локальные часы. Это очень важно, если в Вычислительной машине (ЭВМ) процессоры или устройства ввода-вывода находятся на разных печатных платах.
Новое значение инкремента вычисляется операционной системой (ОС) на основании сравнения скорости хода локальных и внешних эталонных часов. Для вычисления инкремента ОС использует ежесекундные импульсы от ГЛОНАСС/GPS или атомных часов, или использует время, полученное по протоколу NTP (Net Work Time Protocol) или по протоколу РТР (Precision Time Protocol IEEE-1588). В случае использования протокола РТР желательно (как рекомендует протокол) иметь локальные часы контроллере Ethernet. Это один из тех случаев, когда локальные часы нужны не только в процессоре, но и в устройстве ввода-вывода.
Относительная точность настройки величины инкремента должна быть такой же, как и требуемая относительная точность времени, полученного из локальных часов. Если мы хотим получить относительную точность времени порядка 10-8, то и инкремент должен иметь длину не менее 27 двоичных разрядов, что соответствует 8 десятичным разрядам. Поэтому принято решение добавить к инкременту и к счетчику времени локальных часов справа 27 двоичных разрядов. Эти дополнительные разряды не видимы при чтении значения счетчика времени локальных часов, но оказывают влияние на точность настройки скорости хода часов. Расширенное значение инкремента получить возможно, так как инкремент вычисляется операцией деления целевого значения скорости хода локальных часов на измеренную текущую частоту тактового генератора. Обе исходные величины получаются при сравнении операционной системой времени по локальным часам и времени по внешним эталонным часам. Целевое значение скорости хода часов можно выбрать так, чтобы при чтении локальных часов получать время в наносекундах или других удобных единицах времени. Таким образом при получении времени из счетчика локальных часов не требуется никаких дополнительных программных вычислений и коррекций. Время читается непосредственно из аппаратных локальных часов.
Операционная система (ОС) записывает новое значение инкремента в предварительный регистр инкремента по имеющимся в ЭВМ шинам передачи данных, которые, как правило, имеют недетерминированную задержку передачи. Для обеспечения одновременности подмена инкремента из предварительного регистра в рабочий регистр инкремента выполняется по периодическому сигналу. Период этот должен быть гарантированно больше величины недетерминированности задержки передачи данных о величине инкремента. Чтобы избежать необходимости выравнивания длин линий передачи (задержек) указанного сигнала подмены инкремента разным процессорам (а если процессоры на разных платах, то это и невозможно реализовать) целесообразно использовать локальный для процессора периодический сигнал. Сигнал переноса, например, из 29-го разряда регистра локальных часов подходит для этой цели. Так обеспечивается одновременность изменения инкремента во всех процессорных ядрах. Периодичность переноса из 29-го разряда редкая (порядка секунды). Это позволяет ОС, ориентируясь на значение в локальном счетчике времени, выбрать момент записи в предварительный регистр инкремента далекий от моментов переписи из предварительного в рабочий регистр инкремента. Выбранный период между обновлениями инкремента хорошо согласуется ежесекундными метками, получаемыми от ГЛОНАСС/GPS или атомных часов. По протоколу NTP величину нового инкремента ОС получает и рассылает значительно реже.
При инициализации системы и при горячем подключении процессора на всех процессорах данного компьютера ОС взводит триггер «режим подключения». Перенос из 27-го разряда регистра часов ведущего процессора в этом режиме раздается всем без исключения процессорам. По нему обнуляются 29 младших разрядов регистра часов и 27 дополнительных разрядов. При этом триггер «режим подключения» сбрасывается аппаратурой. ОС обеспечивает невозможность чтения локальных часов из ОС или из задачи пользователя за несколько тактов до установки триггера режима подключения, чтобы не видна была не монотонность времени при обнулении части разрядов часов.
Такие же как в процессоре могут быть установлены часы в устройствах ввода-вывода, в которых это необходимо. Например, подобные часы времени необходимы и устанавливаются сейчас в Ethernet-контроллерах с поддержкой стандарта Presicion Time Protocol IEEE-1588.
Как и в прототипе данного изобретения синхронизации времени в процессорах и устройствах ввода-вывода вычислительной машины в предлагаемом способе используются локальные для процессора или устройства ввода-вывода часы, которые инкрементируются по импульсам от тактового генератора и обеспечивается возможность коррекции скорости хода времени полученного из локальных часов. Но в прототипе коррекция выполняется за счет применения регистра фиксации величины периода в тактах между эталонными импульсами и эта величина использовалась для программного пересчета значения регистра локальных часов в скорректированные наносекунды.
В данном изобретении локальные часы инкрементируются значением из рабочего регистра инкремента по импульсам единого для всех процессоров тактового генератора. Использование регулируемого инкремента приведет к техническому результату повышения точности времени получаемого из часов, так как исчезнут возможные скачки времени в момент прихода периодических импульсов синхронизации. Это также даст повышение производительности, так как исчезает необходимость в выполнении в программе операционной системы долгой операции деления при пересчете каждого прочитанного из локальных часов времени для учета коэффициента коррекции скорости хода времени. Для того, чтобы избежать расхождения времени на разных процессорах при обновлении рабочего регистра инкремента обновление выполняется по периодическим импульсам синхронизации времени из заранее подготовленного предварительного регистра инкремента. Величина периода синхронизации выбрана достаточно большой, чтобы успеть выполнить подготовку предварительного регистра на всех процессорах до прихода следующего импульса периодической синхронизации. При этом значение предварительного регистра инкремента заполняется операционной системой на основании сравнения скорости хода локальных и внешних эталонных часов. Использование импульсов периодической синхронизации позволяет также обеспечить точную установку локальных часов всех процессоров при начальной инициализации вычислительной машины.
Для простоты реализации в качестве источника периодических импульсов синхронизации времени между процессорами и между устройствами ввода-вывода со счетчиком времени служит один из сигналов переноса в счетчике локальных часов, такой, что периодичность выбранного переноса больше максимальной задержки записи в предварительный регистр инкремента процессора для всех процессоров. Это около 0,5 или 1 секунды. После инициализации системы каждый процессор использует сигнал переноса в своем счетчике времени. Это дает технический результат в повышении точности локальных часов относительно локальных часов соседних процессоров, так как ликвидируется непредсказуемость, в каком из соседних тактов генератора тактов будет принят периодический сигнал синхронизации времени для смены инкремента. Непредсказуемость может возникнуть из-за того, что разные процессоры находятся на разном расстоянии (а это разная задержка) от источника сигналов периодической синхронизации (если бы не использовался сигнал переноса в локальных часах данного процессора) при другом разном расстоянии от генератора тактовых сигналов.
При вычислении необходимой величины инкремента операционная система выполняет деление эталонной секунды на фактическую величину частоты генератора инкрементирования. Результат деления округляется до количества разрядов требуемой точности настройки хода времени, а это много больше, чем количество разрядов в инкременте, который выбирается для минимизации шага хода времени, получаемого из локальных часов. Это противоречие решается так: локальные часы и все регистры инкремента расширяются справа невидимыми для чтения разрядами, которые повышают точность настройки инкремента до требуемого значения точности хода времени. Такое решение дает технический результат в повышении на несколько порядков точности настройки скорости хода часов, что дает повышать точность получаемого времени.
При вычислении величины инкремента для ускорения или замедления хода получаемого из локальных часов у нас остается свобода в выборе базового значения инкремента. Удобно выбрать значение регистра инкремента таким, чтобы при чтении локальных часов получать время в наносекундах или других удобных единицах времени и тем самым сократить затраты процессорного времени на пересчет значения регистра времени в естественные единицы времени. Счет времени в наносекундах дает повышение производительности вычислительной машины за счет устранения программного пересчета тактов в счетчике локальных часов в наносекунды, микросекунды или другие единицы времени.
Сигнал периодической синхронизации для одновременного обновления рабочих регистров инкремента используется также в режиме инициализации вычислительной системы или при подключении новых процессоров к системе для одновременного запуска локальных часов во всех процессорах. Команда сброса и перезапуска часов подготавливается и рассылается заранее, а выполняется одновременно по приходу периодического сигнала синхронизации от ведущего процессора. Это дает технический результат в повышении точности начальной установки времени на всех процессорах за счет двухэтапного выполнения команды сброса-переустановки локальных часов всех процессоров.
Пример осуществления изобретения.
По описанному способу синхронизации времени в процессорах и устройствах вычислительной машины реализуется устройство счетчик времени ESCLKR в одном из процессоров серии Эльбрус (версия 7). Причем синхронизация охватывает и устройство ввода-вывода, а именно Ethernet-контроллер в кристалле процессора, что позволяет обеспечить синхронизацию времени по протоколу точного времени IEEE-1588.
название | год | авторы | номер документа |
---|---|---|---|
Способ синхронизации времени в процессорах и устройствах вычислительной машины | 2015 |
|
RU2615326C2 |
Сетевой контроллер | 1988 |
|
SU1564641A1 |
Устройство для отсчета времени | 1990 |
|
SU1817085A1 |
АКТИВНЫЙ АППАРАТНЫЙ СТЕК ПРОЦЕССОРА | 2013 |
|
RU2530285C1 |
Устройство для отображения информации на экране телевизионного индикатора | 1986 |
|
SU1455357A1 |
Аналогово-цифровой преобразователь с регистрацией времени | 2016 |
|
RU2637479C1 |
УСТРОЙСТВО ДЛЯ ОТСЧЕТА ВРЕМЕНИ | 1990 |
|
RU2024920C1 |
Микропрограммное устройство управления | 1984 |
|
SU1168940A1 |
УСТРОЙСТВО СБОРА И РЕГИСТРАЦИИ ПОЛЕТНОЙ ИНФОРМАЦИИ | 1990 |
|
SU1825189A1 |
Устройство для вывода графической информации | 1989 |
|
SU1698885A1 |
Изобретение относится к вычислительной технике. Технический результат заключается в повышении точности получаемого времени даже в процессе коррекции часов. Способ синхронизации времени в процессорах и устройствах ввода-вывода вычислительной машины включает локальные для процессора или устройства ввода-вывода часы, которые инкрементируются по импульсам от тактового генератора, причем локальные часы инкрементируются значением из рабочего регистра инкремента по импульсам единого для всех процессоров тактового генератора, а обновление рабочего регистра инкремента выполняется из предварительного регистра инкремента по периодическим импульсам синхронизации времени, при этом значение предварительного регистра инкремента заполняется операционной системой на основании сравнения скорости хода локальных и внешних эталонных часов. 4 з.п. ф-лы, 2 ил.
1. Способ синхронизации времени в процессорах и устройствах ввода-вывода вычислительной машины, включающий локальные для процессора или устройства ввода-вывода часы, которые инкрементируются по импульсам от тактового генератора, при этом обеспечивается возможность коррекции скорости хода времени, полученного из локальных часов, отличающийся тем, что локальные часы инкрементируются значением из рабочего регистра инкремента по импульсам единого для всех процессоров тактового генератора, а обновление рабочего регистра инкремента выполняется из предварительного регистра инкремента по периодическим импульсам синхронизации времени, при этом значение предварительного регистра инкремента заполняется операционной системой на основании сравнения скорости хода локальных и внешних эталонных часов.
2. Способ по п. 1, отличающийся тем, что в качестве источника периодических импульсов синхронизации времени между процессорами и между устройствами ввода-вывода служит один из сигналов переноса в счетчике локальных часов, такой, что периодичность выбранного переноса больше максимальной задержки переписи данных из общей памяти вычислительной машины в предварительный регистр инкремента процессора.
3. Способ по п. 1, отличающийся тем, что локальные часы и все регистры инкремента расширяются справа невидимыми для чтения разрядами, которые повышают точность настройки инкремента до требуемого значения точности хода времени.
4. Способ по п. 1, отличающийся тем, что значение всех регистров инкремента выбирается таким, чтобы при чтении локальных часов получать время в наносекундах или других удобных единицах времени.
5. Способ по п. 2, отличающийся тем, что при инициализации подключаемого нового или пробужденного процессора в многопроцессорной системе устанавливается «режим подключения», при котором сигнал переноса для обновления рабочего регистра инкремента уже работающего процессора передается в подключаемый процессор и по этому сигналу обнуляются разряды локальных часов подключаемого процессора правее разряда переноса.
Токарный резец | 1924 |
|
SU2016A1 |
Способ получения продуктов конденсации фенолов с формальдегидом | 1924 |
|
SU2022A1 |
US 7047435 B2, 16.05.2006 | |||
Способ получения продуктов конденсации фенолов с формальдегидом | 1924 |
|
SU2022A1 |
Способ синхронизации времени в процессорах и устройствах вычислительной машины | 2015 |
|
RU2615326C2 |
Авторы
Даты
2024-08-30—Публикация
2024-02-21—Подача