Насколько точными являются внутренние часы современного ПК?

StackOverflow https://stackoverflow.com/questions/2607263

  •  25-09-2019
  •  | 
  •  

Вопрос

Я знаю, что 10 лет назад типичные часовые точности равняли системную галочку, которая находилась в диапазоне 10-30 мс. За последние годы точность была увеличена несколькими шагами. В настоящее время существуют способы измерения временных интервалов в реальных наносекундах. Однако обычные рамки все еще возвращают время с точностью только около 15 мс.

Мой вопрос в том, какие шаги увеличили точность, как можно измерить в наносекундах, а также Почему мы все еще часто получаем меньше, чем максимальная точность (например, в .NET).

(Отказ от ответственности. Другой сайт совушка. Я понимаю разницу между точностью и точностью.)

Это было полезно?

Решение

Это действительно особенность истории ПК. Оригинальный IBM-PC использовал чип, называемый аккумуляторным аккумулятором, который был подкреплен батареей (не помнишь, что нужно менять батареи на них?) Они эксплуатируются, когда машина отключалась и сохранила время. Частота из них составляла 32,768 кГц (2 ^ 15 циклов / секунды), которые облегчают расчет времени в 16-битной системе. Эти часы реального времени были затем записаны в CMOS, который был доступен через систему прерывания в более старых операционных системах.

Новый стандарт выходит из Microsoft и Intel называется таймером высокого прецизионного события, который определяет тактовую скорость 10 МГцhttp://www.intel.com/hardwaredesign/hpetspec_1.pdf.Даже более новые архитектуры ПК берут это и положите его на северный модрик, и HPET может быть на 100 МГц или еще больше. На 10 МГц мы должны быть в состоянии получить разрешение 100 нано-секунд, а в 100 МГц мы сможем получить 10 нано-второго разрешения.

Известно, что следующие операционные системы не смогут использовать HPET: Windows XP, Windows Server 2003 и более ранние версии Windows, более старые версии Linux

Известно, что следующие операционные системы могут использовать HPET: Windows Vista, Windows 2008, Windows 7, X86, версии Mac OS X, операционные системы Linux, использующие 2,6 ядра и FreeBSD.

С помощью ядра Linux вам нужен новый драйвер устройства для аппаратных часов «RTC-CMOS», а не оригинальный драйвер «RTC»

Все, что сказано, как мы доступм к этому дополнительной решению? Я мог бы вырезать и вставлять из предыдущих статей Stackoverflow, но не - просто поиск HPET, и вы найдете ответы на то, как получить более тонкие таймеры

Другие советы

Я буквально читал сообщение в блоге на MSDN об этом сегодня, Прочитайте это здесь, оно покрывает тему довольно хорошо. Он имеет акцент на DateTime C #, но это универсально применимо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top