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 , 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 (), Anzahl der Köpfe () und Anzahl der Sektoren (; im Sinne von Datenblöcken pro Spur).

Die CHS-Adressierung wurde in den 1990er Jahren von einer logischen Adressierung der Datenblöcke, (LBA), abgelöst. Aus Gründen der Kompatibilität wurden beide Methoden – CHS und LBA – noch bis in die frühen 2000er Jahre parallel genutzt, beispielsweise in Partitionstabellen wie dem MBR.

Aufbau

mini|Festplattengeometrie, schematische Darstellung des Grundprinzips mini|Zylinder, Kopf, Sektor und Spur in Bezug auf die Datenscheiben einer Festplatte

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

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. Das Schema wurde daher auf vielen Betriebssystemen übernommen. So nutzt das BIOS IBM-PC-kompatibler Computer sowie viele (ältere) PC-Betriebssysteme ausschließlich die CHS-Adressierung, allen voran PC-kompatibles DOS wie MS-DOS oder PC DOS, aber auch z. B. OS/2 bis Version 2 und DOS-basiertes Windows. Auch frühe PC-Unix-Systeme, wie z. B. Xenix, PC/IX oder Coherent, nutzen die CHS-Adressierung.

Das (SCSI) hingegen nutzt seit der ersten verabschiedeten Version, SCSI-1 von 1986, eine logische Blockadressierung, (LBA). Dabei sind die einzelnen Datenblöcke von Anfang bis Ende durchnummeriert, wobei die Zählung bei Null beginnt. Auf Betriebssystemen ist meist ein Treiber nötig, um auf SCSI-Datenspeicher zugreifen zu können. Beim IBM PC und kompatiblen Computern können SCSI-Controller die BIOS-Routinen per Interrupt 13 um den Zugriff erweitern, was jedoch nur für Betriebssysteme funktioniert, die diese BIOS-Routinen auch verwenden (können; das sind Betriebssysteme im , z. B. MS-DOS, PC DOS, Windows im ). Bei Umgehung der BIOS-Routinen (bei -Betriebssystemen eine Notwendigkeit) ist ein eigener Treiber Voraussetzung. Da nicht jede Systemfirmware einen Bootloader auf einem SCSI-Gerät laden kann, ist der Systemstart nicht immer von SCSI-Datenspeichern (wie u. a. SCSI-Festplatten oder CD-ROMs, die in SCSI-CD-ROM-Laufwerken eingelegt sind) möglich. Beim Macintosh II von 1987 beispielsweise ist der SCSI-Anschluss sowohl in die Firmware als auch im Betriebssystem voll integriert, sodass die CHS-Adressierung nicht mehr zu Anwendung kommt, da das SCSI-Protokoll die logische Blockadressierung (LBA) vorschreibt.

Das Betriebssystem Linux nutzte LBA von Anfang an auch auf IDE-Festplatten. Ab Windows 9x und NT 3.5 wird LBA unterstützt und teilweise verwendet, ab NT 4.0 löst die logische Blockadressierung CHS vollständig ab. Ebenso stellte in den 1990er Jahren auch PC-Unix vollständig auf LBA um.

Verwendung Über die CHS-Adressierung lässt sich jeder Datenblock, bei Disketten und Festplatten Sektor (von Kreissektor) bezeichnet, wie eine Art Koordinate ansprechen bzw. adressieren.

mini|Automatische Erkennung („“) der CHS-Werte einer Festplatte durch das BIOS-Setup 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 (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.

Speicherkapazitätsgrenzen 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 ) bekannt und später auch als Parallel-ATA (kurz PATA) bezeichnet, sieht 28 Bits für die CHS-Adressierung vor: 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 PC-BIOS werden dafür aber nur 24 Bits bereitgestellt: 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 BIOS ATA → Limit Zylinder (C) 1.024 65.536 1.024 Köpfe (H) 256 16 16 Sektoren je Spur (S) 63 255 63 Sektorgröße in Bytes 512 512 512 Speicherkapazitäts-grenze 8,5 GB7,8 GiB 136,9 GB127,5 GiB 528 MB504 MiB

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.

Die Speichergrenze ist das Resultat daraus, bei den Werten für Zylinder (C), Kopf (H) und Sektoren (S) jeweils, vom BIOS einerseits und vom ATA-Controller andererseits, beim niedrigeren Maximalwert beschränkt zu sein (siehe Tabelle). Bei der üblichen Sektorgröße von 512 Bytes (29) ergibt sich daraus eine Speicherkapazitätsgrenze von 504 MiB (229 Bytes). Ältere BIOS-Versionen können von sich aus nur 1.024 (210) Zylinder, 16 (24) Köpfe und 63 (26 − 1) Sektoren ansteuern.

Logical CHS Mitte der 1990er Jahre wurde in vielen BIOS-Implementierungen eine einfache Umrechnungslogik mit bitweiser Verschiebung bzw. 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 “ oder ähnlich bezeichnet – meist als „ECHS“ (für Extended CHS), „“ oder einfach nur als „“ angeführt.

Durch Logical CHS, die logische Umformung der Anzahl der Zylinder, Köpfe und Sektoren, sind innerhalb des ursprünglichen BIOS-Limits theoretisch ohne weitere Änderungen Festplattenkapazitäten von bis zu 8.064 MiB – rund 7,8 GiB (≈ 233 Bytes) bzw. 8,5 GB – möglich (8,5-GB-Grenze), was als „Extended CHS“ bezeichnet wird.

Praktisch gab es jedoch auch zwischen der 504-MiB- und der 8,5-GB-Grenze immer wieder Inkompatibilitäten, die zu realen Grenzen führen. Beispielsweise ergibt sich bei der ursprünglichen Umrechnungsmethode von Logical 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 – nach der Übersetzung 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.https://web.archive.org/web/19990221160107/http://www.firmware.com/support/bios/over2gb.htm 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 ), 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 “ 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.