I limiti dello standard IDE

agnul75
Messaggi: 21
Iscritto il: lun feb 17, 2020 9:48 am
Been thanked: 26 times

I limiti dello standard IDE

Messaggio da agnul75 »


In questo breve articolo vedremo i vari limiti che nel corso degli anni hanno funestato lo standard IDE.
.
bios ide.png
bios ide.png (12.25 KiB) Visto 507 volte
.
I limiti dei PC / XT (10,4 MiB / 10,9 MB)
i primi PC che utilizzarono le unità discho rigido erano i PC / XT prodotti da IBM.
Questi erano stati progettati specificamente per utilizzare un particolare tipo di disco con 312 cilindri, 4 testine e 17 settori per traccia e preconfigurati per una capacità di circa 10 MB.

I limiti dell'utilizzo di FAT12 (16 MiB / 16,7 MB)
Il primo filesystem utilizzato per i dischi rigidi era FAT12, quello che ancora oggi si utilizza per i comuni dischi floppy.
Essendo un filesystem a 12bit, FAT12 consente un massimo di 4.086 cluster di 4.096 byte, per un totale di 16.736.256 byte per disco.

Arrivo di DOS 3 e del limite dei (32 MiB / 33,6 MB)
Quando IBM ha introdotto la linea di prodotti AT per PC si è trovata di fronte alla limitazione di 16 MiB del progetto precedente.
Per aggirare tale limite hanno modificato il loro sistema operativo, DOS 3.x, aggiungendo il supporto al file system FAT16.
La fretta di risolvere il problema e la poca lungimiranza hanno tuttavia introdotto nuovi limiti.
La dimensione del cluster era stata impostata su 2.048 byte ed erano consentite solo 16.384 voci FAT.
Di fatto ciò fissava la capacità massima a circa 32 MiB.
Sebbene venisse introdotta la possibilità di avere più partizioni, ogni partizione poteva essere solo di 32 MiB o inferiore.

La pecora nera DOS 4 (128 MiB / 134 MB)
DOS 4.x era un miglioramento rispetto a DOS 3.x in quanto consentiva 65.526 cluster invece di 16.384, aumentando cosi la dimensione massima della partizione a circa 128 MiB.
Sfortunatamente la dimensione del cluster era ancora fissata a 2.048 byte.
Fu la versione DOS meno riuscita, con molti problemi e venne presto sostituita dalla versione 5.

Visto quanto fin qui detto, la maggior parte di queste limitazioni iniziali non è derivata da problemi del BIOS ma piuttosto da una certa miopia da parte del team del progetto DOS.
Il team effettivamente era a malapena un anno o due davanti alla curva tecnologica degli hard disk del tempo.

L'arrivo di BIOS int 13h ed il famoso limite di 1.024 cilindri (504 MiB / 528 MB)
Per chi lo ha vissuto di persona questo limite viene ricordato come il più frustrante.
Siccome i valori C, H, S sono usati per la chiamata BIOS Int 13 e per l'I / O del disco IDE, allora le limitazioni si combinano e si possono usare al massimo 1024 cilindri, 16 testine, 63 settori per una capacità totale massima di 528482304 byte (528 MB): è il famigerato limite di 504 MiB per DOS con i vecchi BIOS.
Questo ha iniziato a essere un problema intorno al 1993 e gli ingegneri ricorsero a tutti i tipi di trucchi, hardware (LBA), firmware (traduzione del BIOS) e software (gestori del disco) per aggirarlo.
Il concetto di "traduzione" è stato inventato nel (1994): un BIOS poteva usare una geometria mentre parlava all'unità e un'altra, falsa geometria, parlava con DOS.

Il limite di 4.096 cilindri (1,97 GiB / 2,11 GB)
Molti BIOS potevano assegnare solo 12 bit nella RAM CMOS per memorizzare il valore dei cilindri.
Di conseguenza i cilindri potevano essere al massimo 4095 da cui 4095 *16 *63 *512 = 2113413120 byte.
Collegare un disco più grande al pc porterebbe quindi al blocco al momento dell'avvio.
Ciò ha reso i dischi con geometria 4092/16/63 piuttosto popolari, molte unità disco di grandi dimensioni sono dotate di un jumper per farle apparire come un 4092/16/63.
Altri BIOS invece non si bloccavano ma rilevavano semplicemente un disco molto più piccolo, 429 MB invece di ad esempio 2,5 GB.

Il limite del filesystem FAT16 (2,00 GiB / 2,15 GB)
E' un problema del sistema operativo che non ha nulla a che fare con il BIOS ed è diverso dal limite di 1,97 GiB che è correlato al BIOS.
Il limite di capacità di 2 GiB per partizione è una limitazione dei volumi nel filesystem FAT 16.
A causa del modo in cui i dischi vengono impostati utilizzando i cluster, non è possibile avere più di 2 GiB in una singola partizione quando si utilizza DOS, Windows 3.x o la prima versione di Windows 95 "Windows 95A".
In Windows NT, il limite è di 4 GiB invece di 2 GiB quando si utilizzano partizioni FAT.

