AHCI

**Advanced Host Controller Interface** ehk **AHCI** on Inteli loodud standard SATA-liidesega mäluseadme ja arvuti omavaheliseks suhtlemiseks.

AHCI spetsifikatsioon kirjeldab riistvara- ja tarkvaratootjate jaoks protokolle SATA/AHCI seadmete tuvastamiseks, seadistamiseks ja käitamiseks. AHCI on eraldiseisev SATA standardist, mis kirjeldab andmevahetuse füüsilist kihti, kanalikihti ja transpordikihti. AHCI võimaldab kasutada sellised SATA funktsioone nagu käigultvahetus ja Native Command Queuing (NCQ), mis pole kättesaadavad vanemas IDE-režiimis. Uuemate mäluseadmete puhul on SATA/AHCI-d asendamas NVMe.

2020. aasta detsembri seisuga on AHCI spetsifikatsiooni uusim versioon 1.3.1.

## Töörežiimid
Paljud SATA-kontrollerid pakuvad erinevaid võimalusi töötamiseks: legacy Parallel ATA emulation, standardne AHCI režiim ja tootja spetsiifiline RAID-režiim. Intel soovitab valida RAID-režiimi nende emaplaatidel (võimaldavad ka AHCI-d) ja soovitavalt mitte kasutada AHCI/SATA-režiimi maksimaalsel kohanduvusel. *Legacy mode* on tarkvara tagasiühilduvusmehhanism, mis lubab SATA-kontrolleril toimida operatsioonisüsteemides, mis ei ole SATA'ga ühilduvad või kus AHCI-draiver puudub. *Legacy mode* teeb operatsioonisüsteemi SATA-st teadlikuks.

## Operatsioonisüsteemide tugi
AHCI tugi on olemas alates Windows Vistast ja loomulikult uuemates Windowsites. Linux-põhistes operatsioonisüsteemides (alates kernelist 2.6.19), OpenBSD-s (versioonist 4.1), NetBSD-s, FreeBSD-s, OS X-is ja Solaris 10-s (versioonist 8/07 ja uuemates). DragonFlyBSD tugines oma AHCI rakendamisel OpenBSD-le ning lisas mõned laiendatud funktsioonid (näiteks portide kordamise tugi). Operatsioonisüsteemide vanemad versioonid nõuavad riistvarale konkreetseid draivereid, et toetada AHCI-d. Näiteks Windows XP AHCI-d vaikimisi ei toeta.

Uuematel arvutitel (eriti sülearvutitel) on kõvaketta kontroller vaikimisi seadistatud SATA/AHCI töörežiimi. Näiteks Windows XP, mis tuli välja aastal 2001, ei osanud sel hetkel keegi ACHI võimalusi ette näha. Seetõttu ei sisalda Windows XP installiplaat vajalikke SATA/AHCI draivereid. Lisadraiveritega on võimalik vastav tugi muidugi paigaldada.

Operatsioonisüsteemides nagu Windows Vista ja Windows 7 ei võeta pärast alglaadimist automaatselt kasutusele AHCI draiverit. Selline probleem tekib enamasti siis, kui AHCI oli operatsioonisüsteemi paigaldamisel välja lülitatud, sest siis ei laeta AHCI tuge. Automaatselt Windowsid AHCI-d ei konfigureeri. Kui SATA-kontroller on läinud hiljem AHCI-režiimi, tekib alglaadimisel veateade ja süsteem ei käivitu. Sel põhjusel soovitabki tarkvarafirma Intel lülitada sisse AHCI ja RAID-i enne operatsioonisüsteemi paigaldamist arvutisse.

Windows Vistas ja Windows 7 peaks olema see fikseeritud. BIOS-is on enamasti AHCI vaikimisi välja lülitatud. Aga BIOS-i seadeid muutes võtab arvuti AHCI kasutusse pärast taaskäivitust.

Sarnane probleem võib tekkida ka Linuxil põhinevatel süsteemidel, sest AHCI draiver on ehitatud moodulina. Ning ei ole kaasatud kernelisse, seetõttu ei pruugi olla vastav moodul laetud initrd'sse (esialgsesse RAM-kettale). Lahenduseks tuleb ehitada uus initrd sisaldav AHCI moodul.

### Üldised probleemid Windowsis
* Aktiveerides BIOS-ist AHCI, võib järgmisel Windowsi käivitamisel tekkida 0x7B sinine surmaekraan (lühendina **BSOD**) ehk viga. Enamasti tekib see sellest, et vajalikud SATA/AHCI-draiverid pole süsteemi paigaldatud. Selleks, et minna valutult üle AHCI režiimi, peab draiverid paigaldama enne, kui BIOS-is AHCI sisse lülitada.
* Windows Vista, mis on paigaldatud IDE-režiimis, võib pärast BIOS-i seadistamist AHCI-le manada ette BSOD-i. Selleks, et aktiveerida AHCI sellistes süsteemides, peaksid kasutajad lugema juhiseid, mis leiduvad *Microsoft Knowledge Base'i* artiklis *922976*.

### Üldised probleemid Linuxis
* AHCI kontroller ei tööta riistvaral AMD/ATI RS400-200 ning RS480 HBA-l. Tegemist on riistvaraveaga. Selleks et AHCI tugi lisada, peab kasutaja kirjutama kerneli ehk süsteemituuma parameetritesse "pci = nomsi". Sarnane probleem on ka Nvidia nForce 560 kiibistikul.
* AHCI kontroller ei suuda teha 64-bitiseid DMA ülekandeid riistvaral AMD/ATI SB600 HBA.

## Viited