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 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 accu) 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 soms 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 susfull [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 single-core 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).
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 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 een beheerder via het besturingssysteem 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 hadden 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. Dat een Accu moet voldoen aan de "Microsoft ACPI besturingsmethode" zegt al genoeg. Hoezo zouden accu's weet moeten hebben van Microsoft? Accu's moeten gewoon 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.
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. |
Bron: |
Setting the plug and play BIOS option (PNP OS) in CMOS Setup |
Gelukkig bleek 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. En nog niet eens om energie te besparen. Want om Linux op uit de ACPI systemen te laten lopen zou de PC op zijn minst uit een slaapstand moeten kunnen ontwaken!
Het ACPI daemon configuratiebestand staat in %ETC%\ACPID.CFG. Dat komt meestal neer op \MPTN\ETC\ACPID.CFG in de bootdrive.
De standaardinstellingen (hier die van ACPI-APM-20090624.ZIP) zijn als volgt:
[ACPID] ; this is comment # this is comment % this is comment ##################################################################### ; What to do when you close the lid of your notebook ; Variants: ; off = power off ; suspend = suspend to state defined in SleepState ; None = don't stop working %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LID = None ##################################################################### ; What to do when user presses Power button ; Variants: ; off = power off ; suspend = suspend to state defined in SleepState %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PowerButton = Off ##################################################################### ; Which sleep state to use ; Variants: ; S1 - verysy ; S2 - easy ; S3 - hard ; S4 - very hard ; default - not use sleep %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SleepState = S1 ##################################################################### ; Where place log file, full path ; default - current directory (where is run), AcpiDaemon.log %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LogFile = AcpiDaemon.log ##################################################################### ; What is the CPU idle stage in use ; HLT - usially for OS/2 w/o ACPI ; C2 - better idle than HLT ; C3 - deep idle ; default - C2 if possible, else HLT ; ; How to understand that your notebook supports C2 or C3? ; acpi.log -> search for "latency" and "C3" or "C2". ; if C2 is not supported then you see "not support" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% IdleState = HLT ##################################################################### ; Parameters for throttling at SMP kernel Idle (IdleState ; field not work in SMP) in percent. 0 mean off. 100 mean maximum ; default - off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MaxThrl = 0 ; MinThrl = 0 ##################################################################### ; Need print to sreen or no ; 1,Y,y - yes ; 0,N,n - no (default no) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LogScreen = 0 ; ##################################################################### ; ******************* Experimental ************************* ; Use HLT/Cx Idle call in SMP kernel, according to IdleState ; 1,Y,y - yes ; 0,N,n - no ( default ) ; !!! You need special version of SMP kernel to use this feature !!! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ExtraKernelHLT = No ; ##################################################################### ; Where place acpica$ log file, full path ; default - don't create %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;AcpiLog = c:\AcpiCA.log ; ##################################################################### ; How many tics CPU (1...n) will be wait in HLT ; defult - tics in 500nsec interval %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% HLTTime = 700 ##################################################################### ; Save Video for suspend, experiments to wakeup video ; 0 - don't use this feature ; possible 1,3,7,0xf (read VESA BIOS standard) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% VBESave = 7
Er zitten wat spelfouten in. De ontwikkelaars komen uit het Oostbloken hanteren het
Vraag: Wat betekenen al die codes? En hoe weet je of de ACPI.PSD en APM.ADD van eCS dit ondersteunen?
Antwoord: Wat de codes moeten betekenen staat in de Intel specificaties van het ACPI energiebeheer. Die geef ik hieronder. Maar om er achter te komen of uw besturingssysteem ze echt ondersteunt, dat is een kwestie van trial and error. Omdat hardwarefabrikanten geen energie steken in OS/2 stuurbestanden.
ACPI kent drie globale systeem standen: De werkstand G1, de slaapstand G2 en de mechanische uitstand G3. Global system states gelden voor het systeem als geheel: dus voor de processor, het moederbord, het geheugen en de perifere apparaten.
Op http://www.acpi.info vindt u technische documenten. Hier volgt een overzicht.
System state |
Status van het systeem |
---|---|
S0 (G1) |
Normale werkstand (fully-on). Het vermogen dat een energiezuinige computer in de normale werkstand trekt hangt op een computer af van de hoeveelheid werk, maar vooral videokaarten zijn er berucht om dat ze ook bij een stilstaand beeld nog tientallen Watts consumeren. De processor zal in S0 doorgaans wel vaart minderen via throttling of een hogere Performance State in C0. |
Slaapstand S1 |
In de slaapstand houdt de processor tijdelijk op met werken en gebruikt dus minder stroom. Perifere apparaten kunnen uitgeschakeld zijn. |
Slaapstand S2 |
De processor krijgt geen stroom meer. Perifere apparaten kunnen uitgeschakeld zijn. |
Slaapstand S3 |
Stand-by (slaapstand in Vista). De processor krijgt geen stroom. De instellingen worden in het geheugen vastgehouden (suspend to RAM). Maar als de grafische kaart niet uitgeschakeld wordt blijft het energieverbruik relatief hoog. Ik mat 30 Watt op een Dell laptop en dat leverde nauwelijks energiebesparing op ten opzichte van G1. |
Slaapstand S4 |
Slaapstand (hibernatie, sluimerstand in Vista). De instellingen worden op de vaste schijf opgeslagen. De computer kan alle randapparaten op het moederbord dus uitzetten. Maar met BIOS functies als Wake-on-LAN (WoL), zal op zijn minst de netwerkaart en het moederbord nog deels actief moeten staan. Maar ook dan zou het energieverbruik hooguit een paar Watt mogen zijn. Het inslapen en ontwaken uit de slaapstand kost meer tijd (minuten) dan het in en uitschakelen van de stand-by stand (seconden). Maar de slaapstand heeft wel het voordeel dat er echt energie bespaard wordt en eventueel na een uitstapje naar een ander geboot OS, weer snel kunt beginnen met waar u was gebleven. Overigens moet u er wel rekening mee houden dat sommige gemounte schijven het na het ontwaken uit de slaapstand niet meer doen. HPFS schijven krijgen bij het inslapen van Linux een dirty flag (en zijn daarna alleen te lezen) en netwerkverbindingen worden afgebroken. |
Slaapstand S5 |
De zachte power off (soft off). De computer is met het knopje vooraan (reset) of via het besturingssysteem (Power off) uitgezet, maar u kunt beter niet aan de voeding komen, want hier staat nog stroom op! Op het moederbord kunnen nog ledjes branden. Het energieverbruik is nagenoeg 0 tot een paar Watt (bijv. bij Wake-on-LAN). |
De uitstand G3 |
De harde uit (mechanical power off) stand. De computer gebruikt nu echt geen stroom meer via de accu of het lichtnet. De stekker is eruit en/of het aan-uit knopje op de achterkant van de PC staat uit. Een batterijtje op het moederbord houdt de tijd bij. Alleen in deze stand kunt u onderdelen op uw computer vervangen. |
Processor states |
Status van randapparatuur |
---|---|
C States (CST) |
Processor Power States (C states) spelen alleen een rol als het systeem in de globale werkstand (G0) staat. Tijdens de slaapstand (G1) en de uitstand (G2) wordt de processor sowieso niet gebruikt. |
C0 (P0-P16) |
Normale werkstand. De processor reageert zo snel als maar kan op de via de bus (eigenlijk zijn snelle interne cache) binnenkomende instructies. Maar omdat het systeem en video geheugen en zeker de op de 33 MHz PCI bus aangesloten randapparatuur op een lagere frequentie lopen en u via uw besturingssysteem niet aldoor instructies opgeeft, staat de processor meestal te wachten. De processor doet dan niets anders dan snel beschikbaar zijn. Het besturingssysteem geeft hem al die tijd wat vermaak via het idle (ledig) proces. Het energieverbruik en de warmteontwikkeling van de processor zullen afhangen van de klokfrequentie (het aantal stroompjes per seconde) en de spanning die tijdens zo`n stroompje (kloktik) op de processor staat. Het energieverbruik hangt op zich dus niet af van de hoeveelheid nuttig werk, dat de processor heeft te doen. Want processoren besteden hun meeste energie aan het wachten op instructies (het idle proces). Tot op zekere hoogte kunnen zeer compact ontworpen processoren met een lagere werkspanning uit. Hun signalen hoeven immers kortere afstanden te overbruggen. En ook het reduceren van de kloksnelheid maakt het mogelijk om met lagere spanningen te werken. Als u op korte afstand zacht, maar langzaam fluistert komt uw bericht nog wel over. Maar iemand die snel spreekt, zal luider moeten spreken. En zeker als hij het op grote afstand doet. De klokfrequentie in de normale werkstand varieert van maximaal (Performance state 0, zeg maar de processor kloksnelheid specificatie) tot de lagere klokfrequenties in de performance states P1 t/m P16. Het doel van het reduceren van de klokfrequentie is om energie te besparen en/of om oververhitting te voorkomen. Bij Intel heet deze variabele klokfrequentie techniek Speedstep, bij AMD processors gaat het om PowerNow! en Cool'n'Quiet enVIA spreekt van PowerSaver. Het effect van de klokfrequentie op het energieverbruik van de processor is bij normaal gebruik ongeveer rechtlijnig. Zo werkte de P4 op mijn oude laptop tijdens accugebruik niet op 3059 MHz, maar op 1596 Mhz en gebruikte dan 10 i.p.v. 22 Watt. Hij werd dan minder heet zodat ook energie op de koeling bespaard kon worden. Maar zou ik de klokfrequentie van de processor ver boven zijn specificaties opvoeren en daarnaast ook de spanning opvoeren om de kans op elektronische fouten (ruis) te verminder, dan nemen het stroomverbruik en de warmteontwikkeling meer dan evenredig toe. Het andere doel, het voorkomen van oververhitting, is pijnlijk zichtbaar tijdens mijn MEncoder bewerkingen: Als de door mencoder intensief gebruikte Celeron processor al na een paar seconden (!) te heet wordt (72 °C is de door Intel opgegeven grens), halveert het ACPI BIOS zijn klokfrequentie, waardoor de processor temperatuur weer afneemt (hier tot 67,50 °C). Kortom: Mijn 3 GHz Celeron is een goede sprinter (prima voor Internet en Office taken), maar zakt tijdens puur rekenwerk (mencoder) door een te hoog oplopende temperatuur door Intels Speedstep technologie snel weer in performance af. Het coderen duurt hierdoor weliswaar langer, maar het alternatief (stug doorgaan in P0), zou een tijdelijk of permanent door oververhitting defecte processor zijn en dus op zijn minst vastlopers en dataverlies (een risico dat onbezonnen processor, bus en geheugen overclockers aldoor lopen). Voor dat soort zaken (coderen) zijn voor ACPI ontworpen processoren met een gunstiger performance/energieverbruik aantrekkelijker. Ze lopen doorgaans met meerdere langzamer geklokte kernen (een 2x1500 dual core SMP kern i.p.v. een op 3000 MHz lopende enkele kern), maken efficienter gebruik van de kloktikken door pipelining en hyperthreading (HT) en vangen veel voorkomende multimedia vraagstukken met slimmere routines op. |
C1 (Halt) |
Halt. De processor voert tijdelijk geen instructies meer uit, maar kan vrijwel onmiddellijk uit deze slaapstand gewekt worden. Vrijwel iedere IA 32-bit processor ondersteunt de HLT instructie zonder hulp van de chipset. |
C2 () |
Stop-clock. De processor is moeilijker te wekken. De energiebesparing is groter dan in C1. De chipset moet C2 ondersteunen. |
C3 () |
Sleep. De processor is nog moeilijker te wekken, maar de energiebesparing is aanzienlijk. De chipset moet C3 ondersteunen. |
Een voorbeeld |
De eerste (Cpu0Cst) core van deze dual core processor gebruikt in de C1 stand (C1State) 1 Watt, in C2 (C2State) 0,5 watt en in C3 (C3State) maar 0,1 Watt volgens het logbestand van de acpidaemon. --:--:-- ACPI: SSDT @ 0x7F681EED/0x1C6 (v1 PmRef Cpu0Cst 0x3001 INTL 0x20050624) --:--:-- Status Evaluate Processor PDC 0x0 AE_OK --:--:-- Status Evaluate Processor 0x0 AE_OK --:--:-- Usable:2 Counter:0 --:--:-- CPU id to N:0 --:--:-- ProcId: 0x0 --:--:-- P_BLK: 0x1010 --:--:-- P_BLK len: 0x6 --:--:-- CPU0 Status Evaluate _PCT 0x5 AE_NOT_FOUND --:--:-- CPU0 Status Evaluate _CST 0x0 AE_OK --:--:-- _CST has 3 Cstates --:--:-- C1State control: 0x0 --:--:-- Latency: 1 uSec --:--:-- Power consuption: 1000 mWatt --:--:-- C2State control: 0x1014 --:--:-- Latency: 1 uSec --:--:-- Power consuption: 500 mWatt --:--:-- C3State control: 0x1016 --:--:-- Latency: 57 uSec --:--:-- Power consuption: 100 mWatt --:--:-- CheckCST: Tick for wait 0x728 Addr:0x1014 --:--:-- CheckCST: Not need HLT for CPU0 De latency (wektijd) is in C1 en C2 1 icroseconden, maar in C3 57 microseconden. De opmerking "Not need HLT for CPU0" betekent dat ik in \MPTN\ETC\ACPID.CFG C2 of C3 mag instellen. C2 is de veiliger weg, maar C3 levert meer energiebesparing op. ; What is the CPU idle stage in use ; HLT - usially for OS/2 w/o ACPI ; C2 - better idle than HLT ; C3 - deep idle ; default - C2 if possible, else HLT ; ; How to understand that your notebook supports C2 or C3? ; acpi.log -> search for "latency" and "C3" or "C2". ; if C2 is not supported then you see "not support %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% IdleState = C3 |
Device states |
Status van randapparatuur |
---|---|
D0 |
Normale werkstand (full of normal power state). |
D1, D2 |
Low power state. Het apparaat verbruikt in de D1 en D2 slaapstanden minder stroom, maar is nog wel aangesloten op de PCI bus. Tenminste als het apparaat aangesloten is. Hier een voorbeeld uit de uitvoer van pci.exe onder OS/2. Het gaat om een PCMIA cardbus van Micro Inc in een Dell computer. Er is geen PCIMIA kaart ingestoken. Bus 3 (PCI), Device Number 1, Device Function 0 Vendor 1217h O2 Micro Inc Device 7135h Unknown Command 0000h (Bus Access Disabled!!) Status 0410h (Has Capabilities List, Slow Timing) Revision 21h, Header Type 82h, Bus Latency Timer 40h Self test 00h (Self test not supported) PCI Class Bridge, type PCI to Cardbus Subsystem ID 01CC1028h Unknown Subsystem Vendor 1028h Dell Computer Corp System IRQ 19, INT# A CardBus Bridge Information: PCI Bus Number 3, CardBus Bus Number 4, Subordinate Bus number 4 CardBus Latency 20h Secondary Bus Command 0040h (bus is in RESET, ints routed by PCI) Secondary Bus Status 0200h (Medium Timing) Socket/ExCa Base Memory Address : 00000000h Memory Range 0 : None Memory Range 1 : None I/O Port Range 0 : 0000h..0003h I/O Port Range 1 : 0000h..0003h New Capabilities List Present: Power Management Capability, Version 1.1 Supports low power State D1 Supports low power State D2 Supports PME# signalling from mode(s) D0, D1, D2, D3hot, D3cold PME# signalling is currently disabled 3.3v AUX Current required : 0 mA (Self powered) Current Power State : D0 (Device operational, no power saving) 0 mW D0 power consume 0 mW D0 power dissipate 0 mW D1 power consume 0 mW D1 power dissipate 0 mW D2 power consume 0 mW D2 power dissipate 0 mW D3 power consume 0 mW D3 power dissipate 0 mW common logic power consume Het is een slim randapparaat. Want hoewel de status D0 is, gebruikt het geen stroom (o mW). Terecht, want zonder PCMIA kaart heeft deze bus niets te doen. Alle perifere apparaten kunnen via de lichtknop volledig aan (D0) of volledig uit (D3) staan. Maar helaas ondersteunen maar weinig apparaten de D1 en D2 tussenstanden. New Capabilities List Present: Power Management Capability, Version 1.1 Does not support low power State D1 or D2
|
D3 |
Het apparaat staat helemaal uit (fully off). Het kan dus niet reageren op weksignalen via de PCI bus. |
Het hoofddoel van de ACPI driver voor eComStation is om er voor te zorgen dat moderne ACPI hardware door recente OS/2 kernels wordt herkend. Het tweede doel is energiebesparing: het ACPI energiebeheer vervangt het verouderde APM.
Dat moderen ACPI systemen onder OS/2 lopen is helaas geen vanzelfsprekendheid. Veel hardware fabrikanten ontwerpen hun systemen slechts voor een recente versie van Windows (Designed for Windows versie x). En of de componenten van het systeem het ook onder OS/2 of Linux doen, is voor de meeste computergebruikers bijzaak. Alles draait immers om de aan Windows gewende gebruiker: de meeste hardware en software worden dus ontworpen voor het Microsoft Windows platform.
Omdat IBM vanwege deze marktverhoudingen OS/2 verlaten heeft, worden OS/2 kernels intern niet meer aangepast. Een OS/2 kernel kan hoogstens worden gepatched. Maar dat is een heikele situatie omdat degene die de patch uitbrengt, niet over de broncode van de door IBM en Microsoft gepanteerde kernel en interfaces beschikt. Daarom is het veiliger om stuurbestanden te gebruiken die de OS/2 kernel aanpassen aan ACPI.
Het stuurbestand ACPI.PSD vormt de interface tussen het ACPI BIOS en OS/2 kernel. Met de volgende instellingen worden op een ACPI systeem de APIC interface en de Symmetrical Multiprocessing geactiveerd:
PSD=ACPI.PSD /SMP /APIC
PSD is de afkorting van Platform Specific Driver. Een PSD stuurbestand heeft dezelfde functie als de Hardware Abstraction Layer (HAL) van Windows NT, die Windows NT ook op niet Intel platformen moest laten draaien. Dergelijke tussen de hardware en kernel geplaatste stuurbestanden ondersteunen het besturingssysteem (lees: de kernel) op nieuwe hardware systemen. Of zoals The Config.sys Documentation Project/PSD Statements het zegt:
PSD stands for "PLATFORM SPECIFIC DRIVERS". These drivers provide an abstraction layer for the underlying hardware by allowing the operating system to call generic functions to perform platform -specific operations without worrying about the actual hardware implementation.
De ondersteuning voor niet met Intel compatibele platformen is onder Windows overigens nooit voortgezet. Inmiddels hebben de PSD drivers van OS/2 en de HAL driver van Linux meer betekenis. Want OS/2 en Linux draaien in tegenstelling tot NT ook op IBM´s Risc platformen als de Power PC.
In dezelfde trant kent eComStation nu een generieke PSD driver voor ACPI systemen. De basis voor deze eComStation ACPI driver is OS2APIC.PSD driver Warp Server for e-business SMP. Deze OS/2 SMP driver was essentieel op moderne OS/2 ACPI systemen met meerdere processoren (2-16 processors) die hetzelfde geheugen deelden (Symmetrical multiprocessing). Maar de ACPI.PSD van eComStation voor de OS/2 SMP kernel is bedoeld om op systemen met slechts een processor Hyperthreading en/of de meerdere kernen van dezelfde processor aan te spreken. Zie: ACPI driver voor eComStation en mijn opmerkingen hieronder.
Optie |
Gemaakt voor |
|
---|---|---|
/SMP |
SMP, ACPI en multicore systemen |
Activeer multi-processor, multi-core en/of Intels hyperthreading (HT) ondersteuning. Overigens werkt de OS/2 SMP kernel ook op single-core systemen. Het kan geen kwaad om op SMP kernels deze optie te activeren, want veel single core Intel kernels ondersteunen hyperthreading. Daardoor werkt de processor effectiever. Maar op een niet SMP of HT kernel heeft deze optie geen effect. Alleen met een recente SMP kernel kunt u van /APIC of Intels Hyperthreading (HT) gebruik maken. Een eventuele /SMP optie wordt op single-core systemen genegeerd. |
/PIC of /APIC |
SMP kernels |
Met de instelling /PIC gebruikt de processor de Intel 8259 chip als programmable interrupt controller (PIC). Hierbij heeft de computer hardware de beschikking over 8 interrups per 8259 chip. Op een AT zijn dat de IRQs 0 t/m 15. Voor details zie Interrupts in de OS/2 sectie. In de door eComStation vaak ondersteunde modernere APIC modus kunnen ook IRQs nummers boven de 15 worden gebruikt. U ziet dit met rmview /irq. Dit is geeft rmview /irq nadat de SMP kernel geboot is met /APIC: RMVIEW: Physical view IRQ Level = 0 PCI Pin = NONE Flg = EXCLUSIVE TIMER_CH_0 IRQ Level = 1 PCI Pin = NONE Flg = EXCLUSIVE KBD_0 Keyboard Controller IRQ Level = 2 PCI Pin = NONE Flg = EXCLUSIVE PIC_1 IRQ Level = 4 PCI Pin = NONE Flg = MULTIPLEXED SERIAL_0 Serial Controller IRQ Level = 8 PCI Pin = NONE Flg = EXCLUSIVE RTC IRQ Level = 9 PCI Pin = NONE Flg = SHARED ACPI Interface IRQ Level = 12 PCI Pin = NONE Flg = SHARED AUX_0 PS/2 Auxiliary Device Controller IRQ Level = 14 PCI Pin = A Flg = SHARED IDE_0 xATA Controller IRQ Level = 15 PCI Pin = NONE Flg = EXCLUSIVE IDE_1 xATA Controller IRQ Level = 17 PCI Pin = A Flg = SHARED Intel 3945 a/b/g IRQ Level = 20 PCI Pin = A Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 20 PCI Pin = A Flg = SHARED EHCI Compliant USB Host Controller IRQ Level = 21 PCI Pin = NONE Flg = SHARED HDA Intel with SigmaTel STAC9200 IRQ Level = 21 PCI Pin = B Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 22 PCI Pin = C Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 23 PCI Pin = D Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 44 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface IRQ Level = 45 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface IRQ Level = 46 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface IRQ Level = 47 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface Rmview /IRQ geeft helaas geen volledig beeld. Zo weet ik dat IRQ 5 door de parallelle poort gebruikt kan worden. En IRQ 3 en 4 door seriele poorten. Ook zie ik een netwerkkaart die tijdens het booten op IRQ 18 werd geladen niet in het overzicht terug. In de /PIC stand hieronder ziet u dat de IRQ nummers 9 en 10 meerdere malen gebruikt worden. Opnieuw geldt dat er meer IRQs gedeeld kunnen worden dan met de output van rmview /irq is te zien. RMVIEW: Physical view IRQ Level = 0 PCI Pin = NONE Flg = EXCLUSIVE TIMER_CH_0 IRQ Level = 1 PCI Pin = NONE Flg = EXCLUSIVE KBD_0 Keyboard Controller IRQ Level = 2 PCI Pin = NONE Flg = EXCLUSIVE PIC_1 IRQ Level = 3 PCI Pin = A Flg = SHARED Intel 3945 a/b/g IRQ Level = 5 PCI Pin = D Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 7 PCI Pin = C Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 8 PCI Pin = NONE Flg = EXCLUSIVE RTC IRQ Level = 9 PCI Pin = A Flg = SHARED EHCI Compliant USB Host Controller IRQ Level = 9 PCI Pin = A Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 9 PCI Pin = NONE Flg = SHARED ACPI Interface IRQ Level = 10 PCI Pin = NONE Flg = SHARED HDA Intel with SigmaTel STAC9200 IRQ Level = 10 PCI Pin = B Flg = SHARED UHCI Compliant USB Host Controller IRQ Level = 12 PCI Pin = NONE Flg = SHARED AUX_0 PS/2 Auxiliary Device Controller IRQ Level = 14 PCI Pin = A Flg = SHARED IDE_0 xATA Controller IRQ Level = 15 PCI Pin = NONE Flg = EXCLUSIVE IDE_1 xATA Controller IRQ Level = 44 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface IRQ Level = 45 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface IRQ Level = 46 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface IRQ Level = 47 PCI Pin = NONE Flg = EXCLUSIVE ACPI Interface APIC werkt onder eCS alleen op SMP kernels en het BIOS en uw stuurbestanden moeten dit ondersteunen. Probeer daarom altijd eerst /PIC uit als een stuurbestand niet laadt. Later kunt u vaak alsnog van ACPI gebruik maken, door de niet hoog (>15 IRQ #) geladen stuurbestanden via de REMAP optie van het bestand \OS2\BOOT\acpi.cfg naar een lager IRQ adres te laten verhuizen. ; Use IRQn instead IRQm in APIC ; Format: ; REMAP N TO M ; Where N source IRQ in APIC , M - IRQ to set for Kernel ; possible format for N and M. Digit (17) , Hexadecimal (0x11), Octal ( 021 ) ; ; For this "Use IRQ5 instead IRQ19 in APIC", ;============================================================================ REMAP 19 TO 5 ; REMAP 0x13 TO 05 ; REMAP 21 TO 10 Helaas verhuist u hiermee vaak meerdere randapparaten naar hetzelfde en dus gedeelde IRQ adres. IRQ conflicten lost u er dus zelden mee op. Maar beter een door meerdere stuurbestanden gedeelde IRQ dan niet werkende drivers. Kortom: Gebruik /APIC als uw stuurbestanden en uw BIOS dit ondersteunen, want dan beschikt u over meer IRQs. Gebruik hiervoor de SMP kernel. Als sommige stuurbestanden niet laden zoek dan naar alternatieven of pas acpi.cfg zo aan dat ze op de klassieke wijze kunnen laden. Als dat niet lukt gebruik dan /APIC en maak er met de trucs uit zie Interrupts er het beste van. |
/CST:name |
|
Name of method responsible for _CST method. Example: /CST:XCST. You can find the method in the subtree of CPU. (It's Cx state). It is needed for APM, idle of CPU,etc Een Processor Power state (CST) wordt aangeven door een Processor power state declaration object. Een C State change is bijvoorbeeld de overgang van AC op DC. |
/IRQ:x |
Acer Ferrari notebook |
Allows replace ACPI IRQ number Standaard wordt IRQ 9 gebruikt voor de ACPI interface. Zowel met /PIC als met /APIC. IRQ 9 is de Cascade naar IRQ2 op de AT, maar is op PCI systemen vrij. Maar het kan ook zijn dat het BIOS op IRQ 9 een perifeer apparaat verwacht. Dot was blijkbaar het geval met Acer Ferrari notebooks. |
/NOD |
Staat standaard aan om APIC mode te ondersteunen. Uitzetten met /!NOD. |
Experimental switch to activate internal OEMHLP$ driver. Disable acpica.add if using this switch.
|
/!NOD |
ACPI |
Disable internal OEMHLP$ driver. Don't forget activate acpica.add (read troubleshooting.doc). Yes, you can boot; But ACPI is semi-functional in this case: APIC doesn't work, LINK doesn't, REMAP doesn't, etc. 2008/07: this switch is recommended for NVidia chipset, to run Winos2+dos session and/or SCSI
|
/R |
|
Use ACPI Reset instead of kernel's reset. It is useful if running SMP kernel only. Use it if have troubles with system reboot or shutdown.
|
/FS |
Dell notebooks |
"Full Safe" - use this key for Dell notebooks. Pas met de switch /FS werd de USB stack herkend op mijn Dell notebook. |
/B |
Obsoleet |
/B - is absent starting from ACPI.PSD 3.0.
|
/EIS |
Intel platform |
"Enable Intel Slack", AcpiGbl_EnableInterpreterSlack. The Intel interpreter strictly follows the ACPI specification. Setting this switch allows the interpreter to ignore certain errors and/or bad AML constructs. "This switch is useful for 98% of notebooks with bad ACPI tables" (q) Intel developers. Use it if ACPI log contains errors messages.
|
/St:stacksize Size of stack |
|
Default is 32 Kbytes. Useful if experimenting with bad ACPI tables and /EIS . Example: /St:0x8000.
|
/VBE |
|
Init Video BIOS on resume (after sleep).
|
/OS="name" |
|
Define Operating System. "eComStation" by default.. but some /OSI="name" notebooks need other OS name there. Examples: /OS="Microsoft Windows NT", /OSI="Windows 2001", /OSI="Windows 2001 SP1", "eComStation".
|
/SAP |
|
Set startup ACPI options. Default value: 0. /SAP:0x0. You can assemble this values: ACPI_FULL_INITIALIZATION 0x00ACPI_NO_ADDRESS_SPACE_INIT 0x01 ACPI_NO_HARDWARE_INIT 0x02 ACPI_NO_EVENT_INIT 0x04 ACPI_NO_HANDLER_INIT 0x08 ACPI_NO_ACPI_ENABLE 0x10 ACPI_NO_DEVICE_INIT 0x20 ACPI_NO_OBJECT_INIT 0x40
|
/MCPU:xx |
|
Force the quantity of processors. The value is checked so you can't select 0 or more than you have.
|
/CD |
Met USB problemen onder /APIC.. |
"Crazy Device" - use this switch if USB doesn't work or if you fail to boot. Use it only if you have troubles with USB.
|
/ALS |
Geldig met /APIC probelmen met oude NVidia chipsets. |
Set APIC link on ACPI start. Useful for old NVidias. (It's like /CD). Try it if computer hangs after booting of all drivers.
|
/TMR |
Geldig met /APIC problemen onder NVIDIA chipsets |
Use it if running SMP machine and the motherboard doesn't follow MPS 1.4 standard. |
/DV:vector |
Alleen geldig met /APIC |
Dummy Vector - hide the vector. The kernel will not process it. (/DV:0x57 is enabled by default on every PC now). Notes: *) All digital values are accepted in hex or decimal form: 0x??? (hex) 0?? (octal) ??? (decimal)
|
/Onumber - Output |
Debug versie van acpi.psd |
The number of COM-port used for debug output (values: 1, 2, address of I/O port). Configure receiver: 115200,8,n HW flow contol
|
/LS:number |
|
Leave Sleep - after sleep state the computer will be switched to this state (0 - no switch, 5 - turn off)
|
Wiki: Advanced Configuration and Power Interface
Wiki: Intel APIC Architecture
The ACPI Component Architecture Project
Advanced Configuration and Power Interface
LessWatts.org - Saving Power on Intell systems with Linux
Setting the plug and play BIOS option (PNP OS) in CMOS Setup