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

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

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

(Правовая оговорка: Это кажется мне нечетный, что это не спросили прежде, таким образом, я предполагаю, что пропустил этот вопрос, когда я искал. Близко и укажите на меня на вопрос в этом случае, спасибо. Я полагаю, что это принадлежит на ТАК а не на любом другом сайте SOFU. Я понимаю различие между точностью и точностью.)

24
задан mafu 9 April 2010 в 12:37
поделиться

2 ответа

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

Microsoft и Intel разработали новый стандарт под названием High Precision Event Timer, который определяет тактовую частоту 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, версии Mac OS X на базе x86, операционные системы Linux с ядром 2.6 и FreeBSD.

С ядром Linux вам понадобится более новый драйвер устройства аппаратных часов «rtc-cmos», а не оригинальный драйвер «rtc»

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

24
ответ дан 29 November 2019 в 00:08
поделиться

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

4
ответ дан 29 November 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: