Autor Thema: CPU - Zyklen in eigenem Register?  (Gelesen 4705 mal)

blitzmaster

  • Beiträge: 77
    • Profil anzeigen
Gespeichert
« am: 08. May 2007, 18:20 »
Hi!

Ich hab gerade einen Artikel über das neue Sound - Subsystem von Windows Vista gelesen.

Zitat von der c't 10/07 S. 172 / 173
Zitat
In Windows Vista hingegen orientiert sich die Interrupt-Routine nicht wie in Windows XP und seinen Vorgängern an starren Zeiterintervallen, die jeweils 10 bis 15ms lang sind, sondern an der Anzahl der tatsächlich durchlaufenen CPU-Zyklen. Diese Werte legen moderne Prozessoren in einem eigenen Register ab.

Welches Register?
A / OS PM - THE operating system of the future

Korona

  • Beiträge: 94
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 08. May 2007, 19:45 »
tsc
Timestamp Counter
Du kannst darauf über rdtsc zugreifen.

FalShen

  • Beiträge: 73
    • Profil anzeigen
    • ScénOS
Gespeichert
« Antwort #2 am: 09. May 2007, 03:15 »
und ab welchen prozessor ist dieses register implementiert?
Und man braucht doch nocht immer einen interrupt, der Kernel muss doch irgendwann rdtsc ausführen, um dann zum nächsten task zu springen, oder?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 09. May 2007, 12:10 »
Ab dem Pentium II ist RDTSC offiziell dabei, Pentium I kann die Instruktion allerdings auch schon ausführen. Es gibt Pentium I Clones, die die Instruktion nicht kennen. Du kannst feststellen, ob die Instruktion unterstützt ist, indem du CPUID mit eax=0x00000001 ausführst. Wenn dann Bit 4 in edx gesetzt ist, kannst du die Instruktion ausführen. (Zählung beginnt bei 0.)

Entweder wird immer noch auf Basis des Timer-IRQs unterbrochen, aber die Zeit in CPU-Zyklen gemessen, oder Vista nutzt einfach einen besseren Timer wie z.B. den http://en.wikipedia.org/wiki/High_Precision_Event_Timer
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen