Kapazitätsgrenzen bei Festplatten

Bei den hier angegebenen Kapazitätsangaben müssten eigentlich IEC-Präfixe verwendet werden, also Kibibyte kiB, Mibibyte MiB, Gibibyte GiB und Tibibyte TiB. Siehe dazu auch https://de.wikipedia.org/wiki/Byte .

ST506-Schnittstelle

Bei einem der ersten IBM-Personal-Computer mit Festplatte, dem IBM-AT, wurde ein spezieller Festplattencontroller in die AT-Slots des Motherboards gesteckt. Ein spezieller Treiber steuerte den Controller so an, dass dieser die analogen Signale der digitalen Daten als magnetische Spur auf die Plattenoberfläche schrieb. Auch die Schrittmotoren wurden vom Controller gesteuert.

kapagrenze1.gif

Der Festplatten-Controller erhielt die Adresse zur Positionierung der zu schreibenden Daten grundsätzlich digital in Form von drei unterschiedlich langen Datenworten "Cylinder, Head, Sector" über die ATA-Schnittstelle. Es konnten über ATA die Cylinder 0...65535 (16 Bit) übertragen werden. Ebenso konnten die Köpfe 0...15 (4 Bit) und die Sektoren 1...255 (8 Bit) addressiert werden. Sektor 0 wurde nicht addressiert.

Zu der damaligen Zeit liefen alle Festplattenaktionen über das BIOS. Wurde also ein Sektor gelesen, so erfolgte vom Betriebssystem ein Unterprogrammaufruf INT13h des Betriebssystems.

idebiosschnittstelle.gif

Die zugehörige, von IBM implementierte Routine INT13h verwendete andere Wortbreiten für die Adressierung von Cylinder, Head und Sector: 10 Bit, 8 Bit und 6 Bit)

Grenzen Bios INT 13h ATA-Schnittstelle Minimum
C 0...1023 10 Bit 0...65535 16 Bit 0...1023 10 Bit
H 0...254 8 Bit 0...15 4 Bit 0...15 4 Bit
S 1...63 6 Bit 0...255 8 Bit 1...63 6 Bit
Summe 16.450.560 24 Bit 267.386.880 28 Bit 1.032.192 20 Bit

Wegen der schlechten Anpassung von Festplattenschnittstelle ATA und der BIOS-Software konnte man von beiden Schnittstellen nur das jeweilige Minimum adressieren.Ein Sektor hat an Nutzdaten 512 Byte Damit ergibt sich für das Minimum eine maximale ansprechbare Kapazität von:

Kapazität = Cylinder x Heads x Sectors x 512 Byte
504 MByte = 1024 x 16 x 63 x 512 Byte

Das war damals allerdings die "wahnsinnig große" Kapazität von 1434 Disketten a 360 KB. Die damals gängigen PC-Festplatten hatten eine Kapazität von 5 bis 10 MB.

Einführung der BIOS-Sector-Translation

Natürlich wurde diese Grenze in den folgenden Jahren schnell erreicht. Die Hardwarehersteller hatten den Festplattencontroller in die Festplatte integriert. Die Festplatte wird dann über die IDE-Schnittstelle praktisch 1:1 am AT-Bus angeschlossen. Durch die Kombination beider Bauteile in einem Gehäuse waren wesentlich höhere Spurdichten und Bitdichten und damit höhere Speicherkapazitäten möglich.

kapagrenze2.gif

Da alle PCs der Welt nur dann Erfolg hatten, wenn sie 100% IBM-kompatibel waren, mussten die BIOS-Routinen aber genauso erhalten bleiben, wie sie waren. Die Computersystemhersteller mussten andere Wege finden, um größere Festplattenkapazitäten anzusprechen. Betriebssysteme wären zwar theoretisch in der Lage, die ATA-Schnittstelle direkt anzusprechen und so mit den ATA-Parametern zu arbeiten. Beim Booten waren jedoch die BIOS-Begrenzungen limitierend. Bei 512 MB war Schluss!

Die Softwareschnittstelle INT13h blieb unverändert. Das BIOS wurde jedoch so verändert, dass die Adressen intern umgerechnet wurden. Jeder mögliche Wert des INT 13H wurde nach einem bestimmten Algoritmus auf einen gültigen Wert der ATA-Adressierung übersetzt. So war es möglich, dass eine Platte mit 8 physikalisch vorhandenen Köpfen (Oberflächen) plötzlich softwareseitig 255 Köpfe hatte. Damit gelten nur noch die Grenzen des INT13h:

Grenzen Bios INT 13h
C 0...1023 10 Bit
H 0...254 8 Bit
S 1...63 6 Bit
Summe 16.450.560 24 Bit

Kapazität = Cylinder x Heads x Sectors x 512 Byte
8032,5 MByte = 1024 x 255 x 63 x 512 Byte

Damit lassen sich dann also problemlos 7,84 GByte ansprechen. Man spricht hier von der "1024-Zylinder-Grenze" oder der 8-GByte-Grenze oberhalb der sich keine Dateien befinden dürfen, die beim Booten angesprochen werden dürfen. Bei Windows-XP kann man die Beobachtung machen, dass sich mehr als die ersten 4 GB der Systempartition in diesem Bereich unterhalb des Zylinders 1024 befinden muss. Bei Linux musste die kleine Partition /boot innerhalb dieser Grenze liegen. Auch moderne Rechner (billig?) sind manchmal noch an diese heute überholte alte Grenze gebunden.

Die "Logische Blockaddresse LBA"

In Anlehnung an die Adressierung bei SCSI-Festplatten wurden auch bei den IDE-Festplatten die (umschaltbare) Möglichkeit der LBA-Addressierung eingeführt. Bei der logischen Blockadresse werden die Sektoren der Festplatte ohne Rücksicht auf physikalische Gegebenheiten einfach durchnummeriert. Jeder Sektor der Platte lässt sich über die LBA mit der Wortbreite von 32 Bit ansprechen. Damit gelten nur noch die Grenzen der ATA-Schnittstelle:

Grenzen ATA-Schnittstelle
C 0...65535
H 0...15
S 0...255
  127,5 GByte

Damit konnte jedes fortschrittliche Betriebssystem (Windows 2000, Linux ...) Festplatten bis zu einer Kapazität von 127,5 GByte ansprechen. In der Schreibweise der Festplattenhersteller (1000 MByte = 1 GB) sind das 137 GB.

Einfache Betriebssysteme (MSDOS ...) verwendeten unverändert das BIOS welches über INT13 nur 7,84 GByte bzw. 8,4 GB adressieren kann.

BIOS mit erweitertem INT13 und 64-Bit-LBA

Ab dem Jahr 1997 wurden Rechner ausgeliefert, deren BIOS mit einer zusätzlichen Softwareschnittstelle, dem "EXT-INT 13h", dem erweiterten Interrupt 13, ausgestattet war. damit war die Grenze des BIOS beseitigt. Moderne Betriebssystem-Loader wie z.B. der "Grub" von Linux verwenden den EXT-INT13h und können so auch von oberhalb der 1024-Cylinder-Grenze booten. Die neue Grenze liegt nun auch für das BIOS bei den 137 GB der ATA-Schnittstelle.

Fehlerhafte BIOS-Implementierungen des EXT-INT13h können allerdings zu 32-GByte-Grenzen oder zu 64-GByte-Grenzen führen.

Bei der Einführung des EXT-INT13h wurde bei vielen hochwertigen Motherboards die Wortbreite der LBA von 32 Bit auf 64 Bit erhöht. 8.600.000.000 Terabyte dürfte jetzt eine Zeitlang reichen. Leider waren die alten Festplatten wegen der ATA-Schnittstelle immer noch auf eine mögliche Kapazität von 137 GB begrenzt.

Die ULTRA-ATA-Schnittstelle

Im Juni 2001 führte Maxtor Festplatten mit der ULTRA-ATA-Schnittstelle ein. Dabei wurde die Sektoradresse von ursprünglich 28 Bit (Cylinder+Kopf+Sektor-Adresse) auf 48 Bit aufgebohrt. Damit lassen sich immerhin 131072 Terabyte addressieren.

Die modernen Betriebssystem unterstützen ULTRA-ATA. Bei Windows-XP muss man die Unterstützung aber ggfs. erst durch einen Eintrag in der Registry freischalten. Das Booten bleibt auf den Bereich unter 137 GB bzw. 127,5 GByte beschränkt, wenn das BIOS 64-Bit-LBAs noch nicht unterstützt.

Sector-Translation innerhalb der Festplatte

Die Festplatten moderner Computer werden nur noch mit der LBA-Adressierung betrieben. Die Parameter "Zylinder", "Kopf", "Sektor" haben laufwerksintern schon lange mit den extern angegebenen Werten nichts mehr gemeinsam. Niemand weiß bei einer solchen Angabe, wo der Mikroprozessor auf der Festplatte wirklich den Sektor herholt. Um die Bitdichte optimal auszunutzen, haben moderne Platten auf den äußeren Spuren mehr Sektoren als auf den inneren Spuren (Zoned Bit Recording). Defekte Sektoren werden von dem Laufwerk selbsttätig ausgelagert (d.h. es wird ein Ersatzsektor dafür in einer Tabelle festgelegt). Niemand muß aber auch wissen, wo genau seine Daten auf der Festplatte abgelegt sind. Er bekommt sie jederzeit durch Angabe einer LBA.

Kapazitätsgrenze 2 Terabyte?

Ende des Jahres 2010 ist offenbar eine neue Kapazitätsgrenze in Sicht. Festplatten mit mehr als 2 TB können bei gängigen Betriebssystemen nicht als Systemfestplatte arbeiten. Sie werden nur als USB-Festplatten für Backupzwecke angeboten. Die Ursache liegt darin, dass der vom Konzept uralte Masterbootrecord nicht mehr als zwei Terabyte adressieren kann. Es gibt neuere Konzepte, die sich aber erst einmal durchsetzen müssen ( http://de.wikipedia.org/wiki/GUID_Partition_Table ).

-- KlausKellermann - 27 Sep 2004
-- KlausKellermann - 02 Nov 2005
Topic attachments
I Attachment ActionSorted ascending Size Date Who Comment
idebiosschnittstelle.gifgif idebiosschnittstelle.gif manage 34 K 02 Nov 2005 - 21:53 KlausKellermann Quelle: PC-Magazin 10/1999 S. 96 (leicht mod.)
kapagrenze1.gifgif kapagrenze1.gif manage 3 K 27 Sep 2004 - 00:15 KlausKellermann ST506-Schnittstelle
kapagrenze2.gifgif kapagrenze2.gif manage 3 K 27 Sep 2004 - 00:16 KlausKellermann IDE-Schnittstelle
Topic revision: r7 - 05 Jan 2020, KlausKellermann
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback