[ Sommario | Redazione | Informazioni | Vai a... ]

BETA /0295 - ARTICOLI


a cura di Fernando Carello


Uno sguardo al SETUP

di Fernando Carello


Introduzione

A partire da questo numero di BETA inizia una serie di articoli dedicati al SETUP, il programma residente per la configurazione del PC. Questa serie non vuole essere una vera e propria guida all'uso del setup (peraltro sarebbe quasi impossibile: praticamente ciascun modello di PC ha opzioni diverse dall'altro, a parte un certo insieme di base), ma piuttosto una panoramica sulle caratteristiche hardware degli attuali PC prendendo spunto dalle opzioni presenti nella maggior parte dei setup. Si parlerà quindi di LBA, block mode, clock vari, shadow RAM, cache memory, DRAM speed e cosí via; ció non toglie che si cercherà, ove possibile, di fornire qualche suggerimento per settare correttamente i parametri del setup (e magari per effettuare qualche piccolo upgrade "mirato"); tuttavia l'idea è di aiutare a comprenderne meglio il significato. L'articolo presente in questo numero, dopo una breve introduzione al BIOS, tratta la parte piú "standard" del setup: quella che riguarda il settaggio dei parametri degli hard disk.


Uno sguardo al Setup

(prima parte)

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


Che cos'è il Setup ?

La maggior parte dei PC permette, premendo un'opportuna combinazione di tasti durante il boot (tipicamente o ), di accedere ad un insieme di menú di configurazione, appunto il SETUP: si tratta di un programma residente in
ROM (la stessa che ospita il BIOS) che permette di modificare alcuni parametri riguardanti la configurazione del sistema. Questi dati sono memorizzati in una memoria CMOS alimentata a batteria (la stessa che mantiene la data e l'ora, per intenderci), cosicché non vengono persi allo spegnimento della macchina.

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.

Configurare i parametri per gli HD. Le opzioni: CHS, LBA. Il limite dei 504 MB

Iniziamo a dare un'occhiata alla prima sezione: la parte piú interessante è quella relativa alle unità HD. La maggior parte dei BIOS prevede solo 2 unità: C e D. Questo non significa che non sia possibile montare un maggior numero di HD, ma solo che questi dovranno essere pilotati da un proprio BIOS, mancando il supporto da parte della Mother Board. Per es. i "controller" SCSI (vedi anche "Lo standard SCSI" di Andrea Nenni su questo stesso numero) possono supportare fino a 7 HD, quelli IDE / EIDE con BIOS fino a 4.

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.


La prima tappa del nostro viaggio è conclusa: a partire dal prossimo articolo esamineremo alcune opzioni presenti, in genere (visto che la seconda parte del Setup è "meno standard" della prima) nel menú di configurazione avanzata; in particolare, esamineremo gli altri settaggi riguardanti gli HD (multi sector mode, advanced PIO mode, ecc.) .. sarà uno spunto interessante per parlare degli EIDE.

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


LANDZONE

Indica la zona di parcheggio delle testine dell'HD. Con i moderni HD, dotati di autoparking, tale indicazione non è in genere importante; è comunque prassi consigliata settare un numero pari al numero massimo di cilindro dell'HD + 1 (es: per un HD con 1000 cilindri si pone in genere LANDZONE = 1001).


CHS

Cylinder, Head, Sector.

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.


LBA

Logical Block Address.

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.
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 , con il numero di cilindro che non potrà comunque superare 1023; tuttavia, in corrispondenza della selezione dell'indirizzamento LBA, nei BIOS setup si nota un dimezzamento del numero dei cilindri e un raddoppio del numero delle testine (in alcuni casi, i cilindri vengono divisi per 4 e le testine moltiplicate per 4); questo permette di superare il problema.
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).

Riassumendo, il DOS potrebbe chiamare l'INT 13h per un massimo di:

1024 cilindri 	 256 testine 	 63 settori

Dal canto suo, i limiti combinati BIOS CHS / IDE portano a:

1024 cilindri	 16 testine	 63 settori

che diventano, accoppiando BIOS recenti e HD ATA-2:

65535 cilindri	 256 testine	 63 settori

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.


IDE / EIDE

Integrated Drive Electronics: dispositivo dotato di controller integrato. EIDE: Enhanced IDE.

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.


Accesso al disco a 32bit sotto Windows

di Leonardo Serni

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


[
Sommario | Redazione | Informazioni | Vai a... ]
BETA - la rivista ipertestuale tecnica, copyright © 1994-95 Luciano Giustini e Fernando Carello. Tutti i diritti riservati.