Top-Fragen
Zeitleiste
Chat
Kontext
CHS-Adressierung
Technik bei Festplattenlaufwerken Aus Wikipedia, der freien Enzyklopädie
Remove ads
Die CHS-Adressierung ist eine historische Adressierungsmethode für Massenspeicher wie Festplatten, die bis in die frühen 2000er-Jahre bei Computern und Betriebssystemen relevant war. Die Abkürzung CHS steht für englisch cylinder/head/sector, manchmal auch mit Zylinder/Kopf/Sektor übersetzt, und findet sich u. a. bei frühen IBM-PC-kompatiblen Computern mit BIOS, wo der physische Aufbau einer Festplatte in Form der Festplattengeometrie mit diesen drei Werten manuell eingestellt werden musste: Anzahl der Zylinder (cylinders), Anzahl der Köpfe (heads) und Anzahl der Sektoren (sectors; im Sinne von Datenblöcken pro Spur).
Remove ads
Aufbau
Zusammenfassung
Kontext


Die drei CHS-Werte sind eine Art Koordinatenangabe, die sich aus dem physischen Aufbau von Festplatten und Disketten(-laufwerken) ergeben hat, denn diese bestehen aus einer oder mehreren rotierenden Scheiben (Platter oder engl. Disks), die im Allgemeinen auf beiden Seiten mit je einem Lese-/Schreib-Kopf abgetastet werden. Die Sektoren werden ab eins gezählt, während bei den Zylindern und Köpfen die Zählung bei Null beginnt. Bei Disketten und einigen frühen Festplatten wurde nur eine Scheibe verwendet, darum wird manchmal der Begriff Seite als Synonym für Kopf verwendet, denn es gibt dann nur jeweils den Kopf auf der Ober- und der Unterseite. Ist diese Scheibe (Disk) dazu noch einseitig, so entspricht der Zylinder der Spur (englisch Track).[1]
Für den Zugriff auf die einzelnen Datenblöcke wurde dieses Schema bei vielen Computern übernommen. So nutzt das BIOS IBM-PC-kompatibler Computer sowie viele (ältere) PC-Betriebssysteme die CHS-Adressierung, allen voran PC-kompatibles DOS wie MS-DOS oder PC DOS, aber auch z. B. OS/2 und Windows. Linux hingegen nutzte von Anfang an Logical Block Addressing (LBA), bei dem die Datenblöcke einfach durchnummeriert sind und die Zählung bei Null beginnt.
Für den Zugriff auf die einzelnen Datenblöcke muss die Angabe der Festplattengeometrie (in Form von Zylinder/Kopf/Sektor bzw. C/H/S) sowohl in der Firmware (beim PC das BIOS) und im Betriebssystem als auch auf den Partitionen und Dateisystemen auf dem Datenspeicher selbst korrekt bzw. identisch sein.
Remove ads
Verwendung
Zusammenfassung
Kontext
Über die CHS-Adressierung lässt sich jeder Datenblock, bei Disketten und Festplatten Sektor (von Kreissektor) bezeichnet, wie eine Art Koordinate ansprechen bzw. adressieren.
Werden der Adressierung falsche Angaben zur Festplattengeometrie zugrunde gelegt, so sind etwaige zuvor verwendete (richtige) Adressierungsangaben, mittels derer bereits Daten auf dem Datenspeicher hinterlegt wurden, falsch; die Adressierung verweist dann auf einen anderen Datenblock, der nicht die referenzierten Daten enthält – es besteht dadurch eine reale Gefahr für Datenverlust – oder einen Verweis auf eine nicht vorhandene Adresse – was zu E/A-Fehlern beim Datenzugriff führt. Seit den 1980er Jahren werden Festplatten gebaut, deren Controller die tatsächliche Festplattengeometrie von der Adressierung entkoppeln, so dass die Speicheradresse in Form des Tripel Zylinder, Kopf, Sektor nicht mehr der physischen Realität entspricht, denn der zwischengeschaltete Controller überführt jede logische CHS-Adresse in eine physische Speicheradresse, die nur der Controller der Festplatte selbst kennt. So funktionierten Festplatten meist selbst bei falschen Angaben (z. B. im BIOS) korrekt, solange die sich aus den CHS-Angaben ergebende Größe nicht die tatsächlich vorhandene Speicherkapazität überstieg. Spätere BIOS-Versionen seit den frühen 1990er Jahren konnten die CHS-Angaben von Festplatten normalerweise automatisch ermitteln.
Bei der Aufteilung des Speichers in Partitionen finden sich bei der CHS-Adressierung die jeweiligen Start- und End-Sektoren in der Partitionstabelle, bei IBM-PC-kompatiblen Computern ab dem IBM PC XT von 1983 ist das der Master Boot Record (MBR). Bei späteren Varianten wurde Logical Block Addressing (LBA) als Adressierungsmethode verwendet und die CHS-Werte, soweit möglich, umgerechnet, sodass beide Werte, CHS und LBA, auf dem Speichermedium (z. B. im MBR) gespeichert wurden. Später wurden die CHS-Werte dann komplett weggelassen.[2]
Remove ads
Speicherkapazitätsgrenzen
Zusammenfassung
Kontext
Mit Fortschreiten der Entwicklung und immer höheren Speicherkapazitäten bei Festplatten ergaben sich in der Realität mehrere Kapazitätsgrenzen, die sich aufgrund unterschiedlicher Design-Entscheidungen ergaben. So waren die CHS-Werte z. B. in der Firmware und im Speichercontroller unterschiedlich abgespeichert.
ATA/ATAPI, ursprünglich als IDE (für Integrated Drive Electronics) bekannt und später auch als Parallel-ATA (kurz PATA) bezeichnet, sieht 28 Bits für die CHS-Adressierung vor:[3]
- 16 Bits für die Anzahl der Zylinder, 216 = max. 65.536 (0–65.535) Zylinder
- 4 Bits für die Anzahl der Köpfe, 24 = max. 16 (0–15) Köpfe (pro Zylinder)
- 8 Bits für die Sektoren pro Spur, 28−1 = 255 (1–255) Sektoren pro Spur
Im BIOS werden dafür aber nur 24 Bits bereitgestellt:[3]
- 10 Bits für die Anzahl der Zylinder, 210 = max. 1.024 (0–1.023) Zylinder
- 8 Bits für die Anzahl der Köpfe, 28 = max. 256 (0–255) Köpfe (pro Zylinder)
- 6 Bits für die Sektoren pro Spur, 26−1 = 63 (1–63) Sektoren pro Spur
504-MiB-Grenze
Bis zur 504-MiB-Grenze können bei Festplatten die realen Geometriedaten in Form der CHS-Werte eingegeben werden, der Datenzugriff erfolgt damit vielfach auch real an jener Stelle, die als C/H/S-Wertepaar angegeben ist.
Da bei der Speichergrenze der jeweils maximale Wert bei C/H/S, jeweils vom BIOS und vom Speichercontroller, den Ausschlag gibt, können ältere Versionen eines BIOS nur 1.024 (210) Zylinder, 16 (24) Köpfe und 63 (26 − 1) Sektoren ansteuern. Das ergab bei der Sektorgröße von 512 Bytes (29) maximal 504 MiB (229 Bytes). Später wurde die maximale Anzahl der Köpfe auf 256 (28) erhöht, was die Kapazitätsgrenze auf 8.064 MiB bzw. ≈ 8 GiB (≈ 233 Bytes) erhöhte.
Logical CHS
Mitte der 1990er Jahre wurde in vielen BIOS-Implementierungen eine einfache Umrechnungslogik mit bitweiser Verschiebung bzw. englisch bit-shifting translation eingeführt, die die von einer Festplatte gemeldeten Werte (ob real oder nicht) „übersetzen“ kann. So kann z. B. eine Festplatte mit den „physischen“ CHS-Werten 4092/16/63, was einer Kapazität von 2014 MiB (oder 1,97 GiB) bzw. 2,1 GB entspricht, vom BIOS in die „logischen“ CHS-Werte 1023/64/63 transferiert werden, was nun innerhalb des BIOS-Limits des Interrupt 13h liegt. Im BIOS-Setup wird die „Translation“ bei der automatischen Erkennung – oft „HDD autodetect“ oder ähnlich bezeichnet – meist als „ECHS“ (für Extended CHS), „Large disk support“ oder einfach nur als „Large“ angeführt.
Durch Logical CHS, die logische Umformung der Anzahl der Zylinder, Köpfe und Sektoren, sind innerhalb des ursprünglichen BIOS-Limits ohne weitere Änderungen Festplattenkapazitäten von bis zu 8,5 GiB möglich (8,5-GB-Grenze bzw. Extended CHS).
Bei Festplatten mit 16 Köpfen und mehr als 8192 Zylindern – 4032 MiB (oder 3,94 GiB bzw. 4,2 GB) und größer – ergibt sich nach der Übersetzung jedoch ein logischer CHS-Wert des BIOS mit 256 Köpfen, was bei DOS und Windows zur 4-GB-Grenze führt.
2,1-GB-Grenze
Im April 1996 wurden die ersten IDE-Festplatten mit > 2 GB verfügbar. Darauf wurde in einigen BIOS-Implementierungen ein Fehler offenkundig, der die korrekte Konfiguration dieser Festplatten verhinderte: Selbst nach einer korrekten automatischen Erkennung der Festplattengeometrie durch das BIOS waren im CMOS-RAM nur 12 Bits zum Speichern der Anzahl der Zylinder vorgesehen, was ein Maximum von 4095 Zylinder erlaubt.[5]
- 4.095 Zylinder × 16 Köpfe × 63 Sektoren/Spur = 4.127.760 Sektoren × 512 Bytes/Sektor = 2.113.413.120 Bytes (rund 2,1 GB oder ~1,96 GiB)
Einige Festplatten dieser Zeit haben einen eigenen Jumper, der die gemeldete Geometrie auf diesen Wert einstellt, da das BIOS sonst u. U. nach dem Erkennen der Festplatte hängen bleibt. Andere BIOS-Implementierungen ermitteln stattdessen einen viel zu niedrigen Wert, sodass der BIOS-Festplatten-Typ auto z. B. statt 2,5 GiB eine Festplattenkapazität von nur 429 MB ergibt. Als Abhilfe müssen die Daten (4095/16/63) manuell im BIOS-Setup eingetragen werden (Typ user), womit dann allerdings nur die rund 1,96 GiB nutzbar sind, die sich aus diesen maximalen Werten ergeben. Wenn das verwendete Betriebssystem die vom BIOS gemeldeten Werte oder die BIOS-Funktionen zum Zugriff auf die Festplatte nutzt (wie es z. B. DOS und Windows der 1990er Jahre tun), muss ein Disk Manager verwendet werden, damit dieses Limit nicht mehr besteht.
4-GB-Grenze
Anfang 1997 waren die ersten IDE-Festplatten mit über 4 GB Speicherkapazität verfügbar. Weil die einfache Logik der bitweisen Verschiebung zur Übersetzung in logische CHS-Werte durch das BIOS – „Extended CHS“ – bei mehr als 8191 Zylindern und 16 Köpfen, das sind Festplatten größer als 4,2 GB (3,9 GiB), immer 256 Köpfe ergibt, gibt es nun ein Problem mit den Betriebssystemen MS-DOS und Windows 95/98, die nur 255 Köpfe verarbeiten können – bei 256 Köpfen kommt es zu einem Ganzzahlüberlauf auf Null (0 Köpfe). Zur Lösung dieses speziellen Problems müssen die durch die automatische Festplattenerkennung des BIOS („HDD autodetect“ bzw. Festplatten-Typ „auto“) ermittelten (logischen) CHS-Werte bei betroffenen BIOS-Implementierungen manuell korrigiert werden.
Dabei muss die Anzahl der Köpfe von 16 auf 15 herabgesetzt werden, und die Anzahl der Zylinder durch 15 dividiert und mit 16 multipliziert werden, und anschließend abgerundet.
Beispiel: die IDE-Festplatte Maxtor 85120A hat eine Speicherkapazität von 4,7 GiB und folgende (physische) CHS-Werte: 9924/16/63. Die korrigierten ins BIOS einzutragenden Werte sind somit 10585/15/63, da 9924 Zylinger × 16 ÷ 15 Köpfe genau 10585,5 ergibt, abgerundet also 10585 Zylinder. Jedes BIOS, das die eingetragenen (physischen) CHS-Werte einer Festplatte nun per bit-shifting translation in logische CHS-Werte übersetzt, wird auf ein Ergebnis mit 240 Köpfen kommen, was somit in das für DOS und Windows der 1990er Jahre bestehende Limit von maximal 255 Köpfen passt.[6]
8-GB-Grenze
Als 8-GB-Grenze werden die 8,4-GB- und die 8,5-GB-Grenzen, die sich durch die Adressierung mit (logischen) CHS-Werten ergeben, bezeichnet. Betriebssysteme, die nicht auf die erweiterten Funktionen des Interrupt 13h angepasst wurden und noch mit CHS-Werten arbeiten, bleiben auf Extended CHS und somit rund 8 GB beschränkt, darunter Windows NT bis Version 3.51.[7] Theoretisch ebenfalls davon betroffen sind MS-DOS 5.0 und 6.x sowie Windows 3.x,[7] allerdings hat das von diesen Betriebssystemen genutzte Dateisystem FAT16 bereits ein Limit von 2 GiB. Dadurch lässt sich nur dann mehr Festplattenspeicher nutzen, wenn über eine erweiterte Partition mehrere logische Partitionen à max. 2 GiB eingerichtet werden.
8,4-GB-Grenze
Dem 255-Köpfe-Limit von DOS geschuldet versuchen viele korrigierte BIOS-Varianten 256 Köpfe zu vermeiden, was eine etwas verringerte maximal mögliche Kapazität als Extended CHS ergibt:
- 1.024 Zylinder × 255 Köpfe × 63 Sektoren/Spur = 16.450.560 Sektoren, × 512 Bytes pro Spur = 8.422.686.720 Bytes
Das sind 33.030.144 Bytes weniger als mit 256 Köpfen, also rund 31,5 MiB (33 MB) weniger gegenüber der 8,5-GB-Grenze, gleichzeitig aber die maximal mögliche „Translation“ in einen logischen CHS-Wert, der mit den PC-Betriebssystemen DOS und Windows der 1990er Jahre möglich ist. Der BIOS-Hersteller Phoenix bezeichnete diese Translation als „Assisted LBA“, einige andere Hersteller nannten die korrigierte Methode schlicht „LBA“.[6]
8,5-GB-Grenze (Extended CHS)
Beim BIOS wurde daher ab den frühen 1990er Jahren die maximale Anzahl der Köpfe genutzt, um weiteren Speicherplatz nutzbar zu machen. Bei dieser als Extended CHS bezeichneten Methode wird nicht die reale Geometrie der Festplatte eingegeben, sondern fiktive CHS-Werte, wobei die Maximal-Anzahl der Köpfe ausgenutzt wird:
- 1.024 Zylinder × 256 Köpfe × 63 Sektoren/Spur = 16.515.072 Sektoren, × 512 Bytes pro Spur = 8.455.716.864 Bytes[8]
Dieser maximal durch den BIOS-Interrupt 13h mögliche Wert entspricht umgerechnet 8.064 MiB bzw. rund 7,8 GiB in binärer Umwandung, bzw. rund 8,5 GB in der SI-Einheit (siehe Byte-Präfixe).
Erweiterte Interrupt-13h-Funktionen
Eine von IBM und Microsoft entwickelte Erweiterung der BIOS-Routinen Interrupt 13h erlaubt direkten Zugriff auf Festplatten per Logical Block Addressing (LBA) und die Konvertierung von LBA-Werten in eine CHS-Geometrie.
Im Gegensatz zu den traditionellen Funktionen des Interrupt 13h, die auf den logischen CHS-Werten basieren, kann mit den erweiterten Routinen nun direkt LBA genutzt werden. Das war bei den Betriebssystemen der 1990er fundamental, denn obwohl z. B. Windows 95 im Protected Mode (32-Bit) bereits einen eigenen Treiber für den direkten Zugriff auf Festplatten unter Umgehung der BIOS-Routinen nutzt, muss Windows 9x noch von MS-DOS aus gestartet werden.[7]
Auf Computern, die die Extended Int 13 functions nicht unterstützen, kann ein Disk Manager verwendet werden, der diese in Software „nachrüstet“.[7]
Disk Manager
Oft ist es durch Limitierungen des BIOS nicht möglich, eine der genannten Grenzen zu überwinden. Da es nicht für alle PCs ein BIOS-Update gab, mit dem sich das Problem, das sich aus einem (oder mehreren) dieser Limits ergab, lösen ließ, wurden für DOS und Windows auch Software-Lösungen entwickelt, die den BIOS-Interrupt 13h überschreiben und so den Zugriff auf größere Festplatten ermöglichen. Die bekanntesten zwei dieser sogenannten „Disk Manager“ waren EZ-Drive, entwickelt von Micro House, und Disk Manager von Ontrack.
Konvertierung von CHS nach LBA
Beim LBA-Verfahren (Logical Block Addressing) werden die Blöcke mit Null beginnend durchgezählt. Die Konvertierung der CHS-Angaben in die Adresse des Blocks nach dem LBA-Verfahren erfolgt nach der Formel
mit
- : Zylindernummer
- : Zahl der Leseköpfe
- : Lesekopfnummer
- : Zahl der Sektoren (= Zahl der Blöcke je Zylinderkopfspur bzw. Track)
- : Sektornummer.
Remove ads
Probleme mit der CHS-Adressierung
U. a. bei RAID spielten die genauen CHS-Angaben eine wichtige Rolle, weil bei einigen Formen der Datenspiegelung darauf geachtet werden muss, dass beide Festplatten identische Eigenschaften haben – nicht nur die gleiche Größe.
Weblinks
- Harddisk Upgrade: The BIOS IDE Harddisk Limitations (englisch) von Jan Steunebrink, Version 2 vom Juni 1999
- History of BIOS and IDE limits (englisch) im Large Disk HOWTO von Andries Brouwer, Version 2.5 vom 1. November 2004
- BIOS hard drive limits (englisch) von David L. Farquhar, vom 17. September 2019, in seinem Blog „The Silicon Underground“
Einzelnachweise
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads