Question

Je sais qu'il ya 10 ans, la précision d'horloge typique égalait un système tique, qui était dans la gamme de 10-30ms. Au cours des dernières années, la précision a été augmenté en plusieurs étapes. De nos jours, il existe des moyens pour mesurer des intervalles de temps en nanosecondes réels. Cependant, les cadres habituels reviennent encore le temps avec une précision de seulement environ 15ms.

Ma question est, quelles étapes n'augmenter la précision, comment est-il possible de mesurer en nanosecondes, et pourquoi nous obtenons encore souvent moins que microsecondes précision (par exemple dans .NET) .

(non-responsabilité:.. Il me semble étrange que cela n'a pas été demandé avant, donc je suppose que j'ai raté cette question quand je cherchai S'il vous plaît fermer et me montrer à la question dans ce cas, merci, je crois que ce appartient sur le SO et pas sur tout autre site SOFU. Je comprends la différence entre la précision et l'exactitude.)

Était-ce utile?

La solution

Il est vraiment une caractéristique de l'histoire du PC. IBM-PC d'origine utilisé une puce appelée l'horloge temps réel qui a été sauvegardée par pile (Vous souvenez-vous avoir besoin de changer les piles sur ces?) Ces opérés lorsque la machine a été mise hors tension et maintenu le temps. La fréquence de ces était 32,768 kHz (2 ^ 15 cycles / seconde) qui fait qu'il est facile de calculer le temps sur un système 16 bits. Cette horloge en temps réel a été écrit alors à CMOS qui était disponible par l'intermédiaire d'un système d'interruption dans les systèmes d'exploitation plus anciens.

Une nouvelle norme est hors de Microsoft et Intel appelé minuteur de haute précision qui spécifie une vitesse d'horloge de 10 MHz http://www.intel.com/hardwaredesign/hpetspec_1.pdf Même les nouvelles architectures de PC prennent cela et le mettre sur le contrôleur Northbridge et le HPET peuvent tun à 100MHz ou encore plus. A 10Mhz, nous devrions être en mesure d'obtenir une résolution de 100 nano-secondes et à 100MHZ, nous devrions être en mesure d'obtenir 10 nano-seconde résolution.

Les systèmes d'exploitation suivants sont connus pour ne pas être en mesure d'utiliser HPET: Windows XP, Windows Server 2003 et les versions antérieures de Windows, les versions Linux anciennes

Les systèmes d'exploitation suivants sont connus pour être en mesure d'utiliser HPET: Windows Vista, Windows 2008, Windows 7, versions x86 de Mac OS X, les systèmes d'exploitation Linux en utilisant le noyau 2.6 et FreeBSD

.

Avec un noyau Linux, vous avez besoin de l'appareil d'horloge de matériel plus récent « rtc-cmos » du pilote plutôt que le pilote « pac » original

Cela dit comment pouvons-nous accéder cette résolution supplémentaire? Je pourrais couper et coller des articles stackoverflow précédents, mais pas - Il suffit de chercher HPET et vous trouverez les réponses sur la façon d'obtenir des minuteries plus fins de travail

Autres conseils

Je lis littéralement un billet de blog sur MSDN à ce sujet aujourd'hui,

scroll top