0x08 graphic

Transfer danych z dysku twardego i do niego następuje w każdym komputerze PC z wykorzystaniem technologii EIDE lub SCSI. Standard SCSI jest przy tym uważany za solid­ny, szybki i uniwersalny, umoż­liwia ponadto podłączanie do komputera urządzeń innych niż pamięci masowe ­np. skanerów.

Standard SCSI (Small Computer Systems Interface) osiągnął niedawno biblijny niemal wiek 16 lat. Pomi­mo tego magistrala ta nie straciła wcale na atrakcyjności: adapter SCSI, mimo iż nie­co droższy od EIDE, umożliwia dołączenie aż siedmiu urządzeń - EIDE ze swoimi dwoma kanałami obsługuje jedynie cztery.

Poza tym SCSI przewiduje możliwość samodzielnej komunikacji pomiędzy przy­łączonymi do karty urządzeniami. Wyni­kające stąd odciążenie procesora powodu­je, że SCSI staje się godnym polecenia roz­wiązaniem dla serwerów i maszyn unixo­wych. SCSI znajdzie też dla siebie z łatwo­ścią miejsce na biurku ambitniejszego (i za­sobniejszego w gotówkę) użytkownika ­napędy MO, nagrywarki CD, streamery DAT i skanery wyposażone są z reguły w ten właśnie interfejs.

Specyfikacja SCSI definiuje schemat elektryczny magistrali dla ośmiu (Wide­SCSI dla szesnastu) urządzeń i protokół wy­miany informacji pomiędzy nimi. Każde­mu urządzeniu zostaje w trakcie instalacji, poprzez odpowiednie ustawienie zworek, przypisany numer ID (od 0 do 7, w przy­padku Wide-SCSI od 0 do 15), który po­zwala na jego jednoznaczną identyfikację.

Jeżeli do magistrali SCSI zostanie dołą­czony kolejny kontroler, jest on określany jako Bridge-Controller. Urządzenia podłą­czone do niego są obsługiwane poprzez tzw. LUN (Logical Unit Number). Także urządzenie skupiające w sobie większą licz­bę napędów (matryca dysków twardych, zmieniacze płyt CD) jest z logicznego punk­tu widzenia kontrolerem typu bridge z jed­nostkami LUN.

W specyfikacji przewidziane jest rów­nież proste sprawdzanie poprawności transmisji danych przy wykorzystaniu kon­troli parzystości. W tym celu urządzenie źródłowe (nadajnik) tworzy automatycznie dla każdego bajtu przesyłanego za pośred­nictwem 8-bitowej magistrali dziewiąty bit, będący sumą bitów danych. Podobną ope­rację wykonuje odbiornik i w przypadku wystąpienia rozbieżności pomiędzy oboma bitami parzystości generowany jest komu­nikat Message Parity Error, a transmisja zo­staje po prostu powtórzona.

To jak dalece efektywna jest kontrola pa­rzystości, pozostaje już sprawą statystyki: jeżeli błędny jest jeden bit, ilość wykrywa­nych błędów wynosi 100% , błędy podwój­ne nie są natomiast wcale diagnozowane.

SEDNO W TERMINATORACH

Wszystkie sygnały elektryczne, zarówno te reprezentujące dane, jak i sterujące, są na magistrali SCSI przedstawiane w logice ujemnej. Oznacza to, że poziom napięcia bliski zeru odpowiada logicznej jedynce, napięcie dodatnie zaś - logicznemu zeru. Urządzenia SCSI posiadają w charakterze wejścia bramkę logiczną z zanegowanym wejściem na każdej linii złącza . Rolę wyj­ścia pełni włączona równolegle w układ bramka logiczna z zanegowanym wyjściem (bramka NAND z otwartym kolektorem).

Z powodu wysokiej, w porównaniu z odległością, na jaką są wysyłane sygnały, częstotliwości pracy początek i koniec każ­dej magistrali SCSI musi być elektrycznie zamknięty. Do tego celu służą zamiennie rezystory (zamykanie pasywne) lub rów­noważne układy aktywne. Zamykanie magistrali może odbywać się albo w urządze­niach końcowych (jednym z nich jest z re­guły karta w komputerze), albo też po­przez oddzielne wtyczki, włączane na ko­niec magistrali (tzw. terminatory). Niedo­puszczalne jest przy tym okablowanie w formie litery "T" oraz podłączenie ter­minatora wewnątrz magistrali SCSI, za­miast na końcu.

0x08 graphic
Nieprawidłowo zakończone przewody łączące są dla biegnących po nich sygnałów elektrycznych kombinacją obciążeń indukcyjnych i pojemnościowych, które ­zgodnie z prawami rządzącymi techniką wy­sokich częstotliwości - poprzez zmianę fazy sygnału otwartym końcu magistrali po­woduje refleksje impulsów elektrycznych. To z kolei owocuje

wzajemnym nakłada­niem się przesuniętych w fazie sygnałów, co może doprowadzić do pojedynczych błę­dów odczytu, a nawet do całkowitej kata­strofy w postaci nieprawidłowo działającej magistrali.. Terminator kompensuje elek­trycznie elementy indukcyjne i pojemno­ściowe łącza. Jest ono, na skutek jego działania, na obu końcach obciążone niewielką rezystancją odpowiednio zamknięte. Dlatego zawsze ważne jest wła­ściwe rozmieszczenie terminatorów.

Zamykanie pasywne jest dokonywane dla każdej linii danych i sterującej oddziel­nie za pomocą dwóch rezystorów, które ma­ją zazwyczaj postać mostków rezystorów. Schemat elektryczny takiego termina­tora można obejrzeć na rysunku powyżej. Jeżeli urządzenie nie powinno być zamknię­te terminatorem, wystarczy wyjąć mostek rezystorowy z gniazda bądź, w nowszych urządzeniach, zmienić ustawienie zworki.

0x08 graphic

Powyższy schemat przedstawia sposób połą­czenia w układzie elektrycznym magistrali Sx obu rezystancji terminatora. W przypad­ku gdy linia jest nieaktywna (sygnał wyjścio­wy OUT lub sygnał enable EN ma wartość niską), oba rezystory tworzą nieobciążony dzielnik napięciowy. Zgodnie z prawami elektrotechniki powstaje wtedy napięcie 3 V, co odpowiada elektrycznie poziomo­wi wysokiemu, logicznie zaś zeru. Jeżeli na­tomiast na wejściu bramki pojawi się sygnał aktywny - elektrycznie sygnał niski - przez rezystor 220 W popłynie w kierunku masy prąd o natężeniu 40-50 mA. W wyniku te­go pomiędzy rezystorami wytworzy się na­pięcie ok. 0,5 V, co równoważne jest logicz­nej jedynce.

Od czasu wprowadzenia magistrali SCSI-II możliwe jest alternatywne użycie tzw. aktywnego terminatora. Warunkiem jest obustronna impedancja przewodu w granicach 100-130 W. Gdy linia zostanie obciążona aktywną bramką wyjściową, prąd płynie z regula­tora napięcia poprzez rezystor 110 W do bramki wyjściowej. Występujący przy tym spadek napięcia na rezystorze powoduje spadek potencjału o ok. 0 V, co odpowia­da znowu logicznej jedynce.

Zarówno aktywne, jak i pasywne termi­natory wymagają pomocniczego napięcia zasilającego. Napięcie to jest zapewniane przez specjalną linię Termpower (TERM­PWR). Linia ta jest zasilana przez adapter umieszczony w komputerze napięciem 5 V.

0x08 graphic

Niedawno pojawiły się adaptery i urzą­dzenia SCSI oznaczane jako SCAM (SCSI Con figuration Auto Magically). Zastoso­wane w nich rozwiązanie techniczne jest porównywalne z plug and play magistrali PCI. Po włączeniu komputera komponen­ty SCSI wykonują odpowiednie pomiary, a następnie terminacja jest wykonywana automatycznie przez kartę sterownika.

Jeżeli nie wystarcza nam dopuszczalna dla SCSI-I maksymalna liczba sześciu ob­sługiwanych urządzeń lub trzymetrowa długość magistrali (od Fast-SCSI wzwyż), pomocna będzie różnicowa magistrala SCSI. W przypadku tej wersji SCSI używa­ny jest specjalny kabel połączeniowy, zło­żony ze skręconych parami przewodów.

STANDARDY SCSI

Leciwy standard SCS1-I wraz z ujedno­liconym nieco później Common Com­mand Set (CCS) pracuje na bazie ośmiobitowej magistrali danych i ofe­ruje maksymalną prędkość przesyła­nia danych około 3 MB/s. Opcjonalny jest synchroniczny tryb pracy i 5 MB/s.

