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 solidny, 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. Pomimo tego magistrala ta nie straciła wcale na atrakcyjności: adapter SCSI, mimo iż nieco 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. Wynikające stąd odciążenie procesora powoduje, że SCSI staje się godnym polecenia rozwiązaniem dla serwerów i maszyn unixowych. SCSI znajdzie też dla siebie z łatwością miejsce na biurku ambitniejszego (i zasobniejszego 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 (WideSCSI dla szesnastu) urządzeń i protokół wymiany informacji pomiędzy nimi. Każdemu urządzeniu zostaje w trakcie instalacji, poprzez odpowiednie ustawienie zworek, przypisany numer ID (od 0 do 7, w przypadku Wide-SCSI od 0 do 15), który pozwala 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ą liczbę napędów (matryca dysków twardych, zmieniacze płyt CD) jest z logicznego punktu widzenia kontrolerem typu bridge z jednostkami LUN.
W specyfikacji przewidziane jest również proste sprawdzanie poprawności transmisji danych przy wykorzystaniu kontroli parzystości. W tym celu urządzenie źródłowe (nadajnik) tworzy automatycznie dla każdego bajtu przesyłanego za pośrednictwem 8-bitowej magistrali dziewiąty bit, będący sumą bitów danych. Podobną operację wykonuje odbiornik i w przypadku wystąpienia rozbieżności pomiędzy oboma bitami parzystości generowany jest komunikat Message Parity Error, a transmisja zostaje po prostu powtórzona.
To jak dalece efektywna jest kontrola parzystości, pozostaje już sprawą statystyki: jeżeli błędny jest jeden bit, ilość wykrywanych błędów wynosi 100% , błędy podwójne 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ównoważne układy aktywne. Zamykanie magistrali może odbywać się albo w urządzeniach końcowych (jednym z nich jest z reguły karta w komputerze), albo też poprzez oddzielne wtyczki, włączane na koniec magistrali (tzw. terminatory). Niedopuszczalne jest przy tym okablowanie w formie litery "T" oraz podłączenie terminatora wewnątrz magistrali SCSI, zamiast na końcu.
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ą wysokich częstotliwości - poprzez zmianę fazy sygnału otwartym końcu magistrali powoduje refleksje impulsów elektrycznych. To z kolei owocuje
wzajemnym nakładaniem się przesuniętych w fazie sygnałów, co może doprowadzić do pojedynczych błędów odczytu, a nawet do całkowitej katastrofy w postaci nieprawidłowo działającej magistrali.. Terminator kompensuje elektrycznie 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 oddzielnie za pomocą dwóch rezystorów, które mają zazwyczaj postać mostków rezystorów. Schemat elektryczny takiego terminatora 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.
Powyższy schemat przedstawia sposób połączenia w układzie elektrycznym magistrali Sx obu rezystancji terminatora. W przypadku gdy linia jest nieaktywna (sygnał wyjściowy 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 poziomowi wysokiemu, logicznie zaś zeru. Jeżeli natomiast 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 tego pomiędzy rezystorami wytworzy się napięcie ok. 0,5 V, co równoważne jest logicznej 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 regulatora 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 odpowiada znowu logicznej jedynce.
Zarówno aktywne, jak i pasywne terminatory wymagają pomocniczego napięcia zasilającego. Napięcie to jest zapewniane przez specjalną linię Termpower (TERMPWR). Linia ta jest zasilana przez adapter umieszczony w komputerze napięciem 5 V.
Niedawno pojawiły się adaptery i urządzenia SCSI oznaczane jako SCAM (SCSI Con figuration Auto Magically). Zastosowane w nich rozwiązanie techniczne jest porównywalne z plug and play magistrali PCI. Po włączeniu komputera komponenty 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 obsł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żywany jest specjalny kabel połączeniowy, złożony ze skręconych parami przewodów.
STANDARDY SCSI
Leciwy standard SCS1-I wraz z ujednoliconym nieco później Common Command Set (CCS) pracuje na bazie ośmiobitowej magistrali danych i oferuje maksymalną prędkość przesyłania danych około 3 MB/s. Opcjonalny jest synchroniczny tryb pracy i 5 MB/s.
SCSI-II oferuje jasno zdefiniowany zestaw poleceń i listę parametrów. Dzięki liście urządzeń uniknięto wielu problemów z napędami CD, MO, wymiennymi dyskami, skanerami itd. Magistrala SCSI-II używa znanego z SCSII 50-żyłowego kabla SCSI-A i zasadniczo 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 FastSCSI, a więc kolejna poprawka SCSI-II. Maksymalnie 20 MB danych na sekundę może być przesyłane synchronicznie za pośrednictwem 68-żyłowego kabla SCSI-B. Dzięki temu, że do adaptera 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ównież 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żliwiający transfer 40 MB/s poprzez kabel 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łączeniu 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. Skutkiem tego jest zmiana prędkości pracy magistrali w trakcie jej działania. Wybór urządzeń uczestniczących w fazie negocjacyjnej 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ątkowany 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 danych pomiędzy jednym inicjatorem i wieloma odbiorcami, jak również pomiędzy wieloma nadawcami i wieloma odbiorcami.
Magistrala SCSI może się znajdować w różnych fazach pracy. Jeżeli przykładowo program wyda polecenie menedżerowi ASPI dotyczące urządzenia SCSI, jest ono wykonywane przez kartę sterownika. Interpretuje ona rozkaz i wysyła unormowane komunikaty SCSI i dane za pośrednictwem magistrali. W obrębie magistrali funkcjonują też cykle i fazy pracy, które są inicjowane przez urządzenia SCSI bez udziału procesora. Do sygnalizacji aktualności poszczególnych sygnałów i faz magistrali służą linie sterujące.
Nieaktywne sygnały sterujące BSY (busy) 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-Complete lub Disconnect.
Faza arbitrażu (arbitration-phase) wygląda następująco: jeśli jakieś urządzenie (inicjator) chce wysłać dane do odbiorcy (target), ustawia sygnał BSY na wartość aktywną i wystawia swój numer ID na magistralę danych. Jeżeli inne urządzenie zasygnalizowało jednocześnie chęć skorzystania z magistrali, zostają sprawdzone priorytety 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 prawo do użycia magistrali. W momencie, gdy zostanie wybrane urządzenie o najwyższym priorytecie, ustawia ono, w charakterze blokady magistrali, linię SEL na wartość aktywną - właściwa część komunikacji może zostać rozpoczęta.
W trakcie trwania fazy selekcji (selection-phase) urządzenie inicjujące transmisje nawiązuje połączenie z odbiorcą. W tym celu nadajnik ustala adres odbiorcy i przełącza linię ATN (attention) do poziomu aktywnego. Odbiorca odpowiada krótkim uaktywnieniem sygnału BSY. W przypadku, gdy tego nie zrobi, magistrala 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 (target), a nie nadajnik (inicjator). Może się to zdarzyć jedynie wówczas, gdy w poprzednim cyklu odbiorca oddal kontrolę nad magistralą, aby w międzyczasie zrealizować 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ętanego 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 selekcji następuje faza message-out; faza reselekcji jest z kolei przyczyną wystąpienia fazy message-out Komunikaty (messages) służą przede wszystkim do ustalenia parametró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ę jedynie kierunkiem przesyłania komunikatów pomiędzy nadawcą i odbiorcą. W obu fazach urządzenie wysyłające komunikat wystawia odpowiedni bajt na magistralę SCSI i uaktywnia linię REQ (request). Odbiorca 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, asynchroniczny 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 (inicjatora) polecenia SCSI. Faza ta jest odróżniana 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ądzeniami. Przykładowo aplikacja wysyła strumień danych przygotowany na podstawie informacji z dysku twardego do karty sterownika. Wyróżniane są przy tym, zależnie od kierunku przesyłania danych, fazy data-in i data-out (z punktu widzenia magistrali odróżnia je stan linii I/O). Transfer może zachodzić asynchronicznie, za pośrednictwem znanej nam już sekwencji REQ/ACK, albo szybciej - 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 polecenia. Odbiorca wysyła przy tym bajt statusu do inicjatora. Transfer zachodzi asynchronicznie (REQ/ACK) w obecności aktywnego 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 przesyłany jest z reguły komunikat Command complete. Na zakończenie system przechodzi na powrót do fazy bus-free - tym samym nasz cykl się zamyka.
Standard SCSI-II umożliwia dodatkowo stosowanie kolejki poleceń - w kolejce takiej maksymalnie 256 rozkazów inicjatora transmisji może czekać na ich wykonanie przez odbiornik (target). Inteligentne odbiorniki potrafią przy tym modyfikować kolejność oczekujących na realizację 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 operacyjnemu zaś możliwość najważniejszych operacji zapisu i odczytu.
Napędy CD-ROM i MO nie mogą jednak być w ten sposób obsługiwane. Ponieważ żaden system operacyjny, a już na pewno żadna aplikacja, nie może obsługiwać wszystkich istniejących adapterów SCSI, ich producenci zostali zobligowani do oferowania interfejsu programowego do swoich produktów, operującego na nieco 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łowane przez komisję ANSI oraz ASPI (Acfvanced SCSI Programrnirrg Interface ) firmy Adaptec. Interfejs ASPI jest przy tym bardziej popularny.
Interfejs ASPI jest dostępny po załadowaniu odpowiednich sterownik6w (pod DOS-em z poziomu pliku config.sys). Sterownik taki jest zawsze ściśle związany z obsługiwanym sprzętem, a więc zależny od jego producenta. Z punktu widzenia aplikacji 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ą adaptera 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 nazywana jest SCSI Reguest Block (SRB) i powinna się zaczynać od identyfikatora żądanej funkcji ASPI wraz z parametrami wywoł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ą, podobnie jak w przypadku ASPI, za pośrednictwem odpowiedniej struktury w pamięci operacyjnej komputera. W tym przypadku struktura ta ma nazwę CAM Control Block (CCB). Funkcje CAM są uruchamiane poprzez użycie funkcji 8100h przerwania 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