Rozdział 07 Obsługa dysku twardego


Rozdział 7.
Obsługa dysku twardego



Można śmiało powiedzieć, że udział dysku twardego w pracy całego systemu jest nie mniejszy od wkładu, jaki wnosi sam procesor. Pakiety oprogramowania o monstrualnych rozmiarach tylko dlatego mogą znaleźć nabywców, że od czasów wprowadzenia na rynek pierwszego dysku twardego o pojemności 10 MB (w cenie 4 000 dolarów) wiele się w tej dziedzinie zmieniło.
Przez wiele lat dominował standard ST412/506. którego nazwa wywodziła się od pierwszych modeli tego systemu. W miarę upływu czasu i wzrostu wymagań stawianych dyskom twardym, zwłaszcza w dziedzinie zastosowań profesjonalnych, opracowane zostały nowocześniejsze systemy (IDE, ESDI, SCSI). Jednemu z nich - standardowi IDE, nazywanemu również AT-BUS - udało się zdominować również rynek komputerów powszechnego użytku. Wszystko wskazuje na to, że został on wyparty przez standard Enhanced IDE (EIDE), który stanowi jego rozwinięcie.
Budowa kontrolera
W obudowie klasycznego dysku twardego zintegrowane są jedynie układy bardzo ściśle współpracujące z elementami wykonawczymi sterowania części ruchomych napędu dysku, jak silniki krokowe i liniowe, oraz systemy bezpośrednio związane z głowicami odczy-tująco-zapisującymi. Skomplikowane zadanie sterowania tymi elementami i obróbkę danych przejmuje kontroler dysku. Jest to układ podobny do kontrolera napędu dysków elastycznych.
Z logicznego punktu widzenia kontroler dysku twardego wymienia dane z magistralą systemową komputera PC tak samo, jak każde inne urządzenie. Procesor wysyła do odpowiednich rejestrów sterujących dane i rozkazy, a pozostający w kontakcie z dyskiem kontroler odpowiada danymi i informacjami dodatkowymi. Sam kontroler składa się z mikroprocesora otoczonego niezbędnymi układami dodatkowymi, jak pamięci RAM i ROM, dekodery adresów i specjalistyczne układy obróbki danych.
Każdy kontroler zawiera dodatkowo pamięć mogącą pomieścić dane jednego pełnego sektora wraz z kodami ECC (ang. Error Correction Code), nazywaną buforem sektora. Systemy kontroli i korekcji ECC są również rozwiązaniami sprzętowymi.
Spróbujmy prześledzić działanie kontrolera w trakcie realizacji operacji odczytu sektora dysku.
Procesor przekazuje kontrolerowi grupę bajtów zawierającą rozkaz odczytu wraz z niezbędnymi parametrami lokalizującymi żądany sektor.
Po rozpoznaniu rozkazu mikroprocesor kontrolera przechodzi do wykonywania odpowiadającego mu fragmentu programu zapisanego w jego pamięci stałej.
Ze strumienia danych napływających z głowic wyławiane są metryki adresowe (ID). Pozwala to na określenie aktualnego położenia głowic. Na tej podstawie obliczana jest liczba impulsów sterujących, które należy przesłać do silnika krokowego ramienia głowic, by znalazły się one nad żądaną ścieżką.
Jeżeli założymy, że poprzednia operacja została przeprowadzona bezbłędnie (co nie zawsze musi mieć miejsce), rozpoczyna się oczekiwanie na pojawienie się w strumieniu danych ścieżki metryki adresowej poszukiwanego sektora.
W zależności od stosowanego systemu zapisu magnetycznego (MFM, RLL), dane podlegają różnym przekształceniom do form pośrednich (np. NRZ). W końcowej fazie odseparowany blok danych kontrolowany jest przez system ECC. Kod ECC spełnia podobną rolę do opisanych w poprzednim rozdziale sum kontrolnych CRC. Główna różnica polega na stopniu komplikacji generatora (wielomianu) kodu. Dyski twarde systemu ST412 stosują najczęściej generator 32 stopnia postaci 100010100000010100000010001000110. Wielomian taki produkuje 4-bajtowe kody ECC mające zdolność nie tylko do wykrywania, ale również - co dużo bardziej interesujące - korekcji błędów. Korygowane mogą być nie tylko pojedyncze błędy, lecz również błędne ciągi o długości nie przekraczającej 11 bitów.
Odczytane, sprawdzone i ewentualnie poprawione dane lokowane są w buforze sektora i mogą być przekazane do pamięci operacyjnej. Kontroler komputera PC/XT posługuje się kanałem 3 DMA, natomiast modele AT korzystają z przerwań. Po odczytaniu sektora kontroler modelu AT wyzwala przerwanie na linii IRQ14. Procedura obsługi tego przerwania rozpoczyna, wykorzystując rozkaz in, żmudną operację przenoszenia krok po kroku wszystkich 512 (a czasem 516, tj. dane wraz z ECC) bajtów z portu danych kontrolera do pamięci operacyjnej.
Systemy kodowania MFM i RLL
Z poprzedniego rozdziału, poświęconego dyskom elastycznym, pamiętamy, że sama zmiana systemu kodowania danych z FM na MFM przyniosła znaczne zwiększenie upakowania danych przy tej samej gęstości zapisu magnetycznego. Nic więc dziwnego, że poszukiwane były nadal metody pozwalające na jeszcze większy wzrost pojemności
tego samego nośnika wyłącznie kosztem komplikacji towarzyszącej mu elektroniki. Jednym z takich nowych systemów, któremu udało się ugruntować swoją pozycję, jest standard RLL (ang. Run Length Limited).
Powróćmy na chwilę do metody MFM. Punktem wyjścia do naszych rozważań będzie przykładowy bajt danych o wartości 00101110, reprezentowany przez przebieg (1) na rysunku 7.1.











Na ciąg wyjściowych impulsów w systemie MFM (3) składała się, jak pamiętamy z rozdziału 6, suma impulsów zegarowych Z (2) oraz impulsów D, pochodzących od strumienia danych (1). Obowiązywała przy tym zasada, że składowe D reprezentowały ustawione bity danych, a składowe Z - tylko te impulsy zegara, które wypadają pomiędzy dwoma kolejnymi wyzerowanymi bitami danych.
Istota kodowania RLL polega na rezygnacji ze składowej Z. Układy logiczne dekodera muszą wtedy obliczać, na podstawie odległości dzielących kolejne impulsy, liczbę zer między nimi. System taki może poprawnie funkcjonować w warunkach rzeczywistych (uwzględniając fluktuacje prędkości obrotowej) jedynie w pewnych granicach, tzn. gdy liczba następujących po sobie zer strumienia danych nie jest zbyt duża. Trudno wymagać od zapisywanych danych, by miały określony skład, a w szczególności by nie zawierały zbyt wielu zer. Można natomiast tak je zakodować, by spełniały narzucone warunki.
W najbardziej rozpowszechnionym wariancie systemu RLL liczba zer zawiera się w przedziale od 2 do 7. Stąd wywodzi się też nazwa systemu - RLL(2,7). Wejściowy strumień danych poddawany jest więc wstępnie takiemu przekodowaniu, które gwarantuje spełnienie tego wymogu - tablica przekodowań została zmieszczona w tabeli 7.1.

Tabela 7.1.

Tablica przekodowań systemu RLL(2,7)

Dane wejściowe; Dane wyjściowe;

000; 000100;
10; 0100;
010; 100100;
0010; 00100100;
11; 1000;
011; 001000;
0011; 00001000;

Czytelnik zechce sprawdzić, że przedstawiona tablica istotnie spełnia założenia systemu. Dowolne kojarzenie łańcuchów
wyjściowych nie może dać ciągu zawierającego więcej niż 7 lub mniej niż 2 następujące po sobie zera.
Nasz przykładowy bajt danych 00101110 zostaje rozłożony na elementy (0010)+(11)+ (10), a tym z kolei przyporządkowuje
się odpowiednie łańcuchy z prawej kolumny tablicy. Otrzymujemy ciąg 0010010010000100, reprezentowany na rysunku 7.1
przez przebieg (5). Na nośniku magnetycznym utrwalone zostaną (7) jedynie cztery ustawione bity tego ciągu, co wywoła
namagnesowanie powierzchni zgodnie z przebiegiem (8).
Nietrudno zauważyć, że stosowana tablica kodowa wydłuża ciąg wejściowy o 100%. Dokładna analiza matematyczna
systemu RLL(2,7) dowodzi, że opisane powyżej pomijanie składowej Z prowadzi średnio do trzykrotnej redukcji liczby
przemagnesowań nośnika. Efektywna przewaga RLL(2,7) nad MFM wyraża się więc współczynnikiem 1,5.
Te dodatkowe 50% jest zyskiem, który owocuje wzrostem pojemności dysku bez konieczności poprawy parametrów
głowic lub warstwy magnetycznej. Ponieważ jednak nic nie ma za darmo, płaconą za to cenąjest znaczna komplikacja
układów kontrolera.
Stosunkowo rzadko spotykane są pokrewne warianty systemu RLL(2,7) ukrywające się pod wspólną nazwą ARLL
(Advanced RLL). Do grupy tej należą przykładowo systemy RLL(1,7) i RLL(3,9). Pozwalają one na blisko 90%
(jedna zmiana namagnesowania koduje średnio 2 bity danych!) wzrost wydajności w stosunku do metody MFM,
ale nakładają dużo ostrzejsze wymagania na precyzję wykonania mechaniki napędu oraz stabilną pracę układów
elektronicznych kontrolera.









Fizyczna organizacja danych i formatowanie
Fizyczna organizacja danych zapisanych na ścieżce dysku twardego jest analogiczna jak dla dyskietki. Główna różnica polega na tym, że w obudowie dysku znajduje się nie jeden, lecz kilka talerzy powleczonych warstwą nośnika magnetycznego i obsługiwanych przez odpowiednie zespoły głowic, poruszane jednym mechanizmem. Z tego też względu w przypadku dysków twardych nie mówi się o pojedynczych ścieżkach, lecz tzw. cylindrach, w skład których wchodzą ścieżki o tym samym numerze położone na kolejnych talerzach pakietu. Logika podziału ścieżek na sektory została oczywiście zachowana. Dodatkowo, ponieważ prędkość obrotowa dysku twardego jest znacznie większa niż dyskietki (od 3 do 7 tysięcy obrotów na minutę), ilość informacji odczytywanych przez głowice może przekroczyć przepustowość kontrolera (miało to miejsce głównie dla starszych kontrolerów MFM). Z tego względu odczyt danych z dysku realizowany jest z tzw. przeplotem (ang. interleave], który polega na niesekwencyjnym odczycie kolejnych sektorów.
Ważnym parametrem charakteryzującym zespół dysk-kontroler jest tzw. współczynnik przeplotu (interleave factor, I LV) określający, co który sektor jest odczytywany podczas obrotu dysku. Przykładowo, dla współczynnika przeplotu równego 1:3 (patrz rysunek 7.2) odczytywane są sektory 1, 4, 7,..., 2, 5, 8,... itd. Technika ta daje kontrolerowi czas na przetworzenie odczytanego sektora, ale jednocześnie znacznie spowalnia proces odczytywania informacji. Z tego też względu dla starszych kontrolerów MFM bardzo istotne było dobranie właściwego współczynnika przeplotu, objawiające się na zewnątrz osiągnięciem maksymalnej przepustowości zespołu dysk-kontroler. Obecnie stosowane kontrolery (głównie IDE) są na tyle szybkie, że pozwalają na pracę z przeplotem l :1, tj. odczytuj ą sektory po kolei.
Formatowanie wysokiego poziomu
Tzw. formatowania wysokiego poziomu (ang. high level format) dokonuje wchodzący w skład systemu operacyjnego MS-DOS program fonnat.com.
W przeciwieństwie do dyskietek, polecenie format odnoszące się do dysku twardego nie nanosi na jego powierzchnię ścieżek ani sektorów. Program fonnat.com buduje jedynie logiczną strukturę partycji. Partycją nazywamy wyodrębniony logicznie obszar dysku twardego, na który składa się pewna liczba przyległych do siebie cylindrów. Obszar taki może być administrowany tak, jak oddzielny, logiczny napęd dyskowy. Każdy taki napęd logiczny (w systemie DOS identyfikowany literą - C, D, E itd.) należy poddać właśnie operacji fonnatowania wysokiego poziomu, w trakcie którego program format zapisuje w obszarze partycji sektor ładujący (boot sector}, tablicę alokacji (FAT) i katalog główny. Wszystkie pozycje tablicy FAT inicjalizowane są wartością zero, co oznacza, że cała partycja jest wolna.
Położenie partycji na dysku fizycznym określone jest jednoznacznie przez podanie jej cylindra początkowego oraz liczby cylindrów, na które się rozciąga. Tego rodzaju dane, obejmujące wszystkie zadeklarowane parrycje, przechowywane są w tablicy partycji (ang. partition table). Program format.com korzysta z tej tablicy, ale nie tworzy jej ani nie modyfikuje. Musi ona być zapisana na dysku przed przystąpieniem do formatowania wysokiego poziomu. Tablicę partycji generuje np. program fdisk.com.
Proszę zwrócić uwagę na fakt, że powtórne formatowanie dysku twardego (celowe lub niezamierzone) nie niszczy zapisanej na nim infonnacji, a jedynie jej logiczną strukturę. Nie oznacza to bynajmniej, że odzyskanie danych jest sprawą banalną, szczególnie gdy były one rozproszone na całym dysku. Niszczona jest informacja o strukturze danych zawarta w FAT, dlatego przechowywanie "rezerwowej" kopii FAT w dodatkowym miejscu dysku pozwala odzyskać dane po formatowaniu.
(System przechowuje w partycji dwie kopie tablicy FAT, co pozwala na wykrywanie
ewentualnych błędów alokacji, nie umożliwia natomiast odzyskania danych po formatowaniu wysokiego poziomu. Do utworzenia kopii bezpieczeństwa obszaru zawierające dane systemowe (FAT, sektor ładujący, katalog główny) należy użyć specjalnego programu, na przykład mirror.com lub Norton DiskTool.).

Formatowanie niskiego poziomu
Operacja nanoszenia na powierzchnię dysku ścieżek, sektorów i wszystkich innych pól dodatkowych nazywana jest fonnatowaniem niskiego poziomu (ang. low level format}, inicjalizacją lub prefonnatowaniem. Zdecydowana większość produkowanych obecnie napędów poddawana jest tej operacji jeszcze u producenta i nie należy jej powtarzać. Kategoryczny zakaz formatowania niskiego poziomu obowiązuje w stosunku do dysków IDE (AT-BUS), których kontrolery, zgodne na poziomie rejestrów z systemem ST412/ 506 bardzo łatwo się tej operacji poddają. Przy dużej dozie szczęścia tak "potrakto-

wany" dysk będzie jeszcze funkcjonował, często pozornie bezbłędnie. Jeżeli przy okazji formatowania niskiego poziomu została zniszczona jedna z tablic odwzorowania uszkodzonych sektorów (ang. bad sector mapping), wcześniej czy później da to o sobie znać. Najczęściej jednak dostępu do takiego dysku odmawia nawet program fdisk. Z góry skazane na niepowodzenie są również próby "poprawy" współczynnika przeplotu (ang. interleave), bowiem bez względu na to, co meldują programy diagnostyczne (a są na nieszczęście i takie, które dla dysków AT-BUS nie odmawiają działania), współczynnik przeplotu dysków IDE z reguły wynosi 1:1.
Przyjmijmy więc, że struktura ścieżek i sektorów znajduje się już na dysku, a my możemy się jej co najwyżej przyjrzeć. Na rysunku 7.3 przedstawiona jest budowa jednej ścieżki dysku twardego systemu ST412/506. W zależności od systemu kodowania (MFM lub RLL) zmieniają się zawartości niektórych pól, ale ich ogólny układ pozostaje ten sam.




Z porównania rysunków 6.2 i 7.3 wynika, że ścieżka dysku twardego zbudowana jest podobnie do ścieżki dyskietki. Uwagę zwraca jedynie kilka szczegółów. Znacznemu zmniejszeniu uległy rozmiary odstępów (szczelin) między elementami ścieżki (sektorami i znacznikami EOT i BOT). Szczeliny te miały za zadanie kompensację wahań prędkości obrotowej dyskietki. Redukcja ich wielkości stała się możliwa dzięki lepszej stabilizacji prędkości wirowania dysku, co z kolei ma swoje "uzasadnienie" w elektronicznej regulacji obrotów silnika oraz braku tarcia między głowicami a powierzchnią nośnika magnetycznego. Kolejną różnicę widać wyraźnie w czwartym bajcie metryki adresowej ID, oznaczonym przez Z. Stanowi on tzw. znacznik sektora, a jego rola omówiona zostanie w następnym punkcie tego rozdziału.
Błędy i ich korekcja
Fizycznym nośnikiem informacji w dysku twardym jest, zespół koncentrycznie osadzonych krążków (płyt) pokrytych warstwą magnetyczną. Pomimo wyrafinowanej technologii produkcji tej części napędu, do dnia dzisiejszego nie jest możliwe uzyskanie absolutnie idealnych właściwości magnetycznych materiału pokrycia. Już mikroskopijnej wielkości defekt niszczy jeden bit informacji, co z kolei eliminuje cały sektor.
Tabela 7.2.

Organizacja danych na ścieżce dysku twardego

Pole; System MFM; System RLL;
S (BOT); 10 bajtów o wartości 00h; 11 bajtów o wartości 00h;
D1; AlFCh; AlFCh;
Z1ł; 11 bajtów o wartości 4Eh; 12 bajtów o wartości FFh;
D2; 7 bajtów o wartości 4Eh; -;
S; ] 0 bajtów o wartości 00h; 10 bajtów o wartości 00h;
D3; AlFEh; 5EAlh;
ID; C:G:N:Z*; C:G:N:Z*;
ECC-1; 4 bajty kodu ECC; 4 bajty kodu ECC;
Z2; 5 bajtów o wartości 00h; 5 bajtów o wartości 00h;
S; 10 bajtów o wartości 00h; 11 bajtów o wartości 00h;
D4; AlFSh; 5EAlh;
Dane; 512 bajtów; 512 bajtów;
ECC-2; 4 bajty kodu ECC; 4 bajty kodu ECC;
Z3; 15 bajtów o wartości 00h; 3 bajty o wartości 00h + 17 bajtów o wartości FFh;
Z4; ok. 56 bajtów o wartości00h; ok. 93 bajty o wartości 00h;

* - Symbol C:G:N:Z oznacza zakodowaną w polu ID metrykę adresową sektora w postaci numer; cylindra-numer głowicy-numer sektora-znacznik sektora.

Dyski twarde, przechodząc kolejne etapy produkcji, poddawane są długotrwałym próbom mającym na celu wykrycie wszystkich takich miejsc na powierzchni. Dla każdego dysku sporządzana jest lista błędów, której pozycje, określające jednoznacznie uszkodzone sektory, definiują dla każdego z nich numer cylindra, głowicy i sektora. Lista taka dołączana jest często do napędu w formie oddzielnego arkusza lub naklejki na obudowie. Nawet gdy liczba pozycji na niej przekracza kilkadziesiąt, nie stanowi to powodu do rozpaczy, gdyż jest to "ryzyko wkalkulowane", a problem rozwiązywany jest elegancko przez tzw. system odwzorowania uszkodzonych sektorów (ang. bad sector mapping).
Uważny czytelnik zwrócił zapewne uwagę, że czterobajtowe pole ID metryki adresowej sektora dysku twardego (zobacz rysunek 7.3) ma nieco inną budowę niż jego dyskietkowy odpowiednik (porównaj rysunek 6.2). Główna różnica tkwi w ostatnim bajcie, który w przypadku dysku twardego nie podaje wielkości sektora, lecz stanowi jego znacznik.
Postać znacznika sektora Z (bajt 4 metryki adresowej ID):

bit 7; Bit 6; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;



















Objaśnienia odnoszą się do sytuacji, w której dany bit jest ustawiony.
bity 7-4- Zarezerwowane.
bit 3- Oznacza ścieżkę zastępczą.
bit 2- Metryka adresowa wskazuje na ścieżkę zastępczą.
bit l- Ścieżka uszkodzona bez przydziału ścieżki zastępczej.
bit 0- Sektor uszkodzony.
Tak więc ustawienie bitu O znacznika sygnalizuje uszkodzenie danego sektora. Jeżeli uszkodzona jest cała ścieżka, a kontroler nie był w stanie przydzielić dla niej "zastępstwa", ustawiany jest bit 1. Odpowiednio duża przestrzeń rezerwowa dysku pozwala kontrolerowi zastąpić całą uszkodzoną ścieżkę. Sektory uszkodzonej ścieżki mają wtedy ustawiony bit 2 znacznika, a pierwsze trzy bajty pola ID wskazują nie na ścieżkę aktualną, lecz na zapasową. Ścieżka uznana za zastępczą posiada ustawiony bit 3 znacznika.
Mechanizm odwzorowania uszkodzonych sektorów opiera się na dwóch tablicach przechowywanych na dysku. Pierwszą z nich jest lista błędów wykrytych podczas testowania powierzchni magnetycznej jeszcze u producenta. Umieszczona jest ona zwykle na ścieżce zerowej i może zawierać maksymalnie 101 pozycji. Poszczególne pozycje lokalizują uszkodzone miejsce przez podanie numeru cylindra, głowicy i liczby bajtów zawartych między znacznikiem D3 na początku ścieżki a miejscem uszkodzenia. Drugą listę tworzy sam kontroler dysku podczas operacji formatowania (automatycznie lub na życzenie wyrażone odpowiednim rozkazem - aktualizacja listy). Lista ta nosi nazwę listy znanych błędów (ang. Grown Error List). Pozycje na tej liście, w przeciwieństwie do listy błędów ustalonej przez producenta, oznaczają uszkodzone miejsca poprzez podanie sekwencji cylinder-głowica-numer sektora.
W oparciu o przedstawione listy kontroler ma możliwość optymalnego zagospodarowania powierzchni dysku. Niesprawne sektory i ścieżki są logicznie przesuwane lub zastępowane innymi tak, że dysk "na zewnątrz" prezentuje się nienagannie mimo wielu uszkodzeń. Zjawiska tego nie należy traktować jako wady dysku. Jeżeli dana ścieżka posiada tylko jeden zły sektor, kontroler może w trakcie operacji formatowania tak przesunąć wszystkie sektory, że uszkodzenie trafi w niewykorzystywaną część ścieżki. Operacja ta określana jest często mianem sector-slipping; jeśli może być przeprowadzona, nie powstaje ubytek pojemności dysku. Wykluczenie uszkodzonego sektora przez oznaczenie go jako zły stanowi nieco gorszą alternatywę, gdyż zmniejsza pojemność dysku. Niektóre kontrolery "profilaktycznie" formatują w tym celu na każdej ze ścieżek o jeden sektor więcej (zwykle 18 zamiast 17 lub 27 zamiast 26). Dodatkowe sektory nie są w normalnych warunkach wykorzystywane i oczekują w rezerwie. Pozwala to na eliminację pojedynczych sektorów ścieżki bez utraty pojemności.
Widzimy więc, że niewielkie błędy mogą być stosunkowo łatwo likwidowane przez kontroler. Uszkodzenia obejmujące więcej niż jeden sektor nie mogą być skompensowane w ramach tej samej ścieżki. Kontroler oznacza w takim przypadku całą ścieżkę jako uszkodzoną, a jako zastępczą wyznacza najwyższą z pozostałych dostępnych ście-
żek. Jej metryki adresowe (cylinder-głowica-sektor-znacznik) odkładane są we wszystkich polach ID ścieżki uszkodzonej, przy czym ustawiony zostaje bit 2 znacznika. Z kolei w znacznikach sektorów ścieżki rezerwowej ustawiony zostaje bit 3. Ścieżka taka, adresowana swymi własnymi parametrami, przestaje być dostępna dla normalnych operacji. Każda próba dostępu do sektorów uszkodzonej ścieżki kierowana jest przez kontroler do ścieżki rezerwowej. Praktycznie oznacza to dodatkowy manewr najazdu (pozycjonowania) głowic.
Przydział ścieżki zapasowej powoduje wprawdzie zmniejszenie pojemności dysku, ale pozostawienie uszkodzonej ścieżki bez przydzielenia "zastępstwa" jest jeszcze gorsze, oznacza bowiem przerwanie ciągłości w przestrzeni adresowej sektorów. Zarządzanie takim obszarem jest dla kontrolera zadaniem dużo trudniejszym i sprawność dysku obniża się. Na szczęście obecny poziom technologii pozwala na minimalizację liczby uszkodzeń powierzchni dysków do tego stopnia, że na skorygowanie wszystkich błędów pozwala w zasadzie sama technika sector-slipping.
Kontrolery realizujące opisany powyżej mechanizm odwzorowania uszkodzonych sektorów rezerwują zwykle dla swoich celów pierwszy cylinder fizyczny dysku i przydzielają mu numer ujemny (-1). Daje to gwarancję, że dostęp do tego cylindra może mieć wyłącznie kontroler, żaden rozkaz nie może bowiem zaadresować sektora położonego na ujemnym cylindrze. W tak zabezpieczonych sektorach kontroler przechowuje wykorzystywane listy błędów oraz dokładny opis rzeczywistej geometrii dysku (dla bezpieczeństwa - w kilku kopiach).
Oprócz uszkodzeń powierzchni w dobrze znanych kontrolerowi miejscach występują sporadycznie również inne problemy. Na skutek niezmiernie wysokiej gęstości zapisu danych na dyskach twardych pojawiać się mogą często błędy pozycjonowania lub odczytu. Istnieje kilka znanych źródeł tego rodzaju błędów.
Najbardziej drastycznym przykładem jest zetknięcie się głowic z powierzchnią magnetyczną (ang. head crush). W normalnych warunkach pracy głowice utrzymywane są w odległości około 0,0003 mm od powierzchni nośnika. Dla porównania, średnica włosa ludzkiego wynosi w przybliżeniu 0,01 mm, a więc 30 razy więcej! Mikroskopijnej wielkości drobiny pyłów lub też raptowny wstrząs mogą więc łatwo doprowadzić do kolizji, w wyniku której zniszczony zostanie fragment powierzchni magnetycznej (jeśli nie sama głowica).
Znany jest też powszechnie efekt stopniowego zaniku namagnesowania sektorów poddawanych wyłącznie odczytowi. Najbardziej klasycznym tego przykładem jest sektor ładujący, dla którego już po kilku latach mogą wystąpić pojedyncze błędy odczytu.
W początkowej fazie powstawania takich błędów procedury korekcji są w stanie jeszcze je wyeliminować, ale pewnego (niekoniecznie pięknego) dnia sektor przestaje być czytelny. Istnieją oczywiście specjalne programy rozpoznające takie słabe punkty dysku i odświeżające zawartość zagrożonych sektorów.
Najczęstszym źródłem błędów są oczywiście niedokładności pozycjonowania głowic nad żądaną ścieżką, szczególnie często spotykane wśród dysków wyposażonych w mechanizm przesuwu sterowany silnikiem krokowym. Realizując dostęp do określonego sektora kontroler musi ustawić głowice nad cylindrem, do którego przynależy ścieżka zawierająca ten sektor. Liczba niezbędnych kroków mechanizmu przesuwu obliczana jest na podstawie odległości żądanego cylindra od pozycji bieżącej. Jeżeli zapis w polu ID dowolnego sektora po osiągnięciu celu wskazuje mimo wszystko na inny cylinder, mamy do czynienia właśnie z błędem pozycjonowania. Ewentualny błąd w polu danych sektora wykrywany jest natychmiast dzięki obecności kodów ECC. Nie oznacza to jednak, że kontroler od razu daje za wygraną. W zależności od szczegółowych rozwiązań zawartych w pamięci stałej mikroprocesora kontrolera możliwych jest ponad 30 różnych prób odczytu, zanim systemowi operacyjnemu przekazany zostanie meldunek o niemożności dostępu do sektora.
Ogólny algorytm postępowania wygląda zwykle następująco:
Krok pierwszy: podejmowana jest ośmiokrotnie próba odczytu sektora bez korzystania z korekcyjnych właściwości kodu ECC. Ta prosta strategia może być uwieńczona sukcesem, jeżeli przyczyną błędu było chwilowe rozsynchronizowa-nie spowodowane zachwianiem prędkości obrotowej dysku.
Krok drugi: następuje wymuszenie przejazdu głowicy nad powierzchnią dysku; składają się nań polecenia powrotu nad ścieżkę zerową, a stamtąd na koniec obszaru danych i ponownie do punktu wyjścia. Manewr taki likwiduje ewentualne przesunięcie fazy mechanizmu pozycjonowania, który nie lokuje głowic w środkowej części ścieżek, lecz na ich krawędzi, gdzie odczytywany sygnał może być zbyt słaby.
Krok trzeci: podejmowana jest próba odczytu sektora z wykorzystaniem samo-korygujących właściwości kodu ECC.
Krok czwarty: kontroler wykonuje próby odczytu sektora z celowo wprowadzonym przesunięciem fazy danych i zegara. Kontroler sprawdza kolejno następujące przesunięcia: +1,5%, +6%, +7,5%, -1,5%, -6%, -7,5%. Tego typu postępowanie likwiduje ewentualne przesunięcia bitów powstałe na skutek braku tzw. prekompensacji przy zapisie.
Krok piąty: mechanizm pozycjonowania głowic przechodzi do pracy w trybie mi-krokrokowym. Kontroler realizuje osiem kolejnych prób odczytu, podczas których głowice przesuwane są kolejno o jeden mikrokrok w poprzek szerokości ścieżki. Korekcyjne właściwości kodu ECC nie są brane pod uwagę. W ten sposób mogą być zlikwidowane błędy wywołane zmianą wymiarów powierzchni dysku pod wpływem różnicy temperatur w stosunku do momentu formatowania.
Krok szósty: kontroler realizuje osiem kolejnych prób odczytu z wykorzystaniem strategii inikrokroków, a odczyt odbywa się z udziałem kodów ECC.
Realizacja powyższego algorytmu jest naturalnie przerywana, jeśli tylko uda się odczytać dane z sektora.
Metodyka korekcji błędów pozycjonowania nie jest aż tak rozbudowana, jak w powyższym opisie. Proszę zauważyć, że błędem pozycjonowania w rozumieniu kontrolera może być zarówno brak pod głowicą jakiejkolwiek metryki adresowej, jak i odczytanie metryki niezgodnej z oczekiwaną. W pierwszym przypadku przyczyną jest przeważnie ustawienie głowic w położeniu międzyścieżkowym, które likwiduje pojedyncza kalibracja napędu. W drugim przypadku kontroler przeprowadza zwykle kilkakrotną kalibrację i ponawia próbę odczytu.
Kontrolery dysków realizujące technikę odwzorowania uszkodzonych sektorów kierują się często swoimi własnymi regułami i może się zdarzyć, że po kolejnej nieudanej próbie najazdu ścieżka zostanie oznaczona jako zła. Przydział ścieżki zastępczej odbywa się wówczas w opisany wcześniej sposób.
Standard AT-BUS
Architektura pierwszych komputerów PC łączyła dysk twardy z resztą systemu przy pomocy magistrali ST412/506. Dziś trudno było by znaleźć zarówno taki komputer jak i dysk ze złączem w tym standardzie. ST412/506 został wyparty przez nowy model określany mianem AT-BUS, IDE lub ATA.
Symbol IDE (Intelligent Drive Electronics) ma podkreślać fakt, iż napędy dysków jako takie zdolne są do samodzielnych (inteligentnych) działań i nie wymagają oddzielnych kontrolerów (tak jak to miało miejsce w przypadku ST412/506). Często spotykane jest również tłumaczenie tego skrótu jako Integrated Device Electronics. Ta wersja tłumaczenia kładzie nacisk na inną charakterystyczną cechę nowego standardu: zintegrowanie układów kontrolera i mechanizmów napędu w jednej obudowie. Elektronika montowana w dyskach starszych generacji miała za zadanie wyłącznie sterowanie pracą części ruchomych i obróbkę sygnałów zapisu i odczytu dla głowic magnetycznych. Stąd jeszcze daleka droga do przeprowadzenia kompletnej operacji odczytania określonego sektora. Czynności pozycjonowania głowic nad określoną ścieżką, odszukania metryki sektora, zdekodowania sygnału, oddzielenia danych od zegara i wreszcie przesłanie bloku danych do pamięci (że przemilczę całą strategię kontroli i korekcji błędów) wykonywał dotychczas układ kontrolera dysku twardego umieszczany na oddzielnej karcie. Konieczność przesyłania przewodem łączącym kontroler-dysk również zakodowanych danych zwiększała podatność na zakłócenia i ograniczała prędkość transmisji.
Skrót ATA (ATAttachmenf), chociaż oznacza w gruncie rzeczy to samo co IDE pojawił się nieco później i stanowi określenie używane przez zespoły normalizacyjne pracujące nad standardem IDE w jego kolejnych wersjach. Jedno i drugie określenie odnosi się do implementacji tej samej magistrali połączeniowej. Bliższe informacje na ten temat znajdzie czytelnik w dalszej części tej książki przy omawianiu rozszerzeń standardu IDE.
Stale powstające nowe modele dysków o różnorodnych geometriach (ilość głowic, cylindrów, sektorów itd.) nie mogły być jednocześnie obsługiwane przez ten sam
w gruncie rzeczy kontroler. Drastyczny spadek cen układów elektronicznych doprowadził wreszcie do sytuacji, że opłacalnym stało się wyposażanie każdego dysku twardego we własny, ściśle do niego dopasowany kontroler. Efektem ubocznym jest naturalnie skrócenie drogi wszystkich sygnałów.
Parametry pierwszych dysków ze złączem IDE mieściły się gdzieś pomiędzy ST412/506 a SCSI i ESDI. Przez krótki czas na rynku były obecne modele z wszystkimi czterema interfejsami. W chwili obecnej nie ma innej alternatywy: albo IDE albo SCSI. Ceny napędów IDE/AT kształtują się do dnia dzisiejszego na poziomie leżącym lekko poniżej grupy z interfejsem SCSI. Do tego należy doliczyć wyższy koszt systemu SCSI powiększony o koszt kontrolera i często droższego od IDE okablowania. Wspólna dla dysków wszelkich rodzajów pozostała na szczęście jedna pozytywna cecha: stały spadek cen. Różnorodność modeli oferowanych przez kilku znaczących producentów pozwala zaspokoić wszelkie gusty.
Logiczny opis złącza
AT-BUS jako złącze jest strukturą logiczną. Standard IDE wywodzi się od ST412/506 i w pełni odwzorowuje jego rejestry sterujące. Akceptowane są więc wszelkie polecenia wysokiego poziomu typu formatuj ścieżkę lub pisz sektor.
To, co w systemach ST412/506 i ESDI określane było mianem złącza, tj. fizyczne połączenie kontrolera i napędu wraz z określeniem znaczenia poszczególnych linii, tutaj nie istnieje z logicznego punktu widzenia. Praktycznie każdy model dysku IDE ma inne parametry, do których dostosowany jest inny kontroler i nie może być mowy o jakimkolwiek standardzie na tym odcinku.
Dysk IDE komunikuje się z szynami systemowymi za pośrednictwem sterownika określanego często mianem Host-Adapter. W początkowym okresie wprowadzania standardu IDE sterownik ten stanowił dodatkową kartę I/O (ISA), na. której integrowane były również złącza szeregowe i równoległe oraz kontroler FDD. Sam Host-Adapter to prosty zestaw bramek logicznych realizujących jedynie funkcje dekodowania adresu i buforowania sygnałów szyn. Rysunek 7.5 przedstawia wykorzystanie sygnałów szyn systemowych do sterowania dysku AT-BUS.
Wszystkie płyty główne aktualnej generacji wyposażone są już w ten układ. Stanowi on de facto jedno z urządzeń PCI (PCI to (E)IDE Bridge). Jedyne co należy wtedy zrobić, to połączyć 40-żyłowym przewodem dysk twardy z odpowiednim gniazdem na płycie. W przypadkach gdy jest to z jakichś względów niezbędne, stosuje się Host-Adapter w formie karty rozszerzającej ISA lub PCI.
Pierwotny standard IDE dopuszczał obsługę jedynie dwóch dysków twardych. Jeden z nich musiał być wtedy oznaczony jako Master, a drugi jako Slave. Ustaleń tych dokonuje się za pomocą zwór konfiguracyjnych zlokalizowanych na dyskach. To co spotykamy w komputerach obecnie to już rozszerzenie standardu (EIDE). Dozwolona jest większą liczbę urządzeń, które niekoniecznie muszą być wyłącznie dyskami twardymi. Omówieniu systemu EIDE znajdzie czytelnik w jednym z następnych punktów.
Złącze fizyczne
Połączenie kontrolera IDE z dyskami odbywa się 40-żyłowym płaskim przewodem. Wyjątek stanowią stosowane w komputerach przenośnych dyski 2,5" i 1,8", które są połączone przewodem 50-żyłowym. Kabel połączeniowy posiada trzy wtyki: jeden dla kontrolera i po jednym dla urządzeń Master i Slave. Żadne z przewodów nie są skrzyżowane a fizyczna kolejność urządzeń na magistrali nie odgrywa roli. Położenie poszczególnych końcówek i w złączu zostało pokazane na rysunku 7.6, a ich znaczenie przedstawia tabela 7.3.


























Tabela 7.3.

Znaczenie linii magistrali IDE

Nr linii; Sygnał IDE; Znaczenie; Sygnał magistrali zewn.;

1; -Reset; Sprowadzenie do stanu początkowego; RESET DRV
2; GND; Masa; -;
3; DD7; Dwukierunkowa linia danych, bit 7; SD7;
4; DD8; Dwukierunkowa linia danych, bit 8; SD8;
5; DD6; Dwukierunkowa linia danych, bit 6; SD6;
6; DD9; Dwukierunkowa linia danych, bit 9; SD9;
7; DD5; Dwukierunkowa linia danych, bit 5; SD5;
8; DD4; Dwukierunkowa linia danych, bit 4; SD4;
10; DD11; Dwukierunkowa linia danych, bit 11; SD11;
11; DD3; Dwukierunkowa linia danych, bit 3; SD3;
12; DD12; Dwukierunkowa linia danych, bit 12; SD12;
13; DD2; Dwukierunkowa linia danych, bit 2; SD2;
14; DD13; Dwukierunkowa linia danych, bit 13; SD13;
15; DD1; Dwukierunkowa linia danych, bit 1; SD1;
16; DD14; Dwukierunkowa linia danych, bit 14; SD14;
17; DDO; Dwukierunkowa linia danych, bit 0; SDO;
18; DD15; Dwukierunkowa linia danych, bit 15; SD15;

























Tabela 7.3.

Znaczenie linii magistrali IDE

Nr linii; Sygnał IDE; Znaczenie; Sygnał magistrali zewn.;

1; -Reset; Sprowadzenie do stanu początkowego; RESET DRV
2; GND; Masa; -;
3; DD7; Dwukierunkowa linia danych, bit 7; SD7;
4; DD8; Dwukierunkowa linia danych, bit 8; SD8;
5; DD6; Dwukierunkowa linia danych, bit 6; SD6;
6; DD9; Dwukierunkowa linia danych, bit 9; SD9;
7; DD5; Dwukierunkowa linia danych, bit 5; SD5;
8; DD4; Dwukierunkowa linia danych, bit 4; SD4;
10; DD11; Dwukierunkowa linia danych, bit 11; SD11;
11; DD3; Dwukierunkowa linia danych, bit 3; SD3;
12; DD12; Dwukierunkowa linia danych, bit 12; SD12;
13; DD2; Dwukierunkowa linia danych, bit 2; SD2;
14; DD13; Dwukierunkowa linia danych, bit 13; SD13;
15; DD1; Dwukierunkowa linia danych, bit 1; SD1;
16; DD14; Dwukierunkowa linia danych, bit 14; SD14;
17; DDO; Dwukierunkowa linia danych, bit 0; SDO;
18; DD15; Dwukierunkowa linia danych, bit 15; SD15;
19; GND; Masa; -
20; x; Znacznik blokady wtyku; -
21*; DMARQ; Żądanie obsługi DMA; DRQn
22; GND; Masa; -
23; -DIOW; Zapis do wej/wyj; IOW
24; GND; Masa; -
25; -DIOR; Odczyt z wej/wyj; 1OR
26; GND; Masa; -
27*; IORDY; Zakończono dostęp do wej/wyj; IO CH RDY
28*; SPSYNC (CSEL); Synchronizacja obrotów dysków; -
29*; -DMACK; Potwierdzenie przydziału kanału DMA; DACKn
30; GND; Masa; -
31; INTRQ; Żądanie przerwania; IRQn
32; IOCS16; Możliwość dostępu 16-b. do wej/wyj; I/OCS 16
33; DA1; Linia adresowa "1;" SA1
34; ~PDIAG(~CBLID)**; Połączenie z napędem Słave; -
35; DAO; Linia adresowa "0"; SAO
36; DA2; Linia adresowa "2"; SA2
37; ~CSlFx; Wybór bazy rejestrów 1f0h; -
38; ~CS3Fx; Wybór bazy rejestrów 3f0h; -
39; -DASP; Połączenie z napędem Slave; -
40; GND; Masa; -
41; +5V (logie); Zasilanie układów logicznych; -
42; +5V (motor); Zasilanie silnika; -
43; GND; Masa; -
44; Type; (0- ATA); -
A; M/S; Master/Slave jumper; -
B; M/S; Master/Slave jumper; -
C; M/S; Master/Slave jumper; -
D; M/S; Master/Slave jumper; -

* -Sygnały zdefiniowane jako opcjonalne w pierwotnej wersji specyfikacji ATA.
**W obecnej wersji standardu EIDE końcówka ta służy do rozpoznawania typu kabla (40 lub 80 żył).

Różnica pomiędzy złączem 40- a 50-żyłowym sprowadza się do tego. że przez dodatkowe styki 41.42 i 43 przekazywane jest zasilanie. Z kolei styki A. B, C i D są wykorzystywane jako przełączniki Master/Slave.














































































Jak widać z powyższego zestawienia większość linii stanowi przedłużenie magistrali zewnętrznej PC. Zaślepiona końcówka 20 ma stanowić blokadę uniemożliwiającą omyłkowe odwrócenie wtyku.
Host-Adapter wytwarza 5 sygnałów, które nie mają swoich odpowiedników w szynie systemowej:
Końcówka 37 (CS1 Fx). Sygnał selekcji grupy rejestrów o adresie bazowym 1F0h.
Końcówka 38 (CS3Fx). Sygnał selekcji grupy rejestrów o adresie bazowym 3F0h.
Końcówka 28 (SPSYNC/CSEL). Znaczenie tego sygnału zmieniało się wraz z kolejnymi wersjami opracowań komitetów normalizacyjnych. SPSYNC miał za zadanie synchronizację prędkości obrotowej dysków Master i Slave. Synchronizacja taka była niezbędna w specjalnych trybach pracy połączonych dysków (Mirro-ring), który stanowi dokładne (lustrzane) dublowanie każdej operacji dyskowej. System taki wykorzystywany jest w serwerach sieci lokalnych dla zwiększenia pewności ochrony danych ale raczej wśród urządzeń połączonych magistralą SCSI a nie IDE. Wiele napędów nigdy nie korzystało z tego trybu i końcówka SPSYNC pozostawała nie podłączona. W niektórych typach napędów końcówka 28 nosiła nazwę CSEL (Cable Select) i miała służyć do selekcji jednostek Master i Slave. Również i ten system nie zdobył większej popularności.
Końcówki 39 i 34 (DASP i -PDIAG). Obie linie służą wzajemnej komunikacji między Master i Slave, ale jedynie podczas inicjalizacji. Również te sygnały nie są niezbędnie konieczne i nie zawsze występują. Linia 34 (wtedy nosi nazwę -CBLID) służy w dzisiejszej wersji standardu EIDE do rozpoznania typu kabla (40 lub 80 żyłowy) w systemach Ultra DMA/66.
Końcówka IORDY połączona jest w nowoczesnych (szybkich) napędach z plusem napięcia zasilania, co wymusza stały wysoki poziom logiczny. W przeciwnym razie sygnał ten służy sygnalizacji konieczności wprowadzenia opóźnień (Wait States}.
Modele XT używały kanału DMA do wymiany danych z dyskiem twardym. Architektura AT stosuje na pozór bardziej archaiczną metodę opartą na pojedynczych operacjach odczytu portu danych do rejestru (instrukcją in) i stąd przesyłania ich do pamięci (instrukcją mov). Biorąc pod uwagę szybkość klasycznych układów DMA taktowanych zegarem 4,77 MHz, metoda ta przynosiła lepsze efekty. Późniejsze wersje PC-AT wyposażane były często w szybkie kontrolery DMA nowszej generacji. Ich zastosowanie było bardziej efektywne od powtarzanych cykli dostępu do portów I/O. W ślad za tym podążali producenci dysków twardych wypuszczając nowe modele współpracujące z kanałem DMA. Dyski takie robiły użytek z linii DMARQ i DMACK.
Dostęp CPU do dysku AT-BUS

CPU komunikuje się z kontrolerem dysku AT-BUS poprzez obszerny zestaw rejestrów CBR49. Rejestry CBR(Inna
spotykana w literaturze nazwa to AT-Task-File.), podzielone są na dwie grupy: podstawową (Command Błock
Registers} i dodatkową (Control Błock Registers). Adresy i znaczenia poszczególnych rejestrów odpowiadają
w PC-AT (ale nie w XT!) w pełni systemowi ST412/ 506. Jest chyba oczywiste, że całkowicie odmienne systemy
SCSI i ESDI posługują się swoimi własnymi rozwiązaniami.
Omawiane rejestry skupiają się wokół adresów bazowych: podstawowy od IFOh i dodatkowy od 3F6h.
Adres rejestru to adres bazowy plus adres DA. Procesor może osiągnąć każdy z nich programując stan linii
adresowych DA#0-DA#2 oraz selekcyjnych CS#3fx, CS3fx. Kierunek transmisji (odczyt lub zapis do portu)
wybierany jest poprzez aktywację linii -DIOR oraz -DIOW. Proszę zwrócić uwagę, iż pod tym samym adresem
portu może się ukrywać inny rejestr przy odczycie a inny przy zapisie. Tryby dostępu do rejestrów CBR zebrane
zostały w tabeli 7.4.
Poniżej podany jest krótki opis znaczenia poszczególnych rejestrów grupy.

Rejestr danych (IF0h)

Jest to 16-bitowy dwukierunkowy port służący wymianie danych między CPU i kontrolerem AT-BUS. Należy zwrócić
uwagę, że wyzerowany bit 3 rejestru stanu oznacza chwilowy brak dostępu do portu danych (zarówno do odczytu,
jak i do zapisu).

Rejestr błędów (IFlh)

Rejestr ten może być wyłącznie odczytywany, a zawarte w nim dane stanowią informację o błędzie wykonania ostatniego rozkazu jeżeli ustawiony jest bit O rejestru stanu. W przeciwnym przypadku zawartość rejestru błędu jest nieokreślona.

bit 7; bit 6; bit 5; 0; bit 3; 0; bit 1; bit 0;

bit 7-l - nie znaleziono znacznika DAM (Data Address Mark) pomiędzy metryką ID a polem danych sektora.
bit 6-l - nie znalezione ścieżki O (po rozkazie RECALIBRATE).
bit 5-l - kontroler zaniechał wykonania rozkazu (np. nieznany kod rozkazu).
bit 4-Równy 0
bit 3-l - nie znaleziono metryki ID sektora.



.



Tabela 7.4.

Rejestry CBR standardu IDE

CS#1Fx; CS#3Fx; DA# 2; DA#1, DA#0; Rejestry CBR; Adres;
Przy odczycie (-DIOR) Przy zapisie (-DIOW);
0; 1; 0; 0; 0; Rejestr danych (Data Register) - Rejestr danych (Data Register); 0x1F0h
0; 1; 0; 0; 1; Rejestr błędów (Error Register) - Rejestr prekompensacji (Features Register); 0xlFlh
0; 1; 0; 1; 0; Rejestr liczby sektorów (Sector Count Register) - Rejestr liczby sektorów (Sector Count Register); 0x1F2h
0; 1; 0; 1; 1; Rejestr numeru sektora lub bity 0-7 ŁBA (Sector Number Register) - Rejestr numeru sektora lub bity 0-7 ŁBA (Sector Number Register); 0x1F3h
0; 1; 1; 0; 0; Rejestr numeru cylindra LSB lub bity 8- 15 ŁBA (Cylinder Low Register) - Rejestr numeru cylindra LSB lub bity 8- 15 ŁBA (Cylinder Lo\v Register); 0x1F4h
0; 1; 1; 0; 1; Rejestr numeru cylindra MSB lub bity 16-23 ŁBA (Cylinder High Register) - Rejestr numeru cylindra MSB lub bity 16-23 ŁBA (Cylinder High Register); 0x1F5h
0; 1; 1; 1; 0; Rejestr napęd/głowica lub bity 24-27 ŁBA (Drive/Head Register) - Rejestr napęd/głowica lub bity 24-27 ŁBA (Drive/Head Register); 0x1 F6h
0; 1; 1; 1; 1; Rejestr stanu (Status Register) Rejestr rozkazów (Command Register); 0x1 F7h
1; 0; 1; 1; 0; Zastępczy rejestr stanu (Alternate Status Register) - Rejestr sterujący urządzenia (Device Control Register); 0x3 F6h
1; 0; 1; 1; 1; Rejestr adresu napędu (Drive Address Register) - Nie używany; 0x3F7h
1; 1; x; x; x; Magistrala w stanie wysokiej impedancji (Data Bus High) - Nie używany; -
1; 0; 0; x; x; Magistrala w stanie wysokiej impedancji (Data Bus High) - Nie używany; -
1; 0; 1; 0; x; Magistrala w stanie wysokiej impedancji (Data Bus High) - Nie używany; -
0; 0; x; x; x; Stan zabroniony; -

















bit 2-Równy 0.
bit l-Błąd danych niemożliwy do skorygowania przez kontroler (mimo zastosowania ECC).
bit 0-1 próba zapisu do sektora oznaczonego jako zły (flaga w polu ID).

Uwaga:

Znaczenie pozycji bitowych tego rejestru po powrocie z rozkazu EXECUTE DIAGNO-STIC (oraz tuż po załączeniu napięć zasilających) jest odmienne. Rejestr błędu może wtedy przyjąć następujące wartości:
Ol: brak błędów,
02: nie używany,
03: uszkodzony bufor pamięci RAM,
04: błąd układu kontrolera magistrali AT-BUS,
05: niesprawność pamięci ROM lub RAM mikrokontrolera,
8x: błąd jednostki dyskowej Slave.
Rejestr prekompensacji (IFlh)

Rejestr ten istnieje wyłącznie dla utrzymania zgodności AT-TASK-FILE z zestawem rejestrów sterujących systemu ST412/506. Wszystkie przekazywane do tego rejestru dane są ignorowane, bowiem kontroler reguluje kompensację we własnym zakresie bez udziału CPU.

Rejestr liczby sektorów (lF2h)

W rejestrze tym ustawiana jest liczba sektorów, która ma być objęta operacją zapisu, odczytu lub weryfikacji. W miarę wykonywania operacji, zawartość rejestru jest stale zmniejszana przez kontroler, tak że zawsze wskazywana jest liczba pozostałych sektorów.

Uwaga l:
Liczba O zapisana do tego rejestru oznacza 256 sektorów.

Uwaga 2:
Znaczenie tego rejestru w rozkazie ustawiania parametrów napędu jest inne.

Rejestr numeru sektora (lF3h)
CPU zapisuje tu numer pierwszego sektora, którego dotyczy rozkaz. Kontroler aktualizuje tę liczbę w miarę postępów w realizacji rozkazu. Odczyt rejestru dostarcza więc informacji o ostatnio opracowanym sektorze. Jeżeli bit 6 rejestru IFóh jest równy l, rejestr 1F3H zawiera składowe LBA0 - LBA7.
Rejestry numeru cylindra - LSB, MSB (lF4h, 1F5H)
Para rejestrów tworząca 10-bitową liczbę określającą numer cylindra. Wykorzystywane są wszystkie bity rejestru 1F4H oraz dwa najmłodsze bity rejestru 1F5H. Reszta bitów rejestru lF5h jest ignorowana. Dopuszczalne są więc cylindry o numerach z przedziału O - l 023. W rzeczywistości wiele napędów AT-BUS posiada więcej fizycznych cylindrów, ale układy kontrolera dokonują tzw. translacji tej liczby do właściwego przedziału kosztem wyimaginowanej modyfikacji liczby sektorów na ścieżkę i innej niż faktyczna liczby głowic.
Zawartość tych rejestrów jest modyfikowana przez kontroler zgodnie z aktualnym położeniem głowic i może być odczytywana przez CPU. Jeżeli bit 6 rejestru IFóh jest równy l, rejestry lF4h i lF5h zawieraj ą składowe LBA8 - LBA23.
Rejestr napęd/głowica (IFGh)
Rejestr pozwala określić, do którego z napędów adresowany jest bieżący rozkaz. Bit 6 stanowi przełącznik trybów ŁBA/CHS.
bit 7; bit 6; 1; bit 4; bit 3; bit 2; bit 1; bit 0;

bit 7-Równy 1.
bit 6-Przełącznik trybu adresowania ŁBA/CHS:
l - CHS,
0- ŁBA.
bit 7-Równy 1.
bit 7-Adres napędu:
l - Slave,
0 - Master.
bity 3-0-Kodowany binarnie numer głowicy (jeżeli bit 6 = 7):
0000 - głowica 0,
0001 - głowica l,
... ...
1111 - głowica 15.

Jeżeli bit 6 rejestru lF6h jest równy l, bity 3-0 zawieraj ą składowe LBA#24 - LBA#27.


Rejestr stanu (1F7H)
Rejestr ten może być wyłącznie odczytywany i zawiera informacje o ostatnio wykonanym rozkazie. Kontroler wpisuje tu dane zaraz po zakończeniu rozkazu lub jeśli wystąpił błąd.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;

bit 7-l - Sygnał zajętości (BSY, Busy); jak długo bit ten jest
ustawiony, Host nie ma dostępu do żadnego z rejestrów grupy AT-Task-File.
bit 6-l - Sygnał gotowości, dysk osiągnął właściwą prędkość obrotową (RDY, Ready).
bit 5-l - Nienormalne zachowanie się dysku (np. hazard sygnałów na złączu IDE).
bit 4-l - Zakończono pozycjonowanie głowic.
bit 3-l - Możliwy dostęp do portu danych, dane gotowe do przekazania do Host.
bit 2-l - Wystąpił błąd danych (możliwy do skorygowania kodem ECC), który został skorygowany.
bit 1-l - Głowica czyta właśnie znacznik początku ścieżki (IDX, Index); trwa to ok. 300 ns.
bit 0-l - Błąd, szczegóły w rejestrze błędów.

Uwaga:
Wszystkie bity tego rejestru z wyjątkiem bitu 7 oraz wszystkie inne rejestry grupy AT-Task-File zawierają nieokreślone dane jak długo ustawiony jest bit 7 tego rejestru, co oznacza, że kontroler zajęty jest wykonywaniem rozkazu. W stanie tym wolno jednak zapisywać rejestr sterujący 3F6h.

Rejestr rozkazów (lF7h)

CPU wpisuje do tego rejestru kod operacji (słowo rozkazowe). Lista standardowych rozkazów (zgodnych z ST412/506) obejmuje 8 pozycji. Standard IDE definiuje dodatkowe rozkazy, np. do obsługi funkcji oszczędnościowych.
Kontroler przechodzi do realizacji polecenia natychmiast po zapisaniu tego rejestru, więc wszystkie inne parametry (rejestry) muszą być ustawione wcześniej. Tabela 7.5 prezentuje rozkazy systemu IDE wraz z wymaganymi przez nie parametrami.



Rejestr stanu (1F7H)
Rejestr ten może być wyłącznie odczytywany i zawiera informacje o ostatnio wykonanym rozkazie. Kontroler wpisuje tu dane zaraz po zakończeniu rozkazu lub jeśli wystąpił błąd.
bit 7;
bit 6;
bit 5;
bit 4;
bit 3;
bit 2;
bit 1;
bit 0;
l - Sygnał zajętości (BSY, Busy); jak długo bit ten jest
ustawiony, Host nie ma dostępu do żadnego z rejestrów grupy AT-Task-File.
l - Sygnał gotowości, dysk osiągnął właściwą prędkość obrotową (RDY, Ready).
l - Nienormalne zachowanie się dysku (np. hazard sygnałów na złączu IDE).
l - Zakończono pozycjonowanie głowic.
Rejestr numeru sektora (lF3h)
CPU zapisuje tu numer pierwszego sektora, którego dotyczy rozkaz. Kontroler aktualizuje tę liczbę w miarę postępów w realizacji rozkazu. Odczyt rejestru dostarcza więc informacji o ostatnio opracowanym sektorze. Jeżeli bit 6 rejestru IFóh jest równy l, rejestr 1F3H zawiera składowe LBA0 - LBA7.
Rejestry numeru cylindra - LSB, MSB (lF4h, 1F5H)
Para rejestrów tworząca 10-bitową liczbę określającą numer cylindra. Wykorzystywane są wszystkie bity rejestru 1F4H oraz dwa najmłodsze bity rejestru 1F5H. Reszta bitów rejestru lF5h jest ignorowana. Dopuszczalne są więc cylindry o numerach z przedziału O - l 023. W rzeczywistości wiele napędów AT-BUS posiada więcej fizycznych cylindrów, ale układy kontrolera dokonują tzw. translacji tej liczby do właściwego przedziału kosztem wyimaginowanej modyfikacji liczby sektorów na ścieżkę i innej niż faktyczna liczby głowic.
Zawartość tych rejestrów jest modyfikowana przez kontroler zgodnie z aktualnym położeniem głowic i może być odczytywana przez CPU. Jeżeli bit 6 rejestru IFóh jest równy l, rejestry lF4h i lF5h zawieraj ą składowe LBA8 - LBA23.
Rejestr napęd/głowica (IFGh)
Rejestr pozwala określić, do którego z napędów adresowany jest bieżący rozkaz. Bit 6 stanowi przełącznik trybów ŁBA/CHS.
bit 7; bit 6; 1; bit 4; bit 3; bit 2; bit 1; bit 0;

bit 7-Równy 1.
bit 6-Przełącznik trybu adresowania ŁBA/CHS:
l - CHS,
O- ŁBA.
bit 7-Równy 1.
bit 7-Adres napędu:
l - Slave,
O - Master.
bity 3-0-Kodowany binarnie numer głowicy (jeżeli bit 6 = 7):
0000 - głowica O,
0001 - głowica l,
... ...
1111 - głowica 15.

Jeżeli bit 6 rejestru lF6h jest równy l, bity 3-0 zawieraj ą składowe LBA#24 - LBA#27.

bito bit 5
bit 4 bit 3
bit 2 bit l
bitO
Uwaga:
Wszystkie bity tego rejestru z wyjątkiem bitu 7 oraz wszystkie inne rejestry grupy AT-Task-File zawierają nieokreślone dane jak długo ustawiony jest bit 7 tego rejestru, co oznacza, że kontroler zajęty jest wykonywaniem rozkazu. W stanie tym wolno jednak zapisywać rejestr sterujący 3F6h.
l -
l -
l -
Możliwy dostęp do portu danych, dane gotowe do przekazania do Host.
Wystąpił błąd danych (możliwy do skorygowania kodem ECC), który został skorygowany.
Głowica czyta właśnie znacznik początku ścieżki (IDX, Index); trwa to ok. 300 ns.
l - Błąd, szczegóły w rejestrze błędów.
Rejestr rozkazów (lF7h)
CPU wpisuje do tego rejestru kod operacji (słowo rozkazowe). Lista standardowych rozkazów (zgodnych z ST412/506) obejmuje 8 pozycji. Standard IDE definiuje dodatkowe rozkazy, np. do obsługi funkcji oszczędnościowych.
Kontroler przechodzi do realizacji polecenia natychmiast po zapisaniu tego rejestru, więc wszystkie inne parametry (rejestry) muszą być ustawione wcześniej. Tabela 7.5 prezentuje rozkazy systemu IDE wraz z wymaganymi przez nie parametrami.

Tabela 7.5.

Rozkazy systemu IDE

Nazwa; Typ; Bity słowa rozkazowego:7, 6, 5, 4, 3, 2, 1; 0; Niezbędne parametry:FR 1Flh, SCR 1F2h SNR 1F3H, CYL 1F4h 1F5H, DHR 1F6h;

NOP; puste; 0, 0, 0, 0, 0, 0, 0, 0; -, -, -, -,
Recalibrate; puste; 0, 0, 0, 1, x, x; x, x; -, -, -, -, DRV
Read Sector; PIOR; 0 , 0, 1, 0, 0, 0, L, R; -, , , ,
Write Sector; PIOW; 0, 0, 1, 1, 0, 0, L, R; -, , , ,
Write Verify; PIOW; 0, 0, 1, 1, 1, 1, 0, 0; -, , , ,
Read Verify; PIOR; 0, 1, 0, 0, 0, 0, 0, R; -, , , ,
Format Track; PIOW; 0, 1, 0, 1, 0, 0, 0, 0; -, , -, ,
Seek; puste; 0, 1, 1, 1, x, x, x, x; -, -, , ,
Execute Drive Diagnostic; puste; 1, 0, 0, 1, 0, 0, 0, 0; -, -, -, -, M/S
Initialize Drive Parameters; puste; 1, 0, 0, 1, 0, 0, 0, 1; -, , -, -,
Read Multiple; PIOR; 1, 1, 0, 0, 0, 1, 0, 0; -, , , ,
Write Multiple; PIOW; 1, 1, 0, 0, 0, 1, 0, 1; -, , , ,
Read DMA; DMA; 1, 1, 0, 0, 1, 0, 0, R; -, , , ,
Write DMA; DMA; 1, 1, 0, 0, 1, 0, 1, R; -,, , , ,
Read Buffer; PIOR; 1, 1, 1, 0, 0, 1, 0, 0; -, -, -, -, DRV
Write Buffer; PIOW; 1, 1, 1, 0, 1, 0, 0, 0; -, -, -, -, DRV
Write Same; PIOW; 1, 1, 1, 0, 1, 0, 0, 1; , , , ,
Identify Drive; PIOR; 1, 1, 1, 0, 1, I, 0, 0; -, -, -, -, DRV
Set Features; puste; 1, 1, 1, 0, 1, 1, 1, 1; , -, -, -, DRV

DMA - transfer danych kanałem DMA.
PIoR - odczyt w trybie PIO.
PIOW - zapis w trybie PIO.
L O - odczytywane lub zapisywane są tylko dane.
1 - odczytywane lub zapisywane są dane + ECC (tak zwany długi rozkaz - Read Long, Write
Long).
R O - powtórki dozwolone (Retry Enable),
l - powtórki zabronione (Rrtry Disable).
x - stan bitu bez znaczenia (0/1).
- - zawartość rejestru jest ignorowana.
- rejestr niezbędny jako parametr.
DRV - w rejestrze DHR istotny jest jedynie numer dysku, reszta jest ignorowana.
M/S - rozkaz jest wykonywany przez oba dyski połączone w układzie Master/ Slave niezależnie od adresu dysku ustawionego w SDH.






















Alternatywny rejestr stanu (3F6h)

Rejestr ten zawiera informacje całkowicie zgodne ze stanem rejestru lF7h. Jedyna różnica polega na obsłudze przerwania IRQ14.
Rejestr stanu (lF7h) spełnia dodatkową funkcję w komunikacji między kontrolerem i PC. Kontroler dysku wyzwala żądanie przerwania IRQ14 przykładowo po odczytaniu sektora. Sygnałem potwierdzenia przyjęcia tego przerwania przez CPU jest właśnie odczytanie rejestru stanu lF7h, co stanowi jednocześnie dla kontrolera polecenie anulowania tego zgłoszenia.
Właściwości tych nie posiada alternatywny rejestr stanu. Jego odczytanie nie ma wpływu na żądanie obsługi IRQ.

Rejestr sterujący (3F6h)

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;

W rejestrze tym CPU może zapisywać dane precyzujące określone zachowanie kontrolera.
bity 7-3-Zarezerwowane.
bit 2-1 - Wymuszenie przejścia w stan Software-Reset, który będzie się utrzymywał aż do wyzerowania tego bitu przez CPU.
bit l-IRQ14:
O - aktywne,
1 - zablokowane (linia INTRQ na wysokim poziomie logicznym).
bitO-Zarezerwowane.

Ustawienie bitu 2 wprowadza podłączone napędy w stan biernego oczekiwania, w którym nie mogą być wykonywane żadne polecenia (napędy nie reagują). Dopiero wyzerowanie tego bitu przywraca stan gotowości.
Wyzerowanie bitu l uruchamia system wyzwalania przerwań. Napęd zgłasza przerwanie jeżeli wykonanie rozkazu przenosi się na inny sektor oraz przed wejściem w tzw. fazę końcową. Ustawienie bitu l blokuje mechanizm przerwań; jedyną formą komunikacji staje się wówczas odpytywanie (Polling), tzn. procesor sam sprawdza w pewnych odstępach czasowych rejestr stanu.


Rejestr adresu napędu (3F7h)
Odczyt tego rejestru pozwala określić, która z głowic i w którym napędzie jest w danym momencie aktywna.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;

bit 7-Nieokreślony.
bit 6-Bramka zapisu:
0 - otwarta (zapistrwa),
l - zamknięta.
bit 5-2=Aktualnie pracująca głowica (15 - numer głowicy):
0000 -głowica 15,
0001 -głowica 14,
0010 -głowica 13,
... ...
111 - głowica 0.
bit 1-Napęd 1:
0- aktywny,
l - oczekuje.
bit 0-Napęd 0:
0 - aktywny,
l - oczekuje.

Cykl programowania kontrolera
W cyklu programowania zintegrowanego kontrolera dysków twardych AT-BUS można wyróżnić pewne charakterystyczne
fazy: Faza przekazywania rozkazu CPU ładuje wszystkie wymagane rejestry pomocnicze i w ostatniej kolejności
rejestr rozkazowy kontrolera (rysunek 7.7). Faza przekazywania danych
W fazie tej odbywa się wymiana informacji między kontrolerem a pamięcią operacyjną. Oczywiście nie wszystkie
rozkazy posiadają tę fazę. Przebieg sygnałów sterujących na magistrali PC-BUS w trakcie realizacji wymiany danych
CPU 4- IDE przedstawiają wykresy na rysunkach 7.8. i 7.9.
Sygnał -IOCS16 generowany jest przez Host-Adapter wyłącznie po wykryciu żądania dostępu do 16-bitowego portu danych (OxlFO).






Faza końcowa
Kontroler melduje o zakończeniu operacji zgłoszeniem przerwania IRQ 14. Do dyspozycji CPU stoją również dane dodatkowe(umieszczone w rejestrach stanu i błędów) informujące o przebiegu realizacji ostatniego rozkazu.





Wymiana danych kanałem DMA miała miejsce w dyskach modeli XT, PC-AT posługuje się przerwaniami i portami ulokowanymi w przestrzeni adresowej I/O. Dane sektora przesyłane są w porcjach po 2 bajty, bowiem port danych jest 16-bitowy. Wyjątek stanowią kody ECC transportowane bajt po bajcie poprzez młodszą połowę portu danych.
Przerwanie IRQ 14 wyzwalane jest przez kontroler w następujących sytuacjach:
W rozkazie "Czytaj sektor", jeżeli został zapełniony bufor sektorowy kontrolera. W przeciwieństwie do wszystkich innych rozkazów nie jest jednak wyzwalane przerwanie przy przejściu do fazy końcowej. Można powiedzieć, że liczba sygnałów IRQ14 odpowiada tu liczbie przeczytanych sektorów.
W rozkazie "Pisz sektor", jeżeli kontroler oczekuje danych od CPU. Charakterystyczne jest przy tym, że pierwszy sektor przekazywany jest natychmiast po załadowaniu rejestru rozkazowego i nie towarzyszy mu żadne przerwanie. Każde wejście do fazy końcowej tego rozkazu wywołuje również przerwanie. Liczba impulsów przerwań odpowiada więc i tutaj w pełni ilości zapisanych sektorów.
We wszystkich innych rozkazach, przy wejściu w fazę końcową.
Procedura INT 76h obsługująca to przerwanie musi umieć odróżnić, czy kontroler dysponuje danymi, czy też na nie czeka lub czy chodzi tu o fazę końcową rozkazu. Informacja zawarta w rejestrach stanu i błędów kontrolera pozwala na jednoznaczną diagnozę. Odczyt rejestru stanu (lF7h) automatycznie kasuje żądanie przerwania. Jeżeli jakieś względy dyktują utrzymanie w mocy zgłoszenia, należy posłużyć się alternatywnym rejestrem stanu (3F6h).
Przykład realizacji rozkazu CZYTAJ SEKTOR
Rozkaz czyta od l do 256 sektorów. Możliwy jest odczyt danych wraz z kodami ECC lub ich pominięcie. Po przyjęciu rozkazu ustawiany jest bit 7 (kontroler zajęty) rejestru stanu (lF7h) i kontroler przystępuje do pozycjonowania głowic i odczytu pierwszego sektora. Po odczytaniu sektora nastąpi ustawienie bitu 3 rejestru stanu (dane gotowe) oraz zgłoszenie przerwania IRQ14. Procedura obsługi odbiera dane z bufora sektorowego kontrolera.
Jeżeli zaprogramowany został odczyt większej liczby sektorów, ustawiany jest ponownie bit 7, a zerowany bit 3 i cykl powtarza się.
Rejestry grupy AT-Task-File podają stale parametry aktualnie przerabianego sektora, tak więc wystąpienie błędu, który przerwie wykonywanie rozkazu, można zawsze odnieść do wskazywanego sektora. Jeżeli błąd w polu danych uda się skorygować za pomocą kodów ECC, wykonywanie rozkazu jest kontynuowane i jedynie fakt ustawienia bitu 2 rejestru stanu sygnalizuje zaistniały problem.
Ustawienie bitu l w kodzie rozkazu (patrz poniżej) oznacza tzw. długi odczyt. Oprócz 512 bajtów z pola danych, do portu 1F0h wyprowadzane są również bajty kodu ECC. Kontroler nie przeprowadza w tym przypadku ani kontroli, ani korekcji danych sektora. Dane przekazywane są w formie 2-bajtowych słów (port 1F0h jest 16-bitowy), a kody ECC po jednym bajcie, młodszą połową portu.



Faza przekazywania rozkazu

Do rejestru l F2h ładowana jest liczba sektorów przeznaczonych do odczytu. Uwaga: 0 oznacza 256 sektorów.
Rejestr lF3h ładowany jest numerem pierwszego (ewentualnie jedynego) sektora. W rejestrach lF5h (MSB) i lF4h (LSB) ustawiany jest cylinder początkowy.

MSB(lF4h):puste; puste; puste; puste; puste; puste; bitl; bit0; LSB(lF5h):bit7; bit6; bit5; bit4; bit3; bit2; bitl; bit0;

1- MSB + bity 7 - 0 LSB dają 10-bitowy numer cylindra.
-Numer głowicy i adres napędu umieszczany jest w rejestrze 1F6h.

1; 1; 0; bit4; bit3; bit2; bitl; bit0;

bity 7-5-Sygnatura 101.
bit 4-Napęd:
0 -Master,
1 -Slave.
bity 3-0-Numer głowicy (binarnie):
0000 - głowica 0,
0001 - głowica l,
... ...
1111 - głowica 15.

Jako ostatni ładowany jest rejestr rozkazowy lF7h.

0; 0; 1; 0; 0; 0; 0; bitl; bit0;

bity 7-2-Sygnatura rozkazu 001000.
bit l-Długi odczyt:
O - dane + ECC,
l - tylko dane.
bit O-Mechanizm automatycznego powtarzania:
O - wyłączony,
l - aktywny.

Faza przekazywania danych

W fazie tej procedura obsługi przerwania IRQ14 odbiera dane od kontrolera.

Faza końcowa

Kontroler umieszcza w swoich rejestrach następujące informacje:
Rejestr błędów (lFlh):

bit7; bit6; bit5; bit4; bit3; bit2; bitl; bit0;

bit 7-l - nie znaleziono znacznika DAM.
bit 6-Zarezerwowany.
bit 5-l - przerwano wykonywanie rozkazu.
bit 4-Zarezerwowany.
bit 3-l - nie znaleziono metryki ID.
bit 2-Zarezerwowany.
bit l-l - błąd niemożliwy do skorygowania przez ECC.
bit 0- - adresowany sektor jest oznaczony jako zły.


Rejestr liczby sektorów (lF2h). W przypadku przerwania wykonywania rozkazu rejestr ten zawiera liczbę pozostałych jeszcze do odczytu sektorów. W przeciwnym razie równy jest zeru.
Rejestry lF3h, lF4h, lF5h, l F6h wskazują na ostatnio przeczytany sektor.

Rejestr stanu (1F7h):

bit7; bit6; bit5; bit4; bit3; bit2; bitl; bit0;

bit 7-l - napęd zajęty wykonywaniem rozkazu (Busy).
bit 6-l - napęd gotów (Ready).
bity 5-4-Zarezerwowane.
bit 3=l - dane mogą być odebrane od kontrolera.
bit 2- l - w polu danych wykryto błąd, zlikwidowany kodem ECC.
bit l-Zarezerwowane.
bit 0-l - rejestr błędów zawiera informacje dodatkowe.


Przykład realizacji rozkazu samoidentyfikacji dysku (Device Identify)

Rozkaz odczytuje 512 bajtów informacji o dysku. Po przyjęciu rozkazu ustawiany jest bit 7 (kontroler zajęty) rejestru stanu (lF7h) i przygotowywana jest transmisja 512 bajtowego bloku danych. Następnie ustawiany jest bit 3 rejestru stanu (dane gotowe) oraz zgłoszenie przerwania IRQ14. Procedura obsługi odbiera dane z bufora sektorowego kontrolera.

Faza przekazywania rozkazu

Numer napędu umieszczany jest w rejestrze 1F6h.



bity 7-5- Bez znaczenia.
bit 4- Napęd:
O - Master,
l - Slave.
bity 3-0-Bez znaczenia.

Ładowany jest rejestr rozkazowy lF7h.


1; 1; 1; 0; 1; 1; 0; 0;

bity 7-0-Sygnatura rozkazu 11101100.

Faza przekazywania danych

W fazie tej procedura obsługi przerwania IRQ14 odbiera dane od kontrolera. 512-bąj-towy blok danych o dysku ma strukturę przedstawioną w tabeli 7.6.


Tabela 7.6.

Struktura bloku informacyjnego

Słowo; Bit; Opis;

