Sektor głowicy cylindrów - Cylinder-head-sector

Cylinder, głowica i sektor dysku twardego.

Cylinder-head-sector ( CHS ) to wczesna metoda nadawania adresów każdemu fizycznemu blokowi danych na dysku twardym .

Jest to układ współrzędnych 3D składający się z pionowej głowicy współrzędnych , poziomego (lub promieniowego) cylindra współrzędnych i kątowego sektora współrzędnych . Głowica wybiera okrągłą powierzchnię: talerz w krążku (i jedną z jego dwóch stron). Cylinder to cylindryczne przecięcie stosu talerzy na dysku, wyśrodkowane wokół wrzeciona dysku. W połączeniu cylinder i głowica przecinają się w okrągłą linię, a dokładniej: okrągły pasek fizycznych bloków danych o nazwie track . Sektor ostatecznie wybiera, który blok danych na tej ścieżce ma zostać zaadresowany i może być postrzegany jako rodzaj komponentu kątowego – wycinek torów lub w tym układzie współrzędnych, część konkretnej ścieżki w obrębie konkretnego wycinka.

Adresy CHS zostały ujawnione zamiast prostych adresów liniowych (od 0 do całkowitej liczby bloków na dysku - 1), ponieważ wczesne dyski twarde nie były dostarczane z wbudowanym kontrolerem dysku , który ukrywałby fizyczny układ. Zastosowano oddzielną kartę kontrolera ogólnego , aby system operacyjny musiał znać dokładną fizyczną „geometrię” konkretnego dysku podłączonego do kontrolera, aby poprawnie adresować bloki danych.

W miarę jak geometria stała się bardziej skomplikowana (na przykład wraz z wprowadzeniem zapisu bitów stref ) i z czasem rosły rozmiary dysków, metoda adresowania CHS stała się restrykcyjna. Od końca lat osiemdziesiątych dyski twarde zaczęły być dostarczane z wbudowanym kontrolerem dysku, który miał dobrą znajomość geometrii fizycznej; zgłaszaliby jednak komputerowi fałszywą geometrię, np. większą liczbę głów niż faktycznie jest, aby uzyskać bardziej adresowalną przestrzeń. Te logiczne wartości CHS byłyby tłumaczone przez kontroler, dzięki czemu adresowanie CHS nie odpowiadałoby już żadnym fizycznym atrybutom napędu.

W połowie lat dziewięćdziesiątych interfejsy dysków twardych zastąpiły schemat CHS adresowaniem bloków logicznych (LBA), ale wiele narzędzi do manipulowania tablicą partycji głównego rekordu rozruchowego (MBR) nadal wyrównywało partycje do granic cylindrów; w ten sposób artefakty adresowania CHS były nadal widoczne w oprogramowaniu do partycjonowania pod koniec 2000 roku.

Na początku 2010 roku ograniczenia rozmiaru dysku narzucone przez MBR stały się problematyczne, a tabela partycji GUID (GPT) została zaprojektowana jako zamiennik; nowoczesne komputery korzystające z oprogramowania układowego UEFI bez obsługi MBR nie używają już żadnych pojęć z adresowania CHS.

Definicje

schemat geometrii dysku twardego

Adresowanie CHS to proces identyfikowania poszczególnych sektorów (inaczej fizycznych bloków danych) na dysku na podstawie ich pozycji na ścieżce , gdzie ścieżka jest określona przez numer głowicy i cylindra . Terminy są wyjaśnione oddolne, na dysku adresowania ten sektor jest najmniejszą jednostką. Kontrolery dysków mogą wprowadzać translacje adresów w celu mapowania pozycji logicznych na fizyczne, np. zapis bitów strefy przechowuje mniej sektorów na krótszych (wewnętrznych) ścieżkach, fizyczne formaty dysków niekoniecznie są cylindryczne, a numery sektorów na ścieżce mogą być przekrzywione.

Sektory

Dyskietki i kontrolery używają sektorów fizycznych o rozmiarach 128, 256, 512 i 1024 bajtów (np. PC/AX), przy czym w latach 80. dominują formaty z 512 bajtami na sektor fizyczny.