SCSI-II oferuje jasno zdefiniowany ze­staw poleceń i listę parametrów. Dzię­ki liście urządzeń uniknięto wielu pro­blemów z napędami CD, MO, wymien­nymi dyskami, skanerami itd. Magi­strala SCSI-II używa znanego z SCSI­I 50-żyłowego kabla SCSI-A i zasadni­czo nie jest szybsza niż SCSI-I.

Fast-SCSI jest przyszłością standardu. Pozwala on na transfer danych ,do 10 MB/s, co osiągnięto m.in. podnosząc częstotliwość taktowania magistrali.

Wide-SCSI to 16-bitowa wersja Fast­SCSI, a więc kolejna poprawka SCSI-II. Maksymalnie 20 MB danych na sekun­dę może być przesyłane synchronicz­nie za pośrednictwem 68-żyłowego kabla SCSI-B. Dzięki temu, że do ada­ptera Wide-SCSI na ogół można podłączyć zarówno przewody SCSI-A, jak i SCSI-B, kontrolerem może jednocze­śnie obsługiwać urządzenia SCSI-II, Fast-SCSI oraz Wide-SCSI.

Standard Ultra-SCSI, nazywany rów­nież Fast-20-SCSI, stosuje większą prędkość taktowania sygnału przesy­łanego zwykłym kablem 50-żytowym i osiąga wydajność 20MB/s. Dla urzą­dzeń zewnętrznych wymagany jest specjalny kabel połączeniowy. 16-bitowy wariant Ultra-SCSI umożli­wiający transfer 40 MB/s poprzez ka­bel SCSI-B nazywany jest Ultra-Wide­-SCSI lub Fast-40-SCSI.

Sync-Negotiation: aby nastąpiło porozumienie

Od SCSI-II wzwyż wprowadzona została tzw. Sync-Negotiation. Odbywa się ona podczas inicjalizacji adaptera po włącze­niu komputera do sieci. Urządzenia SCSI porozumiewają się pomiędzy sobą co do dostępnych prędkości i rodzajów przesy­łania danych. Podczas pracy używany jest potem najlepszy możliwy tryb pracy. Skut­kiem tego jest zmiana prędkości pracy ma­gistrali w trakcie jej działania. Wybór urzą­dzeń uczestniczących w fazie negocjacyj­nej następuje z reguły z poziomu menu konfiguracyjnego karty sterownika SCSI.

Fazy pracy magistrali SCSI

Aby transfer danych przez magistralę mógł się w ogóle odbyć, musi być zapoczątkowa­ny przez któreś z urządzeń (tzw. inicjator). Urządzenie rozpoczynające komunikację określa adres odbiorcy danych (tzw. target). Większość urządzeń potrafi być, w zależno­ści od pełnionego w danej chwili zadania, zarówno nadawcą, jak i odbiorcą danych. Standard SCSI przewiduje także sytuację, kiedy może być prowadzona wymiana da­nych pomiędzy jednym inicjatorem i wielo­ma odbiorcami, jak również pomiędzy wie­loma nadawcami i wieloma odbiorcami.

Magistrala SCSI może się znajdować w różnych fazach pracy. Jeżeli przykładowo pro­gram wyda polece­nie menedżerowi ASPI dotyczące urzą­dzenia SCSI, jest ono wykonywane przez kartę sterownika. In­terpretuje ona roz­kaz i wysyła unormo­wane komunikaty SCSI i dane za po­średnictwem magistrali. W obrębie ma­gistrali funkcjonują też cykle i fazy pracy, które są inicjowane przez urządzenia SCSI bez udziału procesora. Do sygnali­zacji aktualności poszczególnych sygna­łów i faz magistrali służą linie sterujące.

Nieaktywne sygnały sterujące BSY (bu­sy) i SEL (select) wskazują na chwilowy brak obciążenia magistrali SCSI. Stan ten nazywany jest fazą niezajętości magistrali (bus-free-phase). Faza ta następuje bądź po wykonaniu polecenia RESET, bądź też po wystąpieniu komunikatu Command-Com­plete lub Disconnect.

