Registrový model HDD Charakteristika Pevný disk IDE v sestavě personálního počítače sestává z disku a jeho řadiče tyto dvě komponenty tvoří jeden mechanický celek. Procesor komunikuje s řadičem přes registry řadiče, registry jsou dostupné programově (např. instrukcí jazyka assembler). Každý registr má jedinečnou adresu. Do registrů je možné zapisovat a jejich obsah číst. Je to možné díky tomu, že do kabelu IDE je ze systémové sběrnice ISA přenesena jistá část signálů - taková, která právě umožňuje takové přenosy realizovat datové signály, adresové signály, řízení. Přes datovou sběrnici se přenáší různá informace např. stav disku adresací registru, v němž je stav uložen. 1
Odlišnost od jiných zařízení v nich jsou programově dostupné registry součástí řadičů umístěných v konektoru systémové sběrnice. Vyrovnávací paměť Čtení dat: data jsou přenášena z vyrovnávací paměti jednotky do paměti hostitelského zařízení. Zápis dat: data jsou přenášena z paměti hostitelského zařízení do vyrovnávací paměti zařízení. Směr je určen předchozími příkazy, které jednotka obdržela. Typy informace uložená v registrech V registrech jsou uloženy tyto informace: řídicí informace (kód příkazu, parametry příkazu) data stavová informace (informace o stavu disku) 2
Výběr registru obstarávají signály CS0, CS1 - rozlišení disku a DA(2:0) rozlišení jednoho z 8 registrů. - Signály CS0/CS1 jsou odvozeny z bitů adresové sběrnice A3 A9 (obdoba odvození adresy řadiče). Zápis/čtení dat do/z těchto registrů jsou realizovány pomocí signálů DIOW, DIOR. Adresy registrů: - registry primární brány obsazují adresy 1F0h-1F7h, - registry sekundární brány obsazují adresy 170h-177h. Typy a význam jednotlivých registrů Registry, do nichž se ukládá stavová informace Status registr (Stavový registr) - Registr obsahuje informace o aktuálním stavu jednotky. 3
- Obsah je obnovován po provedení jakéhokoli příkazu. - Pokud byla generována žádost o přerušení po skončení periferní operace, předpokládá se, že je stavový registr naplněn informací o průběhu právě skončené operace => přečtením stavového registru se nuluje aktivní žádost o přerušení. Adresování registru: CS(1:0)=2h, DA(2:0)=7h Softwarově ze strany procesoru: port 1X7h (177/1F7). Směr toku dat: registr je určen pouze pro čtení. Obsah registru musí být ignorován v případě, že BSY je nastaven na 1, což je stav, kdy ještě probíhá periferní operace. Význam jednotlivých bitů: BSY (busy) bit 7: - BSY nastaven => HDD provádí příkaz a využívá informaci uloženou ve vnitřních registrech. 4
- Provádění (realizace) příkazu - tzn. čas od zápisu do příkazového registru do doby ukončení příkazu => jednotka má nastaven signál BSY na 1. - Čtení stavového registru v okamžiku provádění příkazu => přečtený obsah je neplatný s výjimkou bitu BSY a DRQ ve stavovém a alternativním stavovém registru. - Bit BSY je nulový => jednotka může měnit obsah IDX, DRDY, DF, DSC a CORR bitů ve stavovém registru a obsah datového registru. Význam bitů stavového registru: - DRDY (device ready) bit 6 - indikuje připravenost jednotky přijímat příkazové kódy. Tento bit bude nastaven při zapnutí jednotky. - DF (device fault) bit 5 - indikuje, že byla zjištěna porucha jednotky. - DSC (Device seek complete) bit 4 - indikuje ukončení vystavení na požadovanou stopu. 5
- DRQ (Data request) bit 3 - indikuje připravenost jednotky pro přenos slova nebo slabiky dat (odlišovat od sběrnicového signálu se stejným označením - žádost o přenos DMA). - CORR (Corrected data) bit 2 - indikuje opravitelnou chybu v datech. - IDX (Index) bit 1 - je využit výrobcem jednotky. - ERR (Error) bit 0 - indikuje, že při provádění předchozího příkazu nastala chyba. Bity v registru chyby (Error register) poskytují doplňkovou informaci o chybě. Error register (chybový registr) - Registr obsahuje informaci o chybovém stavu po provedení příkazu. - Po provedení příkazu EXECUTE DEVICE DIAGNOSTICS obsahuje diagnostický kód. 6
- Na základě příkazu EXECUTE DEVICE DIAGNOSTICS se provede autonomní test disku, po skončení testu diagnostický kód pak indikuje stav disku (hardware). Adresace registru: CS(1:0)=2h, DA(2:0)=1h Softwarově ze strany procesoru: port 1X1h (171/1F1) Směr toku dat: registr je určen pouze pro čtení. Přístupová omezení: obsah registru je platný: při BSY a DRQ nulových a ERR nastaveném na jedničku, po provedení příkazu EXECUTE DEVICE DIAGNOSTICS. Význam jednotlivých bitů registru: bit 7 - je rezervován. UNC (Uncorrectable data error) - bit 6 - indikuje neopravitelnou datovou chybu. MC (media changed) - bit 5 - indikuje výměnu média u zařízení s vyměnitelným médiem. 7
IDNF (ID not found) - bit 4 - indikuje, že ID požadovaného sektoru nebylo nalezeno. MCR (Media change request) - bit 3 - indikuje požadavek výměny média u zařízení s vyměnitelným médiem. ABRT (Aborted command) - bit 2 - indikuje, že požadovaný příkaz byl zrušen, protože kód příkazu nebo parametry příkazu byly chybné, nebo nastala jiná chyba. Pokud měl příkaz pracovat s daty, data jsou neplatná. TK0NF (Track 0 not found) - bit 1- indikuje, že stopa 0 nebyla nalezena v průběhu příkazu RECALIBRATE. Pozn.: Příkaz RECALIBRATE (návrat na stopu 000) je využíván v situacích, kdy dojde k chybě vystavení. Návrat na stopu 000 zajistí výchozí stav, z něhož je možné se znovu pokusit o vystavení na požadovanou stopu. AMNF (Address mark not found) - bit 0 - indukuje nenalezení adresové značky sektoru, avšak nalezeno správné ID sektoru. 8
Logika využití stavového registru a chybového registru: - stavový registr obsahuje pouze indikaci o tom, že vznikla chyba, zatímco - chybový registr poskytuje bližší specifikaci chyby/poruchy. Registry, do nichž se ukládá příkaz a jeho parametry Command Register (registr příkazu) - Registr, do něhož se ukládá kód příkazu. - Zpracovávání příkazu začíná v okamžiku, kdy je do registru zapsán kód požadovaného příkazu. - Parametry příkazu - jsou uloženy v dalších registrech. - Zápisem do registru se ruší případná aktivní žádost o přerušení. Adresování registru: CS(1:0)=2h, DA(2:0)=7h 9
Softwarově ze strany procesoru: port 1X7h Směr toku dat: Registr je určen pouze pro zápis. Přístupová omezení: Do registru může být zapisováno pouze v případě, že BSY a DRQ jsou nulové a DMARQ není nastaven. Význam jednotlivých bitů registru: Kód příkazu Cylinder High Register (horní část čísla cylindru) - Informace zapsaná do registru se stává parametrem příkazu zapsaného do příkazového registru. - Bit LBA v Device/Head registru je nulový => registr obsahuje vyšší část čísla cylindru, který má být použit jako výchozí pro přístup k médiu. 10
- Bit LBA je nastaven na jedna => registr obsahuje bity 23-16 lineárního čísla sektoru. Adresování registru: CS(1:0)=2h, DA(2:0)=5h Softwarově ze strany procesoru: port 1X5h Směr toku dat: Registr je určen pro čtení i zápis. Význam jednotlivých bitů registru: Mód CHS Cylindr(15:8) Mód LBA LBA(23:16) Cylinder Low Register (dolní část čísla cylindru) - Bit LBA je nulový => registr obsahuje dolní část čísla cylindru. 11
- Pokud je bit LBA nastaven na 1, registr obsahuje bit 15-8 lineárního čísla sektoru. Adresování registru: CS(1:0)=2h, DA(2:0)=4h Softwarově ze strany procesoru: port 1X4h (174h/1F4h) Směr toku dat: Registr je určen pro čtení i zápis. Přístupová omezení: Stejná jako v případě Cylinder High Register. Význam jednotlivých bitů registru: Mód CHS Cylindr (7:0) Mód LBA LBA (15:8) Device Control register (registr řízení zařízení) - Umožňuje realizovat jisté akce, jako např. nulování logiky HDD. 12
- Pomocí tohoto registru je možno ovládat přerušení od jednotky (povolení/zákaz). - Ihned po zápisu do registru je vykonána příslušná akce. - Umožňuje provedení softwarového resetu jednotky. Adresování registru: CS(1:0)=1h, DA(2:0)=6h Softwarově ze strany procesoru: 3X6h (oblast řadiče disket) Směr toku dat: Register je určen pouze pro zápis. Přístupová omezení: Do registru může být zapisováno pouze v případě neaktivního DMARQ. Význam jednotlivých bitů registru: R r r r r SRST nien 0 bity 7 až 3 jsou rezervované SRST je software reset bit 13
nien bit ovládá přerušení. Pokud je tento bit nulový a jednotka je vybraná, INTRQ bude povoleno. Device/Head Register (registr jednotky/hlavy) Registrem se vybírá hlava v módu CHS. V módu LBA se zde nastavují bity (27:24) lineární adresy sektoru. Adresování registru: CS(1:0)=2h, DA(2:0)=6h Softwarově ze strany procesoru: port 1X6h Směr toku dat: Registr je určen pro čtení i zápis. Přístupová omezení: Operace s registrem je platná, pokud BSY a DRQ jsou nulové a DMARQ není nastaven. Význam jednotlivých bitů: Mód CHS 1 LBA 1 DEV HS3 HS2 HS1 HS0 14
Mód LBA 1 LBA 1 DEV LBA(27:24) Bitem 6 se vybírá druh adresace jednotky: Bit nastaven na 0 => je použit mód CHS, bit nastaven na 1 => probíhá adresace v módu LBA. Bitem 4 se vybírá aktivní jednotka: Pokud je bit nulový, vybraná jednotka je Device 0, jinak je vybraná jednotka Device 1. Bity 3-0 udávají hlavu resp. část lineární adresy v LBA módu. Feature Register (registr parametrů) Hodnota zapsaná do registru může být použita jako parametr příkazu. Význam jednotlivých bitů je odvozen od kódu prováděného příkazu. Adresování registru: CS(1:0)=2h, DA(2:0)=1h 15
Softwarově ze strany procesoru: port 1X1h Směr toku dat: Registr je určen pouze pro zápis. Přístupová omezení: Zápis je platný pouze v případě nulovosti BSY a DRQ. Význam jednotlivých bitů: Záleží na příkazu Sector Count register (počet sektorů) Informace v registru je parametrem příkazů zapisovaných do příkazového registru. Registr obsahuje číslo, které udává, kolik sektorů se má přečíst (zapsat). V případě, že přenosový příkaz skončí chybou, registr obsahuje počet sektorů, které je nutné přenést, aby byl příkaz úspěšně dokončen. Význam registru může být u některých příkazů pozměněn. 16
Adresování registru: CS(1:0)=2h, DA(2:0)=2h Softwarově ze strany procesoru: port 1X2h Směr toku dat: Registr je určen pro čtení i zápis. Přístupová omezení: S registrem je možné pracovat pouze v případě nulovosti BSY a DRQ, DMARQ nesmí být nastaven. V ostatních případech jsou data zapisovaná či čtená neplatná. Význam jednotlivých bitů: Počet sektorů Sector Number register (registr čísla sektoru) Hodnota registru je parametrem příkazu zapisovaného do příkazového registru. V případě bitu LBA nulového, registr obsahuje číslo sektoru, pokud je LBA 17
nastaven na 1, obsahuje bity 7-0 lineárního čísla sektoru. Adresování registru: CS(1:0)=2h, DA(2:0)=3h Softwarově ze strany procesoru: port 1X3h Směr toku dat: Registr je určen pro čtení i zápis. Přístupová omezení: Neplatnost hodnot, když nejsou bity BSY a DRQ nulové a DMARQ je nastaven. Význam jednotlivých bitů: Mód CHS Sektor(7:0) Mód LBA LBA(7:0) 18
Registr pro ukládání dat Data Register (registr dat) PIO výstupní datový přenos je realizován sérií čtení tohoto registru. PIO vstupní datový přenos je realizován zápisy do datového registru. Datový registr je šestnáctibitový. Adresování registru: CS(1:0)=2h, DA(2:0)=0h Softwarově ze strany procesoru: port 1X0h Směr toku dat: Registr určen pro čtení i zápis. Přístupová omezení: Do registru může být zapisováno a čteno z něj, pokud je nastaven DRQ a není nastaven DMARQ (DMARQ je sběrnicový signál "žádost o přenos DMA", který bývá ale označován také jako DRQ - zde označen jinak kvůli nejednoznačnosti). 19
Význam jednotlivých bitů registru: 15 14 13 12 11 10 9 8 Data(15:8) Data(7:0) Pozn. Přes tento registr je realizován také DMA přenos. Závěr: Byl popsán registrový model HDD. Obdobný model je možné prezentovat pro jiná zařízení, přičemž mezi těmito modely by bylo možné najít jistou analogii. Některé registry najdeme ve všech ostatních zařízeních (registr příkazu, datový registr, stavový a chybový registr), jiné jsou typické pouze pro diskovou paměť. 20