Frage

Ich weiß, dass vor 10 Jahren, typische Taktgenauigkeit einen System-Tick erreicht, die im Bereich von 10-30ms war. In den letzten Jahren wurde, Präzision in mehreren Schritten erhöht. Heutzutage gibt es Möglichkeiten, Zeitintervalle in tatsächlichen ns zu messen. Doch nach wie vor übliche Frameworks Zeit mit einer Genauigkeit von nur etwa 15 ms zurück.

Meine Frage ist, welche Schritte haben die Präzision erhöhen, wie es möglich ist, in Nanosekunden zu messen, und Warum sind wir noch oft immer weniger als mikrosekundengenau (zum Beispiel in .NET) .

(Disclaimer:.. Es kommt mir seltsam, dass dies vorher nicht gefragt wurde, so dass ich denke, ich diese Frage verpasst, wenn ich gesucht Bitte schließen und zeigen Sie mir auf die Frage in diesem Fall dank ich glaube, das auf SO gehört und nicht auf einer anderen SOFU Website. verstehe ich den Unterschied zwischen Präzision und Genauigkeit.)

War es hilfreich?

Lösung

Es ist wirklich ein Merkmal der Geschichte des PC. Der ursprüngliche IBM-PC verwendet einen Chip die Real Time Clock genannt, die Batterie war gesichert (Haben Sie die Batterien auf diese erinnern zu müssen ändern?) Diese betrieben, wenn die Maschine wurde ausgeschaltet und die Zeit gehalten. Die Frequenz dieser war 32,768 kHz (2 ^ 15 Zyklen / Sekunde), die es leicht zu berechnen Zeit auf einem 16-Bit-System. Diese Echtzeit-Uhr wurde dann auf CMOS geschrieben, die über ein Interrupt-System in älteren Betriebssystemen verfügbar ist.

Ein neuerer Standard ist aus Microsoft und Intel High Precision Event Timer genannt, die eine Taktrate von 10 MHz spezifizieren http://www.intel.com/hardwaredesign/hpetspec_1.pdf Auch neuere PC-Architekturen nehmen dies und es auf dem Controller Northbridge setzen und die HPET kann bei 100 MHz oder sogar mehr Tun. Bei 10 MHz sollten wir in der Lage sein, eine Auflösung von 100 Nanosekunden zu erhalten und bei 100 MHz sollten wir in der Lage sein, 10 Nanosekunden Auflösung zu erhalten.

Die folgenden Betriebssysteme sind dafür bekannt, nicht in der Lage sein zu verwenden HPET: Windows XP, Windows Server 2003 und frühere Windows-Versionen, ältere Linux-Versionen

Die folgenden Betriebssysteme sind dafür bekannt, die Lage sein, HPET zu verwenden: Windows Vista, Windows 2008, Windows 7 x86-basierte Versionen von Mac OS X, Linux-Betriebssystemen mit dem Kernel 2.6 und FreeBSD

.

Mit einem Linux-Kernel, müssen Sie die neueren "rtc-CMOS-" Hardware-Uhr-Gerätetreiber eher als das Original "rtc" Treiber

Alles, was gesagt, wie greifen wir diese zusätzliche Auflösung? Ich konnte aus früheren Stackoverflow Artikel ausschneiden und einfügen, aber nicht - Suchen Sie einfach nach HPET und Sie werden die Antworten finden, wie feinere Timer zum Laufen bringen

Andere Tipps

ich buchstäblich eine Blog-Post auf MSDN diesen heute lesen,

scroll top