Faza arbitrażu (arbitration-phase) wy­gląda następująco: jeśli jakieś urządzenie (inicjator) chce wysłać dane do odbiorcy (target), ustawia sygnał BSY na wartość ak­tywną i wystawia swój numer ID na magi­stralę danych. Jeżeli inne urządzenie zasy­gnalizowało jednocześnie chęć skorzysta­nia z magistrali, zostają sprawdzone prio­rytety obu użytkowników (urządzenie ma wyższy priorytet, gdy jego SCSI-ID ma większą wartość). Inicjator o większym priorytecie (numerze ID) otrzymuje pra­wo do użycia magistrali. W momencie, gdy zostanie wybrane urządzenie o najwyż­szym priorytecie, ustawia ono, w charak­terze blokady magistrali, linię SEL na war­tość aktywną - właściwa część komunika­cji może zostać rozpoczęta.

0x08 graphic

W trakcie trwania fazy selekcji (selec­tion-phase) urządzenie inicjujące transmisje nawiązuje połączenie z odbiorcą. W tym celu nadajnik ustala adres odbior­cy i przełącza linię ATN (attention) do po­ziomu aktywnego. Odbiorca odpowiada krótkim uaktywnieniem sygnału BSY. W przypadku, gdy tego nie zrobi, magi­strala jest przełączana w stan nie zajęty (bus-free).

Blisko związana z fazą selekcji jest faza zwana reselection-phase (faza powtórnej selekcji). Występuje ona, gdy "zwycięzcą" w fazie selekcji był przyszły odbiorca (tar­get), a nie nadajnik (inicjator). Może się to zdarzyć jedynie wówczas, gdy w poprzed­nim cyklu odbiorca oddal kontrolę nad magistralą, aby w międzyczasie zrealizo­wać inne, długotrwałego zadanie, będące skutkiem wymiany danych z inicjatorem. Magistrala jest wtedy zwalniana dla innych jej użytkowników, ale odbiorca zapamię­tuje numer ID inicjatora z ostatniego po­łączenia. Po zakończeniu wykonywania zadania odbiorca (target) usiłuje nawiązać połączenie z byłym inicjatorem w celu dokończenia transmisji, używając zapamięta­nego wcześniej identyfikatora SCSI. Aby odróżnić fazę selekcji od fazy reselekcji, w przypadku tej drugiej uaktywniany jest dodatkowo sygnał I/O (input/output).

Po szczęśliwie zakończonej fazie selek­cji następuje faza message-out; faza rese­lekcji jest z kolei przyczyną wystąpienia fa­zy message-out Komunikaty (messages) słu­żą przede wszystkim do ustalenia parame­trów transmisji. Są jednak używane również do sygnalizowania sytuacji wyjątkowych, np. jako reakcja na błąd parzystości. Fazy message-in i message-out różnią się jedy­nie kierunkiem przesyłania komunikatów pomiędzy nadawcą i odbiorcą. W obu fa­zach urządzenie wysyłające komunikat wystawia odpowiedni bajt na magistralę SCSI i uaktywnia linię REQ (request). Od­biorca komunikatu sygnalizuje jego pomyślne odczytanie za pomocą aktywnego sygnału ACK. Następnie obie linie sterujące (REQ i ACK) są doprowadzone do stanu nieaktywnego-krótki, asynchronicz­ny transfer dobiega w ten sposób końca.

Obie omówione wyżej fazy (message-in i message-out) prowadzą z reguły do fazy danych (data-phase), poleceń (command-­phase) lub statusowej (status-phase). W trakcie fazy command-phase odbiornik (target) otrzymuje od nadajnika (inicjato­ra) polecenia SCSI. Faza ta jest odróżnia­na od innych aktywnymi sygnałami BSY i C/D (Controll/Data).

Faza data-phase służy do wymiany danych i informacji sterujących pomiędzy urządze­niami. Przykładowo aplikacja wysyła stru­mień danych przygotowany na podstawie in­formacji z dysku twardego do karty sterow­nika. Wyróżniane są przy tym, zależnie od kierunku przesyłania danych, fazy data-in i data-out (z punktu widzenia magistrali od­różnia je stan linii I/O). Transfer może zacho­dzić asynchronicznie, za pośrednictwem zna­nej nam już sekwencji REQ/ACK, albo szyb­ciej - synchronicznie. W drugim przypadku dane są wysyłane po każdym pulsie sygnału REQ, potwierdzenie (ACK) natomiast nastę­puje jedynie w ustalonych odstępach czasu.