0; 15; 0 - zarezerwowane dla nośników niemagnetycznych
0; 14; 1 - między sektorami wymagana jest szczelina kompensująca wahania prędkości obrotowej dysku
0; 13; 1 - dysk ma możliwość przydzielania ścieżki zapasowej
0; 12; 1 - dysk ma możliwość przydzielania zapasowego sektora
0; 11; 1 - tolerancja prędkości obrotowej powyżej 0,5 %
0; 10; 1 - szybkość transferu danych powyżej 10 Mb/s
0; 9; 1 - szybkość transferu danych od 5 Mb/s do 1 0 Mb/s
0; 8; 1 - szybkość transferu danych poniżej 5 Mb/s
0; 7; 1 - nośnik magnetyczny wymienny
0; 6; 1 - dysk twardy
0; 5; 1 - zaimplementowana kontrola silnika napędu
0; 4; 1 - czas pozycjonowania głowic poniżej 15 ms
0; 3; 1 - system kodowania danych inny niż MFM
0; 2; 1 - Soft Sector
0; 1; 1 - Hard Sector
0; 0; Zarezerwowany, powinien mieć wartość 0
1; puste; Logiczna liczba cylindrów zgodnie ze standardową translacją proponowaną przez urządzenie. Zakres wartości od 1 do 65 535.
2; puste; Zarezerwowany, powinno być 0.
3; puste; Logiczna liczba głowic zgodnie ze standardową translacją proponowaną przez urządzenie. Zakres wartości od 1 do 16.
4; puste; Liczba bajtów na ścieżkę (dysk nie sformatowany).
5; puste; Liczba bajtów na sektor (dysk nie sformatowany).
6; puste; Logiczna liczba sektorów na logicznej ścieżce zgodnie z translacją standardową. Zakres wartości 1 do 63.
7-9; puste; Zarezerwowane.
10- 19; puste; Numer seryjny dysku.
20; puste; Typ bufora: (0000h - bufor nie jest określony, 0001 h - bufor nie może równocześnie transferować w obydwu kierunkach dysku, 0002h - bufor może równocześnie transferować w obydwu kierunkach. 0003 h - bufor może równocześnie transferować w obydwu kierunkach i stosować pamięć podręczną przy odczycie. 0004h - FFFFh - zarezerwowane.) - wszystko w nawiasie dotyczy bufora.
21; puste; Rozmiar bufora podany w 512-bąjtowych blokach.
22; puste; Liczba bajtów kodu ECC dostępna w "długich" rozkazach.
23-26; puste; Numer wersji modelu dysku.
27-46; puste; Nazwa modelu dysku (40 znaków ASCII).
47; 15-8; Zarezerwowane.
47; 7-0; 00h - komendy Read/Write Multiple Sector nie są zaimplementowane. xxh - xx oznacza maksymalną liczbę sektorów, która może być transferowana (podczas jednego przerwania) przez komendy Read/Write Multiple Sector.
48; puste; 0000h - dysk nie może pracować w trybie 32-bitowym. 0001 h - dysk może pracować w trybie 32-bitowym.
49; 15- 12; Zarezerwowane.
49; 11; 1 - kontrola przepływu danych sygnałem IORDY jest obsługiwana.
49; 10; 1 - kontrola przepływu danych sygnałem IORDY może być wyłączona.
49; 9; 1 - dysk obsługuje tryb LBA.
49; 8; 1 - dysk może przesyłać dane w trybach DMA.
49 7-0; Zarezerwowane.
50; puste; Zarezerwowane.
51; 15-8; Czas trwania cyklu przesyłania danych w trybie P1O [ns] - wartość 0180h oznacza przykładowo, że dysk może pracować w trybie PIO 3 (patrz rysunek 7 13. - T#0).
51; 7-0; Zarezerwowane.
52; 15-8; Czas trwania cyklu przesyłania danych w trybie DMA [ns] (patrz rysunek 7 15. - T#0).
52; 7-0; Zarezerwowane.
53; 15-2; Zarezerwowane.
53; 1; 1 - dane zawarte w słowach 64 - 65 są dostępne.
53; 0; 1 - dane zawarte w słowach 54 - 58 są dostępne.
54; puste; Bieżąca liczba cylindrów ustawiona komendą Initialize Drive Parameters (jeżeli nie jest używana domyślna geometria napędu powinien być ustawiony bit 0 w słowie 53).
55; puste; Bieżąca liczba głowic ustawiona komendą Initialize Drive Parameters (jeżeli nie jest używana domyślna geometria napędu powinien być ustawiony bit 0 w słowie 53).
56; puste; Bieżąca liczba sektorów na ścieżkę ustawiona komendą Initialize Drive Parameters (jeżeli nie jest używana domyślna geometria napędu powinien być ustawiony bit 0 w słowie 53).
57-58; puste; Bieżąca pojemność dysku w sektorach (jeżeli nie jest używana domyślna geometria napędu powinien być ustawiony bit 0 w słowie 53).
59; 15-9; Zarezerwowane.
59; 8; 1 - komendy Read/Write Multiple sązaimplementowane.
59; 7-0; Maksymalna liczba sektorów, która może być transferowana podczas jednego przerwania przez komendy Read/Write Multiple.
60-61; puste; Tryb ŁBA - liczba sektorów na dysku; pozostałe tryby - 0.
62; 15-8 Numer aktywnego trybu Singleword-DMA.
62; 7-0; Nnumery obsługiwanych przez dysk trybów Singleword-DMA (bit 0 - tryb 0. bit 1 - tryb 1. ...).
63; 15-8; Numer aktywnego trybu Multiword-DMA.
63; 7-0; Numery obsługiwanych przez dysk trybów Multiword-DMA (bit 0 - tryb 0. bit 1 - tryb 1. ...).
64; puste; Dysk może pracować w trybach PIO z kontrolą przepływu danych (tryb PIO 3 i wyższe) - ustawiony bit 0 oznacza, że dysk obsługuje tryb PIO 3.
65; puste; Minimalny czas trwania cyklu przesyłania danych w trybie Multiword-DMA [ns] - (patrz rysunek 7. 1 5. - T0)
66; puste; Zalecany przez producenta czas trwania cyklu przesyłania danych w trybie Multiword-DMA [ns] - (patrz rysunek 7.15. - T0).
67; puste; Minimalny czas trwania cyklu przesyłania danych w trybie PIO bez kontroli przepływu danych [ns] - (patrz rysunek 7.13. - T0).
68; puste; Minimalny czas trwania cyklu przesyłania danych w trybie PIO z kontrolą przepływu danych [ns] - (patrz rysunek 7. 1 3. - T0).
69 - 255; puste; Zarezerwowane.


Faza końcowa

Kontroler umieszcza w swoich rejestrach następujące informacje:

Rejestr stanu (l F7h):

bit7; bit6; bit5; bit4; bit3; bit2; bitl; bit0;

bit 7-l - napęd zajęty wykonywaniem rozkazu (Busy).
bit 6-1 - napęd gotów (Ready).
bity 5-4- Zarezerwowane.
bit 3- l - dane mogą być odebrane od kontrolera.
bit 2
bit l- Zarezerwowane.
bit 0













































































Funkcje oszczędnościowe
Nowsze modele dysków twardych standardu IDE (AT-BUS) wyposażane są w układy ograniczające zużycie mocy. Początkowo dotyczyło to wyłącznie dysków małych rozmiarów (l" i 2.5") przeznaczonych do komputerów przenośnych, gdzie wartość poboru prądu z akumulatorów odgrywa kluczową rolę. W chwili obecnej funkcje oszczędnościowe należą do standardowego wyposażenia każdego dysku IDE.
W skład systemu ograniczania (Power Saving) wchodzi warstwa automatyczna (Automatic Power Reduction) oraz zestaw specjalnych rozkazów systemowych, wykonywanych tak, jak każde inne polecenie zwracające się do rejestrów AT-Task-File.
System automatyczny
Mechanizm automatycznej redukcji mocyjesttrójpoziomowy i zawiera:
Standardowy poziom Idle.
Poziom Idle_l.
Poziom Idle_2.
Jednostka dyskowa, która kończy wykonywanie rozkazu (a żaden nowy jeszcze nie nadszedł) wpada automatycznie w stan Idle. Jeżeli w przeciągu kolejnych 20 - 50 ms Host (PC) nadal nie przesyła żadnego polecenia, dysk przechodzi automatycznie w tryb Idle_l. Wysokość tego pierwszego opóźnienia wynika z czasu wykonania przez procesor kontrolera fragmentu mikrokodu dotyczącego operacji przełączenia.
Po wejściu w fazę Idle_l uruchamiany jest licznik czasu (Idle 2 Timer). Zwykle nastawiony jest on na 2 sekundy, ale wartość tą można zmienić modyfikując odpowiednią pozycję w sektorze konfiguracyjnym dysku. Jeżeli upłynął ten czas, a Host nadal nie wysłał rozkazu, układ przesuwany jest na poziom Idle_2.
W trybie Idle nie są realizowane żadne funkcje oszczędnościowe. Wszystkie układy scalone zasilane są w całości, a dysk wiruje z pełną prędkością.
Poziom Idle_l oznacza przełączenie niektórych układów w stan niskiego poboru mocy. W stanie tym dysk zdolny jest do natychmiastowej reakcji na rozkazy.
W fazie Idle_2 wykonuje się wszystkie działania z fazy poprzedniej, a dodatkowo następuje całkowite odcięcie napięcia zasilającego +12 V oraz zablokowanie separatora danych. Okres powrotu do poziomu Idle (opóźnienie reakcji) wydłuża się w tym przypadku do czasu potrzebnego na odzyskanie kontroli nad serwomechanizmem, co wyraża się czasem dostępu do sektora dysku.
Zysk energii osiągany przez ten trój poziomowy system automatycznej redukcji obciążenia zależy od przyjętej wartości czasu Idle 2 Timer oraz od stopnia wykorzystania napędu. Jeżeli rozkazy nadchodzą częściej niż co 2 s - dysk w ogóle nie zdąży wejść w fazę Idle_2.
Rozkazy specjalne
Poniższe rozkazy mogą wprowadzać dysk w jeden z opisanych powyżej poziomów jałowych (Idle), ale i także w dodatkowe stany: czuwania (Stand By) i uśpienia (Sleep Power Modę).
W stanie czuwania interfejs dysku jest aktywny i zdolny do przyjęcia i opracowania każdego z implementowanych przez siebie rozkazów IDE. Na odpowiedź trzeba jednak czekać ok. 10 s, bowiem tyle potrzeba na ponowne rozpędzenie dysku do obrotów nominalnych (w stanie czuwania dysk wiruje, ale z mniejszą prędkością).
Stan uśpienia napędu można osiągnąć jedynie przez rozkazy specjalne. Dysk uśpiony zatrzymuje silnik i blokuje swój interfejs, czyli nie reaguje na żadne rozkazy. Wyjście z tego trybu osiągnąć można jedynie poprzez wywołanie jednej z form funkcji Reset:
Software Reset,
AT-Bus Reset,
Power On Reset.
Do grupy rozkazów specjalnych zarządzających gospodarką energetyczną dysku zaliczamy 6 poleceń zebranych w tabeli 7.7.
Rozkaz Stand By Immediate
Kod rozkazu IDE: OxEOh lub Ox94h.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH1).
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
Realizacja:
Ustawienie bitu BSY 2.
Wejście w tryb Stand By Power Modę.
Wyzerowanie bitu BSY.
Wygenerowanie przerwania IRQ.
Tabela 7.7

Rozkazy specjalne IDE

Nazwa rozkazu; Bity słowa rozkazowego:7, 6, 5, 4, 3, 2, 1, 0; Niezbędne parametry: FR; SCR, SNR; CYL; SDH;
Stand By Immediate; 1, 0, 0, 1, 0, 1, 0, 0; -, -, -, -; DRV
Idle Immediate; 1, 0, 0, 1, 0, 1, 0, 1; -, -, -, -; DRV
Stand By With Timer; 1, 0, 0, 1, 0, 1, 1, 0; -, , -, -; DRV
Idle With Timer; 1, 0, 0, 1, 0, 1, 1, 1; -, , -, -; DRV
Check Power Mode; 1, 0, 0, 1, 1, 0, 0, 0; -, , -, -; DRV
Sleep; 1, 0, 0, 1, 1, 0, 0, 1; -, -, -, -; DRV
Stand By Immediate; 1, 1, 1, 0, 0, 0, 0, 0; -, -, -, -; DRV
Idle Immediate; 1, 1, 1, 0, 0, 0, 0, 1; -, -, -, -; DRV
Stand By With Timer; 1, 1, 1, 0, 0, 0, 1, 0; -, , -, -; DRV
Idle With Timer; 1, 1, 1, 0, 0, 0, 1, I; -, , -, -; DRV
Check Power Mode; 1, 1, 1, 0, 0, 1, 0, 1; -, , -, -; DRV
Sleep; 1, 1, 1, 0, 0, 1, 1, 0; -, -, -, -; DRV

- - zawartość rejestru jest ignorowana.
- rejestr niezbędny jako parametr.
DRV - w rejestrze SDH istotny jest jedynie numer dysku, reszta jest ignorowana.
.


















Rozkaz Idle Immediate
Kod rozkazu IDE: 0xElh lub 0x95h.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
Realizacja:
Ustawienie bitu BSY.
Wejście w tryb ldle_l Power Modę.
Wyzerowanie bitu BSY.
Wygenerowanie przerwania IRQ.
Rozkaz Stand By With Timer
Kod rozkazu IDE: OxE2h lub Ox96h.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Licznik czasu: w rejestrze SCR1).
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
Realizacja:
Ustawienie bitu BSY.
Wejście w tryb Stand By Power Modę.
Wyzerowanie bitu BSY.
Wygenerowanie przerwania IRQ.
Wartość czasu w rejestrze SCR podawana jest w jednostkach 5-sekundowych. Akceptowane są jednak tylko wartości z przedziału OxOCh - OxC8h, co odpowiada opóźnieniom od 60 s do 17 min.
Jeżeli licznik nastawiony został na zero, dysk wchodzi natychmiast w fazę Stand By Power Modę. Realizowany więc jest de facto rozkaz OxEOh.
Dysk wejdzie oczywiście również w ten tryb jeżeli upłynie czas zadeklarowany w liczniku. Czas odliczany jest od momentu zakończenia wykonywania ostatniego z rozkazów, który pozostawił dysk w trybie Idle Power Modę.
Rozkaz Idle With Timer
Kod rozkazu IDE: OxE3h lub Ox97h.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Licznik czasu: w rejestrze SCR.
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
Realizacja:
Ustawienie bitu BSY.
Wejście w tryb Idle_l Power Modę.
Wyzerowanie bitu BSY.
Wygenerowanie przerwania IRQ.
Wartość czasu w rejestrze SCR podawana jest w jednostkach 5-sekundowych. Akceptowane są jednak tylko wartości z przedziału OxOCh - OxC8h, co odpowiada opóźnieniom od 60 s do 17 min. Jeżeli licznik nastawiony został na zero, rozkaz jest ignorowany.
Dysk wchodzi w stan Idle i przebywa w nim tak długo aż minie czas nastawiony w SCR. Wówczas dysk przechodzi w stan Stand By. Czas odliczany jest od momentu wydania
rozkazu 0xE3h lub każdego innego rozkazu, który pozostawił dysk w trybie Idle Power Modę.
Rozkaz Check Power Modę
Kod rozkazu IDE: 0xE5h lub 0x98h.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
Realizacja:
Jeżeli dysk znajduje się w stanie Stand By:
ustawienie bitu BSY,
wyzerowanie rejestru SCR (SCR = 0x00h),
wyzerowanie bitu BSY,
wygenerowanie przerwania IRQ.
Jeżeli dysk znajduje się w stanie Idle:
ustawienie bitu BSY,
ustawienie rejestru SCR (SCR = OxFFh),
wyzerowanie bitu BSY,
wygenerowanie przerwania IRQ.
W rejestrze CLR l odczytać można też stan licznika czasu. Jeżeli zwracana jest wartość zero, timer nie jest aktywny.
Rozkaz Sleep
Kod rozkazu IDE: 0xE6h lub 0x99h.
Argumenty: numer dysku (Master/Slave), bit 4 rejestru SDH.
Stan innych bitów SDH i rejestrów AT-Task-File: bez znaczenia.
Realizacja:
Wyłączenie silnika.
Wyzerowanie bitu BSY.
Wygenerowanie przerwania IRQ.
Deaktywacja złącza IDE.
Wartość czasu w rejestrze SCR podawana jest w jednostkach 5-sekundowych. Akceptowane są jednak tylko wartości z przedziału 0x0Ch - 0xC8h, co odpowiada opóźnieniom od 60 s do 17 min.
Jeżeli licznik nastawiony został na zero, dysk wchodzi natychmiast w fazę Stand By Power Modę. Realizowany więc jest de facto rozkaz 0xE0h.
Dysk wejdzie oczywiście również w ten tryb skoro tylko upłynie czas zadeklarowany w liczniku. Czas odliczany jest od momentu zakończenia wykonywania ostatniego z rozkazów, który pozostawił dysk w trybie Idle Power Mode.
Standard EIDE
Standard AT-BUS (IDE) zdominował bez wątpienia na długi czas rynek komputerów klasy PC. Jednak w miarę rozwoju technologii, coraz dotkliwiej dawały znać o sobie następujące główne ograniczenia tego systemu:
limit pojemności (do 504 MB),
niezbyt duża szybkość transmisji danych,
możliwość podłączenia dwóch dysków twardych,
brak możliwości podłączenia innych urządzeń niż dyski twarde.
Pierwsze dyski twarde instalowane w PC miały pojemność 10 MB, a produkowane obecnie przekroczyły granicę 10 GB. Programiści tworzący w 1992 roku BIOS komputera IBM-XT nie przypuszczali chyba w najskrytszych snach, by ktokolwiek próbował przez zdefiniowane przez nich złącze komunikować się z urządzeniami o pojemności przekraczające 1000-krotnie wartość graniczną całego systemu. Stały wzrost pojemności produkowanych dysków skutecznie kompensował przyrost zapotrzebowania na pamięć masową. Wydawało się, iż zakres 500 MB zaspokoi na dłuższy czas wszelkie wymagania. W momencie, gdy rozmiary samego systemu operacyjnego sięgnęły kilkudziesięciu MB, ograniczenia zaczęły być na tyle dotkliwe, że zmusiły do nowych poszukiwań.
Zgodnie z przyjętymi założeniami architektury PC XT, wymiana danych z dyskami twardymi miała przebiegać w tempie nie większym niż około 3 MB/s. Prędkość ta znacznie przewyższała możliwości pierwszych dysków twardych. Dziś wiele z pośród nich przekroczyło granicę 10 MB/s. Pojawiły się nowe urządzenia pamięci masowej takie jak CD-ROM i napędy taśm. Dostęp do nich był naturalnie wygodniejszy poprzez magistralę SCSI ale rynek zaczął wywierać nacisk na producentów, by zintegrować ich obsługę w dobrze już zadomowionym wśród użytkowników systemie IDE.
Opracowanie nowoczesnego i na miarę czasu standardu, zdolnego do obsługi szybkich urządzeń o astronomicznych pojemnościach, nie stanowiło by w chwili obecnej najmniejszej trudności. Problem polega na konieczności wkomponowania takiego systemu w rzeczywisty świat użytkowników PC. Każdy oczekuje, by nowe elementy dały się
zintegrować w starej architekturze. Potrzeba zagwarantowania "zgodności w dół" napiętnowała cały dotychczasowy rozwój techniki PC i nie ogranicza się niestety wyłącznie do zagadnień związanych z dyskami i ich magistralami.
Z konieczności więc, stary i wysłużony system IDE podlega coraz to nowym adaptacjom. Jego kolejne modyfikacje, ukrywające się pod wspólną nazwą EIDE (Enhanced IDE} mają za zadanie usunięcie wspomnianych ograniczeń, zapewniając zgodność ze standardem IDE, tak iż nawet najnowocześniejsze urządzenia (ULTRA-DMA/66) pracują poprawnie podłączone do starego kontrolera IDE. Poprawna praca nie oznacza bynajmniej wykorzystania pełnych możliwości systemu: z dysku 8 GB system widzi jedynie ułamek pojemności (540 MB) a maksymalna prędkość transmisji przekracza nieznacznie wartość 3 MB/s. Również "stare" dyski IDE muszą współpracować poprawnie z najnowszym Host-Adapterem implementującym aktualne rozszerzenia EIDE.
Normalizacją grupy zagadnień związanych z interfejsem EIDE zajmuje się komitet techniczny T13 należący do grupy NCITS (National Committee on Information Technology Standards}. Zespół ten podlega amerykańskiemu komitetowi do spraw normalizacji ANSI (American National Standards Institute). Prace tego gremium dostępne są również w internecie pod adresem www.ncits.org.
Oto krótki rys historyczny obrazujący przekształcenia i rozwój kolejnych faz normalizacji standardu ATA: od IDE do aktualnie uzgadnianej wersji ATA-5.
IDE (ATA) - rok wprowadzenia 1981. Punkt wyjściowy do dalszych rozszerzeń. Oferowane podstawowe funkcje standardu IDE, maksymalna prędkość transmisji w zakresie 4 MB/s w oparciu o mechanizm PIO (Tryb-1). Liczba urządzeń ograniczona do dwóch a maksymalna długość przewodu połączeniowego nie przekraczająca 46 cm (w oryginale specyfikacji 18").
ATA-2 (wprowadzone w roku 1994). Nowe typy transmisji w systemie PIO (Type-3 oraz Type-4). Transmisja w tych trybach posługuje się sprzętowym mechanizmem regulującym prędkość przekazu (sygnał IORDY). Dzięki temu dysk może w miarę potrzeby spowalniać pracę magistrali. Konieczność wprowadzenia mechanizmu regulacji wynikła w momencie wprowadzenia transmisji w szybkim trybie PIO-4, gdzie pojawiło się po raz pierwszy niebezpieczeństwo "przysypania" dysku danymi przez kontroler. Standard ATA nie przewidywał takiej sytuacji. Zdefiniowane zostały ponadto tryby DMA (Type-0, Type-1 oraz Type-2). Maksymalna prędkość transmisji (PIO-4 i DMA-2) przekracza już 16 MB/s. Specyfikacja ATA-2 nie zmienia ani dopuszczalnej liczba urządzeń ani maksymalnej długości przewodu połączeniowego. Zostały natomiast zaimplementowane funkcje wspierające mechanizmy Pług & Play.
ATA-3 (rok 1996). Poprawki ograniczające się głównie do implementacji trybu gwarantującego pewną formę zabezpieczenia dostępu do danych (Secure Modę) oraz systemu nadzoru i samo diagnostyki S.M.A.R.T (Self Monitoring Analysis and Reporting Technology).
ATA/ATAPI-4 (w roku 1997). Maksymalna prędkość transmisji podnosi się do poziomu 33 MB/s dzięki wprowadzeniu trybów Ultra-DMA. Obsługa do czterech
urządzeń, po dwa na kabel, przy czym długość kabla pozostaje bez zmian. Definicja współpracy z urządzeniami o fizycznej organizacji danych innych niż dyski twarde (Streamer i CD-ROM). Dla potrzeb tych urządzeń powstaje nowy logiczny interfejs określany mianem ATAPI (AT Attachment Packet Interface). Składają się na niego nowe funkcje, tzw. pakietowe, które przekazują swoje obszerne parametry w specjalnych blokach (pakietach).
ATA/ATAPI-5 (aktualnie w opracowaniu).
Zwiększenie zakresu pojemności dysków
Zakup nowego dysku twardego i próba jego integracji w ramach posiadanego systemu nie zawsze kończy się sukcesem. To czy dany dysk będzie poprawnie pracował w konkretnym komputerze zależy od kilku czynników, z których większość jest odzwierciedleniem historii rozwoju systemów operacyjnych, programów BIOS oraz interfejsów dysków. Aby poznać przyczyny ewentualnych niepowodzeń i móc im przeciwdziałać trzeba prześledzić ten rozwój.
Całe zagadnienie sprowadza się zawsze do jednego punktu centralnego: możliwości objęcia (zaadresowania) całej dostępnej przestrzeni dyskowej, czyli jednoznacznego dostępu do każdego pojedynczego sektora.
Przemysł wprowadzając na rynek dyski o coraz to większych rozmiarach stale podnosi poprzeczkę dla systemów operacyjnych. Na omawianej drodze rozwoju występuje kilka charakterystycznych punktów (nazywanych często barierami), które trzeba kolejno omijać.
Przed przystąpieniem do bardziej szczegółowych rozważań warto zwrócić uwagę na niejednorodny sposób oznaczania pojemności dysków. W użyciu są mianowicie dwie jednostki: binarna i dziesiętna
(W książce tej używane sąjednostki binarne.).

Jednostka; Notacja dziesiętna; Notacja binarna;

1 MB 10^6 ( 1 000 000) bajtów; 2^20(1 048 576) bajtów;
1 GB; 10^99(1 000 000 000) bajtów; 2^30(1 073741 824) bajtów;




Niestety nie jest jednoznacznie unonnowane, które z jednostek należy używać ani też nie ma obowiązku informować o tym, które ma się na myśli. Prowadzi to do szeregu nieporozumień, zwłaszcza wśród niedoświadczonych posiadaczy komputerów. Nalepka producenta na dysku informuje o pojemności w jednostkach dziesiętnych, co jest o tyle zrozumiałe, iż zawsze to lepiej wygląda (przynajmniej o 5 - 7%) a poza tym konkurencja też tak robi. Prawie wszystkie nowe wersje programów konfiguracyjnych (SETUP) wyrażają wymiary w jednostkach dziesiętnych a stare różnie. W kolejnej fazie instalowania użytkownik musi sięgnąć do programu fdisk. I tutaj pierwsza niespodzianka: pojemności

ubywa (fdisk wypowiada się w jednostkach binarnych). Zdezorientowany człowiek szuka poparcia w innych programach. Tutaj znowu ulga, bo chkdsk "widzi" pełną pojemność (jednostki dziesiętne). W kilka chwil potem spotyka się z informacją jakiegoś innego programu (na przykład File Manager Win.3.11 pracuje w jednostkach binarnych) i wartość jest znów zaniżona.
Bariera 504 MB
Omawiana tu bariera nie wynika, wbrew powszechnej opinii, z ograniczeń wbudowanych w system IDE. Może on jako taki obsługiwać teoretycznie dyski o rozmiarach dobrze powyżej 100 GB. Ograniczenie 504 MB powstaje na styku funkcjonowania dwóch niedopasowanych do siebie systemów i aby je zrozumieć, trzeba wgłębić się nieco w mechanizm dostępu do dysków.
Aplikacje (programy użytkownika) chcące czytać lub pisać na dysku odwołują się do systemu operacyjnego. Jeżeli systemem tym jest MS-DOS, operacje dyskowe realizowane są za pośrednictwem przerwania INT13h BIOS. Stanowi ono po prostu kanał komunikacyjny łączący system operacyjny z wyspecjalizowanymi procedurami zapisanymi w pamięci stałej komputera. To właśnie one są bezpośrednimi wykonawcami operacji zleconych przez MS-DOS.
Ogólny schemat przekazywania takich poleceń korzystając z przerwania INT13 można przedstawić w następujący sposób:
Do rejestru AH ładowany jest numer identyfikujący żądaną funkcję, np. 0x0Ah oznacza czytanie sektorów.
Para rejestrów ES:BX musi zawierać adres przygotowanego wcześniej obszaru pamięci, który jest niezbędny w niektórych rozkazach, np. tutaj zostaną przesłane odczytane z dysku dane.
Rejestr AL określa liczbę sektorów, których dotyczy rozkaz.
W DL trzeba umieścić numer dysku do którego chcemy się zwrócić.
DH podaje numer głowicy dysku (identyfikacja strony dyskowej).
Para CL-CH określa numer cylindra dyskowego i numer sektora na ścieżce zgodnie z rysunkiem 7.11.
Procesor wyzwala teraz przerwanie INT13h i sterowanie przejmuje BIOS, który w oparciu o przekazane parametry kontaktuje się bezpośrednio z kontrolerem dysku.
Jeżeli procedury BIOS stwierdziły wystąpienie błędu uniemożliwiającego wykonanie operacji trzeba o tym poinformować MS-DOS. Sygnalizacja błędu odbywa się poprzez ustawienie flagi CF. Rejestr AH zawiera wtedy jednobajtowy kod błędu podający bliższe określenie przyczyn (np. AH = 0x04h: nie znaleziono żądanego sektora).
Powyższy "klasyczny" schemat adresowania nosi nazwę CHS (Cylinder/Head/Sector) bowiem poszczególne parametry (numer cylindra, strona powierzchni dyskowej i numer sektora na ścieżce) przekazywane są niezależnie od siebie, a ponadto podkreślają fizyczny związek z rzeczywistą budową dysku i organizacją danych. Przyjrzymy się teraz nieco bliżej elementom złącza INTISh.
Przekazywanie parametrów CHS w powyższej formie nakłada następujące ograniczenia:
Maksymalna liczba cylindrów (C) wynosi 2^10, czyli l 024 (numerowanych od O do l 023)
Maksymalna liczba głowic (H) nie przekracza 2^8, to jest 256 (numerowane od O do 255)
Maksymalna liczba sektorów na ścieżce (S) sięga 2^6 - l, czyli 63 (numeracja od l do 63)
Największa liczba sektorów, którą można w ten sposób zaadresować wynosi więc 16515 072 (l 024 x 63 x 256) co przy rozmiarach sektora 512 B daje pojemność 8 455 716 864 bajtów (7,9 GB).
Parametry podawane w rejestrach DX i CX przepisywane są (w ramach obsługi przerwania INT13h) do odpowiednich portów CBR kontrolera IDE tak jak to zostało schematycznie przedstawione na rysunku 7.12.
Cztery młodsze bity rejestru DH przechodzą do portu 0x1 F6h (Drive/Head Register). Numer cylindra umieszczany jest w parze portów 0xlF4h/0xlF5h (Cylinder Low Register/Cylinder High Register), a sześć młodszych bitów CH przenoszonych jest do portu Ox l F3h (Sector Number Register).
Maksymalna liczba sektorów, którą może przyjąć zestaw rejestrów CBR wynosi więc 267 386 880 (65 536 x 255 x 16) bowiem wyznaczona jest według następującej zależności:
Maksymalna liczba cylindrów (c0 - c 15) równa jest 2^16, czyli 65 536.
Maksymalna liczba głowic (a0 - a3) wynosi 2^4, czyli 16.
Maksymalna liczba sektorów (b0 - b7) sięga 20^8 - l, czyli 255.
Widać więc, iż sam system IDE może obsłużyć bez trudu dyski o rozmiarach do 127 GB, a złącze komunikacyjne przerwania INT13h do 7,9 GB. Maksymalna pojemność jaką można zaadresować stosując oba te mechanizmy jednocześnie jest jednak ograniczona
do części wspólnej zaznaczonej w tabeli 7.8. BIOS nie przyjmuje do wiadomości, iż mogą istnieć dyski o liczbie cylindrów większej od l 024, a złącze IDE nie jest zdolne do obsługi dysków o liczbie głowic przekraczającej liczbę 16. To właśnie powyższe niedopasowanie współpracujących ze sobą systemów (niezgodność wymiarów poszczególnych pól informacyjnych) powoduje powstanie "słynnej" bariery 504 MB.
Tabela 7.8.

Tworzenie bariery 504 MB

Interfejs; Liczba sektorów na ścieżce; Liczba głowic; Liczba cylindrów; Maksymalna pojemność;
INT 13HBIOS; 63; 256; 1 024; 7,9 GB
Złącze AT-Task-File; 255; 16; 65536; 127 GB
Maksymalna część wspólna; 63; 16; 1 024; 504 MB




Metody omijania bariery 504 MB
Bariera 504 MB daje znać o sobie w przypadku dysków o parametrach CHS przekraczających limit l 024 x 16 x 63. Konfiguracje powyżej tego zakresu trzeba tak przekształcić, by była możliwa do zaakceptowania przez obydwa współpracujące ze sobą systemy. Jeżeli pojemność dysku zawiera się w zakresie do 504 MB (a konkretnie liczba cylindrów nie przekracza l 024, liczba głowic 16 i liczba sektorów na ścieżce 63) żadna translacja nie jest konieczna i parametry CHS przekazywane są w niezmienionej postaci. Jeżeli MS-DOS wywoła funkcję 08h INT13h, BIOS zwraca takie same wartości jakie
sam otrzymał w słowach l, 3 i 5 po wydaniu rozkazu DEVICE IDENTIFY. Gdy któryś z parametrów wybiega poza limit, BIOS dokonuje przeliczenia czynników CHS i od tej pory system operacyjny widzi dysk o innej konfiguracji niż ma to miejsce w rzeczywistości. Geometria urządzenia o parametrach CHS określonych jako 2 000 cylindrów, 16 głowic i 63 sektorów na ścieżce może być przekształcona do postaci l 000 cylindrów 32 głowic i 63 sektorów. Każdorazowe odwołanie się do dysku w celu zapisu lub odczytu pociąga za sobą również tłumaczenie adresów według takiego samego schematu.
Powyższe przeliczenie dokonuje się na jeden z dwóch sposobów: przejście na adresowanie liniowe ŁBA (Logical Block Addresś) lub tzw. translacja XCHS (eXtended Cylinder HeadSector}. Oba sprowadzają się niezmiennie do tego, by system operacyjny mógł w jednoznaczny sposób zaadresować dowolnie wybrany sektor dyskowy. Techniczna realizacja tych mechanizmów leży w gestii funkcji BIOS a konkretnie tych realizujących rozszerzenia EIDE. Implementacja nowych funkcji wiązała się więc na ogół z koniecznością wymiany EPROM-BIOS lub co najmniej instalacją kontrolera EIDE wyposażonego we własny BIOS. Możliwa jest też droga uproszczona - instalacja w komputerze ze złączem IDE dodatkowego oprogramowania przechwytującego obsługę przerwania INT13h. Typowymi przedstawicielami programów tego typu są ogólnie dostępne sterowniki o nazwach EZ-Drive lub Ontrack Disk Manager. Nie trzeba chyba dodawać, iż implementacja mechanizmów LBA i XCHS musi mieć również miejsce w samym dysku. Żaden BIOS nie jest naturalnie w stanie wymusić trybu ŁBA w starym modelu znającym wyłącznie funkcje standardu IDE.
Adresy liniowe (LBA)
W trybie LBA dowolny adres sektora X o parametrach C#xH#XS#X przekształcany jest na kolejny numer obliczany na podstawie wzoru:
LBA = [ (C#X x H#T + H#X) x S#T] + S#X - l
H#T i S#T stanowią parametry dysku po translacji geometrii C#GH#GS#G => C#TH#TS#T są to te same wartości, które znaleźć można w słowach 3 i 6 bloku informacyjnego zwracanego po komendzie DEVICE IDENTIFY. Adres LBA = 0 odnosi się zawsze do pierwszego sektora pod głowicą zerową na zerowym cylindrze.
Przykład:
Parametry geometryczne
C#G:H#G:S#G =2000:16:63 Translacja parametrów C#T:H#T:S#T=1000:32:63
Sumaryczna liczba sektorów dysku wynosi 2016 000. System operacyjny porusza się w zakresie określonym parametrami translacyjnymi i nie wykracza poza obszar l 000 cylindrów. BIOS tłumaczy otrzymane wartości na liczbę LBA i przekazuje ją do dysku. Oto kilka przykładowych przeliczeń adresów dla omawianej tu konfiguracji.









C#X:H#X:S#X; LBA

0:0:1; 0
500:0:1; 1 008 000
500:16:2; 1 009 009
999:31:63; 2015999

W trybie LBA sektory adresowane są za pomocą liczby 28-bitowej. Poszczególne pozycje bitowe takiego adresu tworzone są z następujących składowych:
LBA 0-7 - rejestr numeru sektora (l F3h),
LBA 8-15 - rejestr numeru cylindra, składowa LSB (lF4h),
LBA 16 - 23 - rejestr numeru cylindra, składowa MSB (l F5h),
LBA 24 - 27 - bity O - 3 rejestru napęd/głowica (l F6h).
Dysk rozpoznaje tryb adresowania (CHS lub LBA) oceniając każdorazowo stan bitu 6 w rejestrze lF6h.
Translacja XCHS (eXtended Cylinder-Head-Sector)
Sam BIOS może, zgodnie z tabelą 7.9, zarządzać dyskami o pojemności do 7,9 GB. Jeżeli można by było przekazać do złącza E1DE więcej niż 16 głowic granica 504 MB zaczyna wędrować w górę. Dysk EIDE z kolei jest w stanie zaakceptować zarówno zwiększoną liczbę sektorów na ścieżce jak i większą liczbę cylindrów. Można więc, zachowując taką samą wartość pojemności tak manipulować komponentami CHS by wynik końcowy pozostał bez zmian.
Tabela 7.9.
Translacja XCHS omijająca barierę 504 MB
Interfejs;

Możliwości INT 13hBIOS;
Możliwości złącza EIDE;
Zakres translacji XCHS;

Liczba sektorów na ścieżce;
63;
255;
63;

Liczba głowic;
256;
16;
256;

Liczba cylindrów;
1 024;
65536;
1 024;

Maksyma/na pojemność;
7,88 GB;
127 GB;

Algorytm dokonujący translacji XCHS pracuje według następującej prostej reguły: liczba cylindrów dysku jest dzielona przez dwa a w zamian za to zwiększana jest liczba głowic. Operacje te są tak długo powtarzane, aż liczba cylindrów znajdzie się w obszarze obsługiwanym przez BIOS - poniżej 1025. W ten sposób system BIOS trzyma pod kontrolą dyski o pojemności przewyższającej 504 MB. Raz ustalone dla danego dysku parametry translacji są zapamiętywane i korzysta się z nich w cyklach dostępu.

Tabela 7.10.

Algorytm translacjiXCHSpodwyższający liczbę głowic

Liczba cylindrów przed translacją; Liczba glowic przed translacją; Translacja liczby cylindrów; Translacja liczby glowic;

0-1024; <16; bez zmiany bez zmiany
1025-2048; <16; <1024; <32
2047-4096; <16; <1024; <64
4097-0191; <16; <1024; <128
8192-16384; <16; <1024; <256
8193-32768; <16; <1024; <512







Bariera 2 GB
Wystąpienie tego problemu ma związek nie tyle z samym systemem adresowania co z pamięcią konfiguracyjną (CMOS) w której BIOS przechowuje parametry geometrii dysku. Wiele wczesnych wersji BIOS przeznaczało na pole poświęcone liczbie cylindrów jedynie 12 bitów. W wyniku tego pojawia się następujące ograniczenie:
Tabela 7.11.

Tworzenie bariery 2 GB

PUSTE; Liczba sektorów na ścieżce; Liczba głowic; Liczba cylindrów; Maksymalna pojemność;
Dostępna liczba bitów; 6; 4; 12; PUSTE;
Zakres; 1-63; 0-15; 0 - 4 095; PUSTE;
Ograniczenie; 63; 16; 4096; 1,97 GB




System FAT (bariera 2 047 MB)
System zarządzania logicznymi strukturami danych na dysku prowadzi tzw. tablice przydziału (FAT - File Allocation Tables). Jednostki przydziału (Clusters) grupują pewną liczbę sektorów. Maksymalny rozmiar tablicy przydziału w systemie FAT-16 wynosi (w przypadku MS-DOS i wczesnych wersji Windows 95) jedynie 65 525 a pojedynczy klaster nie może być większy niż 32 kB. Późniejsze wersje Windows 95 (począwszy od SR-2) miały zaimplementowany FAT-32, który pokrywa swym zasięgiem dużo większe dyski.
Bariera 4 GB
Wszystkie wersje MS-DOS (włącznie z tą zawartą w Windows 95) nie są w stanie posługiwać się wartością głowic większą od 255 (w szczególności 256). Sytuacja taka pojawia się w przypadku dysków o liczbie cylindrów większej lub równej 8 192 (w wyniku translacji mamy przejście z 16 na 256 głowic).
Tabela 7.12.

Tworzenie bariery 4 GB

Puste; Liczba sektorów na ścieżce, Liczba głowic, Liczba cylindrów, Maksymalna pojemność,
Dostępna liczba bitów, 6, 4, 13, Puste;
Zakres, 1 -63, 0- 15, 0-8 190, Puste;
Ograniczenie, 63, 16, 8 191, 3,94 GB




Jakkolwiek źródeł tego problemu należy szukać w systemie operacyjnym, jego rozwiązanie jest stosunkowo łatwe do zaimplementowania w ramach struktur translacyjnych LBA lub XCHS. Wyróżniamy dwie formy korekcji:
Zmodyfikowana wersja generowania adresu liniowego A-LBA (Assisted LBA) polegająca na ograniczenie liczby głowic do 255
Konwersja wstępna R-XCHS (Revised XCHS), gdzie jeszcze przed właściwą translacją redukuje się liczbę głowic z 16 do 15 a w zamian za to podwyższeniu ulega liczba cylindrów w stosunku 16/15.
Windows NT - bariera 4 GB
Maksymalny rozmiar partycji, na której instalowany jest system operacyjny Windows NT również nie może przekraczać 4 GB. Ograniczenie to nie ma jednak żadnego związku z omawianą w tym punkcie barierą 4 GB. Nawet jeśli z góry wiadomo, iż decydujemy się na system NTFS, program instalacyjny formatuje wstępnie taką partycje zgodnie z systemem FAT-16 (maksymalny rozmiar klastrów w przypadku NT wynosi 64 kB zamiast 32 kB) i dopiero potem dokonuje konwersji na NTFS.
Bariera 8 GB
8 GB jest ogólną granicą, powyżej której nie mogą sięgać funkcje BIOS obsługujące przerwanie INT13h. Nie oznacza to jednak, iż daje ona znać o sobie wyłącznie w przypadku dysków o pojemności przekraczającej 8 GB. Powróćmy jeszcze raz na chwilę do ostatniego wiersza tabeli translacyjnej. Tłumaczenie parametrów dysku o 16 385 cylindrach (lub więcej) daje przeliczenie liczby głowic z 16 na 512. Kanał informacyjny
INT13H przeznacza na liczbę głowic pole 8 bitowe i w żadnym przypadku nie jest w stanie zaakceptować wartości 512. Widać więc wyraźnie, iż liczba cylindrów nie może przekraczać 16 384. Dla uniknięcia sytuacji tego rodzaju, specyfikacja ATA-3 zaleca, by dyski deklarujące więcej niż 8 głowic nie używały więcej niż 16383 cylindrów.

Tabela 7.13.

Tworzenie bariery 8 GB

Puste; Liczba sektorów na ścieżce; Liczba głowic; Liczba cylindrów; Maksymalna pojemność;

Dostępna liczba bitów; 6; 4; 14; Puste;
Zakres; 1 -63; 0-15; 0-16383; Puste;
Ograniczenie; 63; 16; 16384; 7,88 GB

Jeżeli BIOS ma zaimplementowany jeden z mechanizmów omijania bariery 4 GB, omawiana granica 8 GB przesuwa się jeszcze nieco w dół, a poza tym nie każda kombinacja wartości wstępnych CXHXSX jest w ogóle transformowalna.

Tabela 7.14.

Bariera 8 GB w komputerach z zaimplementowanym mechanizmem omijania bariery 2 GB

A-LBA; Liczba sektorówna ścieżce; Liczba głowic; Liczba cylindrów; Razem sektorów; Maksymalna pojemność

Największa wartość wstępna; 63; 16; 16320; 16450560; 7,88 GB

Maksymalny wynik translacji; 63; 255; 1 024; 16450560; 7,88 GB


R-XCHS; Liczba sektorówna ścieżce; Liczba głowic; Liczba cylindrów; Razem sektorów; Maksymalna pojemność;

Największa wartość wstępna; 63; 16; 15360; 15 482 880; 7,38 GB;
Maksymalny wynik translacji; 63; 240; 1 024; 15 482 880; 7,38 GB;

Granica 8GB wyznaczana przez BIOS stanowi barierę również dla systemów operacyjnych odwołujących się do dysku poprzez własne sterowniki i nie korzystających z przerwania INT13h. Wynika to z prostego faktu, iż proces ładowania systemu operacyjnego odbywa się pod kontrolą BIOS. Przynajmniej więc partycja, z której uruchamia się komputer oraz gdzie umieszczone są ewentualnie programy zarządzające konstrukcjami wielo systemowymi (Boot-Manager) musi być ograniczona do zakresu 8 GB.
















Straty pojemności
Jeżeli w operacjach dzielenia podczas przeliczania parametrów pojawi się reszta, algorytmy translacyjne zaokrąglają w dół, co jest jedynym rozsądnym rozwiązaniem gwarantującym, iż na dysku nie pojawią się "nieistniejące" sektory. Jeśli zaokrąglenie miało miejsce (co zależy od konkretnych kombinacji CHS i przyjętego typu translacji) dysk traci część ze swej fizycznej pojemności. Oto przykład "z życia". Wybrany został dysk Maxtor 85120A o parametrach CHS zestawionych w tabeli 7.15. Jak widać strata pojemności zależy od zastosowanej translacji.

Tabela 7.15.

Strata pojemności dla dysku Mcator 85120A

Puste; Parametry fabryczne; Translacja A-LBA; XCHS; R-XCHS;

CHS; 9924x 16x63; 622 x 255 x 63; 620 x 256 x 63; 661 x 240x63 Konwersja wstępna: 10585 x 15 x 63
Liczba sektorów; 10003392; 9 992 430; 9 999 360; 9 994 320
Pojemność; 4 884,47 MB; 4 879,12 MB; 4 882,50 MB; 4 880,04 MB
Strata sektorów; Puste; 10962; 4032; 9072
Strata pojemności; Puste; 5,35 MB; 1,97 MB; 4,43 MB







Przekraczanie bariery 8 GB
Wyjście poza limit 8 GB nie jest możliwe bez poszerzenia kanału informacyjnego przerwania INT13h. Rozszerzenia takie zaproponowane zostały przez firmę Phoenix produkującą znaczną część programów BIOS dla komputerów PC. Nowe funkcje (określane często wspólną nazwą Enhanced BIOS Services) pracują na 64 bitowych adresach ŁBA i obejmują swoim zasięgiem przestrzeń dyskową o wymiarze 16 x 10^18 Bajtów. Obsługiwane są również napędy mediów wymiennych. Tabela 7.16 prezentuje pokrótce te funkcje.
Funkcje zwracające się do określonych sektorów dysku (42h, 43h, 44h i 47h) oczekują swoich parametrów w zdecydowanie innej formie niż te do których przywykliśmy posługując się podstawowymi funkcjami przerwania INT13h. Para rejestrów DS:SI niesie w sobie wskaźnik do specjalnej 16-bajtowej tablicy informacyjnej (Disk Address Packet}- tabela 7.17.
Tabela 7.16.

Funkcje Enhanced BIOS Services

Funkcja; Nazwa; Znaczenie

41h; Check Extensions Present; Funkcja odwołuje się do określonego urządzenia w celu potwierdzenia zdolności do obsługi funkcji rozszerzeń INTISh. Urządzenie zwraca szczegółową informację włącznie z wersją zaimplementowanej specyfikacji.
42h; Extended Read; Odczyt sektora.
43h; Extended Write; Zapis sektora (z lub bez weryfikacji).
44h; Verify Sectors; Czytanie kontrolne sektora bez pobudzania do działania interfejsu magistrali.
45h; Lock/Unlock Media; Logiczna implementacja blokady wyrzutnika nośnika z napędu mediów wymiennych.
46h; Eject Removable Media; Polecenie wyrzucenia nośnika z napędu mediów wymiennych. System wydający ten rozkaz musi zadbać o utrwalenie na nośniku wszelkich informacji znajdujące się w buforach.
47h; Extended Seek; Polecenie pozycjonowania głowic nad określonym sektorem, traktowane jako przygotowanie do przewidywanej operacji I/O.
48h; Get Drive Parameters; Funkcja zwraca parametry fizyczne urządzenia takie jak geometria (CHS), rozmiary sektora, ewentualnie szczegóły techniczne realizacji funkcji wymiany nośników.
49h; Get Extended Media Change Status; Funkcja informuje o ewentualnej zmianie nośnika w napędzie obsługującym media wymienne.
4Eh; Set Hardware Configuration; Funkcja ustawia tryby PIO i DMA.

Tabela 7.17.

Struktura tablicy informacyjnej Disk Address Packet

Bajt; Typ; Opis;
0; Byte; 10h. rozmiar tablicy 16 bajtów
1; Byte; 00h
2; Byte; Liczba bloków do przesłania, dopuszczalna wartość maksymalna wynosi 127
3; Byte; 00h
4-7; Double Word; 32-bitowy adres lokalizacji w pamięci w formie Seg:Off. Z obszaru tego pobierane są dane przy operacji zapisu a do niego przesyłane dane przy operacji odczytu.

8-15; Quad Word; 64-bitowy adres liniowy sektora (LBA). Jeżeli urządzenie może pracować w trybie LBA adres ten przekazywany jest w formie bezpośredniej, a jeżeli nie. to następuje przeliczenie na składniki CHS.




















Prędkości transmisji danych
Jakkolwiek w chwili obecnej na rynku dominuj ą produkty pracujące w trybie UDMA/33 (i stopniowo pojawiają się modele dostosowane do UDMA/66) w tej części rozdziału omówione zostaną również inne, wcześniej stosowane tryby pracy. Najszybsze z aktualnych modeli dysków ze złączem IDE3
(Dysk firmy Maxtor (92048D8), Model Diamond Max Plus 5120 (19 GB/7 200 obr/min) jako pierwszy przekroczył barierę 20 MB/s.), nadal nie wykorzystują w pełni możliwości oferowanych przez kanał UDMA/33 ale sporo z nich przekracza jednak limit 16 MB/s trybu PIO4. Należy jednak pamiętać, iż tryby UDMA to nie tylko prędkość ale i zwiększenie bezpieczeństwa transmisji dzięki wprowadzenia mechanizmów kontrolnych. W trybach UDMA magistrala kluczowana jest obydwoma zboczami impulsów zegarowych, za każdym razem przesyłane są po dwa bajty. Tabela 7.18 stanowi przegląd dostępnych trybów transmisji danych.

Tabela 7.18.

Tryby transmisji danych

Tryb; Maksymalny transfer [MBz]; Zegar UDMA [MHz];
PIO 0; 3,33;
PIO 1; 5,22;
PIO 2; 8,33;
PIO 3; 11,11;
PIO 4; 16,66;
Singleword DMA 0; 2,08;
Singleword DMA 1; 4,16;
Singleword DMA 2; 8,33;
Multiword DMA 0; 4,16;
Multiword DMA 1; 13,33;
Multiword DMA 2; 16,66;
Ultra DMA 0; 16,66; 4,16;
Ultra DMA 1; 25,00; 6,25;
Ultra DMA 2 (UDMA/33); 33,33; 8,33;
Ultra DMA 3 (UDMA/44); 44,44; 11,11;
Ultra DMA 4 (UDMA/66); 66,64; 16,66;



















Tryby PIO
Przy przesyłaniu danych z kontrolera do pamięci PC dyski AT-BUS wykorzystują klasyczny tryb przekazu z udziałem portu danych (PIO). W kontrolerach IDE wykorzystywany był tryb PIO O, zapewniający przesłanie w jednym cyklu, trwającym 280 ns, 16 bitów danych, co odpowiada 3,33 MB/s.
Ta prędkość transmisji jest z jednej strony znacznie niższa od maksymalnej prędkości magistrali ISA (8,3 MB/s), a z drugiej wyższa niż maksymalna prędkość transmisji danych z głowicy do kontrolera (na przykład dysk wirujący z prędkością 3 600 obr/min, który na jednej ścieżce ma 100 sektorów 512-bajtowych, może w ciągu sekundy przesłać 60 razy po 51 200 bajtów, czyli 3 MB/s).
Postęp technologiczny (zwiększenie prędkości obrotowej talerzy i podniesienie gęstości zapisu czyli liczby sektorów na ścieżce) sprawił, że prędkość transferu danych z głowicy do kontrolera przekroczyła możliwości interfejsu IDE. W pewnym momencie na rynku zaczęły pojawiać się dyski osiągające transfer przekraczający możliwości trybu PIO 0. Dla potrzeb obsługi urządzeń tego typu zdefiniowane zostały kolejne tryby PIO l - 3 (patrz rysunek 7.13)
Standard ElDE wykorzystujący tryb PIO 3 zapewnia transfer z prędkością 11,11 MB/s. Ponieważ parametry transmisji w tym trybie przekraczają możliwości magistrali ISA, adaptery EIDE musiały korzystać z magistrali VESA Local Bus a później PCI. To samo odnosi się oczywiście do pracy w trybie PIO 4 (ponad 16 MB/s).
Tryby DMA
Komputery klasy XT do komunikacji z dyskiem wykorzystywały kanał DMA. Ze względu na konieczność zachowania zgodności "w dół" (kompatybilności) moduł DMA modelu XT znalazł swe odbicie w architekturze komputera AT.
Standard EIDE (rysunek 7.15) oferuje bezpośredni dostęp do pamięci w trybie l standardu Multi-Word-DMA).
Przewaga trybów DMA nad PIO sprowadza się do wyłączenia transferu spod bezpośredniej kontroli procesora - może on pracować zamiast nadzorować transmisję danych. Niestety, w typowych komputerach klasy PC brakuje podstawowego ogniwa umożliwiającego transmisję kanałami DMA - szybkiego, nowoczesnego kontrolera DMA.
Definicje trybów Singleword-DMA zostały poniechane i nie występują w specyfikacjach ATA począwszy od wersji ATA-4.












































































Tryb Ultra DMA/33
Zasady pracy w trybie UDMA/33 (nazywanym też Ultra-ATA) ujęte zostały w specyfikacji ATA/ATAPI-4. Jego główna zaleta to zwiększenie prędkości przesyłania danych. W porównaniu z najszybszymi jak dotąd trybami pracy (PIO-4 i MDMA-2) UDMA/33 oferuje podwojenie prędkości do poziomu 33,3 MB/s. Podwojenie to uzyskuje się wyłącznie dzięki zmianom w protokole, obydwa zbocza sygnału strobującego wyzwalają przesłanie jednego słowa. UDMA/33 jest całkowicie zgodny "w dół" a dla jego zaimple-mentowania wymagane są jedynie niewielkie zmiany. Ponieważ częstotliwość żadnego z sygnałów nie ulega zwiększeniu, system może posługiwać się dotychczas stosowanymi przewodami połączeniowymi.
UDMA/33 wprowadza od dawna oczekiwany mechanizm kontroli spójności transmitowanych danych. Odbywa się to przy pomocy kodów CRC. Zmniejszona zostaje również sama podatność na przekłamania spowodowane odbiciami sygnałów na skutek niedopa-sowań impedancji. Specyfikacja UDMA/33 określa dokładne wartości szeregowych rezystancji wprowadzanych do linii magistrali zarówno po stronie urządzeń jak i kontrolera.
Maksymalna długość przewodu połączeniowego wynosi nadal 46 cm (18") - specyfikacja UDMA/33 nie wnosi tu nic nowego. Zaleca się jedynie, by niezależnie od długości przewodu, odległość pomiędzy urządzeniami wynosiła 15 cm (6").
Protokół
W przeciwieństwie do trybów pracy PIO i DMA to nie Host-Adapter narzuca tempo transmisji. Źródłem impulsów kluczujących urządzenie, czyli zwykle dysk.
Poprzez przedefiniowanie znaczenia egzystujących już linii magistrali IDE (ATA) utworzone zostają nowe sygnały, zebrane w tabeli 7.19. Przedefiniowania to ma miejsce wyłącznie na czas trwania cyklu transmisyjnego U-DMA (UDMA Burst), Cykl taki trwa od momentu aktywacji -DMACK i kończy się z chwilą zwolnienia -DMACK. Wszystkie sygnały standardu ATA zachowują swoje klasyczne funkcje aż do momentu aktywowania -DMACK. W trakcie cyklu UDMA mogą wystąpić kombinacje sygnałów, które w normalnych warunkach są niedopuszczalne, np. jednoczesna aktywacja -DIOR i -DIOW. Wyjście z cyklu UDMA (zwolnienie -DMACK) poprzedzane jest przez powrót wszystkich sygnałów do stanu spoczynkowego w sensie funkcji ATA.
Tabela 7.19.

Nowe sygnały wykorzystywane w transmisji UDMA/33

Linie IDE-BUS; Znaczenie w cyklach odczytu UDMA; Znaczenie w cyklach zapisu UDMA;

IORDY (pin 27); DSTROBE; DDMARDY
~DIOR(pin25); HDMARDY; HSTROBE
~DIOW (pin 23); STOP; STOP




Przewiduje się różne wersje (poziomy) protokołów UDMA, różniące się od siebie w pierwszym rzędzie prędkością transmisji. Zgodnie z tą konwencją, Ultra DMA/33 nosi też miano UDMA typu 2 (UDMA-2). Konstrukcja protokołu umożliwia oczywiście (zgodność "w dół") koegzystencję urządzeń z interfejsem UDMA i urządzeń pozbawionych tych możliwości. W takim wypadku podejmowany jest klasyczny protokół ATA. Strona (Host-Adapter lub urządzenie), która identyfikuje się jako zdolna do realizacji protokołu UDMA określonego poziomu musi być w stanie odbierać dane w rytmie narzuconym przez specyfikację (czas cyklu TCYC)- Nie stanowi natomiast żadnego pogwałcenia protokołu wysyłanie danych w tempie wolniejszym od maksymalnego lub wręcz chwilowe zatrzymanie zegara (STROBE).
Procedura uzgadniania pracy w trybie UDMA przebiega w następujący sposób. Host-Adapter wysyła rozkaz IDENTIFY DEVICE i otrzymuje informację o ewentualnej zdolności urządzenia do pracy w określonym trybie UDMA. Host-Adapter może włączyć lub wyłączyć zdolność UDMA urządzenia poprzez wystosowanie rozkazu SET FEATURES.
Zainicjowanie cyklu UDMA (Faza inicjalizacji) może odbywać się wyłącznie na żądanie urządzenia, które aktywuje DMARQ. Host-Adapter potwierdza przyjęcie zgłoszenia aktywując -DMACK i negując STOP. Od tego momentu może rozpocząć się transmisja. Przejście do fazy transmisji zaznaczane jest przez aktywację -HDMARDY (Host-Adapter w cyklach odczytu) lub -DDMARDY (urządzenie w cyklach zapisu).
W fazie transmisji liniami DO - Dl5 przesyłane są dane. Magistrala przekazuje dane w rytmie wyznaczanym przez obydwa zbocza sygnału kluczującego. Sygnałem tym jest HSTROBE lub DSTROBE, zależnie od kierunku transmisji.
Żądanie wstrzymania (przerwa) odbywa się poprzez zanegowanie -DMARDY przez stronę odbierającą dane, tj. -HDMARDY przy odczycie lub -DDMARDY przy zapisie. Protokół przewiduje, iż urządzenie nadające musi mieć czas na zatrzymanie synchronicznego mechanizmu zegarowego (STROBE). Strona odbiorcza powinna więc być przygotowana na ewentualne przyjęcie jeszcze dwóch słów, których wysłania nie dało się już uniknąć.
Zakończenie cyklu UDMA może nastąpić zarówno na życzenie Host-Adapter jak i urządzenia. Faza kończąca wprowadzana jest poprzez specjalną sekwencję sygnałów sterujących zależnych od aktualnego kierunku transmisji.
Jakkolwiek strona nadawcza nie otrzymuje potwierdzenia dla każdego wysłanego słowa, ma miejsce stała kontrola spójności przekazu poprzez kod CRC. Kontrola obejmuje swym zakresem cały aktualny cykl UDMA (Burst). Zarówno strona nadawcza jak i odbiorcza wyposażone są w 16-bitowe rejestry CRC, które podlegają wyzerowaniu przed każdym cyklem. Niezależnie od aktualnego kierunku transmisji, zawartość rejestru CRC po stronie Host-Adapter przesyłana jest w fazie kończącej (wraz z opadającym zboczem DMACK) do urządzenia, które dokonuje porównania ze stanem swojego rejestru CRC. Jeśli wystąpiły błędy kontroler ustawia jeden z bitów w rejestrze błędów (port AT-Task-File). Możliwe błędy to przerwana transmisja lub rozbieżności kodów CRC po stronie nadawczej
i odbiorczej. Obowiązek odczytania rejestru błędów spoczywa na programowym sterowniku obsługującym tryb UDMA. Jeśli wystąpił błąd, konieczna jest powtórka ostatniego przekazu. Częste powtórki obniżają naturalnie efektywną prędkość transmisji. Rozsądnie zaprogramowany sterownik powinien obniżać w takim wypadku tryb UDMA do poziomu niższego dla zredukowania podatności na błędy.
Specyfikacja ATA-4 mówi, iż po załączeniu zasilania (Power On) urządzenia znajdują się w trybach NON-UDMA, to samo wywołuje zresztą przeprowadzenie wyzerowania (reset sprzętowy). Reset programowy (Soft-Resei) i reset urządzenia nie mają wpływu na ustawiony tryb UDMA.







Tryb Ultra DMA/66
Transport danych z powierzchni dysku do pamięci komputera przebiega w dwóch etapach. W pierwszym odbywa się pobranie danych do pamięci podręcznej zintegrowanego z dyskiem kontrolera a w drugim następuje przekazanie (poprzez interfejs IDE) do pamięci operacyjnej. Szybkość transferu na pierwszym odcinku nie zależy w najmniejszym stopniu od możliwości oferowanych przez interfejs IDE.
Samo podniesienie prędkości pracy magistrali IDE przynosi korzyści w stosunku do danych, które zostały pobrane z powierzchni dysku i znajdują się już w pamięci podręcznej kontrolera. To samo odnosi się do cykli zapisu: kontroler może przyjąć pewną (zależną od pojemności pamięci) ilość danych w tempie określonym przez interfejs. Po kolejnych coraz to szybszych trybach UDMA nie należy oczekiwać żadnych cudów. Czynnikami decydującymi o faktycznej prędkości transmisji są nadal szczegóły konstrukcyjne dysku: prędkość wirowania i gęstość zapisu.
Specyfikacja trybów UDMA-3(Tryb UDMA/44 został co prawda zdefiniowany ale nie doczekał się praktycznej realizacji, bowiem nastąpiło bezpośrednie przejście z UDMA/33 na UDMA/66.) i UDMA-4 nakłada obowiązek stosowania specjalnego okablowania. O ile sama magistrala IDE składa się nadal z 40 przewodów sygnałowych, każdy z nich oddzielony zostaje od sąsiada dodatkową linią masy. Tak zmodyfikowany 80-żyłowy kabel (impedancja falowa 82 om) zakończony jest tymi samymi 40-końców-kowymi wtykami. Jednak ze względu na opisaną poniżej konieczność rozpoznawania rodzaju kabla, trzy wtyki są przypisane do określonych urządzeń i oznakowane różnymi kolorami: niebieski od strony kontrolera, czarny Master i szary Slave. System taki pozwala naturalnie na zagwarantowanie zgodności "w dół" - nowy kabel może obsługiwać stare urządzenia, a dyski UDMA-4 dają się podłączyć do klasycznego przewodu. Nie wolno jednak aktywować szybkiego trybu jeśli mamy do dyspozycji klasyczny przewód. Dlatego właśnie urządzenia zdolne do pracy w trybie UDMA-3 i wyższych muszą mieć zaimplementowaną sprzętową zdolność do rozpoznawania typu kabla. W oparciu o wynik tego rozpoznania Host aktywuje lub nie stosowny tryb UDMA.
Procedury detekcji przejęte zostały ze specyfikacji ATA/ATAPI-4. Sprzętowe rozpoznanie typu kabla bazuje na ocenie poziomu napięcia na linii 34( Pierwotna specyfikacja IDE przypisała linię 34 (-PDIAG) dla celów komunikacji pomiędzy jednostkami Master i Slave, przez co końcówka ta jest niejako wolna od strony kontrolera (Host). Wtyk kabla 80-liniowego (niebieski) zwiera ją do masy.
i może być realizowane na jeden z dwóch sposobów:
Metoda podstawowa, detekcja od strony Host (Host Based Cable Detectiori). Host powoduje aktywowanie linii 34 (-CBLID) i bada jej stan. Jeżeli poziom napięcia leży poniżej V#IL to mamy do czynienia z kablem 80-liniowym a jeśli powyżej V#IH to przewód składa się z 40 linii.



Metoda alternatywna, detekcja od strony urządzenia (Device Based Cable Detection). Specyfikacja ATA/ATAPI-4 nakłada na urządzenia sterujące (Host) spełniające wymóg UDMA>2 konieczność blokowania linii -PDIAG/-CBLID przy pomocy kondensatora 0,047 mikrofarada. Na tej samej linii (ale od strony dysku) zainstalowany jest rezystor 10kilooma podnoszący poziom do napięcia zasilającego (Pull-Up). Kontroler wysyła do dysku rozkaz IDENTIFY, który powoduje aktywację sygnału -PDIAG (sprowadzenie do masy) na czas co najmniej 30 us. Pozwolnieniu sygnału dysk odczekuje 2-13 us i mierzy poziom napięcia na linii. Wynik pomiaru umieszczany jest w bicie 13 słowa 93. Jeżeli poziom był mniejszy od V#IL bit jest zerowany (kabel 40) a jeżeli większy od V#IH to ustawiany (kabel 80).
Przewód 80-liniowy istotnie wpływa na jakość przesyłanych sygnałów poprawiając przede wszystkim stromość zboczy impulsów, redukując odbicia i zmniejszając przesłuchy międzyliniowe (rysunek 7.17).
W ramach specyfikacji UDMA>2 operuje się innym kryterium minimalnych stromości zboczy impulsów. Zamiast dotychczas używanych czasów narastania i opadania (nie dłuższych od 5 ns) określa się szybkość narastania i opadania wynoszącą 1,25 V/ns.
Zwiększenie liczby urządzeń
Standard EIDE wprowadził oficjalnie drugi adapter IDE do komputera PC (rysunek 7.18). Niestety nie wyspecyfikowano ani adresu portu I/O, ani linii przerwania IRQ. Przemysł wykorzystuje więc IRQ15 oraz porty skupione wokół adresów bazowych 170h i 376h.
W każdym kanale można włączyć dwa urządzenia IDE, które pracują jako Master lub Slave. Jeżeli rozpatrzymy konfigurację przedstawioną na rysunku 7.18 (oczywiście wszystkie urządzenia mogą być dyskami twardymi), otrzymamy następującą kolejność:
dysk Master adaptera pierwotnego,
dysk Slave adaptera pierwotnego,
CD-ROM Master adaptera wtórnego,
streamer Slave adaptera wtórnego.
Większość producentów adapterów EIDE postępuje według najtańszej metody dopuszczonej przez specyfikację -jedynie kanał pierwotny jest sprzężony z magistralą (VL lub PCI), natomiast kanał wtórny stanowi przedłużenie magistrali ISA. Podejście tego typu było uzasadnione, bowiem drugi kanał obsługiwał grupę wolniejszych urządzeń zewnętrznych, takich jak CD-ROM-y czy streamery, które na początku nie osiągały prędkość transmisji powyżej l MB/s. Konfiguracja taka traci sens w przypadku nowoczesnych napędów CD-ROM sięgających zakresu powyżej 7 MB/s (x50).
Poszerzenie oferty urządzeń IDE
Standard ATAPI (AT Attachment Packet Interface) określa parametry techniczne, jakie muszą spełnić urządzenia (czytniki i nagrywarki CD-ROM, napędy taśm czy media wymienne) podłączane do adaptera EIDE.
Nowe rozkazy
Najważniejsze rozszerzenia stanowi ą rozkazy:
Read-DMA (C8h i C9h)
Write-DMA (CAh i CBh)
poszerzone o funkcje błędów, które występują tylko w trybach UDMA. Rejestr błędów (Error Register} dostarcza wówczas następujących informacji:
ustawiony bit 2 (ABRT) sygnalizuje przerwanie transmisji,
ustawiony bit 7 (ICRC) wskazuje na błąd CRC.
Blok informacyjny po komendzie IDENTIFY
W tabeli 7.20 zostały zebrane zmiany w bloku informacji o dysku wprowadzone przez rozszerzenie EIDE. Struktura całego bloku danych o dysku została zamieszczona w tabeli 7.6.
Tabela 7.20.

Struktura bloku danych o dysku, rozszerzenia EIDE

Słowo; Bit; Opis;
0; 15; 1 - ATAPI, 0 - ATA.
53; 2; 1 - ultra DMA jest zaimplementowane, dalsze informacje zawarte są w słowie 88,
0 - urządzenie nie może pracować w trybie Ultra DMA, słowo 88 bez znaczenia.
80; 1; 1 - urządzenie zna rozkazy zgodne ze specyfikacją ATA- 1.
80; 2; 1 - urządzenie zna rozkazy zgodne ze specyfikacją ATA-2.
80; 3; 1 - urządzenie zna rozkazy zgodne ze specyfikacją ATA-3.
80; 4; 1 - urządzenie zna rozkazy zgodne ze specyfikacją ATA-4.
81; 15-0; Podnumer wersji specyfikacji ATA (np. dla ATA-4. 5 mamy 5)
82; 0; 1 - urządzenie zna system S. M. A. R. T.
82; 1; 1 - urządzenie zna rozkazy systemu zabezpieczeń.
82; 2; 1 - urządzenie zna rozkazy obsługi nośników wymiennych.
82; 3; 1 - urządzenie zna rozkazy obsługi system zarządzania poborem mocy.
83; 14; musi być ustawiony na 1
83; 15; musi być ustawiony na 0
88; 0; 1 -urządzenie może pracować w trybie Ultra DMA 0.
88; 1; 1 -urządzenie może pracować w trybach Ultra DMA 1 lub Ultra DMA 0.
88; 2; 1 -urządzenie może pracować w trybach Ultra DMA 2 DMA 0, Ultra DMA 1 lub Ultra DMA 0
88; 3; 1 -urządzenie może pracować w trybach Ultra DMA 3 lub Ultra DMA 2, Ultra DMA 1,Ultra DMA
88; 4; 1 - urządzenie może pracować w trybach Ultra DMA 4, Ultra DMA 3, Ultra DMA 2, Ultra DMA 1 lub Ultra DMA 0.
88; 8; 1 - urządzenie znajduje się w trybie Ultra DMA 0.
88; 9; 1 - urządzenie znajduje się w trybie Ultra DMA 1.
88; 10; 1 - urządzenie znajduje się w trybie Ultra DMA 2.
88; 11; 1 - urządzenie znajduje się w trybie Ultra DMA 3.
88; 12; 1 - urządzenie znajduje się w trybie Ultra DMA 4.
93; 13; 1 - system autodetekcji rozpoznał kabel 80-żyłowy. 0 - system autodetekcji rozpoznał kabel 40-żyłowy. Informacja ma znaczenie wyłącznie dla urządzeń mogących pracować w trybie UDMA-2 lub wyższym.
128; 0-8; Pola informacyjne systemu zabezpieczeń




























Standard SCSI
Magistrala SCSI (Smali Computer System Interface) stanowi ogólną koncepcję szyny równoległej łączącej urządzenia, które mogą wymieniać między sobą dane. W swej pierwotnej wersji (8-bitowej) szyna mogła obsługiwać do ośmiu urządzeń, późniejsze rozszerzenia standardu dopuszczają ich dwukrotnie więcej. Pojęcia SCSI nie należy utożsamiać wyłącznie z dyskami twardymi. System ten może łączyć ze sobą bardzo różnorodne urządzenia: oprócz dysków twardych napędy jednostek taśmowych, czytniki i nagrywarki CD-ROM oraz DVD, skanery, a także różnorodne media wymienne takie jak JAZZ, ZIP itp.
Ogólny opis systemu
Początkowo system powstał dla potrzeb obsługi komunikacji w obrębie stacji roboczych i minikomputerów. Pierwowzór nosił nazwę SASI (Shugart Associates System Interface) i opracowany został w firmie Seagate. Magistrala SCSI w swej dzisiejszej formie egzystuje w zasadzie od 1982. Od 1986 roku uznana została jako standard przez ANSI (American
National Standards Institute - Amerykański Komitet Normalizacyjny) i wydana w formie dokumentu ANSIX3.131-1986.
Skoro tylko świat komputerów klasy PC odkrył dla siebie zalety tego systemu, rozpoczęto niezbędne modyfikacje. Ponieważ działania komitetu normalizacyjnego przebiegały opieszale, wielu producentów zaczęło wprowadzać na własną rękę swoje "pseudo-stan-dardy". Doprowadziło to do sytuacji, że na rynku pojawiły się kontrolery i urządzenia, które mimo iż reprezentowały "standard SCSI" nie mogły się ze sobą porozumieć.
Doprowadzona wreszcie do szczęśliwego finału procedura normalizacyjna spowodowała powstanie tzw. standardu SCSI-1. Norma ta przewidywała jednak pewne furtki wbudowane w celu uelastycznienia systemu i aby nie wiązać rąk producentom. Ta nadmierna elastyczność doprowadziła do tego, że norma normą być przestała.
Kolejna próba normalizacji tego trudnego zagadnienia ujęta została w zespole dokumentów X3T9.2/86-109 (szkic) i X3T9.2/85-52 (zestaw rozkazów), które stanowią de facto (choć sąjedynie tzw. propozycjami) od dawna oczekiwany standard SCSI-2.
Należy jednak od razu dodać, że różni producenci skwapliwie wykorzystują fakt, że nie wszystkie standardowe rozkazy muszą być implementowane. Tak więc mamy znowu urządzenia, które - niby zgodne z normą SCSI-2 (w zakresie tych rozkazów, które implementują) - nie mogą współpracować z innymi, które zakładają szerszą gamę poleceń.
W roku 1990 niektóre z rozkazów SCSI (wraz z rozlicznymi towarzyszącymi im parametrami) zebrane zostały w ramach normy (a nie propozycji) SCSI-2, co pozwala żywić nadzieję na ostateczne rozwiązanie problemu.
Do głównych cech, które odróżniają SCSI-1 od SCSI-2, należy zaliczyć:
Ujednolicony i poszerzony zestaw rozkazów.
Możliwość pracy w szybszym trybie (Fast SCSI), tj. podniesienie przepustowości magistrali do 10 MB/s (zamiast 5 MB/s).
Możliwość poszerzenia szerokości magistrali do 16 bitów (Wide SCSI).
Kombinację trybów Fast-Wide pozwaljącą uzyskać teoretycznie prędkości transmisji do 40 MB/s. Wymagane są tu już jednak rozszerzenia sprzętowe, tj. 68-żyłowe przewody połączeniowe i naturalnie inne wtyki i gniazda.
Dalszy krok w rozwoju SCSI oznaczony jest symbolem SCSI-3. Magistrala tego nowego standardu wzbogacona została o szereg nowych możliwości:
Nowe rozkazy.
Obsługę większej liczby urządzeń (SCSI-2 pozwala jedynie na 8).
Dłuższe dopuszczalne przewody połączeniowe.
Dodatkowe, opcjonalnie wyjście na światłowód.
W tabeli 7.21. zebrane zostały rozkazy systemu SCSI. Według oryginalnej specyfikacji tworzą one tzw. grupy. Podstawą podziału grupowego jest stan pierwszych trzech bitów kodu operacyjnego.
Większość z rozkazów posiada cały szereg wariantów zależnych od parametrów (rozkaz MODĘ SELECT ma ich ponad 70!). Z tej szerokiej gamy możliwych poleceń wykorzystywanych jest praktycznie niewiele. Dyski twarde posługują się przy tym uproszczonym zestawem, w skład którego wchodzi nie więcej niż l O rozkazów.
Tabela 7.21.

Pełny zestaw rozkazów systemu SCSI

Rozkazy grupy 0;

TEST UNIT READY;
REZERO UNIT;
REQUEST LOG;
REQUEST SENSE;
FORMAT UNIT;
READ DEFECT LIST;
REASIGN BLOCKS;
READ;
WRITE;
SEEK;
NO OPERATION;
SET FILE MASK;
INQUIRY;
READ DEYICE;
CHARACTERISTIC

PRIORITY RESERVE;
MODE SELECT;
RESERVE UNIT;
RELASE UNIT;
COPY;
MODE SENSE;
START/STOP UNIT;
RECEIVE;
DIAGNOSTIC;
RESULTS;
SEND DIAGNOSTIC
PREYENT/ALLOW
MEDIUM REMOYAL

Rozkazy grupy 1;

CHANGE;
DEFINITION;
WRITE SAME;
LOG SELECT;
LOG SENSE;
MODE SELECT; EXTENDED;
MODE SENSE;
EXTENDED;
READ EXTENDED;
WRITE EXTENDED;
SEEK EXTENDED;
WRITE & WERIFY;
VERIFY;
SEARCH DATA HIGH;

SEARCH DATA;
EQUAL;
SEARCH DATA LOW;
SET LIMITS;
PRE-FETCH;

SYNCHRONIZE;
CACHE;
LOCK/UNLOCK;
CACHE;
READ DEFECT DATA;
COMPARE;
COPY & WERIFY
WRITE BUFFER

READ BUFFER
READ LONG
WRITE LONG

Rozkazy grupy 2;

SEARCH BŁOCK;
HIGH;
SEARCH BŁOCK;
EQUAL;
SEARCH BŁOCK;
LOW; READ CAPACITY;
PARTIAL MEDIUM;
INDICATOR;
PREVENT/ALLOW;
MEDIUM REMOVAL;


Rozkazy grupy 6;

DIAGNOSTIC WRITE;
DATA;
DIAGNOSTIC READ;
DATA;
FORMAT ID;
SPACE ID & READ; DATA;
DISPLACED ID;
READ ID;
DIAGNOSTIC;
FORMAT ID;
DIAGNOSTIC READ;
ID;
WRITE RAM;
READ RAM;
RECOYER DATA;

RECOVER ID;





































Trzeba również pamiętać, że wielu producentów gwarantuje poprawną pracę swoich wyrobów (dotyczy to najczęściej skanerów) jedynie w połączeniu z własnym Host Adapterem, do którego dołączany jest zestaw odpowiednich sterowników programowych. Idea SCSI z natury rzeczy służyć ma łączeniu ze sobą wielu różnych urządzeń, co jest w świetle powyższego źródłem potencjalnych problemów (niekompatybilność). Nie można też przecież zdawać się na jednego producenta dla wszystkich różnorodnych urządzeń peryferyjnych w całym rozbudowanym układzie.
Jeżeli mowa jest o prostym systemie wyposażonym w dysk twardy i CD-ROM należałoby zasugerować pozostanie przy magistrali AT-BUS, tym bardziej że szybkość tych urządzeń (zwłaszcza modeli nowej generacji) jest bardzo duża. Za rozwiązaniem takim przemawiają również względy ekonomiczne bowiem dyski SCSI są nieco droższe od swych odpowiedników AT-BUS. Całkowity koszt systemu podnoszą również kontrolery SCSI oraz okablowanie. Rozbudowa takiego układu o kolejne urządzenia (dodatkowe dyski, nagrywarki, napędy taśm, media wymienne) napotyka jednak na barierę stawianą przez magistralę EIDE. Liczba urządzeń nie może wykraczać poza cztery.
Wyższa cena urządzeń peryferyjnych SCSI jest w pełni usprawiedliwiona stopniem ich komplikacji. Muszą one realizować złożony protokół komunikacyjny SCSI i umieć się zachowywać w inteligentny sposób stosownie do zaistniałych sytuacji. Dysk twardy SCSI (a właściwie jego kontroler) musi stawiać do dyspozycji innych użytkowników szyny (tj. praktycznie Host-Adaptera), tzw. logiczne bloki danych. Nikt nie jest zainteresowany strukturą wewnętrzną dysku: cylindrami, ścieżkami i sektorami. Każdy sektor ma swój numer kolejny (adres liniowy). Cała procedura formatowania odbywa się w odpowiedzi na pojedynczy rozkaz. Podobnie administracja powierzchnią dodatkową i jej stosowny przydział w wypadku uszkodzeń sektorów leży w gestii samego kontrolera dysku.
Jak widać z tego krótkiego przeglądu, urządzenia SCSI są układami o bardzo wysokim stopniu komplikacji.
Realizacja magistrali
Na system SCSI składa się sama magistrala oraz protokół określający zasady korzystania z niej.
Każdy z współużytkowników (nazywanych urządzeniami lub jednostkami) identyfikuje się przez unikalny adres SCSI-ID. Adres ten, zwany też identyfikatorem, przypisywany jest urządzeniu przed uruchomieniem magistrali. Nadanie identyfikatorów odbywa się zwykle za pomocą zwór konfiguracyjnych lub przełączników a czynność tę powierza się użytkownikowi.
Warto wspomnieć, iż istnieje co prawda system automatycznego przydzielania adresów SCAM (SCSI Configitred AutoMagically)(System SCAM predestynował do miana odpowiednika Plug&Play w odniesieniu do SCSI. W założeniach miał przejmować nie tylko automatyczny przydział adresów ale i konfigurację terminatorów. O ile część pierwsza funkcjonuje w miarę w praktyce i jest przynajmniej czasami stosowana, część druga nie ma prawa na pozycję na rynku z uwagi na prawie całkowity brak odpowiednio dostosowanego sprzętu.) ale jego działanie nie jest niezawodne (zwłaszcza jeśli w układzie występują zarówno urządzenia znające jak i nie znające SCAM). System automatyczny skanuje magistralę a specjalny protokół (unikając kolizji) przydziela właściwe adresy w trakcie przeglądania kolejnych urządzeń. Automatyczne rozdawanie adresów w systemach o zmiennej konfiguracji (np. różne dyski podmieniane w specjalnych szufladkach) niesie w sobie zawsze niebezpieczeństwo pomieszania oznaczeń literowych jednostek i lepiej jest wykonywać je ręcznie.
Chociaż do adresowania urządzeń używa się 8-bitów (linie magistrali danych), przyjęty sposób kodowania pozwala na utworzenie jedynie ośmiu adresów. Nie stosuje się kodowania binarnego lecz każda z ośmiu linii szyny danych oznacza jeden adres z zakresu 0- 7. W trakcie realizacji procedur samo kontrolnych i inicjujących, które przeprowadza każde z urządzeń tuż po doprowadzeniu zasilania, zostaje zapamiętany przydzielony (zwory konfiguracyjne lub SCAM) adres. Od tej pory urządzenie reaguje wyłącznie na rozkazy do siebie adresowane. Ważne jest by nie doprowadzić do konfliktu adresowego, który ma miejsce jeżeli jeden z identyfikatorów nadany zostanie dwukrotnie. Magistrala nie została wyposażona w możliwości korekcji takiej sytuacji. Jedyną jej odpowiedzią są permanentnie występujące błędy.
Przydział adresów do urządzeń jest w zasadzie dowolna poza dwoma wyjątkami. Pierwszy z nich to adres kontrolera. Koncepcja SCSI stosuje bowiem pojęcie priorytetu w dostępie do magistrali. Im większy adres urządzenia, tym wyższy jest jego priorytet. Konsekwencją takiego podejścia jest nadawanie kontrolerowi (Host-Adapter) identyfikatora największego z możliwych czyli #7. Trochę wbrew logice przydziela się kontrolerowi magistrali 16-bitowej (Wide) również adres #7, ale czyni się tak z pewnych względów historycznych (kompatybilność programowych sterowników urządzeń SCSI). Drugi wyjątek wynika z faktu, iż niektóre kontrolery wymagają by SCSI-ID dysku, z którego ładuje się system operacyjny oznaczony był jako #0.
Magistrala może wykorzystywać swoje linie sygnałowe na jeden z dwóch sposobów: symetryczny lub asymetryczny. W trybie symetrycznym na każdy sygnał przypadają dwie końcówki, w przeciwnym razie jedna z nich połączona jest z masą. System symetryczny jest droższy i rzadko wykorzystywany ale pozwala na łączenie ze sobą układów oddalonych od siebie do 25 m. Wersja asymetryczna dopuszcza Jedynie" 6 m, co jednak w porównaniu z szyną AT-BUS (46 cm) stanowi milowy krok naprzód. Odpowiednio do rodzaju połączenia mówi się o urządzeniach wyposażonych w interfejs symetryczny lub asymetryczny. Oba fizyczne końce magistrali muszą być jednak w obydwu przypadkach obciążone specjalnie dobranymi układami rezystorów (terminatorami). W zależności od technicznej realizacji połączenia i typu okablowania terminatory zlokalizowane są na jednym z urządzeń lub poza nim. Obowiązuje generalna zasada zabraniająca tworzenia


rozgałęzień typu T lub Y. Magistrala musi stanowić jeden ciąg, w którym jest jasno określony koniec i początek.
Rysunek 7.19 przedstawia kilka przykładów wyjaśniających zasady instalowania terminatorów. W większości klasycznych przypadków35 (wyłącznie urządzenia wewnętrzne i stała szerokość magistrali) korzysta się z terminatorów własnych urządzeń. Umieszczane są one przez producenta w pobliżu gniazd doprowadzających magistralę do układów. Urządzenia nie stanowiące fizycznych końców magistrali (nawet jeśli jest to Host-Adap-ter) muszą być pozbawione terminatorów. Aktywowanie terminatorów odbywa się przy pomocy zwór konfiguracyjnych.
Magistrala może łączyć ze sobą (w zależności od szerokości) maksymalnie osiem lub szesnaście urządzeń. Każde z nich może nawiązywać kontakt (i wymieniać dane) z dowolnym innym, przy czym w danym momencie aktywne mogą być wyłącznie dwa z nich. Jednostki aktywne, które są ze sobą połączone, spełniają (na czas tego połączenia określanego też mianem sesji) ściśle określone przez protokół role i nie są równouprawnione. Jedna z nich określana jest mianem inicjatora (w skrócie INIT), a druga jest jednostką docelową (TARG od ang. Target). To, jaka rola przypada danemu urządzeniu w sesji, wynika ze stanu linii sterujących. Niezależnie od ilości urządzeń dołączonych do magistrali można ją zawsze sprowadzić na czas trwania danej sesji do uproszczonego logicznego połączenia inicjatora i jednostki docelowej. To symboliczne połączenie przedstawione jest na rysunku 7.20.
Sytuacja komplikuje się w przypadku mieszania magistrali 16-bitowej z 8-bitową, odgałęzień pracujących w oparciu o okablowanie Ultra-SCSI oraz w momencie jednoczesnego stosowania urządzeń wewnętrznych i zewnętrznych. Przykłady takich konfiguracji znajdzie czytelnik w dalszej części rozdziału.













Magistrala w wersji 8-bitowej składa się z 18 linii sygnałowych, w tym 9 dla sygnałów sterujących i 9 dla danych:
8-bitowa szyna danych DB0 - DB7, która objęta jest kontrolą parzystości. Sygnał kontroli parzystości przekazywany jest linią DBP.
Sygnał zajętości BSY (Busy).
Sygnał wybierania SEL (Selection).
Identyfikator danych C/D (Control/Data).
Sterownik kierunku I/O (Input/Outpuf).
Identyfikator wiadomości MSG (Message).
Para sygnałów do przesyłania z potwierdzeniem REQ i ACK (Reąnest i Acknowledge).
Dwa sygnały specjalne ATN i RST (Attention i Reset).
SCSI w komputerach PC
Magistrala SCSI nie powstała dla gruncie architektury PC ale została do niej zaadaptowana. Początkowo wydawało się, iż nie wyjdzie ona nigdy poza obszar zastosować profesjonalnych, głównie ze względu na barierę ekonomiczną. Po wstępnym okresie ograniczonej aprobaty na rynku masowego konsumenta przyszły "lata tłuste" i spirala cenowa zaczęła się wreszcie kręcić w dobrą stronę. Coraz więcej urządzeń z tym interfejsem pobudziło ospały do tej pory rynek kontrolerów SCSI. Pojawiły się atrakcyjne cenowo płyty główne ze zintegrowanym kontrolerem. Każdy szanujący się producent peryferiów (czytników i nagrywarek CD-R, skanerów, napędów mediów wymiennych) zmuszony jest wypuszczać wersję SCSI.
Wprowadzanie na rynek szeregu nowych urządzeń wyposażonych w ten interfejs powoduje wzrost zainteresowania i skłania do rozbudowy komputerów. Zagadnienia związane z SCSI uchodziły przez długi czas za "wyższą szkołę jazdy" i sztukę uprawianą wyłącznie przez profesjonalistów. Technika ta, początkowo owiana tajemnicą i opatrzona stemplem "tylko dla orłów" nie jest w gruncie rzeczy niczym strasznym, a jeśli przestrzegać kilku elementarnych reguł, odwdzięcza się niezawodnością w działaniu i dobrze znosi częste zmiany konfiguracji. Poznanie tych reguł uchronić może przed zbędnym stresem, utratą czasu, nieprzespanymi nocami lub zniszczonymi nerwami.
SCSI w swej pierwotnej wersji nie był w stanie zbyt długo zaspokoić rosnących wymagań stawianych ze strony urządzeń. Standard ten poddawany jest nieustającym zmianom i przekształceniom. Rośnie zarówno szybkość transmisji jak i szerokość magistrali. W chwili obecnej granice wyznacza tryb Ultra-2 co w połączeniu z 16-szerokością szyny gwarantuje maksymalną przepustowość 80 MB/s.
Tabela 7.22 zawiera zestawienie kolejnych etapów na drodze rozwoju koncepcji SCSI. Poszczególne typy zdefiniowane są jako rozszerzenia stosownych klas, i tak Ultra-SCSI stanowi rozszerzenie SCSI-3. Magistrale 16-bitowe oznaczane są jako szerokie (Wide) w przeciwieństwie do wersji 8-bitowych czyli wąskich (Narrow).
Wąska magistrala SCSI (Narrow) może obsługiwać nie więcej niż 8 urządzeń. Dla zapewnienia połączenia ze światem PC, co najmniej jedno z nich musi być układem sprzęgającym z komputerem (Host-Adapter). Dla pozostałych jednostek mamy do dyspozycji siedem adresów SCSI-ID. Fizyczna kolejność urządzeń na magistrali nie pozostaje w żadnym związku z numeracją adresów SCSI-ID. Urządzeniami tymi mogą być dyski lub zestawy dysków (macierze dyskowe, zwykle dysponujące własnym kontrolerem meldującym się jako niezależne urządzenie), napędy taśm, skanery, czytniki i nagrywarki CD-ROM, pamięci magnetooptyczne, różnorakie media wymienne (ZIP, JAZZ itp.). Konfiguracja taka przedstawiona jest schematycznie na rysunku 7.21.
Tabela 7.22.

Typy magistral SCSI

Klasa; Typ; Maksymalna liczba urządzeń; Maksymalny transfer; Maksymalna długość magistrali;

SCSI-1; SCSI (async.); Host + 7; 5 MB/s; 6 m
SCSI-2; SCSI-Fast (sync.); Host + 7; 10 MB/s; 3 m
SCSI-2; SCSI-Wide; Host+ 15; 20 MB/s; 3 m
SCSI-2; SCSI-Fast-Wide; Host +15; 20 MB/s; 3 m
SCSI-3; Ultra-SCSI; Host + 7*; 20 MB/s; 3 m (1,5 m)*
SCSI-3; Ultra-Wide-SCSI; Host + 7**; 40 MB/s 3 m (1,5 m)*
SCSI-3; Ultra-Wide-SCSI-Diff.; Host+ 15; 40 MB/s; 25 m
SCSI-3; Ultra-2 Wide-SCSI; Host+ 15; 80 MB/s; 12 m

* - Jeżeli liczba podłączonych urządzeń przekroczy 4, dopuszczalna długość magistrali spada do 1,5
** - Kontroler i protokół mogą wprawdzie zaadresować do 15 urządzeń , ale nie jest gwarantowana bezpieczna transmisja ze względu na parametry fizyczne magistrali przy tej częstotliwości.











Host Adapter
Sporo uwagi należy poświęcić na dobór właściwego kontrolera SCSI, bowiem decyduje on w dużej mierze o zachowaniu się całego systemu. Wybór zależy zarówno od zasobności kieszeni jak i typu podłączanych urządzeń (8-bitowe lub 16-bitowe, ewentualnie Ultra lub nawet Ultra-2) oraz topologii magistrali (wewnętrzna, zewnętrzna, mieszana).
W zasadzie należy porzucić myśl o kontrolerach ISA. Są one co prawda do nabycia za śmieszne pieniądze ale to jeszcze nie wszystko(Kontroler ISA zabiera jedną z coraz bardziej cenniejszych w rozbudowanych systemach PC linii przerwań IRQ.). Różnica w cenie naprawdę nie usprawiedliwia takiego wyboru. Proste kontrolery ISA są kompatybilne ze standardem SCSI ale nie wolno ich stosować do nagrywarek CD-R. Uwaga ta dotyczy w szczególności układów pracujących jako Bus-Master-DMA (np. popularny AHA 1542) w komputerach z magistralą PCI. Kanał ISA ma stosunkowo niewielki priorytet i jest blokowany przez magistralę PCI. Przerwany strumień danych w procesie wypalania oznacza wyrzuconą płytkę CD. Jeżeli już koniecznie chcemy posługiwać się kontrolerem ISA wybierzmy taki, który pracuje w trybie PIO (np. AYA1505 lub AYA1515). Układy takie gwarantuj ą tran sfer 2-3 MB/s. Prymitywny kontroler ISA-SCSI dostarczany jest często wraz z niektórymi typami skanerów. Przerwanie strumienia danych w przypadku skanera nie ma naturalnie żadnych negatywnych skutków.
Kontroler nie musi w zasadzie posiadać własnego BIOS-u (i tak jest zwykle w przypadku tych najtańszych modeli) jak długo nie obsługuje urządzeń, z których ładowany jest system operacyjny. Spora grupa urządzeń (wszelkie media wymienne, zarówno taśmy jak i dyski) komunikują się z systemem przy pomocy własnych ładowanych sterowników programowych. Sterowniki takie dostarczane są wraz z urządzeniami lub stanowią fragment systemu operacyjnego(Warto jest zwrócić uwagę na numer wersji i datę stosownych plików. Zdarza się często, iż te dostarczane wraz z systemem operacyjnym są nowsze i bardziej stabilne.).
Jednym z kluczowych pytań, które zadaje sobie użytkownik chcący zmodyfikować swój komputer lub rozbudować go o magistralę SCSI sprowadza się do następującej kwestii: czy lepiej jest zainwestować w nową płytę główną ze zintegrowanym kontrolerem SCSI, czy też postarać się o niezależny kontroler. Na tak postawione pytanie trudno jest udzielić jednoznacznej odpowiedzi bowiem oba punkty widzenia nie są pozbawione swych racji. Aspekt ekonomiczny przemawia zazwyczaj za pierwszym z tych rozwiązań a dodatkowo do dyspozycji pozostaje co najmniej jeden dodatkowy PCI-Slot. Chętni do późniejszego unowocześnienia takiego systemu mogą jednak napotykać na spore trudności. Zintegrowane kontrolery nie zawsze dają się całkowicie deaktywować a uszkodzenia w ich obrębie dyskwalifikują płytę główną jako całość.
Z ogólnych właściwości magistrali PCI wynikają dwa podstawowe tryby pracy, które może stosować kontroler SCSI. Podstawowy i powszechnie stosowany tryb to PCI-Mastering. W tym wypadku kontroler jest informowany jedynie o miejscu w pamięci gdzie leżą lub mają spocząć dane a reszta pracy należy do niego (Memory Transfer).
W trybie PCI-Slave rolę mechanizmu napędowego transmisji danych bierze na siebie CPU. Transmisja odbywa się w formie następujących po sobie cykli dostępu do portów I/O (I/O Transfer).
Warto wiedzieć, iż kontroler SCSI wymaga przydzielenia pewnej ilości tzw. zasobów (Resources). Na potrzeby komunikacji okupowany jest pewien zakres przestrzeni adresowej lub przestrzeni I/O (a w przypadku niektórych kontrolerów obydwa) oraz linia przerwań. Własny BIOS kontrolera (przejmujący obsługę przerwania INT13h) zajmuje oczywiście pewien zakres adresów na pamięć ROM.
BIOS kontrolera SCSI (podobnie jak BIOS komputera PC) posiada programowe złącze konfiguracyjne (Setup) umożliwiające w mniejszym lub większym stopniu na manipulowanie parametrami poszczególnych urządzeń oraz systemu jako całości. Wejście do programu Setup-SCSI odbywa się (podobnie ja w przypadku Setup-PC) poprzez naciśnięcie w odpowiednim momencie(Moment przekazania sterowania z BIOS-PC do BIOS-SCSI sygnalizowany jest stosownym komunikatem, który określa również sposób wejście do programu konfiguracyjnego (w przypadku produktów Adaptec jest to kombinacja Ctrl-A. w innych zwykle poprzez analogię do Setup-PC klawisz Del).) jednego z klawiszy lub ich kombinacji.
Oto niektóre z oferowanych zwykle opcji:
Wysokość maksymalnego transferu dla każdego urządzenia oddzielnie (jeżeli rezygnuje się z automatycznej negocjacji).
Możliwość pominięcia fazy negocjacji (Sync. Negotiatiori). W takim wypadku kontroler nie próbuje wynegocjować najbardziej korzystnego trybu współpracy, lecz tylko zasila urządzenie takim strumieniem jaki jest nastawiony ręcznie.
Możliwość pominięcie tzw. skanowania które wydłuża sumaryczny czas ładowania systemu. Wystarczy przeprowadzić je tylko raz (podczas konfiguracji i w razie ewentualnych modyfikacji).
Opcje dotyczące ładowania systemu (z których urządzeń i w jakiej kolejności)
Możliwość niejednoczesnego uruchamiania silników dysków. Rozkaz Start Unit, rozsyłany jest wówczas do kolejnych urządzeń z opóźnieniem ( Opóźnienie wyliczane jest jako prosta funkcja liniowa adresu SCSI-ID danego urządzenia.) przez co nie startują one na raz. Opcja taka przydatna w systemach składających się z wielu dysków. Ich jednoczesny start mógłby spowodować zakłócenia pracy zasilacza.
Wybór opcji programowej obsługi urządzenia: albo poprzez procedury BIOS kontrolera albo przez ładowalne sterowniki ASPI.
Warto jest przeanalizować topologię planowanej magistrali i sprawdzić możliwość jej realizacji przez dany kontroler pod kątem rodzaju i liczby wyjść. Nowoczesne kontrolery (zarówno te realizowane w formie niezależnych kart PCI jak i te zintegrowane na płytach głównych) dysponują złączami wewnętrznymi i zewnętrznymi. Nadal jednak
obowiązuje generalna zasada, iż magistrala SCSI może mieć jeden koniec i jeden początek (obydwa obciążone terminatorami). Nie są więc dozwolone rozgałęzienia typu Y i T. Te pozornie banalnie proste warunki stają się trudne do spełnienia w momencie wyjścia magistrali na zewnątrz obudowy komputera. Urządzenia zewnętrzne są z reguły nadal 8-bitowe. We wnętrzu komputera królują już formy szerokie (dyski twarde to z reguły W-SCS1, UW-SCSI, lub wręcz U2W-SCSI) ale nadal obecne są czytniki i nagry-warki CD-R posiadające wąski interfejs. Już sam fakt zmian szerokości uniemożliwia wykorzystanie wszystkich wyjść kontrolera jednocześnie. Rysunek 7.22 ilustruje istotę zagadnienia. Nie zaznaczono na nim szczegółów dotyczących instalacji tenninatorów, bowiem do tego tematu powrócimy w oddzielnym punkcie.
Okablowanie
Przez długie lata zdecydowana większość typowych zastosowań magistrali SCSI stosowała wersję asymetryczną, w której to poziomy sygnałów mają punkt odniesienia do
masy. Istniała co prawda również wersja symetryczna ( Dzięki dużemu tłumieniu zakłóceń wersja ta dopuszcza długość przewodów linii aż do 25 m.W tabeli 7.24 przedstawiony jest sposób przyporządkowanie różnicowych sygnałów SCSI końcówkom przewodu płaskiego.) z liniami sygnałowymi S#+ i S#-, a w katalogach producentów można było znaleźć wzmianki o urządzeniach z tym interfejsem ale koszt takiego przedsięwzięcia z pewnością studził zapały wielu projektantów.
Te ogromne różnice w cenie wynikały z konieczności stosowania specjalnych (i przez to drogich) układów interfejsów pracujących z pełną rozpiętością poziomów napięć (HVD - High Yoltage Differential). Aktywowanie różnicowego trybu pracy odbywało się na podstawie oceny poziomu sygnału na końcówce kontrolnej.
Proszę zwrócić uwagę na znaczenie linii 21 w wersjach symetrycznych i asymetrycznych. Poziom napięcia na niej (O - magistrala asymetryczna, l - magistrala symetryczna) dostarcza podłączanym urządzeniom informacji o typie interfejsu. Układy kontrolne nie pozwolą na aktywowanie nadajników i odbiorników linii jeżeli nie ma zgodności typu.
Idea magistrali różnicowej została ponownie wskrzeszona systemie LVD (Low Yoltage Differential), który omówiony zostanie w dalszej części rozdziału. Na razie pozostawmy na boku wszelkie odmiany różnicowe, przyjmując iż służą wyłącznie do zastosowań specjalnych.
Fizyczne realizacja wewnętrznej magistrali 8-bitowej dokonywana jest za pośrednictwem 50-żyłowego przewodu płaskiego. Znaczenie poszczególnych linii zebrane zostało w tabeli 7.23. Każdy z przewodów sygnałowych (zarówno sterujących jak i danych) posiada towarzyszącą mu linię masy. Wyjątek stanowi linia 26 (TERMPWR), której wrażliwość na zakłócenia jest pomijalna. W płaskim przewodzie połączeniowym linie masy oddzielają od siebie linie sygnałowe. Zarówno urządzenia jak i kontroler stawiają w tym wypadku do dyspozycji klasyczne złącze 50-końcówkowe (50-pol/Box Header). Kable z dwoma lub trzema wtykami należą na ogół do standardowego wyposażenia kontrolera. Jeśli przygotowujemy własny przewód (samodzielnie zaprasowując wtyki na taśmę łączącą) trzeba pamiętać, iż minimalna odległość pomiędzy urządzeniami nie może być mniejsza niż 10 cm.
Tabela 7.23.

Przyporządkowanie sygnałów asymetrycznego 8-bitowego interfejsu SCSI liniom 50-końcówkowego przewodu płaskiego

Numer linii; Sygnal;

01; GND; -DBO; 02;
03; GND; ~DB1; 04;
05; GND; ~DB2; 06;
07; GND; -DB3; 08;
09; GND; -DB4; 10;
11; GND; -DB5; 12;
13; GND; -DB6; 14;
15; GND; -DB7; 16;
17; GND; ~DBP; 18;
19; GND; GND; 20;
21; GND; GND; 22;
23; Zarezerwowane; Zarezerwowane; 24;
25; Brak podłączenia; TERMPWR; 26;
27; Zarezerwowane; Zarezerwowane; 28;
29; GND; GND; 30;
31; GND; ~ATN; 32;
33; GND; GND; 34;
35; GND; -BSY; 36;
37; GND; -ACK; 38;
39; GND; -RST; 40;
41; GND; -MSG; 42;
43; GND; -SEL; 44;
45; GND; -C/D; 46;
47; GND; ~REQ; 48;
49; GND; -I/O; 50;


Tabela 7.24.

Przyporządkowanie sygnałów symetrycznego 8-bitowego interfejsu SCSI liniom 50-końcówkowego przewodu płaskiego

Numer linii; Sygnal; Sygnal; Numer linii;

01; GND; GND; 02;
03; +DB0; -DB0; 04;
05; +DB1; -DB; 06;
07; +DB2; -DB2; 08;
09; +DB3; -DB3; 10;
11; +DB4; -DB4; 12;
13; +DB5; -DB5; 14;
15; +DB6; -DB6; 16;
17; +DB7; -DB7; 18;
19; +DBP; -DBP; 20;
21; DIFFSENS; GND; 22;
23; Zarezerwowane; Zarezerwowane; 24;
25; TERMPWR; TERMPWR; 26;
27; Zarezerwowane; Zarezerwowane; 28;
29; +ATN; -ATN; 30;
31; GND; GND; 32;
33; +BSY; -BSY; 34;
35; +ACK; -ACK; 36;
37; +RST; -RST; 38;
39; +MSG; -MSG; 40
41; +SEL; -SEL; 42
43; +C/D; -C/D; 44;
45; +REQ; -REQ; 46;
47; +I/O; -I/O; 48;
49; GND; GND; 50;




























Wewnętrzne fragmenty magistrali 16-bitowej realizowane są również za pomocą przewodu taśmowego ale liczba linii wzrasta do 68. Inne są też w tym wypadku gniazda i wtyki (68-pol/Sub-D).
Magistrala zewnętrzna nie może ze zrozumiałych względów używać kabli płaskich. Okrągłe przewody obejmują swoim pancerzem 25 lub 34 par skrętek. Inne są też zwykle gniazda i wtyki. W wersji 8-bitowej spotkać można 50-pol/Sub-D i 50-pol/Centronics z rastrem 1,27 mm lub 2,54 mm a w wersji 16-bitowej 68-pol/Sub-D i 68-pol/Centronics z rastrem 1,27 mm.
Technika Ultra i Ultra-2 wymaga w obrębie magistrali zewnętrznej przewodów szczególnej jakości, które można odróżnić od klasycznego okablowania (oprócz napisów na pancerzu) dzięki stosunkowo dużej grubości.
Terminatory
SCSI jest magistralą równoległą, którą przesyłane są przebiegi prostokątne o stosunkowo ostrych zboczach. Częstotliwości tych przebiegów są tak wysokie iż wywołują zjawiska falowe w przewodach. Specyfikacja SCSI wymaga, by obydwa końce przewodów sygnałowych (zarówno szyny danych jak i linii sterujących) były zamknięte terminatorami. Jeśli wartość terminatora zbliżona jest do oporu falowego linii, osiąga się minimalizację odbić sygnałów, ogranicza powstawanie fal stojących i eliminuje inne niekorzystne zjawiska.
Proszę zwrócić uwagę, iż zakończeniu podlega fizyczny koniec magistrali a nie ostatnie urządzenie na niej. Jeśli z jakichkolwiek względów pozostawiamy odcinek kabla biegnący jak na razie "do nikąd", trzeba go zakończyć terminatorem. Nie wolno w żadnym wypadku stosować praktyk znanych z AT-BUS (pozostawiona wolna wtyczka na końcu przewodu płaskiego).
W typowej konfiguracji, która skupia wszystkie urządzenia SCSI we wnętrzu obudowy komputera, Host-Adapter stanowi jeden z fizycznych końców magistrali. Nowoczesne kontrolery dysponują z reguły również wyjściem na zewnątrz. Odcinki wewnętrzne (zarówno 8-bitowe jak i 16-bitowe) łączone są przewodem płaskim a fragmenty zasilające urządzenia zewnętrzne posługują się nieco innymi wtykami oraz dostosowanym lepiej do warunków zewnętrznych kablami okrągłymi. W systemie o takiej złożonej konfiguracji, kontroler nie stanowi już żadnego z końców magistrali i terminatory należy rozlokować na końcach odcinków: jeden na końcu segmentu wewnętrznego a drugi na końcu segmentu zewnętrznego. Specjalnego traktowania wymagają zewnętrzne wyjścia kontrolerów zintegrowanych z płytą główną. Wyjście takie tworzy odcinek płaskiego przewodu prowadzący od płyty głównej do blaszki z gniazdem (np. 68-pol/Centronics) zaślepiającej jeden z otworów na tylnej części obudowy(Problem dotyczy obudów i płyt w formacie AT. W technice ATX gniazdo wyjściowe SCSI lutowane jest bezpośrednio do płyty głównej.).

Jeżeli decydujemy się na jego

instalację, trzeba zadbać a jego właściwe zakończenie. W wypadku obecności urządzeń zewnętrznych, ostatnie z nich jest obarczone terminatorem. Jeżeli jednak okrągły przewód zewnętrzny zostanie usunięty, terminator należy umieścić w samym gnieździe.
Widać, iż w takim wypadku terminator nie rezyduje na żadnym z urządzeń. Drugi przypadek tego rodzaju ujęty specyfikacją SCSI dotyczy terminatorów magistrali symetrycznej, które zlokalizowane są jako pseudo-urządzenia na fizycznych końcach magistrali SCSI ale poza urządzeniami. Jedne i drugie terminatory trzeba jednak jakoś zasilać. Rozwiązaniu tego problemu służy wkomponowana w magistralę linia TERMPWR. Specyfikacja dopuszcza by źródło zasilania i jego odbiornik (terminator), które łączone są linią TERMPWR, mogły znajdować się na różnych urządzeniach. Linię TERMPWR może (zgodnie z regułami SCSI-1) zasilać tylko jedno ze źródeł, ale za to z dowolnie wybranego urządzenia. W praktyce urządzeniem tym był kontroler SCSI. Wersja SCSI-2 specyfikacji czyni ustępstwo w tym zakresie, dopuszczając do głosu jednocześnie każde z obecnych urządzeń. W praktyce należy kierować się następującymi zasadami:
W klasycznych przypadkach źródłem zasilania TERMPWR powinien być kontroler.
Przy wyjątkowo długich kablach połączeniowych sięgających limitu określonego przez specyfikację, lepsze efekty przynosi jednoczesne zasilanie TERMPWR (wraz ze swymi aktywnymi terminatorami) przez obydwa urządzenia końcowe.
Rola terminatora nie ogranicza się jedynie do symulowania rezystancji oporu falowego magistrali. Terminatory wymuszają pewien potencjał spoczynkowy przewodów sygnałowych (zarówno w przypadku magistrali asymetrycznej jak i symetrycznej). Pierwotnie stosowano proste terminatory pasywne (330 Q od masy i 220 H do zasilania) realizowane w formie sieci rezystancyjnych (33x, 22x, 331/221). Układy tego typu utrzymywały potencjał asymetrycznych linii sygnałowych na poziomie około 3,3 V. Od pewnego czasu dominują wyłącznie terminatory aktywne posiadające dużo lepsze parametry.
Układy aktywne pracują z udziałem scalonych stabilizatorów ( Układy scalone firmy Dallas typu DS2107 lub Unitrode UC5601) napięcia (2,85 V) i oporów ograniczających pobór prądu (110 Q). Zasilanie stabilizatora odbywa się z linii TERMPWR. Zalety terminatorów aktywnych wynikają ze zwiększonej odporności źródeł stabilizowanych na raptowne zmiany poziomów sygnałów wywołane zmianami obciążenia (lepiej się je kompensuje). Magistrala zakończona tenninatorami aktywnymi jest z reguły w mniejszym stopniu podatna na zakłócenia.
Im szybsza jest magistrala tym bardziej niezbędne staje się posługiwanie terminatorami aktywnymi. Chociaż w dzisiejszych czasach jest prawie niemożliwością znaleźć urządzenie SCSI pracujące wyłącznie w najprostszym trybie SCSI-1 (do 5 MB/s) na rynku nadal spotkać można tanie kontrolery SCSI wyposażone w pasywne terminatory. Należy zdecydowanie odradzać sięgania po tego rodzaju produkty. Najbardziej pewnym sposobem rozpoznania typu terminatorów jest (w przypadku kontrolerów SCSI) dokładny przegląd opcji programu konfiguracyjnego BIOS-SCSI. Jeżeli jakakolwiek manipulacja tenninatorami możliwa jest przez Setup-SCSI mamy z pewnością do czynienia z terminatorami aktywnymi.
Rozszerzenia SCSI-3
Jedno z kolejnych rozszerzenie specyfikacji znane jest pod pojęciem Ultra-SCSI. Zwiększenie transferu uzyskiwane jest poprzez skrócenie czasu cyklu, a to automatycznie wymusza większe stromości zboczy impulsów. W ślad za tym idzie naturalnie dalszy wzrost wymagań jakościowych w stosunku do okablowania. Płaskie przewody wewnętrzne stwarzają mniejsze problemy, dużo gorzej jest z przewodami łączącymi urządzenia zewnętrzne.
Kolejne rozszerzenia standardu oferują coraz to szersze pasmo przenoszenia. W chwili obecnej mamy następujące warianty podstawowe FAST, Wide i Ultra. Sumaryczną liczbę możliwych trybów pomnażają wzajemne kombinacje na przykład Ultra-Wide. Warianty podstawowe wy stępuj ą teoretycznie zarówno w wersji asymetrycznej (Single Ended) jak i różnicowej (Differentiat). W praktyce spotyka się jedynie typ asymetryczny. Znacznie droższa technika różnicowa króluje w świecie dużych komputerów i serwerów profesjonalnych systemów baz danych, bankach i instytucjach użyteczności publicznej. Przy próbach adaptacji urządzeń tego typu dla potrzeb domowego PC nie wolno zapominać, iż jakkolwiek zarówno okablowanie jak i złącza (wtyczki i gniazda) różnicowej magistrali SCSI wyglądają tak samo, znaczenie końcówek jest inne.
Techniki Wide i Ultra-Wide posługuje się złączami 68-końcówkowym (68-pol/Sub-D i 68-pol/Centronics) o odstępie kontaktów 1,27 mm. Ta bardzo zwarta konstrukcja sprawia, iż gniazdo takie jest węższe od 50-końcówkowego złącza Centronics opartego na rastrze 2,54 mm.

Stosunkową nowością na rynku są urządzenia pracujące w standardzie Ultra-2 oznaczane też jako LVD (Low Voltage Differential}. Magistrala SCSI typu Ultra-2 jest dwukrotnie szybsza od swego odpowiednika Ultra i może osiągnąć (w wersji 16-bitowej) transfer 80 MB/s.
LVD stanowi kolejny krok w rozwoju udanej i sprawdzonej koncepcji magistrali równoległej SCSI. Uwzględniony został zarówno aspekt ekonomiczny (możliwość wykorzystania dotychczasowych urządzeń) jak i wzrost zapotrzebowania na pasmo przepustowe. Technika Ultra-2 pozwala ponadto na znaczne zwiększenie długości przewodów połączeniowych przy zachowaniu tych samych wtyków i gniazd.
LVD jest z założenia formą SCSI pracującą wyłącznie w trybie różnicowym i nie ma wersji asymetrycznej (Single Ended SCSI}. Przejście na system różnicowy jest niezbędne dla uzyskania zwiększonej odporności na zakłócenia. Jednak w przeciwieństwie do wcześniej stosowanej techniki HVD( Układy l/O (Transceivers) techniki HVD nie dają się zintegrować w ramach taniego procesu CMOS, którym wytwarza się większość powszechnie stosowanych układów scalonych.)
(High Yoltage Differential] pracującej na poziomach różnicowych 3 V (+1,5 V i -1,5 V) sięgnięto po nowoczesne rozwiązanie operujące w przedziale 120 mV (+60 mV i -60 mV).


Tabela 7.25.
Przyporządkowanie sygnałów interfejsu SCSI Ultra i Ultra Wide

Sygnał; Wtyk 68-pin; Sygnał;
50-pin
GND; 1; 35; -DB12;
GND; 2; 36; -DB13;
GND; 3; 37; -DB14;
GND; 4; 38; -DB15;
GND; 5; 39; -DBP1;
GND; 6; 1; 26; 40; ~DB0;
GND; 7; 2; 27; 41; ~DB1;
GND; 8; 3; 28; 42; ~DB2;
GND; 9; 4; 29; 43; ~DB3;
GND; 10; 5; 30; 44; ~DB4;
GND; 11; 6; 31; 45; ~DB5;
GND; 12; 7; 32; 46; -DB6;
GND; 13; 8; 33; 47; ~DB7;
GND; 14; 9; 34; 48; -DBPO;
GND; 15; 10; 35; 49; GND;
GND; 16; 11; 36; 50; GND;
(TERMPWR); 17; 12; 37; 51; (TERMPWR);
(TERMPWR); 18; 13; 38; 52; TERMPWR;
res.; 19; 14; 39; 53; res.;
GND; 20; 15; 40; 54; GND;
GND; 21; 16; 41; 55; ~ATN;
GND; 22; 17; 42; 56; GND;
GND; 23; 18; 43; 57; ~BSY;
GND; 24; 19; 44; 58; ~ACK;
GND; 25; 20; 45; 59; ~RST;
GND; 26; 21; 46; 60; ~MSG;
GND; 27; 22; 47; 61; -SEL;
GND; 28; 23; 48; 62; ~C/D;
GND; 29; 24; 49; 63; -REQ;
GND; 30; 25; 50; 64; ~I/O;
GND; 31; 65; -DBS;
GND; 32; 66; -DB9;
GND; 33; 67; -DB10;
GND; 34; 68; -DB11;

68- pin - liczby brzegowe np:1, 35; 34, 68
50-pin - środkowe liczby np:1, 26; 25, 50


Tabela 7.26.

Porównanie możliwości magistrali Ultra-SCSI i U/tra-2-SCSl

Typ; Maksymalna liczba urządzeń; Maksymalny transfer; Maksymalna długość magistrali;
Ultra-SCSI; Host + 7; 20 MB/s; 3 m (1,5 m)*;
Ultra-Wide-SCSI; Host + 7; 40 MB/s; 3 m (1,5 m)*;
Ultra-2-SCSI; Host + 7; 40 MB/s; 12 m;
Ultra-2-Wide-SCSl; Host + 1 5; 80 MB/s; 12 m;


























Cały system SCSI wraz ze swymi dotychczasowymi mutacjami jest, jak już wielokrotnie podkreślano, koncepcją bardzo elastyczną. Zapewnia między innymi pełną zgodność "w dół" i to w obie strony. Oznacza to, iż nowoczesny kontroler U2W obsługuje urządzenia starszej generacji: Fast, Wide i Ultra. W przeciwieństwie jednak do magistrali IDE, powolne urządzenia nie hamują pracy całej magistrali i nie blokują szybkich jednostek. Parametry transmisji uzgadniane są w specjalnej fazie negocjacji indywidualnie dla każdego z urządzeń. Dzięki temu gwarantowana jest poprawna praca nowoczesnych urządzeń U2 (lub nawet U2W jeśli zastosowano odpowiednie "przejściówki") z kontrolerami, które nie znają wcale tego trybu pracy. Maksymalna prędkość transferu ograniczana jest naturalnie do wartości najwyższego z dopuszczalnych trybów kontrolera.
Kompatybilność LVD z innymi odmianami interfejsów wymaga wprowadzenia systemu rozpoznawania typu urządzenia. Magistrala nie może być bowiem użytkowana naprzemiennie jako symetryczna i asymetryczna. Urządzenia U2(W) badają mianowicie stan specjalnej linii DS (Differential Sense). Linia ta zwierana jest do masy przez każde urządzenie z klasycznym interfejsem asymetrycznym (Single-Ended). Jeśli jednak stwierdza się wysoki poziom logiczny, oznacza to możliwość przełączenia w tryb LVD. Wiele nowoczesnych kontrolerów rozdziela magistralę SCSI na dwa odcinki: różnicowy i symetryczny. Pozwala to na wydzielenie urządzeń LVD i zapewnienie im odpowiedniego środowiska pracy.
Warto zdawać sobie sprawę, iż często możliwości oferowane przez magistralę danego typu nie mają praktycznego zastosowania a inwestycja w drogi sprzęt jest pieniędzmi wyrzuconymi w błoto. Nawet najszybsza magistrala będzie czekać na dane dostarczane przez wolniejsze od niej urządzenia. Szczytowa wartość transferu odnosi się co najwyżej do danych zawartych w pamięci podręcznej (Cache). Aby się one tam znalazły potrzeba jednak często czasu o rząd wielkości większego. Bezpośredni transfer z/do nośnika odbywa się obecnie w najlepszym razie (dyski wirujące z prędkością 10000 obr/min) w tempie kilkunastu MB/s. Szybkie czytniki CD-ROM (x50) osiągają w najbardziej sprzyjających warunkach (ścieżki zewnętrzne) transfer poniżej 6 MB/s. Nagry-warki CD-ROM, nawet jeśli pracują w szybkim trybie x8 ograniczają swe zapotrzebowanie na strumień danych do wielkości około l MB/s. Wyraźnie widać, iż nie zawsze konieczne jest instalowanie kontrolera U2W. Sytuacja zmienia się w momencie wkraczania w dziedziny zastosowań specjalnych, takich jak macierzy dysków, systemów RAID itp. W układach takich osiąga się zdecydowanie lepsze wykorzystanie pasma magistrali bowiem korzysta z niej jednocześnie wiele urządzeń a dzięki naprzemiennym cyklom dostępu do dysków dane znajdują się prawie zawsze w pamięci podręcznej.
Organizacja pracy magistrali SCSI
W punkcie tym wgłębimy się nieco bardziej w sprawy dotyczące protokołu, przy czym zajmować się będziemy wyłącznie SCSI w klasycznej wersji 8-bitowej bez wdawania się w szczegóły odróżniające różne mutacje wyższego rzędu takie jak Wide i Ultra.
Wszystkie sygnały magistrali SCSI (sterujące i danych) są zanegowane i przyjęło się zapisywanie ich jako -SYGNAŁ. Oznacza to, że interpretacja fizyczna (poziomy na-
pięć) jest odwróceniem stanów logicznych O i 1. Dla takich sygnałów obowiązuje notacja przedstawiona w tabeli 7.27. W książce tej posługiwać się będziemy dla uproszczenia zapisem SYGNAŁ, mając jednak stale na uwadze jego negację. Wszystkie rysunki przebiegów opierać się będą na przyjęciu zasady, że obrazuje się stan logiczny sygnału, a nie jego napięcie.
Tabela 7.27.

Fizyczna realizacja stanów logicznych sygnałów magistrali

Stan logiczny; Realizacja fizyczna: Asymetryczna,Różnicowa;

1 (prawda); poziom niski (< 0,8 V), Poziom na L+ > Poziom na L#_;
0 (fałsz); poziom wysoki (> 2,4 V), Poziom na L. > Poziom na L#+;




W klasycznej i najczęściej stosowanej asymetrycznej magistrali SCSI poziomy napięć utrzymują się w przedziale wyznaczonym przez technikę TTL, tj. od zera do +5 V. Wymuszenie logicznej jedynki czy też mówiąc inaczej stanu "prawdy" nazywać będziemy też aktywowaniem danego sygnału. W przeciwnym razie sygnał będzie określany często mianem dezaktywowanego, a odpowiadająca mu linia mianem zwolnionej. Oznacza to, że jeżeli wykres sygnału przebiega po osi OX (wartość logiczna 0), towarzyszy temu wysoki poziom napięcia. Wszystkie przewody magistrali "podciągnięte" są za pomocą terminatorów do napięcia około +3 V. Tak więc sama magistrala (w hipotetycznym stanie biernym bez czynnych urządzeń ale z działającymi terminatorami) utrzymuje swoje linie na tym poziomie. Urządzenie, które chce aktywować dany sygnał, sprowadza potencjał odpowiadającej mu linii do poziomu bliskiego O V. Proszę jednak zauważyć, że zwolnienie linii nie oznacza bynajmniej, iż musi ona się "podnieść" do poziomu wysokiego. Inne urządzenie, które też ma dostęp do magistrali, może przecież w tym czasie również aktywować ten sygnał. Zjawisko to nazywane jest często "sumowaniem po drucie", dla podkreślenia realizowanej tu funkcji sumy logicznej bez udziału elementów aktywnych (np. bramek logicznych).
Fazy pracy magistrali
Faza w jakiej znajduje się magistrala daje się zawsze - a dokładniej nie później niż po czasie ustalenia (Dla SCSI-l 400 ns.)(Bus Settle Delay), który należy uwzględnić na ustabilizowanie się stanu sygnałów jednoznacznie określić jako funkcja stanu sygnałów sterujących.

Standard SCSI definiuje następujące fazy:
-szyna wolna,
-współzawodnictwo,

- selekcja,
- reselekcja,
- fazy informacyjne:
- rozkazowa,
- danych,
- statusu,
- wiadomości,
- stany nadzwyczajne:
- zerowanie,
- uwaga.
O wyborze rodzaju fazy informacyjnej decyduje urządzenie TARG sterujące liniami C/D, I/O i MSG tak jak to przedstawiono w tabeli 7.29. TARG jest jedynym uprawnionym do posługiwania się tymi sygnałami w fazach informacyjnych.
Sygnały sterujące nie są ogólnie dostępne dla wszystkich urządzeń w dowolnej z faz. Niektóre linie natomiast (zależnie od fazy) mogą być sterowane przez wiele urządzeń jednocześnie co realizuje funkcję logiczną OR.
Linia sygnału "S"
Punkt podłączenia urządzenia 1 - dochodzi do lini sygnału Punkt podłączenia urządzenia 2 - dochodzi do lini sygnału

Urządzenie I; Urządzenie 2; Stan logiczny sygnału "S"

zwalnia sygnał S; zwalnia sygnał S; 0
zwalnia sygnał S; aktywuje sygnał S; 1
aktywuje sygnał S; zwalnia sygnał S; 1
aktywuje sygnał S; aktywuje sygnał S; 1





Z sygnału dodatkowego RST może skorzystać każde urządzenie w dowolnym momencie. Funkcja ATN natomiast może być wywołana tylko w ściśle określonym kontekście.
Prawa dostępu urządzeń do sygnałów sterujących i szyny danych w poszczególnych fazach pracy magistrali SCSI zebrane są w tabeli 7.28.
Szyna wolna (Bus Free)
W fazie BUS FREE (szyna wolna) żadne z urządzeń nie korzysta z magistrali SCSI. Z drugiej strony jednak każde urządzenie może przystąpić do próby zawładnięcia magistralą. Stan sygnałów kontrolnych przedstawiony jest na lysunku 7.27.
Tabela 7.28.

Uprawnienia urządzeń do linii magistrali

Faza; Linia: BSY, SEL, I/O, C/D, MSG, REQ, ACK, (DB, P), ATN, RST,
Bus Free; F F F F F F F F F D
Arbitration; D W F F F F F ID F D
Selection; I/T I F F F F F I I D
Reselection; I/T T T F F F T I D
Command; T F T T T T I I I D
Data In; T F T T T T I T I D
Data Out; T F T T T T I I I D
Status; T F T T T T I T I D
Message In; T F T T T T I T I D
Message Out; T F T T T T I I I D

D - linia może być sterowana przez dowolne z urządzeń lub nawet wiele z nich.
I - prawo do sterowania ma tylko urządzenie INT.
ID - każde z urządzeń ubiegających się o przydział magistrali SCSI (biorących udział w fazie Arbitration) wystawia na stosowną linię szyny danych (DBO - DB7) swój identyfikator adresowy SCSI-ID.
I/T - INT lub TARG, albo INT i TARG jednocześnie mogą sterować linią.
T - prawo do sterowania ma tylko urządzenie TARG.
W - prawo do sterowania ma tylko to urządzenie, które wygrało w fazie Arbitration.
F - linia nie jest sterowana przez żadne z urządzeń. Terminatory utrzymują ją na poziomie logicznym 0, co odpowiada napięciu około +3 V.




















Urządzenia wykrywają tę fazę na podstawie oceny poziomów sygnałów sterujących SEL i BSY. Jeżeli oba te sygnały utrzymują się w stanie logicznego zera (czyli są nieaktywne
- odpowiada to wysokiemu poziomowi napięcia) przez czas co najmniej 400 ns, szyna jest w stanie Bus Free.
Urządzenie które wykryło tę fazę, ma obowiązek zwolnić wszystkie linie w maksymalnym czasie 800 ns. Innymi słowy można przyjąć, że najpóźniej po czasie 1,2 |is od momentu ustanowienia BSY=SEL=0 wszystkie urządzenia odłączyły się od magistrali.
Faza BUS FREE ma miejsce w następujących sytuacjach:
TARG zwalnia linię BSY w przypadku gdy:
wykryto stan RESET,
TARG odebrał wiadomość ABORT lub BUS DEYICE RESET,
TARG stwierdził nienormalne (nie ujęte w protokole) zachowanie magistrali.
INIT zwalnia linię SEL w przypadku niepomyślnego zakończenia fazy SELECT-ION lub RESELECTION (np. przekroczenie czasu oczekiwania na odpowiedź).
Jeżeli INIT wykryje niespodziewane wejście w fazę BUS FREE, powinien żądać od TARG podania szczegółowych przyczyn wysyłając polecenie REQUEST SENSE.
Faza rozstrzygania (Arbitration Phase)
W fazie rozstrzygania urządzenie dokonuje próby przejęcia szyny. Ponieważ może się zdarzyć, iż próbę taką podejmuje jednocześnie kilka z urządzeń, niezbędny jest mechanizm wyłaniający jednego zwycięzcę. Zależności czasowe towarzyszące fazie rozstrzygania przedstawia rysunek 7.28.
Procedura rozstrzygania posługuje się następującym algorytmem:
Punktem wyjścia jest faza BUS FREE, tj. BSY - SEL = 0.
Urządzenie wchodzące do współzawodnictwa aktywuje sygnał BSY (tj. wymusza na nim niski poziom napięcia), a na szynie danych (DBO - DB7) magistrali kładzie swój identyfikator SCSI-ID. Stan ten przedstawia rysunek 7.29.
Rysunek 7.28.
Magistrala SCSI w fazie Arbitration
Arbitration Delay [min. 2,4 milisekundy] - minimalny okres oczekiwania na ocenę priorytetów na szynie danych, liczony przez urządzenie od momentu aktywowania sygnału BSY. Urządzenie takie wchodzi w fazę Arbitration aktywując sygnał BSY i jednocześnie wystawiając swój SCSI-ID na szynę danych.
Bus Clear Delay [max. 800 nanosekund] - maksymalny dopuszczalny okres czasu pomiędzy (jednym z trzech):
wykryciem fazy BUS FREE (tj. BSY=0, SEL=0) lub
stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał SEL w fazie ARBITRATION) lub
wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Free Delay [min. 800 nanosekund] - minimalny okres czasu, który musi odczekać każde urządzenie chcąc aktywować linię BSY (tj. pragnące wejść w fazę Arbitration) od momentu wykrycia stanu Bus Free.
Bus Set Delay [max. 1,8milisekundy] - maksymalny dopuszczalny okres czasu, który może upłynąć od momentu wykrycia fazy Bus Free do wejścia w fazę Arbitration (tj. aktywowania linii BSY i wystawienia SCSI-ID na szynę danych).
Bus Settle Delay [min. 400 nanosekundy] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.





















Wspomniane wyżej urządzenie odczekuje pewien okres czasu (Arbitration Delay) i przechodzi do analizy stanu linii DBO - DB7. Możliwe są następujące przypadki:
jedyną aktywną linią jest bit własnego identyfikatora,
aktywna jest również jedna z linii o niższym adresie,
aktywna jest również jedna z lini o wyższym adresie.
Waga dowolnego z bitów szyny danych ma tu wymiar liczby określającej priorytet danego urządzenia (o tym właśnie adresie SCSI-ID). Priorytet ten rośnie wraz ze wzrostem tego adresu, tzn. najwyższy priorytet ma jednostka identyfikowana przez ID = 7.
W przypadku pierwszym urządzenie czuje się uprawnione do przejęcia kontroli nad magistralą i daje o tym znać aktywując linię SEL.
Sytuacja z punktu drugiego daje się sprowadzić do tej z punktu pierwszego, z tym, że przegrywa jednostka o niższym priorytecie. Na rysunku 7.28 urządzenie o adresie ID = l przegrywa z tym o adresie ID = 3, a w chwilę potem ID = 3 przegrywa z ID = 7.
Jeżeli jednostka napotyka stan z punktu trzeciego, ma obowiązek wycofać się z konkurencji zwalniając sygnał BSY.
Uwaga:
Urządzenie wystawiające swój SCSI-ID na szynę danych steruje wyłącznie linią odpowiadającego sobie bitu DBx. Sterowanie to oznacza sprowadzanie tej linii do wysokiego poziomu logicznego, co w przyjętej konwencji równa się wymuszeniu napięcia O V. Inne z linii szyny danych muszą pozostać nietknięte. W przypadku linii kontroli parzystości DBP standard przewiduje:
albo zakaz sterowania tą linią,
albo sterowanie do poziomu logicznej jedynki (O V).
W fazie ARBITRATION stan tej linii jest więc całkowicie nieokreślony.
Wybór (Selection Phase)
W fazie tej urządzenie które uzyskało dostęp do magistrali, staje się jednostką inicjującą (INIT) przebieg dalszych działań i dokonuje selekcji jednostki docelowej (TARG), do której będzie się zwracać. Taką wybieraną jednostką może być np. twardy dysk, któremu będzie się zlecać wykonanie określonej funkcji, choćby czytanie bloku danych. Charakterystyczny dla tej fazy jest brak aktywności sygnału sterującego I/O, co stanowi podstawę do odróżnienia od opisywanej w następnym punkcie fazy reselekcji.
W prostych systemach, w których nie jest implementowana faza rozstrzygania, możliwe jest bezpośrednie wejście (z fazy BUS FREE) urządzenia INIT do fazy wyboru. Sytuację taką przedstawia rysunek 7.30.
Rysunek 7.30.
Bezpośrednie wejście urządzenia w fazę Selection
Bus Clear Delay [max. 800 nanosekund] - maksymalny dopuszczalny okres czasu pomiędzy (jednym z trzech):
wykryciem fazy BUS FREE (tj. BSY=0, SEL=0) lub
stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał SEL w fazie ARBITRATION) lub
wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Settle Delay [min. 400 nanosekund] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
Deskew Delay [min. 45 nanosekund] - Czas przeznaczony na kompensację różnic w czasach propagacji sygnałów pomiędzy różnymi urządzeniami.
Obsługa dysku twardego
451
Mamy tutaj następujący przebieg wydarzeń:
INIT odczekuje co najmniej 800 nanosekund od momentu wykrycia fazy BUS FREE.
INIT wystawia na szynę danych dwa identyfikatory SCSI-ID: swój oraz jednostki TARG. Stan szyny danych w tym momencie przedstawia rysunek 7.31.





















Uwaga:
W systemach, w których jest tylko jeden INIT (brak fazy reselekcji) wystarczy dla uproszczenia aktywować w tym momencie jedynie adres jednostki wybieranej (TARG).
Po odczekaniu co najmniej 90 nanosekund INIT aktywuje sygnał SEL i oczekuje odpowiedzi (w postaci sygnału na linii BSY) od wywoływanej jednostki docelowejTARG.
W systemach bardziej rozbudowanych wejście w fazę wyboru musi poprzedzać faza rozstrzygania (ARBITRATION). Sytuację taką przedstawia rysunek 7.32.
Rysunek 7.32.
Faza Arbitration poprzedza wejście urządzenia w fazę Selection










Bus Clear Delay [max. 800 nanosekund] - maksymalny dopuszczalny okres czasu pomiędzy (jednym z trzech):
wykryciem fazy BUS FREE (tj. BSY=0, SEL=0) lub
stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał SEL w fazie ARBITRATION) lub
wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
Deskew Delay [min. 45 nanosekund] - Czas przeznaczony na kompensację różnic w czasach propagacji sygnałów pomiędzy różnymi urządzeniami.
Podobnie i w tym przypadku:
INIT odczekuje co najmniej 1,2 milisekundy liczone od momentu aktywowania SEL (pozostałość po wygranej fazie ARBITRATION).
INIT wystawia na szynę danych dwa identyfikatory SCSI-ID: swój oraz jednostki TARG. Stan szyny danych jest w tym momencie taki, jak to już przedstawiono na rysunku 7.31.
Uwaga:
W systemach, w których jest tylko jeden INIT (brak fazy reselekcji) wystarczy dla uproszczenia aktywować w tym momencie jedynie adres jednostki wybieranej (TARG).
INIT zwalnia linię BSY po odczekaniu co najmniej 90 nanosekund. INIT musi teraz odczekać co najmniej 400 nanosekund zanim może spodziewać się odpowiedzi (w postacisygnału na linii BSY) od TARG.
Zarówno w prostych, jak i złożonych systemach urządzenie TARG ma prawo uważać się za wybrane, gdy spełnione są następujące warunki:
urządzenie wykrywa swój adres SCSI-ID na szynie danych;
sygnał SEL jest aktywny;
sygnały BSY i l/O pozostają nieaktywne w czasie co najmniej 400 ns.
Odpowiedź
Urządzenie które stwierdzi, że zostało wybrane powinno odpowiedzieć w przeciągu 200 milisekund aktywując linię BSY. Najpóźniej w 90 ns po uzyskaniu takiego potwierdzenia jednostka wybierająca (INIT) musi zwolnić sygnał SEL. Dopiero w tym momencie dopusz czalne sąjakiekolwiek zmiany na szynie danych magistrali.
Przekroczenie czasu oczekiwania na odpowiedź
Jeżeli jednostka wybierająca nie otrzymuje oczekiwanej odpowiedzi w czasie 250 u,s następuje przekroczenie czasu (ang. Time Out). Rozpoczyna się następująca sekwencja:
INIT aktywuje linię RST, aby wywołać stan RESET.
INIT steruje sygnał SEL i zwalnia szynę danych (obydwa SCSI-ID).
Przez 200 milisekundy oczekiwana jest odpowiedź od TARG. Jeżeli odpowiedź mimo tego nie nadchodzi, INIT zwalnia SEL i pozwala wejść magistrali w fazę BUS FREE.
Jeżeli odpowiedź nadejdzie w powyżej określonym czasie INIT uznaje, że faza SELECTION zakończyła się pomyślnie.
Reselekcja (Reselection)
W fazie tej następuje ponowne nawiązanie kontaktu między INIT i TARG, przy czym tym razem inicjatywa wychodzi ze strony TARG. System taki pozwala na natychmiastowe zwolnienie magistrali (tuż po przekazaniu rozkazu) i oddaniu jej do dyspozycji innych urządzeń.
Dzięki takiemu rozwiązaniu tworzą się kanały logiczne łączące różne pary urządzeń. W danym momencie magistrala może łączyć tylko jedną parę; inne w tym czasie mogą przetwarzać rozkazy (np. pozycjonować głowice, przewijać taśmę, dokonywać kompresji danych itp.).
Operacja odczytu sektora dysku trwa stosunkowo długo. Sumując wszystkie nieuniknione opóźnienia otrzymuje się wysoce prawdopodobną realistyczną wartość 20 milisekunds, zanim512 bajtów danych gotowych jest do przesłania do pamięci.
Średnio wydajna magistrala SCSI (transfer 5 MB/s) może w tym czasie przetransportować około 100 kB różnych informacji. Stopień wykorzystania magistrali wynosiłby więc tylko 0,5 % gdyby urządzenia blokowały się nawzajem.
Tak więc TARG nawiązuje kontakt z INIT dopiero wtedy, gdy gotów jest do przekazywania danych. Urządzenie pragnące wejść w fazę RESELECTION musi przejść przez ARBITRATION aby uzyskać dostęp do szyny. Cechą charakterystyczną odróżniającą tę fazę od SELECTION jest aktywny sygnał I/O.
Stan magistrali SCSI w fazie RESELECTION przedstawiony jest na rysunku 7.33.
Rysunek 7.33.
Magistrala SCSI w fazie reselekcji