Najpopularniejszym rozmiarem sektora fizycznego dla dysków twardych jest obecnie 512 bajtów, ale zdarzały się dyski twarde z 520 bajtami na sektor, a także dla maszyn niekompatybilnych z IBM. W 2005 roku niektóre niestandardowe dyski twarde Seagate używały sektorów o rozmiarze 1024 bajtów na sektor. Dyski twarde Advanced Format wykorzystują 4096 bajtów na sektor fizyczny ( 4Kn ) od 2010 r., ale będą również w stanie emulować sektory 512-bajtowe ( 512e ) w okresie przejściowym.

Dyski magnetooptyczne wykorzystują rozmiary sektorów 512 i 1024 bajtów na dyskach 5,25-calowych oraz 512 i 2048 bajtów na dyskach 3,5-calowych.

W adresowaniu CHS numery sektorów zawsze zaczynają się od 1 , nie ma sektora 0 , co może prowadzić do zamieszania, ponieważ schematy adresowania sektorów logicznych zwykle zaczynają się od 0, np. adresowanie bloków logicznych (LBA) lub „adresowanie sektorów względnych” używane w DOS.

W przypadku fizycznych geometrii dysków maksymalna liczba sektorów jest określona przez format niskiego poziomu dysku. Jednak w przypadku dostępu do dysku z BIOS -em maszyn kompatybilnych z IBM-PC numer sektora został zakodowany w sześciu bitach, co dało maksymalną liczbę 111111 (63) sektorów na ścieżkę. To maksimum jest nadal używane dla wirtualnych geometrii CHS.

Utwory

Te utwory są cienkie koncentryczne okrągłe pasy sektorach. Do odczytania jednego utworu potrzebna jest co najmniej jedna głowa. W odniesieniu do geometrii dysku terminy ścieżka i cylinder są ściśle powiązane. Dla jedno- lub dwustronnej ścieżki dyskietek jest wspólnym terminem; i dla więcej niż dwóch głowic cylinder jest wspólnym terminem. Mówiąc ściśle, ścieżka to dana kombinacja składająca się z sektorów, podczas gdy cylinder składa się z sektorów. CHSPTSPT×H

Cylindry

Cylinder jest podziałem danych na dysku , używanym w trybie adresowania CHS dysku o stałej architekturze blokowej lub trybie adresowania rekordu cylindra (CCHHR) dysku CKD .

Koncepcja polega na koncentrycznym, pustym, cylindrycznym cięciu przez fizyczne dyski ( talerze ), zbierając odpowiednie okrągłe ścieżki ustawione w stosie talerzy. Liczba cylindrów napędu dyskowego jest dokładnie równa liczbie ścieżek na pojedynczej powierzchni napędu. Zawiera ten sam numer ścieżki na każdym talerzu, obejmując wszystkie takie ścieżki na każdej powierzchni talerza, która jest w stanie przechowywać dane (bez względu na to, czy ścieżka jest „zła”). Cylindry są uformowane pionowo przez gąsienice . Innymi słowy, ścieżka 12 na talerzu 0 plus ścieżka 12 na talerzu 1 itd. to cylinder 12.

Inne formy Direct Access Storage Device (DASD), takie jak urządzenia pamięci bębnowej lub komórka danych IBM 2321 , mogą dawać adresy bloków, które zawierają adres cylindra, chociaż adres cylindra nie wybiera (geometrycznego) cylindrycznego wycinka urządzenia .

Głowy

Urządzenie zwane głowicą odczytuje i zapisuje dane na dysku twardym, manipulując nośnikiem magnetycznym, który tworzy powierzchnię powiązanego talerza dysku. Oczywiście talerz ma 2 boki, a więc 2 powierzchnie, na których można manipulować danymi; zwykle na talerzu znajdują się 2 głowice, po jednej na stronę. (Czasami termin strona zastępuje głowicę, ponieważ talerze mogą być oddzielone od ich zespołów głowic, tak jak w przypadku nośników wymiennych stacji dyskietek ).