Faza status-phase występuje po zakoń­czeniu, przerwaniu lub odrzuceniu pole­cenia. Odbiorca wysyła przy tym bajt sta­tusu do inicjatora. Transfer zachodzi asyn­chronicznie (REQ/ACK) w obecności ak­tywnego sygnałów C/D i I/O, jak również aktywnej linii MSG.

Po zakończeniu fazy command-phase, data-phase i status-phase następuje zawsze faza message-phase, w trakcie której prze­syłany jest z reguły komunikat Command complete. Na zakończenie system prze­chodzi na powrót do fazy bus-free - tym samym nasz cykl się zamyka.

Standard SCSI-II umożliwia dodatko­wo stosowanie kolejki poleceń - w kolej­ce takiej maksymalnie 256 rozkazów ini­cjatora transmisji może czekać na ich wy­konanie przez odbiornik (target). Inteli­gentne odbiorniki potrafią przy tym mo­dyfikować kolejność oczekujących na re­alizację poleceń.

Dla programistów - ­interfejsy programowe

Komunikację pomiędzy urządzeniami SCSI a komputerem PC przejmuje karta adaptera. Z reguły wyposażona ona jest w BIOS, który udostępnia komputerowi procedury służące do startowania systemu z dysku twardego SCSI, systemowi opera­cyjnemu zaś możliwość najważniejszych operacji zapisu i odczytu.

Napędy CD-ROM i MO nie mogą jed­nak być w ten sposób obsługiwane. Ponie­waż żaden system operacyjny, a już na pewno żadna aplikacja, nie może obsługi­wać wszystkich istniejących adapterów SCSI, ich producenci zostali zobligowani do oferowania interfejsu programowego do swoich produktów, operującego na nie­co wyższym poziomie logicznym. Na tym interfejsie opierają się później sterowniki niezależne od samego urządzenia.

Znane są dwie specyfikacje interfejsów: CAM (Common Acces Method) sformuło­wane przez komisję ANSI oraz ASPI (Acf­vanced SCSI Programrnirrg Interface ) firmy Adaptec. Interfejs ASPI jest przy tym bar­dziej popularny.

Interfejs ASPI jest dostępny po załado­waniu odpowiednich sterownik6w (pod DOS-em z poziomu pliku config.sys). Ste­rownik taki jest zawsze ściśle związany z ob­sługiwanym sprzętem, a więc zależny od je­go producenta. Z punktu widzenia aplika­cji interfejs ASPI jest jednak niezależny od obsługiwanej karty adaptera. Dzięki temu aplikacje kompatybilne z ASPI mogą bez problemów współpracować z kartą adapte­ra dowolnego producenta.

Aby wywołać jakąkolwiek funkcję ASPI, trzeba najpierw utworzyć w pamięci okre­śloną strukturę danych, która posłuży do wykonania danej akcji. Struktura ta nazy­wana jest SCSI Reguest Block (SRB) i po­winna się zaczynać od identyfikatora żąda­nej funkcji ASPI wraz z parametrami wy­wołania. Zdefiniowane są np. następujące funkcje ASPI: Odpytanie kontrolera (OOh), Sprawdzenie typu jednostki (01 h), Wydanie polecenia SCSI (03h), Przerwanie polecenia SCSI (03h) lub Zresetowanie jednostki SCSI (04h). W momencie, gdy struktura SRB jest gotowa, trzeba umieścić jej adres na stosie (najpierw numer segmentu, później przesunięcie). Następnie poprzez daleki skok (far-call) do procedury odpowiedni adres zostanie przekazany do menedżera ASPI, który wykona odpowiednią funkcję.

Wywołania CAM funkcjonują, podob­nie jak w przypadku ASPI, za pośrednic­twem odpowiedniej struktury w pamięci operacyjnej komputera. W tym przypad­ku struktura ta ma nazwę CAM Control Block (CCB). Funkcje CAM są uruchamia­ne poprzez użycie funkcji 8100h przerwa­nia 4Fh. W rejestrze BX należy przy tym podać offset bloku CCB, w rejestrze ES zaś numer jego segmentu.

A.Rorat, S.Stańczyk - Opracowanie pomocy dydaktycznych do przedmiotu Urządzenia Techniki Komputerowej

116