Autor Thema: Dynamische Prozessortaktung  (Gelesen 5364 mal)

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« am: 12. January 2013, 18:59 »
Seit dem Pentium M/K6 takten die meisten Desktop Server CPUs ja dynamisch und soviel Ich weiß geht das übers SMBios.
... aber wie weiß das SMBios ob gerade ein aufgebrezeltes 3D-Spiel oder nur HintergrundProzesse laufen?
Hat das was mit der NOP Instruktion zu tun?

Danke für eure Antworten.

PS: Mittlerweile gibt es so viele allgemeine Fragen über X86 oder Prozessoren allgemein(zB wie man sie baut^^),dass es sinnvoll wäre ein eigenes Board zu öffnen, damit nicht alles in Offtopic verschwindet.
« Letzte Änderung: 12. January 2013, 19:05 von Martin Erhardt »

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 12. January 2013, 20:29 »
Hallo,


und soviel Ich weiß geht das übers SMBios.
Dafür gibt es auf der x86-Platform nahezu unzählig viele Wege, je nach Baujahr des PC kann das auch das SMBios sein. Heute ist ACPI aktuell.

aber wie weiß das SMBios ob gerade ein aufgebrezeltes 3D-Spiel oder nur HintergrundProzesse laufen?
Für die Priorität der ausgeführten Prozesse interessiert sich das SMBios gar nicht, wichtig ist nur ob überhaupt irgendein Prozess sinnvolle Arbeit mit der CPU durchführt oder ob die CPU schlafen geschickt wird.

Hat das was mit der NOP Instruktion zu tun?
Nein, wenn dann eher mit HLT. Wann immer die CPU einen HLT-Befehl ausführt wechselt diese in einen (einstellbaren) Schlafmodus. Dank heutigem Multicore und Hyperthreading ist das aber insgesamt eine recht komplexe Angelegenheit geworden, in der ACPI-Spec finden sich zu diesem Thema sicher ein paar hundert Seiten dehnen Du bestimmt nähere Einzelheiten entnehmen kannst (falls Du dieses typisch verkorkste Spezifikations-Englisch entschlüsseln kannst).

Mittlerweile gibt es so viele allgemeine Fragen über X86 oder Prozessoren allgemein(zB wie man sie baut^^),dass es sinnvoll wäre ein eigenes Board zu öffnen, damit nicht alles in Offtopic verschwindet.
Also für ein eigenes Board das sich primär um reine Hardwarethemen dreht sehe ich nicht genug Bedarf und da Offtopic auch ansonsten nicht gerade überrannt wird denke ich das diese Themen hier recht gut aufgehoben sind.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 12. January 2013, 20:59 »
aber wie weiß das SMBios ob gerade ein aufgebrezeltes 3D-Spiel oder nur HintergrundProzesse laufen?
Ich vermute, dass das SMBIOS gar nichts mit der Entscheidung, ob runtergetaktet werden soll, zu tun hat. Nicht umsonst ist Treibersupport vom Betriebssystem erforderlich. Vermutlich wird die Entscheidung vom dem Treiber gefällt, wenn der Scheduler feststellt, dass es gerade nicht viel zu tun gibt. Der Mechanismus zum Runtertakten ist glaub ich sowie so stark vom CPU-Modell abhängig. Du kannst ja vielleicht mal die Intel und AMD Manuals nach SpeedStep bzw. PowerNow! durchforsten.

Mittlerweile gibt es so viele allgemeine Fragen über X86 oder Prozessoren allgemein(zB wie man sie baut^^),dass es sinnvoll wäre ein eigenes Board zu öffnen, damit nicht alles in Offtopic verschwindet.
Ich glaube nicht, dass es sich derzeit lohnt dafür ein weiteres Board anzulegen. Letztendlich ist dieses Forum eher ein Programmierforum als ein Hardware-/Elektrotechnikforum, und das Offtopic ist für solche Sachen hinreichend. Bei uns nimmt (derzeit) keiner die Beschreibung "Hier könnt ihr über Gott und die Welt quatschen." wörtlich, sondern es geht ja schon hauptsächlich um technische Themen und es besteht keine Gefahr, dass etwas untergeht.

Dieses Thema ist besser in Lowlevel-Coding aufgehoben, weil es immerhin um die Programmierung der Hardware geht. Ich bin mal so frei und verschieb es.
« Letzte Änderung: 12. January 2013, 21:00 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 12. January 2013, 21:27 »
aber wie weiß das SMBios ob gerade ein aufgebrezeltes 3D-Spiel oder nur HintergrundProzesse laufen?
Ich vermute, dass das SMBIOS gar nichts mit der Entscheidung, ob runtergetaktet werden soll, zu tun hat. Nicht umsonst ist Treibersupport vom Betriebssystem erforderlich. Vermutlich wird die Entscheidung vom dem Treiber gefällt, wenn der Scheduler feststellt, dass es gerade nicht viel zu tun gibt. Der Mechanismus zum Runtertakten ist glaub ich sowie so stark vom CPU-Modell abhängig. Du kannst ja vielleicht mal die Intel und AMD Manuals nach SpeedStep bzw. PowerNow! durchforsten.

Mittlerweile gibt es so viele allgemeine Fragen über X86 oder Prozessoren allgemein(zB wie man sie baut^^),dass es sinnvoll wäre ein eigenes Board zu öffnen, damit nicht alles in Offtopic verschwindet.
Ich glaube nicht, dass es sich derzeit lohnt dafür ein weiteres Board anzulegen. Letztendlich ist dieses Forum eher ein Programmierforum als ein Hardware-/Elektrotechnikforum, und das Offtopic ist für solche Sachen hinreichend. Bei uns nimmt (derzeit) keiner die Beschreibung "Hier könnt ihr über Gott und die Welt quatschen." wörtlich, sondern es geht ja schon hauptsächlich um technische Themen und es besteht keine Gefahr, dass etwas untergeht.

Dieses Thema ist besser in Lowlevel-Coding aufgehoben, weil es immerhin um die Programmierung der Hardware geht. Ich bin mal so frei und verschieb es.
Das man das über ACPI in der Software implementieren muss war mir nicht klar aber gut^^

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 12. January 2013, 22:37 »
Hallo,

es gibt folgende Möglichkeiten, die mir einfallen:
- HLT: Taktet die CPU nicht runter, spart aber Strom und hält die Temperatur kühl. Geht immer und ist einfach.
- APM: Du kannst dem APM-BIOS ein "APM IDLE" geben. Neue Geräte unterstützen kein APM mehr, ältere Geräte können das als Alternative noch. Du kannst weder die neue Frequenz bestimmen noch weißt du, ob überhaupt runtergetaktet wird, aber es spart mehr Strom als HLT und ist auch für andere Hardware (z.B. Display, Festplatte) definiert. Erfordert Real- oder V86-Mode (ähnlich wie bei VESA ist das PM-Interface oft kaputt).
- ACPI: Nachfolger von APM. Theoretisch kannst du damit alles tun, praktisch brauchst du einen ACPI-Interpreter im Kernel.
- CPU-spezifisch: Meist über MSRs (Model Specific Registers) möglich. Neue CPUs werden aber grundsätzlich über das ACPI-Interface unterstützt.

Gruß,
Svenska

 

Einloggen