Adresowania obsługiwana w IBM-PC kompatybilnym BIOS kod stosowany dla ośmiu bitów - teoretycznie do 256 głowic liczony jako szef 0 aż do 255 ( ). Jednak błąd we wszystkich wersjach Microsoft DOS / IBM PC DOS do 7.10 włącznie spowoduje awarię tych systemów operacyjnych podczas uruchamiania, gdy napotkają woluminy z 256 głowicami. W związku z tym wszystkie zgodne systemy BIOS będą używać mapowań tylko z maksymalnie 255 głowicami ( ), w tym w geometriach wirtualnych . CHSFFh00h..FEh255×63

Ta historyczna osobliwość może wpłynąć na maksymalny rozmiar dysku w starym kodzie BIOS INT 13h, a także w starym PC DOS lub podobnym systemie operacyjnym:

(512 bytes/sector)×(63 sectors/track)×(255 heads (tracks/cylinder))×(1024 cylinders)=8032.5 MB , ale w rzeczywistości 512×63×256×1024=8064 MB daje tak zwany limit GB . W tym kontekście odpowiednia definicja 8  GB = 8192  MB jest kolejnym niepoprawnym limitem, ponieważ wymagałoby to CHS 512×64×256z 64 sektorami na ścieżkę.

Ścieżki i cylindry są liczone od 0, tj. ścieżka 0 jest pierwszą (najbardziej zewnętrzną) ścieżką na dyskietce lub innych dyskach cylindrycznych. Stary kod BIOS wspierał dziesięć bitów w adresowaniu CHS z maksymalnie 1024 cylindrami ( ). Dodanie sześciu bitów dla sektorów i ośmiu bitów dla nagłówków daje 24 bity obsługiwane przez przerwanie BIOSu 13h . Odjęcie niedozwolonego sektora o numerze 0 w ścieżkach odpowiada 128  MB dla sektora o rozmiarze 512 bajtów ( ); i potwierdza (w przybliżeniu) limit GB . 1024=2101024×256128 MB=1024×256×(512 byte/sector)8192-128=8064

Adresowanie CHS zaczyna się 0/0/1od maksymalnej wartości 1023/255/63dla 24=10+8+6bitów lub 1023/254/63dla 24 bitów ograniczonej do 255 nagłówków . Wartości CHS używane do określenia geometrii dysku muszą liczyć cylinder 0 i głowicę 0, co daje maksimum ( 1024/256/63lub) 1024/255/63dla 24 bitów z (256 lub) 255 głowicami. W krotkach CHS określenie geometrii S w rzeczywistości oznacza sektory na ścieżkę, a tam, gdzie (wirtualna) geometria nadal odpowiada pojemności, dysk zawiera C×H×Ssektory. Wraz z wprowadzeniem do użytku większych dysków twardych cylinder stał się również logiczną strukturą dysku, ustandaryzowaną na 16 065 sektorów ( 16065=255×63).

Adresowanie CHS z 28 bitami ( EIDE i ATA-2 ) pozwala na osiem bitów dla sektorów wciąż zaczynających się od 1, tj. sektory 1...255, cztery bity dla głowic 0...15 i szesnaście bitów dla cylindrów 0... 65535. Skutkuje to limitem około 128  GB ; w rzeczywistości 65536×16×255=267386880sektory odpowiadające 130560  MB dla rozmiaru sektora 512 bajtów. Te 28=16+4+8bity w ATA-2 specyfikacji są również objęte Interrupt List Ralf Browna , i stary projekt roboczy tego teraz wydychanym standard został opublikowany.

Ze starym limitem BIOS wynoszącym 1024 cylindry i limitem ATA wynoszącym 16 głowic, łącznym efektem były 1024×16×63=1032192sektory, tj. limit 504  MB dla rozmiaru sektora 512. Schematy translacji BIOS-u znane jako ECHS i zmienione ECHS złagodziły to ograniczenie, używając zamiast tego 128 lub 240 16 głowic, jednocześnie zmniejszając liczbę cylindrów i sektorów do zmieszczenia 1024/128/63(limit ECHS: 4032  MB ) lub 1024/240/63(zmieniony limit ECHS: 7560  MB ) dla podanej łącznej liczby sektorów na dysku.

