Hlavní navigace

Proč chtít AHCI a NCQ u pevných disků i SSD?

15. 2. 2010

Sdílet

 Autor: Redakce

Serial ATA a její rozšíření

Počítačová sběrnice Serial ATA určená pro komunikaci
hostitelského počítače s úložnými zařízeními začala od roku 2003 pomalu
nahrazovat doposud nejrožšířenější ATA. Tu jste možná znali pod jmény PATA
(Parallel ATA) anebo EIDE. Na rozdíl od ATA je SATA sběrnicí sériovou,
komunikaci po šestnácti bitech nahradila komunikace po dvou vodičích zato na
mnohem vyšší rychlosti (frekvenci).

Serial ATA je v ukotvených standardech nejen rychlejší,
ale je i levnější a kupříkladu napájení SATA je připraveno pro výměnu za běhu.
Právě tato funkce ale potřebuje také podporu ve vrstvě BIOSu/firmwaru, ovladačů
a OS. SATA může totiž pracovat ve dvou režimech: kompatilním s IDE (někdy
označován také jako Legacy nebo emulovaný IDE) a v případě podpory všech
potřebných součástí AHCI.


HBA označuje přímo části čipu/čipy ("silicon"), k nimž jsou připojeny zařízení Serial ATA. Může pracovat v režimu Legacy, v němž zprostředkuje všechny funkce jako Bus Master IDE apod., nebo jako rozhraní AHCI. HBA lze rozšiřovat multiplikátorem portů. Zdroj:
Intel

Je to právě režim AHCI (Advanced Host Control Interface), v němž
máte k dispozici všechny vymoženosti, které si se SATA možná automaticky
spojujete. Zatímco za pokrokem a standardizací Serial ATA stojí několik
organizací v čele se SATA-IO a INCITS, AHCI má na svědomí Intel. Intel
také vybírá poplatky za licencování této technologie.


Funkce získané zapnutím AHCI na jižním můstku Intel ICH10. Zdroj: Intel

Množství anglickými termíny nazvaných technologií si žádá
vysvětlení:

  • Native Command Queuing (NCQ) – umožňuje přeospořádat
    požadavky efektivněji (z pohledu úložného zařízení).
  • Auto Activate for DMA transfers – z DMA Setup
    a DMA Activate se stane jen DMA Setup.
  • Hot Plug Support – umožňuje detekci zařízení bez
    zapnutí a možnost připojovat i odpojovat zařízení bez předchozího oznámení
    operačnímu systému.
  • Asynchronous Signal Recovery – má na starosti
    obnovu po ztrátě či započetí komunikace po hot plug.
  • 3 Gb/s Transfer Rate – umožňuje přenosové
    rychlosti 3 Gb/s (ve skutečnosti max. asi 286 MB/s čistě pro datové přenosty, u
    SATA 1,5 Gb/s to bylo asi 148 MB/s).
  • Host & Link Initiated Power Management –
    schopnost hostitelského řadiče požadovat po zařízení přechod do úsporných
    režimů (power states, Partial a Slumber).
  • Staggered Spin-Up – umožňuje hostiteli postupně
    spínat (roztáčet) pevné disky (hodí se především kvůli vysokému startovnímu
    proudu pevných disků – při více jednotkách je díky postupnému zapínání možné
    snížit nároky na zdroj).
  • Command Completion Coalescing – snižuje režii
    vykonávání příkazů jejich slučováním v současně předaný shluk.
  • External SATA – technologie umožňující připojení
    až dvoumetrovým kabelem (dle specifikace SATA-IO).

Režim AHCI může být tedy pro leckterý počítač přínosem, ale
jak už jsem předeslal výše, nestačí pouhá podpora v koncovém (úložném)
zařízení. Budete také potřeba podporu v čipových sadách. Zapátral jsem
trochu v minulosti, kdy výrobci čipových sad pro PC s AHCI začali a
došel jsem k závěru, že AHCI podporují:

  • Intel ICH6 a novější
  • Nvidia nForce 500 a novější
  • ATI SB600 a novější (SB450 ještě ne)
  • VIA VT8251 a novější
  • ULi M1573 a novější