Bus Clear Delay [max. 800 nanaosekund] - maksymalny dopuszczalny okres czasu pomiędzy (jednymz trzech):
wykryciem fazy BUS FREE (tj. BSY=0, SEL=0) lub
stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. zosta! aktywowany sygnał SEL w fazie ARB1TRATION) lub
wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Bus Settle Delay [min. 400 nanosec,] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały
Deskew Delay [min. 45 nanosec.] - Czas przeznaczony na kompensację różnic w czasach propagacjisygnałów pomiędzy różnymi urządzeniami.
Uwaga:
Faza reselekcji może być używana wyłącznie w tych systemach, które mają zaimple-mentowaną fazę rozstrzygania.
Wejście w fazę
TARG musi uzyskać kontrolę nad szyną przechodząc przez fazę ARBITRA-TION (patrz uwaga powyżej) i wychodzi z niej z aktywnym sygnałem SEL.
TARG musi odczekać l ,2 milisec od momentu w którym aktywował SEL.
TARG wystawia na szynę danych DBO - DB7, DBP identyfikatory SCSI-ID swoje i tej jednostki INIT, z którą zamierza się powtórnie połączyć. Stan szyny danych w tym momencie przedstawiony jest na rysunku 7.34.
Po wystawieniu identyfikatorów adresowych aktywowany jest sygnał sterujący I/O.
TARG odczekuje 90 nanosec, i zwalnia sygnał BSY.
TARG odczekuje co najmniej 400 nanosec. na odpowiedź (BSY) ód jednostki INIT.






















Odpowiedź
Urządzenie uznaje, że jest wywoływane w fazie reselekcji (tzn. jako INIT), jeżeli:
sygnały SEL i I/O są aktywne,
sygnał BSY jest wyłączony przez co najmniej 400 ns,
na szynie danych znajduje się własny adres SCSI-ID.
Wywołane urządzenie udziela odpowiedzi w postaci sygnału BSY. Odpowiedzi należy udzielić w czasie krótszym od 200 milisec..
Jednostka adresowana w fazie reselekcji (INIT) musi również zbadać stan całej szyny danych, aby zidentyfikować urządzenie, które jest inicjatorem tej fazy (TARG).
Warto dodać, że w fazie reselekcji może brać udział linia DBP (kontrola parzystości szyny danych DBO - DB7). Obowiązuje tu generalna zasada odnosząca się do magistrali SCSI jako całości wraz z wszystkimi współpracującymi jednostkami. Urządzenia te mają w zasadzie możliwość wyboru (za pomocą zwor konfiguracyjnych) w jakim trybie
pracują: z kontrolą parzystości czy bez. Należy zawsze tak konfigurować system aby każde urządzenie korzystało z tej samej opcji: albo wszystkie kontrolują parzystość (i ją również wytwarzają), albo żadne z nich. Zależnie więc od konfiguracji, IN1T może nie odpowiedzieć wywołanie w fazie reselekcji jeżeli stwierdzi błąd kontroli parzystości.
Jeżeli organizator fazy RESELECTION (tzn. TARG) otrzyma odpowiedź od inicjatora w postaci wspomnianego impulsu na linii BSY zwalnia sygnał SEL (po czasie max. 90 ns). Inicjator upewniwszy się, że SEL został zwolniony, zwalnia w odpowiedzi na to sygnał BSY.
Przekroczenie czasu oczekiwania na odpowiedź
Jeżeli jednostka wywołująca nie otrzymuje oczekiwanej odpowiedzi w czasie 250 us, następuje tzw. przekroczenie czasu (Time Out). Rozpoczyna się następująca sekwencja:
TARG aktywuje linię RST, aby wywołać stan RESET.
TARG steruje sygnał SEL i zwalnia szynę danych (obydwa SCSI-ID).
Przez 200 f.is oczekiwana jest odpowiedź od INIT. Jeżeli odpowiedź mimo tego nie nadchodzi, TARG zwalnia SEL i pozwala wejść magistrali w fazę BUS FREE.
Jeżeli odpowiedź nadejdzie w powyżej określonym czasie TARG uznaje, że faza RESELECTION zakończyła się pomyślnie.
Fazy informacyjne
To, co opisano powyżej, odnosi się do samych mechanizmów dostępu urządzeń do magistrali SCSI. Głównym jej zadaniem jest przecież jednak transmisja informacji. Pod tym pojęciem rozumie się tu nie tylko "czyste" dane, tj. na przykład zawartość bloku danych sektora dysku, ale i też szereg innych dodatkowych informacji, które wymieniają między sobą połączone magistralą urządzenia. Wszelkie informacje transmitowane są przez szynę danych w jednej z tak zwanych faz informacyjnych.
Do grupy faz informacyjnych zaliczane są:
faza rozkazowa (COMMAND),
faza danych (DATA),
zwrot statusu (STATUS),
przekazywanie wiadomości (MESSAGE).
Obraz przebiegów na magistrali w czasie realizacji powyższych faz informacyjnych przedstawia rysunek 7.35.
W fazie COMMAND przekazywane są rozkazy do jednostki TARG.




Rysunek 7.35.
Magistrala SCSI w fazach informacyjnych
ns - czytaj "nanosekundy"
us - czytaj "milisekundy"
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie określić) niezależnie od tego, jakie zmiany sygnałów sterujących go poprzedzały.
Dane mogą być oczywiście przesyłane w obydwu kierunkach: zarówno od TARG do INIT, jak i od INIT do TARG. Z tego względu faza DATA może przyjąć jedną z dwóch postaci: dane wychodzące (do INIT), czyli DATA OUT i napływające (do INIT), czyli DATA IN.
W fazie statusowej jednostka TARG składa krótki raport z wyników przeprowadzonej operacji.
Oprócz rozkazów, danych i raportu urządzenia wymieniają między sobą tzw. wiadomości (MESSAGES), które nie stanowią danych z punktu widzenia użytkownika, ale są niezbędne dla utrzymania poprawnej komunikacji i obsługi błędów. Wiadomości te mogą również przepływać w obydwu kierunkach. Stosownie do tego istnieje faza MESSAGE IN (wiadomości napływają do INIT) oraz MESSAGE OUT (wiadomości są przez INIT wysyłane).
Rodzaj fazy jest dokładnie określony przez kombinację trzech sygnałów sterujących magistrali: C/D, I/O i MSG. Z ośmiu możliwych stanów dwa są zabronione, tak jak przedstawiono to w tabeli 7.29.
Prawo do posługiwania się tymi trzema sygnałami ma jedynie jednostka uznana jako TARG (zacieniowany obszar w tabeli 7.30). Wynika z tego jasno, że tylko TARG decyduje o rodzaju fazy informacyjnej.
Tabela 7.29.
Kodowanie faz informacyjnych

Linia C/D; Linia I/O; Linia MSG; Na szynie danych; Kierunek; Nazwa cyklu
0; 0; 0; Dane (Data); INIT -> TARG; DATA OUT
0; 1;0; Dane (Data); TARG -> INIT; DATA INl
1; 0; 0; Rozkazy (Command); INIT -> TARG; COMMAND
1; 1; 0 ; Status (Status); TARG -> INIT; STATUS
0; 0; 1; -; -; stan zabroniony
0; 1; 1; -; -; stan zabroniony
1; 0O; 1; Wiadomość (Message); INIT -> TARG; MESSAGE OUT
1; 1; 1; Wiadomość (Message); TARG -> INIT; MESSAGE IN

Tabela 7.30.
Zakres uprawnień w fazach informacyjnych.

Faza; Linia: BSY; SEL; f/O; C/D; MSG; REQ; ACK; DB,P; ATN; RST

Bus Free; F; F; F; F; F; F; F; F; F; D
Arbitration; D; W; F; F; F; F; F; ID; F; D;
Selection; I/T; I; F; F; F; F; F; I; I; D
Reselection; I/T; T; T; F; F; F; F; T; I; D
Command; T; F; T; T; T; T; I; I; I; D
Data In; T; F; T; T; T; T; I; T; I; D
Data Out; T; F T; T; T; T; I; I; I; D
Status; T; F; T; T; T; T; I; T; I; D
Message In; T; F; T; T; T; T; I; T; I; D
Message Out; T; F; T; T; T; T; I; I; I; D

Sama informacja, jakiejkolwiek by nie była postaci, płynie szyną danych DBO - DB7, DBP pod ewentualną kontrolą bajtu parzystości. Pojedyncze bajty tego strumienia przesyłane są pomiędzy TARG i INIT w sposób określony często mianem Hardware Hand-Shake (z ang. uścisk dłoni). Rolę tego potwierdzającego uścisku (dla każdego z bajtów oddzielnie lub też dla ich grupy) pełni odpowiednia sekwencja impulsów na liniach ACK i REQ, tak jak to przedstawiono na rysunku 7.35. W zależności od sposobu wysyłania impulsu REQ i sprawdzania odpowiedzi ACK zdefiniowane są dwa typy















Podczas trwania faz infonnacyjnych TARG musi utrzymywać sygnał BSY w stanie aktywnym. Linia SEL natomiast musi pozostawać zwolniona.
TARG musi ponadto, mając do dyspozycji trójkę sygnałów kontrolnych (C/D, I/O i MSG), ustanowić określony rodzaj fazy informacyjnej najpóźniej na 400 ns przed wysłaniem pierwszego impulsu REQ. Ten pierwszy impuls inicjuje właściwą transmisję.
Zestaw sygnałów sterujących musi pozostać niezmieniony co najmniej przez czas trwania cyklu przekazu jednego bajtu, tzn. do nadejścia tylnego zbocza impulsu potwierdzającego ACK. W tym momencie jednak TARG jest już upoważniony do zmiany kombinacji trójki I/O-C/D-MSG w celu wywołania innej fazy informacyjnej (stosownie do kontekstu). Te trzy sygnały sterujące mogą się zmieniać jednocześnie lub niezależnie, ale nowa, określona przez nie faza rozpocznie się dopiero w momencie wystąpienia impulsu na linii REQ (a ściśle jego przedniego zbocza).
Transfer danych w fazach informacyjnych Tryb asynchroniczny
Asynchroniczny tryb wymiany informacji opiera się na wzajemnej kontroli (poprzez INIT i TARG) kolejnych par impulsów REQ i ACK. Ten tryb transmisji może być stosowany we wszystkich sześciu fazach informacyjnych (patrz tabela 7.29). Dozwolone jest więc zarówno TARG -> INIT, jak i INIT -> TARG. Kierunek przepływu danych ustala urządzenie TARG sterując linią I/O. Przykłady transmisji w obydwu kierunkach przedstawione są na rysunku 7.36.
Transmisja w kierunku TARG -> INIT. TARG ustanawia ten kierunek transmisji aktywując sygnał sterujący I/O. Kolejne bajty informacyjne przepływają szyną danych DBO - DB7, DBP według następującego schematu:
TARG kładzie na liniach DBO - DB7, DBP bajt danych i aktywuje REQ. Obraz szyny danych nie może ulegać zmianom aż do czasu nadejścia do TARG potwierdzenia, którym jest przednie zbocze impulsu ACK.
INIT zdejmuje bajt danych linii DBO - DB7, DBP (tzn. zatrzaskuje go w swoim buforze) po tym jak stwierdzi aktywność sygnału REQ. W odpowiedzi na ten impuls aktywowany jest (przez INIT) sygnał ACK.
TARG przyjąwszy potwierdzenie w postaci ACK zwalnia z kolei linię REQ. Teraz można już zmienić obraz szyny danych (przesyłając ewentualnie następny bajt).
INIT zwalnia ACK po rozpoznaniu zwolnienia REQ.
Powyższy cykl może się powtarzać; zostanie przekazany następny bajt.
Transmisja w kierunku INIT -> TARG. Jeżeli sygnał I/O jest zwolniony, przepływ informacji od INIT do TARG odbywa się zgodnie z następującym schematem:






Rysdunek 7.36.
Wymiana danych w trybie asynchronicznym.
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensacje różnic w czasach propagacji sygnałów pomiędzy różnymi urządzeniami.
Cable Skew Delay [max. 10 ns] - maksymalna dopuszczalna różnica czasów propagacji dowolnego z sygnałów wzdłuż magistrali SCSI pomiędzy dowolną parą urządzeń.
TARG aktywuje sygnał REQ co oznacza wezwanie dla INIT do wysyłania danych.
INIT wystawia na linie DBO - DB7, DBP bajt danych i aktywuje ACK. Stan szyny danych należy utrzymać do czasu stwierdzenia (przez INIT), że zwolniony został REQ.
TARG zdejmuje bajt z szyny danych po wykryciu aktywności ACK, po czym zwalnia REQ dla potwierdzenia odbioru.
INIT stwierdza zwolnienie REQ i zwalnia ACK. Dopiero w tym momencie stan szyny danych może ulec zmianie.
TARG przystępuje do wyzwolenia akcji przesłania następnego bajtu, gdy stwierdzi zwolnienie ACK.
Cykl może się powtarzać. TARG aktywuje REQ i jesteśmy na początku cyklu.
Prędkość transmisji danych
Na prędkość przesyłania danych magistralą SCSI w trybie asynchronicznym składa się kilka czynników. Są one przedstawione na rysunku 7.37.
Składowe T1 i T2 reprezentuj ą następujące elementy: T1 =T1' + 2a
T2 = T2' + 2a
gdzie:
T1' - opóźnienie między aktywowaniem impulsu REQ, a stwierdzeniem aktywności ACK, mierzone na końcówkach INIT; przyjmuje się 100 ns.
T2' - opóźnienie między zwolnieniem linii REQ, a stwierdzeniem zwolnienia linii ACK, mierzone na końcówkach INIT; przyjmuje się 150 ns.
a - opóźnienie sygnału na jednostkę długości przewodu; zakłada się 15 ns/m.
Zgodnie z rysunkiem 7.37 częstotliwość z jaką transportowane są poszczególne bajty danych wyraża się następującą formułą:
f = 1 / T = 1 / (T1 + T2 + T3)
W tabeli 7.31 zebrane zostały wyniki obliczeń dla kilku przykładowych długości przewodów magistrali.
Tabela 7.31.
Prędkości transmisji asynchronicznej w funkcji długości magistrali

Długość magistrali [m]; 1; 2; n; 4; 5; 6
Prędkość transmisji [MB/s]; 2,78; 2,38; 2,09; 1,85; 1,67; 1.52


Tryb synchroniczny
W trybie synchronicznym następuje pewne uproszczenie mechanizmu Hand-Shake. Rezygnuje się z każdorazowego potwierdzania pojedynczego bajtu danych przy użyciu sekwencji impulsów REQ/ACK. Sygnał ACK służy tu do potwierdzania pewnej większej grupy bajtów. Transfer tego typu dopuszczalny jest wyłącznie w fazach informacyjnych
DATA IN i DATA OUT. Ponadto nie wszystkie urządzenia SCSI dostosowane są dc pracy w tym stylu.
Standardowym trybem pracy magistrali w fazach informacyjnych jest tryb asynchro-niczny. Synchroniczna wymiana danych wymaga wcześniejszego uzgodnienia między mającymi ją stosować urządzeniami. Odbywa się to na drodze wymiany wiadomości! Synchronous Data Transfer Reąuest. Wymiana ta stanowi uzgodnienie tzw. parametrów transmisji synchronicznej:
RAO - liczbę impulsów REQ, które może wysłać TARG zanim otrzyma sygnał potwierdzający ACK tj. REQ/ACK Offset.
TP - minimalna długość okresu sygnału REQ (i ACK), tj. Transfer Period.
Uwaga:
Zarówno moment włączenia napięcia zasilania, jak i wywołanie funkcji RESET wprowadza magistralę w tryb asynchroniczny.
Przebiegi sygnałów podczas synchronicznego trybu transmisji danych prezentuje rysunek 7.38.
Po stosownym uzgodnieniu parametrów TARG może wysłać więcej niż jeden impuls REQ (każdemu towarzyszy oczywiście jeden bajt danych) zanim nie otrzyma potwierdzenia w postaci przedniego zbocza impulsu ACK. Liczba takich wysłanych i niepotwierdzonych impulsów musi zawierać się w zakresie zdefiniowanym jako parametr RAO. W szczególności może też być od niego mniejsza. Tak więc jeżeli różnica między liczbą wysłanych impulsów REQ a liczbą odebranych ACK osiągnie RAO, TARG musi przerwać nadawanie do czasu nadejścia potwierdzenia ACK.
Drugie ograniczenie wynika z parametru TP. Okres trwania przebiegu na liniach ACK i REQ, tj. odstęp pomiędzy kolejnymi najbliższymi zboczami tego samego rodzaju (narastającymi lub opadającymi) nie może być krótszy niż uzgodnione TP. Nakłada to automatycznie ograniczenie na maksymalną dopuszczalną częstotliwość pracy "pseudo-zegara" transmisji synchronicznej.
Jak wspomniałem wcześniej tryb synchroniczny jest dozwolony w fazach DATA IN oraz DATA OUT. Mamy więc przypadki transmisji w dwóch kierunkach, oba przedstawione na rysunku 7.38.
Kierunek TARG -> INIT. TARG ustanawia powyższy kierunek transmisji poprzez aktywowanie linii I/O. Wymiana danych przebiega według następującego algorytmu:
TARG wystawia bajt na szynę danych i wysyła impuls REQ.
Z zachowaniem zależności czasowych przedstawionych na rysunku 7.32 ma miejsce powtórzenie poprzedniego punktu tyle razy, by nie przekroczyć uzgodnionej wartości parametru RAO.
INIT odbiera dane w takt nadchodzących do niego impulsów REQ.
INIT wysyła tyle impulsów ACK, ile odebrał bajtów danych.
Snnchroniczna transmisja danych - opis rysunku 7.38
Assertion Period [min. 90 ns] - minimalna szerokość impulsu ACK (wysyłanego przez IN1T) i sygnału REQ (wysyłanego przez TARG) niezbędne do utrzymania synchronicznej wymiany danych.
Negation Period [min. 90 ns] - w synchronicznym trybie wymiany danych minimalny czas liczony od tylnego zbocza impulsu REQ (lub ACK) do przedniego zbocza następnego impulsu REQ (lub ACK).
Transfer Period - w synchronicznym trybie wymiany danych minimalny czas (minimalny czas repetycji) liczony od przedniego zbocza impulsu REQ (lub ACK) do przedniego zbocza następnego impulsu REQ (lub ACK). Aktualna wartość tego parametru uzgadniana jest pomiędzy INIT i TARG za pomocą wymiany wiadomości SYNCHRONOUS DATA TRANSFER REQUEST.
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensację różnic w czasach propagacji sygnałów pomiędzy różnymi urządzeniami.
Cable Skew Delay [max. 10 ns] - maksymalna dopuszczalna różnica czasów propagacji dowolnego /. sygnałów wzdłuż magistrali SCSI pomiędzy dowolną parą urządzeń.
Hołd Time [min. 45 ns] - w synchronicznym trybie wymiany danych, minimalny czas liczony od przedniego zbocza ACK, przez który należy utrzymywać niezmienny stan szyny danych (Data Bvte).








Kierunek TARG <- INIT. TARG ustanawia powyższy kierunek transmisji poprzez zwolnienie linii I/O. Wymiana danych przebiega teraz według następującego algorytmu:
TARG wysyła impuls REQ czym pobudza INIT do wystawienia bajtu na szynę danych. Po wystawieniu bajtu INIT wysyła impuls ACK.
Z zachowaniem zależności czasowych przedstawionych na rysunku 7.38 ma miejsce powtórzenie poprzedniego punktu tyle razy, by nie przekroczyć uzgodnionej wartości parametru RAO.
TARG odbiera dane w takt nadchodzących do niego impulsów ACK.
Uwaga:
Dla poprawnego zakończenia fazy DATA IN lub DATA OUT wymagane jest, by całkowita liczba wysłanych impulsów REQ była równa sumarycznej liczbie odebranych impulsów ACK.
Tryb synchroniczny "Fast"
Tryb ten jest przyspieszoną odmianą trybu synchronicznego i ma miejsce, gdy urządzenia uzgadniają parametr TP krótszy od 200 ns. Najmniejsza dopuszczalna wartość tego parametru wynosi 100 ns. Tak więc tryb Fast leży w zakresie 100 < TP < 200.
Sam mechanizm przesyłania danych nie różni się od opisanego powyżej; inne są tylko zależności czasowe. Przedstawia to rysunek 7.39.
Prędkość transmisji danych
Schemat przebiegu transmisji danych w trybie synchronicznym, rozważany pod kątem osiąganej prędkości przedstawia rysunek 7.40. Parametry transmisji synchronicznej muszą być uzgadniane między INIT i TARG przed rozpoczęciem przekazywania danych.
Uzgodnienie to ma miejsce (jeżeli do niego dochodzi; nie każde urządzenie jest do tej formy przekazu zdolne) w fazie informacyjnej MESSAGE. INIT wysyła do TARG wiadomość SYNCHRONOUS DATA TRANSFER REQUEST. Wiadomość ta zawiera w sobie dwa parametry transmisji: REQ/ACK Offset (RAO) i TRANSFER PERIOD (TP). W tabeli 7.32 przedstawiony jest wyciąg z listy parametrów akceptowanych przez większość dysków twardych (oczywiście tych, które w ogóle zdolne są do trybu synchronicznego).
Średnia prędkość transmisji ADTR (Average Data Transfer Ratę) jest funkcją uzgodnionych parametrów oraz rzeczywistych właściwości linii przesyłowych magistrali (długości, pojemności).
Transmisja synchroniczna typu Fast - opis rys.7.39
Transfer Period - w synchronicznym trybie wymiany danych minimalny czas (minimalny czas repetycji) liczony od przedniego zbocza impulsu REQ (lub ACK) do przedniego zbocza następnego impulsu REQ (lub ACK). Aktualna wartość tego parametru uzgadniana jest pomiędzy 1NIT i TARG za pomocą wymiany wiadomości SYNCHRONOUS DATA TRANSFER REQUEST.
Fast Assertion Period [min. 30 ns] - w trybie synchronicznym fast minimalna szerokość impulsu ACK (wysyłanego przez INIT) i sygnału REQ (wysyłanego przez TARG) niezbędne do utrzymania synchronicznej wymiany danych.
Fast Negation Period [min. 30 ns] - w synchronicznym trybie wymiany danych fast minimalny czas liczony od tylnego zbocza impulsu REQ (lub ACK) do przedniego zbocza następnego impulsu REQ (lub ACK).
Fast Deskew Delay [min. 20 ns] - czas przeznaczony na kompensację różnic w czasach propagacji sygnałów pomiędzy różnymi urządzeniami podczas pracy w trybie fast.
Fast Cable Skew Delay [max. 5 ns] - maksymalna dopuszczalna różnica czasów propagacji dowolnego z sygnałów wzdłuż magistrali SCSI pomiędzy dowolną parą urządzeń podczas pracy w trybie fast.
Fast Hołd Time [min. 10 ns] - w trybie synchronicznym Fast wymiany danych, minimalny czas liczony od przedniego zbocza ACK, przez który należy utrzymywać niezmienny stan szyny danych (Data Byte).






Tabela 7.32.

Typowe wartości parametrów transmisji w trybie synchronicznym

Parametr; Wartość; Maksymalna prędkość [MB/s]; Uwagi;
Offset REQ/ACK; 2-15; -; -
Minimalny okres impulsu REQ (Transfer Period); 0x1 9h;:
10; Odpowiada TP = 100 ns, (TP < 200; FAST)
0x1 Fh; 8; Odpowiada TP = 125 ns, (TP < 200; FAST)
0x25h; 6,7; Odpowiada TP - 150 ns, (TP < 200; FAST)
0x2Bh; 5,7; Odpowiada TP - 175 ns, (TP < 200; FAST)
0x32h; 5; TP = 200 ns
0x3 8h; 4,4; TP = 225 ns
...; ...; ...
0xClh; 1,3; TP = 775 ns
0xC8h; 1,2; TP = 800 ns












Prędkość średnią można oszacować w następujący sposób:
jeżeli (RAO * TP) < (T + 260), to ADTR = 1000 / TP [MB/s],
jeżeli (RAO * TP) < (T + 260), to ADTR = (RAO * 1000) / (T + 260) [MB/s].
gdzie: T
- średni czas dzielący przednie zbocze i-tego impulsu REQ i przednie zbocze odpowiadającego mu i-tego impulsu ACK, mierzony na końcówkach TARG (tj.dysku) [ns]
RAO - jest liczbą całkowitą z przedziału 2-15. Parametr TP mniejszy od 200 ns oznacza transmisję synchroniczną typu FAST (szybką). Oczywiście nie każde urządzenie może godzić się na proponowaną transmisję typu FAST; musi być przecież do tego zdolne. Dyski, które uzgadniają wymianę danych w tym trybie stanowią jednak jeszcze dosyć małą podgrupę urządzeń
mogących pracować synchronicznie. Są to na ogół jednostki o pojemnościach przekraczających znacznie granicę l GB. Wartości TP z przedziału 200 - 800 ns powinny być obsługiwane prawidłowo przez każde pracujące synchronicznie urządzenie.
Zmiana kierunku transmisji
O rodzaju fazy informacyjnej, a tym samym o kierunku przepływu informacji szyną danych decyduje wyłącznie TARG. Z aktualnego kontekstu może oczywiście wynikać przejście międzyfazowe, w którym zmianie ulega kierunek przepływu informacji (np. DATA IN na MESSAGE OUT). W przedziale czasu dzielącym takie dwie fazy, sygnały sterujące magistrali muszą spełniać określone warunki:
Linie BSY, SEL oraz REQ i ACK nie mogą się zmieniać.
Sygnały RST i ATN mogą być wprawdzie aktywowane, ale nie tak długo by zostały zinterpretowane jako wywołanie określonej funkcji.
Stan sygnałów sterujących C/D, I/O i MSG:
Przy zmianie kierunku z OUT na IN (tj. z TARG -> INIT na 1NIT ->TARG) TARG może zacząć sterowanie linii DB (szyny danych) nie wcześniej niż 800 ns po aktywowaniu I/O. INIT musi zwolnić szynę danych nie później niż 400 ns od wykrycia aktywności na linii I/O.
Przy zmianie kierunku z IN na OUT (tj. z INIT -> TARG na TARG -> INIT) TARG musi przestać sterować linie DB (szynę danych) w przeciągu 45 ns od zwolnienia I/O.
Omówione warunki czasowe zobrazowane zostały na rysunku 7.41.
Zmiana kierunku przepływu danych - opis rys.7.41

Data Release Delay [max. 400 ns] - maksymalny dopuszczalny czas, liczony od momentu wykrycia zmiany O - l sygnału I/O, po którym inicjator zwalnia szynę danych (Data Bus).
Bus Settle Delay [min. 400 ns] - minimalny okres czasu (liczony od ostatniej zmiany dowolnego z sygnałów sterujących), po którym stan magistrali musi się ustabilizować (tj. dać jednoznacznie określić) niezależnie od tego, jakie zmiany sygnałów sterujących poprzedzały go.
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensację różnic w czasach propagacji sygnałów pomiędzy różnymi urządzeniami.

Sytuacje wyjątkowe
Oprócz sygnałów sterujących I/O, MSG, C/D oraz BSY i SEL identyfikujących jednoznacznie fazy pracy magistrali mamy jeszcze do dyspozycji dwie linie specjalnego przeznaczenia: RST i ATN. Obie służą do wymuszania określonych przejść międzyfazo-wych, innych niż by to wynikało z sekwencji aktualnie realizowanych operacji.
Attention
Należy przypomnieć, że w fazach informacyjnych jedyną jednostką uprawnioną do sterowania liniami I/O, C/D i MSG jest TARG. INIT pełni rolę wykonawcy i nie ma możliwości zwrócenia na siebie uwagi, chyba że inicjatywa wychodzi ze strony TARG.
Dzięki istnieniu funkcji ATTENTION inicjator może natomiast zasygnalizować, że ma do przekazania wiadomość (MESSAGE) dla TARG. Stan sygnałów sterujących magistrali SCSI w trakcie realizacji tej funkcji oraz towarzyszące jej uzależnienia czasowe przedstawiają wykresy na rysunku 7.42.
Rysunek 7.42.
Realizacja funkcji Attention - opis
Deskew Delay [min. 45 ns] - czas przeznaczony na kompensację różnic w czasach propagacji sygnałów pomiędzy różnymi urządzeniami.
Wywołanie funkcji
Wykorzystanie linii ATN, tj. moment aktywowania i zwolnienia leży w gestii inicjatora.
Aktywowanie ATN. Inicjator wywołuje funkcję ATTENTION aktywując linię ATN w dowolnym momencie, za wyjątkiem trwania faz ARBITRATION lub BUS FREE.
W fazach informacyjnych inicjator powinien informować TARG o zamiarze wywołania tej funkcji zanim TARG przejdzie do następnej fazy, czyli na co najmniej 90 ns przed tylnym zboczem impulsu ACK potwierdzającego ostatni bajt bieżącej
fazy. Jeżeli warunek ten nie zostanie spełniony, TARG może przyjąć zgłoszenie ATN dopiero pod koniec kolejnej fazy, co niekoniecznie musi być zgodne za zamierzeniami INIT.
Zwolnienie ATN. Będąc w fazie MESSAGE OUT (INIT przekazuje wiadomość do TARG) inicjator musi utrzymywać sygnał ATN w stanie aktywnym. Linię ATN wolno zwolnić w jednym z okien czasowych, w których ACK = 0. W czasie trwania przekazu ostatniego bajtu wiadomości zwolnienie ATN następuje więc między aktywowaniem REQ a otrzymaniem potwierdzenia ACK.
Reakcja TARG
W odpowiedzi na wywołanie funkcji ATTENTION TARG musi wejść w fazę MESSAGE OUT. Dokładny moment wejścia zależny jest od bieżącej sytuacji i określany następująco:
W fazie COMMAND: natychmiast po dokończeniu cyklu przesłania dowolnego z bajtów składowych CDB, niezależnie od tego, czy był to już bajt ostatni.
W fazie DATA: po dokończeniu bieżącej fazy.
W fazie STATUS: po dokończeniu przesłania bajtu statusowego.
W fazie MESSAGE: po zakończeniu przekazu bieżącej wiadomości.
W fazie SELECTION: natychmiast po zakończeniu fazy.
W fazie RESET: po zakończeniu przesłania wiadomości IDENTIFY.
Reset

RESET jest funkcją o działaniu globalnym i natychmiastowym, a zasięgiem swym obejmuje zarówno TARG, jak i INIT. Funkcja ta dotyczy wszystkich urządzeń dołączonych do magistrali, a jej wykonanie jest niezależne od fazy, w jakiej magistrala się znajduje. Można też powiedzieć, że jest to funkcja o najwyższym priorytecie.
Wywołanie funkcji
Funkcję RESET może wywołać każde z podłączonych do magistrali urządzeń, jeżeli aktywuje linię RST na czas dłuższy od 25 ms. Stan wszystkich innych linii magistrali jest w tym przedziale czasowym (tzn. gdy RST jest aktywne) nieokreślony. Przebieg realizacji tej funkcji przedstawia rysunek 7.43.
Reakcja urządzeń
Urządzenie, które wykryło aktywny sygnał RST ma obowiązek zwolnić wszystkie linie (deaktywować wszystkie używane sygnały) w przeciągu maksymalnie 800 ns.
Rysunek 7.43.
Stan magistrali po wywołaniu funkcji Reset - opis






Bus Clear Delay [max. 800 ns] - maksymalny dopuszczalny okres czasu pomiędzy (jednym z trzech):
wykryciem fazy BUS FREE (tj. BSY=0, SEL=0) lub
stwierdzeniem, że współzawodnictwo wygrał ktoś inny (tj. został aktywowany sygnał SEL w fazie ARBITRATION) lub
wykryciem stanu RESET
a momentem, gdy urządzenie przestaje sterować jakimkolwiek z sygnałów magistrali SCSI.
Reset Hołd Time [min. 25jas] - minimalny okres, podczas którego musi pozostać aktywny sygnał na linii RST, aby wywołać stan RESET.
Konsekwencją przeprowadzenia tej funkcji jest więc odłączenie się wszystkich urządzeń i wejście magistrali w fazę BUS FREE.
Dyski twarde nie mają zaimplementowanej możliwości wywoływania tej funkcji; muszą ją natomiast obsługiwać. Obsługa taka obejmuje oprócz obowiązkowego zwolnienia linii magistrali następujące punkty:
Przerwanie wykonywania aktualnego rozkazu.
Usunięcie rozkazów oczekujących w kolejce (Queue}.
Przestają obowiązywać uzgodnione parametry transmisji w trybie synchronicznym i przywracany jest tryb asynchroniczny.
Niszczony jest blok poszerzonych danych statusowych (Sense Data).
Unieważnione zostają dane w buforze dysku, które odczytane zostały w ramach akcji "czytania z wyprzedzeniem" (Read Aheacf).
Rozkazy systemowe
Rozkazy SCSI stanowią kilkubajtowe bloki (CDB - Command Data Block) niosące w sobie oprócz kodu identyfikującego również niezbędne parametry. Wszystkie CDB zbudowane są według tego samego schematu:

Bajt l: Kod rozkazu
Bajt 2: ...
Bajt 3:...
Bajt ostatni: Bajt kontrolny
Obsługa dysku twardego
471
Długość rozkazu może wynosić 6, 10 lub 12 bajtów. Rozkazy 10- i 12-bajtowe określane są mianem rozszerzonych (Extended).
Przedstawiony na rysunku 7.44 kod rozkazu (pierwszy bajt) składa się z 3-bitowego pola grupowego i 5-bitowego pola identyfikacji. W ramach jednej grupy mogą więc być zrealizowane 32 rozkazy.
Kod rozkazu systemu SCSI
Pole grupowe może przyjąć jedną z następujących wartości: 0: rozkazy 6-bajtowe, 1: rozkazy 10-bajtowe, 2, 3, 4: zarezerwowane, 5: rozkazy 12-bajtowe, 6,7: zarezerwowane.
Teoretycznie możliwe jest więc zakodowanie 256 różnych poleceń. Większość kontrolerów SCSI realizuje jednak wyłącznie wybrane rozkazy 6- i 10-bajtowe. Zestawienie tych najczęściej implementowanych zawarte jest w tabeli 7.33. Ogólna konstrukcja tych poleceń przedstawiona jest na rysunkach 7.45 i 7.46.
Ze względu na kompatybilność zachowane jest 3-bitowe pole LUN, które identyfikuje logiczny numer podrzędnej jednostki będącej pod opieką tego samego urządzenia TARG; standard dopuszcza istnienie do 8 takich jednostek. Obecnie, nawet jeśli tak jest, są one administrowane logicznie jako kolejne bloki danych i obowiązuje ustawienie LUN = 0.
Adres bloku logicznego (ŁBA - Logical Block Address) ma wymiar 21 bitów w rozkazach 6-bajtowych, a 32 bity w rozkazach 10-bajtowych. Identyfikuje on logiczny blok danych, do którego odnosi się rozkaz. Jeżeli rozkaz dotyczy większej liczby takich bloków, ŁBA oznacza oczywiście początek obszaru. Rozkazy 6-bajtowe mogą adresować 2 M bloków, natomiast 10-bajtowe aż 4 G bloków. Dla dysków o typowej organizacji sektorów (512 B na sektor) odpowiada to l GB obejmowanej pojemności już przy rozkazach 6-bajtowych, co na ogół wystarcza.
Jeżeli ustawiony jest bit REL (wyłącznie w rozkazach 10-bajtowych), adres ŁBA liczony jest względem ostatniego z wyspecyfikowanych bloków. Większość twardych dysków nie korzysta z możliwości adresowania względnego.
Długość transmitowanych danych (TDL - Transfer Data Length) oznacza zwykle ilość bloków logicznych, choć są rozkazy, w których pola te rozumiane są jako rozmiar danych w bajtach. Magistralą SCSI można więc jednorazowo przetransportować:
Tabela 7.33.

Zestawienie najczęściej stosowanych rozkazów SCSI

Kod; Nazwa rozkazu; Znaczenie
00h; Test Unit Ready; Sprawdzenie gotowości urządzenia
01h; Rezero Unit; Ustawienie głowicy nad cylindrem O
03h; Rwguest Sense; Żądanie przesłania dodatkowego bloku informacyjnego
04h; Format Unit; Formatowanie dysku
07h; Reasign Blocks; Przesunięcie zawartości uszkodzonych bloków
08h; Read; Pobieranie danych od jednostki INT
0Ah; Write; Wysyłanie danych do jednostki INT
0Bh; Seek; Poszukiwanie bloku logicznego
12h; Inguiry; Wysyłanie listy identyfikacyjnej
15h; Modę Select; Ustanowienie trybu pracy
16h; Reserve Unit; Rezerwacja jednostki logicznej (LUN)
17h; Relase Unit; Zwolnienie jednostki logicznej (LUN)
1Ah; Modę Sense; Przesłanie do inicjatora parametrów urządzenia
11Bh; Start/Stop Unit; Zablokowanie/odblokowanie realizowania kolejnych rozkazów
1Ch; Receive Diagnostic,Results; Przesłanie wyników samokontroli
IDh; Send Diagnostic; Przeprowadzenie samokontroli
25h; Read Capacity; Określenie pojemności
28h; Read Extended; Pobranie danych od inicjatora (transmisja w trybie extended)
2Ah; Write Extended; Wysłanie danych do inicjatora (transmisja w trybie extended)
2Bh; Seek Extended; Poszukiwanie bloku logicznego (tryb extended)
2Eh; Write & Yerify; Zapisywanie danych z weryfikacją
2Fh; Verify; Weryfikacja przesłanych danych
37h; Read Defect Data; Czytaj listę błędów
3Bh; Write Buffer; Zapis bufora
3Ch; Read Buffer; Odczyt bufora
3Eh; Read Long; Czytaj blok 512 bajtów
3Fh; Write Long; Zapisz blok 512 bajtów












































CDB 6-bajtowe: 256 bloków (TDL = O oznacza 256)
CDB 10-bajtowe: 65535 bloków (TDL = O oznacza 0)
65 535 bloków po 512 bajtów to prawie 32 MB! Obrazuje to potężne możliwości tkwiące w koncepcji magistrali SCSI. Trzeba przy tym podkreślić, że transport tak dużego bloku danych odbywa się bez angażowania CPU. To, czy można to rozsądnie wykorzystać leży już jednak nie w gestii samej magistrali SCSI, a raczej architektury komputera. Procesor- aby nie blokować magistral PC - może przetwarzać jedynie dane zgromadzone w swej pamięci podręcznej. Z pamięcią operacyjną w PC nie mogą się jednocześnie kontaktować dwa różne urządzenia, w szczególności CPU i kontroler SCSI.
Każdy rozkaz SCSI zamykany jest przez bajt kontrolny przedstawiony na rysunku 7.47.

Bity 7 i 6 stoją do dyspozycji producenta (Yendor Uniąue) kontrolera i są ignorowane przez TARG. Pola bitowe 5-2 muszą być ustawione na zero.
Bit l (FLG) jest tzw. flagą, a bit 0 (LNK) oznacza link. Oba związane są ściśle z możliwością łańcuchowego przekazywania rozkazów. Polega ono na potokowym przesyłaniu kolejnych CDB. TARG nie rozłącza się przy tym po każdym pojedynczym rozkazie by, przez kolejne fazy BUS FREE, ARBITRATION itd. ponownie nawiązywać kontakt. Inicjator przekazuje (a TARG odbiera) kolejne CDB tak długo, jak długo ustawiony jest LNK. Rozkaz zamykający łańcuch ma wyzerowany bit LNK.
FLG pozostaje w związku z LNK. Jeżeli wyzerowany jest link, flaga też musi być wy-zerowana. Flaga ustawiona (oczywiście przy ustawionym linku) powoduje, iż po zrealizowaniu całego łańcucha rozkazów przekazana zostanie tylko jedna wiadomość: LINKED COMMAND COMPLETE WITH FLAG. W przeciwnym razie (FLG = 0) TARG wysyła po każdym rozkazie cząstkowym wiadomość LINKED COMMAND COMPLETE.
Zdolność do kolejkowania rozkazów
Mechanizm ten realizowany jest jedynie przez nieliczne z urządzeń SCSI, ale zostanie pokrótce omówiony dla podkreślenia szerokich możliwości systemu.
Implementacja kolejkowania odbywa się pod kontrolą konkretnej jednostki TARG i jest prowadzona wyłącznie na jego użytek. Z magistrali mogą korzystać zarówno urządzenia w kolejkowanie wyposażone jak i te, które nie są. Inicjator może kontaktować się w jednej sesji z urządzeniem kolejkującym po czym przejść do urządzenia, które nie kolejkuje. Pod tym względem istnieje duża elastyczność. Kolejkowanie jest pewną funkcją luksusową, która nie jest niezbędna.
TARG organizując kolejkę nie wiąże jej z określonym inicjatorem. W kolejce mogą oczekiwać rozkazy pochodzące od różnych inicjatorów. Każdy napływający do TARG rozkaz, który będzie kolejkowany, powołuje do życia tzw. proces I/O. Każdy z takich procesów otrzymuje unikalny numer będący 8-bitową liczbą całkowitą bez znaku. Jest to kolejkowy oznacznik procesu (Queue Tag). Liczbę taką można przydzielić powtórnie dopiero po zakończeniu stowarzyszonego z nią aktualnie procesu.
Skoro tylko inicjator połączy się z jednostką TARG (faza selekcji), wysyłana jest wiadomość IDENTIFY. W ślad za nią może teraz podążać jedna z wiadomości Ox20h -Ox22h, by określić oznacznik stowarzyszony z tym procesem. W jednej sesji (połączeniu) może być ustanowiony tylko jeden oznacznik. Jeżeli nie wysłana została żadna z wiadomości Ox20h - Ox22h, proces nie jest kolejkowany.
W kierunku przeciwnym, podczas kolejnych połączeń TARG z inicjatorem (fazy re-selekcji) odpowiednia wiadomość wysyłana jest w ślad za obowiązkową IDENTIFY. Wspomniane wiadomości umożliwiają realizację elementarnych operacji wprowadzania nowego procesu na stos rozkazów:
Umieść na szczycie stosu (0x21 h, Head of ąueue tag). Wiadomość nakazuje u-mieszczenie procesu jako pierwszego w kolejce. Umieszczanie odbywa się zgodnie z porządkiem LIFO (Last-ln-First-Out - wszedł jako ostatni, a wyszedł jako pierwszy). Nie ma to wpływu na proces aktualnie realizowany. "Nowy proces zostanie wykonany natychmiast po zakończeniu bieżącego, chyba że w międzyczasie nadejdzie kolejna taka wiadomość.
Umieść na bieżącej pozycji (0x22h, Ordered ąueue tag). Inicjator nakazuje wprowadzenie procesu do kolejki zgodnie z chronologią wydarzeń, tzn. proces który napłynął jako ostatni zostanie ustawiony jako ostatni. Odpowiada to logice LILO (Last-In-Last-Out). Aktualnie przybyły proces zostanie wykonany za wszystkimi wcześniejszymi.
Umieść w kolejce (0x20h, Simple ąueue tag). W dokładnym tłumaczeniu: umieść po prostu w kolejce. Inicjator nie precyzuje tu żądanej pozycji pozostawiając tę decyzję w gestii TARG.
Inicjator może zażądać przerwania wykonywania aktualnego procesu (wiadomość 0x0Dh, Abort Tag). Powoduje to przejście do następnego oczekującego w kolejce. Można też postąpić bardziej radykalnie i zlikwidować całą kolejkę (wiadomość 0x0Eh, Clear Qiteue). Przedtem jednak zostanie zatrzymany również bieżący proces.
Informacja statusowa
W fazie STATUS urządzenie TARG przekazuje jeden bajt informujący INIT o zakończeniu wykonywania rozkazu. Bajt ten niesie w sobie jednocześnie krótką wiadomość o sposobie zakończenia.
Status przekazywany jest na zakończenie każdego rozkazu, chyba że zaistnieje jedna z poniższych okoliczności:
odebrano wiadomość ABORT lub BUS DEYICE RESET,
wykonywanie rozkazu przerwało wywołanie funkcji RESET,
zostało wymuszone nienaturalne wejście magistrali w fazę BUS FREE;
Konstrukcja bajtu statusowego przedstawiona jest na rysunku 7.48.
W bajcie tym mogą być zakodowane następujące stany:
STATUS GOOD: wykonanie rozkazu zostało zakończone pomyślnie.
STATUS CHECK CONDITION: w trakcie wykonywania rozkazu wystąpił błąd, rozkaz jest niemożliwy do wykonania, wystąpił stan wyjątkowy lub nienormalne zakończenie. INIT powinien w tej sytuacji użyć rozkazu REQUEST SENSE dla zbadania przyczyn nienormalnego zachowania się systemu, TARG przygotowuje na tę okoliczność specjalny zestaw danych informacyjnych, tzw. SENSE DATA.






STATUS BUSY: oznacza, że TARG jest zajęty wykonywaniem aktualnego rozkazu i do czasu zakończenia nie może przyjąć nowego. Przyczyną takiego stanu rzeczy może być (w przypadku twardego dysku):
rozkazy nie są kolejkowane, a bieżący jest właśnie wykonywany,
rozkazy są kolejkowane ale kolejka jest przepełniona,
kontroler dysku jest w trakcie przeprowadzania procesu samokontroli, kalibracji termicznej itp.
INIT może ponowić próbę wysłania bieżącego rozkazu po odczekaniu pewnego czasu.
STATUS INTERMEDIATE GOOD: pozytywne zakończenie realizacji każdego z cząstkowych rozkazów pewnego rozkazu łańcuchowego (LINKED COM-MAND), za wyjątkiem ostatniego w łańcuchu.
STATUS RESERYATION CONFLICT: może wystąpić w systemach, w których pracuje więcej niż jedno urządzenie mogące pełnić rolę inicjatora (INIT). TARG może być chwilowo związany z innym inicjatorem niż ten, który się aktualnie do niego zwraca. INIT ma możliwość ponowienia próby przekazania rozkazu po pewnym czasie.
STATUS QUEUE FULL: kolejka grupująca rozkazy jest pełna. I tym razem odczekanie powinno prowadzić do rozwiązania problemu.
Po wysłaniu bajtu statusowego TARG przekazuje zwykle wiadomość COMMAND COMPLETE (ewentualnie LINKED COMMAND COMPLETE).
Komunikaty
Standard SCSI przewiduje cały rozbudowany system informacyjny, który wspomaga właściwą wymianę danych. Komunikaty zwane też wiadomościami (MESSAGES) służą więc usprawnieniu połączeń pomiędzy jednostkami SCSI oraz do przekazywania informacji statusowych, które wskazują na stan (stopień zaawansowania, wynik) aktywnych rozkazów (będących w trakcie realizacji).
Tabela 7.34 przedstawia kompletny zbiór wiadomości zdefiniowanych przez standard. Tylko nieliczne z nich są wykorzystywane przez twarde dyski. Protokół SCSI wymaga jednak od każdego urządzenia implementacji co najmniej jednej podstawowej wiadomości: COMMAND COMPLETE.

Tabela 7.34.

Zestaw wiadomości systemu SCSI

Kod; Wiadomość; Kierunek transmisji; ATN

Wiadomości jednobajtowe

OOh; Command Complete; TARG -> INIT
02h; Save Data Pointers; TARG -> INIT
03h; Restore Pointers; TARG -> INIT
04h; Disconnect; TARG -> INIT
05h; Initiator Detected Error; TARG -> INIT; *
06h; Abort; TARG <- INIT; *
07h; Message Reject; TARG <-> INIT; *
08h; No Operation; TARG <- INIT; *
09h; Message Parity Error; TARG <- INIT; *
OAh; Linked Command Complete; TARG -> INIT
OBh; Linked Command Complete With Flag; TARG -> INIT
OCh; Bus Device Reset; TARG <- INIT; *
ODh; Abort Tag; TARG <- INIT, *
OEh; Clear Queue; TARG <- INIT
12h; Continue I/O Process; TARG -> INIT
13h; Target Transfer Disable; TARG -> INIT
80:FFh; Identify; TARG <-> INIT

Wiadomości dwiibajtowe

20h; Simple Queue Tag; TARG <-> INIT; *
21h; Head of Queue Tag; TARG <- INIT; *
22h; Ordered Queue Tag; TARG <- INIT; *

Wiadomość poszerzona (5 bajtów)

01; Synchronous Data Transfer Reąuest; TARG <-> INIT; *

* - oznacza ATN


























Powróćmy na chwilę do fazy SELECTION. W fazie tej ma miejsce aktywowanie SEL i zwolnienie BSY. Pierwszą wiadomością jaką musi przekazać INIT do TARG po fazie SELECTION jest IDENTIFY (patrz rysunek 7.54a). Jest to jednocześnie pierwsza wiadomość przekazywana po wyjściu z fazy RESELECTION (rysunek 7.54c).
Wszystkie wiadomości zbudowane są według tego samego schematu przedstawionego na rysunku 7.49. Mogą one być wielobajtowe, ale bajt pierwszy jest zawsze kodem wiadomości.

Rysunek 7.49. Schemat konstrukcji wiadomości

0 - KOD WIADOMOŚCI; Wiadomość jednobajtowa
0 - KOD WIADOMOŚCI; 1 - PARAMETR; Wiadomość dwubajtowa
0 - SYGNATURA 00000001; 1 - DŁUGOŚĆ WIADOMOŚCI; 2 - KOD OPERACJI; 3 - LISTA PARAMETRÓW; Wiadomość rozszerzona




Z grupy wiadomości jednobajtowych wymagana jest implementacja kodu 0x00h, co gwarantuje poprawne przeprowadzenia standardowych operacji wejścia-wyjścia. Inne wiadomości są nieobowiązkowe. Jeżeli jednak w systemie pracuje jakieś urządzenie, które implementuje dodatkowe wiadomości, musi istnieć możliwość ich odrzucania przez urządzenia wyposażone jedynie w 0x00h. Służy temu wiadomość MESSAGE REJECT.
Jeżeli ponadto magistrala pracuje z kontrolą parzystości wymagane jest implementowanie wiadomości MESSAGE PARITY ERROR dla obsługi ewentualnie wykrytych błędów.
Grupa wiadomości dwubajtowych nie jest w ogóle używana przez dyski twarde.
Kod 0x01 h wprowadza wiadomości wielobajtowe o długości określonej w drugim bajcie (maksymalna długość 256 bajtów, dla n = 0).
Poniższe zestawienie stanowi krótki opis wiadomości systemu SCSI, które mogą być używane przez dyski twarde.
OxOOh: COMMAND COMPLETE (zakończono wykonanie rozkazu)
Wiadomość ta przekazywana jest inicjatorowi w fazie MESSAGE IN. Oznacza ona, że wydany rozkaz (pojedynczy lub ostatni z grupy połączonych) został zakończony (niekoniecznie sukcesem). Dokładniejsze informacje otrzyma INIT w następującej zaraz po tym fazie STATUS.
0x02h: SAVE DATA POINTERS (zachowaj zestaw wskaźników) Ox03h: RESTORE POINTERS (przywróć zestaw wskaźników)
Obie wiadomości dotyczą tzw. wskaźników, które omówione zostaną w dalszej części tego rozdziału.
0x04h: DISCONNECT (rozłączenie)
TARG informuje inicjator, że będzie się odłączał od magistrali. Rozłączenie to polega na zwolnieniu sygnału BSY, co wprowadza szynę w stan BUS FREE. Dla ponownego połączenia urządzeń i dokończenia wymiany danych konieczna jest faza reselekcji.
0x05h: INITIATOR DETECTED ERROR (wykryto nienaturalne zachowanie inicjatora)
TARG informuje, że zachowanie inicjatora jest niezgodne z protokołem komunikacyjnym.
0x06h: ABORT (przerwij natychmiast)
Inicjator poleca przerwać wykonywanie aktualnej operacji. TARG zeruje swoje bufory i znaczniki, unieważnia odczytane już dane i informacje statusowe i wchodzi w fazę BUS FREE.
0x07h: MESSAGE REJECT (odmowa przyjęcia wiadomości)
Zarówno INIT jak i TARG mogą użyć tego komunikatu aby zasygnalizować, że nie mogą zinterpretować odebranej wiadomości: jest błędna lub niezaimplementowana przez adresata.
0x08h: NO OPERATION (wiadomość pusta)
Wiadomość nie niesie w sobie żadnych informacji ani nie powoduje żadnych działań.
0x09h: MESSAGE PARITY ERROR (wykryto błąd parzystości)
Inicjator informuje TARG o wystąpieniu błędu parzystości.
0x0Ah: LINKED COMMAND COMPLETE (zakończono rozkaz cząstkowy)
Zakończono wykonywanie rozkazu będącego składową łańcuchowej grupy rozkazów. Szczegóły w fazie STATUS.
0x0Bh: LINKĘ D COMMAND COMPLETE WITH FLAG (zakończono rozkaz cząstkowy plus flaga)
Tak jak 0x0Ah, ale dotyczy rozkazów które miały ustawiony bit FLG w bajcie kontrolnym CDB. Proszę porównać z opisem bajtu kontrolnego i rysunkiem 7.31.
0x0Ch: BUS DEVICE RESET (wyzerowanie)
Inicjator poleca jednostce TARG przeprowadzenie wyzerowania. Zakres przeprowadzanych czynności zależy od rodzaju urządzenia i obejmuje przywrócenie pewnych standardowych wartości parametrów i sprowadzenie elementów do określonego stanu początkowego.
0x0Dh: ABORT TAG (porzuć wykonanie procesu)
Wiadomość ta umożliwia przerwanie pracy bieżącego polecenia i przejście do realizacji następnego. Dotyczy mechanizmu kolejkowania rozkazów.
0x0Eh: CLEAR QUEUE (wyczyść kolejkę procesów)
Wiadomość ta umożliwia przerwanie pracy bieżącego polecenia i usunięcie z kolejki wszystkich oczekujących jeszcze procesów. Dotyczy mechanizmu kolejkowania rozkazów.
0x20h: SIMPLE QUEUE TAG (umieść w kolejce) 0x21h: HEAD OF QUEUE TAG (umieść na szczycie) 0x22h: ORDERED OUEUE TAG (umieść na końcu)
Wiadomości określają różne sposoby umieszczania rozkazów w kolejce. Wszystkie trzy są dwubajtowymi wiadomościami zbudowanymi według tego samego schematu przedstawionego na rysunku 7.50.


Znaczenie pola Queue Tag omówione jest dokładniej w części tego rozdziału poświęconej rozkazom systemowym.
0xl2h: CONTINUE l/O PROCESS 0xl3h: TARGET TRANSFER DISABLE
Wiadomości te nie są implementowane przez większość dysków SCSI. Realizują mechanizm zamiany ról inicjatora i jednostki docelowej. Kod 0xl3h powoduje, że w następnej fazie reselekcji TARG nie będzie występował z żądaniem połączenia z FNIT.
Jednostka docelowa musi wtedy czekać, aż inicjatywa powtórnego połączenia wyjdzie od inicjatora. Nasuwa się tu nieodparcie analogia z metodą nazywaną polling (przeciwieństwo systemu przerwań), zgodnie z którą CPU odpytuje pewne urządzenia zewnętrzne.
Wiadomość 0x12h wywołuje właśnie takie odpylanie. Inicjator spełnia tutaj rolę jednostki docelowej w zainicjowaniu fazy reselekcji.
0x80h - 0xFFh: IDENTIFY (identyfikacja jednostki LUN)
Identyfikowanie jednostki LUN konieczne jest dla ustanowienia "ścieżki logicznej" prowadzącej od urządzenia jako całości (TARG lub INIT) do podległej mu elementarnej jednostki składowej. Wiadomość ta przekazywana jest przez INIT po wyjściu z fazy selekcji, a przez TARG po zakończeniu fazy reselekcji. Jest ona zachowana jedynie ze względów historycznych, a dla dysków twardych w ogóle nie ma żadnego znaczenia. Konstrukcja jednobajtowej wiadomości IDENTIFY przedstawiona jest na rysunku 7.51.

Bit 6 (DIS) może być ustawiony jedynie przez inicjator w relacji INIT -> TARG i oznacza wtedy, że INIT wyraża zgodę na przeprowadzanie operacji rozłączania jednostek przez TARG (Disconneci). W przeciwnym razie TARG nie może stosować wiadomości o kodzie Ox04h i w konsekwencji prowokować rozłączenia. Jeżeli TARG wysyła wiadomość INDENTIFY, musi zawsze wyzerować bit 6.
Bity 2-0 adresują jednostkę logiczną (LUN, Logical Unit Number) podległą danemu urządzeniu. W przypadku dysków twardych LUN musi być zawsze równy zero; niezależnie od fizycznej organizacji (większa liczba dysków) jest tylko jedna jednostka LUN, a sektory ewentualnych dodatkowych dysków stanowią bloki o kolejnych numerach.
Ox01h: SYNCHRONOUS DATA TRANSFER REOJUEST (uzgodnienie RAO i TP)
Wiadomość ta, wymieniana pomiędzy dwoma urządzeniami służy uzgodnieniu parametrów transmisji synchronicznej: RAO (REQ/ACK Offset) i TP (Transfer Period). Rysunek 7.52. przedstawia konstrukcję i znaczenie poszczególnych bajtów tej wiadomości.
Uwaga:
Jeżeli RAO równy jest zero, domniemana jest transmisja w trybie asynchronicznym. RAO = 0xFFh oznacza natomiast nieograniczoną ilość niepotwierdzonych impulsów REQ.






Procedura uzgadniania
Uzgodnione muszą być takie parametry, które umożliwiają prawidłową pracę obydwu partnerów, nawet gdy ich możliwości techniczne nie są jednakowe. Oznacza to oczywiście "równanie do gorszego".
Nadawca. Urządzenie wysyłające tę wiadomość po raz pierwszy musi zawrzeć w niej takie graniczne wartości parametrów transmisji, które gwarantuj ą jeszcze jego poprawne działanie.
Odbiorca. Urządzenie otrzymuje omawianą wiadomość. Możliwe są dwie sytuacje:
Nadesłane parametry umożliwiają jego prawidłowe funkcjonowanie. Następuje odesłanie wiadomości w tym samym stanie.
Nie jest możliwe zapewnienie poprawnej pracy przy nadesłanych parametrach. Wiadomość zostaje odesłana i zawiera graniczne parametry dopuszczalne dla odbiornika.
W obydwu przypadkach następuje uzgodnienie wartości parametrów zawartych w odpowiedzi. W trakcie następującej po uzgodnieniu wymiany danych żadne z urządzeń nie może przekroczyć granicznych wartości zadeklarowanych przez drugą stronę. Dozwolone jest więc nadawanie z parametrami TP i RAO spełniającymi warunki:
TP > TPa RAO < RAOa gdzie:
TPa i RAOa są uzgodnionymi parametrami transmisji synchronicznej.
System wskaźników
Zgodnie ze specyfikacją SCSI każdy inicjator posiada dwa zestawy tzw. wskaźników: zestaw bieżący i zestaw zachowany (zapamiętany).
Zestaw bieżący wskazuje na następny bajt (danych, rozkazów lub statusowy), który powinien być przekazany do TARG. Zestaw ten wykorzystywany jest przez tę z (możliwie wielu) jednostek TARG, która ma aktualne połączenie z inicjatorem.
Ze względu na stosowanie mechanizmu selekcji i reselekcji (różne urządzenia łączą się ze sobą po czym rozłączają zwalniając szynę) istnieje konieczność zabezpieczania zestawu wskaźników aktualnych w celu ich późniejszego wykorzystania (w kolejnej fazie reselekcji). W tym czasie ich miejsce zajmuje inny przywołany z pamięci zestaw, który odpowiada aktualnemu połączeniu. Dla każdego aktywnego, tj. będącego w trakcie realizacji rozkazu istnieje zestaw wskaźników i to niezależnie od tego, czy połączenie między jednostkami TARG i INIT ma aktualnie miejsce. Omawiana tu organizacja systemu wskaźników przedstawiona jest na rysunku 7.53.
Dowolny z inicjatorów może pozostawać w kontakcie z wieloma jednostkami logicznymi będącymi pod opieką różnych urządzeń TARG. W wydzielonym obszarze przeznaczonym przez INIT na wskaźniki zachowane znajdują się trójki wektorów, z których każda przynależy do jednego z urządzeń logicznych. Poszczególne wektory takiej trójki mają następujące znaczenie:
C - wskaźnik na blok rozkazowy, D -wskaźnik na blok danych, S - wskaźnik na blok statusowy.
Na początku cyklu realizacji każdego rozkazu poszczególne składowe zestawu zachowanego wskazują na określone przynależne sobie bloki w pamięci do chwili odebrania przez INIT wiadomości Save Data Pointer. W tym momencie następuje przepisanie składowych zestawu bieżącego do odpowiadających sobie pól w obszarze wskaźników zachowanych.
Jeżeli TARG przekazał informację Restore Data Pointer, inicjator odszukuje odpowiedni zestaw wskaźników i umieszcza go w miejscu wskaźników bieżących.
Przykładowa wymiana danych
Mechanizm przejść magistrali w kolejne fazy odbywa się według ściśle określonego algorytmu, którego nie będę tu przytaczał ze względu na stopień jego komplikacji. Wystarczy wspomnieć, że poza nielicznymi wyjątkami, bazującymi na wykorzystaniu funkcji RESET i ATTENTION, nie jest możliwe przejście z każdej fazy do dowolnej innej. Przytoczę tu tylko prosty przykład przebiegu realizacji konkretnej operacji: odczytu bloku danych z dysku. Rolę inicjatora (INIT) pełni kontroler magistrali SCSI, a jednostką docelową (TARG) jest dysk twardy.
Oto krótkie wyjaśnienia zjawisk zachodzących na magistrali w przedziałach czasowych oznaczonych literami A - N:
A - zwolnienie linii BSY w sytuacji gdy SEL = O wprowadza magistralę w stan BUS FREE. Wszystkie urządzenia zaprzestały sterowania jakichkolwiek sygnałów;
B - INIT zdobywa dostęp do magistrali przechodząc jako zwycięzca (Winner) przez fazę rozstrzygania (ARBITRATION);
C - INIT wywołuje funkcję ATTENTION w fazie SELECTION. Na szynie danych znajdują się identyfikatory SCSI-ID kontrolera i dysku;
D - TARG wykrywa funkcję ATTENTION i odpowiada na nią wejściem w fazę informacyjną MESSAGE OUT aktywując kombinację I/O = O, C/D = MSG = 1. Pojedyncza sekwencja REQ/ACK powoduje przesłanie jednego bajtu od INIT do TARG. Jest to wiadomość IDENTIFY;
E - nowa kombinacja sygnałów sterujących I/O = MSG = O, C/D = l oznacza fazę informacyjną COMMAND. W stanie tym dysk odbiera od kontrolera rozkaz określony grupą bajtów CDB (Command Descriptor Block). Bajty te przesyłane są szyną danych w trybie asynchronicznym. W tym przykładzie zakładamy, że jest to rozkaz READ;
F - dysk po otrzymaniu rozkazu przystępuje do jego realizacj i. Wiadomo jest, że do uformowania kompletnego bloku logicznego w pamięci buforowej dysku potrzeba stosunkowo dużo czasu. TARG postanawia więc oddać szynę dla potrzeb innych urządzeń (o ile takie istnieją). Kombinacja MSG = I/O = C/D = l powoduje wejście w fazę informacyjną MESSAGE IN (wysyłam wiadomość do INIT). Treścią tej jednobajtowej wiadomości jest DISCONNECT czyli postanowienie rozłączenia;
G - magistrala wchodzi w stan BUS FREE i pozostaje w nim do czasu, gdy jedno z urządzeń wejdzie w fazę ARBITRATION;
H - TARG (dysk) jest już gotów do przekazywania danych, więc stara się uzyskać dostęp do magistrali (konieczna jest ewentualnie faza ARBITRATION);
I - TARG inicjuje fazę RESELECTION (na szynie danych identyfikatory adresowe SCSI dysku i kontrolera ale I/O = l w odróżnieniu od fazy SELECTION), by wznowić kontakt z inicjatorem (kontrolerem SCSI) nawiązany w punkcie C;
J - TARG zarządza wejście w fazę MESSAGE IN i wysyła do kontrolera wiadomość IDENTIFY zawierającą numer jednostki logicznej LUN żądającej połączenia. Numer ten w przypadku dysków twardych jest i tak zawsze równy zero, ale procedura ta jest przeprowadzana dla zachowania zgodności z protokołem;
K - TARG wprowadza szynę w fazę DATA IN (C/D = MSG = O, I/O = 1) i przystępuje do przekazywania danych. Liczba bajtów, które zostaną przesłane, określona została w punkcie E w ramach rozkazu READ. Każdy przekazany bajt potwierdzany jest parą impulsów REQ/ACK. Ma tu miejsce asynchroniczny tryb przekazywania danych; brak było wcześniejszego uzgodnienia parametrów trybu synchronicznego;
L - Zakończeniu przesyłania danych towarzyszy wejście w fazę STATUS (TARG steruje w tym celu MSG = O, C/D = I/O = 1). Para impulsów REGYACK przenosi jeden bajt informacji statusowej od TARG do INIT;
M - TARG przełącza magistralę w stan MESSAGE IN (I/O = C/D = MSG) aby wysłać wiadomość COMMAND COMPLETE do kontrolera;
N - Po zakończeniu operacji TARG zwalnia sygnał BSY co wprowadza magistralę w stan BUS FREE.

Wyszukiwarka

Podobne podstrony:
Eraser Dokładne formatowanie dysku twardego
08 Rozdział 07
efektowne wykorzystanie dysku twardego www ksiazki4u prv pl
Pan Wolodyjowski Rozdzial 07
ROZDZIAŁ 07 Genetyka kliniczna czerniaka
silnik dysku twardego
Przyspieszanie dysku twardego w Windows XP i 2003
07 rozdział 07
08 rozdział 07 25boqjqcci3oocvb5vj3oy3rc5cxkdjkgvmc4tq
Defragmentacja dysku twardego

więcej podobnych podstron