![]()
Ancora su hard disk e DMAAttiviamo il DMA Bus Mastering!
di Fernando Carello
Riassumendo brevemente, i moderni Hard Disk con interfaccia EIDE possono funzionare con due diversi protocolli di trasferimento dati: il PIO (Polled Input Output) e il DMA (Direct Memory Access). Il primo necessita di una partecipazione attiva della CPU all'intero trasferimento, per cui, pur garantendo un Transfer Rate molto alto (vicino a quello ottenibile via DMA), tende a caricare molto il sistema: specie se i timing sono molto spinti (PIO mode 4), la potenza di elaborazione di una moderna CPU è in buona parte assorbita dalla sola gestione dell'hard disk.
Il secondo protocollo (DMA) permette invece di gestire il trasferimento come un
"affare privato" tra l'host di periferica e la memoria centrale, impegnando la CPU solo in minima
parte. Il Bus Master DMA supera queste limitazioni, ma la necessità di implementare, su ogni periferica Bus Mastering, un'elettronica di controllo di una certa rilevanza atta a gestire questo protocollo, ne ha finora limitato l'adozione a sistemi high-end (es. adapters SCSI di fascia alta, schede di rete di qualità); un rappresentante tipico è stato per anni l'host SCSI Adaptec 1540/1542 (ISA).
Con l'avvento del chipset Intel Triton 82430 FX per mother board PC Pentium PCI, tuttavia, le cose
sono cambiate: uno degli integrati costituenti il set era il PIIX "82371 FB", chip deputato
tra le altre cose a gestire fino a 4 unità ATA con modi PIO 4 e Bus Master DMA Multiword 2.
Incredibilmente, tutte queste potenzialità sono state finora assai poco sfruttate:
l'incomprensibile atteggiamento di Intel, che non ha mai fornito di serie driver "ufficiali" per i suoi chipset,
la finora scarsa diffusione, su PC, di sistemi veramente multitasking in grado di trarre
il massimo giovamento da una gestione DMA B.M. dei dischi, ed infine la poca sensibilità dimostrata
dalle riviste del settore verso l'argomento (il che ha portato a una scarsa informazione
nell'utenza media) hanno fatto sì che ancora oggi la maggior parte dei PC utilizzi i modi PIO
3 e 4 per gestire il traffico dei dati su disco.
Anzitutto, naturalmente, occorre assicurarsi di avere una mother board Pentium equipaggiata con chipset
Intel Triton o Triton II, o una mother board Pentium Pro equipaggiata con chipset Intel Natoma. Vorrei sottolineare che utilizzare le modalità di trasferimento DMA Bus Mastering non comporta necessariamente un miglioramento nelle prestazioni dei dischi (a volte si nota, anzi, un lieve peggioramento, dovuto al fatto che alcuni hard disk sono più veloci in PIO che in DMA); tuttavia, l'alleggerimento del carico sulla CPU dovrebbe, se siete utenti avanzati di sistemi multitasking, compensare abbondamentemente.
A questo punto si può entrare nel vivo: procurarci i driver e installarli sotto
OS/2, Linux e Windows NT.
Installazione dei driverQuesto Sistema Operativo, tecnicamente molto sofisticato, ha sempre avuto nel supporto ATA uno dei suoi punti deboli: le prestazioni non eccellenti del driver di serie (IBM1S506.ADD) non possono che penalizzare un sistema nato per il multitasking, con un evoluto uso della memoria virtuale.
Per OS/2 sono reperibili due distinti driver per Intel Triton: i "Triones" (i primi ad essere
apparsi) e gli Intel "PIIXIDE", arrivati più di recente. Partiamo dai Triones.
L'installazione è molto semplice: scompattato il pacchetto e letto attentamente il README, si
copia (per comodità) il file BASEDEV=IBM1S506.ADDcon la: BASEDEV=TRIOS2.ADDAl successivo reboot, tutto dovrebbe funzionare; tuttavia, non sempre la routine di autodetect di questi driver funziona correttamente, e potrebbe accadere che un hard disk perfettamente in grado di supportare un modo DMA venga invece configurato in PIO: per evitare ciò (sempre se si è assolutamente sicuri che il proprio hard disk supporti i modi DMA), è possibile "forzare" il driver a funzionare con un certo protocollo. La lettura del README che accompagna il pacchetto è d'obbligo. Qui mi limito ad un esempio: supponiamo di avere un hard disk ATA-2 settato come Master del canale IDE Primario, e che si voglia forzarlo a funzionare in Bus Mastering DMA Multiword 2. Dovremo specificare: BASEDEV=TRIOS2.ADD /PM dma=MW2Per controllare il corretto funzionamento del driver, basterà aprire l'utility CPU Monitor e osservare il grafico, illustrante la percentuale di utilizzo della CPU, durante il trasferimento di un grosso file su disco. Per riferimento, su un sistema Triton Pentium 100 con hard disk Quantum Fireball 1280A il carico CPU durante la copia di un grosso file è sceso dal 55% al 20% ...
Vanno segnalate alcune idiosincrasie tra i Triones ed alcuni CD-ROM ATA (quelli connessi
alle stesse interfacce degli hard disk): in alcuni casi, si sono verificate delle
incompatibilità risoltesi solo con il ripristino del vecchio Intel PIIXIDE
La presa di contatto è subito ostica: i driver sono "confezionati" in un pacchetto
BASEDEV=IBM1S506.ADDcon: BASEDEV=PIIXIDE.ADDnonché: BASEDEV=IBMIDECD.ADDcon: BASEDEV=PIIXIDE.FLTAl successivo reboot tutto dovrebbe funzionare correttamente. C'è da notare che, rispetto ai Triones, questi driver permettono di specificare un minor numero di parametri: ad esempio, non è possibile "forzare" il modo di trasferimento, ma solo disabilitare il modo DMA (verrà usato il modo PIO più veloce tra quelli supportati dall'unità, tramite autodetect).
Nota: il IDE PIO mode: AUTOtutto funzionerà correttamente.
Linux
A partire dal kernel 2.0.0 (non contando le release "di sviluppo" 1.3.xx), l'IDE block driver di Linux
è stato notevolmente migliorato: tra le altre cose, è stato aggiunto il supporto per il DMA Bus Master
per l'Intel PIIX 82371.
Abilitare il supporto DMA nel kernel, però, non è sufficiente: occorre attivare la modalità DMA nel driver.
Per fare ciò, è necessaria un'utility denominata hdparm, che potete reperire presso i soliti nodi nel reparto
"kernel patches", es.: ftp://sunsite.unc.edu/pub/Linux/kernel/patches/diskdrives/ .
Questa utility agisce come "complemento" al driver IDE del kernel, attivandone alcune opzioni che, per vari motivi,
si è ritenuto rischioso abilitare di default.
Voglio sottolineare l'assoluta necessità di leggere attentamente la man page di hdparm, prima di provare
le opzioni proposte: è possibile che il vostro sistema non supporti tali opzioni, il che
potrebbe portare a casi di grave danneggiamento del file system con conseguente perdita di dati!
Windows NT 3.51 e 4.0
Windows NT può contare, come OS/2, su due serie di driver: Triones ed Intel.
In entrambi i casi sono stati segnalati episodi di malfunzionamento, con blocco del sistema al boot e/o problemi ai CD-ROM: è
quindi opportuno procedere con notevole cautela, predisponendo un hardware profile di sicurezza e quant'altro ritenuto opportuno
per risolvere eventuali problemi.
I driver Triones, ormai spesso distribuiti con le mother board, sono giunti alla versione 3.22 (Giugno 1996).
Scritti per NT 3.5 - 3.51, sono utilizzabili anche sul 4.0 (sempre con molta cautela). L'installazione è quella classica di un
adapter SCSI, passa quindi per il Pannello di Controllo, da dove selezionerete "Adattatori SCSI": chiederete di aggiungere
un adattatore SCSI di cui avete i driver, specificando la directory nella quale avrete copiato i driver Triones.
I driver Intel sono giunti, al momento in cui scrivo, alla versione 1.65; potrete reperirli, ad esempio, presso il sito della Asus:
http://asustek.asus.com.tw/FTP/ASUS/Drivers/
con nome del tipo bmide_nt.zip.
Scompattato il pacchetto ed avviato il programma di Setup (che si limita a creare un'opportuna directory contenente i file
necessari), seguite attentamente le istruzioni per il setup, comunque molto simili a quelle per i Triones; su alcuni sistemi (NT 4.0)
potreste ricevere un messaggio di errore del tipo
Un riscontro al System Performance Monitor (settore Administrative Tools ) ha evidenziato,
nel caso di un sistema con chipset Triton, CPU Pentium 100 e hard disk Quantum Fireball 1280A su NT 4.0 Server,
un abbassamento del carico CPU dal 65% al 25%, durante la copia di un grosso file. Tuttavia,
sullo stesso sistema è stata riscontrata una diminuzione del Transfer Rate, sceso da circa
1.8 a circa 1.4 MB/s, il che può indicare sia che il driver non ha ancora una buona efficenza,
sia che il sistema testato soffra di cali di rendimento in DMA sotto NT.
Fernando Carello è reperibile su Internet tramite la redazione, oppure sul sito di BETA all'indirizzo techcoord@beta.it |
Copyright © 1996 BETA. Tutti i diritti riservati.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |