De belangrijkste verbetering van eComStation 2 is de ondersteuning voor computers met een Advanced Configuration and Power Interface (ACPI) BIOS. Dit was hard nodig, want zonder deze ACPI ondersteuning zullen veel recente notebooks en servers OS/2 niet booten. En dat geldt ook voor andere besturingssystemen zoals Linux. Maar wat is ACPI nu eigenlijk?
De
eerste opzet van de open industrie standaard ACPI kwam eind 1996 tot
stand. HP, Toshiba, Intel, Phoenix en Microsoft besloten
om tot een nieuw systeem te komen dat het Advanced Power Management
(APM) van laptops moest vervangen. De nieuwe Advanced
Configuration and Power Interface (ACPI) specificatie werd de sleutel
van het zogeheten Operating System-directed configuration and
Power Management (OSPM).
Dat zijn de methoden en
technieken waarmee het besturingssysteem het energieverbruik van de
computer kan regelen.
Op zich was daar veel voor te zeggen. Want de toenmalige APM standaard voor energiebeheer was inadequaat. En met name Intel had behoefte aan een beter energiebeheer voor haar steeds meer energie gebruikende computerhardware.
Het op BIOS routines gebaseerde Advanced Power Management (APM) beschikte maar over weinig toestanden. In de praktijk was APM alleen maar bruikbaar op laptops. Zo bood APM een energiebesparende modus bij batterijgebruik en een op volle kracht vooruit stand voor het geval dat de laptop aangesloten was op het lichtnet.
Het APM BIOS detecteerde wanneer een laptop offline was (aangewezen was op de batterij) en stelde vast welke apparaten recent niet meer gebruikt werden. Een apparaat met een lange time-out kon door het BIOS in de slaapstand gezet worden. En weer wakker worden als het via een interrupt benaderd werd.
Daarnaast kon met het OS/2 APM Energiebeheer Intel's SpeedStep technologie ingesteld worden. Door in het tabblad het aankruisvakje "Energie/performance-instelling niet controleren" aan te vinken werd SpeedStep geactiveerd. De processor liep hiermee bij batterijgebruik op halve kracht en dat was te merken ook: Mijn MP3 bestanden werden met Z! in slow motion afgespeeld.
Maar omdat een server of desktop systeem altijd online (aangesloten op het lichtnet) was, had het instellen van APM op een server of desktop computer maar weinig zin. De Speedstep technologie werkt niet als de processor qua energiebronnen online is. In de praktijk werd alleen de monitor na een tijdje in een standby stand gezet. En bleek hij daarna lastig te ontwaken. En de snelle processor bleef onnodig snelle rondjes draaien. Kortom: APM werkte niet.
Overigens maakt het op halve kracht laten draaien van de processor qua energieverbruik wel veel uit. Zoals het eCS ACPI utility SetGetState op mijn laptop laat zien:
[F:\Cmd]call G:\os2bin\sys\ACPI_UTIL\SETGETSTATE.EXE 0 1 1 1 State set succesfull [F:\Cmd]G:\os2bin\sys\ACPI_UTIL\SETGETSTATE.EXE Searching processors ================================== Processor [CPU0] Now use 0 state Status:0 Support 2 power state -------Power State 0 ---------- Frequence: 3059 Mhz Power: 22000 mWatt Bus Master latency: 250 uSec -------Power State 1 ---------- Frequence: 1596 Mhz Power: 10000 mWatt Bus Master latency: 250 uSec ================================== ================================== Processor [CPU1] Not supported or not CPU present ==================================
Deze Pentium 4 processor gebruikt in de spaarstand maar 10 Watt in plaats van 22 Watt. En de bussnelheid wordt er niet door verminderd. Alleen jammer dat het ACPI utility niets instellen kan. Want de CPU0 status is na "setgetstate 0 1 1 1" nog steeds 0 (3059 Mhz). En de tweede helft (CPU1) van deze P4 dual core processor doet het niet met de SMP kernel.
Notebooks, desktops en servers werden sneller en de energieconsumptie van de processors steeg navenant. Veel sneller dan de batterijcapaciteit en/of de mogelijkheid om ze goedkoop en geruisloos te koelen. En de door deze computers benodigde rekenkracht en energieconsumptie, vergelijk bijv. een 3D spelletje met simpel tekstverwerken, konden van moment tot moment enorm verschillen.
Maar het APM PC BIOS was niet in staat om te bepalen of de rekenkracht (processorcycli) nuttig werd ingezet of versleten werd door een idle proces. Vandaar dat mijn MP3 bestanden vertraagd werden afgespeeld als ik APM offline gebruikte. En omgekeerd had het besturingssysteem geen vat op de de werkwijze van het APM.
Er is dus een reële behoefte aan methoden om de daadwerkelijk benodigde rekenkracht en het gebruik van resources (randapparatuur) door het besturingssysteem en zijn beheerder gedifferentieerder in te kunnen stellen dan het APM BIOS dit kan doen.
In mijn praktijk: zet de CPU op halve kracht nadat OpenOffice opgestart is en ik alleen nog maar aan het typen ben, maar draai de CPU op weer op volle kracht bij MPlayer en Z!. Of laat me op zijn minst zelf de instellingen bepalen. Kortom: geef me meer controle over het energiebeheer. En niet slechts de mogelijkheid om de APM batterijstand op mijn laptop aan of uit te zetten.
De behoefte aan een gedifferentieerde vorm van energiebeheer bestaat nog veel meer op servers die dag en nacht aan staan. Door de beheerder van het besturingssysteem met een Operating System-directed configuration and Power Management (OSPM) stuurbestand meer invloed te geven over het energiebeheer van het ACPI BIOS, kunnen servers die dag en nacht aanstaan veel energie besparen.
De processor en zijn randapparatuur zouden buiten de kantooruren om in een energiebesparende modus kunnen draaien. Maar op een gezette tijden of naar behoefte (hoge IRQ-use) weer op volle kracht kunnen werken. De beheerder zou moeten kunnen bepalen hoe gevoelig een apparaat (netwerkkaart, vaste schijf) voor time-outs mag zijn. En in welke spaarstand de processor weg mag zakken als hij even niets te doen heeft.
Ook notebooks en desktop systemen kunnen van OSPM profiteren. Als de processor nauwelijks gebruikt wordt is het zinloos om het merendeel van de processortijd aan het idle proces te besteden. Een lagere klokfrequentie bespaart niet alleen energie, maar zal ook een duurzamer systeem opleveren. Maar anderzijds kan zelfs een batterij-gebruiker op bepaalde momenten de volle rekenkracht van de CPU willen gebruiken. En dat kan alleen maar als die gebruiker via het besturingssysteem kan bepalen hoe het ACPI systeem zich gedraagt.
Kortom: Intels idee van een Operating System-directed configuration and Power Management (OSPM) systeem is niet zo gek. Generieke methoden waarmee het besturingssysteem het energieverbruik van de computer kan regelen, besparen niet alleen energie, maar komen de duurzaamheid van de hardware (misschien m.u.v. vaste schijven) ten goede.
Maar het ACPI probleem was: welk besturingssysteem het hiermee voor het zeggen zou hebben.
ACPI bleek in de praktijk veel meer dan een Power Management systeem. Een computer BIOS dat correct opgezet is volgens een bepaalde ACPI standaard verleent ieder besturingssysteem bepaalde methoden om de hardware (processor, moederbord en adapters) op basaal niveau (low-level) te beïnvloeden met betrekking tot het energiegebruik. Maar ook met betrekking tot de vraag of hij al dan niet uit zijn primaire slaapstand zal ontwaken. En een nu veel machtiger geworden ACPI PnP besturingssysteem regelde in de praktijk ook zaken als de verdeling van IRQ's. Deze PnP OS instellingen werden door Windows 98 en opvolgers in het CMOS RAM van het BIOS opgeslagen. Handig voor Windows, maar konden Linux en OS/2 er wat mee? Nee.
In de Advanced Power Management specificaties wordt het beheer van het stroomgebruik voornamelijk aan het BIOS overgelaten. In de ACPI standaard werd dat een taak van het besturingssysteem. Vandaar dat Microsoft er als de kippen bij zat om de ontwikkeling bij te sturen op een manier die voor buitenstaanders niet te vatten was
Een citaat uit Bill Gates on Making ACPI Windows-specific uit de Leaked Antitrust Memo verduidelijkt dit:
From: Bill Gates Sent: Sunday, January 24, |999 8:41 AM TO: Jeff Westorinon; Ben Fathi Cc: Carl Stork (Exchange); Nathan Myhrvofd; Eric Rudder Subject: ACPI extensions One thing I find myself wondering about is whether we shouldn't try and make the "ACPI" extensions somehow Windows specific. If seems unfortunate if we do this work and get our partners to do the work and the result is that Linux works great without having to do the work. Maybe there is no way to avoid this problem but it does bother me. Maybe we couid define the APIs so that they work well with NT and not the others even if they are open. Or maybe we could patent something related to this.
Gelukkig
voor Bill, werden de implementaties van de "open ACPI
specificaties" in feite alleen maar door de deelnemers van het
ACPI consortium getest en uitgevoerd.
Oftewel: Een Toshiba notebook met een Phoenix BIOS volgens "de open ACPI v.x industrie standaard" werd alleen maar getest met de door Toshiba of Intel geleverde Windows drivers op een Windows 98 OEM met het laatste met hun Windows OEM werkende BIOS. Het gevolg: laptops die het alleen maar optimaal onder de met hen geleverde Windows versie deden.
De deelnemers van het ACPI consortium er helemaal geen belang bij om buitenstaanders het met hun "open industrie standaard" gemakkelijk te maken. Integendeel: Hun "open ACPI standaard" bleek veel meer een pact van de duivel, met het doel om hun concurrenten op de "vrije markt" aan de kant te schuiven. Een Accu die moet voldoen aan de "Microsoft ACPI besturingsmethode" zegt al genoeg. Hoezo zouden accu's weet moeten hebben van Microsoft? Accu's moeten gewoon hun stroom leveren.
Functies alsWake-on-Lan (slapende server of werkstation wordt wakker als hij door een netwerkgast geroepen wordt) werden in het ACPI BIOS geïmplementeerd. Maar ze werden onvoldoende gedocumenteerd en geïmplementeerd om open source ontwikkelaars een kans te geven ze betrouwbaar in hun kernel te implementeren.
Doordat Microsoft het monopolie had op de laptop markt konden foutieve ACPI implementaties goed gedijen. De kinderfouten in het open ACPI BIOS werden door closed source Windows OEM OSPM stuurbestanden gecorrigeerd. Pas na BIOS updates die de ACPI BIOS fouten corrigeerden maakten Linux ACPI drivers een kans.
De eerste versie van een Operating System-directed configuration and Power Management (OSPM) was het Plug and Play Operating System idee van Windows 98. Maar dit leverde nauwelijks extra energiebesparing op. Het eerste ACPI PnP OS leunde nog op APM en was
vooral een manier waarop Windows 98 de IRQ's van het BIOS zo kon instellen dat andere besturingssystemen het nakijken hadden. En dat was precies wat Bill Gates beoogde met: To make the "ACPI" extensions somehow Windows specific".
OS/2 en Linux gebruikers leerden uiteindelijk dat Windows 98 ook met de BIOS instelling PnP OS=NO kon booten, Maar dat was niet de standaardinstelling van een Windows OEM systeem.
Bron: Setting the plug and play BIOS option (PNP OS) in CMOS Setup)
Instelling |
Beschrijving |
---|---|
PNP OS set to Yes |
The BIOS configures only critical devices (for example, video, hard-disk, and key-Board). NOTE: In this mode, neither the BIOS nor Windows configures the motherboard devices at startup. Therefore, for these earlier computers, you must set PNP OS to No. |
PNP OS set to No |
The BIOS configures critical devices and all motherboard devices under the assumption that Windows cannot. |
Former (legacy) ACPI BIOS PNP BIOS or APM BIOS |
The PNP OS option is irrelevant. Windows (only Windows versions 98, Millennium Edition, 2000 and XP) uses the Advanced Configuration and Power Interface (ACPI) BIOS interface to configure motherboard devices and retrieve system information. NOTE: Although a system does have an ACPI BIOS, ACPI might have been disabled by Windows because of a bug in the ACPI BIOS. In this case, Windows will fall back to PNP BIOS and APM BIOS in read-only mode. Therefore, for any computer with a buggy ACPI BIOS, set PNP OS to No. |
Gelukkig werd Microsoft's PnP OS idee zo onbetrouwbaar dat Microsoft veiligheidshalve het uitdelen van de resources van de kritische apparatuur (video, vaste schijf en toetsenbord) aan het PnP BIOS overliet, zodat andere besturingssystemen (incl. die van MS) met PnP OS= yes vaak nog wel konden booten. Maar geluidskaarten en netwerkkaarten werden op multibootsystemen na een reboot vanuit Windows 98 meestal niet meer herkend, totdat de BIOS instelling op PnP OS =NO gezet werd. En dat gold vaak ook voor het in opzet volledig ACPI compliante PnP OS Windows 2000.
Om ACPI onafhankelijk te maken van het besturingssysteem, werd een aparte taal ontwikkeld: De ACPI machinetaal (AML). Er werden drie interfaces naar het ACPI BIOS gemaakt, die via AML te benaderen zijn: Een ACPI registry set, enige ACPI BIOS functies en meerdere tabellen.
De door het ACPI BIOS in te stellen ACPI tabellen informeren het besturingssysteem over de mogelijkheden en toestand van het ACPI BIOS. Sommige ACPI tabellen bevatten zogeheten Definition blocks met uitvoerbare code die de processor en randapparaten low-level kunnen benaderen. Om de tabellen te lezen en in te stellen heeft de ACPI driver zowel een AML parser (ontleder voor het lezen van de AML tabellen) als een AML interpreter (een uitvoerbare schil voor de AML taal) nodig.
[G:\os2bin\sys\ACPI_UTIL]thermal Show Thermal Thermal zone "_TZ_" Thermal zone "THRM" Current temperature: 60 C ( 3332 K * 10) Critical temperature: 82 C ( 3552 K * 10) Thermal constant1: 0 Thermal constant2: 9 Thermal period: 50 sec * 10 Passive List has 1 elements Device [CPU0] Status 0x0 0 - No error
De Linux ontwikkelaars wierpen zich als eerste op de ACPI machinetaal. Het eerste doel van het ACPI voor Linux project was het gecompliceerde ACPI energiebeheer.
Het heeft
Vier rusttoestanden:
|
|
---|---|
C |
|
|
|
|
|
|
|
Wiki: Advanced Configuration and Power Interface
Setting the plug and play BIOS option (PNP OS) in CMOS Setup