Bloki i klastry

Społeczności uniksowe używają terminu blok w odniesieniu do sektora lub grupy sektorów. Na przykład narzędzie fdisk systemu Linux przed wersją 2.25 wyświetlało rozmiary partycji za pomocą bloków 1024-bajtowych .

Klastry to jednostki alokacji danych w różnych systemach plików ( FAT , NTFS itp.), w których dane składają się głównie z plików. Fizyczna lub wirtualna geometria dysku nie ma bezpośredniego wpływu na klastry , tj. klaster może zaczynać się w sektorze w pobliżu końca danej ścieżki i kończyć się w sektorze na fizycznej lub logicznej następnej ścieżce . CHCH

Mapowanie CHS do LBA

W 2002 roku specyfikacja ATA-6 wprowadziła opcjonalne 48-bitowe adresowanie bloków logicznych i zadeklarowała adresowanie CHS jako przestarzałe, ale nadal pozwalało na implementację translacji ATA-5. Nic dziwnego, że podana poniżej formuła tłumaczenia CHS na LBA pasuje również do ostatniego tłumaczenia CHS ATA-5. W specyfikacji ATA-5 obsługa CHS była obowiązkowa dla maksymalnie 16 514 064 sektorów i opcjonalna dla większych dysków. Limit ATA-5 odpowiada 16383 16 63pojemności dysku CHS lub równoważnej (16514064 = 16383×16×63 = 1032×254×63) i wymaga 24 = 14+4+6 bitów (16383 + 1 = 2 14 ).

CHS krotki mogą być odwzorowywane na adresy LBA stosując następujący wzór:

A = ( cN głów + h ) ⋅ N sektorów + ( s − 1),

gdzie A to adres LBA, N heads to liczba głowic na dysku, N sektorów to maksymalna liczba sektorów na ścieżkę, a ( c , h , s ) to adres CHS.

Logical Number Sektor formuła w ECMA -107 i ISO / IEC  9293: 1994 (ISO 9293 zastępując: 1987) standardy dla FAT systemów plików pasuje dokładnie formułę LBA podane powyżej: Logical Block Address i logiczny numer sektora (LSN) są synonimami. Formuła nie używa liczby cylindrów, ale wymaga liczby głowic i liczby sektorów na ścieżkę w geometrii dysku, ponieważ ta sama krotka CHS adresuje różne numery sektorów logicznych w zależności od geometrii. Przykłady :

Dla geometrii 1020 16 63dysku z 1028160 sektorami CHS 3 2 1to LBA 3150=((3× 16)+2)× 63 + (1-1)
Dla geometrii 1008 4 255dysku z 1028160 sektorami CHS 3 2 1to LBA 3570=((3×  4)+2)×255 + (1-1)
Dla geometrii  64 255 63dysku z 1028160 sektorami CHS 3 2 1to LBA48321=((3×255)+2)× 63 + (1-1)
Dla geometrii 2142 15 32dysku z 1028160 sektorami CHS 3 2 1to LBA 1504=((3× 15)+2)× 32 + (1-1)

Aby ułatwić wizualizację kolejności sektorów w liniowym modelu LBA, należy pamiętać, że:

Pierwszy sektor LBA to sektor # zero, ten sam sektor w modelu CHS nazywa się sektorem # jeden.
Wszystkie sektory każdej głowicy/ścieżki są zliczane przed przejściem do następnej głowicy/ścieżki.
Wszystkie głowice/ścieżki tego samego cylindra są liczone przed przyrostem do następnego cylindra.
Zewnętrzna połowa całego dysku twardego byłaby pierwszą połową dysku.

Historia

