Wie wird die Zeit in Computersystemen gemessen?

13

Ich war verwirrt darüber, wie genau ein Computer die Zeit regelt und anzeigt. Zum Beispiel: Wenn ich ein Programm schreiben würde, das dies tut:

Mach 2 + 2 und warte dann 5 Sekunden

Woher weiß der Prozessor, was "5 Sekunden" sind? Wie wird die Zeit in Computersystemen gemessen? Gibt es einen speziellen Chip für diesen einzigen Zweck? Wie funktioniert es?

Vielen Dank für alle Antworten; Ich interessiere mich sehr für Informatik und würde mich über jede Hilfe freuen, die Sie mir geben könnten = D.

DRK3
quelle
2
Hier ist eine leicht zu lesen und verstehen Erklärung, wie Computer tun es: eecis.udel.edu/~ntp/ntpfaq/NTP-s-sw-clocks.htm Hier ist eine optionale Erklärung der Präzision eines Computers Uhr: ntp.org/ ntpfaq / NTP-s-sw-clocks-quality.htm
Synetech

Antworten:

13

Obwohl Joels Antwort richtig ist, ist sie in Wirklichkeit etwas komplizierter.

Das Erste, was berücksichtigt werden muss (und ich werde mich hier nur auf PCs konzentrieren), ist, dass es in einem Computer mehrere Uhren gibt, von denen jede für sich verwendet wird.

Am beliebtesten und am einfachsten zu verstehen ist die Echtzeituhr . Es ist im Grunde ein Chip, in dem sich eine einfache Uhr befindet. Sie haben normalerweise die gleiche Art von Quarzen wie Standarduhren und verfügen normalerweise über eine Batterie zur Zeitmessung, wenn der Computer ausgeschaltet wird. Das Problem mit ihnen ist, dass sie nicht sehr genau sind, wie aus den Links von Syntech hervorgeht. Der 32,768-kHz-Quarz ist zu langsam für jede Zeitmessung auf modernen Systemen, deren Prozessoren im Megahertz- und Gigahertz-Bereich liegen.

Hier kommen wir zum nächsten Punkt: Es gibt interne Uhren, die für genaue Zeitmessungen und Countdowns verwendet werden.

Eine einfache Uhr ist ein programmierbarer Intervalltimer . Warten Sie eine gewisse Zeit und senden Sie dann einen Interrupt an die CPU. Wenn die CPU den Interrupt empfängt, stoppt sie, was auch immer sie tut, und kümmert sich um die Aufgabe, die den Interrupt erzeugt hat. Auf diese Weise muss die CPU nicht ständig prüfen, ob etwas unternommen wird. Stattdessen kann es sich auf andere Jobs konzentrieren und die PIT darüber informieren, wenn der Job erledigt ist. Die PIT verwendet eine Taktquelle von 1,193182 MHz und ist daher viel genauer als eine einfache RTC.

Das nächste interessante Messsystem ist der Zeitstempelzähler . Die Idee dahinter ist, dass wir mit der Taktquelle des Prozessors viel präzisere Zeitmessungen erzielen können als mit verschiedenen Systemzeitgebern. PIT hat einen Takt von 1,193182 MHz, aber selbst die frühesten x86-Prozessoren hatten einen viel höheren Takt. Wir werden also einen Timer haben, der nach jeder festgelegten Anzahl von Prozessorzyklen aktualisiert wird. Zu der Zeit hatten Prozessoren sehr stabile Uhren und die Verwendung von TSC war eine gute Möglichkeit, genaue Zeitmessungen durchzuführen. Die Verwendung von TSC bringt jedoch eine Reihe von Problemen mit sich. Verschiedene Prozessoren haben unterschiedliche Tick-Raten und messen die Zeit mit unterschiedlichen Geschwindigkeiten. Später, als die Technik fortschritt, erhielten wir moderne Prozessoren, die ihre Frequenz ändern können. Das ist ein großes Problem, da der CPU-Takt nicht mehr konstant ist und wir ihn nicht zum Messen der Zeit verwenden können.

