2
L’architettura del computer e la CPU Obiettivi del capitolo • • • •
Mettere a confronto i vari tipi di computer. Descrivere il ruolo e il funzionamento della CPU. Spiegare come i dati vengono immagazzinati nella memoria del computer. Mostrare come si collegano i dispositivi esterni, per esempio la stampante o il mouse, alle porte del computer. • Spiegare come si possono migliorare le prestazioni del computer inserendovi schede di espansione e adattatori.
Sempre più piccolo, sempre più diffuso, sempre più connesso I primi elaboratori digitali apparvero una cinquantina di anni fa, anno più anno meno. I loro “cervelli”, cioè le unità centrali di elaborazione (CPU, Central Processing Unit), progettate su commissione e costruite manualmente, erano enormi e molto costosi. Poiché queste macchine si surriscaldavano molto facilmente, venivano tenute in ambienti con aria condizionata e dovevano essere raffreddate ad acqua come i motori delle auto. Erano talmente costose e complicate che venivano usate soltanto dalle grandi imprese o dai centri di calcolo delle università, e vi avevano accesso solo persone altamente qualificate. Gli altri impiegati le utilizzavano soltanto per inserirvi dei dati da elaborare (dati in ingresso o input) e per ritirare i lunghi tabulati stampati che costituivano il risultato della loro elaborazione (dati in uscita o output). Nel 1969 M.E. Hoff, ingegnere di una piccola azienda, la Intel, riuscì a ridurre le dimensioni delle imponenti CPU a quelle di un chip della grandezza di un’unghia che, al contrario delle prime, costruite in esemplari unici, era estremamente facile riprodurre. Si trattava del primo microprocessore che, nonostante non fosse di uso generale come quelli odierni, ha il merito di aver dato il via a una vera e propria rivoluzione tecnologica che ha cambiato la vita di milioni di persone. Oggi i microprocessori vengono prodotti meccanicamente con l’efficienza di una catena di montaggio: costano poco, sono piccoli, affidabili e soprattutto potenti. Ormai si trovano non solo all’interno degli elaboratori, dove possono essere più di uno, ma anche in posti assolutamente impensabili. In questo capitolo verranno presi in considerazione i concetti e le tecnologie alla base del microprocessore e del sistema in cui esso è integrato. Le nozioni e il vocabolario usati sono molto importanti per due ordini di problemi.
22
Capitolo 2
In primo luogo capita sempre più spesso, nei luoghi domestici come sul luogo di lavoro, di dover scegliere tra macchine diverse e tecnologie non compatibili tra loro; in questo caso ci si deve armare di pazienza e capire quale computer e combinazione di accessori fa davvero al caso nostro. Non sempre è possibile fidarsi della pubblicità, o più semplicemente il nostro campo d’interesse è così specifico da non avere spazio nel grande e generico mercato della tecnologia. In questo caso conoscere gli strumenti che stiamo per acquistare o per usare è fondamentale per il futuro del nostro lavoro e del nostro hobby preferito. Non è un caso, poi, che sempre più prodotti tecnologici differenti finiscano col rassomigliare al computer. Grazie al fenomeno della “convergenza digitale”, che affronteremo più avanti nel testo, molti apparecchi diversi hanno profondamente trasformato il loro modo di funzionare per avvicinarsi a un’architettura nella quale c’è una CPU, una memoria, dei dispositivi periferici: i telefoni domestici e quelli cellulari, le automobili, le carte di credito, le macchine da cantiere, i servocomandi domestici per cancelli e serrature, e molti altri. Spesso questi apparecchi condividono formati di scambio dati e connessioni fisiche, per permetterci di farli interagire a nostro piacimento. La conoscenza di questi apparecchi e della loro struttura interna diviene così sempre più simile alla conoscenza dell’ambiente nel quale viviamo. I cinque binari di sviluppo della tecnologia informatica sono: dimensione: i moderni computer (personal) sono alcune decine di volte meno ingombranti dei primi computer (si pensi che un moderno notebook è almeno 500 volte più piccolo dell’ormai storico UNIVAC I); velocità: i moderni computer hanno aumentato la velocità del proprio processore attenendosi, approssimativamente, alla Legge di Moore, una legge esponenziale che prevede il raddoppio del numero di transistor integrabili su uno stesso chip ogni 18 mesi, raddoppiandone quindi anche le prestazioni; capienza: la capienza delle moderne memorie di massa è esorbitante rispetto alle memorie dei primi anni Ottanta del secolo scorso. Parliamo di una proporzione dell’ordine di centinaia di miliardi; interfaccia: lo sviluppo dei moderni PC all’interno della vita quotidiana, del lavoro e delle comunicazioni è dovuto all’evoluzione delle interfacce GUI (Graphic User Interface), che hanno permesso un più semplice utilizzo della tecnologia anche ai non addetti ai lavori; semplificazione: oggi gli ingegneri e i progettisti di hardware puntano molto sulla semplicità di utilizzo dei sistemi: meno pulsanti, molta più integrazione tra i componenti. Basti guardare l’enorme differenza tra un iPhone e un telefono cellulare dei primi anni 2000.
2.1 Tipi di elaboratori: i computer multiutente Il computer è il centro nevralgico di quasi tutti i moderni sistemi informativi. Gli elaboratori più potenti, utilizzati nei centri di calcolo delle grandi aziende, dei ministeri e delle università, sono i supercomputer, i mainframe e i minicomputer.
Supercomputer I supercomputer sono i più potenti elaboratori disponibili. Hanno numerose applicazioni tecniche e scientifiche, come l’elaborazione delle previsioni del tempo, la simulazione di fenomeni fisici quali la fusione nucleare, lo studio di processi biologici e molecolari, la progettazione di automobili e persino la creazione di effetti speciali cinematografici di assoluto realismo. La visualizzazione grafica di dati numerici esige spesso una notevole potenza di calcolo che può essere fornita solo da un supercomputer. La Figura 2.1 mostra la visualizzazione grafica di un’operazione tipica dei supercomputer: l’analisi del flusso d’aria attorno a un’automobile. Il colore rosso indica le fasce di alta pressione e il blu quelle di bassa pressione. Negli anni Ottanta sembrava che questi enormi, potenti e costosissimi elaboratori avessero fatto il
loro tempo, e fossero destinati a essere soppiantati da reti di calcolatori meno potenti. Questa previsione si è rivelata fallace e dalla metà degli anni Novanta la corsa alla costruzione del supercomputer più veloce e potente si è riaccesa. Il primo supercomputer in grado di eseguire più di un trilione di operazioni al secondo, una prestazione tre volte superiore a quella dell’elaboratore più veloce costruito in precedenza, è stato sviluppato dalla Intel nel 1996. Mentre altri computer in genere hanno un unico processore che effettua un calcolo per volta, questo supercomputer era dotato di più di 7000 processori capaci di eseguire altrettante operazioni contemporane-
Figura 2.1 La rappresentazione grafica del flusso d’aria che circonda un’automobile visualizzata da un supercomputer (per gentile concessione della Cray Research Inc.).
L’architettura del computer e la CPU 23
amente, in base a una procedura detta “elaborazione parallela”. In un secondo poteva effettuare un numero di operazioni pari a quelle che 265 milioni di persone riuscirebbero a eseguire in 125 anni utilizzando una calcolatrice manuale. Naturalmente la corsa alla ricerca della massima velocità è arrivata molto avanti. Nel momento in cui scriviamo il computer più veloce al mondo è senza dubbio il Tianhe-2, (“Via Lattea” in cinese). Questo supercomputer è composto da oltre tre milioni di processori in grado di operare alla sbalorditiva velocità di 33,8 “petaflop” al secondo, che tradotto vuol dire 33,8 milioni di miliardi di operazioni al secondo. È stato sviluppato in Cina all’Università statale per la Tecnologia della Difesa. Questo primato dura da quattro anni ma è destinato a essere superato: l’US Department of Energy (DOE) ha infatti annunciato che spenderà 325 milioni di dollari per costruire due supercomputer, che saranno dalle tre alle cinque volte più veloci di Tianhe-2.
Mainframe e server I mainframe (ora noti come server) in genere sono utilizzati nelle grandi aziende per svolgere funzioni centralizzate come la gestione della contabilità e il controllo dei magazzini. Di norma occupano un’intera stanza e sono gestiti da personale altamente specializzato (Figure 2.2 e 2.3).
Reti I supercomputer, i mainframe e i server sono in grado di elaborare i dati immessi da centinaia o persino migliaia di utenti contemporaneamente, sia che questi si trovino in uno stesso edificio sia che siano sparsi in tutto il mondo. Questo è possibile grazie alla costituzione di reti di computer, alle quali si può accedere secondo varie modalità.
Figura 2.2
Una sala server (©Oleksiy Mark).
I minicomputer (ora chiamati anch’essi server) sono meno potenti dei mainframe e possono essere di diverse dimensioni, grandi quanto un frigorifero o sufficientemente piccoli da stare su una scrivania. Sono spesso utilizzati dalle grandi aziende e dai centri di calcolo delle piccole organizzazioni pubbliche e private o da divisioni di grandi organizzazioni. I Personal Computer (PC) possono lavorare autonomamente o elaborare dati ricevuti da altri computer ai quali sono connessi, eseguendo calcoli, creando elenchi ordinati o rappresentando i dati in forma grafica. I terminali, pur essendo simili ai PC, offrono delle prestazioni molto più limitate. Sono dotati soltanto di uno schermo, una tastiera e dei componenti elettronici necessari per comunicare con il computer a cui sono connessi e servono esclusivamente a inviare e ricevere informazioni. Non essendo in grado di elaborare dati, vengono chiamati terminali stupidi. Esistono tuttavia dei terminali, detti terminali intelligenti, con una limitata capacità di elaborazione.
Figura 2.3 Un mainframe (per gentile concessione della IBM).
24
Capitolo 2
Perché tanti computer vengono chiamati server? Fino a poco tempo fa, i più grandi elaboratori multiutente erano i mainframe e i minicomputer. Tuttavia, con la crescita delle reti telematiche in potenza e complessità, queste macchine sono diventate parte integrante di un sistema molto più grande, all’interno del quale, data la loro grandezza e potenza di calcolo, rivestono comunque un ruolo di particolare importanza. In molti casi, infatti, mainframe e minicomputer hanno il compito di fornire i dati richiesti dagli altri computer e di eseguire i programmi che controllano le comunicazioni all’interno della rete. Di qui il nome di server, che però spesso viene usato anche per i desktop e le workstation, dato che anche questi elaboratori possono svolgere la funzione di “servire” le necessità degli altri computer. In definitiva, si nota la tendenza a considerare come server tutti gli elaboratori di una certa potenza con il solo scopo di aumentarne le vendite. Di conseguenza regna una certa confusione: un server può stare su una scrivania, in una valigetta oppure occupare un’intera stanza! Finché il vocabolario non assimilerà le definizioni date dagli uffici di marketing, dunque, il termine server non darà alcuna indicazione in merito alla grandezza e alla potenza del computer.
in ufficio o nello studio. Ma negli ultimi anni i PC hanno iniziato a trovare collocazione anche nei soggiorni, accanto ai comuni televisori e impianti hi-fi, grazie alle loro capacità di elaborazione multimediale. Questo ha determinato anche una ventata di innovazione nel design dei PC stessi, che per alcuni modelli è divenuto assai curato ed elegante. Le workstation sono invece dei computer personali di alto rendimento e piccole dimensioni, utilizzate prevalentemente da scienziati, ingegneri e grafici (Figure 2.4, 2.5 e 2.6).
Figura 2.4 Sony).
Un desktop (per gentile concessione della
Figura 2.5
Un notebook (https://www.pexels.com/).
Figura 2.6
Una workstation.
Gli ultimi nati sono i network computer e i network PC. Si tratta di un incrocio tra i PC veri e propri e i terminali: funzionano come terminali in quanto ricevono dati e programmi da computer più potenti, e come PC perché sono in grado di elaborare autonomamente i dati ricevuti.
2.2 Tipi di elaboratori: i Personal Computer In genere, i supercomputer e i mainframe sono costruiti su commissione ed essendo molto costosi ne vengono venduti solo pochi esemplari. Ciò che ha reso possibile la diffusione dell’elaboratore anche nelle nostre case, con decine di milioni di esemplari venduti ogni anno, è stata l’invenzione del microprocessore, prodotto in serie e a basso costo. Il successo di questi computer ha portato a numerose innovazioni e allo sviluppo di una grande varietà di modelli.
Desktop e workstation Il PC più diffuso è il desktop, progettato per essere posizionato permanentemente su una scrivania
L’architettura del computer e la CPU 25
Un cambio di potenza Alla fine degli anni Settanta quasi tutta la potenza generata dai computer su scala mondiale proveniva dai mainframe e dai terminali stupidi a essi collegati. Dieci anni dopo, la potenza generata da questi computer era ridotta all’1% della potenza mondiale, mentre il rimanente 99% era creato dai PC.
Notebook I notebook sono computer portatili leggeri (i modelli più leggeri attualmente disponibili non superano il chilo e mezzo) e maneggevoli, tanto che possono entrare facilmente in una ventiquattrore. In viaggio funzionano grazie a batterie ricaricabili, mentre in casa e in ufficio possono essere inseriti in un’unità fondamentale chiamata docking station, che consente di aumentarne il rendimento fino a raggiungere la potenza dei sistemi desktop più grandi.
I più piccoli In alcuni casi, anche i notebook sono troppo grandi. Per questo motivo, sono stati creati dei computer ancora più piccoli: alcuni, chiamati organizer, sono usati soltanto per memorizzare promemoria, date e numeri telefonici; altri, invece, sono più potenti.
Figura 2.7
Uno smartphone.
Computer palmari e smartphone
Sono i più piccoli in assoluto. Avendo tastiere piuttosto piccole, non sono molto maneggevoli da usare per scrivere testi o inserire grandi quantità di dati, ma risultano di grande utilità per molte altre applicazioni: i commercianti li utilizzano per registrare i loro clienti, altri per eseguire calcoli, memorizzare appuntamenti e annotare indirizzi e numeri telefonici (Figura 2.7). PDA (Personal Digital Assistant)
Tablet PC
Si tratta di computer portatili che sono privi di tastiera fissa, o che sono dotati di tastiere che possono scomparire dietro il monitor. Sono forniti di sensori touch-screen che consentono all’utente di interagire mediante piccole penne di plastica.
Sono tra i modelli più piccoli, privi di tastiera per essere ancora più maneggevoli. Possono essere dei semplici organizer, con rubrica telefonica, calcolatrice e calendario, oppure delle unità più potenti
Che cos’è un PC? Il linguaggio dell’informatica è mutevole Fino a pochi anni fa, il termine workstation indicava un luogo adibito all’uso del computer. Quando vennero alla ribalta i desktop ad alto rendimento, furono battezzati engineering workstation perché venivano utilizzati principalmente da ingegneri e scienziati. In seguito, con l’adozione di questi elaboratori da parte di altri utenti, come artisti e animatori, il nome fu abbreviato in workstation. Di conseguenza, oggi il termine ha diversi significati.
I primi microcomputer furono battezzati Personal Computer (PC) perché, a differenza degli elaboratori di grandi dimensioni, utilizzati di norma nei centri di calcolo delle grandi compagnie, avevano un impiego fondamentalmente individuale. Nel 1981 l’IBM realizzò il primo PC, chiamato PC IBM. Negli anni successivi, con la produzione di computer simili al PC dell’IBM da parte delle altre case produttrici, il termine passò a indicare il tipo di elaboratore in generale e oggi, per ironia della sorte, non viene nemmeno più usato per i computer di Apple Computer, la compagnia che avviò la rivoluzione del PC.
26
Capitolo 2 +1 +.75 +.5 +.25 0 –.25 –.5 –.75 –1
Il termine “micro” Il microprocessore, inventato nel 1969, fu installato dapprima nei desktop. Poiché questi elaboratori erano molto più piccoli dei minicomputer allora in circolazione, furono chiamati microcomputer. Oggi che i microprocessori sono usati anche nei più moderni e veloci supercomputer, “micro” non indica più un computer di piccole dimensioni, per cui il termine “microcomputer” è caduto in disuso.
in grado di inviare e ricevere e-mail e persino di navigare in Internet grazie a connesioni Wireless. Il settore dei PDA ha visto negli ultimi anni una notevole espansione, soprattutto grazie alla diffusione delle connessioni Wireless e alla convergenza con la telefonia cellulare di ultima generazione e con la fotografia digitale. Non mancano infatti dispositivi ibridi che svolgono contemporaneamente la funzione di PDA, macchina fotografica digitale e telefono cellulare.
2.3 Le basi dell’informatica moderna: il sistema binario L’avvento del compact disc, che ha rapidamente sostituito il disco di vinile in campo musicale, ha decisamente contribuito alla diffusione del concetto di elaborazione digitale. Questo processo fu usato per la prima volta negli anni Quaranta per i computer. Ma che cosa è esattamente l’elaborazione digitale? Si può dire che consiste nel rappresentare numeri, musica, documenti e qualsiasi altro tipo di informazioni in cifre binarie, in modo che possano essere elaborati e utilizzati dalle moderne tecnologie informatiche.
Digitale o analogico? I segnali analogici sono paragonabili a un’onda e trasmettono un ampio spettro di informazioni. Il nostro è un mondo analogico. Il corpo umano è programmato per percepire e interpretare onde luminose analogiche: noi non percepiamo soltanto i punti massimi e minimi di queste onde, ma anche quelli intermedi. Quando parliamo, il messaggio viene trasportato da onde analogiche e lo stesso accade quando ascoltiamo della musica. Ogni parte dell’onda trasporta informazioni. Le onde analogiche sono molto sensibili alle interferenze. Questo ci appare evidente quando cerchiamo di seguire una conversazione in una stanza rumorosa, o quando proviamo a sintonizzarci su una stazione radiofonica che ha un segnale debole.
Figura 2.8
Segnali analogici.
A differenza dei segnali analogici, i segnali digitali possono assumere solo due stati: acceso e spento. Per un dispositivo è semplice distinguere questi due stati, per cui le interferenze, ovvero le informazioni vaganti estranee al messaggio principale, non influiscono sui segnali digitali quanto su quelli analogici. Il digitale presenta quindi due vantaggi rispetto all’analogico: meno interferenze e una maggiore risoluzione (Figure 2.8 e 2.9). I segnali digitali hanno una capacità di risoluzione pressoché infinita. Si stima che l’occhio umano riesca a distinguere sedici milioni di colori. Prendiamone in considerazione uno, il grigio. Una buona foto presa da un quotidiano avrà circa 256 sfumature di grigio, comprese tra il bianco e il nero assoluti. Poniamo che vogliate trasmettere la foto utilizzando la luce: sarebbe davvero difficile ottenere 256 gradi di luminosità con una lampadina, e per di più bisognerebbe tenere conto delle interferenze provocate da eventuali banchi di nebbia! Se invece utilizzate otto lampadine che possono essere spente o accese, a ognuno dei 256 colori può essere associata una sequenza, per esempio tutte le lampadine accese per il bianco, tutte spente per il nero e soltanto le prime cinque accese per una sfumatura intermedia di grigio. In questo modo, rappresentare tutte le 256 sfumature sarebbe molto più semplice, anche in presenza di banchi di nebbia che oscurassero parzialmente le lampadine.
Le cifre binarie Digitale deriva dall’inglese digit, cifra. Quando compiliamo un assegno, contiamo il resto, componiamo un numero telefonico, consultiamo l’indice di un libro e via dicendo, utilizziamo il sistema di numerazione decimale, chiamato così perché Acceso 1
0
1
1
0 Spento
Figura 2.9
Segnali digitali.
L’architettura del computer e la CPU 27 N um eri decim ali
La cavalcata di Paul Revere: una rivoluzione digitale?
N um eri binari 0
0
1
1 1
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
2 3 4 5 6 7 8 9 10
Figura 2.10 Numeri decimali e binari.
impiega dieci cifre diverse, da 0 a 9, che possono essere combinate tra loro per denotare numeri diversi (per esempio, con le cifre 1 e 9 possiamo ottenere 19, 91, 19,19 ecc.; Figura 2.10). I computer e gli altri strumenti digitali, invece, rappresentano tutti i numeri con il sistema binario, costituito da due sole cifre, 0 e 1.
Perché digitale? Dato che il sistema binario utilizza soltanto le cifre 0 e 1, le informazioni rappresentate in questo sistema possono essere elaborate secondo vari criteri e con vari strumenti. Per esempio, le combinazioni di zero e uno possono essere rappresentate dalle condizioni acceso/spento, alto/basso, luce/ buio, nord/sud, su/giù ecc. Tutte queste tecniche sono impiegate nei computer per memorizzare, elaborare e visualizzare dati (Figura 2.11).
2.4 Le basi dell’informatica moderna: i segnali digitali Come abbiamo visto, le cifre 0 e 1 possono essere rappresentate, memorizzate e visualizzate in diversi modi; tuttavia, perché abbiano un senso è necessario stabilire un codice preciso. I segnali digitali non sono stati certo i primi a essere usati per trasmettere informazioni: fin dai tempi più remoti l’uomo si è servito di tamburi, segnali di fumo, bandiere ecc.
Quando le colonie americane si ribellarono al dominio inglese, a Paul Revere fu assegnato il compito di avvertire i volontari delle campagne qualora ci fosse stato un attacco da parte degli Inglesi, specificando se si trattasse di un’aggressione per terra o per mare. L’episodio che lo vide protagonista ispirò a H.W. Longfellow il poema La cavalcata di Paul Revere, di cui riportiamo alcune strofe: Ascoltate figli miei, vi voglio raccontare di Paul Revere e della sua cavalcata di mezzanotte del 18 aprile del 1775; coloro che potrebbero ricordare quel memorabile giorno e l’anno ormai son morti tutti. Egli disse al suo amico: “Se gli inglesi giungeranno dalla terra o dal mare Questa notte appendi una lanterna sul campanile della Old North Church come segnale. Una lanterna se vengono da terra, due se vengono dal mare; io sarò sulla riva opposta pronto a cavalcare e dare l’allarme generale, In ogni villaggio del Middlesex e in ogni fattoria I contadini saranno pronti a battagliare. “Una lanterna se vengono da terra, e due se vengono dal mare” era un messaggio digitale. L’amico di Revere citato nella poesia, Robert Newman, sagrestano della chiesa di Old North, dopo aver spiato gli Inglesi appese una lanterna accesa nella cella campanaria. Revere, che attendeva sull’altra sponda della baia per guadagnare tempo sulle truppe inglesi, non appena vide il segnale si lanciò nella sua leggendaria cavalcata. (Leggenda a parte, fu subito arrestato e le notizie furono in realtà portate a destinazione da un certo William Dawes.) Di lì a poco sarebbe scoppiata la battaglia di Concord, preludio alla Rivoluzione americana. Le due lanterne utilizzate dal sagrestano per trasmettere il segnale potevano comunicare tre messaggi diversi: se tutte e due erano spente (in segnali digitali 00) significava che la situazione era tranquilla; se soltanto una era accesa (01 o 10) significava che gli inglesi attaccavano da terra; se entrambe erano accese (11) si trattava di un attacco dal mare.
Un esempio di codice digitale: il telegrafo Naturalmente, la trasmissione di un messaggio più complesso avrebbe richiesto ben più di due semplici lanterne. Per esempio, come sarebbe stato possibile avvertire i volontari nel caso di un ina-
28
Capitolo 2 Le particelle magnetiche presenti sulla superficie di un disco o di un nastro possono essere distribuite in modo da puntare in direzioni opposte, una rappresentante la cifra 1, l’altra lo 0 (polarità).
N
Su uno schermo i punti possono essere accesi, quando corrispondono a 1, o spenti, quando corrispondono a 0.
I misuratori di tensione possono indicare alta tensione, pari a 1, o bassa tensione, pari a 0.
S
0 0
S
1
1
N
Le scanalature sulla superficie di un CD-ROM o di altri dispositivi ottici di memorizzazione riflettono la luce del laser in modo diverso rispetto alle zone non scanalate: le prime corrispondono a 1, le seconde a 0.
I puntini vengono stampati quando corrispondono a 1 e non stampati quando corrispondono a 0. Tenendo quest’immagine a una certa distanza, potete vedere la figura che forma.
I dispositivi a due posizioni, come i transistor, possono rappresentare 1 quando sono accesi e 0 quando sono spenti. Figura 2.11 Dispositivi digitali.
spettato cambiamento di direzione delle truppe inglesi? Una soluzione fu trovata da Samuel Morse che, agli inizi dell’Ottocento, inventò il telegrafo. Per mezzo del telegrafo, battendo su un tasto vengono inviati lungo un cavo impulsi elettrici che, una volta giunti a destinazione, mettono in azione un dispositivo chiamato ricevitore acustico, il quale scatta ogni volta che arriva un impulso. Anche questo è un processo digitale, perché il ricevitore può essere azionato o meno. Per trasmettere un messaggio, comunque, è necessario un codice: Morse ne sviluppò uno basato su scatti intervallati da pause lunghe o corte, che una vol-
ta stampati apparivano come linee o punti. Per esempio, il ben noto SOS è formato da tre punti, tre linee, tre punti (Figura 2.12).
Il dispositivo digitale dei computer: il transistor Anche i computer necessitano di un dispositivo che invii e riceva segnali e di un codice che dia loro significato. Nei primi elaboratori questa funzione era rivestita dalle valvole termoioniche, sostituite poi dai transistor, che possono avere solo due stati: acceso oppure spento.
L’architettura del computer e la CPU 29
A
B
S
O
S
Figura 2.12 (A) Il telegrafo. (B) Il codice Morse.
I primi transistor erano piuttosto ingombranti, come quelli in secondo piano nella Figura 2.13. Oggi, invece, da una fetta (wafer) di silicio se ne ottengono milioni, che vengono poi tagliati e inseriti in piccoli contenitori di protezione a cui si possono collegare i fili, come quello in primo piano sempre nella Figura 2.13. È grazie a questi “frammenti” che i computer moderni sono così piccoli.
Figura 2.13 IBM).
Transistor (per gentile concessione della
i potentissimi processori Multi-core e le previsioni per il prossimo futuro parlano di oltre 100 milioni di transistor in una singola CPU (Figura 2.14).
La legge di Moore
2.5 Le basi dell’informatica moderna: bit e byte
Con il continuo aumento del numero di transistor contenuti in un singolo chip, il costo per unità di potenza elaborativa si riduce sempre di più. Nel 1965 Gordon Moore, uno dei fondatori della Intel, predisse che il numero di transistor contenuti in un chip sarebbe raddoppiato ogni anno e mezzo. La sua previsione si è rivelata corretta: se nel 1971 il processore 4004 aveva 2300 transistor, l’ultima generazione di Pentium IV, nel 2004, ne conteneva 125 milioni, ciascuno dei quali aveva una dimensione di pochi millesimi di millimetro, ed era in grado di effettuare 3,6 miliardi di istruzioni per secondo. Oggi la tecnologia più avanzata presenta
Vista l’infinita varietà di applicazioni che possono avere gli elaboratori e gli altri dispositivi digitali, è abbastanza sorprendente scoprire che in realtà queste macchine eseguono un numero di procedure molto limitato, che comprende le operazioni di addizione, sottrazione, classificazione e raffronto tra valori numerici diversi. Queste procedure vengono effettuate a un’altissima velocità, che consente ai computer di svolgere un numero pressoché infinito di operazioni complesse. Per eseguire tali procedure, però, l’elaboratore deve convertire le informazioni che gli vengono fornite dal nostro linguaggio al linguaggio digitale, cioè al
Figura 2.14 La legge di Moore.
30
Capitolo 2
linguaggio dei bit e dei byte mediante il quale memorizza, comunica ed elabora i dati, che vengono poi riconvertiti nel linguaggio umano.
Bit e byte L’unitĂ minima del linguaggio digitale è il bit, termine che deriva dalla contrazione dell’espressione inglese binary digit, cifra binaria. Un bit, proprio come una lampadina, può assumere soltanto due stati: acceso (corrispondente a 1) o spento (corrispondente a 0). Per trasmettere una maggiore quantitĂ di dati, si ricorre a un’unitĂ piĂš grande, il byte, che è costituito da otto bit e rappresenta l’unitĂ fondamentale del linguaggio dei computer. PoichĂŠ ognuno degli otto bit ha due stati possibili, un byte può rappresentare ďŹ no a 28 256 possibili combinazioni (Figura 2.15).
Le unità superiori al byte PoichÊ un byte può rappresentare soltanto un singolo carattere o comando, di norma vengono utilizzati i suoi multipli. Se per un promemoria bastano poche migliaia di byte, infatti, per un’animazione ne servono milioni. Per comodità , vengono ormai usate unità di misura come il kilobyte, pari a 1024 byte, e il megabyte, che corrisponde a 1 048 576 byte. Oggi abbiamo necessità di utilizzare unità di misura ancora piÚ grandi, come il gigabyte (circa un miliardo di byte) e il terabyte (circa mille miliardi di byte). • Per indicare queste unità di misura si usano di norma delle abbreviazioni: k sta per mille, M per un milione, G per un miliardo e T per mille miliardi; la lettera B, a seconda che compaia in maiuscolo o minuscolo, indica se si tratta di byte o di bit rispettivamente. Per esempio, 10 MB corrisponde a 10 megabyte mentre 10 Mb sono 10 megabit. • Questi valori si ottengono innalzando il numero 2 a varie potenze. 210, per esempio, dà come risultato 1024, che viene di norma arrotondato a 1000, cioè a 1 kB.
Dal linguaggio umano al linguaggio dei computer e viceversa Mentre gli elaboratori utilizzano il linguaggio binario, l’uomo comunica mediante le lingue e si serve del sistema decimale. Di conseguenza, afďŹ nchĂŠ ci possa essere comunicazione, il computer deve convertire le informazioni che gli forniamo nel linguaggio binario che è in grado di interpretare, e poi deve riconvertire i risultati dell’elaborazione in un linguaggio a noi comprensibile (Figure 2.16 e 2.17). Quando si digita un carattere o un numero sulla tastiera, l’elaboratore ricerca in una tabella il numero binario che lo rappresenta e durante l’elaborazione si serve di quel numero. Al termine dell’elaborazione avviene il processo inverso: il computer ricerca nella tabella il carattere o il simbolo corrispondente al numero binario e lo visualizza per l’utente. Le tabelle a cui fa ricorso l’elaboratore sono chiamate codici. Un codice è costituito esattamente da 256 caratteri (di cui alcuni sono comandi) perchĂŠ gli otto bit contenuti in un byte possono dare soltanto valori compresi tra 0 e 255. Il valore di ognuno degli otto bit è determinato dalla posizione che occupa nel byte. Il sistema binario, infatti, come del resto il sistema decimale, è un sistema posizionale. Nel sistema decimale, se prendiamo in considerazione il numero 12, 2 rappresenta due unitĂ e 1 una decina. In pratica, ogni cifra deve essere moltiplicata per una potenza di 10 il cui esponente è pari al numero delle cifre che seguono la cifra considerata (1 u 101 2 u 100). Analogamente, nel sistema binario le cifre sono moltiplicate per potenze di 2: in un byte, il bit piĂš a destra è uguale a 1 (20), quello immediatamente a sinistra è uguale a 2 (21), il successivo è uguale a 4 (22), e cosĂŹ via ďŹ no a 128. Le varie combinazioni tra questi otto bit possono dare un numero binario compreso tra 0000 0000 e 1111 1111 o un 9DORUH
1RPH
$EEUHYLD]LRQH
3RWHQ]D
%\WH R ELW .LORE\WH R NLORELW 0HJDE\WH R PHJDELW *LJDE\WH R JLJDELW 7HUDE\WH R WHUDELW
N% R NE 0% R 0E *% R *E 7% R 7E
Alcune potenze di 2.
Figura 2.16
ent p S o 0 Figura 2.15 I bit.
es c A o 1
ent p S o 0
es c A o
Figura 2.17
1
ent p S o 0
Un byte.
ent p S o 0
ent p S o 0
ent p S o 0
ent p S o 0
es c A o 1
L’architettura del computer e la CPU 31 128
64
32
16
8
4
2
1
255 Figura 2.18
I bit che danno come somma 255.
numero decimale compreso tra 0 e 255. Ognuno di questi 256 numeri decimali può rappresentare un carattere, un numero oppure un comando. Nella Figura 2.18 tutti i bit sono “accesiâ€? e danno quindi un valore binario pari a 1111 1111. Il corrispondente valore decimale è 255 128 64 32 16 8 4 2 1. Nella Figura 2.19, invece, sono “accesiâ€? soltanto il secondo e il terzo bit, che danno un valore binario uguale a 0000 0110. Il valore decimale è 6 4 2.
I codici in uso Il numero binario assegnato a un determinato carattere varia a seconda del codice utilizzato. In informatica si usano vari sistemi di codiďŹ ca, tra cui ASCII, EBCDIC e UNICODE. • Il codice ASCII, che sta per American Standard Code for Information Interchange (codice americano standard per l’interscambio di informazioni), è stato sviluppato dall’ANSI, l’American National Standard Institute, ed è il codice piĂš diffuso tra i PC. Nella Figura 2.20 è riportata la codiďŹ ca di una serie di caratteri nel codice ASCII. La colonna a sinistra indica le decine e quella in alto le unitĂ . Il simbolo @, per esempio, è il numero 64, mentre ÂŽ è il 174. I caratteri nelle caselle piĂš scure fanno parte del codice ASCII esteso. • EBCDIC, acronimo di Extended Binary Coded Decimal Interchange Code (codice di in-
Figura 2.19
I bit che danno come somma 6.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
0
1
2
( 2 < F P Z d n x , Ĺ&#x2019; â&#x20AC;&#x201C;
) 3 = G Q [ e o y Ć&#x2019; â&#x20AC;˘ â&#x20AC;&#x201D; ÂĄ â&#x20AC;šâ&#x20AC;š Âľ Âż Ă&#x2030; Ă&#x201C; Ÿ ç Ăą uË&#x2020;
* 4 > H R / f p z â&#x20AC;&#x17E; â&#x20AC;˘ -
ª ´ 34
Ă&#x2C6; Ă&#x2019; Ă&#x153; ĂŚ o Ăş
Figura 2.20
¢ ÂŹ Âś Ă&#x20AC; Ă&#x160; Ă&#x201D; è ò Ăź
3
4
5
6
7
8
9
! + 5 ? I S ] g q { â&#x20AC;Ś â&#x20AC;˘ â&#x201E;˘ ÂŁ . Ă Ă&#x2039; Ă&#x2013; Ă&#x; ĂŠ Ăł ´ y
" , 6 @ J T ^ h r | â&#x20AC; â&#x20AC;˘ §
# 7 A K U _ i s } â&#x20AC;Ą ´ > ÂĽ -
$ . 8 B L V ` j t ~ Ë&#x2020; ´ Ĺ&#x201C;
% / 9 C M W a k u â&#x20AC;˘
& 0 : D N X b l v â&#x20AC;˘ $ " â&#x20AC;˘ ¨
' 1 ; E O Y c m w â&#x20AC;˘ â&#x20AC;š â&#x20AC;˘ Ÿ Š
2 14
3 12
Ă&#x2020; â&#x20AC;&#x201C;D Ă&#x161; ä ĂŽ ø
Ă&#x2018; Ă&#x203A; ä ĂŻ Ăš
ÂŽ , Ă&#x201E; Ă&#x152; Ă&#x2013; Ă ĂŞ Ă´ b p
1
Ă&#x192; Ă? x ĂĄ ĂŤ Ăľ Ăż
Ă&#x201E; Ă&#x17D; Ă&#x2DC; â ĂŹ Ăś
0 00
" â&#x20AC;˘ §
Âť Ă&#x201A; Ă? Ă&#x2122; ĂŁ Ă
ç
Il codice ASCII.
terscambio esteso BCD) è il codice piĂš usato nei mainframe e nei server piĂš potenti. â&#x20AC;˘ ASCII e EBCDIC funzionano perfettamente per lâ&#x20AC;&#x2122;inglese, ma per scrivere i caratteri di altre scritture, come per esempio il francese, il cinese, o anche il fenicio e lâ&#x20AC;&#x2122;antico ebraico, è necessario un codice piĂš esteso. Una risposta a tale problema è rappresentata dallo standard UNICODE, che, dotato di oltre 96 000 caratteri, è in grado di rappresentare le principali lingue scritte del mondo. I sistemi operativi e i programmi di piĂš recente generazione sono in grado di utilizzare UNICODE, e possono dunque elaborare e visualizzare sia le scritture moderne sia quelle antiche.
2.6
Lâ&#x20AC;&#x2122;algebra di Boole
Il funzionamento degli elaboratori elettronici è basato su entitĂ che possono assumere valori discreti. La maggiore afďŹ dabilitĂ del sistema binario rispetto a qualsiasi altro sistema ne giustiďŹ ca lâ&#x20AC;&#x2122;uso esclusivo che ne viene fatto dagli elaboratori elettronici. Il linguaggio umano è costituito da frasi per deďŹ nizione diverse tra loro. Vediamo alcuni esempi: Sostengo lâ&#x20AC;&#x2122;esame di Informatica
frase affermativa
Sostengo lâ&#x20AC;&#x2122;esame di Informatica?
frase interrogativa
Sostieni lâ&#x20AC;&#x2122;esame di Informatica!
frase imperativa
Che bel voto ho avuto!
frase esclamativa
32
Capitolo 2
Le frasi affermative hanno una caratteristica che le differenzia dalle altre: possono essere vere o false; nella logica proposizionale esse sono chiamate proposizioni. Una proposizione non ulteriormente scomponibile è detta proposizione elementare. Posto, quindi, p “Sostengo l’esame di Informatica”, p può assumere valore vero o falso a seconda della veridicità dell’affermazione fatta. Agendo opportunamente sulle proposizioni elementari, ovvero utilizzando avverbi e/o congiunzioni, si possono generare proposizioni composte. Sull’insieme delle entità proposizioni, che hanno la caratteristica di poter assumere solo i 2 valori binari, è definito uno strumento matematico chiamato algebra di Boole, dal nome del suo fondatore George Boole (1815-1864). L’algebra di Boole è un’algebra a tutti gli effetti ed è quindi costituita da variabili, costanti, operatori semplici, funzioni e proprietà. Dicesi variabile booleana un’entità che può assumere solo due valori: • 1 o 0; • Vero o Falso; • On o Off. Un esempio di variabile booleana è la proposizione: • Oggi vado all’università. Questa può assumere valore vero o valore falso a seconda, rispettivamente, che si vada o meno all’università. Così come nell’algebra tradizionale esistono le entità variabili (a, x,...) e le entità costanti (1, 2, 3, 4, 5,...), anche nell’algebra booleana esistono, oltre alle entità variabili, le costanti che possono assumere convenzionalmente i valori 0 o 1.
Operazioni sull’insieme delle variabili booleane Sia C
F (A, B) dove:
• F:
funzione booleana costituita da un insieme di operazioni booleane che agiscono su variabili booleane; • A, B: variabili booleane indipendenti; • C: variabile booleana dipendente. Risolvere la funzione booleana F significa determinare per quali valori delle variabili A e B risulta vera/falsa la variabile C. Le variabili booleane indipendenti sono “legate” tra loro mediante operatori booleani.
Ogni operatore booleano è regolato da una tabella chiamata tabella di verità, divisa in due sezioni: 1. sezione Input: costituita da un numero di colonne pari al numero di variabili indipendenti presenti nella funzione booleana; 2. sezione Output: costituita sempre da una colonna. Le righe della tabella di verità dovranno essere pari a 2n dove n è il numero di variabili indipendenti presenti nella funzione booleana. Le righe dovranno essere univoche, ovvero non dovranno esserci due righe uguali, e dovranno rappresentare tutte le possibili combinazioni delle variabili booleane indipendenti. Per il successo nella risoluzione di una funzione booleana è fondamentale impostare correttamente la tabella di verità. Sia F (A, B) una funzione booleana in cui sono presenti due variabili indipendenti legate tra loro, evidentemente, da operatori booleani, non specificati. La tabella di verità sarà così composta: 1. sezione Input: due colonne (infatti due sono le variabili indipendenti); 2. sezione Output: una sola colonna (tale sezione è sempre composta da una colonna); 3. righe: in numero di 4 (infatti 22 4). Tabella di verità a due variabili Input A 0 0 1 1
Output B 0 1 0 1
F
Come si può notare nella sezione Input le quattro righe rappresentano tutte le possibili combinazioni delle due variabili booleane indipendenti. I valori della variabile dipendente F dipenderanno dai connettivi logici, non specificati, che opereranno su A e B. Sulle variabili booleane si possono eseguire le seguenti operazioni (od operatori) booleane elementari: 1. NOT 2. OR
3. AND 4. NOR
5. NAND 6. XOR
L’operazione NOT
L’operazione NOT si applica a una sola variabile booleana; algebricamente si indica nel seguente modo: C
NOT (A)
A
La variabile booleana C assumerà valore opposto ad A. Così: • se A 0 C NOT (A) A 1 • se A 1 C NOT (A) A 0
Lâ&#x20AC;&#x2122;architettura del computer e la CPU 33
Vediamo la tabella di veritĂ corrispondente:
Vediamo la tabella di veritĂ corrispondente: Tabella di veritĂ del NOR
Tabella di veritĂ del NOT A 0 1
A 0 0 1 1
C 1 0
Lâ&#x20AC;&#x2122;operazione OR
Lâ&#x20AC;&#x2122;operazione OR si applica a due variabili booleane; algebricamente si indica nel seguente modo: C
OR (A, B) oppure C A B o anche C A Â&#x203A; B
e si indica con il termine somma logica. Il valore di C risulterĂ vero nel momento in cui almeno una delle due variabili indipendenti A e B assume valore vero, mentre sarĂ falso solo quando le due variabili booleane A e B sono contemporaneamente false. Vediamo la tabella di veritĂ : Tabella di veritĂ dellâ&#x20AC;&#x2122;OR A 0 0 1 1
AND (A, B) oppure C
A Â&#x2DC; B o anche A Â&#x161; B
e si indica con il termine prodotto logico. Il valore di C risulterĂ vero nel momento in cui le variabili indipendenti A e B sono contemporaneamente vere, mentre sarĂ falso quando almeno una delle due variabili indipendenti assume valore falso. Vediamo la tabella di veritĂ : B 0 1 0 1
C
NAND (A, B)
AÂ&#x2DC;B
NOT (AND (A, B))
Il valore di C risulterĂ falso nel momento in cui le variabili indipendenti A e B sono contemporaneamente vere. Negli altri tre casi C assume sempre valore vero. Vediamo la tabella di veritĂ corrispondente:
Lâ&#x20AC;&#x2122;operazione NOR si ottiene combinando le operazioni NOT e OR, appena viste; algebricamente si indica nel seguente modo: NOT (OR (A, B))
A 0 0 1 1
AÂ&#x2DC;B 0 0 0 1
B 0 1 0 1
C 1 1 1 0
Lâ&#x20AC;&#x2122;operazione OR ESCLUSIVO
Lâ&#x20AC;&#x2122;operazione OR ESCLUSIVO si applica a due variabili booleane; algebricamente si indica nel seguente modo: C
XOR (A, B) oppure C
AÂ&#x2020;B
Il valore di C sarĂ vero nel momento in cui i valori delle due variabili indipendenti A e B sono diversi e falso quando assumono valore uguale. Vediamo la tavola di veritĂ : A 0 0 1 1
C 0 0 0 1
Lâ&#x20AC;&#x2122;operazione NOR
NOR (A, B)
Lâ&#x20AC;&#x2122;operazione NAND si ottiene combinando le operazioni NOT e AND appena viste; algebricamente si indica nel seguente modo:
Tabella di veritĂ dellâ&#x20AC;&#x2122;XOR
Tabella di veritĂ dellâ&#x20AC;&#x2122;AND
C
Lâ&#x20AC;&#x2122;operazione NAND
C 0 1 1 1
Lâ&#x20AC;&#x2122;operazione AND si applica a due variabili booleane; algebricamente si indica nel seguente modo:
A 0 0 1 1
C 1 0 0 0
Tabella di veritĂ del NAND B 0 1 0 1
Lâ&#x20AC;&#x2122;operazione AND
C
A B 0 1 1 1
B 0 1 0 1
A B
Il valore di C risulterĂ vero nel momento in cui le variabili indipendenti A e B sono contemporaneamente false. Negli altri tre casi C assume sempre valore falso.
2.7
B 0 1 0 1
C 0 1 1 0
Circuiti logici
Gli elaboratori elettronici eseguono funzioni, come per esempio somme tra numeri, memorizzazione di bit ecc., esprimibili tramite funzioni booleane. Questo vuol dire che, se si riuscisse a progettare dei circuiti corrispondenti ai vari operatori booleani, questi, opportunamente combinati, potrebbero essere utilizzati per la rappresentazione ďŹ sica delle funzioni booleane.
34
Capitolo 2
Per raggiungere questo scopo è stato progettato un circuito, chiamato circuito logico, per ogni operatore booleano.
una porta NOT come viene evidenziato dalla sua rappresentazione grafica seguente: A
A NOR B
B
Porta NOT Questo circuito logico esegue l’operazione booleana NOT. Esso ha un ingresso e un’uscita; la sua rappresentazione grafica è la seguente: A
NOT(A)
Circuito Logico del NOR
Il circuito presenta in uscita un filo con tensione massima (valore booleano 1) quando tutti e due gli ingressi presentano tensione minima.
Porta NAND Circuito Logico del NOT
Il circuito si comporta in modo che, se in ingresso si ha la variabile booleana A, in uscita si raccoglie il suo valore complementato.
Questo circuito logico esegue l’operazione booleana NAND. Esso ha due ingressi e un’uscita ed è costituito da una porta AND la cui uscita entra in una porta NOT, come viene evidenziato dalla sua rappresentazione grafica seguente: A
Porta OR Questo circuito logico esegue l’operazione booleana OR. Esso ha due ingressi e un’uscita; la sua rappresentazione grafica è la seguente: A
A OR B
B Circuito Logico dell’OR
Il circuito si comporta in modo che in uscita si abbia un filo con tensione massima (valore booleano 1) nel momento in cui almeno uno dei due fili di ingresso abbia tensione massima e tensione minima solo se tutti e due gli ingressi presentano tensione minima.
A NAND B
B Circuito Logico del NAND
Il filo in uscita dal circuito avrà tensione minima (valore booleano 0) quando tutti e due gli ingressi presentano tensione massima.
Porta XOR Questo circuito logico ha due ingressi e un’uscita; la sua rappresentazione grafica è la seguente: A
A XOR B
B Circuito Logico dell’XOR
Porta AND Questo circuito logico esegue l’operazione booleana AND. Esso ha due ingressi e un’uscita; la sua rappresentazione grafica è la seguente: A
A AND B
B Circuito Logico dell’AND
Il circuito avrà in uscita un filo con tensione massima (valore booleano 1) quando tutti e due gli ingressi presentano tensione massima e tensione minima in tutti gli altri casi.
Porta NOR Questo circuito logico esegue l’operazione booleana NOR. Esso ha due ingressi e un’uscita ed è costituito da una porta OR la cui uscita entra in
Il circuito si comporta in modo che in uscita si abbia un filo con tensione massima (valore booleano 1) quando gli ingressi presentano tensione diversa.
2.8 Le origini dell’informatica da Turing a von Neumann I moderni computer, dal punto di vista logico, possono essere definiti come macchine o automi di calcolo generale. Questa nozione è stata formulata e studiata per la prima volta negli anni Trenta e Quaranta del secolo scorso da alcuni logici e matematici che cercavano di indagare la natura e i fondamenti della logica e della matematica. Tra questi vanno ricordati Alan Turing e John von Neumann, che si possono considerare come i veri e propri padri della moderna informatica, intesa come scienza teorica che si occupa dell’elaborazione automatica dell’informazione.
L’architettura del computer e la CPU 35
Alan Turing e la macchina universale Le caratteristiche teoriche generali di una macchina in grado di eseguire procedure logiche e matematiche in modo automatico sono state definite in maniera rigorosa e formale nel 1937 dal logico e matematico inglese Alan Turing. L’obiettivo delle ricerche di Turing era quello di formalizzare la nozione di procedura effettiva o meccanica di calcolo, o algoritmo, e di individuare i limiti nell’applicazione di tali metodi per la soluzione di problemi logici e matematici. A questo fine Turing ideò una macchina teorica, in grado di simulare il comportamento di un uomo intento a eseguire un calcolo aritmetico (Figura 2.21). La macchina di Turing (come viene oggi denominata) è costituita da un nastro di lunghezza potenzialmente infinita, suddiviso in sezioni o celle (simile, quindi, a una pellicola cinematografica), che la macchina può far scorrere avanti e indietro, e da una unità di lettura e scrittura in grado di leggere, scrivere o cancellare simboli (uno alla volta) nelle celle del nastro. Tali simboli sono elementi di un insieme finito di simboli distinti, l’alfabeto della macchina. Inoltre, la macchina è dotata di una memoria interna (la memoria esterna è il nastro) che può assumere un insieme finito di stati. Il comportamento della macchina, che funziona eseguendo una successione di passi discreti, è determinato da un insieme finito di regole che, dato il simbolo letto e lo stato interno della macchina, prescrivono il simbolo da scrivere, lo stato da assumere e il verso di spostamento del nastro nel passo successivo. Specificando in modo opportuno le regole, una macchina di Turing può eseguire calcoli di
Figura 2.21 La rappresentazione classica di una macchina di Turing.
qualsiasi natura e complessità. Non solo: Turing dimostrò che è possibile progettare una macchina universale, in grado cioè di imitare qualsiasi altra macchina di Turing. Per fare questo è sufficiente codificare sia le regole di transizione sia i dati di una particolare macchina di Turing attraverso l’alfabeto della macchina universale: questa codifica corrisponde al nostro concetto di programma. E grazie a ciò riuscì a dimostrare anche che la sua macchina, per quanto concettualmente semplice, poteva risolvere qualsiasi problema, a patto che questo potesse essere risolto in modo algoritmico ed espresso in forma simbolica. Il tentativo di arrivare ad altre definizioni formali del concetto di calcolabilità (anche partendo da punti di vista diversi da quello di Turing) hanno portato a risultati del tutto equivalenti a quelli di Turing. Questo ha portato alla formulazione di una famosa tesi, detta tesi di Church (dal nome del logico che la espresse per primo), la quale sostiene che l’insieme dei problemi effettivamente risolvibili con qualsivoglia metodo meccanico coincide con quello dei problemi risolvibili dalla macchina di Turing.
Una semplice macchina di Turing Per capire meglio l’idea di macchina di Turing costruiamone una molto semplice. Una macchina in grado di sommare due numeri interi postivi espressi in notazione... unaria! Cioè ogni numero è rappresentato da un corrispondente insieme di cifre, come se usassimo i sassolini per contare. I due numeri da sommare saranno scritti sul nastro in successione mediante il simbolo 1, e saranno separati da un solo simbolo 0.
La nostra macchina inizia a scorrere il nastro nello stato iniziale (A) partendo dal primo “1” del primo numero, lo trasforma in “0” cambiando stato (B); poi va avanti finché non trova lo “0” di separazione tra i due numeri che trasforma in “1” fermandosi. Sul nastro a questo punto si troveranno un numero di simboli “1” pari alla somma dei due numeri iniziali! Se non ci credete, provate pure. Qui sotto c’è la tavola delle regole di transizione della nostra macchina.
Stato attuale
Simbolo letto
Simbolo scritto
Movimento
Stato successivo
A B
1 1
0 1
destra destra
B B
B
0
1
stop
end
36
Capitolo 2
John von Neumann e la macchina a registri La macchina ideata da Turing era un modello concettuale, che non era stato pensato per essere trasformato in una macchina reale. Il lavoro di Turing però ha ispirato lo sviluppo di altri modelli di macchine, formalmente equivalenti alla macchina di Turing, ma tecnicamente più efficienti. Tra questi, di notevole importanza è la macchina a registri a programma memorizzato, elaborata nel 1945 dal matematico ungherese (emigrato negli Stati Uniti) John von Neumann nella progettazione del primo vero computer digitale della storia, l’EDVAC. La macchina di von Neuman è costituita da un’unità di elaborazione centrale (CPU), una memoria divisa in celle dotate di indirizzi (chiamate appunto registri) e due nastri divisi in celle, uno di ingresso (input) e uno di uscita (output). L’unità di elaborazione è a sua volta costituita da: un’unità logico-aritmetica (ALU), che si occupa di effettuare le istruzioni primitive in grado di essere eseguite direttamente dalla macchina; un accumulatore, che è un registro di memoria particolare ove vengono collocati i dati durante un’operazione di calcolo; un’unità di controllo che governa l’esecuzione sequenziale delle operazioni e coordina le componenti della macchina; un contatore delle istruzioni, che segnala il numero d’ordine dell’istruzione successiva da eseguire. Anche quella di von Neumann è una macchina universale, in grado cioè di eseguire in linea di principio qualsiasi processo algoritmico, posto che abbia a disposizione sufficienti risorse di tempo e memoria. Non è difficile riconoscere in questo modello la struttura fisica di un computer: CPU, memoria RAM, disco rigido, tastiera, monitor sono tutte componenti hardware che possono facilmente essere incasellate in una delle componenti logiche del modello di von Neumann. A dire il vero, quasi tutti i moderni computer digitali, dai piccoli personal fino ai grandi mainframe, sono fondamentalmente variazioni sul tema della macchina di von Neuman, come viene attualmente denominata. Nella macchina di von Neumann sia i dati reali sia le istruzioni primitive sono codificate mediante i due simboli della notazione numerica binaria. Questa codifica viene detta linguaggio macchina. Un aspetto interessante della notazione binaria è che le operazioni fondamentali sui numeri in cifre binarie equivalgono a operazioni logiche del calcolo proposizionale, come mostrò alla metà dell’800 il matematico inglese George Boole. Una
macchina che calcola funzioni sui numeri naturali in notazione binaria compie operazioni logiche, e viceversa: dipende dall’interpretazione che viene attribuita ai simboli. La notazione binaria e l’algebra di Boole presentano anche notevoli vantaggi dal punto di vista ingegneristico: possono infatti essere facilmente implementate a livello fisico, attraverso circuiti elettrici bistabili. Esattamente ciò che avviene mediante i transistor di un computer.
2.9
Anatomia del computer
I sistemi informativi comprendono un’ampia varietà di dispositivi, tra cui elaboratori, fax, stampanti, collegamenti di rete e persino trasmettitori satellitari. Non è necessario comprendere in dettaglio come funzionano questi dispositivi, ma conoscere i princìpi che regolano i sistemi digitali è importante anche per chi vuole semplicemente leggere riviste specializzate di informatica o comprare apparecchiature per la casa e l’ufficio. Tra i numerosi dispositivi che fanno parte delle tecnologie informative, il più importante è senza dubbio il computer (Figura 2.22).
Dentro il computer Al giorno d’oggi pochi sanno cosa c’è sotto il cofano della loro auto, ma quando le macchine in circolazione erano ancora poche era utile conoscerne le parti costituenti per essere in grado di ripararle o di migliorarne il rendimento. Anche se non riparerete mai un computer da soli, qualche volta vi capiterà di dover aggiungere dei componenti. Si potrebbe trattare di un’operazione semplice come collegare una stampante o complicata (non molto, a dire la verità) come aprire il computer per inserirvi una scheda fax. In questi casi, può essere utile conoscere gli elementi che permettono il funzionamento dell’elaboratore. A questo scopo, le illustrazioni di queste pagine servono a identificare alcuni dei principali componenti che si trovano all’interno di un computer.
La scheda madre All’interno del computer troviamo innanzitutto la scheda madre (Figura 2.23), che contiene quasi tutti i circuiti a cui sono collegati il microprocessore, la memoria, l’alimentatore e altri dispositivi ancora.
L’architettura del computer e la CPU 37
Le prese sul retro dell’elaboratore, chiamate porte, servono per connettere al computer le periferiche come la tastiera e la stampante, mediante le quali è possibile immettere e ricevere dati.
Gli slot di espansione servono per inserire le schede degli adattatori, che contengono una serie di componenti elettronici volti a potenziare o espandere le prestazioni del computer. Per esempio, in uno slot si può installare un fax/modem interno.
Il bus è un insieme di collegamenti che permettono lo scambio di dati (input e output) tra i vari componenti del computer.
L’unità centrale di elaborazione (CPU) controlla tutte le funzioni del computer, esegue le operazioni logico-aritmetiche ed elabora i dati ricevuti.
Figura 2.22 Dentro il computer.
Figura 2.23 Una scheda madre (per gentile concessione della Asus).
I dispositivi di memorizzazione come le chiavi USB, il disco fisso (o hard disk) e le unità per CD-ROM e nastri magnetici consentono di immagazzinare programmi e dati.
La memoria centrale mantiene memorizzati i programmi che si stanno utilizzando (per esempio Word o Excel) e i dati in fase di elaborazione (come una lettera o una base di dati). È costituita da minuscoli chip di silicio contenenti migliaia di transistor, cioè i componenti che memorizzano i dati, e può essere installata sia sulla scheda madre sia sulle schede plug-in.
38
Capitolo 2
2.10 L’unità centrale di elaborazione: il microprocessore L’unità centrale di elaborazione (Central Processing Unit, CPU) è il centro nevralgico del computer. In tutti i desktop e i notebook, e in quasi tutti gli altri elaboratori, la CPU è costituita da un microprocessore, il dispositivo che ha reso possibile la realizzazione dei microcomputer. Le CPU sono ricavate da sottili lamine di silicio (chip), di facile ed economica produzione. Ogni chip contiene milioni di piccolissimi interruttori acceso/spento, i transistor, collegati tra loro da tracce estremamente sottili di alluminio. I transistor e i fili di collegamento formano circuiti che elaborano dati e consentono così ai computer di svolgere i più svariati compiti. Dal 1971 a oggi, il numero di transistor per chip è passato da 2300 a 2,4 miliardi, rendendo i moderni microprocessori milioni di volte più rapidi dei loro predecessori.
Un’evoluzione continua Negli ultimi anni, le case produttrici hanno introdotto microprocessori sempre più potenti. Poiché ogni azienda in genere produce una serie di chip compatibili tra loro, i microprocessori vengono catalogati per famiglie. Tra queste la più diffusa, perlomeno stando alle statistiche di vendita, è la famiglia Intel. Altre famiglie sono prodotte da AMD, IBM, Motorola, Sun ecc.
La compatibilità tra microprocessori diversi
Figura 2.24 Un microprocessore della Intel (per gentile concessione della Intel).
• è possibile che un programma che sfrutta le innovazioni dell’ultimo microprocessore di una famiglia non funzioni correttamente con i modelli precedenti; • i programmi scritti per un microprocessore della Intel di norma non possono essere eseguiti su un chip della Motorola; di conseguenza, i programmi per Windows in genere non possono essere eseguiti su un computer Apple, e viceversa (tuttavia è possibile far eseguire un programma non compatibile ricorrendo all’emulazione, vale a dire utilizzando hardware e software aggiuntivi che fanno operare l’elaboratore come se avesse a disposizione il microprocessore necessario) (Figura 2.25).
Coprocessori e processori paralleli Dato che il microprocessore svolge un gran numero di funzioni, spesso in momenti fondamentali
I microprocessori sono dispositivi molto potenti. Basti pensare che un singolo microprocessore ha una potenza pari a quella dei mainframe che venivano utilizzati nei centri di calcolo delle grandi compagnie verso la metà degli anni Ottanta (Figura 2.24). Se le differenze tra i microprocessori di una stessa famiglia sono notevoli, quelle tra i chip della Intel e della Motorola sono ancora più rilevanti. Tali discrepanze non comportano soltanto un diverso rendimento del microprocessore, ma determinano anche quali programmi possono essere eseguiti su un computer: • i programmi scritti per essere eseguiti sui primi microprocessori della Intel, l’8086 o l’8088 utilizzati per il primo PC dell’IBM, funzionano in genere anche con i modelli più recenti della stessa famiglia;
Figura 2.25 Il processore INTEL ® Core i7 (per gentile concessione della Intel).
L’architettura del computer e la CPU 39
286, 386, 486... Pentium e multi-core Il successo dei microprocessori della linea Intel indusse alcune aziende concorrenti, come Advanced Micro Devices e Cyrix, a clonarli, approfittando del fatto che un numero non può essere un marchio registrato. La Intel, infatti, identificava i propri chip con numeri come 386 e 486. Dopo alcune battaglie legali, per meglio tutelare i propri prodotti dalla concorrenza sleale, la Intel decise di non chiamare il nuovo microprocessore 586, ma di adottare il nome Pentium. Il termine multi-core, invece, è utilizzato per CPU composte da due o più “core”. Un core è un nucleo di processore fisico montato nello stesso involucro in modo da comporre un elemento unico. I primi processori multi-core erano composti da due core: esemplari di Intel sono arrivati alla fine del 2006 con il processore Core 2 Extreme Kentsfield prima e Core 2 Quad poi, mentre la rivale AMD ha lanciato i nuovi Phenom solo alla fine del 2007.
bili, nei telefoni, nei termostati e persino nelle schede telefoniche e nelle carte di credito (Figure 2.26, 2.27 e 2.28). È grazie ai microprocessori che il telefono può ricomporre automaticamente un numero, che il termostato può regolare la temperatura e che si può controllare il flusso di benzina in modo da ridurre i consumi dell’auto.
Figura 2.26
dell’attività di elaborazione si verificano dei rallentamenti. Per velocizzare le prestazioni del computer si possono aggiungere altri microprocessori, detti coprocessori, i quali, sotto il controllo della CPU, svolgono compiti specifici che di norma richiedono un gran dispendio di tempo. Per esempio, i coprocessori possono essere impiegati per accelerare i tempi di visualizzazione sullo schermo o per migliorare l’elaborazione delle immagini e dei suoni. I coprocessori sono un tipo particolare di processore parallelo. In genere due o più processori possono condividere alla pari le altre risorse del sistema (come la memoria) operando indipendentemente l’uno dall’altro, ma il sistema operativo deve coordinarne l’attività.
I costi dell’elaborazione dei dati
L’evoluzione dei microprocessori Intel.
&38 0HPRULD GL VLVWHPD
6LVWHPD GL LQJUHVVR H XVFLWD
&RSURFHVVRUH $ &38
&DFKH 0HPRULD GL VLVWHPD
&38
6LVWHPD GL LQJUHVVR H XVFLWD
&DFKH
%
Figura 2.27
(A) Coprocessori. (B) Multiprocessori.
L’avvento del microprocessore ha avuto un forte impatto sui costi dell’elaborazione dei dati. Secondo le stime, nel 1978, prima della diffusione capillare dei PC, il costo di un’unità di velocità di elaborazione superava i 1000 dollari. Già nel 1982, però, tale costo era sceso a meno di 200 dollari, nel 1995 era di soli 50 centesimi e tuttora continua a calare.
I microprocessori incorporati I microprocessori non sono utilizzati soltanto negli elaboratori, ma si trovano anche nelle automo-
Figura 2.28 Una scheda con microprocessore incorporato.
40
Capitolo 2
2.11 Lâ&#x20AC;&#x2122;unitĂ centrale di elaborazione: i miglioramenti Spesso, a proposito di un elaboratore, si sentono dire frasi oscure come: â&#x20AC;&#x153;Ha un processore CISC a 64 bit e 3 GHz.â&#x20AC;? Queste parole stanno a indicare la potenza e la velocitĂ del computer. Esistono essenzialmente tre modi per migliorare le prestazioni di un sistema: espandere la sua capacitĂ , aumentarne la velocitĂ o renderlo piĂš efďŹ ciente. Questi miglioramenti vengono apportati praticamente a tutti i computer.
porato, indicato in genere anche in italiano con la parola inglese clock, che ha la funzione di stabilire la velocitĂ di tutte le operazioni svolte dal computer. Questa velocitĂ viene misurata in megahertz (MHz o milioni di cicli al secondo). In genere, piĂš alta è la velocitĂ del clock, maggiore è la velocitĂ dellâ&#x20AC;&#x2122;elaboratore. Tuttavia, non tutti i microprocessori elaborano le istruzioni nello stesso numero di cicli. Il clock è quindi un vero indicatore della velocitĂ soltanto allâ&#x20AC;&#x2122;interno di una stessa famiglia di microprocessori. Per esempio, un Pentium IV a 3 GHz è sicuramente piĂš veloce di un Pentium III a 1 GHz, mentre i microprocessori AMD sono altrettanto veloci pur avendo una velocitĂ del clock inferiore.
Migliorare la capacitĂ dati Ovviamente, le strade di recente costruzione, piĂš ampie, consentono un trafďŹ co piĂš scorrevole rispetto a quelle vecchie e strette. Lo stesso vale per gli elaboratori: maggiore è la quantitĂ di dati che un computer può trasmettere ed elaborare, maggiori sono la sua velocitĂ e la sua potenza. I primi PC potevano elaborare soltanto otto bit alla volta. In breve tempo, comunque, arrivarono prima a sedici, poi a trentadue e successivamente a sessantaquattro bit, e ancora oggi le loro prestazioni sono in continuo miglioramento. Le workstation, tutti gli elaboratori di grandi dimensioni, invece, sono giĂ in grado di elaborare centoventotto bit alla volta (a volte, per indicare il numero di bit che un computer può trattare simultaneamente si usano i termini lunghezza di parola o dimensione di parola; Figura 2.29).
Migliorare la velocitĂ di elaborazione Un altro modo di migliorare le prestazioni dellâ&#x20AC;&#x2122;elaboratore consiste nellâ&#x20AC;&#x2122;aumentare la velocitĂ del microprocessore. I chip hanno un orologio incor-
ELW
Migliorare lâ&#x20AC;&#x2122;efficienza Gli elaboratori sono programmati per svolgere vari compiti mediante una serie di istruzioni semplici, che nel loro complesso sono dette insieme di istruzioni del microprocessore. Questo insieme è come un vocabolario. PiĂš grande è il vocabolario, maggiore è il numero di frasi che si possono fare. Allo stesso modo, un insieme di istruzioni molto grande consente al microprocessore di svolgere unâ&#x20AC;&#x2122;ampia varietĂ di funzioni. I microprocessori con un insieme di istruzioni complesso sono detti CISC (Complex Instruction Set Chips). Sorprendentemente, la velocitĂ di questi chip può subire notevoli rallentamenti a causa della grande quantitĂ di operazioni che essi svolgono. Tuttavia, poichĂŠ per eseguire lâ&#x20AC;&#x2122;80% di queste operazioni viene effettivamente utilizzato soltanto il 20% delle istruzioni, queste possono essere ridotte. I chip che ricorrono a un insieme di istruzioni ridotto sono chiamati RISC (Reduced Instruction Set Chips) (Figura 2.30) e in molte circostanze sono piĂš veloci dei CISC. Se un CISC può avere un insieme di piĂš di 300 istruzioni, un RISC arriva a meno di 200. Inoltre, i RISC hanno una speciale architettura interna che consente lâ&#x20AC;&#x2122;esecuzione di piĂš istruzioni in un unico ciclo di
ELW
Figura 2.29 Lunghezze di parola di 8 e 32 bit.
Figura 2.30 Il processore RISC PowerPC (per gentile concessione della Sun Microsystems).
Lâ&#x20AC;&#x2122;architettura del computer e la CPU 41
elaborazione, e contenendo molti meno elementi rispetto ai CISC sono anche piĂš economici e piĂš semplici da progettare. Attualmente i microprocessori CISC hanno quasi raggiunto la potenza dei processori RISC. Per fare un esempio, si è avuto un avvicinamento delle velocitĂ dei due tipi di processori: nel 1995 la velocitĂ del piĂš rapido processore RISC era il doppio di quella del piĂš veloce CISC della Intel. Nel 1996 il divario era giĂ stato quasi colmato: il microprocessore della Intel aveva raggiunto il 90% della velocitĂ del RISC. Al ďŹ ne di migliorare le prestazioni di entrambi i tipi di microprocessori, si ha anche la tendenza a utilizzare, per una classe di microprocessori, soluzioni tecnologiche che contraddistinguono lâ&#x20AC;&#x2122;altra classe, rendendo sempre piĂš esili le differenze tra i due tipi di architetture.
La legge di Joy Comparare le prestazioni degli elaboratori è come comparare le auto da corsa: ciò che conta è la velocitĂ . Bisogna comunque tener conto del fatto che operare un raffronto in questi casi è complicato perchĂŠ ci sono molti fattori da considerare. In ogni caso, se la velocitĂ delle auto da corsa viene misurata in chilometri orari, quella dei computer si misura in istruzioni per secondo (IPS); anzi, poichĂŠ gli elaboratori riescono a eseguire molti milioni di istruzioni per secondo, si utilizzano di norma i MIPS, milioni di istruzioni per secondo. Nel 1984 William Joy, uno dei fondatori della Sun Microsystems, formulò lâ&#x20AC;&#x2122;ipotesi che le prestazioni degli elaboratori sarebbero aumentate secondo un indice prevedibile. Utilizzando i MIPS come unitĂ di misura del rendimento, Joy sviluppò la formula oggi nota come Legge di Joy: MIPS
2(anno â&#x20AC;&#x201C;1984)
Nella Figura 2.31 viene illustrato lâ&#x20AC;&#x2122;andamento della legge di Joy. Il primo microprocessore aveva una velocitĂ di circa 6000Â istruzioni per secondo, ovvero 0,006 MIPS, mentre attualmente i microprocessori hanno velocitĂ dellâ&#x20AC;&#x2122;ordine delle migliaia di MIPS.
I benchmark Sia per le case produttrici di computer sia per gli utenti la qualitĂ piĂš importante di un elaboratore è la velocitĂ . Ma come determinare qual è lâ&#x20AC;&#x2122;elaboratore piĂš veloce? Le caratteristiche del sistema, come il tipo di processore usato, forniscono soltanto delle indicazioni molto generiche perchĂŠ ci sono molte altre variabili che determinano lâ&#x20AC;&#x2122;effettivo rendimento di un computer. Per effettuare dei raffronti reali tra i sistemi, sono stati sviluppati appositi programmi benchmark che possono essere eseguiti su vari tipi di elaboratori. La velocitĂ di esecuzione del programma in un sistema dovrebbe indicare la velocitĂ del sistema stesso. Purtroppo, però, il metodo non funziona come dovrebbe. Questo dipende dal fatto che i computer effettuano due tipi fondamentali di calcoli, lâ&#x20AC;&#x2122;elaborazione di numeri interi e le operazioni in virgola mobile (ampiamente usati nella graďŹ ca tridimensionale), e microprocessori e sistemi possono essere messi a punto per operare meglio in una delle due aree, cosĂŹ come i programmi benchmark possono essere progettati in modo da dare piĂš importanza a unâ&#x20AC;&#x2122;area piuttosto che allâ&#x20AC;&#x2122;altra. Di conseguenza, se una casa costruttrice di computer vuole ottenere un risultato migliore rispetto alla concorrenza, apportando le dovute modiďŹ che al sistema e selezionando attentamente il benchmark può facilmente raggiungere il suo scopo.
2.12 La memoria: ROM e RAM Per svolgere le sue funzioni un elaboratore deve avere una memoria dove archiviare i programmi e i dati necessari. Esistono diversi chip di memoria, ma fondamentalmente si possono distinguere due categorie: la ROM (Read Only Memory, memoria di sola lettura) e la RAM (Random Access Memory, memoria ad accesso casuale). Entrambe sono molto veloci perchĂŠ i dati vengono trasmessi elettronicamente e non hanno parti mobili. I chip piĂš veloci, per intenderci, accedono ai dati nel tempo che la luce impiega per percorrere poco meno di un metro.
0LOLRQL GL LVWUX]LRQL SHU VHFRQGR
Lâ&#x20AC;&#x2122;analogia con lo Scarabeo
Figura 2.31 La legge di Joy.
La memoria dellâ&#x20AC;&#x2122;elaboratore si può paragonare al famoso gioco dello Scarabeo. La ROM è il libretto del regolamento: si può leggere ma non è possibile cambiarla. La RAM, invece, è come la tabella di gioco: i dati si possono aggiungere, togliere e spostare liberamente (Figura 2.32).
42
Capitolo 2
(2
$%
6
% /
6 7 2
8 3 8
+
(
(< (
$ 6
9 ( 5
Scarabeo
7
5
$
$
%
(
:
5
/ / 2
%
$
$
$
(
&
&
(
6
6
8( <
2
5 &$
2 5$0
/LEUHWWR GHOOH LVWUX]LRQL
520
Figura 2.32 Il gioco dello Scarabeo.
.% 3UHPHUH 'HO SHU FDULFDUH LO SURJUDPPD
520 Figura 2.33 Memoria di sola lettura.
La memoria ROM La ROM (Figura 2.33), essendo statica e inalterabile, è chiamata anche memoria non volatile. Il suo contenuto viene predisposto dalla casa produttrice al momento della fabbricazione e non può essere modificato dall’utente. Pertanto, lo spegnimento dell’elaboratore non altera i dati in essa contenuti, che vengono richiamati automaticamente quando il computer viene riacceso. Questi dati sono costituiti di norma dai programmi e dalle istruzioni necessarie all’avvio (boot) della macchina, detti anche firmware, che comprendono per esempio le istruzioni eseguite al momento dell’accensione e il programma di configurazione del sistema che si utilizza per cambiare impostazioni come l’ora e la data.
La memoria RAM La RAM (Figura 2.34), detta anche memoria centrale o memoria dell’utente, serve a memorizzare un vasto numero di programmi e dati di ogni tipo. Quando caricate un programma o create un documento, i dati che immettete nell’e-
5$0 Figura 2.34 Memoria ad accesso casuale.
laboratore tramite la tastiera sono memorizzati nella RAM. Di solito, quando il computer viene spento, i dati e i programmi presenti in questa memoria vengono cancellati; la memoria centrale è infatti una memoria volatile. Il termine random (“casuale”) indica la modalità di reperimento e accesso ai dati in memoria. Per comprendere in che cosa consiste si pensi alla differenza tra una cassetta e un CD: se vogliamo ascoltare la terza canzone di una cassetta, dobbiamo mandare avanti le prime due canzoni, secondo un accesso di tipo sequenziale. Con un CD, invece, si può andare direttamente alla traccia della terza canzone, mediante un indice contenuto all’inizio del CD. Questo è un accesso random perché permette di accedere “casualmente” a una canzone, senza dover mandare prima avanti le canzoni precedenti.
Tipi di memoria Esistono vari tipi di memoria. Un progettista di computer decide di usare una o l’altra in base a parametri quali la velocità, il costo e la funzione che deve svolgere. DRAM (Dynamic RAM) è il tipo di memoria centrale più diffuso. È chiamata dinamica perché le celle di memoria mantengono i dati solo per breve tempo e devono quindi essere aggiornate centinaia di volte al secondo. Riportiamo di seguito (dal più datato al più recente) alcuni tipi di DRAM che hanno avuto, o avranno, grande diffusione nei sistemi desktop. • FPM (Fast Page Mode) DRAM. Era la prima tipologia di memoria per i sistemi desktop. • EDO (Extended Data Out) DRAM. Leggermente più veloce della FPM. Una sua variante, chiamata BEDO (Burst EDO) DRAM, partendo dall’idea che gli indirizzi di memoria vengano richiesti dalla CPU in successione, invia subito l’indirizzo richiesto e quello successivo. • SDRAM (Synchronous DRAM). È in grado di sincronizzarsi con il clock che controlla la CPU. Tale capacità rende i trasferimenti di dati più veloci e affidabili perché vengono eliminate le discrepanze di tempo. Questo tipo di memoria ha sostituito la EDO DRAM. • DDR DRAM (Double Data Rate Memory). Negli ultimi tre anni la SDRAM standard è stata sostituita dalla tecnologia DDR DRAM, che, pur essendo simile, è in grado di trasportare il doppio dei dati nello stesso ciclo di accesso. Recentemente è stata introdotta un’ulteriore evoluzione di questa memoria, la RAM DDR2, che sposta una quantità di dati quadrupla rispetto alla versione originaria.
L’architettura del computer e la CPU 43
Tutto Shakespeare in memoria Nel 1976 i chip di memoria potevano immagazzinare 16 000 bit di dati. Oggi sono in grado di memorizzare 512 miliardi di bit. Uno dei chip più recenti riesce quindi a contenere in memoria circa 5000 copie dell’opera omnia di Shakespeare, oppure circa 70 000 immagini non compresse con risoluzione 640 u 480 in colori reali (16 milioni di colori).
Quando è abbastanza? I primi PC dell’IBM avevano 128 kilobyte di memoria. Oggi si consiglia un sistema che abbia almeno 4 GByte, vale a dire una memoria circa 16 000 volte più grande.
La capacità del chip
SRAM, memorizzano dati analoghi a quelli contenuti nella memoria centrale ma, a differenza di questa, la memoria flash è non volatile, e quindi i dati sono conservati anche quando il computer viene spento. I dispositivi di memoria flash, non avendo parti mobili, sono molto veloci, per cui in futuro potrebbero sostituire le unità meccaniche del disco fisso, più lente.
I moduli di memoria SIMM e DIMM In quasi tutti i sistemi per aggiungere memoria non si installano singoli chip, bensì moduli di memoria (Figura 2.35). Si tratta di circuiti stampati che contengono chip di memoria e che a loro volta sono inseriti in appositi slot della scheda madre. Esistono due tipi di moduli: il SIMM (Single In-line Memory Module), e il DIMM (Dual In-line Memory Module) (Figura 2.36). I nomi si riferiscono all’involucro, non al tipo di chip che contengono. I DIMM hanno ormai completamente soppiantato i SIMM perché possono essere usati singolarmente invece che in coppia. Nei portatili viene adottato un particolare modulo DIMM dalle dimensioni più piccole e dai consumi più bassi, denominato SODIMM.
Quando si acquista un computer è importante valutare la capacità dei chip che vengono installati negli slot riservati per la memoria. Al fine di prevedere una possibile espandibilità della memoria, occorre installare delle schede di memoria che consentano di raggiungere la capacità desiderata, ma che non richiedano tutti gli slot; lasciandone alcuni liberi, si potrà in futuro aggiungere ulteriore memoria senza dover sostituire quella già installata.
• RDRAM (Rambus™ DRAM). È una tecnologia di memoria che la Intel ha tentato di introdurre per alcune sue piattaforme Pentium, senza molto successo, visto l’alto costo rispetto alla DDR. La RDRAM è molto veloce ma per utilizzarla il sistema deve essere leggermente modificato. Questo tipo di memoria invia i dati attraverso un “canale” con un’ampia banda passante a una velocità dieci volte maggiore di quella della DRAM standard. La SRAM (Static RAM) è molto più grande, veloce e costosa, anche in termini di consumi, della DRAM. È una memoria statica e pertanto non ha bisogno di essere continuamente aggiornata. Data la sua velocità, la SRAM viene utilizzata soprattutto in una speciale area della memoria detta cache (vedi approfondimento nel Paragrafo 3.12). I chip di memoria flash sono i dispositivi di memorizzazione più recenti. Questi chip, simili ai chip della
Figura 2.35
Un chip di memoria flash.
Figura 2.36 Toshiba).
Un DIMM (per gentile concessione della
44
Capitolo 2
2.13 La memoria: altri tipi e funzioni Oltre alla RAM contenuta nei chip di memoria del sistema, esistono ulteriori tipi di memoria e altri scopi per cui utilizzarla, per esempio per memorizzare un maggior numero di dati, per rendere lâ&#x20AC;&#x2122;accesso a questi ultimi piĂš veloce o per spostarli allâ&#x20AC;&#x2122;interno di unâ&#x20AC;&#x2122;applicazione o tra piĂš applicazioni.
La memoria virtuale I programmi e i ďŹ le molto estesi possono eccedere la memoria disponibile anche se questa è molto grande. Per evitare tali inconvenienti i moderni sistemi operativi, ma anche molti programmi applicativi, memorizzano parte dei dati e dei programmi al momento non utilizzati fuori dalla RAM. Questo tipo di gestione della memoria è chiamato memoria virtuale (Figura 2.37). In un sistema che utilizza la memoria virtuale, soltanto le parti del programma o del ďŹ le al momento necessarie vengono memorizzate nella memoria del computer; il resto è immagazzinato su un drive del disco ďŹ sso. Quando lâ&#x20AC;&#x2122;elaboratore ha bisogno di una parte del ďŹ le memorizzata sullâ&#x20AC;&#x2122;hard disk, vi trasferisce dei dati dalla RAM per avere piĂš memoria a disposizione e poi sposta i dati di cui ha bisogno dallâ&#x20AC;&#x2122;hard disk alla RAM stessa. Quando scorrete un documento molto esteso, per esempio, soltanto una parte è presente nella RAM. Il resto del documento rimane sullâ&#x20AC;&#x2122;hard disk ďŹ nchĂŠ non arrivate a quella parte. La memoria virtuale porta a una riduzione del costo totale del sistema perchĂŠ memorizzare dati su unâ&#x20AC;&#x2122;unitĂ hard disk è piĂš economico che aggiungere ulteriori chip di memoria. Anche se in realtĂ i prezzi sono estremamente ďŹ&#x201A;uttuanti, nel 2016 un gigabyte nello spazio di un disco ďŹ sso costa circa 0,1 euro, mentre un gigabyte in un
Che cosa significa virtuale? Il termine â&#x20AC;&#x153;virtualeâ&#x20AC;? indica che una cosa non esiste fisicamente, ma soltanto logicamente. Per esempio, la RAM di un computer è una realtĂ fisica in quanto costituita da un insieme di chip, mentre quando un elaboratore opera come se avesse una memoria piĂš grande di quella effettiva si parla di memoria virtuale. Questo concetto ha preso piede anche in altri campi, come quelli della realtĂ virtuale e dellâ&#x20AC;&#x2122;ufficio virtuale. Nella prima, grazie a un elmetto o a speciali occhiali, è possibile vedere una realtĂ generata unicamente dal computer. Lâ&#x20AC;&#x2122;ufficio virtuale, invece, è chiamato cosĂŹ perchĂŠ non si trova in un edificio vero e proprio, ma è costituito semplicemente da persone collegate fra loro tramite i computer. In ogni caso, la parola â&#x20AC;&#x153;virtualeâ&#x20AC;? è diventata ormai una moda e viene quindi usata nei contesti piĂš disparati.
chip di memoria costa circa 15 euro, ben centocinquanta volte di piĂš. Allo stesso tempo porta a un rallentamento nellâ&#x20AC;&#x2122;esecuzione quando i dati devono essere spostati da RAM a disco ďŹ sso e viceversa.
La cache Quando un elaboratore effettua delle operazioni, trasferisce spesso dati tra la CPU, il disco ďŹ sso e la memoria. Per elaborare i dati, questi devono essere prima spostati dal posto in cui sono memorizzati alla CPU. PoichĂŠ questa operazione richiede un certo tempo, sono state sviluppate delle tecniche per accelerarla. La piĂš comune consiste nel memorizzare i dati in una speciale area di memoria ad alta velocitĂ chiamata cache, localizzata tra la CPU e la memoria centrale (Figura 2.38).
, GDWL LQ HFFHVVR ULVSHWWR DOOR VSD]LR GLVSRQLELOH QHOOD 5$0 YHQJRQR LPPDJD]]LQDWL VXOO KDUG GLVN ILQR DO PRPHQWR GHOO XWLOL]]R
5$0
$OO RFFRUUHQ]D L GDWL YHQJRQR WUDVIHULWL QHOOD 5$0 GD GRYH DOWUL GDWL SDVVDQR QHOO¡KDUG GLVN FUHDQGR SRVWR
Figura 2.37 La memoria virtuale.
+DUG GLVN
L’architettura del computer e la CPU 45 Negozio
Frigorifero
Panino
Cache hit
Memoria
Cache Cache miss
Figura 2.38
La memoria cache.
Quando il processore ha bisogno di determinati dati, controlla innanzitutto se questi sono presenti nella cache; se la risposta è negativa, li ricarica dalla più lenta memoria centrale. Per comprendere meglio la funzione della cache, può essere utile ricorrere a un’analogia con un elettrodomestico di uso comune, il frigorifero. Quando volete mangiare un panino (i dati), di norma non andate a comprarlo direttamente in un negozio (RAM), ma guardate innanzitutto nel frigorifero (cache). Se nel frigo trovate il necessario per prepararlo (cache hit) non sarà necessario andare a comprarlo e quindi risparmierete tempo. Se invece il frigo è vuoto (cache miss) dovrete andare fino al negozio. Ma come sceglie il computer che cosa memorizzare nella cache? Fondamentalmente tira a indovinare. Quando l’utente richiede dei dati che l’elaboratore deve reperire nella RAM o sull’hard disk, insieme a questi vengono trasferiti anche i dati successivi. L’idea alla base di questo procedimento è che se viene richiesto il primo nome presente in una base di dati, il nominativo richiesto successivamente sarà il secondo nome della lista. Sia il primo sia il secondo nome vengono quindi spostati nella cache in modo che la CPU li possa reperire direttamente da lì invece che caricarli dall’hard disk. Va detto che l’elaboratore non sempre riesce a stabilire correttamente il contenuto della cache. La cache utilizza speciali chip di memoria; spesso si tratta di chip SRAM. Su alcuni sistemi questi chip sono sei volte più veloci della memoria normale, ma hanno un costo molto superiore, ed è proprio questo che impedisce il loro utilizzo per l’intera memoria del sistema. Si distinguono due livelli di memoria cache: • la cache di livello 1 (chiamata anche cache interna, cache primaria o L1) fa fisicamente parte del chip del microprocessore e di norma nei sistemi desktop è in grado di contenere fino a 256 kilobyte; • la cache di livello 2 (chiamata anche cache esterna, cache secondaria o L2) è costituita da
chip di memoria installati in speciali alloggiamenti della scheda madre e può contenere fino a 2 MB o anche di più.
I buffer Alcuni programmi assegnano a una piccola parte della RAM la funzione di buffer. I buffer hanno varie applicazioni. Per esempio, mantengono in memoria i dati immessi per mezzo della tastiera finché questi non vengono accettati dalla CPU (se il buffer è pieno, il computer emette un bip per segnalare che da quel momento i dati immessi non vengono più memorizzati, e pertanto vanno reinseriti dopo che la CPU ha svuotato il buffer). Un’altra applicazione consiste nel salvare temporaneamente una registrazione degli ultimi comandi usati o dell’ultima parte di testo cancellata, in modo che sia possibile recuperarli in caso di errore. Inoltre, un buffer (chiamato a volte clipboard) può essere utilizzato come spazio di memoria nelle operazioni di “taglia e incolla” e di “copia e incolla”. Per esempio, si può creare un grafico in un foglio elettronico, copiarlo nella clipboard, aprire il programma di videoscrittura e incollarlo quindi in una relazione (Figura 2.39).
2.14 I bus di input e output: introduzione All’interno dell’elaboratore ci sono dei collegamenti che consentono la trasmissione delle informazioni tra i vari componenti del sistema. Questi collegamenti formano il bus, cioè la linea di comunicazione attraverso la quale passano tutte le informazioni, siano esse interne o esterne.
Il bus Il bus di un computer è una sorta di autostrada dei dati. È costituito da un insieme di collegamenti in rame localizzati sulla scheda madre dell’elaborato-
46
Capitolo 2
Clipboard (buffer) Foglio elettronico
Programma di videoscrittura
Figura 2.39 La clipboard.
re. L’idea alla base del bus è relativamente semplice. Esistono solo due modi per connettere tutti i componenti: collegare ogni dispositivo a tutti gli altri oppure collegare tutti i dispositivi a un unico insieme di linee, il bus. Grazie al bus la progettazione è più semplice, sono necessari meno circuiti e di conseguenza i costi sono più contenuti. Inoltre, per aggiungere nuovi componenti al sistema non si deve fare altro che collegarli al bus. Nei primi sistemi i bus erano chiamati bus del processore perché oltre alle schede di espansione indirizzavano anche la memoria. Questa veniva aumentata per mezzo di apposite schede inserite negli slot collegati al bus. Quando la velocità dei processori superò quella delle periferiche, però, la memoria dei nuovi sistemi fu indirizzata separatamente. Di conseguenza, non si può più aggiungere memoria tramite le schede di espansione perché essa richiede un bus più rapido adibito soltanto a quella funzione.
I bus di sistema Il bus di sistema è semplicemente un gruppo di collegamenti che uniscono la CPU agli altri dispositivi del computer. Per esempio, quando una periferica è collegata al bus con una scheda di adattatore è connessa anche alla CPU. Il bus di sistema comprende linee di indirizzi e linee di dati. Le linee di indirizzi trasmettono l’indirizzo dei dati in memoria, le linee di dati trasmettono invece i bit dei dati stessi. Il numero di linee di dati determina l’ampiezza del bus: più linee ci sono, più sono i bit che possono essere inviati nello stesso momento. Dai primi bus a otto bit si è quindi passati ai bus a sedici bit e ora, per adeguarli al rendimento dei microprocessori, a quelli a trentadue bit. Alcuni sistemi di fascia medio-alta, co-
munque, utilizzano già bus a sessantaquattro bit e a centoventotto bit (Figure 2.40 e 2.41).
I bus locali Con la diffusione delle interfacce grafiche utente come Windows, alcune parti del sistema sono diventate dei colli di bottiglia che influiscono negativamente sulle prestazioni dell’elaboratore. Uno di questi intasamenti è provocato dall’aggiornamento del video, che costituisce un problema piuttosto complicato. Uno schermo ad alte prestazioni ha di norma 1600 pixel di larghezza per 1200 di altezza, per un totale di oltre 1 900 000 pixel che devono essere aggiornati almeno sessanta volte al secondo. Tale operazione comporta il trasferimento di ingenti quantità di bit che rischiano di sovraccaricare e dunque di rallentare le funzioni del sistema. Per risolvere questo problema sono stati sviluppati dei bus locali grazie ai quali le periferiche sono state tolte dal bus di sistema e collegate, assieme alla CPU e alla memoria, a una linea di trasmissione dei dati più ampia. In questo modo, i dati possono essere trasmessi molto più velocemente dalla memoria al microprocessore e da questo allo schermo o ad altri dispositivi.
&38
Figura 2.40
I bus di sistema.
L’architettura del computer e la CPU 47
Figura 2.41 Un bus su una scheda madre (per gentile concessione della Intel).
I primi elaboratori utilizzarono dapprima i bus ISA (Industry Standard Architecture) e successivamente gli EISA (Extended Industry Standard Architecture). Questi bus inizialmente trasferivano 16 bit a 8 MHz e poi 32 bit a 10 MHz. Entrambi furono abbandonati perché non erano in grado di reggere il passo con il continuo aumento di potenza dei microprocessori. Con la creazione di microprocessori sempre più potenti, infatti, era essenziale che le prestazioni degli altri componenti del sistema aumentassero di pari passo per evitare che divenissero dei colli di bottiglia per il sistema stesso. Per ottimizzare le prestazioni del bus si può ricorrere a due espedienti: aumentarne la velocità o ampliare la linea di trasmissione dei dati. È un po’ come se, dovendo rendere il traffico più scorrevole su un tratto autostradale, si scegliesse di aumentare il limite
*UDILFD 3&,
di velocità o di aggiungere altre corsie. Grazie a questo genere di innovazioni nel corso degli anni sono state sviluppate nuove tecnologie per i bus sempre più veloci ed efficienti. Dalla fine degli anni Novanta nei computer di tipo desktop è stato introdotto il bus PCI (Peripheral Component Interconnect), sviluppato dalla Intel, e poi controllato da una commissione normativa che regola tutti i settori dell’industria. Il bus PCI è molto più efficiente dei suoi predecessori: per esempio, mentre il PCI può trasmettere fino a 256 MBps, l’ISA riusciva a trasferire soltanto 5 MBps (16 Mbps come limite teorico per l’ISA a 16 bit). Ma anche il PCI si è dimostrato ben presto insufficiente per trasferire in modo efficace l’enorme quantità di bit richiesta dalle sempre più avanzate capacità di elaborazione grafica e multimediale dei moderni computer (Figure 2.42 e 2.43).
9LGHR ULSUHVH
%XV ORFDOH 3&, 86%
&' 520 ,QWHUIDFFLD (,'( GHO EXV 3&, Figura 2.42 Il bus PCI (per gentile concessione della Intel).
86%
-R\VWLFN
7HOHIRQR
48
Capitolo 2
Gli slot di espansione presenti all’interno dell’elaboratore permettono di installare le schede degli adattatori, che estendono le prestazioni del sistema (Figura 2.44).
La tecnologia Plug and Play /H OLQHH /H OLQHH GHO EXV ORFDOH GHO EXV GL VLVWHPD Figura 2.43 Le linee di collegamento del bus PCI.
Di conseguenza per il collegamento delle schede grafiche ai sistemi desktop è stato sviluppato il bus AGP (Accelerated Graphics Port), in grado di supportare senza problemi la visualizzazione di video e grafica tridimensionale: la velocità originale di questo bus era di 266 MBps ma la sua ultima versione (che ha una frequenza di 533 MHz) trasferisce 2,1 GBps. Ma ovviamente l’innovazione non si è fermata. La più recente evoluzione nelle tecnologie dei bus locali si chiama PCI Express, e la sua versione 4.0 è in fase di introduzione nel mercato proprio mentre scriviamo. Questo nuovo bus presenta molte novità: in primo luogo il fatto di essere una connessione seriale bidirezionale. Il trasferimento dei dati da e verso un dispositivo PCI-E avviene mediante una o più corsie (lane), ciascuna delle quali è in grado di trasportare 2,5 GBps. Di conseguenza si tratta di una tecnologia che è in grado di svilupparsi con estrema facilità.
Se volete aggiungere un nuovo componente al vostro sistema, come per esempio un modem o una scheda fax, spesso è necessario spegnere il computer e probabilmente anche configurare il nuovo dispositivo in modo da renderne possibile il funzionamento all’interno del sistema. Per superare questi problemi, alcuni sistemi operativi presentano caratteristiche Plug and Play, sono cioè in grado di riconoscere e di configurare automaticamente i nuovi dispositivi hardware. Per fare questo, il sistema operativo carica o scarica i driver delle periferiche che l’utente vuole collegare o scollegare, siano queste stampanti, modem o schede di rete. Quando installate un nuovo dispositivo in un computer in funzione, il sistema operativo lo riconosce automaticamente e carica il driver corrispondente senza riavviare il sistema. La tecnologia Plug and Play richiede tre componenti: un sistema operativo, un BIOS (Basic Input-Output System), ovvero una porzione della ROM che ha il compito di controllare lo stato di tutto l’hardware presente, e i dispositivi da installare.
Il sistema di hot docking
2.15 I bus di input e output: le schede degli adattatori e i sistemi multimediali
I computer portatili spesso vengono collegati ai desktop, alle docking station o alle reti. Prima dell’avvento della tecnologia Plug and Play, per collegare o scollegare un portatile era necessario chiudere tutte le applicazioni e spegnere il sistema. Grazie al Plug and Play, invece, è ora possibile
Molti utenti personalizzano il computer per renderlo più adatto alle proprie esigenze. Ciò è possibile grazie agli slot di espansione presenti sulla scheda madre dell’elaboratore, in cui si possono inserire le schede degli adattatori. Gli slot di espansione sono collegati direttamente al bus del sistema, e pertanto le schede che vi vengono inserite operano come se fossero state installate nell’elaboratore fin dall’inizio. Le schede degli adattatori hanno varie funzioni: consentono di visualizzare colori e grafica, di spedire fax, di collegarsi a Internet o di aggiungere l’audio. Altre ancora servono a collegare le periferiche, o sono periferiche esse stesse. Per esempio, è possibile installare una scheda che controlla un drive del disco fisso localizzato in un’altra parte del sistema, oppure installarne una che contiene il drive stesso.
Figura 2.44
Schede negli slot di espansione.
L’architettura del computer e la CPU 49
utilizzare i sistemi di warm e hot docking, che riducono notevolmente il tempo necessario per effettuare il collegamento o lo scollegamento. • Con il warm docking è necessario premere il pulsante standard “Sospendi” del portatile. • Con l’hot docking, invece, non è necessario spegnere il computer né premere il pulsante di sospensione.
I computer portatili All’interno dei computer portatili non c’è molto spazio per gli slot di espansione e le schede di adattatori. Per far fronte a questo problema, alcuni sistemi sono dotati di slot che collegano le schede PC Card (le versioni più datate erano chiamate schede PCMCIA) al bus del sistema. Queste schede, grandi quanto una carta di credito e facilmente installabili, consentono di memorizzare dati, inviare messaggi o collegarsi a una rete. La scheda PC Card è più veloce delle vecchie PCMCIA e al contempo ha consumi più ridotti. Essendo stata progettata per bus a 32 bit, può essere utilizzata per applicazioni potenti come gli adattatori video e i collegamenti alle reti, anche Wireless (Figura 2.45).
I sistemi multimediali Al momento, gli slot di espansione sono utilizzati soprattutto per trasformare i PC in sistemi multimediali in grado di fornire all’utente audio, animazioni e grafica di alta qualità. Queste risorse, impiegate inizialmente nei videogiochi, vanno diffondendosi sempre di più in ambito educativo e nel campo delle presentazioni commerciali e delle dimostrazioni. Un PC, per diventare un siste-
Figura 2.45 Una scheda PC Card (per gentile concessione della U.S. Robotics).
ma multimediale, deve avere almeno una scheda audio, un’unità per leggere ed eventualmente anche scrivere (masterizzare) CD-ROM e DVD, un acceleratore grafico. Queste componenti (salvo le unità di archiviazione) vengono aggiunte tramite schede inserite negli slot di espansione del bus di sistema. • Acceleratore di grafica. Per visualizzare le illustrazioni, i film e le animazioni di alta qualità che caratterizzano i documenti multimediali è necessario un sistema molto potente. Questa operazione risulta infatti piuttosto complessa a causa dell’enorme quantità di informazioni inviate sullo schermo. Per velocizzare la visualizzazione ed evitare che diventi un impedimento per il sistema, i compiti di elaborazione grafica sono stati trasferiti ad appositi microprocessori specializzati detti GPU (Graphic Processing Unit), dotati di memoria RAM specifica e montati su schede di espansione. Oggi le GPU più evolute possono essere potenti quanto e persino più della CPU centrale, e consentono di elaborare animazioni tridimensionali con qualità fotografica in tempo reale. • Unità per lettore CD-ROM e DVD-ROM. Gli oggetti grafici, i suoni, le animazioni e i filmati che compongono i documenti multimediali occupano molta memoria. Per avere tutti questi file su uno stesso disco si ricorre quindi ai CD-ROM e ai più capienti DVD, che hanno una capacità maggiore e costi inferiori rispetto ad altri dispositivi di memorizzazione. Per utilizzare questi dischi, però, il computer deve avere un’unità per la lettura o per la lettura e scrittura di CD-ROM o DVD (queste ultime possono leggere e scrivere anche i CD-ROM). I lettori CD e DVD vanno collegati al sistema mediante cavi che si innestano su appositi chip di controllo presenti sulla scheda madre. • Schede audio. Per consentire a un PC di riprodurre suoni e musica codificati in formato digitale, o di acquisire e digitalizzare audio da fonti analogiche esterne, è necessario utilizzare una speciale scheda audio che di norma va inserita in uno slot (ma le schede madri di più recente generazione integrano direttamente i chip per la codifica/decodifica audio). A tale scheda è poi possibile collegare diffusori, microfoni e cavi audio sia in uscita sia in entrata (per collegare apparati hi-fi al PC). Le schede audio più recenti sono in grado di generare segnali audio digitali (Dolby Digital) e dunque sono dotate anche di uscite per cavi audio digitali da collegare ai moderni sistemi Home Theater.
50
Capitolo 2
2.16 La comunicazione con le periferiche Un sistema informatico è come un impianto stereo in cui i vari componenti, come la piastra di registrazione, il giradischi e i diffusori, sono collegati all’amplificatore principale tramite cavi. I componenti che si collegano al computer sono chiamati periferiche. I più comuni sono la stampante, lo schermo, il modem, la tastiera, il mouse, lo scanner e le unità di memoria di massa esterne (hard disk, lettore CD-ROM e DVD; quelle interne sono collegate mediante cavi a specifici connettori posti sulla piastra madre). Per connettere questi dispositivi al computer, bisogna inserire i loro cavi in apposite prese, dette porte, collocate sul retro dell’elaboratore. È da lì che le informazioni entrano ed escono. Il tipo e il numero di porte varia a seconda dell’elaboratore, ma di norma comprende porte seriali, parallele, Firewire, USB e, più di rado, SCSI (si pronuncia “scasi”).
Le porte del computer Come abbiamo detto, le porte sono degli alloggiamenti, localizzati di norma sul retro dell’elaboratore, in cui vengono inseriti i cavi delle periferiche. Le porte seriali (chiamate anche porte di comunicazione asincrona e spesso identificate con la sigla RS-232-C) servono a collegare i modem e alcuni tipi di vecchi mouse. Questo tipo di porte ha il vantaggio di utilizzare soltanto due linee per inviare e ricevere dati ed è quindi l’ideale per le connessioni ai circuiti telefonici, che utilizzano ugualmen-
te due linee di trasmissione. Le porte seriali sono in grado di inviare soltanto un bit per volta. Dato che un computer elabora fino a 64 bit nello stesso istante, giunti alle porte seriali i dati subiscono un rallentamento perché escono dall’elaboratore in successione su un’unica linea. Queste porte forniscono dunque trasmissioni lente e di conseguenza non sono adatte per collegare una stampante. Le porte parallele (chiamate anche interfacce centronics) di norma vengono usate per il collegamento delle stampanti e di alcuni dispositivi di memorizzazione esterni. Queste porte trasmettono 8 bit per volta su altrettante linee parallele e quindi, rispetto alle porte seriali, consentono comunicazioni più veloci tra l’elaboratore e i dispositivi di input e output. L’unico inconveniente è che il segnale trasmesso dalle porte parallele non ha la portata del segnale di una porta seriale, ma questo fattore conta soltanto se il dispositivo che si vuole connettere ha un cavo molto lungo. Un cavo parallelo ha una lunghezza massima inferiore ai 30 metri, mentre un cavo seriale può essere lungo fino a 300 metri (Figura 2.46). Molti dispositivi, come per esempio gli scanner, le unità del disco fisso e i CD-ROM, vengono connessi alle porte SCSI (Small Computer System Interface), che permettono di collegare più componenti a una stessa porta grazie a un processo detto “daisy chaining”, consistente nel connettere alla porta un primo dispositivo, al quale viene connesso un altro e così via. In questo modo, si riduce il numero di slot occupati. Nei computer desktop e notebook, tuttavia, l’interfaccia più diffusa per la connessione dei
/H SRUWH VXO UHWUR GHO FRPSXWHU
, GDWL DOO LQWHUQR GHO FRPSXWHU
, GDWL LQ XVFLWD GDOOD SRUWD
3RUWD VHULDOH
Figura 2.46 Porte parallele e porte seriali.
3RUWD SDUDOOHOD
L’architettura del computer e la CPU 51
dischi fissi e delle unità CD e DVD è quella di tipo Ultra ATA, Advanced Tecnology Attachment (o EIDE). A differenza delle porte SCSI, un controller Ultra ATA supporta al massimo quattro unità, ma i costi di questa soluzione sono molto inferiori rispetto a quelle SCSI. Negli ultimi anni è stata introdotta un’evoluzione di questa tecnologia denominata Serial ATA, che utilizza una modalità di trasmissione seriale (a differenza della modalità parallela dell’ATA standard) e permette di aumentare la velocità di trasferimento dei dati.
Le porte USB e Firewire Con l’aumento dei dispositivi di input/output e soprattutto della quantità di dati da trasferire in tempo reale, le porte seriali e parallele (e persino le SCSI di fascia bassa) sono diventate dei colli di bottiglia per il rendimento del sistema. Per ottenere una maggiore banda passante sono state sviluppate due nuove tecnologie di trasmissione seriali, con diverse caratteristiche comuni: • possono utilizzare cavi sottili che facilitano i collegamenti; • consentono di connettere i dispositivi in serie di modo che è sufficiente una sola porta; • utilizzano la tecnologia Plug and Play, che evita all’utente di dover aprire il computer, inserire una scheda di adattatore ed eseguire uno speciale programma perché l’elaboratore la riconosca; con il Plug and Play, infatti, il riconoscimento è automatico; • trasmettono i dati molto più velocemente delle porte seriali e parallele;
• permettono di aggiungere e rimuovere i dispositivi con il computer acceso (“hot plugging”); • distribuiscono la corrente, così che i dispositivi a basso consumo possono funzionare senza aver bisogno di un filo proprio. L’USB (Universal Serial Bus) permette di collegare in una stessa porta fino a 127 dispositivi in serie. Per esempio, si può collegare alla porta una tastiera, a questa un mouse e così via. I dispositivi più adatti per i collegamenti USB sono tastiere, mouse e joystick, seguiti da stampanti, scanner e modem esterni. Questo bus è molto più veloce delle normali porte seriali ed è in grado di gestire tutti i dispositivi, eccetto quelli che trattano grandi quantità di dati, come le unità del disco fisso, quelle dei CD-ROM rapidi e gli apparecchi video ad alta prestazione. Un grande vantaggio dell’USB è che permette all’utente di personalizzare facilmente il proprio sistema, per esempio collegando due mouse allo stesso tempo, uno per gli adulti e uno più piccolo per i bambini. Inoltre, l’USB nella sua recente versione 4.1 opera a 900 Mb/s ed è molto economico. Le porte Firewire, note anche con la sigla IEEE 1394, sono state sviluppate dalla Apple, ma ormai sono in uso su tutti i computer e gli altri dispositivi elettronici di grande consumo. La tecnologia Firewire opera a 800 Mb/s ed è stata sostituita da standard come Thunderbolt (sviluppato da Intel e Apple che arriva fino a 40 Gbps) o dall’HDMI (utilizzato negli standard audio/video e trasmette dati alla velocità di 14,4 Gb/s). Tali tecnologie sono state progettate per collegare molteplici dispositivi elettronici dotati di un’ampia banda passante,
Niente cavi: dall’infrarosso al Bluetooth Collegare vari dispositivi tramite cavi è una bella seccatura, specialmente quando se ne hanno molti come avviene nei moderni PC multimediali. Nel 1993 la Hewlett-Packard introdusse per prima sui propri elaboratori la tecnologia a raggi infrarossi, grazie alla quale due unità possono scambiarsi dati senza essere collegate tramite cavi. Il raggio infrarosso emesso da un elaboratore va infatti a colpire l’altro elaboratore e in questo modo vengono trasmessi i file da uno all’altro. L’unico inconveniente è che non ci devono essere ostacoli sulla traiettoria del raggio e che questo non si può curvare, per cui è impossibile collegare due computer che non siano posti in linea retta l’uno rispetto all’altro o che siano separati da un muro. Assai meno problemi presenta l’uso di onde radio. Già da diversi anni esistono sul mercato tastiere e mouse che si collegano al PC mediante un piccolo ricevitore radio dalla portata assai
limitata. Ma ormai le tecnologie wireless hanno raggiunto un’efficienza e una maturità ben maggiore e si apprestano a sostituire le connessioni via cavo fisico in molti contesti: dalla creazione di reti locali e metropolitane alla connessione di periferiche e accessori a PC e altri dispositivi di comunicazione. Tra le varie tecnologie Wireless, quella pensata esplicitamente per questa finalità è il Bluetooth. Si tratta di un sistema di trasmissione radio che permette di far comunicare dispositivi elettronici di vario tipo entro un raggio di 100 metri. La banda di frequenza usata dal Bluetooth si colloca intorno ai 2,4 Ghz, e permette di raggiungere una velocità massima di 3 Mbps. Date le sue caratteristiche, il campo di applicazione principale di questa tecnologia consiste appunto nell’interconnessione tra PC, apparati elettronici domestici, computer palmari, cellulari e periferiche.
52
Capitolo 2
come le videocamere, le macchine fotografiche e i lettori di videodisco digitali, nonché le tipiche unità periferiche del PC (stampanti, scanner, drive ecc.). Inoltre, consente connessioni a Internet ad alta velocità. Oggi tutti i PC e i notebook vengono dotati di serie di porte USB e Firewire, e le vecchie porte seriali e parallele (nonché le loro speciali versioni dette PS2 usate per collegare tastiera e mouse), ormai considerate obsolete, sono destinate a scomparire.
2.17 Come si producono i microprocessori e i chip di memoria La nascita di un microprocessore è un processo tecnologico lungo e complesso. In genere, si compone di quattro fasi: la progettazione, la fabbricazione, il controllo e il rivestimento.
Figura 2.48 della IBM).
Una maschera (per gentile concessione
Per realizzarli si utilizzano sofisticate workstation che simulano come funzionerà il chip una volta costruito.
Fabbricazione Progettazione 1. La progettazione viene effettuata sulla base delle esigenze dell’utenza. Questa prima fase si apre dunque con le analisi di mercato, cui fanno seguito l’ideazione dell’architettura, la progettazione logica e infine la creazione delle “maschere” che verranno usate per realizzare i chip veri e propri (Figura 2.47). A mano a mano che la fase procede, i progetti si fanno sempre più complessi e dettagliati.
Figura 2.47 La fase di progettazione di un chip (per gentile concessione della IBM).
2. Le maschere servono per fabbricare i chip (Figura 2.48). Si tratta di lamine di quarzo su cui è inciso un disegno in cromo simile a una stampinatura. Tramite un processo fotografico, questo disegno viene trasferito su una fetta di silicio per creare i circuiti. Poiché i chip sono costituiti da una serie di strati, sono necessarie più maschere. 3. Il silicio non viene lavorato, per cui è quasi puro (Figura 2.49). È prodotto in lunghi lingotti cilindrici che vengono poi tagliati in sottili fette rotonde su cui sono creati i chip. Queste fette sono levigate e presentano quindi una superficie a specchio. Il silicio, principale componente della sabbia, è il più comune elemento presente sulla Terra dopo l’ossigeno.
Figura 2.49 Un lingotto di silicio (per gentile concessione della Intel).
L’architettura del computer e la CPU 53
L’evoluzione del computer Uno dei primi elaboratori elettronici digitali, l’ENIAC, fu presentato nel 1946 all’Università della Pennsylvania. Pesava trenta tonnellate, occupava una superficie di 160 metri quadrati e conteneva 18 000 valvole termoioniche, che si guastavano a una media di una ogni sette minuti. Costava mezzo milione di dollari, che a quei tempi era una cifra incredibile. Oggi per generare la stessa potenza basta un chip di silicio della grandezza di un fagiolo e qualsiasi PC del costo di appena 100 dollari è più potente dell’ENIAC. Per fare un paragone paradossale, se il settore automobilistico si fosse sviluppato quanto quello dell’informatica, oggi una Rolls Royce costerebbe 2,75 dollari e con circa un litro di benzina riuscirebbe a fare più di un milione di chilometri.
4. La superficie di una fetta levigata viene ricoperta da uno strato isolante di diossido di silicio e poi ulteriormente rivestita con una sostanza gelatinosa detta “photoresist”, che diventa solubile se
Quanto sono grandi i circuiti di un chip? I chip sono talmente piccoli che i milioni di transistor che contengono sono creati con fili incredibilmente sottili, misurati in micron (millesimi di millimetro). Un capello umano ha uno spessore di 100 micron, mentre i circuiti più piccoli sono creati con fili di 0,2 micron. Un capello potrebbe quindi contenere 440 fili. Più questi sono sottili, più piccoli possono diventare i chip, e ciò significa chip più economici e più veloci.
esposta ai raggi ultravioletti. Sopra questo strato viene posta una maschera. Quando gli spazi chiari della maschera sono sottoposti ai raggi ultravioletti, le porzioni di photoresist esposte diventano solubili e, una volta rimosse insieme al diossido di silicio sottostante, sulla fetta rimane un disegno di diossido di silicio ricoperto di photoresist. Con la rimozione del photoresist che ricopre il diossido di silicio rimanente, e l’esposizione di quest’ultimo, viene completato il primo strato del chip. L’intero processo viene ripetuto varie volte per completare tutti gli strati.
Controllo 5. La fetta completa contiene centinaia di chip, i quali a loro volta contengono milioni di transistor. Tutti i transistor vengono controllati tramite test automatizzati (in inglese wafer sorting): sonde a forma di ago, collegate a determinati punti sulla superficie della fetta, eseguono più di 10 000 controlli al secondo. Il test può durare da un minuto a più di un’ora, a seconda della complessità del chip. I chip che non funzionano bene vengono segnalati con un colore, in modo da poter essere individuati nelle fasi successive del processo.
Rivestimento 6. Una volta ultimato il controllo, le fette vengono tagliate in singoli chip, per mezzo di seghe diamantate (Figura 2.50). I chip che erano stati marcati con il colore durante il controllo vengono scartati. 7. Il rivestimento serve a proteggere il chip e a fornire i collegamenti elettronici necessari per connettere lo stampo alla scheda a circuiti stampati in cui verrà installato (Figura 2.51).
Figura 2.50 Il taglio della fetta in chip (per gentile concessione della IBM).
54
Capitolo 2
Le CPU più famose
L’8008 aveva una potenza due volte superiore a quella del 4004 e fu usato da un appassionato di informatica per creare un dispositivo chiamato “TV typewriter”.
Il primo microprocessore, installato nella calcolatrice Busicom, fu il 4004, che conteneva 2300 transistor.
L’8088 decretò il definitivo successo dei microprocessori perché fu installato sul primo PC dell’IBM, che ebbe una diffusione senza precedenti.
Il successivo chip della serie x86 fu il 286, noto anche come 80286, che ebbe una grande diffusione.
Il processore Pentium® comprende due unità di elaborazione su un unico chip e contiene 3,1 milioni di transistor.
L’8080 fu usato nel primo personal computer, l’Altair, che fu venduto in un kit da 395 dollari.
Dopo il 286 venne il microprocessore Intel 386 TM DX, che aumentò la potenza dei desktop.
Il processore Pentium® Pro, successore del Pentium, ha 5,5 milioni di transistor e contiene un secondo chip di memoria cache che lo rende più veloce.
Il microprocessore Intel 486M DX fu il primo chip della Intel abbastanza potente da consentire l’uso delle interfacce grafiche come Windows.
Il processore Pentium 4®, uno dei più diffusi commercialmente, ha nella sua ultima versione 125 milioni di transistor.
L’architettura del computer e la CPU 55
cessore e controlla il flusso di istruzioni tra questo e la memoria; 2. l’unità logico-aritmetica effettua le operazioni aritmetiche (addizione, sottrazione, moltiplicazione e divisione) e le operazioni logiche di raffronto tra due valori (per esempio verifica se un valore è maggiore, minore o uguale a un altro). Queste due unità collaborano con la memoria in un processo distinto in quattro fasi che porta al completamento di un ciclo della macchina (Figura 2.52). Figura 2.51 L’inserimento del chip nel contenitore di protezione (per gentile concessione della Intel).
2.18 L’interazione tra CPU e memoria La CPU e la memoria interagiscono nell’esecuzione dei programmi e nell’elaborazione dei dati. La CPU è costituita da due componenti, l’unità di controllo e l’unità logico-aritmetica: 1. l’unità di controllo esegue le istruzioni dei programmi, coordina le attività del micropro-
Ut i n à ic d on rol t o l
Il ciclo della macchina Come abbiamo detto, si divide in quattro fasi: caricamento, decodifica, esecuzione e memorizzazione. Il tempo necessario per completare le prime due fasi è detto tempo di istruzione e quello impiegato per le ultime due tempo di esecuzione.
I registri Per i primi microprocessori l’addizione di due numeri costituiva un problema perché avevano un unico canale di accesso alla memoria e quindi po-
Ut i n à og l ic oarit m et ic a
Ut i n en c à ral t e iel d ab oraz ion e ec D . 2 od if ic a
2. L’unità di controllo interpreta (decodifica) l’istruzione e trasferisce i dati a cui questa fa riferimento dalla memoria all’unità logico-aritmetica.
aric C . 1 am en o t
3 ec s E . ion z u e
M em oriz . 4 az ion e
M em oria 1. L’unità di controllo preleva l’istruzione successiva presente in memoria e la immagazzina al suo interno in una piccola area di memorizzazione detta registro dell’istruzione (IR).
em p T od iis ru t ion z e
Figura 2.52
Il ciclo della macchina.
3. L’unità logico-aritmetica esegue l’operazione logica o aritmetica richiesta.
em p T od ies ec ion z u e
4. I risultati delle operazioni logiche o aritmetiche svolte sono immagazzinati nella memoria centrale o in un registro dell’unità logico-aritmetica chiamata accumulatore.
56
Capitolo 2
tevano “vedere” solo un numero per volta. Per ovviare a questo inconveniente uno dei due numeri veniva trasferito in una piccola area di memorizzazione, detta registro, facente parte del microprocessore stesso. Il microprocessore proseguiva quindi nell’operazione di addizione dei due numeri e nella memorizzazione del risultato in base alle istruzioni. I microprocessori moderni hanno vari tipi di registri che rivestono funzioni diverse: tenere al corrente l’utente su quale sia la funzione in atto, immagazzinare i dati da elaborare, memorizzare i risultati dell’elaborazione ecc.
Bibliografia Un ottimo testo, valido per le certificazioni professionali è O. Maeran, Hardware del PC, McGraw-Hill Education (Italy) srl. Un sito sempre aggiornato sulle novità hardware è www.hwupgrade.it, mentre un gran numero di
spiegazioni tecniche e teoriche di vario livello si trova, al solito, sulle pagine di Wikipedia. Tra i tanti testi relativi alla struttura interna dei computer ricordiamo C. Hamacher, Z. Vranesic, S. Zaky., Introduzione all’architettura dei calcolatori, terza edizione, McGraw-Hill Education (Italy) srl. Sull’argomento è facile trovare in Rete molti appunti universitari o materiali di corsi di architettura dei calcolatori. Per quel che riguarda i singoli componenti, la rapida obsolescenza delle informazioni reperibili fa preferire sull’argomento la consultazione dei siti Web dei produttori il singolo pezzo o i forum nei quali altri utenti “smanettoni” si scambiano esperienze e informazioni. V. Marengo, M. Scalera (2001). “Evoluzione della tecnologia informatica: dal bit a Internet” Adriatica Editrice – Bari. http://top500.org/ è il sito di riferimento dei supercomputer più veloci del mondo.