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.
Antworten:
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.
quelle
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.
quelle
HPET verwendet mindestens eine 10- MHz- Uhr. Es kann genauer als 10 MHz sein, aber niemals weniger.
http://en.wikipedia.org/wiki/High_Precision_Event_Timer#Comparison_to_predecessors
quelle