Format rekordu głowicy cylindra jest używany przez dyski twarde Count Key Data (CKD) na komputerach mainframe IBM od co najmniej lat 60. XX wieku. Jest to w dużej mierze porównywalne z formatem sektora głowicy cylindra używanym przez komputery PC, z wyjątkiem tego, że rozmiar sektora nie został ustalony, ale może się różnić w zależności od ścieżki w zależności od potrzeb każdej aplikacji. We współczesnym użyciu geometria dysku prezentowana na komputerze mainframe jest emulowana przez oprogramowanie układowe pamięci masowej i nie ma już żadnego związku z fizyczną geometrią dysku.

Wcześniejsze dyski twarde używane w komputerach PC, takie jak dyski MFM i RLL , dzieliły każdy cylinder na równą liczbę sektorów, dzięki czemu wartości CHS odpowiadały właściwościom fizycznym dysku. Dysk z krotką CHS 500 4 32miałby 500 ścieżek na stronę na każdym talerzu, dwa talerze (4 głowice) i 32 sektory na ścieżkę, co daje łącznie 32 768 000 bajtów (31,25  MiB ).

Dyski ATA/IDE były znacznie wydajniejsze w przechowywaniu danych i zastąpiły archaiczne obecnie dyski MFM i RLL. Wykorzystują nagrywanie strefowe (ZBR), gdzie liczba sektorów dzielących każdą ścieżkę zmienia się w zależności od położenia grup ścieżek na powierzchni talerza. Ścieżki bliżej krawędzi talerza zawierają więcej bloków danych niż ścieżki blisko wrzeciona, ponieważ w obrębie danej ścieżki jest więcej miejsca fizycznego w pobliżu krawędzi talerza. Tak więc schemat adresowania CHS nie może bezpośrednio odpowiadać fizycznej geometrii takich napędów, ze względu na różną liczbę sektorów na ścieżkę dla różnych regionów na talerzu. Z tego powodu wiele dysków nadal ma nadwyżkę sektorów (o rozmiarze mniejszym niż 1 cylinder) na końcu dysku, ponieważ całkowita liczba sektorów rzadko, jeśli w ogóle, kończy się na granicy cylindra.

Dysk ATA/IDE można ustawić w systemie BIOS z dowolną konfiguracją cylindrów, głowic i sektorów, które nie przekraczają pojemności dysku (lub systemu BIOS), ponieważ dysk przekonwertuje dowolną podaną wartość CHS na rzeczywisty adres dla jego specyficzna konfiguracja sprzętowa. Może to jednak powodować problemy ze zgodnością.

W przypadku systemów operacyjnych, takich jak Microsoft DOS lub starsza wersja systemu Windows , każda partycja musi zaczynać się i kończyć na granicy cylindra. Tylko niektóre z najnowocześniejszych systemów operacyjnych (w tym Windows XP) mogą ignorować tę zasadę, ale może to nadal powodować pewne problemy ze zgodnością, zwłaszcza jeśli użytkownik chce wykonać podwójne uruchamianie na tym samym dysku. Firma Microsoft nie przestrzega tej zasady w przypadku wewnętrznych narzędzi do partycjonowania dysków od systemu Windows Vista.

Zobacz też

Bibliografia

Uwagi

1. ^ Ta zasada jest prawdziwa przynajmniej dla wszystkich formatów, w których fizyczne sektory są nazwane od 1 w górę. Istnieje jednak kilka dziwnych formatów dyskietek (np. format 640  KB używany przez BBC Master 512 z DOS Plus 2.1), w których pierwszy sektor ścieżki ma nazwę „0”, a nie „1”.
2. ^ Podczas gdy komputery zaczną liczyć od 0, DOS zacznie liczyć od 1. W tym celu DOS doda 1 do liczby osób przed wyświetleniem jej na ekranie. Jednak zamiast konwertować najpierw 8-bitową liczbę całkowitą bez znaku na większy rozmiar (np. 16-bitową liczbę całkowitą), DOS po prostu dodał 1. To przepełniłoby liczbę 255 ( 0xFF) na 0 ( 0x100 & 0xFF = 0x00) zamiast 256 tego można by się spodziewać. Zostało to naprawione w DOS 8, ale do tego czasu stało się de facto standardem, aby nie używać wartości głowy 255.