[Rubrica Hardware] coordinamento di Fernando Carello

Uno sguardo al Setup

Terza parte (Seconda parte | Prima parte)

Chipset Setup: stati di attesa, recovery time, DRAM refresh; T/R di VLB e PCI

di Fernando Carello

La maggior parte dei Setup recenti prevede una sezione denominata "Chipset Features"; le voci in essa contenute permettono di programmare il chipset della scheda madre al fine di impostare parametri quali i timing sulla RAM e sul bus, la strategia di funzionamento della cache, ecc.

Le opzioni riguardanti il chipset setup sono ben poco standard, il che significa che alcune di esse potrebbero non essere presenti sul vostro PC: alcune potrebbero essere state "nascoste" all'utente (allo scopo di evitare che persone inesperte possano compromettere la stabilità del sistema agendo su voci "delicate"); altre, semplicemente, potrebbero non essere previste dal chipset adottato dal costruttore della scheda madre; infine, la stessa opzione può essere denominata in modo diverso da setup a setup. Questo articolo cercherà di elencare e spiegare le opzioni che si ritrovano più frequentemente, usando i nomi più comuni: ma non può in alcun modo essere una guida esauriente.

Un'opzione spesso presente è denominata auto configuration.
Quando è attiva, il chipset imposta automaticamente alcuni parametri in base alla configurazione del PC; ad esempio, regola la quantità di stati di attesa sulla DRAM in base alla velocità di quest'ultima e della CPU. A volte, la velocità della DRAM è determinata tramite un test eseguito sul primo banco durante il POST; per questo motivo si consiglia, nel caso si avessero più SIMM con velocità tra loro diverse, di installare la più lenta sul primo banco.
L'auto-configuration è un'opzione molto utile quando si cambia configurazione al PC (es. un upgrade di CPU) e quando si installa per la prima volta una nuova scheda madre; tuttavia, non sempre i parametri impostati in questo modo risultano i migliori per ciò che riguarda le prestazioni del sistema. Dunque, una volta acquisita familiarità con il Setup converrà tentare un "fine tuning" a mano, disabilitando l'auto-configuration.

8, 16 bit I/O Recovery Time.
Questa voce, spesso presente, permette di regolare il tempo di recupero minimo che intercorre tra due consecutive operazioni di I/O, misurato in numero di cicli di bus ISA. Chiaramente, più bassi sono i recovery time più frequenti possono essere le operazioni di I/O sulle periferiche ISA; questo ha un sensibile impatto sulle prestazioni di periferiche veloci il cui accesso avvenga in modalità PIO (vedi BETA 0395 "Uno sguardo al Setup -seconda parte"), come buona parte degli hard disk.

Local Bus Ready.
Questa voce, tipicamente con valori 1T, 2T, 3T, serve a regolare gli stati di attesa presenti durante gli accessi al Local Bus; è più probabile trovarla su sistemi equipaggiati con VESA Local Bus piuttosto che PCI.
Su sistemi aventi clock base di 33 MHz o meno, il settaggio più appropriato è 1T: ciò equivale a dire che il VESA Local Bus può effettuare uno spostamento di dati (tipicamente 32 bit, ma possono anche essere 16 o addirittura 8) per ogni ciclo di clock base.
Su sistemi aventi clock base di 40 o 50 MHz, può essere necessario interporre uno stato di attesa, regolando quindi su 2T; vale la pena sottolineare come in tal caso il transfer rate si riduca sensibilmente (v. Transfer Rate del VLB ). Alcune schede periferiche VLB (schede video, HDD adapters) riescono a funzionare correttamente anche a 50 MHz senza stati di attesa; tuttavia, riuscire ad abbinare scheda madre e schede periferiche di tal fatta non è facile...
A volte, l'opzione appena descritta non si trova nel Setup, bensì è controllata da un jumper sulla scheda madre.

