Wie genau ist die interne Uhr eines modernen PCs?
Ich weiß, dass vor 10 Jahren, typische Uhr-Genauigkeit erreicht, ein system-tick, die im Bereich von 10-30ms. In den vergangenen Jahren, die Präzision wurde in mehreren Schritten erhöht. Heutzutage gibt es Möglichkeiten, um die Zeit zu Messen von Abständen in tatsächlichen Nanosekunden. Allerdings, die üblichen frameworks noch zurück, die Zeit mit einer Genauigkeit von nur rund 15ms.
Meine Frage ist, welche Schritte hast, erhöhen die Genauigkeit, wie ist es möglich zu Messen, in Nanosekunden, und warum sind wir noch immer oft immer weniger-als-Mikrosekunden-Präzision (zum Beispiel in .NET).
(Disclaimer: Es kommt mir merkwürdig vor, dass dies nicht vorher gefragt, also denke ich, ich verpasste diese Frage, wenn ich suchte. Bitte schließen und zeigen Sie mir die Frage in diesem Fall, danke. Ich glaube, das gehört auf SO und nicht auf andere SOFU Website. Ich verstehe den Unterschied zwischen Präzision und Genauigkeit.)
InformationsquelleAutor der Frage mafu | 2010-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wirklich ein Merkmal der Geschichte des PCs.
Die original-IBM-PC verwendet wird ein chip namens der Echtzeit-Uhr, die Batterie war gesichert (erinnern Sie brauchen, um die Batterien zu wechseln?") Diese betrieben werden, wenn die Maschine ausgeschaltet war und hielt die Zeit an. Die Häufigkeit dieser war 32.768 kHz (2^15 Zyklen/Sekunde), so dass es leicht zu berechnen die Zeit auf einem 16-bit system.
Diese real-time-clock wurde dann geschrieben, CMOS, die war über ein interrupt-system in älteren Betriebssystemen.
Einen neueren standard ist raus aus Microsoft und Intel als High Precision Event Timer gibt eine Taktfrequenz von 10MHz
http://www.intel.com/hardwaredesign/hpetspec_1.pdf
Auch neuere PC-Architekturen, nehmen diese und setzen Sie es auf der Northbridge-controller und den HPET-kann-tun-bei 100MHz oder sogar noch größer.
Bei 10Mhz wir sollten in der Lage sein eine Auflösung von 100 nano-Sekunden und bei 100MHZ wir sollten in der Lage sein zu bekommen 10 nano-Sekunden-Auflösung.
Folgende Betriebssysteme sind bekannt, dass Sie nicht in der Lage sein, HPET zu verwenden: Windows XP, Windows Server 2003 und früheren Windows-Versionen, ältere Linux-Versionen
Folgende Betriebssysteme sind bekannt, um in der Lage sein, HPET zu verwenden: Windows Vista, Windows 2008, Windows 7, x86-basierten Versionen von Mac OS X, Linux-Betriebssysteme mit kernel 2.6 und FreeBSD.
Mit einem Linux-kernel, müssen Sie die neuere "rtc-cmos" hardware-Uhr-Gerät-Treiber anstatt der original "rtc" Treiber
Alles, was gesagt, wie wir Zugriff auf diese zusätzliche Auflösung?
Ich könnte schneiden und einfügen von vorherigen stackoverflow-Artikeln, aber nicht Nur nach den HPET und finden Sie die Antworten auf, wie man feinere Timer arbeiten
InformationsquelleAutor der Antwort Romain Hippeau
Ich buchstäblich Lesen in einem blog-Beitrag auf der MSDN-Website über das heute, Lesen Sie hier, es umfasst das Thema ziemlich gut. Es hat einen Schwerpunkt auf C#DateTime-aber es ist universell einsetzbar.
InformationsquelleAutor der Antwort Chris