AHCI podporují také některé řadiče SATA od JMicronu anebo Marvellu.


Serial ATA na hned několika rozdílných řadičích připojených jak k NB, tak k SB (deska GA-X58A-UD5). Zdroj: Gigabyte

Nyní máte už podporu na straně hardwaru (a jeho firmwaru/BIOSu), měli byste se
ale zajímat také o podporu v softwaru. Wikipedia uvádí, že AHCI nativně
podporují operační systémy Linux s novějšími jádry a FreeBSD od verze 8.0.
Narazil jsem na stránky nějakého otevřeného ovladače AHCI pro Solaris: zde by
již většina funkcí AHCI včetně těch nejdůležitějších (NCQ, Hot Swap a Staggered
Spin-Up, nebyl hotov myslím ještě Power Management) k dispozici být měla
také.

Devětadevadesát procent našich čtenářů bude ale asi zajímat především platforma Windows
a zde je to trochu složitější. Zatímco s Windows Vista a 7 máte ovladač s AHCI
už v systému, Windows XP vyžadují instalaci ovladače přímo od výrobce. Na
to je třeba pamatovat už při instalaci, kdy musíte instalátoru podstrčit
disketu s ovladačem. Pozdější instalace ovladače a zapnutí v BIOSu by
měla být teoreticky možná také. U Windows Vista a 7 si na zapnutí AHCI můžete
vzpomenout kdykoli, stačí jen povolit příslušnou službu, restartovat, v BIOSu
přepnout z Legacy/Emulated IDE na AHCI a znovu zavést operační systém.


Jestli budete na systémovém disku zapínat AHCI až po instalaci Windows
7/Vista, najděte v registru klíč
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci a hodnotu
Start změňte z 3 (Zakázáno) na 0 (Povoleno)

Microsoft nutnost manuálního povolení služby msahci vysvětluje na stránkách podpory:

Během instalace systému Windows Vista dojde k zakázání všech
nepoužitých ovladačů úložných zařízení. Toto chování urychluje proces
spuštění operačního systému. Změníte-li spouštěcí jednotku na ovladač,
který byl zakázán, před provedením změny konfigurace hardwaru je třeba
tento nový ovladač povolit.

Předpokládejme například, že je
systém Windows Vista nainstalován do počítače obsahujícího řadič, který
používá ovladač Pciide.sys. Později dojde ke změně režimu SATA na
specifikaci AHCI. Jednotka nyní potřebuje načíst ovladač Msahci.sys.
Před provedením této změny je však nutné ovladač Msahci.sys povolit. Tento problém se týká pouze spouštěcí jednotky. Dojde-li ke
změně na jednotce, která není spouštěcí jednotkou, tento problém
nenastane.

Tím ale veškeré zrádnosti nekončí. Zatímco u čipsetů Intel
nebo Nvidia se nemusíte kromě případu SSD a Windows 7 (za chvíli) nijak zvlášť
starat o to, jestli používáte ovladač od výrobce zařízení nebo generický
ovladač od Microsoftu, testy
AMD/ATI SB700 a SB750 ukazují
, že s výkonem těchto jižních můstků s AHCI
není něco v pořádku. Další
testy odhalují
, že zakopaný pes zřejmě leží v ovladači od AMD a když
použijete ovladač dodávaný Microsoftem přímo s Windows Vista/7, je výkon
těchto čipových sad s AHCI už v souladu s očekáváním.

NCQ a jeho vliv na výkon pevných disků (HDD)

Už v první kapitole jsem letmo NCQ (Native Command Queuing) vysvětlil. Jak už český překlad (zhruba: přirozené řazení požadavků) naznačuje, bude se jednat o sesbírání příkazů V/V a uspořádání této fronty tak, aby to v rámci možnosti bylo pro dané zařízení co nejoptimálnější. Na tomto místě nemohu nepřipomenout notoricky známou ilustraci NCQ.


Práce pevného disku bez NCQ (vlevo) a s NCQ (vpravo). Zdroj: Wikipedia.org

NCQ u SATA je nástupcem neúspěšné technologie TCQ (Tagged Command Queuing) spjaté ještě s ATA a ISA. NCQ i TCQ používají frontu maximálně 32 odložených požadavků, které procesor po dotazu na zařízení (S)ATA může přeuspořádat optimálně; v případě pevných (rotačních) disků v souladu s pozicí čtecí hlavy. Chcete-li se dozvědět do podrobnosti, jak probíhají jednotlivé fáze vyřízení požadavků s NCQ, zkuste přehledný dokument Native Command Queuing (NCQ) PDF white paper (Intel a Seagate) (strana 5 a dále).

Abych ověřil vliv NCQ na výkon, použil jsem obvyklou testovací sestavu pro testy disků:

  • základní deska Gigabyte GA-EP45-DS3R (Intel P45 + ICH10R)
  • procesor Intel Core 2 Duo E7200 @ 3,5 GHz
  • operační systém Windows Vista Ultimate x64 SP2

V BIOSu základní desky jsem potom přepínal AHCI a rozdíly ve výkonu zanesl do grafů a tabulek níže. Potřebujete-li podrobnosti ke scénářům Iometeru, vraťte se třeba do této kapitoly předposlední recenze SSD.

AHCI, NCQ a výkon SSD

Zkoušet vliv NCQ by se někomu vzhledem k předchozímu popisu Native Command Queueing mohlo zdát trochu nesmyslné. Technologie NCQ (je-li podporována) však pracuje u SSD trochu jinak, pořád ale nevybočuje z obecné definice své funkcionality:

  1. vybudování fronty požadavků v jednotce
  2. přenesení dat pro každý příkaz/požadavek
  3. potvrzující status pro hotové požadavky

Konkrétně Intel sděloval při uvedení svých prvních SSD X25-E a X25-M, že používá NCQ pro vyrovnání latencí v celém V/V subsystému. Jinými slovy své rychlé SSD s desetikanálovým řadičem přizpůsobuje pomalému hostitelskému počítači pomocí fronty 32 požadavků V/V.

SSD s a bez NCQ (zapnuté/vypnuté AHCI) jsem podrobil sadě testů podobně jako v minulé kapitole u dvou rychlých pevných disků. V testu jsem zastoupil celkem tři rozšířené řadiče SSD (Intel, Indilinx Barefoot a Samsung RBB). S NCQ jsem narazil na problém některých SSD s oběma PCMarky. Většina SSD s NCQ nedokončila všechny dílčí testy a nemá tak kompletní skóre, případně došlo k rapidnímu poklesu výkonu v některých testech. Hledal jsem příčinu chyby a samozřejmě podobné případy na internetu, nainstaloval poslední subverze obou benchmarků, ale chyba přetrvávala. Výsledky PCMarku s NCQ berte tedy s rezervou a to samé platí pro HDTach na Samsungu (Kingston V+), kde mi pomalý zápis nevysvětlili ani zástupci Kingstonu.

Shrnutí, SATA 6 Gb/s, NVMHCI

AHCI přináší především:

  • NCQ (Native Command Queuing)
  • Hot Plug (připojení/odpojení jednotek za běhu)
  • Vylepšené řízení spotřeby

Zatímco o výhodách Hot Plug nemá cenu spekulovat, NCQ je pořád trochu rozporuplnou technologií. Ukázali jsme si, že tam, kde je zastoupena jen trocha čtení malých bloků, má jednoznačně kladný vliv na výkon pevného disku (rotačního). Daní za tento výrazný nárůst je mírné snížení sekvenčních přenosových rychlostí a obecně rychlosti zápisu. Zde se NCQ neuplatní a má jen nějakou režii. Počítejte také s tím, že dojde také k nárůstu nároků na procesor, například HD Tach ukazoval s vypnutým AHCI většinou kolem 4 % vytížení 3,5GHz Core 2 Duo, po zapnutí AHCI to bylo 10 až 15 %.

SSD je potom třeba rozdělit na modely s podporu a bez podpory NCQ. U starších SSD s řadičem JMicron JMF602 není NCQ podporována a OCZ ve starých dokumentech uvádí možné problémy; naopak Kingston obecně (a tedy sebevědomě, když víme, že V series má sice Toshibu, ale je to jen JMF602 s lepším firmwarem) doporučuje mít AHCI (NCQ) v počítačích se svými SSD zapnuto. U Intel X25-M je přínos NCQ při čtení malých bloků doslova obrovský, a to jsem ještě narazil na limit kolem 13 000 IOPS daný zřejmě nějakou systémovou komponentou. Daní je opět trochu pomalejší zápis, sekvenční čtení/zápis a prodloužení náhodné přístupové doby (zřejmě měřena jako zpoždění při čtení velmi malých (například 512 B) bloků dat).


Intel X25-M je příkladem SSD, jehož výkon při čtení malých bloků dat s NCQ vzroste násobně

Po zapnutí AHCI na základní desce s ICH10R se už detekce zařízení SATA nedočkáte během hlavní obrazovky s POST, vše má následně na starosti AHCI BIOS ICH10R. Jeho inicializace trvala v případě desky GA-EP45-DS3R a třemi zařízeními Serial ATA (dva pevné disky, jeden SSD) přes dvanáct sekund. Něco málo ale zase ušetříte při inicializaci hlavního BIOSu desky a později pak pravděpodobně při startu Windows. To je jedna z úloh, kde má NCQ zpravidla kladný dopad na výkon.

Novinky ohledně NCQ má přinést SATA 6 Gb/s, kvůli dost podivnému výkonu řadiče Marvell 9128 s AHCI a nedostatku SATA 6 Gb/s disků však nebyl přínos dosud otestován. Má se jednat o:

WT100

  • nový příkaz pro NCQ streaming, který umožní izochronní datové přenosy pro náročné aplikace na přenosové rychlosti (audio/video)
  • funkci NCQ Management, která má zlepšit výkon díky zpracování s správě příkazů NCQ v hostiteli

Možná už jste zaslechli také o NVMHCI (Non-Volatile Memory Host Controller Interface). Jak opět překlad anglického vysvětlení zkratky naznačuje, jedná se o specifikaci z roku 2008 šitou na míru právě zařízením jako jsou SSD s NAND flash, která hodně staví na AHCI. Za NVMHCI stojí Intel, Dell a Microsoft a cílem je mimo jiné i standardizace NAND flash (pinová kompatibilita), příkazy pro čtení, zápis i mazání flash a obdoba SPD (detekce). Nejsem si zcela jist, ale ani Windows 7 NVMHCI 1.0 pravděpodobně nepodporují.

A nějaký jednoduchý verdikt na závěr? Máte-li novější SSD a Windows Vista/7 či Linux (z posledních let), je většinou škoda AHCI nezapnout. Pokud si nejste jisti, zkuste najít u výrobce SSD uváděnou podporu NCQ. Jestli systém na 7/Vista na SSD jen migrujete nezapomeňte před zapnutím AHCI v BIOSu povolit službu msahci. To samé platí pro novější pevné disky, zde až na případné negativní efekty v podobě trochu vyššího vytížení CPU a o pár sekund pomalejší inicializace BIOS, není co řešit. U Windows XP budete potřebovat pro AHCI speciální ovladač.

Literatura