Cylinderhuvudsektor
Cylinder-head-sector ( CHS ) är en tidig metod för att ge adresser till varje fysiskt datablock på en hårddisk .
Det är ett 3D-koordinatsystem gjord av ett vertikalt koordinathuvud, en horisontell (eller radiell) koordinatcylinder och en vinkelkoordinatsektor . Head väljer en cirkulär yta: en tallrik i skivan (och en av dess två sidor). Cylinder är en cylindrisk korsning genom stapeln av tallrikar i en skiva, centrerad runt skivans spindel. Kombinerat skär cylinder och huvud till en cirkulär linje, eller mer exakt: en cirkulär remsa av fysiska datablock som kallas spår . Sektor väljer slutligen vilket datablock i detta spår som ska adresseras, eftersom spåret är uppdelat i flera lika stora delar, som var och en är en båge på (360/n) grader, där n är antalet sektorer i spåret .
0 CHS-adresser exponerades, istället för enkla linjära adresser (som går från till det totala blockantalet på disk - 1 ), eftersom tidiga hårddiskar inte kom med en inbäddad diskkontroller , som skulle dölja den fysiska layouten. Ett separat generiskt styrkort användes, så att operativsystemet var tvungen att känna till den exakta fysiska "geometrin" för den specifika enhet som var ansluten till styrenheten, för att korrekt adressera datablock. De traditionella gränserna var 512 byte/sektor × 63 sektorer/spår × 255 huvuden (spår/cylinder) × 1024 cylindrar, vilket resulterade i en gräns på 8032,5 MiB för den totala kapaciteten på en skiva.
När geometrin blev mer komplicerad (till exempel med införandet av zonbitinspelning ) och enhetsstorlekarna växte över tiden, blev CHS-adresseringsmetoden restriktiv. Sedan slutet av 1980-talet började hårddiskar levereras med en inbyggd diskkontroller som hade goda kunskaper om den fysiska geometrin; de skulle dock rapportera en falsk geometri till datorn, t.ex. ett större antal huvuden än vad som faktiskt finns, för att få mer adresserbart utrymme. Dessa logiska CHS-värden skulle översättas av styrenheten, så CHS-adressering motsvarade inte längre några fysiska attribut hos drivenheten.
I mitten av 1990-talet ersatte hårddiskgränssnittet CHS-schemat med logisk blockadressering (LBA), men många verktyg för att manipulera partitionstabellen för master boot record (MBR) justerade fortfarande partitionerna till cylindergränserna; sålunda sågs artefakter av CHS-adressering fortfarande i partitioneringsprogramvara i slutet av 2000-talet.
I början av 2010-talet blev diskstorleksbegränsningarna som infördes av MBR problematiska och GUID Partition Table (GPT) designades som en ersättning; moderna datorer som använder UEFI- firmware utan MBR-stöd använder inte längre några begrepp från CHS-adressering.
Definitioner
CHS-adressering är processen att identifiera enskilda sektorer (aka. fysiskt datablock) på en disk genom deras position i ett spår , där spåret bestäms av topp- och cylindernumren . Termerna förklaras nerifrån och upp, för disk som adresserar sektorn är den minsta enheten. Diskkontroller kan införa adressöversättningar för att mappa logiska till fysiska positioner, t.ex. zonbitsregistrering färre sektorer i kortare (inre) spår, fysiska diskformat är inte nödvändigtvis cylindriska och sektornummer i ett spår kan skeva.
Sektorer
Disketter och kontroller använder fysiska sektorstorlekar på 128, 256, 512 och 1024 byte (t.ex. PC/AX), varvid format med 512 byte per fysisk sektor blev dominerande på 1980-talet.
Den vanligaste fysiska sektorstorleken för hårddiskar idag är 512 byte, men det har funnits hårddiskar med 520 byte per sektor även för icke-IBM-kompatibla maskiner. Under 2005 använde vissa från Seagate sektorstorlekar på 1024 byte per sektor. Advanced Format hårddiskar använder 4096 byte per fysisk sektor ( 4Kn ) sedan 2010, men kommer även att kunna emulera 512 byte sektorer ( 512e ) under en övergångsperiod.
Magnetooptiska enheter använder sektorstorlekar på 512 och 1024 byte på 5,25-tumsenheter och 512 och 2048 byte på 3,5-tumsenheter.
I CHS-adressering börjar sektornumren alltid på 1 , det finns ingen sektor 0 , vilket kan leda till förvirring eftersom logiska sektorsadresseringsscheman vanligtvis börjar räkna med 0, t.ex. logisk blockadressering (LBA) eller "relativ sektoradressering" som används i DOS.
För fysiska skivgeometrier bestäms det maximala sektornumret av skivans lågnivåformat . Men för diskåtkomst med BIOS för IBM-PC-kompatibla maskiner kodades sektornumret i sex bitar, vilket resulterade i ett maximalt antal av 111111 (63) sektorer per spår. Detta maximum används fortfarande för virtuella CHS-geometrier.
Spår
Spåren är de tunna koncentriska cirkulära remsorna av sektorer . Minst ett huvud krävs för att läsa ett enda spår. Med avseende på skivgeometrier är termerna spår och cylinder nära besläktade. För ett enkel- eller dubbelsidigt diskettspår är den vanliga termen ; och för mer än två huvuden är cylinder den vanliga termen. Strängt taget är ett spår en given CH- kombination
som består av SPT
-sektorer, medan en cylinder består av SPT× H
-sektorer.
Cylindrar
En cylinder är en uppdelning av data i en diskenhet , som används i CHS-adresseringsläget för en Fixed Block Architecture- skiva eller cylinder-head-record (CCHHR) adresseringsläget för en CKD-skiva .
Konceptet är koncentriska, ihåliga, cylindriska skivor genom de fysiska skivorna ( plattor ), som samlar de respektive cirkulära spåren inriktade genom stapeln av tallrikar. Antalet cylindrar i en diskenhet är exakt lika med antalet spår på en enda yta i enheten. Den består av samma spårnummer på varje tallrik, som spänner över alla sådana spår över varje tallrikyta som kan lagra data (utan hänsyn till om spåret är "dåligt"). Cylindrar är vertikalt formade av spår . Med andra ord, spår 12 på tallrik 0 plus spår 12 på tallrik 1 etc. är cylinder 12.
Andra former av Direct Access Storage Device (DASD), som trumminnesenheter eller IBM 2321 Data Cell , kan ge blockadresser som inkluderar en cylinderadress, även om cylinderadressen inte väljer en (geometrisk) cylindrisk del av enheten .
Huvuden
En enhet som kallas ett huvud läser och skriver data på en hårddisk genom att manipulera det magnetiska mediet som utgör ytan på en tillhörande diskplatta. Naturligtvis har en tallrik 2 sidor och därmed 2 ytor på vilka data kan manipuleras; vanligtvis finns det 2 huvuden per tallrik, ett per sida. ersätts termen sida med huvud, eftersom plattor kan vara separerade från deras huvudenheter, som med det borttagbara mediet på en diskettenhet .)
0 C upp H S
-adresseringen som stöds i IBM-PC-kompatibel BIOS- kod använde åtta bitar för - teoretiskt upp till 256 huvuden räknade som head till 255 ( FFh
). En bugg i alla versioner av Microsoft DOS / IBM PC DOS till och med 7.10 kommer dock att få dessa operativsystem att krascha vid uppstart när de stöter på volymer med 256 huvuden. Därför kommer alla kompatibla BIOS:er endast att använda mappningar med upp till 255 huvuden ( 00h..FEh
), inklusive i virtuella 255×63
geometrier.
Denna historiska märklighet kan påverka den maximala diskstorleken i gammal BIOS INT 13h- kod såväl som gamla PC DOS eller liknande operativsystem:
(512 byte/sektor)×(63 sektorer/spår)×(255 huvuden (spår/cylinder))×(1024 cylindrar)=8032,5 MB ,
men faktiskt 512×63×256×1024=8064
MB ger vad som kallas 8 GB- gräns. I detta sammanhang är relevant definition av 8 GB = 8192 MB en annan felaktig gräns, eftersom den skulle kräva CHS 512×64×256
med 64 sektorer per spår.
Spår och cylindrar räknas från 0, dvs spår 0 är det första (yttersta) spåret på disketter eller andra cylindriska skivor. Gammal BIOS- kod stödde tio bitar i CHS-adressering med upp till 1024 cylindrar ( 1024=2 10
). Att lägga till sex bitar för sektorer och åtta bitar för huvuden resulterar i de 24 bitar som stöds av BIOS-avbrott 13h . Att subtrahera det otillåtna sektornumret 0 i 1024×256
spår motsvarar 128 MB för en sektorstorlek på 512 byte ( 128 MB =1024×256×(512 byte/sektor))
; och 8192-128=8064 bekräftar
gränsen på (ungefär) 8 GB .
CHS-adressering börjar vid 0/0/1
med ett maximalt värde 1023/255/63
för 24=10+8+6
bitar, eller 1023/254/63
för 24 bitar begränsat till 255 huvuden . CHS-värden som används för att specificera geometrin på en skiva måste räkna cylinder 0 och huvud 0, vilket resulterar i maximalt ( 1024/256/63
eller) 1024/255/63
för 24 bitar med (256 eller) 255 huvuden. I CHS-tupler betyder att specificera en geometri S faktiskt sektorer per spår, och där den (virtuella) geometrin fortfarande matchar kapaciteten innehåller skivan C×H×S-
sektorer. I takt med att större hårddiskar har tagits i bruk har en cylinder också blivit en logisk skivstruktur, standardiserad [ citation needed ] vid 16 065 sektorer ( 16065=255×63
).
CHS-adressering med 28 bitar ( EIDE och ATA-2 ) tillåter åtta bitar för sektorer som fortfarande börjar vid 1, dvs sektorer 1...255, fyra bitar för huvuden 0...15 och sexton bitar för cylindrar 0... 65535. Detta resulterar i en gräns på ungefär 128 GB ; faktiskt 65536×16×255=267386880
sektorer motsvarande 130560 MB för en sektorstorlek på 512 byte. 28 =16+4+8
bitarna i ATA-2- specifikationen täcks också av Ralf Browns Interrupt List, och ett gammalt arbetsutkast till denna nu förfallna standard publicerades.
Med en gammal BIOS- gräns på 1024 cylindrar och ATA -gränsen på 16 huvuden var den kombinerade effekten 1024×16×63=1032192
sektorer, dvs en gräns på 504 MB för sektorstorlek 512. BIOS -översättningsscheman som kallas ECHS och reviderade ECHS mildrade detta begränsning genom att använda 128 eller 240 istället för 16 huvuden, vilket samtidigt minskar antalet cylindrar och sektorer för att passa in i 1024/128/63
(ECHS-gräns: 4032 MB ) eller 1024/240/63
(reviderad ECHS-gräns: 7560 MB) för givet totalt antal sektorer på en disk.
Block och kluster
Unix - gemenskaperna använder termen block för att referera till en sektor eller grupp av sektorer. Till exempel, Linux- fdisk , före version 2.25, visade partitionsstorlekar med 1024-byte block .
Kluster är allokeringsenheter för data på olika filsystem ( FAT , NTFS , etc.), där data huvudsakligen består av filer. Kluster påverkas inte direkt av skivans fysiska eller virtuella geometri, dvs ett kluster kan börja vid en sektor nära slutet av ett givet CH -
spår och sluta i en sektor på det fysiskt eller logiskt nästa CH -
spåret .
CHS till LBA-mappning
2002 introducerade ATA-6- specifikationen en valfri 48-bitars logisk blockaddressering och förklarade CHS-adressering som föråldrad, men tillåts fortfarande att implementera ATA-5-översättningarna. Föga överraskande matchar CHS till LBA-översättningsformeln nedan också den senaste ATA-5 CHS-översättningen. I ATA-5-specifikationen var CHS-stöd obligatoriskt för upp till 16 514 064 sektorer och valfritt för större diskar. ATA-5-gränsen motsvarar CHS 16383 16 63
eller motsvarande diskkapacitet (16514064 = 16383×16×63 = 1032×254×63), och kräver 24 = 14+4+6 bitar (16383 + 1 = 2 14 ) .
CHS- tupler kan mappas till LBA-adresser med följande formel:
- A = ( c ⋅ N huvuden + h ) ⋅ N sektorer + ( s − 1),
där A är LBA-adressen, N huvuden är antalet huvuden på skivan, N sektorer är det maximala antalet sektorer per spår och ( c , h , s ) är CHS-adressen.
En formel för logiskt sektornummer i standarderna ECMA -107 och ISO / IEC 9293:1994 (ersätter ISO 9293:1987) för FAT -filsystem matchar exakt LBA-formeln ovan: logisk blockadress och logisk sektornummer (LSN) är synonymer. Formeln använder inte antalet cylindrar, utan kräver antalet huvuden och antalet sektorer per spår i skivgeometrin, eftersom samma CHS-tuppel adresserar olika logiska sektornummer beroende på geometrin. Exempel :
- För geometri
1020 16 63 för en skiva med 1028160 sektorer
är CHS3 2 1 LBA
3150=((3× 16)+2)× 63 + (1-1)
- För geometri
1008 4 255
av en skiva med 1028160 sektorer, CHS3 2 1
är LBA3570=((3× 4)+2)×255 + (1-1)
- För geometri
64 255 63
för en skiva med 1028160 sektorer, är CHS3 2 1
LBA48321=((3×255) +2)× 63 + (1-1)
- För geometri
2142 15 32
för en skiva med 1028160 sektorer är CHS3 2 1 LBA
1504=((3× 15)+2)× 32 + (1-1)
För att hjälpa till att visualisera sekvenseringen av sektorer till en linjär LBA-modell, notera att:
- Den första LBA-sektorn är sektor # noll, samma sektor i en CHS-modell kallas sektor # ett.
- Alla sektorer för varje huvud/spår räknas innan de ökar till nästa huvud/spår.
- Alla huvuden/spåren på samma cylinder räknas innan de ökar till nästa cylinder.
- Den yttre halvan av en hel hårddisk skulle vara den första halvan av enheten.
Historia
Cylinder Head Record-formatet har använts av Count Key Data (CKD) hårddiskar på IBM stordatorer sedan åtminstone 1960-talet. Detta är i stort sett jämförbart med Cylinder Head Sector-formatet som används av datorer, förutom att sektorstorleken inte var fixerad utan kunde variera från spår till spår baserat på behoven för varje applikation. Vid modern användning emuleras diskgeometrin som presenteras för stordatorn av lagringsfirmwaren och har inte längre någon relation till fysisk diskgeometri. [ citat behövs ]
Tidigare hårddiskar som användes i PC:n, såsom MFM- och RLL -enheter, delade varje cylinder i lika många sektorer, så CHS-värdena matchade enhetens fysiska egenskaper. En enhet med en CHS-tuppel på 500 4 32
skulle ha 500 spår per sida på varje tallrik, två plattor (4 huvuden) och 32 sektorer per spår, med totalt 32 768 000 byte (31,25 MiB ). [ citat behövs ]
ATA/IDE- enheter var mycket effektivare när det gäller att lagra data och har ersatt de nu arkaiska MFM- och RLL-enheterna. De använder zonbitsinspelning (ZBR), där antalet sektorer som delar varje spår varierar med placeringen av grupper av spår på plattans yta. Spår närmare kanten på plattan innehåller fler datablock än spår nära spindeln, eftersom det finns mer fysiskt utrymme inom ett givet spår nära plattans kant. Således kan CHS-adresseringsschemat inte överensstämma direkt med den fysiska geometrin hos sådana enheter, på grund av det varierande antalet sektorer per spår för olika regioner på en tallrik. På grund av detta har många drivenheter fortfarande ett överskott av sektorer (mindre än 1 cylinder i storlek) i slutet av drivningen, eftersom det totala antalet sektorer sällan, om aldrig, slutar på en cylindergräns. [ citat behövs ]
En ATA/IDE-enhet kan ställas in i system- BIOS med valfri konfiguration av cylindrar, huvuden och sektorer som inte överskrider kapaciteten för enheten (eller BIOS), eftersom enheten kommer att omvandla ett givet CHS-värde till en faktisk adress för dess specifika hårdvarukonfiguration. Detta kan dock orsaka kompatibilitetsproblem. [ citat behövs ]
För operativsystem som Microsoft DOS eller äldre version av Windows måste varje partition starta och sluta vid en cylindergräns. [ citat behövs ] Endast några av de modernaste operativsystemen (inkluderat Windows XP) kan bortse från denna regel, men att göra det kan fortfarande orsaka vissa kompatibilitetsproblem, speciellt om användaren vill utföra dubbelstart på samma enhet. Microsoft följer inte denna regel med interna diskpartitionsverktyg sedan Windows Vista.
Se även
- CD-ROM-format
- Blockera (datalagring)
- Disklagring
- Diskformatering
- Filfördelningstabell
- Diskpartitionering
Anteckningar
- 1. ^ Denna regel gäller åtminstone för alla format där de fysiska sektorerna är namngivna 1 uppåt. Det finns dock några udda diskettformat (t.ex. 640 KB -formatet som används av BBC Master 512 med DOS Plus 2.1), där den första sektorn i ett spår heter "0" inte "1".
-
2. ^ Medan datorer börjar räkna vid 0, börjar DOS räknas vid 1. För att göra detta lägger DOS till en 1 till antalet anställda innan det visas på skärmen. Men istället för att konvertera 8-bitars osignerade heltal till en större storlek (som ett 16-bitars heltal) först, lade DOS bara till 1:an. Detta skulle svämma över ett head count på 255 (
0xFF
) till 0 (0x100 & 0xFF = 0x00
) istället för de 256 som skulle förväntas. Detta fixades med DOS 8, men då hade det blivit en de facto standard att inte använda ett huvudvärde på 255.