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