Autor Thema: Fragen zu ACPI  (Gelesen 1943 mal)

JensK

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« am: 20. June 2012, 16:33 »
Hallo

Morgen steht meine mündliche Prüfung im Bereich energiebewusste Systeme und Power Management an. Beim letzten Prüfungsprotokoll haben sich noch ein paar Fragen ergeben bei denen ihr mir hoffentlich weiterhelfen könnt.

1. Warum ACPI zum schlafen legen und aufwachen eines Computers? Was kann ACPI was das OS nicht kann?

Hierbei würde ich erstmal davon ausgehen das sich das System im Soft-Off Modus befindet. Das heisst es kann durch einen Tastendruck reaktiviert werden. Ich vermute das der Impuls vom Motherboard abgegriffen und an ACPI weitergeleitet wird. ACPI kümmert sich dann um die Reaktivierung des Betriebssystems (eventuell auch um die Reaktivierung der einzelnen Hardwarekomponenten). Das Betriebssystem kann sich ja schlecht selbst schlafenlegen oder reaktivieren.

2. Warum eignet sich die ACPI nicht für die CPU und den Speicher?

Ich gehe mal davon aus das ACPI einfach zu langsam ist um das sinnvoll handeln zu könen.

3. Module werden nach einem gewissen Timeout deaktiviert. Warum wird höchstens das Timeout per ACPI dynamisch gesetzt, aber nicht das komplette Deaktivierien?

Hier hab ich leider keine Idee.


kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 20. June 2012, 17:41 »
Disclaimer: Ich habe nie irgendwas implementiert, das ACPI benutzt, noch habe ich mich näher mit ACPI beschäftigt. Das Folgende gehört also nicht unbedingt in die Kategorie Fakten sondern eher unter "Educated Guess". Wenn du die Information benutzt und damit in der Prüfung durchrasselst, ist das dein eigenes Problem.

1. Es gibt eine Menge chipsatzspezifische Funktionalität, und die Ruhezustände gehören sehr wahrscheinlich dazu. Selbst wenn das OS für jeden Chipsatz einen eigenen Treiber schreiben wollte, bin ich mir relativ sicher, dass sie oft genug auch undokumentiert ist. ACPI ist letztendlich eine Schnittstelle zum BIOS, das für den Chipsatz gemacht ist und deswegen weiß, wie die Funktionalität für diesen Chipsatz konkret umzusetzen ist. Abgesehen davon wüsste ich nicht, was ein OS theoretisch daran hindern sollte, sich selbst schlafen zu legen.

2. Keine Ahnung, was du hier fragen wolltest, die Frage macht keinen Sinn. Wenn ich mal davon ausgehe, dass es immer noch um die Ruhezustände geht, dann werden selbstverständlich je nach Modus CPU und RAM auch schlafengelegt.

3. Du meinst anstatt ein Timeout zu setzen sollte das OS selber nach einer gewissen Zeit eine Funktion zum Deaktivieren aufrufen? Wäre das nicht umständlicher?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

JensK

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 20. June 2012, 17:53 »
Erst mal danke für die Antwort. Ich hätte wohl noch dazu sagen sollen, dass die Fragen auf Power Management abzielen. Mit der 2en Frage ist gemeint warum sich Power Management mit ACPI für den Speicher und die CPU nicht lohnt. Zur dritten Frage hab ich inzwischen auch eine Idee. Die Umsetzung der Power Mangement Mechanismen liegen bei der Hardware und ihren Treibern. ACPI setzt also nur das Signal um eine Unabhängigkeit gegenüber der Hardware zu erreichen. Warum sollte man auch neu implementieren was bereits vorahnden ist. Die Fragen stammen nicht von mir sondern sind aus einem Prüfungsprotokoll entnommen.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 20. June 2012, 18:52 »
Mit der 2en Frage ist gemeint warum sich Power Management mit ACPI für den Speicher und die CPU nicht lohnt.
Ich finde die Frage immer noch unklar. Für welche Operationen genau lohnt sich ACPI nicht? Soweit ich weiß, werden die in ACPI für den Prozessor definierten Zustände  (also C- und P-States) jedenfalls in der Praxis benutzt und auch vom OS kontrolliert. Machen die Systeme das alle falsch?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

JensK

  • Beiträge: 3
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 22. June 2012, 03:42 »
So Prüfung gut bestanden. Die Frage kam zum Glück nicht dran. Hab ihn aber noch danach gefragt, weils mir keine Ruhe gelassen hat.

Die Lösung ist, dass der ACPI Interpreter zu langsam ist. Die Prozessorzustände sind vorgefertigte Zustände wie z.B. C1 Prozessor inaktiv (HALT-Instruktion). Weitere Zustände können mit eignene Werten gefüllt werden. Doch hier liegt das Problem. Ein dynamischer Algorithmus, zur Berechnung der Zustände, würde nicht viel Verbesserung bringen. Im Gegenteil es entsteht ein Overhead: eigentlicher Algorithmus + [Interrupts usw. um das ganze zu triggern] AML langsam (öfter mal Warte-Instruktionen), AML interpretiert (Interpreter laden (=Cache, TLB kontaminiert)). Hinzu kommt noch, dass Frequence Scaling kaum nennenswerte Energieeinsparung mit sich bringt (Nur bei Prozessen die ihr Performanzmaximum schon unterhalb der maximalen Frequenz erreichen). Voltage Scaling bietet hierbei deutlich bessere Ergebnisse.
« Letzte Änderung: 22. June 2012, 03:50 von JensK »

 

Einloggen