Как компьютер определяет время
Обновлено: 21.11.2024
Что-то меня озадачило: как именно компьютер регулирует и определяет время? Например: если бы я написал программу, которая делала бы следующее:
Выполните 2+2, затем подождите 5 секунд
Как процессор узнает, что такое "5 секунд"? Как измеряется время в компьютерных системах? Есть ли специальный чип для этой единственной цели? Как это работает?
Спасибо за любые ответы; Я действительно интересуюсь информатикой и буду рад любой помощи, которую вы могли бы мне оказать =D.
3 ответа 3
Хотя ответ Джоэла правильный, на самом деле все немного сложнее.
Первое, что необходимо принять во внимание (и я собираюсь сосредоточиться здесь только на ПК), это то, что в компьютере есть несколько часов, и каждый из них используется по-своему.
Наиболее популярными и простыми для понимания являются часы реального времени. По сути, это чип с простыми часами внутри. Обычно они имеют кварцевые кристаллы того же типа, что и стандартные часы, и обычно имеют батарею для сохранения времени, когда компьютер выключен. Проблема с ними в том, что они не очень точны, как видно из ссылок Syntech. Кристалл 32,768 кГц слишком медленный для любого хронометража в современных системах, чьи процессоры работают в мегагерцовом и гигагерцовом диапазоне.
Здесь мы подходим к следующему пункту: существуют внутренние часы, используемые для точного измерения времени и обратного отсчета.
Простые часы — это программируемый интервальный таймер. Что он делает, так это ждет определенное время, а затем отправляет прерывание на ЦП. Когда ЦП получает прерывание, он останавливает все, что он делает, и переходит к задаче, вызвавшей прерывание. Таким образом, процессору не нужно постоянно проверять, что что-то сделано. Вместо этого он может сосредоточиться на других задачах, а PIT сообщит ему, когда работа будет выполнена. PIT использует источник тактовой частоты 1,193182 МГц и, следовательно, намного точнее, чем простой RTC.
Следующая интересная система измерения — счетчик меток времени. Идея заключается в том, что мы можем получить гораздо более точные измерения времени, используя источник тактовой частоты процессора, чем с помощью различных системных таймеров. PIT имеет тактовую частоту 1,193182 МГц, но даже у самых ранних процессоров x86 тактовая частота была намного выше. Таким образом, у нас будет таймер, который обновляется после каждого установленного количества циклов процессора. В то время у процессоров были очень стабильные часы, и использование TSC было хорошим способом точного измерения времени. Однако использование TSC создает ряд проблем. Разные процессоры имеют разную частоту тиков и измеряют время с разной скоростью. Позже, с развитием технологий, мы получили современные процессоры, которые могут менять свою частоту. Это серьезная проблема, поскольку часы ЦП больше не являются постоянными, и мы не можем использовать их для измерения времени.
Вот почему теперь у нас есть высокоточные таймеры событий. HPET использует тактовую частоту 10 МГц и поэтому более точен, чем PIT. С другой стороны, его источник часов не зависит от часов ЦП, и его можно использовать для измерения времени, даже если часы ЦП меняются. В отличие от PIT, который работает как обратный отсчет, HPET измеряет время с момента включения компьютера и сравнивает текущее время со временем, когда требуется действие.
Для компьютеров доступны и другие источники времени, о которых я считаю необходимым упомянуть. Некоторые компьютеры подключены к атомным часам и могут использовать их для точного измерения времени.
Более дешевым и гораздо более распространенным вариантом является использование внешнего источника времени для калибровки внутренних источников времени компьютера. Например, приемники GPS можно использовать для обеспечения высокоточных измерений времени, поскольку спутники GPS имеют свои внутренние атомные часы.
Еще один вариант, менее распространенный, чем приемник GPS, – это использование специального радиоприемника, который декодирует информацию о времени с радиостанций, сохраняющих время, таких как, например, DCF77. Такие станции времени имеют свои собственные высокоточные источники времени и передают свои выходные данные по радио. Поскольку радиоволны распространяются со скоростью света, задержка часто незначительна.
Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост.
Закрыт 4 года назад.
Как время отображается на компьютере? Я имею в виду, разве компьютер не выполняет все вычисления так быстро, как только может? Как вы отслеживаете течение времени, если на разных машинах все работает с разной скоростью?
4 ответа 4
Компьютеры отслеживают время точно так же, как вы или я — с помощью часов! Часы реального времени работают, даже когда ЦП выключен. Он полностью отделен от «тактовых циклов» ЦП. На ПК часы работают от батареи, когда компьютер не подключен к внешнему источнику питания.
@Matt Если вы спрашиваете "как долго часы могут работать на одной батарейке?" тогда ответ зависит от батареи! Но, как правило, безголовые кварцевые часы не очень прожорливы, и батарея практически сдохнет от старости (срок годности), прежде чем разрядится.
По сути, это компьютеры, микроволновые печи и т. д.обычно используют так называемый кварцевый таймер. Причина, по которой они используют кварц, заключается в том, что когда вы даете кварцевому кристаллу электрический заряд, он вибрирует и посылает обратно импульс (пьезоэлектричество). А поскольку кристаллам можно придавать такую тонкую форму и форму, люди могут точно предсказать, сколько импульсов он даст в секунду. Итак, когда компьютер считывает, что произошло X импульсов, должна отображаться 1 секунда. Затем он сбрасывается и снова начинает непрерывно читать. Если бы они захотели, а в большинстве случаев так и делают, отдельный процессор знал бы, что 60 секунд составляют минуту или 60 минут до часа, поэтому он затем отображал бы, что прошла минута/час, и сбрасывал бы второй таймер. Таким образом, оба процессора делают очень похожие вещи, но с разным масштабом.
В материнской плате нашего настольного ПК есть нечто, известное как батарея cmos, которая отслеживает дату и время нашего компьютера, даже если он выключен. Батарея CMOS имеет некоторый срок службы до тех пор, пока она не будет поддерживаться, и после этого, когда вы когда-либо выключаете и запускаете свою систему, ваша дата и время будут сброшены..
Пожалуйста, проверьте дату вопроса, прежде чем отвечать на него. Я уверен, что оригинальный постер уже давно перешел. Кроме того, ваш ответ не относится к вопросу.
@BobDalgleish Ответы не только для OP, но и для всех с одним и тем же вопросом. На мой взгляд, новые ответы всегда приветствуются, поскольку иногда один из них может быть даже лучше, чем принятый ответ годы спустя.
Вы когда-нибудь задумывались, как ваш компьютер определяет, который час? Даже если вы знаете, как он получает время, как он запоминает его, когда он выключен? Давайте посмотрим, как ваш компьютер сообщает время и запоминает каждую перезагрузку.
Как ваш компьютер узнает, который час?
Скорее всего, когда вы впервые загрузили компьютер, время уже показывалось правильно. Это связано с тем, что большинство современных операционных систем используют Интернет для синхронизации с сервером времени. Это позволит компьютеру узнать, который сейчас час, и ваш ПК соответствующим образом установит часы.
Например, эти часы Windows 10 используют данные Национального института стандартов и технологий для получения правильного времени. Если вы посетите веб-сайт времени NIST, вы увидите, что он отслеживает время в США. Конечно, если вы живете в другой стране, ваши собственные системные часы могут использовать другой веб-сайт, поскольку NIST находится в ведении правительства США.
Почему мы можем доверять NIST (или вашему региональному аналогу) свое время? Эти организации, занимающиеся хронометрией, используют цезиевые атомные часы, чтобы следить за временем. Они очень точны, так как в них нет движущихся частей, которые могут выйти из строя (например, настенные часы), или данных, которые могут быть повреждены или изменены (например, цифровые часы). Фактически, секунда как единица времени определяется 9 192 631 770 циклами цезия, а это означает, что в этих часах используется та же технология, которую ученые используют для определения секунды!
Как ваш компьютер запоминает, который сейчас час?
Все это хорошо, но давайте рассмотрим конкретный сценарий. Допустим, вы потеряли подключение к Интернету, что означает, что ваш компьютер больше не может синхронизироваться. Раздраженный отсутствием Интернета, вы решаете лечь спать, но утром обнаруживаете, что Интернет все еще не работает. Вы загружаете свой компьютер, и, несмотря на отсутствие возможности синхронизации, он все равно знает, который час!
Это связано с тем, что даже без синхронизации с Интернетом ваш компьютер может запоминать и отслеживать время самостоятельно. Фактически, вы можете увидеть способность вашего ПК запоминать время в UEFI/BIOS. Это загружается перед загрузкой операционной системы, и вы можете видеть, как отсчитываются системные часы, когда вы открываете экран UEFI/BIOS. Это позволяет вам увидеть, как ваш компьютер определяет время в действии, без вмешательства операционной системы с функцией синхронизации времени.
Как компьютер запоминает время после выключения? Внутри вашего компьютера есть внутренние часы, которые отслеживают время. Когда ваш компьютер выключается, эти часы продолжают идти, даже если вы отключите компьютер от сети. Это связано с тем, что на материнской плате компьютера установлена батарея на основе комплементарных металлооксидных полупроводников (CMOS), которая поддерживает питание часов, даже если остальная часть материнской платы обесточена.
КМОП-батареи рассчитаны на 10 лет работы, но с ними могут возникнуть проблемы.Например, если вы загружаете свой компьютер, а он с тех пор забыл время, это означает, что батарея разряжена и не питает внутренние часы. Вы также можете получить предупреждение об «ошибке CMOS» при загрузке.
Отслеживание времени
Наши компьютеры отслеживают время настолько привычно, что мы часто не задаемся вопросом, как они это делают. Будь то синхронизация с цезиевыми атомными часами или запоминание времени с помощью батареи, внутри вашего ПК происходит множество действий, чтобы вы не пропустили любимую телепередачу.
Существуют три основные инженерные проблемы, связанные с цифровым хронометражем:
(A) Создайте схему, которая использует какое-то естественное физическое явление для отслеживания течения времени.
(B) Поддерживать точное время при отключении питания от цепи.
(C) Следите за тем, чтобы часы не сбивались с правильного времени.
Для части (A) мы используем вещь, называемую кварцевые генераторы, обычно используя кварц в качестве кристалла, потому что он дешев, имеет правильные свойства и широко используется в этом приложении. Из-за некоторых сложных вещей квантовой физики вы можете взять кристалл кварца нужного размера и формы, прикрепленный к правильной поддерживающей электронике, подать постоянное напряжение и получить постоянный поток высокоскоростных импульсов. Миллионы или миллиарды импульсов в секунду в зависимости от того, как именно вы его настроили. Добавьте цифровую схему для подсчета импульсов, переворачивайте число «секунд» один раз каждые несколько миллионов импульсов, которые оно проходит за реальную секунду, и проверяйте систему с помощью обычных часов (или, может быть, супер-пупер тупо высокоточных атомных часов), чтобы убедитесь, что количество импульсов в секунду правильное. В конструкцию можно добавить дополнительное аппаратное и программное обеспечение для таких функций, как отображение времени для пользователя, или любых других задач, связанных со временем, таких как функция будильника.
Практически любая цифровая система в наши дни содержит один или несколько ЦП (это центральный процессор, основная часть компьютера, выполняющая фактические вычисления). ЦП, который часто находится в центре внимания маркетинга, ориентированного на технически подкованную аудиторию, вплоть до того, что вы даже видите рекламу процессоров Intel по телевизору. Но даже простые устройства, такие как микроволновые печи или термостаты, часто имеют микроконтроллер (полная компьютерная система, включая ЦП, память и другие вспомогательные схемы на одном кристалле с очень низкой производительностью, но, соответственно, небольшими размерами, стоимостью и энергопотреблением). ). В любом случае для работы ЦП требуется кварцевый генератор, и многие современные ЦП и микроконтроллеры имеют его встроенный, поэтому обычно достаточно добавить довольно небольшое количество программного кода, чтобы использовать существующий генератор для тактового генератора общего назначения или любого другого. функции хронометража.
Для части (B), поддерживающей часы без питания, одним из ответов является добавление в конструкцию батареи специально для того, чтобы часы продолжали работать при отключении основного источника питания. Это то, что сделано в традиционных настольных компьютерах. В некоторых других системах, таких как портативные компьютеры, сотовые телефоны и автомобили, уже есть батарея. Часы потребляют очень мало энергии, поэтому обычно они продолжают работать, даже когда система «выключена», за исключением случаев, когда батарея полностью отключена.
Конечно, использование батареи для сохранения времени означает, что у вас также должна быть резервная система для установки времени при первом перезапуске системы после полного и полного отключения питания, включая извлечение батареи. Для многих устройств ответом традиционно было то, что в этом случае пользователь должен ввести время. Однако в современную цифровую эпоху многие устройства подключаются к Интернету с помощью NTP (Network Time Protocol). Текущее время также можно узнать по спутниковым сигналам GPS (Global Positioning System). Текущее время также доступно по сети мобильного телефона.
Еще один возможный ответ на проблему (B) — отрицание того, что это действительно проблема, требующая решения. То есть проектировщик просто соглашается с тем, что система «забудет» время отключения питания. Часто вы видите кучу электронных устройств вокруг вашего дома — микроволновые печи, духовки и будильники — все они сбрасываются на полночь после отключения электроэнергии (и иногда мигают или иным образом изменяют свой дисплей, чтобы указать, что произошло отключение).
Что касается части (C), как сделать так, чтобы часы смещались с течением времени. Невозможно сделать кристаллы кварца абсолютно идентичными на 100%. Другими словами, есть некоторая ошибка (отклонение от идеальной скорости тактов) из-за несовершенства производственного процесса и проблем с использованием кристалла (в основном температура и способность вспомогательной электроники подавать точное напряжение). Эта ошибка обычно составляет небольшие доли секунды, но она может накапливаться в течение многих дней, недель, месяцев или лет хронометража.Традиционное решение требовало, чтобы пользователь замечал, что часы неверны, и вручную вводил правильное время. Но опять же, для современных систем во многих случаях система будет подключена к внешнему машиночитаемому источнику часов (Интернет/NTP, GPS, сотовая сеть), который можно использовать для автоматической корректировки часов пару раз в день или около того, прежде чем дрейфа накопилось достаточно, чтобы сделать заметную разницу.
Как компьютеры могут каждый раз указывать правильное время и дату?
Всякий раз, когда я закрываю компьютер (выключаю его), все соединения и процессы внутри останавливаются. Как получается, что когда я снова открываю компьютер, он показывает точное правильное время? Компьютер не выключается полностью, когда я его выключаю? В нем все еще запущены какие-то процессы? Но как тогда мой ноутбук показывает правильное время, когда я вынимаю аккумулятор (и, таким образом, принудительно останавливаю все процессы) и снова запускаю его через несколько дней?
$\begingroup$ Этот вопрос действительно актуален для этого сайта? Мне это кажется более подходящим для суперпользователя. $\endgroup$
$\begingroup$ @IlmariKaronen Кажется, это вопрос о "архитектуре компьютера", если я правильно понимаю этот термин. $\endgroup$
3 ответа 3
В компьютерах есть "часы реального времени" – специальное аппаратное устройство (например, содержащее кварцевый кристалл) на материнской плате, которое отслеживает время. Он всегда включен, даже когда вы выключите компьютер. Также на материнской плате есть небольшая батарейка, которая используется для питания часового устройства, даже когда вы отключаете компьютер от питания. Батарея не вечна, но на пару недель хватит. Это помогает компьютеру отслеживать время, даже когда компьютер выключен. Часы реального времени не требуют много энергии, поэтому они не тратят энергию впустую. Если вы вынете батарею часов в дополнение к извлечению основной батареи и отсоединению кабеля питания, компьютер потеряет счет времени и попросит вас ввести время и дату при перезагрузке компьютера.
Кроме того, на многих компьютерах, когда вы подключаете свой компьютер к интернет-соединению, ОС находит сервер времени в сети и запрашивает у него текущее время. ОС может использовать это для очень точной установки локальных часов вашего компьютера. При этом используется сетевой протокол времени, также называемый NTP.
$\begingroup$ Может ли ОС установить время в BIOS? Я имею в виду, что если я принудительно сбросил аппаратные часы, а затем загрузился и подключился к NTP или установил часы самостоятельно, распознает ли это BIOS? $\endgroup$
$\begingroup$ Да. Изменение системного времени ОС устанавливает часы реального времени, также известные как время BIOS. Внутренние часы просто отсчитывают количество секунд (или миллисекунд) с начала Эпохи (обычно 1 января 1970 года, 00:00), поэтому они не выполняют большой работы и могут годами питаться от батарейки размером с монету. Функции более высокого уровня в ОС выполняют работу по преобразованию этого счетчика в дату/время для отображения. $\endgroup$
$\begingroup$ Кристалл кварца не является специальным аппаратным устройством, отслеживающим время (хотя это один из компонентов). $\endgroup$
$\begingroup$ @tatan нет, телефон все это время питается от аккумулятора. В основном это то же самое, что вы можете включить свой компьютер, нажав кнопку питания, когда компьютер должен быть выключен (но не отключен от сетевой розетки). $\endgroup$
$\begingroup$ Я бы перефразировал последний абзац, заменив компьютеры на ОС. Любой ПК, который подключается к Интернету, может не подключаться, и наоборот - это задача ОС, а не ПК (имеется в виду оборудование). $\endgroup$
Читайте также: