SerialATA RAID5 řadiče s Raptory a TCQ
Command Queuing je z dnešního hlediska už poměrně stará technika, která je přítomná v SCSI světě od začátku devadesátých let, ale oficiálně byla přidána do standardu SCSI-2 v roce 1994. Jenže ani u ATA rozhraní to není žádná extra novinka, protože Tagged Command Queuing (TCQ) přináší už standard ATA/ATAPI-4, jehož finální draft, který byl dodatečně pouze formálně schválen, byl dokončen už v srpnu roku 1998. Poměrně novější věcí je potom NCQ definované v dokumentu „Serial ATA II: Extensions to Serial ATA 1.0a“. Pokud se nadále budu na TCQ a NCQ odkazovat, mám již pouze na mysli ty definované u ATA a SerialATA, nikoliv u SCSI, i když většina principů platí i pro ně.
Zatím jsme si sice řekli, kde a od kdy jsou jednotlivé CQ techniky definovány, ale ještě jsme si nepověděli, co to přesně je. Je to technika, která na té nejnižší hardwarové úrovni přeuspořádává požadavky na vyřízení diskem tak, aby je disk dokázal rychleji vyřizovat. U některých dřívějších článků, kde jsme se o TCQ zmiňovali, se objevily názory, že nějaké TCQ, nebo NCQ jsou naprosto zbytečné, protože přece optimalizaci požadavků už dělá operační systém. Je sice pravda, že operační systémy optimalizují požadavky podle svého nejlepšího vědomí i svědomí, ale to je na naprosto jiné úrovni než TCQ a NCQ. Abychom pochopili princip fungování těchto CQ technik, předvedu vám následující obrázek, který pochází od nVidie (uvolnila ho v souvislosti s představování nForce4, která NCQ podporuje), ale prakticky identický (jen ne tak hezký a názorný) mám i od Western Digitalu pro popis TCQ:
Levý obrázek ukazuje čtení (nebo zápis) bez CQ a vpravo s ním. Požadavky na disk od řadiče přicházely v pořadí od nejnižšího čísla po nejvyšší a čára na obou grafech ukazuje pohyb hlavičky po disku. Na levém obrázku je vidět, že pro vyřízení těchto čtyř požadavků se musel disk otočit celkem dvakrát, kdežto napravo pro tyto konkrétní čtyři požadavky stačila pouze jedna otočka a to jen díky tomu, že logika CQ prohodila požadavky 3 a 2, takže nejdříve vyřídila požadavek číslo 3 a až poté požadavek číslo 2.
Z hlediska standardů bylo zavedení ať už TCQ do ATA/ATAPI-4, nebo NCQ do SerialATA II velmi jednoduché, prostě se při přenosu dat mezi řadičem a diskem v hlavičce uvádí ještě jedno číslo, které říká číslo požadavku. Řadič tedy při vyslání požadavku tomuto požadavku dá číslo, které je k dispozici (disk nesmí dostat dva požadavky se stejným číslem) a disk u odezvy na každý požadavek, ať už hlásí chybu, dokončení, nebo posílá i data, vždy přidá toto číslo požadavku, aby řadič věděl, který jeho požadavek byl právě vykonán. Tomuto číslu se říká „Tag“ a od toho je odvozen název „Tagged Command Queuing“.
Přidat tento popis do standardu je poměrně jednoduchá věc, ale vlastní implementace je záležitost dosti jiná. Z hlediska řadiče to až zas tak velký problém není, prostě musí pouze navíc číslovat požadavky a následně při vracení požadavků je zas dávat dohromady. To u disků je situace mnohem náročnější a to díky tomu, že disk musí velice rychle stíhat vyhodnocovat požadavky a případně je přeskupit tak, aby to bylo co nejvýhodnější. A to samozřejmě musí dělat dostatečně výkonný chip, který něco stojí. Proto je také pochopitelné, že ačkoliv TCQ u ATA zařízení bylo definováno už v roce 1998, až v roce 2002 se objevil první ATA disk, který TCQ využíval (šlo o IBM Deskstar 180GXP).
Možná si nyní říkáte, proč vlastně bylo zavedeno NCQ u SerialATA II, když tu máme TCQ definované už ve standardu ATA/ATAPI-4? Na mysl se možná dere myšlenka, že NCQ nabízí oproti TCQ něco navíc, ať už výkon, nebo nějaké ty možnosti. Musím vás zklamat, není tomu tak. Jak TCQ, tak NCQ nabízí 32 maximálně možných požadavků, které najednou řadič může disku odeslat - vychází to z toho, že pro Tag je v obou případech vyhrazeno 5 bitů (takže je celkem 25 možností). Sice je definice NCQ u SerialATA poněkud složitější, ale to vychází z faktu, že samotný SerialATA protokol je oproti ATA protokolu složitější a více propracovaný.
Zaslechl jsem i názory, že zatímco je TCQ celé řešeno na úrovni hardware, tak v případě NCQ některé věci zajišťují ovladače (ale slyšel jsem i opačný názor - to vše od lidí z oboru). Na základě prostudování specifikací k tomu musím říci, že ani v jednom případě se neřeší, jak se má řadič chovat a kde co musí být implementováno. Zda-li bude kompletně vše implementováno již v nějakém chipu, nebo se o to bude starat firmware, případně ovladač, to závisí jen a pouze na výrobci řadiče, jak se k celému problému postaví. Já osobně se domnívám, že nejčastější případ bude takový, že se o to bude starat firmware řadiče s nějakou nepatrnou dopomocí ovladače, ale samozřejmě vše závisí především na cenové kategorii, kde se pohybujeme.
Ale abych se vrátil k tomu, proč bylo zavedeno NCQ, když u je dávno TCQ. Důvod tedy není v rychlosti, ale v samotném standardu SerialATA. Takový SerialATA řadič může fungovat ve zpětně kompatibilním režimu, který plně podporuje všechny možnosti ATA/ATAPI standardů, tedy může podporovat i TCQ (ATA standardy nevyžadují, aby řadič TCQ podporoval, podporovat ho může). Jenže SerialATA definuje i nativní způsob komunikace se SerialATA zařízením a právě přidání CQ techniky do tohoto nativního způsobu komunikace vede k tomu, že se NCQ liší od TCQ. Od toho je také odvozen i název této CQ technologie: „Native Command Queuing“.
Když tedy již víte, co to TCQ (a NCQ) je a jak funguje, pak vás asi napadne, že rozhodně chcete disk, který CQ podporuje, protože vám to přinese zvýšení výkonu. Dnes víme zatím o těchto SerialATA discích podporujících TCQ, nebo NCQ:
- TCQ
-
NCQ
- Seagate Barracuda 7200.7 (jen některé modely, viz uvedený odkaz)
- Seagate Barracuda 7200.8
- Maxtor DiamondMax 10
- Maxtor MaXLine III
- Seagate NL35
- Hitachi SerialATA II disky (měly se objevit ještě v roce 2004, ale patrně je Hitachi představí z kraje roku 2005)
- Samsung SerialATA II disky (zatím nevíme datum představení, ale vyvíjí je společně s firmou Marvell)
- Western Digital Raptor s podporou NCQ (zatím zcela neoficiálně jsme se dozvěděli, že by se měl objevit v roce 2005)
Jak je vidět, NCQ oproti TCQ vítězí. A už z popisu na předchozí stránce je snad jasné, že TCQ nemá budoucnost. Western Digital Raptor 74 GB tedy bude jediným SerialATA diskem, který TCQ definované ve standardu ATA/ATAPI-4 podporoval. Možná vás bude zajímat, proč se vlastně Western Digital pustil do implementace TCQ, když mu muselo být jasné, že určitě nemá nějakou zářnou budoucnost a proč se nepustil rovnou do NCQ? Asi hlavním důvodem byl neměnný fakt, že ač je Raptor SerialATA diskem, tak je tvořen ATA chipem a k tomu můstkem z ATA na SerialATA (můstek je vidět na obrázku napravo), takže nejde o nativní SerialATA disk, a tudíž ani implementace NCQ prakticky není možná.
A proč se tedy vůbec u WD namáhali s implementací TCQ, proč prostě nevydali i 74GB Raptor bez TCQ, podobně jako u 36GB? Zde je třeba hledat důvod v pozici na trhu, kterou s Raptorem chtěl WD obsadit. Je zcela nepochybné, že 10 000otáčkový disk, jakým Raptor je, nabízí znatelně vyšší výkon nežli klasické 7 200otáčkové SerialATA disky od ostatních výrobců. Aby se však mohly měřit se SCSI disky, které se otáčí 10 000krát za minutu, pak musejí implementovat nějakou tu CQ techniku. Tyto disky jsou totiž určeny především pro servery a tam se CQ projevuje nejvíce, což ostatně uvidíte i z našich testů. Takže pokud WD chtěl být se svými Raptory konkurenceschopný v serverové oblasti i vůči SCSI diskům, pak prostě musel zabudovat podporu TCQ.