Che cos'è il Setup - La prima pagina del Setup: configurare i parametri per gli HD. Le opzioni: CHS, LBA. Il limite dei 504 MB. Accesso al disco a 32bit sotto Windows
di Fernando Carello
In genere è possibile proteggere l'accesso ai menu del Setup tramite una password specificata dall'utente, onde evitare, ad esempio, che il collega di lavoro pasticcione o il fratellino inesperto modifichino qualche opzione "vitale" provocando bloccaggi della macchina o altri malfunzionamenti; a quel punto occorre individuare l'opzione alterata e ripristinarla, oppure ricaricare i BIOS defaults, parametri "di fabbrica" che vanno bene nella maggioranza dei casi. Si puó quindi proteggere il Setup con una password, ma .. va ricordata ! :-) Una volta inserita, se l'utente la dimentica ha come unica possibilità di accedere di nuovo al Setup quella di .. cancellare la CMOS RAM tramite apposito jumper sulla Mother Board (nel caso improbabile che non ci fosse, si puó sempre staccare la batteria tampone per un giorno o due, ottenendo lo stesso risultato).
I programmi di setup non sono tutti uguali (negli ultimi tempi ne sono persino apparsi alcuni di tipo grafico, da usarsi tramite mouse); tuttavia, la maggior parte di essi presenta due sezioni: una "semplice" con le opzioni relative a Data, Ora, Capacità delle unità floppy, parametri delle unità HD (questa sezione in realtà è abbastanza standardizzata), e una "avanzata", con la possibilità di settare il numero di stati di attesa sulle memorie, la shadow RAM, ecc.
Per ciascun HD va indicato il numero di cilindri (CYLS), testine (HEADS) e settori per traccia (SECTS), nonché la posizione di parcheggio per le testine (LANDZONE) e la precompensazione in scrittura (PRECOMP). I BIOS piú recenti permettono di scegliere tra i parametri "normali" (CHS) e quelli LBA, utili per HD aventi capacità maggiore di 504 MB (attenzione: 1 MB = 1048576 byte, quindi 504 MB circa uguale 528.5 milioni di byte, che è l'unità di misura adottata in genere dai costruttori di HD): selezionando la translazione LBA, infatti, si noterà il raddoppio (o quadruplicamento) del numero di testine e il dimezzamento (o riduzione ad un quarto) del numero di cilindri; ció permette di aggirare un annoso limite nella gestione in DOS di HD IDE / EIDE da oltre 504 MB senza dover ricorrere ad un "controller" dotato di BIOS in grado di gestire autonomamente la mappatura del disco, o di installare un driver per la gestione dell'HD tipo EZ-Drive o Disk Manager.
Il DOS non è in grado né di partizionare né di formattare parti del disco che eccedano il 1024° cilindro
(ovvero il cilindro numero 1023, visto che la numerazione parte da 0): sotto DOS, quindi, il disco
apparirà come se fosse di soli 504 MB. OS/2, ad esempio, va oltre, riuscendo tranquillamente
(usando peró l'HPFS e non la FAT) a partizionare, formattare ed utilizzare la parte del disco
eccedente il 1024° cilindro; tuttavia, la partizione da cui parte (startable) deve risiedere entro il 1024°
cilindro. Mi fermo qui con gli esempi, ma è evidente che, avendo acquistato un HD IDE/EIDE da oltre
504 MB, conviene selezionare la traslazione LBA nel BIOS (o installare l'apposito driver) prima di
partizionarlo e formattarlo.
In alcuni casi, tuttavia, è possibile che su un HD da oltre 504 MB si perda l'accesso a 32 bit sotto
Windows.
Abbiamo parlato di cilindri, testine, settori; va detto che, nell'accezione qui usata, si intendono
parametri "logici", ovvero: un Seagate ST3660A, configurato generalmente come 1057 cilindri, 16
testine, 63 settori (modo Normal) o 529 cilindri, 32 testine, 63 settori (modo LBA), non ha, in realtà, che 4
sole testine "fisiche" (è costituito da 2 "piatti" magnetizzati da ambo i lati; ciscun lato ha una testina);
appare chiaro che non c'è, in genere, corrispondenza tra parametri fisici e parametri logici -
l'importante è che alla fine i conti tornino!
Se il BIOS prevede il supporto di 4 HD, utilizzare 4 unità IDE/EIDE diventa piú semplice. In particolare,
disponendo di un adapter EIDE a 2 canali potremo mettere due unità (master+slave) sul canale
primario e due (master+slave) su quello secondario: poichè ciascun canale ha a disposizione il
proprio indirizzo di porta I/O (tipicamente 1F0h per il controller primario e 170h per il secondario) e il
proprio IRQ (in genere, rispettivamente 15 e 14), è un po' come se ci fossero due adapter indipendenti.
Alcuni BIOS incorporano una routine di auto-detect per i parametri degli HD (non funziona con gli
SCSI): in tal caso, non è necessario inserire a mano i parametri del proprio HD.
[ Sommario | Redazione | Informazioni | Vai a... ]
Le definizioni di questo numero
BIOS
CMOS RAM
IDE / EIDE
LANDZONE
CHS
LBA
Interrupt
Limite dei 528MB
Accesso a 32bit sotto Windows
BIOS (Basic Input Output System)
Il BIOS è un insieme di routine che si occupano di "colloquiare" con l'hardware del PC; in pratica contiene
i driver per le periferiche principali del PC, mettendo a disposizione del Sistema Operativo una serie di
funzioni già pronte per accedere ai dispositivi di I/O (dischi, tastiera, video, stampante, porta seriale,
clock, ecc.); per potersi interfacciare con l'hardware, il BIOS ha bisogno di alcuni dati che non possono
essere memorizzati su ROM, in quanto soggetti a cambiamento (es: parametri dell'hard disk); per questo
motivo è presente su tutti i PC un programma che permette di inserire questi parametri: il BIOS Setup,
appunto. Questo programma (che salva i dati immessi nella CMOS RAM alimentata a batteria presente
su tutti i PC), in genere, permette anche di settare alcuni parametri di funzionamento del chipset che
governa la scheda madre (es: stati di attesa della RAM, ROM shadowing, ecc.; torneremo su questi
argomenti nei successivi articoli).
Va detto che ormai solo l'MS-DOS sfrutta le routine del BIOS per accedere alle periferiche: sistemi operativi piú sofsticati (come OS/2, Windows NT, i vari Unix per PC, ecc.) hanno un proprio set di routine per dialogare con l'hardware. Ció è vantaggioso, in quanto le routine del BIOS sono state scritte per operare nella modalità reale 16 bit dei processori x86, mentre tutti i moderni sistemi operativi operano in modo protetto 32 bit; conviene, quindi, avere routine d'interfacciamento in grado di operare in tale modalità (v. accesso a 32 bit sotto Windows).
E' il piú diffuso dei modi di indirizzamento logico di un settore su HD IDE. In pratica, l'indirizzo di ogni
settore sull'HD è descritto tramite una tripletta di numeri; il primo indica a in quale cilindro logico si
trova il settore interessato, il secondo indica (all'interno del dato cilindro) quale superficie logica
(faccia) contiene il settore, e l'ultimo indica la posizione del settore all'interno della pista individuata
dai primi due. Si parla di parametri logici, e non fisici: non c'è in genere corrispondenza tra, ad
esempio, il numero di testine indicate dalla geometria CHS e il numero effettivo di testine di
lettura/scrittura presenti in un HD (che difficilmente sono in numero superiore a 4). Quando il controller
dell'HD riceve una richiesta di accesso ad un settore indicato da una tripletta CHS, esegue una
"traslazione" che porta a conoscere l'effettivo numero di cilindro, testina e settore (stavolta sono
parametri fisici); a questo punto è possibile accedere fisicamente al blocco di dati richiesto. Tutto ció
appare alquanto macchinoso e poco razionale; tuttavia, occorre ricordare che l'indirizzamento CHS è
rimasto immutato dall'avvento della vecchia interfaccia ST506 (la necessità di compatibilità
all'indietro costringe spesso a soluzioni poco efficienti); all'epoca in cui la ST506 venne introdotta,
c'era effettiva corrispondenza tra parametri logici e parametri fisici ... Comunque, il limite
dell'indirizzamento CHS non risiede nella scarsa linearità del processo, bensí nel fatto che la
combinazione CHS + DOS porta all'impossibilità di gestire HD piú grandi di 504 MB (= 528 milioni di
byte). Vedi Limite dei 528MB.
Per superare le limitazioni del CHS, è stato recentemente introdotto l'LBA.
E' un nuovo sistema di indirizzamento apparso piú o meno in contemporanea con gli HD EIDE e
Fast-ATA. Nell'indirizzamento LBA, un settore non è piú individuato dalla terna logica Cilindro, Testina,
Settore, bensí da un numero, rappresentante l'indirizzo logico assoluto del settore, secondo un
ordinamento lineare. Questo permette di superare le limitazioni del CHS, tuttavia è necessario che sia il
BIOS (quello della piastra madre o dell'eventuale EIDE adapter), sia il controller, sia il sistema operativo
supportino tale modo di indirizzamento; tutti gli HD confacenti allo standard ATA-2 supportano il modo LBA.
Naturalmente, un disco partizionato e formattato in CHS non potrà essere utilizzato in LBA, e viceversa:
occorre attivare l'LBA prima di partizionare il disco.
Vedi anche accesso a 32 bit sotto Windows.
Riassumendo, il DOS potrebbe chiamare l'INT 13h per un massimo di:
Dal canto suo, i limiti combinati BIOS CHS / IDE portano a:
che diventano, accoppiando BIOS recenti e HD ATA-2:
Poiche' un settore contiene 512 byte, si vede che le dimensioni massime di un HD IDE gestibile in
modo standard dal DOS sono: 1024x16x63x512 byte = 528.5 milioni di byte = 504 MB. Per superare
questo limite, bisogna intervenire su uno (o piú) dei suddetti elementi; all'atto pratico, o impediamo al
DOS di usare l'INT 13h "standard", o modifichiamo l'implementazione del suddetto nel PC BIOS , o
"mascheriamo" quella parte del PC BIOS con un BIOS esterno. Il primo approccio richiede l'utilizzo di
driver specifici, come l'Ontrack Disk Manager o l'EZ-Drive, che intercettano le chiamate all'INT 13h e
rispondono con delle routine proprie (cio' richiede comunque di formattare l'HD con il driver installato,
e puo' portare a problemi di compatibilità con sistemi operativi diversi dal DOS). Il secondo
approccio è quello dell'indirizzamento LBA, combinato con le nuove specifiche EIDE (o FAST-ATA, o
ATA-2); il limite è cosí (per il DOS) di 8 GB per disco (1024 cilindri x 256 testine x 63 settori x 512 byte).
L'ultimo approccio è quello usato dai "controller intelligenti", dotati di un proprio BIOS che si
sostituisce, limitatamente alle funzioni HD, a quello della mother board; anche in questo caso, tuttavia,
si possono avere problemi di compatibilità con alcuni sistemi operativi.
Da notare che sistemi operativi diversi dal DOS tendono a scavalcare il problema, in quanto non
utilizzano (se non durante il boot) per l'accesso a disco l'INT 13h, bensi' delle proprie routine, che non
hanno le limitazioni elencate, in grado di accedere direttamente al controller dell'HD; a questo punto il
limite massimo dipende dal S.O. in uso.
Per la precisione, va detto che, di per se', l'LBA non permette il superamento del limite dei
528 milioni di byte sotto DOS: infatti, il DOS non supporta (almeno al momento: MS-DOS 6.22) il
modo LBA, e non trarrebbe alcun vantaggio dall'averlo selezionato nel Setup; tuttavia, ad esso è
associata una traslazione dei parametri realtivi a numeri di cilindri logici, testine logiche e settori logici
che permettono al DOS di chiamare l'INT 13h con un numero di cilindri sempre minore di 1024.
L'interfaccia IDE nacque nel 1984 ad opera della Western Digital e della Compaq, per gli hard disk. Nel
1988, il comitato CAM ha fissato gli standard per i sistemi IDE, creando il protocollo d'interfaccia ATA (AT
bus Attachment). Recentemente, la stessa Western Digital ha proposto un'evoluzione dell'IDE,
denominata EIDE, volta ad integrare un maggior numero di funzionalità, quali il supporto
dell'indirizzamento LBA, il supporto di periferiche diverse dagli HD (CD-ROM, unità magneto-ottiche,
scanner, ecc.), l'aumento delle prestazioni tramite l'introduzione di nuovi modi di trasferimento.
Ancor piu' recentemente, sono state fissate le specifiche per lo standard ATA-2, comprendente di fatto le
specifiche EIDE piu' alcune estensioni.
Premessa: Windows 3.xx è una shell parzialmente a 32 bit sopra un sistema operativo (DOS) a 16 bit.
La CPU 386+ opera indifferentemente a 16 o 32 bit, ma passare da uno stato all'altro richiede tempo.
Se il programma in esecuzione usa routines a 32 bit, e accede al disco, le cui routines di controllo
BIOS sono a 16 bit, ogni singolo accesso a disco richiede una transizione 32->16 e una 16->32. Per
evitare questo, si puo' riscrivere la routine BIOS in modo da evitare la chiamata al BIOS su EPROM. La
routine BIOS-32 usata da Windows per default è contenuta nel driver virtuale *wdctrl, che simula un
controller Western Digital, come si vede dalla riga
device=*wdctrl
nel file SYSTEM.INI della directory \WINDOWS (o equivalente)
Naturalmente, gli accessi al disco svolti da programmi a 16 bit non solo non hanno vantaggi
dall'accesso a 32 bit, ma in realtà ci rimettono qualcosa: infatti ogni accesso all' HD implica una
transizione 16->32 ed una da 32 a 16. Di conseguenza si rende necessario non solo un driver di
accesso al DISCO a 32 bit, ma anche un driver per l'accesso ai FILE in grado di sostituire l'IOSS
(Input/Output Subsystem) a 16 bit.
Dato che il driver BIOS-32 ed il driver DOS-32 devono sostituire le funzioni delle versioni a 16 bit, essi
devono essere sicurissimi di poterle sostituire al 100%. Quindi, se il driver DISK-32 per esempio
trovasse che il gestore di BIOS non è quello "standard" ben conosciuto, deve rifiutarsi di sostituirlo
(per questo motivo alcune disk caches, ed alcuni virus, impediscono l'accesso a 32 bit a Windows).
Se il BIOS viene, per esempio, sostituito da un driver Disk Manager per DOS, Windows non sarà in
grado di installare *wdctrl.
Ovviamente, un ALTRO gestore a 32 bit, che "conosca" QUEL particolare Disk Manager, ne sarà
invece capace; per questo gli hard disk vengono, di solito, forniti con piu' drivers (uno per DOS, uno
per Windows, ecc.) e per questo non è consigliabile mixare le versioni di questi ultimi.
Riassumendo quindi "accesso a 32 bit" non significa che il transfer rate del disco cambi (...magari
raddoppiando, dato che 32=16x2), ma che il disco viene gestito in un modo diverso e, sperabilmente, piu' efficace del default. Puo' benissimo darsi che un gestore super-avanzato a 16 bit possa superare
in prestazioni un gestore a 32 bit meno "intelligente".
Peraltro, c'è anche da sottolineare che, di per sè, l'indirizzamento LBA
non permette di superare il limite dei 528 milioni di byte visibili da DOS;
il DOS, infatti, continuerà a chiamare l'INT 13h per accedere ad HD, e
continuerà a passargli una tripletta
Il fatto che tale modifica dei parametri coincida con la selezione dell'LBA
porta spesso a credere che l'LBA stesso altro non sia che una diversa
traslazione dei soliti 3 parametri; in realtà si tratta semplicemente di
una coincidenza (alcuni Setup permettono anche di attivare separatamente
l'indirizzamento LBA e la traslazione dei parametri CHS prima descritta;
quest'ultima opzione viene in genere indicata con Large), in quanto
l'LBA in realtà non usa 3 parametri per indirizzare un settore, ma uno
solo. D'altronde, non tutti i sistemi operativi lo supportano in modo
diretto (OS/2, ad esempio, lo fa, il DOS no).
Interrupt
Indica una richiesta di attenzione inviata alla CPU.
Questa richiesta puó partire da un programma (interrupt software, INT, generalmente utilizzato dai
programmi DOS per chiamare i servizi del BIOS e del DOS stesso) o da una periferica (interrupt
hardware, IRQ; ad esempio quando il controller del disco è pronto per trasmettere il settore richiesto, fa
si' che l'host adapter asserisca l'IRQ 14 -se si tratta del canale primario-); analogamente, quando la
porta seriale è pronta per inviare un carattere, asserisce la propria linea IRQ (tipicamente IRQ 4 per
COM1, quella cui di solito si collega il mouse, e IRQ 3 per COM2, quella cui di solito si collega il modem).
Quando avviene un interrupt, la CPU interrompe la sua attività, salvando i contenuti dei registri interni;
dopodichè dedica la sua attenzione a ció che ha generato l'interrupt. Quando l'interrupt è stato servito, la
CPU riprende l'attività precedente (sempreché nel frattempo non ci siastato un altro interrupt).
CMOS RAM
E' una piccola RAM statica in tecnologia CMOS (basso consumo) alimentata da una batteria tampone,
che puó essere al Nichel-Cadmio (si ricarica automaticamente quando il PC è acceso) o al Litio (non
ricaricabile; comunque dura diversi anni). Contiene i dati sulla configurazione del sistema, e su data ed
ora.
LIMITE DEI 528 MB
Il DOS ha delle difficoltà intrinseche nella gestione di HD che superino i 504 MB (528 milioni di byte);
questo è dovuto ad un mix di limiti delle specifiche IDE, delle routine BIOS e delle funzioni DOS.
Il DOS accede alle funzioni piu' comuni dell' hard disk tramite una routine BIOS, l'INT 13h. Quando il
DOS chiama questa funzione, deve passare, tra le altre cose, la famosa tripletta CHS, ovvero numero
di cilindro, numero di testina, numero di settore. Il campo relativo al numero di cilindro è a 10 bit, il che
significa che il DOS puo' richiamare, al massimo, il cilindro numero 1023 (ovvero il 1024° cilindro: si
parte dal numero 0). Il campo relativo al numero di testine è a 8 bit, quindi il DOS puo' indirizzare fino a
256 testine; infine, per indicare il numero di settore all'interno di una traccia sono disponibili 6 bit, il
che significa 63 settori indirizzabili per traccia (sarebbero 64, ma per motivi tecnici si parte da 1
anzichè da 0).1024 cilindri 256 testine 63 settori
1024 cilindri 16 testine 63 settori
65535 cilindri 256 testine 63 settori
IDE / EIDE
Integrated Drive Electronics: dispositivo dotato di controller integrato.
EIDE: Enhanced IDE.
Accesso al disco a 32bit sotto Windows
di Leonardo Serni
[ Sommario | Redazione | Informazioni | Vai a... ]
BETA - la rivista ipertestuale tecnica, copyright © 1994-95
Luciano Giustini e Fernando Carello. Tutti i diritti riservati.