Il limite di 6.322 cilindri (3,04 GiB / 3,26 GB)
Il limite di 3,04 GiB / 3,26 GB è uno dei più rari che si possano trovare poiché interessa solo una piccola percentuale dei sistemi informatici.
Su questi sistemi il BIOS non può gestire la geometria del disco rigido con più di 6.322 cilindri.
L'impostazione di un valore del cilindro superiore a 6.322 provoca il blocco del sistema.
Questa barriera fissa la capacità sui sistemi interessati a circa 3,04 GiB o 3,26 GiB, 6322 cilindri, 16 testine, 63 settori e 512 byte.
Stranamente, non c'è alcun significato apparente per il numero 6.322, in quanto non è un numero tondo né in decimale né in binario.

Il limite del phoenix BIOS (3.05 GiB / 3.28 GB)
C'era un bug nel firmware del BIOS Phoenix 4.03 e 4.04 che causava il blocco del sistema nella configurazione CMOS per unità con una capacità superiore a 3277 MB.

Il limite di 8.192 cilindri (3,94 GiB / 4,22 GB)
La semplice traduzione del BIOS (ECHS = Extended CHS, a volte chiamata "Large disk support" o semplicemente "Large") funziona raddoppiando ripetutamente il numero di testine e dimezzando il numero di cilindri mostrato al DOS, fino a quando il numero di cilindri è al massimo 1024.
Nel caso comune di disco con 16 testine ciò significa che questo meccanismo semplice funziona solo fino a 8192 *16 *63 *512 = 4227858432 byte.

Il limite di 240 testine (7,38 GiB / 7,93 GB)
Dei BIOS leggermente più intelligenti evitano il problema precedente regolando prima il numero di testine a 15 ("ECHS revisionato"), in modo da ottenere una falsa geometria con 240 testine, 1024 *240 *63 *512 = 7927234560 byte.

Il limite dell'interfaccia Int 13 (7,88 GiB / 8,46 GB)
Infine, se il BIOS fa tutto il possibile per rendere la traduzione LBA un successo si possono utilizzare 255 testine e 63 settori e raggiungere 1024 *255 *63 *512 = 8422686720 byte, leggermente meno di 8,5 GB perché le geometrie con 256 testine devono essere evitate.

Il limite di 29,8 GiB / 32,0 GB
Il prossimo ostacolo arriva con una dimensione superiore a 33,8 GB.
Il problema è che con le 16 testine predefinite e 63 settori si arriva a un numero di cilindri superiore a 65535.
Si tratta di una condizione insolita dato che la maggior parte, se non tutti, i dischi rigidi superiori a 8 GB non utilizzano più la geometria discreta.
Senza dubbio questo problema di 65.536 cilindri deve in qualche modo essere correlato a un codice più vecchio che veniva utilizzato o un problema di compatibilità con i dischi rigidi più vecchi (o entrambi).
Questo problema era limitato a poche macchine che facevano affidamento sul vecchio codice BIOS Award che è stato successivamente corretto con un aggiornamento dai costruttori.

Il limite da 64 GB di Windows 95B/98
Questo limite è spesso definito erroneamente come una barriera di Windows 95/98 ma in realtà è causato dall'uso di una vecchia versione degli strumenti di configurazione disco di Microsoft (Fdisk.exe e Format.com).
Il motivo è che Fdisk utilizza internamente alcuni valori a 16 bit per calcolare la dimensione dell'unità.
Alcune di queste variabili vanno in overflow quando la dimensione dell'unità è uguale o superiore a 64 GB; Microsoft ha quindi reso disponibile una correzione per questo problema, rilasciando una versione aggiornata di Fdisk.exe

Limitazione FAT32 con Win95C/98SE/ME (124,55 GiB / 127,53)
Lo strumento ScanDisk incluso in Microsoft Windows 95/98SE/ME è un programma a 16 bit.
Tali programmi hanno una dimensione massima di allocazione del blocco di memoria di 16 MB meno 64 KB. Pertanto, lo strumento ScanDisk di Windows non è in grado di elaborare volumi FAT32 con dimensioni maggiori di 4.177.920 cluster (inclusi i due cluster riservati).

Il limite della interfaccia ATA-6 (128 GiB / 137 GB)
Al fine di evitare precedenti barriere e limitazioni del disco, diverse da quelle imposte dai sistemi operativi stessi, i dischi rigidi odierni non si basano più su una geometria discreta (numeri di cilindro, testina e settore specifici) e utilizzano invece l'indirizzamento a blocchi logici e un numero di settore.
Sfortunatamente, anche quando ci allontaniamo dall'indirizzamento dei bit a favore dei numeri di testa e di settore, raggiungiamo comunque il limite della nostra capacità di indirizzare tutti i bit presi insieme.
Dando un'occhiata all'interfaccia ATA-6, sono disponibili 28 bit utilizzabili per l'interfaccia e per il numero di settore.
Ciò significa che un disco rigido può avere un massimo di 2 ^ 28 o 268.435.456 settori di 512 byte, posizionando l'interfaccia ATA al massimo a 128 GiB o circa 137,4 GB

Il limite fisiologico di 2 TiB
Con numeri di settori a 32 bit è possibile indirizzare 2 TiB di spazio disco.
.
dischi IDE.png
dischi IDE.png (173.92 KiB) Visto 507 volte