Marek 95.doc

(149 KB) Pobierz
Obsługa dysku twardego

Obsługa dysku twardego

Można śmiało powiedzieć, że udział dysku twardego w pracy całego systemu jest niemniejszy 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 4000 dolarów) wiele się w tej dziedzinie zmieniło.

Przez wiele lat dominował tzw. standard ST412/506, którego nazwa wywodziła się od pierwszych dwóch modeli tego systemu. W miarę upływu czasu wzrostu wymagań stawianych dyskom twardym, zwłaszcza w dziedzinie zastosowań profesjonalnych, opracowane zostały nowocześniejsze systemy (IDE,ESDI,SCSI). Jednemu z nich udało się zdominować również komputerów powszechnego użytku. Mowa tu o systemie  IDE ( AT-BUS ). Ze względu na jego popularność, zostanie mu poświęcona znaczna część tego rozdziału.

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 odczytująco-zapisującymi. Skomplikowane zadanie sterowania tymi elementami i obróbkę danych przejmuje tzw. 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ące dane i rozkazy a pozostający w kontakcie z dyskiem kontroler odpowiada  danymi i informacjami dodatkowymi. Sam kontrole 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 tzw. kodami ECC (ang. Error Corektion 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.

  1. Procesor przekazuje kontrolerowi grupę bajtów zawierającą rozkaz odczytów wraz z niezbędnymi parametrami lokalizującymi żądany sektor.
  2. Po rozpoznaniu rozkazu mikroprocesor kontrolera przechodzi do wykonywania odpowiadającego mu fragmentu programu zapisanego w jego pamięci stałej.
  3. 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 liczb 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ą.
  4. 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 .
  5. W zależności od stosowanego 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 ESC. Kod ESC spełnia podobną rolę do opisanych w poprzednim rozdziale sum kontrolnych CRC. Główna różnica polega stopniu komplikacji generatora  (wielomianu) kodu. Dyski twarde systemu ST412 stosują najczęściej generator 32 stopnia postaci 10001010000001010000001000110. Wielomian taki produkuje 4-bajtowe kody ECC mające tylko do wykrywania ale i również, co dużo bardziej interesujące, korekcji błędów. Korygowane mogą być nie tylko pojedyncze błędy, lecz również całe błędne ciągi o długości nie przekraczającej 11 bitów.

6.     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

Poprzedniego rozdziału, poświęconego dyskom elastycznym, pamiętamy, że sama tylko 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 Lengtch Limited ).

Powróćmy na chwilę do metody MFM. Punktem   do naszych rozważań będzie przykładowy bajt danych o wartości 00101110, reprezentowany przez przebieg ( 1 ) na rysunku.

Sposób zapisu informacji na dysku twardym w standardach MFM i RLL

Na ciąg wyjściowych impulsów w systemie MFM ( 3 ) składała się, jak pamiętamy z rozdziału 4, 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 całkowitej rezygnacji ze składowej Z. Układy logiczne dekodera muszą wtedy obliczać, na podstawie odległości dzielących kolejne impulsy, liczbę zer przypadających między nimi.

System taki może poprawnie funkcjonować w warunkach rzeczywistych

( uwzględniając fluktuacje prędkości obrotowej ) jedynie w pewnych granicach.

Proszę zwrócić uwagę na fakt, że powtórne formatowanie dysku twardego ( celowe lub niezamierzone ) nie niszczy w najmniejszym stopniu zapisanej na nim informacji, 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 też przechowywanie “rezerwowej” kopii FAT w dodatkowym miejscu dysku pozwala odzyskać dane po formatowaniu.

Formatowaniu niskiego poziomu

Operacja nanoszenia na powierzchnię dysku ścieżek, sektorów i wszystkich innych pól dodatkowych nazywana jest formatowaniem niskiego poziomu (ang. low lewel format ).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 “potraktowany” 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. bat sector mapping), wcześniej czy później da to o sobie znać. Najczęściej jedna 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 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 wynika, ze ścieżka dysku twardego zbudowana jest w sposób bardzo zbliżony do ścieżki dyskietki. Uwagę zwraca jedynie kilka szczegółów.

Znacznemu zmniejszeniu uległy rozmiary odstępów ( szczelin ) między elementami ścieżki, tj. 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 IDE, oznaczonym przez Z. Stanowi on tzw. znacznik sektora, a jego rola omówiona zostanie w następnym punkcie tego rozdziału.


Ścieżka

BOT

 

Sektor 1

 

Sektor 2

 

...

 

Sektor n

 

EOT

 

Znacznik początku ścieżki (BOT)

S

D1

Z1

 

Sektor

   D2

    S

   D3

   ID

ECC1

   Z2

   S

   D4

DANE

ECC-2

   Z3

 

Znacznik końca ścieżki (EOT)

Z4

 

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                         A1FCh                                        A1FCh

               Z1                          11 bajtów o wartości 4Eh          12 bajtów o wartości FFh

               D2                          7 bajtów o wartości 4Eh                                -

               S                            10 bajtów o wartości 00h           10 bajtów o wartości 00h

               D3                          A1FEh                                        5EA1h

               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                         A1F8h                                         5EA1h

               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 bajtów o wartości 00h

                                                                                                  17 bajtów o wartości FFh

               Z4                  ok. 56 bajtów o wartości 00h         ok. 93 bajtów 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.

Błędy i ich korekcja

Fizycznym nośnikiem informacji w dysku twardym jest, jak wiadomo, 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.

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 indywidualnie lista błędów, której pozycje, określające jednoznacznie uszkodzone sektory, definiują dla każdego a nich numer cylindra, głowicy i sektora. Lista taka dołączona 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 ) ma nieco inną budowę niż jego dyskietkowy odpowiednik ( porównaj rysunek ). Główna różnica tkwi w ostatnim bajcie, który w przypadku dysku twardego nie podaje wielkości sektora, lecz stanowi jego tzw. znacznik.


Postać znacznika sektora Z ( bajt 4 metryki adresowej ID ):
 

bbit 7

bbit 6

bbit 5

bit 4

bbit 3

bbit 2

bbit 1

bbit 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 1        ścieżka uszkodzona bez przydziału ścieżki zastępczej.

    bit 0         sektor uszkodzony.

 

Tak więc ustawienie bitu 0 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 bit1. 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 Z.

Mechanizm odwzorowania uszkodzonych sektorów opiera się na dwóch tablicach przechowywanych na dysku. Pierwszą z nich jest liczba 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 pomiędzy znacznikiem D3 na początek ś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ę 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 jeszcze 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 o jeden sektor więcej na każdej ze ścieżek (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 sam 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).

...

Zgłoś jeśli naruszono regulamin