Articolo pubblicato sul n. 48 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nel gennaio 1986 Le memorie di massa Dopo aver visto in generale la struttura di un sistema di calcolo e un embrione di sistema operativo capace di far avanzare in perfetto sincronismo processore, stampante e lettore di schede di un calcolatore, questo mese daremo una rapida scorsa ai principali dispositivi di memorizzazione non volatile. Parleremo delle varie memorie di massa, chiamate così proprio in virtù della gran mole di dati che possono mantenere permanentemente a un costo per bit assai contenuto. Le memorie secondarie Assunto che la normale memoria di un calcolatore atta a mantenere i programmi in corso di esecuzione sia la memoria principale, d'ora innanzi indicheremo con memoria secondaria un qualsiasi dispositivo di memorizzazione non volatile. Sono detti così proprio in virtù del fatto che una informazione, una volta registrata resta lì finché non si decide di cancellarla. Tutti i dispositivi di memoria secondaria fanno uso, per "ricordare" quanto inserito, di una ben nota proprietà fisica della materia detta magnetizzazione. Grazie a una testina di lettura/scrittura e ad un opportuno supporto ricoperto di materiale magnetico, il dispositivo magnetizzando o meno le areole del supporto scrive (per poi rileggere quando gli sarà chiesto) le informazioni che deve conservare. Concettualmente i vari dispositivi funzionano tutti nel modo appena descritto: le differenze corrono solo tra tipo di testina e tipo di supporto usato. Un altro aspetto comune a tutte le memorie secondarie, è il loro costo per bit memorizzabile molto contenuto se paragonato a quello di una memoria principale. Infatti, a causa dei meccanismi necessari al funzionamento della memoria secondaria (meccanismi per spostare la testina e/o il supporto magnetico) la velocità di accesso alle varie informazioni memorizzate è assai bassa, e se non fosse per il loro costo contenuto nessuno si sognerebbe mai di realizzarle. Abbiamo visto infatti che esistono anche memorie principali non volatili (a nucleo e a bolle magnetiche) ma evidentemente non conviene troppo fare (né s'è mai visto) un calcolatore senza nastri, dischi o tamburi. Proprio di questi tre tipi di unità ci accingiamo ora a commentarne il funzionamento. Unità a nastro magnetico Abbiamo appena detto che le memorie secondarie, a fronte di un costo per bit molto più abbordabile, contrappongono una velocità di accesso più bassa. Anche nell'ambito dei vari dispositivi è possibile stabilire una classificazione in base alla lentezza degli stessi o al loro costo. In altre parole anche per le varie memorie secondarie più un dispositivo è veloce più costa e viceversa. A seconda dell'uso che se ne dovrà fare si deciderà di comprare un tipo di dispositivo o un altro. Le unità a nastro magnetico sono le più economiche tra le memorie, ma anche le più lente, proprio in virtù del tipo di supporto usato. Strutturalmente assomigliano molto ai normali registratori a bobina per musica, in voga alcuni anni fa. Troviamo due belle pizze di nastro, con al centro la testina di lettura e scrittura, accompagnata ovviamente da un po' di rotelle, pulegge e rimandi per un corretto funzionamento. La lentezza di tali dispositivi, non sta tanto nella vera e propria velocità di scrittura sul nastro, quanto nel fatto che quest'ultimo può anche essere lungo chilometri e l'informazione che cerchiamo è posta qualche centinaio di metri più in là. Come per cercare una data canzone, non ci resta che far avanzare o riavvolgere il pezzo di nastro che in quel momento non ci interessa per posizionarci nel punto voluto. E' ovvio che con tale sistema ricercare un'informazione diventa un'operazione costosissima in quanto a perdita di tempo. Proprio in virtù di questo, le unità a nastro vengono usate solo per accessi sequenziali ai dati: le varie informazioni sono registrate in un certo ordine e lette nello stesso ordine. Diamo ora uno sguardo alla figura 1: è mostrato il modo in cui sono memorizzati i vari byte. Il nastro è suddiviso longitudinalmente in 9 tracce e i byte sono scritti (dalla relativa testina a 9 canali) trasversalmente, l'uno dopo l'altro. Dato che, se il nastro è fermo, prima di iniziare a registrare occorre che questo raggiunga una certa velocità, i byte non vengono scritti uno alla volta (facendo fermare ogni volta il nastro), ma raggruppati in blocchi di registrazione prima del trasferimento (tutto d'un fiato) di un intero blocco. Lo spazio di nastro inutilizzato tra un blocco e il successivo, detto gap, è dovuto proprio al fatto che il nastro si è fermato per poi ripartire per una nuova registrazione. E' bene non fare blocchi troppo piccoli, proprio per lo spreco di supporto ad ogni fermata. La stessa dimensione del blocco coincide, viceversa, con la minima quantità di informazione trasferita in memoria centrale per ogni operazione di lettura. Unità a dischi magnetici Per ovviare all'inconveniente della bassa velocità di accesso dei nastri magnetici, il passo successivo consiste nel disporre il materiale magnetico su un supporto di diversa forma, usando di conseguenza un diverso tipo di testina. Nascono così i dischi magnetici per la memorizzazione veloce di programmi e/o dati di un calcolatore. Come avrete notato, ancora una volta l'informatica si rifà ai supporti musicali: ora abbiamo anche dischi (peraltro delle dimensioni di un LP). Ma non finisce qui: vedremo nel prossimo paragrafo i tamburi magnetici e manco a farlo apposta, diversi decenni fa esistevano grammofoni che leggevano la musica da appositi cilindri con su inciso un normalissimo solco. E ancora: il massimo della musica incisa oggi è rappresentato dai famosi Compact Disc a lettura laser: beh, lo sapete che dischi del genere sono usati anche dai calcolatori per contenere dati, per di più da un bel po' di anni? Comunque, disquisizioni informatico-musicofile a parte, in figura 2 è mostrato schematicamente un disco per calcolatore. Possiamo subito notare alcune cose: sono divisi in alcune tracce, ognuna delle quali in più settori. Le tracce sono tra loro concentriche, mentre i settori sono praticamente gli spicchi di cerchio visibili in figura. Come per i nastri l'informazione è suddivisa in vari blocchi separati tra loro da un gap (spazio di disco non utilizzato logicamente). La linea radiale più marcata (un gappone) è utilizzata per segnare un inizio e una fine di ogni traccia. Così, posto che le tracce sono numerate partendo dall'esterno e che i settori si contano in senso orario a partire dal gappone, il blocco in figura contrassegnato dall'asterisco (lì a dire il vero sembra più un ragnetto) è posizionato sulla quarta traccia, secondo settore. Il perché siano dispositivi più veloci dei nastri, risiede nel fatto che per passare da un blocco a un altro non bisogna svolgere o riavvolgere centinaia di metri di supporto, ma semplicemente spostare la testina da un punto a un altro. Tale operazione può anche essere abbastanza rapida, roba di decimi di secondo. Dimenticavamo un particolare, il disco gira continuamente, sia che si legga, che si scriva o che si stia in attesa di ordini. In figura 3A è visibile un primo tipo di testina, detta mobile, proprio in virtù del fatto che può spostarsi radialmente sulla superficie del disco mentre questo gira, per raggiungere un determinato blocco. Tutti i blocchi sono contrassegnati dal loro indirizzo: in parole povere, in testa ad ogni blocco c'è scritta la sua posizione, ad esempio traccia 4 settore 2. In questo modo per la ricerca di un determinato blocco, l'unità dapprima sposta la testina sulla traccia opportuna (ricordatevi che il disco gira sempre) per poi aspettare che il blocco cercato gli passi sotto. Prima di passare alle varie strategie adoperate per rendere i dischi magnetici ancora più veloci, descriviamo una importante operazione da compiere una sola volta, prima di iniziare ad usare un disco nuovo, cioè mai usato (e naturalmente con niente scritto sopra) : la formattazione del disco. Infatti, un disco appena acquistato è semplicemente un supporto circolare con sopra il materiale magnetico. Se noi dessimo direttamente un comando del tipo scrivi sul blocco terza traccia quinto settore, l'unità non trovando né gap né l'intestazione dei blocchi, non saprebbe dove cercare la posizione voluta. L'operazione di cui sopra, serve appunto per creare tutti i blocchi sul disco (ovviamente vuoti) scrivendo i vari indirizzi nelle relative posizioni. A questo punto si potrebbe obbiettare: perché non vendono i dischi già formattati? La risposta è semplice: sebbene i dischi siano uguali per più dispositivi di memorizzazione (a disco) reperibili sul mercato, non sempre il tipo di formattazione è la stessa. Può benissimo capitare che un'unità di una certa marca suddivida un disco in 100 tracce e 50 settori, un'altra ditta preferisca un tipo di formattazione a 80 tracce e 40 settori un po' più grandi. In questo modo una fabbrica di soli dischi magnetici può produrre un particolare tipo di disco, non preoccupandosi su quale dispositivo girerà, ma semplicemente basterà che rispetti le caratteristiche puramente dimensionali. Velocizziamo i dischi Abbiamo già detto che le unità a dischi, sono molto più veloci, a causa della forma del supporto magnetico, delle unità a nastro. Ciò vuol dire che se noi prendiamo il più veloce dispositivo a nastri, esisterà certamente un dispositivo a dischi che lo batte in quanto a tempi di accesso. Ripetiamo: è insito nel tipo di supporto. Prendiamo ora la più veloce unità a dischi, del tipo descritto nel paragrafo precedente e mostrato in figura 3A. Per migliorare le prestazioni, possiamo procedere in diversi modi: il primo, mostrato in figura 3B, consiste nel dotare l'unità di più testine (una per ogni traccia) fisse. Sono fisse proprio per il fatto che non è più necessario spostarsi per posizionarsi su di una traccia dato che si ha sempre la traccia in linea semplicemente azionando la corrispondente testina. Le unità siffatte sono più veloci proprio perché per trovare un dato blocco occorre solo aspettare che questo passi sotto. Chi ha dimestichezza con i grafici dia uno sguardo alla figura 4. E' mostrato l'andamento dei byte trasferiti in funzione del tempo. Come si vede, c'è sempre un certo tempo che trascorre prima che i byte vengano trasferiti all'unità centrale che li ha richiesti. Tale tempo corrisponde alla ricerca del blocco interessato. Nel primo caso (fig. 4A) stiamo usando un'unità a dischi con testina mobile; nel secondo caso (fig. 4B) a testina fissa. Si nota come nel secondo diagramma il tempo, per così dire, perso sia inferiore. Un ulteriore miglioramento delle prestazioni (che però comincia a costare troppo) consiste nel mettere più bracci di lettura ognuno dei quali a più testine disposti radialmente ed equidistanti tra loro. In questo modo, oltre a non esserci perdita di tempo per cercare la traccia, il tempo per trovare il blocco risulterà notevolmente ridotto in quanto il primo braccio che lo trova lo può trasferire. Per fare un esempio assai semplice, se disponiamo di un solo braccio al massimo dovremo aspettare un giro del disco; se ne mettiamo due, uno di fronte all'altro, dovremo aspettarne al più mezzo; se mettiamo tre bracci posti a 120 gradi l'uno dall'altro aspetteremo al più un terzo di giro e così via. Per applicazioni in cui necessita una gran quantità di spazio memorizzabile e generalmente le operazioni di lettura e scrittura coinvolgono non solo tutti i blocchi di una traccia ma magari quelli di due o tre tracce, una possibile soluzione è mostrata in figura 3C. Vengono usati delle vere e proprie pile di dischi, incisi su tutt'e due le facce (ad eccezione delle due esterne). Un insieme di braccetti mobili, uno per ogni faccia provvede alle operazioni di lettura e scrittura. Grazie a questi dispositivi è possibile leggere e scrivere su più tracce senza spostare le testine: basta utilizzare le stesse tracce di dischi diversi. Tamburi magnetici L'ultimo dispositivo che descriveremo in questa sede, è l'unità a tamburo mostrato schematicamente in fig.5. Come è facile notare, si tratta si un semplice cilindro sulla cui superficie laterale è disposto il materiale magnetico. Come i dischi, anche il tamburo gira continuamente ed è suddiviso in tracce, sulle quali vengono incisi i vari blocchi separati come sempre da un gap. Infine una serie di testine fisse (una per ogni traccia) ha l'effettivo compito di eseguire le operazioni di lettura e scrittura dei blocchi. Dal confronto con un disco magnetico (fig.2) si evince in primo luogo che le tracce di un tamburo sono tutte della stessa lunghezza, con conseguente spazio costante per la memorizzazione dei blocchi. Nei dischi magnetici infatti, se si vuol mantenere costante il numero e la capacità dei blocchi nelle varie tracce bisogna che la densità di scrittura sia maggiore nei blocchi interni che in quelli periferici. In altre parole accade quasi sempre che o nei blocchi interni l'informazione sia pericolosamente troppo compressa o che in quelli esterni vi sia in un certo senso spazio sprecato oppure che le tracce esterne siano effettivamente più capienti di quelle esterne. Per quel che riguarda il funzionamento dei tamburi, non siamo molto lontani dai dischi con testine fisse: infatti per cercare un dato blocco di una traccia non occorre altro che aspettare che questo passi sotto la testina relativa alla traccia stessa. Anche qui, per migliorare le prestazioni è sufficiente munire l'unità di più serie di testine, per ridurre il tempo di attesa del blocco. Conclusione Vorremmo a questo punto tirare un po' le somme su quanto detto nei primi tre articoli di Appunti di Informatica. Dovrebbe essere chiaro che la tendenza pricipale non è tanto quella di realizzare calcolatori quanto più potenti possibile né in un certo senso realizzare calcolatori di per sé ultraveloci. Nel primo caso infatti si dimostra che con un semplice nastro e con un agente di calcolo per niente complicato (la famosa Macchina di Turing) si riesce a risolvere qualsiasi problema risolubile (non è un rigiro di parole, è una cosa seria) ossia non serve ricorrere ad un IBM della serie 370. Nel secondo caso è più utile sfruttare al massimo le attuali tecnologie per realizzare "normali" calcolatori e cercare di farli funzionare nel migliore dei modi (leggi: senza fargli mai perdere tempo). Un esempio l'abbiamo visto lo scorso mese col sistema operativo Batch che ottimizza l'uso da parte dell'unità centrale di una stampante e di un lettore schede. Questo mese abbiamo visto cosa "si sono inventati" per non aspettare qualche decimo di secondo in più l'informazione in arrivo da una periferica quale l'unità a nastri magnetici. Nei prossimi numeri vedremo dell'altro, il tutto per il fine primo: "mai far aspettare un computer". Infatti una è la peculiarità di tali macchine: la loro incredibile velocità, se paragonata a quella umana, per compiere operazioni abbastanza ripetitive. Se perdiamo tempo il computer, da "cretino velocissimo" diventa "cretino e basta" e allora, credetemi, è meglio buttarlo via. Semplice, no? Impaginato originale... Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui |