ACPI-määrittely (lyhenne sanoista Advanced Configuration and Power Interface) on avoin teollisuusstandardi, jota ovat olleet kehittämässä HP, Intel, Microsoft, Phoenix ja Toshiba. Se määrittelee yleisen rajapinnan laitteiston tunnistusta, emolevyä, laitteiston määritystä ja virranhallintaa varten. ACPI on käytössä kaikissa PC-yhteensopivissa tietokoneissa 2000-luvun alkupuolelta lähtien, mutta ei rajoitu niihin vaan tukee myös muita alustoja.

Standardin perusosa on virranhallinta, ja sitä on paranneltu on edeltäjäänsä (APM) nähden pääasiassa kahdella tavalla. Ensinnäkin se antaa käyttöjärjestelmän hallita virrankäyttöä, toisin kuin APM. Viimeksi mainittu yleensä antaa virranhallintaoikeuden enimmäkseen BIOSille, jolloin käyttöjärjestelmällä on vain hyvin vähän oikeuksia. ACPI:ssa valta on käyttöjärjestelmällä, ja BIOS on yleensä vastuussa vain laitteiston välisen kommunikoinnin yksityiskohdista.

Lisäksi ACPI tuo ennen vain kannettavissa tietokoneissa olleen virranhallinnan tavallisiin pöytä- ja palvelinkoneisiin. Standardi tukee näppäimiä, joilla koneen voi laittaa valmiustilaan tai sammuttaa. Jotkin valmistajat — kuten Asus ja Compaq — ovat laajentaneet tätä toimintoa muille niin sanotuille multimedianäppäimille. ACPI:a ei voi käyttää vanhalla laitteistolla. On tärkeää, että kaikki koneen oleelliset laitteet tukevat sitä.

Ensimmäinen ACPI-speksi julkaistiin vuonna 1999. Virranhallinnan lisäksi siihen yhdistettiin myöhemmin Plug and Play BIOSin rajapinta ja PC:n moniprosessorikäytön Multiprocessor Specification (MPS) -taulut.[1] Määritelmien ylläpito on sittemmin siirretty UEFI Forumin vastuulle.[2]

Tekniikka muokkaa

ACPI paljastaa laitteiston toiminnallisuuden käyttöjärjestelmälle ns. ACPI-taulujen avulla, jotka BIOS kopioi muistiin järjestelmän käynnistyessä. Toiminnallisuus on toteutettu ACPI Machine Languagen (AML) avulla. ACPI:n taulut sisältävät tavukoodia, jonka käyttöjärjestelmä ajaa virtuaalikoneen avulla. BIOSia kehitettäessä toiminnallisuus kirjoitetaan ACPI Source Languagella, joka käännetään erityisen kääntäjän avulla AML:ksi.

ACPI-taulut tunnistetaan nelikirjaimilla nimillä. RSDP-osoitin (Root System Description Pointer) sisältää esimmäisen RSDT-taulun (Root System Description Table) osoitteen. Tämä taulu sisältää tiedot järjestelmän peruslaitteistosta, kuten keskeytysosoitteet, kellot ja DMA-ohjaimet. AML-koodi voi vain palauttaa informaatiota tai suorittaa laskentaa tai tehdä I/O-operaatioita.[3]

Virtuaalikoneelle on Intelin kirjoittama avoimen lähdekoodin toteutus, joka on tarkoitus liittää käyttöjärjestelmän ytimessä ajettavaksi.[4]

Virrankäyttötilat muokkaa

ACPI määrittelee eritasoisia virrankäyttötiloja (C-tilat) suorittimille. Aktiivinen tila, jolloin suoritin suorittaa käskyjä, on nolla-tila. Muut tilat on kasvavalla numerolla, jolloin suoritin nukkuu ja kuluttaa vähemmän virtaa sekä tuottaa vähemmän lämpöä. Nukkuvassa tilassa suoritin ei suorita käskyjä. Tilojen välillä siirtymiseen liittyy viive, sekä virrankäytön muuttuminen. Suorittimen suorituskykyä voi hidastaa P-tilojen avulla, jolloin käytössä on "kuristimena" toimiva prosessi.[5]

Tietoturva muokkaa

ACPI:a on kritisoitu mahdollisista tietoturvariskeistä.[6][7]

Ensimmäiset ACPI-toteutukset ovat erittäin bugisia. Windows XP, Windows 2000 ja Windows Server 2003 vaativat että ACPI BIOSin päivämäärä on 1.1.1999 tai myöhempi tai sitä ei oteta käyttöön ja pysytään APM-virranhallinnassa . Lisäksi Windowsissa on musta lista tämänkin jälkeisistä bugisiksi tunnetuista BIOSeista. Windows Vista tai uudempi eivät käynnisty jos ACPI BIOSin päivämäärä on 1.1.1999 tai vanhempi.[8] Linux-kernel ei suostu käyttämään APCI:tä, jos sen päivämäärä on ennen 1.1.2001.[9]

Linus Torvalds kuvasi ACPI:ta vuonna 2003: "Modernit PC:t on hirveitä. ACPI on täydellinen suunnittelukatastrofi kaikin tavoin. Jos joku Intelin väestä kuuntelee, ampukaa itsenne."[10]

Microsoft on määritellyt ACPI:hin ominaisuuden, jolla tietokone voidaan pistää Windows 8:sta alkaen käynnistämään käyttöjärjestelmän ulkopuolinen Microsoft Windows-ohjelma WPBT ACPI -taulun (Windows Platform Binary Table) avulla.[11] Esimerkiksi Lenovo ja Gigabyte ovat käyttäneet tätä ominaisuutta lataamaan Internetistä ohjelmia koneelle.[12][13]

Lähteet muokkaa

Viitteet muokkaa

  1. https://web.archive.org/web/20110622223107/http://www.acpi.info/
  2. https://uefi.org/node/4323 (Arkistoitu – Internet Archive)
  3. https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/acpi-system-description-tables
  4. Welcome to The ACPI Component Architecture Project | The ACPI Component Architecture Project www.acpica.org. Viitattu 4.6.2023.
  5. 8.1. Processor Power States uefi.org. Viitattu 22.2.2024. (englanniksi)
  6. Researchers say rootkits are headed for BIOS theregister.com. 27.1.2006. Viitattu 28.9.2022. (englanniksi)
  7. Mark Shuttleworth: ACPI, firmware and your security markshuttleworth.com. 17.3.2014. Arkistoitu 28.9.2022. Viitattu 28.9.2022. (englanniksi)
  8. tedhudek: Advanced Configuration and Power Interface (ACPI) BIOS - Windows drivers learn.microsoft.com. 15.12.2021. Viitattu 4.6.2023. (englanniksi)
  9. https://www.kernel.org/doc/ols/2004/ols2004v1-pages-121-132.pdf
  10. Linus & the Lunatics, Part II | Linux Journal www.linuxjournal.com. Viitattu 4.6.2023.
  11. https://download.microsoft.com/download/8/a/2/8a2fb72d-9b96-4e2d-a559-4a27cf905a80/windows-platform-binary-table.docx
  12. Chris Hoffman: Zombie Crapware: How the Windows Platform Binary Table Works How-To Geek. 19.8.2015. Viitattu 4.6.2023. (englanniksi)
  13. Chris Garland: Supply Chain Risk from Gigabyte App Center Backdoor Eclypsium | Supply Chain Security for the Modern Enterprise. 31.5.2023. Viitattu 4.6.2023. (englanniksi)

Aiheesta muualla muokkaa

 
Commons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta ACPI.