ACPI

ACPI (inglise keeles "Advanced Configuration and Power Interface", lühend ACPI) on standard, mis võimaldab anda operatsioonisüsteemile informatsiooni riistvara olekute kohta, et operatsioonisüsteem saaks teha toitehaldust. Standard töötati välja Inteli, Microsofti ja Toshiba poolt ning avalikustati 1996. aasta detsembris. 
ACPI võimaldab arvutil oma välisseadmeid kontrollida, et parandada energiakulu, eriti sülearvutitel. Standard võimaldab veel ka arvutit väliste seadmete abil sisse ja välja lülitada, nii et näiteks hiire puudutus või klahvivajutus lülitab arvuti uneolekust uuesti sisse. ACPI ühendas varasema toitehalduse (Advanced Power Management) ja PnP BIOS-i täiustatud toitehaldussüsteemiks. Et ACPI-t oleks võimalik kasutada, peavad arvuti emaplaat, BIOS ja operatsioonisüsteem toetama ACPI standardit ning BIOS sisaldama ACPI tarkvara ja operatsioonisüsteem peab olema ACPI-ga ühilduv. Alates Windows 98-st lisati ACPI tugi Windowsi operatsioonisüsteemile ning arvuti kiibistiku ja BIOS-i uuendati ACPI toetamiseks. ACPI pakub suurt valikut tänapäevaste arvutisüsteemide jaoks olulisi funktsioone. Need võimalused lihtsustavad seadmete haldust, energiatõhusust ja süsteemi reageerimisvõimet.
ACPI abil on võimalik teha järgmist: 
Ajalugu.
ACPI standardi esimese versiooni avaldasid 1996. aasta detsembris tehnoloogiaettevõtted Intel, Microsoft ja Toshiba ning see toetas alguses 16-, 24- ja 32-bitiseid aadressiruume. Standardi eesmärk oli ületada varasemate toitehaldusstandardite, näiteks APM-i (Advanced Power Managment), piirangud, mis võimaldas toitehalduse üle vaid piiratud kontrolli ega toetanud tolleaegseid uusi Plug and Play funktsioone. ACPI tõi juurde keerukamaid toitehaldus võimalusi, mida juhtis otse operatsioonisüsteem, mis võimaldas riistvara üle täpsemat ja suuremat kontrolli. See oli sülearvuti arendamisel väga oluline, kuna kasutatavuse ja kaasaskantavuse parandamiseks oli vaja paremat toitehaldust. 
2000. aastal avalikustati ACPI versioon 2.0, mis tõi endaga kaasa 64-bitiste aadressiruumide toe. 
2004. aasta septembris avalikustati versioon 3.0, mis tõi kaasa ACPI standardi toe SATA liidestele, PCIe-le, ümbritseva valguse anduritele ning kasutaja tuvastamis seadmetele. 
2009. aastal avalikustati versioon 4.0, mis tõi kaasa palju uusi kasutusvõimalusi. Kõige olulisemad muudatused olid x2APIC tugi, loogilise protsessori jõudeoleku ning USB 3.0 tugi. 
Algselt oli ACPI eksklusiivne x86 arhitektuurile, aga pärast versiooni 5.0 avalikustamist 2011. aasta detsembris, lisati juurde ka ARM-arhitektuuri tugi. 
Kõige uuem versioon, mis on praeguseks avalikustatud, on 6.5, mis avalikustati 2022. aasta augustis. 
Arhitektuur.
ACPI arhitektuur pakub võimalusi seadmete konfigureerimiseks ja energiatarbimise haldamiseks. See on loodud selleks, et võimaldada operatsioonisüsteemidel riistvaraga standardiseeritud viisil suhelda. 
ACPI määratleb mehhanismi mitmesuguste toite-, soojushalduste ja muude süsteemifunktsioonidega seotud sündmuste käsitlemiseks. Nende seas on sellised sündmused nagu aku oleku muutused, temperatuuri muutused või riistvara oleku värskendused. Operatsioonisüsteem saab neile sündmustele kohe reageerida, kohandades süsteemi parameetreid dünaamiliselt, et tagada optimaalne jõudlus ja energiakulu. 
Püsivara tasemel ACPI-l on kolm peamist komponenti: ACPI tabelid, ACPI BIOS ja ACPI registrid.
ACPI tabelid.
ACPI kasutab riistvara konfiguratsiooni ja süsteemi oleku teabe salvestamiseks mitut tabelit. Need tabelid on olulised, kuna need sisaldavad andmeid, mida operatsioonisüsteem vajab riistvara võimaluste ja haldamise mõistmiseks. Kõige olulisemad ACPI tabelid on järgmised: 
ACPI tabelid on kodeeritud baitkoodis, mida nimetatakse ACPI masinkeeleks (AML). Seda keelt tõlgib operatsioonisüsteemi ACPI komponent, mis võimaldab operatsioonisüsteemil süsteemi riistvara otse hallata.
ACPI BIOS.
Süsteemi püsivara või BIOS sisaldab ACPI implementatsiooni, mis sisaldab esialgseid ACPI tabeleid ja liideseid, mis on operatsioonisüsteemile vajalikud süsteemiressursside haldamise ülevõtmiseks. ACPI BIOS vastutab ACPI keskkonna käivitamise eest enne seda, kui juhtimine antakse üle operatsioonisüsteemile. 
Operatsioonisüsteemi liidesed.
Operatsioonisüsteem liidestub ACPI-ga ACPI draiver kaudu. See draiver vastutab baitkoodi (AML-i) tõlkmise ja ACPI funktsioonide täitmise eest. See toimib ühendusena süsteemi riist- ja tarkvara vahel, tagades, et operatsioonisüsteem saab riistvararessursse tõhusalt hallata vastavalt ACPI spetsifikatsioonidele.
Võimalused.
ACPI pakub suurt valikut funktsioone ja võimalusi, mis on tänapäevaste arvutisüsteemide jaoks olulised. ACPI abil on operatsioonisüsteemil võimalik teostada üldisi toiminguid ilma riistvara kohta üksikasju teadmata. ACPI võimaldab seadmetel süsteemi äratada madalama energiatarbega olekust näiteks klaviatuuri klahvivajutusega. Veel saab näiteks võrgukaarte seadistada süsteemi äratama, kui toimub võrgutegevus. 
ACPI toetab sündmuspõhist programmeerimismudelit, kus riistvarasündmused saavad käivitada osasid tegevusi ilma protsessori otsese sekkumiseta. Sellega paraneb süsteemi tõhusus ja reageerimisvõime. Mõningaid sündmusi, nagu toitenupu vajutamine, aku oleku muutused või sülearvuti kaane kinni ja lahti tegemine, saab seadistada nii, et need käivituksid automaatselt teatud süsteemitegevustele. ACPI toetab mõnede seadmete puhul ka käigultvahetust, mis võimaldab neid seadmeid vahetada või eemaldada sel ajal, kui süsteem töötab. See on eriti oluline serverikeskkondades ja seadmetel nagu akud ja andmekandjad. 
Toitehaldus.
ACPI määrab süsteemile mitu globaalset energiatarbimise olekut, alates täielikult sisselülitatud olekust kuni täielikult väljalülitatud olekuni, samuti seadmepõhised energiatarbimise olekud. Need olekud võimaldavad süsteemil järk-järgult energiatarbimist vähendada, lülitades välja mittevajalikke komponente, kui neid ei kasutata. 
Peamised energiatarbimise olekud on järgmised:
Termohaldus.
ACPI võimaldab tõhusat termohaldus strateegiate abil, mis kohandavad riistvarakomponentide tööparameetreid vastavalt hetke temperatuurile. See aitab säilitada ohutut töötemperatuuri, vältides ülekuumenemist ja riistvara võimalikku kahjustumist. 
Akuhaldus.
ACPI pakub üksikasjalikke aku haldamise võimalusi, sealhulgas järelejäänud mahutavuse, aku oleku ja eeldatava tööaja jälgimist. See teave võimaldab operatsioonisüsteemidel optimeerida energiatarbimist vastavalt hetke aku olekule ja pakkuda kasutajatele täpseid aku tööea hinnanguid. 
Operatsioonisüsteemid.
Microsofti Windows 98 oli esimene operatsioonisüsteem, mis kasutas ACPI-t, aga selle rakendamine oli mõnevõrra vigane või mittetäielik, kuigi mõned sellega seotud probleemid olid põhjustatud esimese põlvkonna ACPI riistvarast. Teised operatsioonisüsteemid, sealhulgas Windowsi hilisemad versioonid, eComStation, FreeBSD, NetBSD, OpenBSD, HP-UX, OpenVMS, Linux ja Solarise arvutiversioonid, toetavad vähemalt mingil määral ACPI-d.
Mõned uuemad operatsioonisüsteemid, näiteks Windows Vista, nõuavad, et arvutil oleks ACPI-ga ühilduv BIOS.
Windowsi operatsioonisüsteemid kasutavad ACPI sündmustele juurdepääsuks faili acpi.sys ja Linux operatsioonisüsteemid kasutavad ligipääsemiseks acpid-i. 
Puudused.
ACPI rakendamine nõuab riistvaratootjate ja tarkvaraarendajate tihedat koostööd, mis võib tuua kaasa ühilduvusprobleemid. Kui siin (näiteks PCIe) ootab ja seadmed on sügavas unes, tekitab see probleemi, sest siinid ei oota, et seadmed siinist lahti ühendaksid, kui need välja lülitatakse.
Mõnel juhul võib ACPI vale rakendamine põhjustada süsteemi ebastabiilsust või riistvara mittetöötamist.