Und deshalb haben wir jetzt hochpräzise Event-Timer . HPET verwendet einen 10-MHz-Takt und ist daher genauer als PIT. Andererseits hängt die Taktquelle nicht von der CPU-Uhr ab und kann zum Messen der Zeit verwendet werden, selbst wenn sich die CPU-Uhr ändert. Im Gegensatz zu PIT, das als Countdown fungiert, misst HPET die Zeit seit dem Einschalten des Computers und vergleicht die aktuelle Zeit mit der Zeit, zu der eine Aktion erforderlich ist.

Es gibt andere Zeitquellen für Computer, von denen ich glaube, dass sie erwähnt werden müssen. Einige Computer sind an Atomuhren angeschlossen und können damit die Zeit präzise messen.

Eine kostengünstigere und häufigere Option ist die Verwendung einer externen Zeitquelle zum Kalibrieren der internen Zeitquellen des Computers. Zum Beispiel können GPS-Empfänger verwendet werden, um hochpräzise Zeitmessungen durchzuführen, da GPS-Satelliten ihre internen Atomuhren haben.

Eine andere Option, die weniger verbreitet ist als der GPS-Empfänger, ist die Verwendung eines speziellen Funkempfängers, der Zeitinformationen von Zeitspeichern wie beispielsweise DCF77 decodiert. Solche Zeitstationen haben ihre eigenen hochpräzisen Zeitquellen und senden ihre Ausgabe über Funk. Da sich Radiowellen mit Lichtgeschwindigkeit ausbreiten, ist die Verzögerung häufig unbedeutend.

AndrejaKo
quelle
1
Gute Antwort. Ich wusste nicht, dass die GPS-Satelliten ihre eigenen Atomuhren an Bord haben. Es stellte sich heraus, dass jede der 24 gemäß diesem Artikel 4 Atomuhren hat: science.nasa.gov/science-news/science-at-nasa/2004/…
Dienstag,
2
Sehr ausführliche Antwort! Vielen Dank, dass Sie sich die Zeit genommen haben, das alles aufzuschreiben!
DRK3
1
Besonders interessant ist die Frage, inwiefern Uhren von der CPU-Taktrate abhängig waren. Angesichts der Tatsache, dass die CPU-Taktraten heute variabel sind, wird dies zu einem Problem. Danke noch einmal.
DRK3
@ DRK3 Hier ist ein großartiges Video zu Atomuhren: wimp.com/atomicclock
Griffin
1
Diese Antwort verwirrt etwas die Begriffe "Genauigkeit", "Präzision" und "Auflösung". In der Instrumentensprache bezieht sich "Präzision" auf die Wiederholbarkeit einer Messung. Ein Instrument kann sehr genau sein, ohne genau zu sein, wenn es nicht richtig kalibriert wurde. (Allerdings kann es nicht genau sein, wenn es nicht genau ist.) Und nur weil HPET 10 Millionen Mal pro Sekunde tickt - und daher eine höhere Auflösung hat - kann es nicht garantieren, dass es genauer ist als etwas, das jede Millisekunde oder so tickt.
Jamie Hanrahan
11

IIRC, es gibt einen kleinen Kristall, der mit einer bestimmten Frequenz vibriert, wenn elektrischer Strom durch ihn fließt. Jede Bewegung wird gezählt und eine bestimmte Anzahl von ihnen löst einen Taktzyklus aus.

Joel Coehoorn
quelle
3
Ich glaube, dass es immer noch Quarz ist. (Möglicherweise sehen Sie sogar das kleine, abgerundete Rechteck aus Metall mit der Aufschrift „14MHz“ oder „14.3MHz“ - oder eine andere Frequenz - mit einem Quarzkristall auf der Hauptplatine.)
Synetech
Danke für die Antwort! Ich hatte keine Ahnung, dass ein Kristall (Quarz) verwendet wird.
DRK3
1
Sie verwenden nicht immer einen Quarz. Einige sehr kostengünstige Mikrocontroller verwenden stattdessen einen "Keramikresonator". Sogar das von Quarzen angetriebene Timing auf Standard-Motherboards ist nicht so genau (dh das Timing kann variieren). Sie sind im Allgemeinen nicht besser als eine typische Digitaluhr.
Jamie Hanrahan
Sehr einfache Antwort! Passiert das auch bei Quarzuhren?
Nicolas Barbulesco