Un'altra opzione abbastanza diffusa è quella relativa al refresh della DRAM .
Fino a qualche anno fa, il refresh della DRAM (che avviene tramite il canale DMA 0) aveva un impatto non trascurabile sulle prestazioni del sistema, assorbendo dal 5 al 10% delle risorse CPU. Oggi esistono metodi di refresh più sofisticati, che hanno un impatto minimo sulle prestazioni; l'Hidden Refresh è il più diffuso.
Questa tecnica consiste nell'effettuare il refresh non su tutti i banchi di DRAM contemporaneamente, come avviene di solito, bensì solo su quelli non usati dalla CPU in quell'istante. In linea di massima, non ci sono controindicazioni all'abilitazione dell'Hidden Refresh; tuttavia, durante l'installazione di nuovi sistemi operativi è sempre consigliabile caricare i BIOS defaults (opzioni predefinite in fabbrica), e non sempre l'Hidden Refresh è attivo per default.
Un'alternativa meno sofisticata è lo Slow Refresh.
Consiste nel diminuire la frequenza di refresh della DRAM, in modo tale che il "furto di cicli" (cicli durante i quali la CPU non può accedere alla DRAM) sia meno pesante. La quasi totalità delle DRAM moderne può accettare refresh più distanti tra loro senza perdere dati; tuttavia, si osservano spesso effetti collaterali all'adozione dello slow refresh, come: rallentata (o addirittura inesistente) risposta dei floppy drive, problemi di DMA con i tape streamer, ecc.


TRANSFER RATE DEL VESA LOCAL BUS

Il VESA Local Bus è un'estensione del CPU bus 386/486, dal quale eredita timing e prestazioni.
Le specifiche indicate dalla VESA parlano di un clock massimo di 50 MHz; all'atto pratico, tuttavia, i clock più comuni sono 33 e 40 MHz.
Cominciamo con l'analizzare il caso di VLB su MB 386 e similari (es. 486 DLC).
In questi sistemi (a dire il vero poco diffusi, con l'eccezione della MB OPTi-495SLC che ha avuto un buon successo commerciale), sia le letture che le scritture sul bus dati avvengono ogni 2 cicli di clock (sempreché non siano stati aggiunti stati di attesa); dunque, una MB avente clock di 33 MHz sarà caratterizzata da un transfer rate massimo su VLB pari a 66 MB/s (1 operazione di I/O a 32 bit ogni 2 cicli di clock); una MB a 40 MHz potrà contare su un VLB capace di 80 MB/s di picco.
Se però aggiungiamo uno stato di attesa, avremo un'operazione di I/O ogni 3 cicli di clock: il T/R massimo si abbassa rispettivamente a 44 e 53 MB/s.
Diverso il caso di MB 486: questa CPU, infatti, può eseguire operazioni di I/O in burst mode, durante un cache line fill. Supponendo che la periferica VLB da cui, ad esempio, si voglia leggere sia "cached" (gli indirizzi di memoria ad essa corrispondenti sono coperti dalla cache memory), e che la lettura richiesta non venga soddisfatta dalla cache (cache miss, e quindi cache line fill), verranno prelevate dal VLB 4 longword in 2+1+1+1 cicli di clock (nell'ipotesi che non vi siano stati di attesa), il che porta il T/R massimo all'interno di un burst (media sul trasferimento delle 4 longword) a 106 MB/s con clock a 33 MHz, e 128 MB/s con clock a 40 MHz; in particolare, sulla 2^, 3^ e 4^ longword si hanno i picchi massimi teorici di, rispettivamente, 132 e 160 MB/s; per le operazioni non-burst, valgono le indicazioni fatte nel caso dei 386 (66 e 80 MB/s di T/R massimo). Risulta dunque evidente come sia fuorviante affermare che "il VLB ha un T/R massimo di 132 MB/s a 33 MHz, e 160 MB/s a 40 MHz", come a volte si legge.
Supponendo di aggiungere uno stato di attesa, avremo che la lettura burst verra' completata in 3+2+2+2 cicli di clock, portando il T/R massimo di un burst a 59 MB/s e 71 MB/s, rispettivamente per 33 e 40 MHz di clock; il T/R massimo non-burst scende anch'esso a 44 e 53 MB/s.
Vale la pena prendere in esame anche il caso, pur poco diffuso, di sistemi VLB a 50 MHz.
Questi sistemi, specie se utilizzano più di una periferica VLB (es. scheda video + HD adapter), lavorano "ai limiti" delle specifiche; è tuttavia interessante studiarne le prestazioni massime teoriche.
Il T/R massimo all'interno di un burst è, in questo caso, di ben 160 MB/s nell'ipotesi (assai difficilmente verificata nella pratica) di funzionamento a 0 stati di attesa; scende però a 89 MB/s se è presente 1 stato di attesa: risulta dunque evidente come un sistema VLB a 50 MHz con 1 stato di attesa abbia un T/R massimo inferiore a quello di un sistema a 33 MHz 0 stati di attesa.

Una tabella indicativa:

wait states01
clock, MHz334050 334050
T/R durante il ciclo burst, MB/s106128160 597189
T/R di picco nel burst, MB/s 132160200 66 80100

Premesso che il bus PCI sarà oggetto di un prossimo articolo su BETA, sarebbe interessante confrontare i T/R di questo e del VLB; tuttavia, la maggiore complessità del PCI, e in particolare la presenza di meccanismi quali il posted write, il CPU-to-PCI e PCI-to-CPU burst, le modalità sincrona e asincrona (tuttora quasi inapplicata) ecc. rendono arduo definire in modo preciso il Transfer Rate di tale bus.
In linea generale, anche qui abbiamo trasferimenti di tipo burst e trasferimenti di tipo non-burst; nel secondo caso, a parità di clock e di stati di attesa, si può grossolanamente affermare che il T/R massimo del PCI è pari a quello del VLB: ciò che rende migliore il PCI rispetto al VLB sono caratteristiche quali la migliore gestione degli IRQ, il sistema di arbitraggio del bus, la presenza di modi DMA Bus Mastering avanzati, la possibilità di "Plug & Play", ecc.


DRAM REFRESH

Le DRAM (Dynamic RAM) basano il proprio funzionamento sulla presenza di una capacità parassita (denominata "soft node") tra le giunzioni dei transistor che le compongono. Questa capacità immagazzina una certa quantità di carica, mantenendo così la tensione precedentemente fornita al transistor, e realizzando quindi il desiderato effetto memoria. Tuttavia, la tensione non può essere mantenuta a tempo inderminato: la capacità tende infatti a scaricarsi attraverso le giunzioni stesse (che hanno una resistenza non infinita); per evitare che perda il proprio contenuto di carica, deve perciò essere "rinfrescata" periodicamente. A questo pensa il circuito di refresh.
La tecnologia DRAM permette di utilizzare un ridotto numero di transistor per realizzare una cella di memoria, rendendo possibile la realizzazione di circuiti di memoria aventi un rapporto spazio/capacità molto favorevole, il che abbassa notevolmente i costi di produzione: ciò ha determinato il successo commerciale di questa architettura; tuttavia, l'"inerzia" dovuta alla presenza della capacità parassita limita in modo sensibile la velocità di commutazione della DRAM, al punto che è assai difficile trovare in commercio DRAM aventi tempo di accesso inferiore ai 60 ns (i costi di produzione salirebbero troppo). Per sopperire alle carenze prestazionali della DRAM (usata come memoria principale), si interpone tra essa e la CPU una certa quantità di memoria veloce agente come buffer, denominata cache memory (il funzionamento della cache memory sarà argomento di un prossimo articolo); tale memoria deve poter rispondere alla CPU in tempi rapidi, possibilmente senza dover interporre stati di attesa; per contro, costi e ingombri sono meno importanti, vista la ridotta capacità richiesta. A questo scopo si usa la
SRAM .


SRAM: Static RAM

Il funzionamento della SRAM è essenzialmente riconducibile a quello di un flip-flop: a differenza della DRAM non abbiamo, quindi, soft-node; questo richiede un numero maggiore di transistor, ma elimina la necessità del circuito di refresh (una cella SRAM mantiene il dato fintantoché viene alimentata) e permette tempi di risposta nettamente migliori (dai 15 ns dei chip commerciali per la cache esterna dei PC ai 5-6 ns delle cache per calcolatori più avanzati); nel caso dei PC di classe Pentium, la necessità di rispondere senza stati di attesa ai burst della CPU (cache sincrona) ha stimolato lo sviluppo di cache pipelined burst (che analizzeremo più in dettaglio in un successivo articolo), che pur senza utilizzare SRAM ad altissima velocità riescono, sfruttando una particolare parallelizzazione degli accessi, a fornire prestazioni molto superiori ai classici chip SRAM "asincroni" da 15 ns.

Copyright © 1996 Beta Working Group. Tutti i diritti riservati.