Sei sulla pagina 1di 92

Larchitettura dei sistemi di elaborazione, i PC e i linguaggi a basso livello

Fulvio Ferroni fulvioferroni@teletu.it

2011.07.17

Questo documento si occupa dellarchitettura di un sistema di elaborazione secondo il modello di Von Neumann, dei principi di funzionamento e degli elementi di base dei moderni Personal Computer, delle caratteristiche del linguaggio macchina e di un generico linguaggio assembly. Il contenuto, riguardo il sistema di elaborazione e i linguaggi di basso livello, ispirato dai testi "LInformatica" di P. Bishop ed. Jackson e "Elaboratori e loro applicazioni" vol. I di Cesarini, Soda, Pippolini ed. Cremonese, mentre, riguardo al Personal Computer, prevalentemente dal testo "Hardware del PC" do O. Maeran ed. McGraw-Hill.

Copyright Fulvio Ferroni fulvioferroni@teletu.it Via Longarone, 6 - 31030 - Casier (TV) Le informazioni contenute in questa opera possono essere diffuse e riutilizzate in base alle condizioni poste dalla licenza GNU General Public License, come pubblicato dalla Free Software Foundation. In caso di modica dellopera e/o di riutilizzo parziale della stessa, secondo i termini della licenza, le annotazioni riferite a queste modiche e i riferimenti allorigine di questa opera, devono risultare evidenti e apportate secondo modalit appropriate alle caratteristiche dellopera stessa. In nessun caso consentita la modica di quanto, in modo evidente, esprime il pensiero, lopinione o i sentimenti del suo autore. Lopera priva di garanzie di qualunque tipo, come spiegato nella stessa licenza GNU General Public License. Queste condizioni e questo copyright si applicano allopera nel suo complesso, salvo ove indicato espressamente in modo diverso.

II

Indice generale
1 Architettura di un sistema di elaborazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 1.2 1.3 La macchina di Von Neumann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Funzioni svolte dallelaboratore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Componenti del sistema di elaborazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.1 CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.2 Bus e clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.3 ALU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.4 CU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3.5 Memoria centrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3.5.1 Struttura logica delle memorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3.5.2 Memoria centrale del sistema di elaborazione . . . . . . . . . . . . . . . . . . . . . . 9 1.3.5.3 Ordinamento big endian e little endian dei dati in memoria . . . . . . . . . 10 1.3.5.4 Ciclo di memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.5.5 Struttura sica della memoria centrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.5.6 Memoria cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.5.7 Memorie ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 Il Personal Computer (parte I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1 La scheda madre del PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 Alimentazione della scheda madre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Fattore di forma della scheda madre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Il chipset della scheda madre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Bus di sistema e bus di I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Componenti integrati e altri elementi nella scheda madre . . . . . . . . . . . . . . . . 20 Ampiezza in bit dei registri della CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Frequenza del clock della CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Tecnologia costruttiva dei processori (legge di Moore) . . . . . . . . . . . . . . . . . . 22 Numero di pin della CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Gestione della memoria da parte della CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Architetture dei processori (pipeline e predizione) . . . . . . . . . . . . . . . . . . . . . . 26 Tipo di istruzioni delle CPU: CISC e RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Generazioni di processori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Le CPU multicore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Il processore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3 I linguaggi a basso livello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.1 Il linguaggio macchina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.1.1 Il ciclo istruzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.1.2 Descrizione e classicazione delle istruzioni macchina . . . . . . . . . . . . . . . . . . 34 3.1.2.1 Classicazione delle istruzioni per funzione svolta . . . . . . . . . . . . . . . . 34 3.1.2.2 Classicazione delle istruzioni per numero di indirizzi . . . . . . . . . . . . . 35 3.1.2.3 Classicazione delle istruzioni per modo di indirizzamento . . . . . . . . . 37 III

3.1.3 3.2

Esempio di programma in linguaggio macchina . . . . . . . . . . . . . . . . . . . . . . . . 37

Il linguaggio assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.1 Problemi nelluso del linguaggio macchina . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.2 Traduzione dei programmi assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.2.1 Il programma assemblatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.2.2.2 La fase di linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2.2.3 Il caricamento del programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4 Il Personal Computer (parte II) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.1 4.2 La memoria centrale dei PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Le periferiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.2.1 Comunicazione tra processore e periferiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.1.1 I/O programmato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2.1.2 Le interruzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2.1.3 Accesso diretto alla memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2.1.4 Periferiche Plug and Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2.2 Interfacce e controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2.2.1 Interfaccia ATA parallela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2.2.2 Interfaccia ATA seriale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.2.2.3 Interfaccia SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.2.2.4 Interfaccia USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.2.2.5 Interfacce FireWire e eSata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 4.2.3 Memorie ausiliarie o di massa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.2.3.1 Nastro magnetico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.2.3.2 Disco sso e dischetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.2.3.3 Dischi RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.2.3.4 Unit ottiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 4.2.3.5 Memorie ash e unit SSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.2.3.6 Gerarchia delle memorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.2.4 Periferiche di I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.2.4.1 Tastiera e mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.2.4.2 Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.2.4.3 Scheda video e monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.2.4.4 Stampante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.2.5 Interfacce di rete, modem e bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.3 Il BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

IV

Capitolo

Architettura di un sistema di elaborazione


Il termine architettura riferito ai sistemi di elaborazione indica lorganizzazione logica dei vari componenti interni della macchina ed il modo in cui essi cooperano per eseguire le operazioni richieste dagli utenti. Quindi larchitettura di un elaboratore pu essere dedotta dalla conoscenza della sua struttura interna e dal modo in cui possibile far cooperare i suoi componenti sici mediante una serie di comandi o istruzioni (linguaggio macchina).

1.1 La macchina di Von Neumann

I moderni elaboratori elettronici, dai piccoli personal computer ai grandi maxi-computer, derivano in buona parte da uno stesso modello fondamentale di elaboratore chiamato Macchina di Von Neumann dal nome dello scienziato che nel 1946 pubblic, insieme ad altri, un progetto per una nuova macchina di calcolo automatico. Questa macchina schematizzata in gura 1.1.
Figura 1.1. |

Le linee continue rappresentano il usso di dati, le linee tratteggiate il usso di controllo, dal quale si capisce che tutte le unit agiscono in base ai segnali inviati da un componente denominato appunto unit di controllo. Le tre funzioni principali svolte dal sistema di elaborazione sono: funzione di memoria; funzione di esecuzione (calcoli e confronti); funzione di controllo e governo. Lelaboratore un sistema automatico in quanto tali funzioni vengono realizzate senza lintervento diretto delluomo. La cooperazione tra le unit di controllo, esecuzione e memoria permette di eseguire algoritmi opportunamente descritti secondo determinati linguaggi ed inseriti in memoria. Lelaboratore un sistema versatile in quanto pu svolgere compiti molto diversi tra loro variando opportunamente gli algoritmi ad esso forniti.

Architettura di un sistema di elaborazione

Uno dei concetti fondamentali introdotti da Von Neumann e che costitu un passo avanti decisivo rispetto ai primi elaboratori dellepoca, quello di programma memorizzato, cio il fatto che il programma da eseguire (cio la traduzione dellalgoritmo in una forma comprensibile alla macchina) viene immagazzinato in memoria al pari dei dati su cui esso opera. Lelaborazione consiste nella esecuzione delle istruzioni del programma, da parte della unit di esecuzione sotto il governo della unit di controllo, una alla volta secondo lordine in cui sono contenute nella memoria, no al completamento dellintero processo previsto dallalgoritmo. Luomo interviene solo per dare il comando di avvio dellesecuzione e per introdurre eventuali dati di input. Come detto il programma da eseguire deve essere scritto in precedenza in un apposito linguaggio (linguaggio di programmazione), poi tradotto in una forma direttamente eseguibile dalla macchina (linguaggio macchina) e quindi portato nella memoria dellelaboratore. Le tre operazioni possono essere cos riassunte: fase di programmazione, eseguita dal programmatore; fase di traduzione, eseguita da appositi programmi detti compilatori (qui non viene considerato il caso di programmi scritti con linguaggi interpretati invece che compilati); fase di caricamento, eseguita da un programma detto loader. In queste dispense non vengono fornite ulteriori informazioni sui linguaggi di programmazione, eccetto per quelli a basso livello, come il linguaggio macchina o lassembly, trattati nel capitolo ??ling macchina??.

1.2 Funzioni svolte dallelaboratore

Vediamo pi in dettaglio in cosa consistono le operazioni svolte da un elaboratore elettronico: funzione di memoria: codica di informazione (programmi e dati) su supporti in grado di conservarla per il tempo necessario alla elaborazione; funzione di esecuzione: esecuzione di una specica gamma di operazioni, potendo determinare loperazione da eseguire tra quelle a disposizione e specicando gli operandi (dati) su cui essa opera; siccome le operazioni da svolgere sono principalmente di tipo aritmetico-logico, lunit di esecuzione viene anche chiamata Unit aritmetico logica o ALU (Arithmetic and Logic Unit); funzione di controllo: riconoscimento delle istruzioni da eseguire e conseguente avvio della loro esecuzione mediante opportuni segnali alla ALU; controllo della successione di istruzioni che compongono il programma; funzione di ingresso o input: introduzione di dati e programmi nel sistema; funzione di uscita o output: comunicazione di risultati allesterno.

Architettura di un sistema di elaborazione

1.3 Componenti del sistema di elaborazione

Lo schema di Von Neumann introdotto in precedenza, anche se concettualmente ancora valido, deve essere aggiornato con quello della gura 1.2.
Figura 1.2. |

(sono indicate solo le linee di usso dei dati e di controllo che entrano o escono dalla Unit centrale). Nella gura si possono individuare: Unit centrale, adibita allelaborazione dei dati ed al controllo generale del sistema; Unit di canale, sono delle unit di controllo ausiliarie (talvolta addirittura degli elaboratori satellite) adibite al collegamento con le periferiche cio i dispositivi che permettono il colloquio del sistema con lambiente esterno o la memorizzazione permanente di dati e programmi (tastiera, video, stampante, memorie di massa, ecc.).

1.3.1 CPU

La CPU (Central Processing Unit) costituisce il cuore dellelaboratore e il luogo dove avviene lesecuzione delle istruzioni di un certo programma; costituita dalla unione della ALU e della unit di controllo CU (Control Unit) nello stesso circuito integrato. Fisicamente si tratta di una piastrina di silicio contenente circuiti stampati costituiti da molte migliaia o milioni di semiconduttori che prende anche il nome di microprocessore. La CPU dotata di un certo numero di celle di memoria locale (da non confondere con la memoria centrale) che servono a contenere i dati interessati alle operazioni da svolgere, queste celle di memoria si chiamano registri.

Architettura di un sistema di elaborazione

1.3.2 Bus e clock

La CPU deve essere collegata alle altre componenti del sistema di elaborazione alle quali invia segnali di controllo ed in particolare alla memoria centrale con la quale deve avvenire un continuo scambio di segnali binari corrispondenti ad indirizzi di memoria o al contenuto (dati o istruzioni) delle celle di memoria o dei registri. Questo comporta la necessit di collegamenti sici che vengono chiamati bus. Esistono tre tipi di bus: bus dati; bus indirizzi; bus di controllo. Gli stessi collegamenti devono essere presenti anche allinterno della CPU per assicurare lo scambio di segnali tra le sue componenti interne; in questo caso si parla di bus (dati, indirizzi e di controllo) interni. Il motivo per cui si parla di indirizzi risiede nella struttura logica e sica della memoria centrale dellelaboratore (illustrata pi in dettaglio in seguito): essa costituita da una sequenza di celle o locazioni numerate progressivamente e quindi individuabili tramite il proprio numero dordine o indirizzo. I bus possono essere indipendenti o condivisi; nel secondo caso vengono usate le stesse linee siche per trasportare segnali di natura diversa allo scopo di ottenere un risparmio di spazio e di costo, al prezzo di un certo deterioramento delle prestazioni,. Solitamente ad essere condivisi sono il bus dati e il bus indirizzi e viene usato un opportuno segnale di controllo per chiarire la natura degli impulsi trasportati in un certo momento nella linea di comunicazione. Afnch la CPU possa funzionare correttamente c anche lesigenza di un dispositivo chiamato clock che un generatore di impulsi di durata costante emessi uno dopo laltro ad intervalli di tempo regolari; lo scopo di questi impulsi di sincronizzare tutti i circuiti ed il loro funzionamento allinterno della CPU, in modo che essi funzionino tutti allunisono. In altre parole si pu dire che gli impulsi generati dal clock innescano le azioni allinterno della CPU; a fronte di una entrata (di segnali) in un certo circuito, si ha la corrispondente uscita solo quando arriva anche un impulso dal clock; maggiore la sua frequenza, maggiore la velocit di funzionamento della CPU e quindi la quantit di lavoro da essa svolta in un certo tempo. La velocit del microprocessore (o meglio, del clock) si misura in cicli al secondo (frequenza degli impulsi) cio in Hertz (Hz); le moderne CPU hanno frequenze di funzionamento dellordine dei miliardi di hertz o gigahertz (Ghz). Nella gura 1.3 viene presentato un possibile schema di unit centrale di elaborazione comprendente i vari bus e il clock.

Architettura di un sistema di elaborazione


Figura 1.3. |

1.3.3 ALU

La ALU una rete logica in grado di eseguire operazioni logiche e aritmetiche sui dati; linsieme delle operazioni che la ALU pu eseguire costituisce il livello di dettaglio in cui devono essere espresse le istruzioni di un qualunque algoritmo da far eseguire allelaboratore. Naturalmente tale livello di dettaglio non deve essere raggiunto direttamente dal programmatore che, come gi accennato, scrive i suoi algoritmi in un linguaggio di programmazione e poi provvede alla loro traduzione in forma comprensibile alla macchina mediante la compilazione. Le operazioni vengono svolte dai circuiti della ALU con lausilio di appositi registri e precisamente: uno o pi registri accumulatori (AC) per immagazzinare gli operandi delle operazioni da eseguire; un registro di stato (RS) nel quale vengono memorizzate, in codica binaria, alcune informazioni utili sullandamento della esecuzione come ad esempio: il risultato (vero o falso) dellultimo confronto effettuato, il vericarsi di un riporto o di un overow nellultima operazione aritmetica eseguita, la positivit o negativit del risultato dellultimo calcolo svolto. Tutte queste informazioni sono di tipo binario (si/no, 1/0) e occupano solo un bit ciascuna, quindi RS contiene una sequenza di bit ciascuno associato ad un tipo di informazione. Un possibile schema della ALU quello della gura 1.4:

6
Figura 1.4. |

Architettura di un sistema di elaborazione

Il registro AC collegato al bus dati in quanto pu contenere operandi delloperazione da svolgere e risultati, rispettivamente provenienti e diretti verso altre posizioni di memoria (locale o centrale). Il registro RS collegato al bus dati in quanto il suo contenuto pu essere richiesto dallunit di controllo per essere esaminato dopo una certa operazione. Le operazioni non previste dai circuiti, e quindi non eseguibili direttamente tramite lhardware dellelaboratore, devono essere programmate ed eseguite via software; ad esempio per fare il prodotto di due numeri, se non abbiamo un circuito che realizza la moltiplicazione, si deve programmare loperazione come un ciclo di somme. In molti casi ci realizzato mediante microprogrammi registrati su appositi circuiti di memoria; linsieme dei microprogrammi prende il nome di firmware. La memoria dove vengono registrati i microprogrammi di tipo ROM (Read Only Memory) e prende il nome di memoria di controllo. Le microistruzioni stanno ad un livello inferiore rispetto alle istruzioni macchina; queste ultime infatti vengono eseguite attivando lapposito gruppo di microistruzioni (microprogramma).

1.3.4 CU

La CU ancora una RETE LOGICA progettata per eseguire ciclicamente il seguente processo suddiviso in tre fasi: 1. fase di FETCH: consiste nel prelevamento (lettura) di una istruzione dalla memoria centrale e nel suo trasferimento in un apposito registro della CPU, linstruction register (IR) dove viene messa a disposizione per la successiva fase; 2. fase di DECODE: consiste nellindividuazione, in base allistruzione trasferita, della operazione da effettuare e su quali eventuali operandi; questa fase viene svolta da una unit di decodicazione a ci adibita denominata decodificatore di istruzioni; 3. fase di EXECUTE: in base alle segnalazioni della unit di decodica, che ha interpretato listruzione nella fase precedente, lunit di controllo vera e propria invia le direttive di esecuzione alla ALU che esegue loperazione richiesta.

Architettura di un sistema di elaborazione

Questo ciclo si chiama ciclo istruzione e si compone di diversi cicli macchina con i quali vengono eseguite le varie fasi (fetch, decode, execute). Un ciclo macchina (o passo elementare di esecuzione) lintervallo tra due impulsi consecutivi del clock. Perch questo processo possa continuare ciclicamente necessario che, al termine della esecuzione di una istruzione, lunit di controllo sia in grado di determinare lindirizzo della istruzione successiva (si ricordi, a questo proposito, che le istruzioni che compongono un programma in esecuzione sono memorizzate in posizioni adiacenti della memoria centrale). A questo scopo viene utilizzato un registro della CPU, il program counter (PC), che contiene lindirizzo della prossima istruzione da prelevare e viene aggiornato dopo la fase di decodica aggiungendo al suo contenuto la lunghezza della istruzione corrente decodicata. La CU pu essere schematizzata come nella gura 1.5:
Figura 1.5. |

Il ciclo di esecuzione di un programma da parte della CPU pu essere rappresentato con un diagramma di usso come in gura 1.6:
Figura 1.6. |

Architettura di un sistema di elaborazione

1.3.5 Memoria centrale

Prima di illustrare la memoria centrale del sistema di elaborazione vengono fornite alcune nozioni sulle memorie in generale.

1.3.5.1 Struttura logica delle memorie

Una memoria pu essere rappresentata come un insieme di celle (o locazioni) che possono conservare porzioni elementari di informazione. Nelle celle sono possibili due tipi di operazione: lettura di informazione o scrittura di informazione; in generale si parla di accesso alla memoria quando si compie una delle due operazioni. Le memorie devono essere organizzate in modo da permettere la loro individuazione per leffettuazione degli accessi; devono quindi avere un indirizzo univoco per ogni cella. Le memorie si possono classicare in base a varie caratteristiche; una classicazione molto importante viene effettuata in base alla modalit di accesso: memorie ad accesso uniforme: in esse una cella accessibile indipendentemente dalla sua posizione ed in un tempo uguale per tutte le celle presenti nella memoria (esempio memoria centrale); memorie ad accesso diretto: in esse una cella accessibile indipendentemente dalla sua posizione ma il tempo impiegato dipende da questultima (esempio: memorie ausiliarie su disco); memorie ad accesso sequenziale: in esse una cella accessibile solo passando attraverso tutte le celle che la precedono (esempio: memorie ausiliarie su nastro o memorie ottiche).

Architettura di un sistema di elaborazione

1.3.5.2 Memoria centrale del sistema di elaborazione

La memoria centrale RAM (Random Access Memory) una memoria ad accesso uniforme; anche essa una rete logica i cui circuiti sono progettati per conservare informazione in codica binaria. La codica binaria dellinformazione consiste nella rappresentazione di un simbolo alfanumerico mediante un gruppo di bit; la memoria allora viene organizzata in una sequenza di gruppi di bit, o posizioni, o parole (word) ognuna delle quali individuata da un indirizzo. La grandezza della parola dipende dalla macchina ed sempre un multiplo di 8 bit (1 byte); in certi casi la parola 2 byte, in altri casi 4 byte e talvolta si usano anche la mezza parola (half word) e la doppia parola (double word). La capacit della memoria centrale molto importante in quanto, come si detto, tutti i programmi che devono essere eseguiti devono esservi memorizzati; la grandezza della memoria quindi un indice di potenza dellelaboratore. Lunit di misura della memoria il byte con i suoi multipli: Kappabyte (1 KB=1.024 byte), Megabyte (1 MB=1.048.576 byte), Gigabyte (1 GB= 1.073.741.824 byte), Terabyte (1 TB= 1.099.511.627.776 byte). Per quanto riguarda i circuiti per laccesso alla memoria centrale si hanno: un decodicatore degli indirizzi che riceve il suo input da un registro contenente lindirizzo della parola a cui accedere; un registro di indirizzamento in memoria (RIM) o MAR (Memory Address Register) contenente lindirizzo cui accedere; un registro di lettura e scrittura (RLS) o MBR (Memory Buffer Register) per immagazzinare la parola interessata al trasferimento e cio la parola appena letta o da scrivere in memoria. Il tutto si pu schematizzare come in gura 1.7:
Figura 1.7. |

10

Architettura di un sistema di elaborazione

1.3.5.3 Ordinamento big endian e little endian dei dati in memoria

Nel caso di posizioni di memoria costituite da pi byte (ad esempio di 16 bit) lordine con cui i diversi byte di una stessa posizione sono memorizzati dipende dallarchitettura del computer. I due ordinamenti pi diffusi sono: big endian o big end rst: in questo caso le posizioni di memoria sono occupate a partire dal byte pi a sinistra del dato, quindi dal pi signicativo; little endian o little end rst: in questo caso le posizioni di memoria sono occupate a partire dal byte pi a destra del dato, quindi dal meno signicativo. Da quanto detto emerge che nel caso di big endian il byte pi signicativo (MSB Most Signicant Byte) ha lindirizzo di memoria pi piccolo, mentre nel caso di little endian il byte meno signicativo (LSB Least Signicant Byte) ad avere lindirizzo pi piccolo. Ad esempio se si deve memorizzare il dato AB a partire dallindirizzo 100, avremo, nel caso di big endian:
|indirizzo 100: A |indirizzo 101: B

invece, nel caso di little endian:


|indirizzo 100: B |indirizzo 101: A

I termini big endian e little endian derivano dai Lillipuziani dei "Viaggi di Gulliver", il cui problema principale era se le uova debbano essere aperte dal lato grande (big endian) o da quello piccolo (little endian); il signicato di questa analogia ovvio: nessuno dei due metodi migliore dellaltro. Esiste comunque un problema di compatibilit noto come NUXI problem dovuto al fatto che i processori Intel usano il metodo little endian e quelli Motorola il metodo big endian, si dice anche che hanno endianess diverse. Il termine NUXI deriva dallaspetto che avrebbe la parola UNIX se memorizzata in due posizioni consecutive di due byte in little endian.

1.3.5.4 Ciclo di memoria

Si chiama ciclo di memoria la sequenza di azioni che il sistema compie per leggere o scrivere un dato in memoria. Ipotizzando che il metodo di ordinamento dei dati in memoria sia il big endian, abbiamo, nel caso della lettura: 1. Lindirizzo del dato viene posto nel MAR. 2. Il decodicatore di indirizzi accede alla posizione di memoria indirizzata. 3. Se viene letta una parola, il byte indirizzato dal MAR viene posto nella met pi signicativa del MBR e il byte successivo viene posto nella met meno signicativa.

Architettura di un sistema di elaborazione

11

4. Se viene letto un byte viene posto nella met meno signicativa del MBR e laltra met viene riempita con copie del bit pi signicativo presente nel byte (meccanismo di estensione del segno). Nel caso della scrittura: 1. Lindirizzo della cella di memoria di destinazione viene posto nel MAR. 2. Il dato da memorizzare viene collocato nel MBR. 3. Se viene scritta una parola, il byte pi signicativo del MBR viene trasferito nella cella indirizzata dal MAR e il byte meno signicativo viene posto nella cella successiva. 4. Se viene scritto un byte, la met meno signicativa del MBR viene trasferita nella cella di memoria indirizzata dal MAR.

1.3.5.5 Struttura sica della memoria centrale

La memoria centrale viene realizzata con materiale semiconduttore; ogni unit elementare di informazione o bit di solito un multivibratore bistabile (o flip-flop), cio un circuito che pu assumere uno di due diversi stati possibili in modo stabile nch un certo impulso non lo fa passare nellaltro stato. La lettura e la scrittura in memoria consistono nel rilevare lo stato del ip-op e nellinviargli impulsi per cambiarlo. Tali operazioni avvengono con la stessa velocit per tutti i circuiti della memoria ed in maniera indipendente dalla loro posizione; quindi la memoria centrale una memoria ad accesso casuale (random) o uniforme. Le tecnologie con cui vengono realizzati i circuiti di memoria sono per due e quella basata sui ip-op non , come vedremo, la pi utilizzata: memorie bipolari TTL (Transistor Transistor Logic); in esse un ip-op viene ottenuto collegando almeno due transistor; in tal caso si ha una RAM statica (SRAM) in quanto linformazione rimane inalterata nch non interviene un impulso a farla cambiare; memorie a semiconduttori MOS (Metallo Ossido Semiconduttore) che richiedono un solo condensatore per ogni bit, se carico corrisponde al valore uno, altrimenti a zero; sono pi compatte ma meno veloci e necessitano di circuiti aggiuntivi per il continuo refresh dei valori perch i condensatori tendono a scaricarsi nel tempo (in pochi millisecondi). Tale tipo di memoria detto RAM dinamica (DRAM). La RAM statica pi veloce ma anche molto pi costosa; per questo motivo la memoria centrale di un computer realizzata con RAM dinamica mentre la RAM statica viene utilizzata per la memoria cache.

1.3.5.6 Memoria cache

La cache una memoria pi piccola della memoria centrale ma anche pi veloce. Nei moderni personal troviamo almeno due memorie cache: quella di primo livello (L1) grande alcuni KB, inglobata allinterno della CPU e veloce quanto la CPU e quella di secondo livello, grande qualche MB, situata esternamente alla CPU, meno veloce ma comunque pi veloce della memoria centrale.

12

Architettura di un sistema di elaborazione

Il loro ruolo quello di interporsi tra CPU e RAM allo scopo di immagazzinare dati e istruzioni che si ritiene possano servire alla CPU per le operazioni immediatamente successive, onde evitare che debbano essere letti nella pi lenta memoria centrale. Per questo la CPU cerca dati e istruzioni prima nella memoria cache L1 e poi nella L2 e solo in caso di insuccesso accede alla memoria centrale; inoltre quando una cella viene letta dalla RAM, il suo contenuto viene portato, oltre che alla CPU, anche nelle memorie cache, insieme a quello delle celle limitrofe. Prima di proseguire nellesame dei principi di funzionamento della cache presente nellunit centrale, soffermiamoci brevemente sul concetto pi generale di cache che incontriamo anche in altri ambiti informatici. In generale una cache una memoria tampone che si colloca (logicamente) fra due entit informatiche fra cui avviene uno scambio di dati e che sono notevolmente diverse dal punto di vista della velocit; il suo ruolo quello di sopperire alla lentezza dellentit meno veloce ospitando parte dei dati che da questa devono essere trasferiti allentit pi veloce riducendone quindi i tempi di attesa. Vediamo un paio di esempi in ambiti diversi da quello dellunit centrale: la cache del disco sso: in questo caso lentit lenta il disco, quella veloce lunit centrale e una parte della memoria centrale viene usata come cache del disco per cercare di rendere pi rapidi i trasferimenti da questultimo allunit centrale; la cache dei programmi di navigazione in Internet: in tal caso lentit lenta Internet (o meglio il collegamento alla rete), quella veloce il programma di navigazione e una parte del disco sso viene usata come cache per ospitare le pagine Web visitate e renderle rapidamente disponibili in caso di visita successiva. Tornando alla cache dellunit centrale notiamo che la sua utilit giusticata dalla validit, vericata sperimentalmente, dei seguenti due principi: principio di localit degli accessi nello spazio: se la CPU accede ad una cella, molto probabilmente negli istanti successivi acceder alle celle vicine; ci deriva dal fatto in moltissimi programmi si gestiscono vettori, cio insiemi di dati memorizzati in celle consecutive; principio di localit degli accessi nel tempo: se la CPU accede ad una cella, molto probabilmente negli istanti successivi acceder di nuovo a quella cella; ci deriva dal fatto che moltissimi programmi contengono cicli cio istruzioni che vengono eseguite ripetutamente in breve tempo. La presenza della memoria cache permette di velocizzare gli accessi in lettura alla RAM; non c invece alcun miglioramento per gli accessi in scrittura. A tale proposito ci sono due metodologie di gestione della cache: write back: i dati da memorizzare vengono scritti solo in cache e in un momento successivo anche nella memoria centrale; un metodo pi complesso e con qualche rischio di disallineamento dei dati, ma che assicura maggiore velocit di scrittura; write through: i dati da memorizzare vengono scritti contemporaneamente nella cache e nella memoria centrale; un metodo meno complesso ma leggermente pi oneroso riguardo ai tempi di accesso.

Architettura di un sistema di elaborazione

13

1.3.5.7 Memorie ROM

Sia le memorie SRAM che le DRAM sono volatili cio perdono il loro contenuto se viene a mancare lalimentazione elettrica. Esistono anche memorie non volatili come le ROM citate in precedenza; pi in dettaglio abbiamo: ROM: memorie in sola lettura che vengono scritte in fabbrica e non permettono in nessun modo di essere riscritte; PROM (Programmable ROM): memorie ROM che possono essere scritte, una sola volta, con apparecchiature apposite; EPROM (Erasable Programmable ROM): memorie ROM che possono essere cancellate e riscritte con apparecchiature apposite grazie allesposizione del chip a raggi ultravioletti; EEPROM (Electrically Erasable Programmable ROM): memorie ROM che possono essere cancellate e riscritte elettricamente direttamente sul computer dove sono utilizzate senza la necessit di rimuoverle e usare altri dispositivi. In questa tipologia di memorie rientrano anche le memorie flash che si stanno diffondendo molto rapidamente come memorie ausiliarie per i computer (ad esempio penne USB) o supporti di memorizzazione nellelettronica di consumo (ad esempio schede per fotocamere e videocamere digitali); la differenza fondamentale tra una memoria EEPROM tradizionale e una memoria ash nel fatto che alla prima si accede a livello di singole celle o parole, mentre alla seconda si accede a blocchi come avviene per i dischi ssi.

14

Architettura di un sistema di elaborazione

15

Capitolo

Il Personal Computer (parte I)


Il PC o Personal Computer senza dubbio il tipo di sistema di elaborazione pi conosciuto e utilizzato da molti anni a questa parte; grazie al suo avvento, risalente agli anni 80 del secolo scorso, si assistito alla diffusione dellinformatica come fenomeno di massa. In questa sede non ci soffermiamo sulla storia di questo strumento, sui motivi del suo successo e sulle prospettive future relative al suo utilizzo, ma prendiamo brevemente in esame i suoi componenti fondamentali esaminando le tecnologie su cui essi sono basati e i loro principi di funzionamento. Questo capitolo dedicato alla scheda madre a ai processori; nel capitolo 4 si prendono in esame le memorie centrali e le periferiche. Essendo il settore dei PC in continua e velocissima evoluzione, bene chiarire che le tecnologie illustrate in questo capitolo sono quelle in essere nella prima met del 2008; sicuramente nel giro di qualche mese alcune di esse saranno superate o sostituite da altre pi innovative. Quello che resta per valido il modello della macchina di Von Neumann che rimane alla base della struttura logica anche degli attuali Personal Computer; possiamo dire che essi sono una moderna evoluzione delle idee di Von Neumann e al loro interno troviamo ancora, tra gli altri componenti, gli elementi fondamentali che erano presenti nel modello: unit di controllo e di calcolo (riunite nella CPU), memoria centrale (RAM), bus di comunicazione, dispositivi periferici o di I/O (input/output).

2.1 La scheda madre del PC

La scheda madre (main board) sicuramente un componente fondamentale di un PC in quanto ha il compito di coordinare i passaggi di informazioni fra i vari dispositivi e costituisce anche il supporto sico cui tali dispositivi sono inseriti o collegati. La sua scelta importante perch fortemente legata a quella della CPU; infatti un certo modello di processore potr essere utilizzato solo su schede madri progettate per accoglierlo e non su altre di tipo diverso. Anche la scelta del tipo e della quantit di memoria RAM utilizzabile dipende fortemente dalle caratteristiche della scheda madre, mentre per altri dispositivi c un legame meno stretto (ad esempio se una scheda dispone di slot PCI dovrebbe poter accogliere qualsiasi scheda compatibile con questo standard). La scheda madre costituita da un circuito stampato o PCB (Printed Circuit Board) con nucleo centrale in bra di vetro di forma rettangolare su cui scorrono, su pi livelli, delle piste in rame. Viene usata la bra di vetro, che un cattivo conduttore, per fare in modo che i vari componenti della scheda siano isolati luno dallaltro. Il circuito stampato formato da una struttura laminare con quattro strati per il trasporto del segnale, uno strato di alimentazione, uno strato di terra, intervallati da strati isolanti. Nei quattro strati di segnale si trovano le tracce in rame, assimilabili a dei li elettrici, che uniscono punti diversi del circuito stampato (sono i bus di cui abbiamo parlato in precedenza); ovviamente il disegno delle tracce realizzato in fabbrica in modo automatico grazie ad appositi programmi. In alcuni casi il segnale deve passare da uno strato allaltro transitando su tracce di livelli diversi e questo reso possibile dalla presenza delle vie, cio di piccoli fori metallizzati che attraversano il PCB.

16

Il Personal Computer (parte I)

Gli strati di alimentazione e di terra servono ovviamente a distribuire lalimentazione e il collegamento a terra su tutta la supercie del PCB. Le tracce e le vie costituiscono lo schema elettrico della scheda madre e conuiscono nelle cosiddette piazzole di montaggio cio le zone in cui vengono saldati i vari componenti. Il montaggio di questi ultimi avviene grazie a due tecnologie: SMT (Surface Mounting Technology): la modalit pi moderna e permette di montare i componenti a contatto diretto con la supercie ottenendo un risparmio di spazio; completamente automatizzata e utilizzata per molti chip di piccole e medie dimensioni; PTH (Plated Throug Hole): la modalit tradizionale che prevede il posizionamento manuale con successiva saldatura automatizzata; viene utilizzata per i vari tipi di connettori, socket, slot, porte e per i condensatori discreti. Gli elementi appena citati (connettori, slot, socket porte) servono a collegare alla scheda madre la CPU, la RAM, le varie periferiche. I componenti o chip (elementi in plastica nera o ceramica della grandezza di un francobollo con piedini o PIN in metallo) direttamente saldati sulla scheda sono ad essa indissolubilmente legati e non possono essere sostituiti. Nella gura 2.1 viene proposto un esempio di scheda risalente al 2006 circa (con socket per Pentium IV); le lettere sono state inserite per contrassegnare i vari componenti a cui faremo riferimento nel proseguo.
Figura 2.1. |

Il Personal Computer (parte I)

17

2.1.1 Alimentazione della scheda madre

Uno dei compiti della scheda madre quello di distribuire lalimentazione ai vari componenti del sistema, sia che siano saldati sul PCB, sia che siano collegati in vario modo. Essa viene alimentata dallalimentatore del PC grazie al connettore a 24 poli contrassegnato dalla lettera A di gura 2.1 ed eventualmente grazie ad un secondo connettore a 4 o 8 poli posto vicino al socket e dedicato allalimentazione del processore. Sulla scheda madre sono poi presenti dei circuiti di trasformazione che servono a alterare le tensioni fornite dallalimentatore per quei componenti che funzionano con tensioni non standard. Nel caso di alcuni dispositivi che necessitano di molta energia (ad esempio dischi ssi e lettori ottici) lalimentazione arriva, grazie ad appositi cavi, direttamente dallalimentatore. Questultimo un componente molto importante perch deve trasformare la corrente alternata da 220 volts della normale rete elettrica in corrente continua da 12 volts (per i dischi ssi dei PC non portatili), 5 e 3,3 volts (per la maggior parte degli altri componenti) e deve essere di potenza adeguata in base alla quantit di dispositivi presenti nel sistema e alle loro esigenze energetiche.

2.1.2 Fattore di forma della scheda madre

Le schede madre si differenziano per il fattore di forma che un insieme di informazioni su forma, dimensione, disposizione dei componenti. Durante la storia dei PC i fattori di forma si sono via via evoluti con lobiettivo di razionalizzare la disposizione dei componenti interni della macchina e di migliorare i ussi daria interni per facilitare il raffreddamento dei dispositivi pi soggetti a surriscaldarsi (CPU, dischi ssi). Attualmente i fattori di forma pi diffusi sono ATX, DTX, ITX in varie versioni; questa variet dovuta alla necessit di rispondere a esigenze speciche di sistemi con caratteristiche siche molto diverse: server, workstation, compatti, ultracompatti e altri ancora. Senza illustrare le caratteristiche di tutti i vari formati citiamo solo le dimensioni in millimetri del formato ATX standard e del formato pi piccolo, il Pico-ITX: 305x244 e 100x72 rispettivamente.

2.1.3 Il chipset della scheda madre

Su ogni scheda madre presente un insieme di circuiti che prende il nome di chipset con lo scopo di supportare la CPU, la memoria, la cache e di assicurare le comunicazioni attraverso i bus. Si deve sottolineare che un chipset realizzato per il supporto ad una specica famiglia di processori, cosa che contribuisce a rendere esclusivo il legame fra un certo modello di scheda madre e un certo tipo di CPU. Nei casi pi comuni il chipset costituito da due soli chip: northbridge: ha il compito di interfacciarsi con i componenti pi veloci (CPU, memoria, interfaccia graca AGP o PCI-Express); southbridge: si interfaccia con i componenti meno veloci (slot PCI, canali EIDE, porte USB ecc.) Fra i due il chip pi importante sicuramente il northbridge che anche quello che si differenzia in base al processore (ci sono cio dei chipset diversi in cui il southbridge lo stesso), pi

18

Il Personal Computer (parte I)

veloce e realizzato con una tecnologia pi spinta e quindi spesso necessita di un dispositivo di raffreddamento. A tale proposito specichiamo che i dispositivi di raffreddamento possono essere attivi come le ventole, o passivi come i dissipatori; sul northbridge viene di solito applicato un dissipatore e questo permette anche di distinguerlo dal southbridge che ne sprovvisto. Nella gura 2.1 i due chip sono contrassegnati rispettivamente dalle lettere B (coperto dal dissipatore) e C. Nella gura 2.2 vediamo invece uno schema dei collegamenti del chipset.
Figura 2.2. |

2.1.4 Bus di sistema e bus di I/O

Il bus di sistema il bus (indirizzi, dati e controllo) utilizzato dai componenti veloci della macchina ed suddiviso in FSB (Front Side Bus) che collega la CPU, la memoria e la scheda video al northbridge e BSB (Back Side Bus) che collega la CPU alla memoria cache. I bus di I/O sono gestiti dal southbridge e ne esistono vari tipi. Tutti questi bus e, come gi sappiamo, anche la CPU, funzionano in modo sincrono grazie alla presenza di dispositivi di temporizzazione chiamati clock. Il clock pi famoso quello della CPU, ma il pi importante quello del FSB in quanto gli altri vengono impostati in base ad esso: il clock della CPU come multiplo (anche non intero) e quello del bus di I/O come sottomultiplo. Si noti anche che il bus pi veloce in assoluto il BSB che lavora alla stessa frequenza della CPU. Nei sistemi pi recenti il FSB viene sostituito da bus pi veloci come HyperTransport di AMD e QPI (Quick Path Interconnect) di Intel in grado di assicurare un tasso di trasferimento dati di 4,8 o 6,4 GBps contro 1,6 GBps del FSB. Esaminiamo ora brevemente alcuni bus di I/O tralasciando i vecchi bus ISA (Industry Standard Architecture), EISA (Extended ISA), VESA (Video Electronics Standards Association), caduti in disuso ormai da alcuni anni:

Il Personal Computer (parte I)

19

PCI (Peripheral Component Interconnection): collega il northbridge al southbridge e mette a disposizione degli slot di espansione (contrassegnati dalla lettera D nella gura 2.1) in cui inserire schede audio, schede di rete o di altro tipo; inizialmente il bus aveva ampiezza di 32 bit, velocit di 33 Mhz e banda massima di 133 MBps (Mega Byte per secondo) tutti parametri incrementati nelle versioni successive no ai valori rispettivamente di 64 bit, 66 Mhz e 533 MBps; PCI-X (PCI eXtended): sviluppato per schede di livello superiore che equipaggiano workstation grache o server; attualmente questo bus ha raggiunto una larghezza di 64 bit, una velocit di 533 Mhz e una banda massima di 4266 MBps; AGP (Accelerated Graphics Port): pur essendo un evoluzione dello slot PCI non da considerare un bus ma un collegamento punto a punto tra la scheda graca (che quindi deve essere unica in ogni PC) e il northbridge; stato inventato per soddisfare le grosse esigenze di velocit e di banda disponibile della graca a tre dimensioni passando dalla prima versione (AGP 1X) con banda di 266 MBps alla pi recente (AGP 8X) con banda di 2,1 GBps; il suo colore grigio o verde ed quello indicato con la lettera E nella gura 2.1; PCMCIA (Personal Computer Memory Card International Association): il bus per connettere schede (del formato di una carta di credito) ai PC portatili o notebook; attualmente sta perdendo di importanza in quanto da un lato alcune funzionalit un tempo assicurate da tali schede sono ora integrate nelle schede madri, mentre altre si ottengono collegando dispositivi alle porte esterne USB; PCI Express: il successore del PCI e del PCI-X; con essi retro compatibile ma ne modica ampiamente il funzionamento in quanto il trasferimento dati seriale e non pi parallelo, ha velocit di clock pi alte ed bidirezionale in simultanea. Diamo qualche altra informazione sul nuovo bus PCI Express: gli slot PCI Express possono essere 1X, 8X, 12X, 16X, con frequenza di clock da 5Ghz a 80 Ghz e banda da 250 MBps a 4 GBps; gli slot 8X e 12X si trovano soprattutto sui server mentre i 16X sono dedicati alle schede grache, in sostituzione del vecchio slot AGP, e possono essercene due in ogni scheda madre dando quindi la possibilit di installare due schede grache dividendo tra esse il carico di lavoro. La modica pi rilevante dovuta allintroduzione del PCI Express per a livello di progettazione del chipset, in quanto il nuovo bus si colloca (almeno in parte) a un livello pi alto ( collegato al northbridge) rispetto al vecchio PCI (collegato al southbridge). Il nuovo standard mette a disposizione un certo numero di canali seriali bidirezionali (lanes), ad esempio 20, che possono essere aggregati in un gruppo da 16 (16X) per la scheda graca, collegato al northbridge, e quattro gruppi da 1 (1X) per i normali slot PCI Express, collegati al southbridge. I connettori PCI Express crescono di dimensione dal 1X al 16X e sono tra loro compatibili in senso crescente (cio una scheda 1X pu essere collegata ad uno slot 12X ma il viceversa ovviamente impossibile). Nella scheda madre di gura 2.1 non ci sono slot di questa nuova generazione; essi sono comunque ancora di colore bianco come i PCI ma con il lato corto dello slot posto al contrario in modo che sia impossibile inserire una scheda PCI in uno slot PCI Express o viceversa.

20

Il Personal Computer (parte I)

2.1.5 Componenti integrati e altri elementi nella scheda madre

In una scheda madre si trovano di solito una serie di componenti direttamente integrati; questo permette di risparmiare sui costi del sistema ma impedisce la loro sostituzione; come esempi possiamo citare il chip audio, il chip di rete e, in caso di sistemi particolarmente economici e/o portatili, il chip graco. La presenza di un chip integrato non impedisce comunque lutilizzo di una scheda di espansione, presumibilmente pi potente, che lo sostituisca dal punto di vista funzionale: ad esempio possiamo senzaltro installare una scheda audio PCI, con caratteristiche di gestione del suono professionali, da usare al posto del chip audio integrato (in tal caso pu essere necessario disattivare questultimo dalle impostazioni del BIOS della macchina). Concludiamo questo breve esame di una scheda madre di un PC indicando la posizione nella gura 2.1 di alcuni altri elementi importanti il cui ruolo verr approfondito nei paragra successivi: con la lettera F indicato il socket per lalloggiamento della CPU; con la lettera G gli slot per inserire i moduli di memoria RAM; con la lettera H i connettori EIDE per i dischi; con la lettera I il connettore per il lettore di dischetti; con la lettera J lalloggiamento per la batteria a bottone utile tra laltro per la conservazione della data e dellora di sistema; con le lettere K alcune connessioni e porte esterne, da sinistra a destra: porte PS2 per tastiera e mouse, porte parallele e seriali, porte USB, connessioni audio.

2.2 Il processore

La storia dei processori indissolubilmente legata a quella dellazienda Intel creatrice nel 1971 del 4004, la prima CPU, nel 1981 dell8086 che ha equipaggiato i primi PC, e tuttora maggiore produttrice mondiale di microprocessori; qui si far dunque principalmente riferimento alle CPU della famiglia x86 di cui capostipite, appunto, l8086 e che comprende tutte le CPU no al Pentium IV rimasto in produzione no al 2006 nonch i moderni processori a 64 bit con core multipli. Questo non signica che non esistano processori prodotti da altre aziende, basti citare gli storici Zilog Z80 e Motorola 68000; nel settore degli attuali PC sono abbastanza diffuse le CPU prodotte dalla AMD, che sono compatibili con quelle della Intel. In queste dispense non vogliamo entrare nei dettagli delle caratteristiche dei vari nodelli di microprocessori Intel (e AMD) che si sono via via succeduti o che sono attualmente in commercio, anche perch queste informazioni sono gi obsolete o destinate a diventarlo in breve tempo, ci limitiamo invece ad esporre i concetti di base sulla loro realizzazione, la loro architettura interna e il loro funzionamento. Un microprocessore un core inserito in un package di ceramica (gura 2.3) e contenente milioni di transistor che si possono considerare raggruppati in: unit di controllo e di predizione delle istruzioni; unit di esecuzione o ALU e unit per i calcoli in virgola mobile o FPU (Floating Point Unit); memoria locale, costituita dallinsieme dei registri; memoria cache di primo livello o L1; interfaccia di collegamento con lesterno o FSB (Front Side Bus).

Il Personal Computer (parte I)


Figura 2.3. |

21

Notiamo che la FPU non sempre stata integrata nella CPU; ci avvenuto, per i processori Intel, a partire dal 80486, prima era un chip separato e opzionale chiamato coprocessore matematico (ad esempio per l80386 esisteva il coprocessore 80387). Nei processori moderni invece troviamo integrate addirittura pi FPU (oltre che pi ALU). Le caratteristiche pi rilevanti dei processori possono essere cos elencate: ampiezza in bit dei registri; frequenza del clock; tecnologia costruttiva; il numero di piedini (pin); gestione della memoria; architettura; tipo di istruzioni eseguibili.

2.2.1 Ampiezza in bit dei registri della CPU

Riguardo allampiezza in bit dei registri si passati dai 4 bit del processore 4004, ai 16 bit dell8086, ai 32 bit della famiglia IA-32 (Intel Architecture 32), comprendente tutti i processori dal 80386 del 1985 ai Pentium IV, per arrivare ai 64 bit dei processori multicore Intel 64 o dei processori IA-64 (Intel Architecture 64) come lItanium. Quando si afferma che una CPU a x bit si intende proprio dire che lampiezza dei suoi registri x bit; quindi le attuali CPU a 64 bit hanno registri di tale dimensione; lampiezza dei bus dati e indirizzi invece non determinante a questo proposito (ci si pu rendere conto di questo osservando i dati contenuti nella tabella 2.6 presente nel paragrafo 2.2.8 sulle generazioni delle CPU).

22

Il Personal Computer (parte I)

2.2.2 Frequenza del clock della CPU

La frequenza del clock della CPU ha avuto continui incrementi: l8086 aveva un clock a 8 Mhz, il valore massimo si raggiunto nel 2005 con il Pentium IV Extreme Edition con clock a 3,72 Ghz, poi i produttori di CPU hanno cessato di spingere verso lalto la frequenza del clock per i motivi che vedremo nel paragrafo 2.2.9 dedicato ai processori con core multipli. Ricordiamo comunque che la frequenza del clock della CPU deve essere un multiplo, anche non intero, della frequenza del FSB della scheda madre e questo un altro elemento che lega fortemente una CPU alla scheda che la ospita.

2.2.3 Tecnologia costruttiva dei processori (legge di Moore)

La parte funzionale di una CPU il core grande qualche millimetro quadrato e ottenuto immergendo un cristallo purissimo di silice in un bagno di silice in un ambiente sterile ed estraendolo con molta lentezza; questo permette di ottenere un cilindro di silice purissima che viene poi tagliato, con lame di diamante, in dischi del diametro di 30 cm chiamati wafer (gure 2.4 e 2.5).
Figura 2.4. |

Figura 2.5. |

Su tali dischi vengono creati i transistor e i collegamenti su vari livelli o layer, grazie a ripetuti processi di fotolitografia e drogaggio.

Il Personal Computer (parte I)

23

Con la fotolitograa, grazie a delle maschere e a una apposita luce, viene rimosso il silicio dalle parti non mascherate creando cos i circuiti secondo limpronta delle maschere. I transistor vengono poi collegati, a livelli superiori, con minuscoli li in rame che devono essere necessariamente isolati in uno spazio ristrettissimo; per questo viene usato il silicio drogato con apposite sostanze in modo da evitare qualsiasi conduzione di corrente e da avere una elevata resistenza al calore che si sviluppa allinterno della CPU. Al termine, i singoli chip che sono stati creati, denominati die vengono tagliati dal disco e montati sul supporto ceramico o package. I transistor di un core vengono misurati in base alla lunghezza del canale di gate; minore questa lunghezza, misurata in micron, e meglio , in quanto diminuisce la distanza tra drain e source (qui non approfondiamo ulteriormente natura e funzionamento di un transistor) con i seguenti vantaggi: maggiore velocit della CPU; minore dissipazione di energia perch ci sono minori capacit parassite; minore tensione di lavoro e quindi minore consumo di energia (e minore surriscaldamento). Si parla di tecnologia costruttiva di un core intendendo la grandezza in micron dei transistor al suo interno; questa grandezza in costante diminuzione e comporta il parallelo incremento del numero di transitor contenuti nel processore. Le tecnologie pi recenti sono state a 0,09 micron (o 90 nanometri) per gli ultimi Pentium IV e 0,065 micron (o 65 nanometri) per i nuovi processori a doppio core che contengono circa 300 milioni di transistor e permettono di inserire nel package anche la memoria cache L2 e L3, oltre alla L1 che era gi inglobata da molto tempo. Attualmente Intel gi passata alla tecnologia a 0,045 micron mentre AMD prevede di adeguarsi a ne 2008. Per rendersi conto di quali limiti stia raggiungendo la tecnologia produttiva dei microprocessori si pensi che nei transistor di 45 nanometri il gate ha uno spessore di 1 nanometro corrispondente a soli 4-5 atomi di silicio (ogni atomo di silicio misura 0,22 nanometri). A questo proposito interessante anche citare la legge di Moore concepita nel 1965 da Gordon Moore che tre anni dopo sarebbe stato uno dei fondatori della Intel; si tratta di una legge empirica che nella sua prima versione afferma: il numero dei transistor in un processore raddoppia ogni 12 mesi. Questa legge si dimostrata sostanzialmente corretta anche se venti anni dopo stata leggermente rivista assumendo la seguente forma: le prestazioni dei processori raddoppiano ogni 18 mesi. Grazie ai continui miglioramenti nella tecnologia realizzativa delle CPU si potuta abbassare anche la tensione di alimentazione (cosa molto importante specialmente per i notebook); le prime CPU venivano alimentate con tensioni di 5 volts, attualmente siamo scesi sotto i 2 volts.

24

Il Personal Computer (parte I)

2.2.4 Numero di pin della CPU

Riguardo ai piedini (pin) si deve notare che i processori pi recenti non hanno pi i pin ma dei fori sul package; infatti i vecchi package PGA (Pin Grid Array) sono stati sostituiti dai LGA (Land Grid Array) per i quali previsto che i pin siano sul socket della scheda madre. Ovviamente un processore pu essere installato solo su un socket adatto ad ospitarlo; a tale proposito i socket sono identicati da un numero che non altro che la quantit di fori (o di pin) presenti sul socket stesso. Nella gura 2.1 il socket indicato con la lettera F.

2.2.5 Gestione della memoria da parte della CPU

La quantit di memoria gestibile dipende dallampiezza del bus indirizzi: si va dai 20 bit dell8086, ai 32 o 36 bit delle CPU IA-32, ai 64 bit dei processori attuali. I processori Intel usano, per la memorizzazione, la convenzione little endian con leccezione delle CPU Intel Itanium, per le quali pu essere scelta anche la convenzione big endian impostando opportunamente un bit del registro di stato. Inoltre le CPU Intel (e compatibili) gestiscono la memoria in modo segmentato cio tramite la sua suddivisione in parti, chiamate appunto segmenti; una cella in questo caso viene individuata indicando lindirizzo iniziale del segmento e loffset della cella, cio la sua distanza dallinizio del segmento; questi valori vengono espressi solitamente in esadecimale nella forma segmento:offset. Questa organizzazione si contrappone a quella lineare o piatta (at) adottata ad esempio dalle CPU Motorola, nella quale ogni cella individuata semplicemente dal suo indirizzo. Il motivo di questa scelta, operata dalla Intel, che comporta una gestione della memoria senzaltro molto pi complessa, va fatto risalire allavvento dell8086: in esso infatti il bus indirizzi era di 20 bit e quindi la memoria gestibile ammontava a 1 MB; per conservare la retro compatibilit con il processore precedente, l8080 che era a 8 bit ma aveva il bus indirizzi a 16 bit e quindi una memoria indirizzabile di 64 KB, fu deciso di dividere idealmente la memoria dell8086 in 65536 segmenti parzialmente sovrapposti grandi ognuno 64 KB. Questo anche il motivo per cui tutti i processori Intel e compatibili prevedono un insieme di registri che si chiamano registri di segmento. Per individuare a quale cella sica di memoria corrisponda un indirizzo espresso in modo segmentato occorre effettuare un semplice calcolo: si moltiplica per 16 lindirizzo del segmento (a questo scopo basta aggiungere uno zero alla sua destra) e poi si somma con loffset. A titolo di esempio consideriamo lindirizzo segmentato A0E3:1B56, e facciamo quindi la somma tra A0E3016 e 1B5616 ottenendo A298616. Come detto i segmenti di memoria dell8086 sono parzialmente sovrapposti e ognuno inizia 16 locazioni di memoria dopo il precedente; come conseguenza di questo fatto abbiamo che una stessa cella di memoria pu essere referenziata in pi modi, con indirizzi segmentati diversi. Notiamo anche che le CPU x86 sono non ortogonali intendendo per ortogonale un processore in cui i registri sono non specializzati. Ad esempio nell8086 abbiamo 14 registri con ruoli ben deniti (che qui non vengono approfonditi):

Il Personal Computer (parte I)

25

4 registri di segmento: CS (Segmento Codice o istruzioni), DS (Segmento Dati), SS (Segmento Stack), ES (Segmento Extra dati); 4 registri accumulatori o generali: AX, BX, CX, DX, di cui si possono utilizzare anche le rispettive met, alta e bassa, da 8 bit, identicate con AH, AL, BH, BL, CH, CL, DH, DL; 2 registri indice: DI e SI; 2 registri per la gestione della pila o stack: SP (Stack Pointer) e BP (Base Pointer); il registro FLAGS o registro di stato; il registro contatore di programma, qui denominato IP (Instruction Pointer). Con il passaggio allarchitettura dei processori a 32 bit, denominata IA-32 e il cui capola stato l80386, ci sono molte novit che riguardano i registri e la gestione della memoria, ma molte caratteristiche rimangono inalterate (ad esempio la non ortogonalit). I registri aumentano di numero e assumono unampiezza di 32 bit, salvo qualche eccezione come per i registri di segmento che assumono il nome di registri selettori e ai quali si aggiungono due ulteriori registri per segmenti extra: FS e GS. I registri accumulatori, il registro di stato e quelli usati come offset diventano tutti a 32 bit e il loro nome cambia con laggiunta di una e iniziale; abbiamo quindi: EIP, ESP, EBP, ESI, EDI, EFLAGS, EAX, EBX, ECX, EDX. Per i registri accumulatori rimane valida la possibilit di un uso parziale che anzi si amplia: abbiamo infatti EAX, EBX, ECX, EDX a 32 bit ma si possono ancora usare AX, BX, CX, DX per usufruire delle rispettive loro parti basse di 16 bit, a loro volta divisibili nelle sezioni da 8 bit come in precedenza. La successiva evoluzione verso i 64 bit, con larchitettura x86-64, ha portato lampiezza dei registri, appunto, a 64 bit con le seguenti caratteristiche: i nomi dei registri sono gli stessi di prima con una R al posto della E; ci sono ulteriori otto registri estesi indicati con le sigle da R8 a R15; rimane la possibilit delluso parziale (porzioni di 8, 16, 32 bit, ad esempio AL o AH, AX, EAX nel caso di RAX) dei registri accumulatori e dei registri indice; per questi ultimi diviene possibile usare anche il solo byte meno signicativo, (ad esempio per RSP si pu usare anche SPL oltre a ESP e SP) cosa non prevista nelle CPU x86. Riguardo alla memoria rimane la possibilit di gestirne 1 MB in modo segmentato come nell8086 (si dice allora che si lavora in modalit reale); la novit per la modalit protetta nella quale si gestiscono 4 GB di memoria (e molti di pi con le CPU a 64 bit) con indirizzi nella forma selettore:offset chiamati indirizzi virtuali. Questo nome dipende dal fatto che non detto che tali indirizzi corrispondano a reali indirizzi sici di memoria (solo da pochi anni i comuni Personal Computer hanno una dotazione di memoria centrale di qualche GB); i processori sono infatti in grado di gestire la memoria virtuale con un meccanismo detto di paginazione dinamica sfruttato poi in modo opportuno anche dai moderni sistemi operativi. Questo argomento richiederebbe notevoli approfondimenti che per esulano dagli scopi di queste dispense.

26

Il Personal Computer (parte I)

Concludiamo citando, per i processori a 32 bit, la tabella dei descrittori, alle cui righe si riferiscono i registri selettori e che contiene indirizzi iniziali e dimensioni dei vari segmenti; questi ultimi hanno infatti dimensione variabile (massimo 4 GB). Di ogni selettore solo 13 dei 16 bit sono usati per individuare una riga della tabella; i segmenti sono quindi al massimo 8192. Gli indirizzi virtuali nella forma selettore:offset con offset a 32 bit, vengono tradotti in indirizzi lineari a 32 bit che, come detto, non detto che corrispondano direttamente a indirizzi sici di memoria.

2.2.6 Architetture dei processori (pipeline e predizione)

Le architetture dei processori possono essere classicate in base al grado di parallelismo che permettono in fase di elaborazione; abbiamo le seguenti possibilit: SISD (Single Instruction Single Data): viene eseguita una istruzione alla volta e si preleva e memorizza in memoria un solo dato alla volta; questa in pratica larchitettura classica, sequenziale proposta da Von Neumann ma ormai non pi adottata in nessuna CPU reale; MISD (Multiple Instruction Single Data): vengono eseguite istruzioni diverse contemporaneamente, ognuna sui propri dati (meccanismo del pipelining); SIMD (Single Instruction Multiple Data): viene eseguita contemporaneamente la stessa operazione su pi dati; quello che avviene grazie alle istruzioni MMX (MultiMedia eXtension) introdotte da Intel allepoca del processore Pentium per accelerare le applicazioni multimediali e poi migliorate, a partire dal Pentium III, dalle istruzioni SSE (Streaming SIMD Enhancement); MIMD (Multiple Instruction Multiple Data): larchitettura dei sistemi multiprocessore (o multicore) in cui ogni processore pu operare autonomamente; in questo caso si parla di elaborazione parallela. Soffermiamoci in particolare sullarchitettura MISD basato sul concetto di pipeline o catena di montaggio. Lobiettivo quello di diminuire il tempo di elaborazione di un insieme di istruzioni senza aumentare il numero di processori coinvolti (senza ricorrere cio al calcolo parallelo): si considerano le operazioni da svolgere come scomponibili in parti pi elementari o fasi e lunit di elaborazione organizzata in n stadi collegati in sequenza proprio come nelle catene di montaggio con ogni stadio specializzato a eseguire una certa fase; in questo modo, a regime, tutti gli stadi operano contemporaneamente su fasi diverse della stessa o di diverse istruzioni e ogni stadio elabora i dati forniti dal precedente passando i suoi risultati al successivo. Un primo esempio di pipelining si avuto gi nel processore 8086 che era dotato di una unit di prefetch e di una omonima coda, con lo scopo di prelevare dalla memoria un certo numero di istruzioni mentre unaltra istruzione veniva decodicata e eseguita. Il meccanismo stato poi sviluppato e potenziato no ad arrivare alla pipeline a 31 stadi degli ultimi modelli di Pentium IV. Ladozione della pipeline comporta per anche dei problemi: problemi strutturali: dovuti al fatto che alcune risorse del sistema di elaborazione possano dover essere condivise tra i vari stadi intralciando quindi lesecuzione contemporanea delle varie fasi;

Il Personal Computer (parte I)

27

problemi di dipendenza dei dati: una fase successiva necessita di un dato che per ancora la fase precedente non ha prodotto; problemi di dipendenza dal controllo: se durante lesecuzione si incontra un salto le operazioni gi eseguite nella pipeline sono inutili e la pipeline deve essere svuotata. Questi inconvenienti possono portare alla necessit che alcuni stadi rimangano inattivi o meglio si pongano in esecuzione di una bolla cio di una operazione che non fa niente, al solo scopo di attendere di poter riprendere le operazioni valide. Il terzo tipo di problemi il pi grave, tanto che i moderni processori sono equipaggiati con un sistema di predizione dei salti (branch prediction) grazie al quale si tenta di indovinare in quale direzione proseguir lelaborazione riempendo la pipeline di conseguenza. Nei processori pi moderni, non solo viene stimato quali saranno le successive istruzioni, ma ne viene anche calcolato il risultato, aumentando il guadagno in prestazioni in caso di predizione corretta; in questo caso si parla di esecuzione speculativa. In ogni caso la spinta a utilizzare pipeline sempre pi lunghe si esaurita e nei nuovi processori Intel a doppio core la troviamo a 14 stadi; questa lunghezza evidentemente un punto di equilibrio che permette di avere i vantaggi della tecnica del pipelining riducendo al minimo i problemi sopra illustrati. Chiudiamo questo paragrafo con la denizione di processore super scalare che si ha quando sono presenti pi pipeline che vengono gestite in parallelo grazie ad esempio alla presenza di pi unit di calcolo (il primo esempio in questo senso stata la CPU Pentium).

2.2.7 Tipo di istruzioni delle CPU: CISC e RISC

In precedenza (paragrafo 1.3.3) abbiamo visto come lesecuzione delle istruzioni pu essere effettuata via hardware grazie ad opportuni circuiti, oppure (almeno in parte) tramite lesecuzione di microprogrammi cablati nei circuiti. Grazie alluso dei microprogrammi per anche possibile dotare le CPU di un repertorio di istruzioni molto complesse e di lunghezza variabile che svolgano il lavoro di molte istruzioni semplici; in questo modo si hanno istruzioni lunghe da eseguire e processori molto complessi, ma il numero di istruzioni da usare per svolgere le elaborazioni basso. Le CPU realizzate secondo questo criterio vengono dette CISC (Complex Instruction Set Computer). I vantaggi delle CPU CISC sono tutti dalla parte dei programmatori che devono scrivere programmi a basso livello e che hanno a disposizione istruzioni pi potenti per tale scopo. Dal punto di vista delle prestazioni invece la situazione non ottimale in quanto ogni istruzione complessa necessita di moltissimi cicli di clock per essere eseguita. Partendo da questa considerazione nata lidea dei processori RISC (Reduced Instruction Set Computer) nei quali si utilizzano istruzioni semplici, di lunghezza ssa, che non operano direttamente in memoria ma solo con i registri, eseguite interamente via hardware e molto veloci da eseguire (anche pi di una per ogni ciclo di clock). Questa idea stata anche supportata da una ricerca che ha dimostrato che in una CPU solo il 20% delle istruzioni compiono l80% del lavoro; ci si quindi concentrati a ottimizzare e rendere veloci questo 20% di istruzioni. Inoltre istruzioni molto semplici, veloci e di lunghezza ssa permettono di ottimizzare lefcienza delle pipeline.

28

Il Personal Computer (parte I)

Con i processori RISC il lavoro della CPU al momento dellesecuzione molto semplicato ma la complessit si sposta nella produzione del software in quanto il programmatore (a basso livello) ha a disposizione istruzioni molto meno potenti. Daltra parte solo pochi programmi vengono oggi scritti direttamente con i linguaggi di basso livello (assembly); la maggior parte viene realizzata con linguaggi di programmazione avanzati, in cui quindi la maggiore complessit della programmazione RISC ricade su quegli strumenti automatici (compilatori) che devono tradurre i programmi in forma eseguibile per il processore. Attualmente la disputa fra i sostenitori delle soluzioni RISC e CISC si spenta e i moderni processori adottano soluzioni miste come la EPIC (Escpicitly Parallel Instruction Computing) degli Intel Itanium in cui si hanno istruzioni semplici di lunghezza ssa combinate insieme in istruzioni pi lunghe in modo da poter essere elaborate contemporaneamente; in questo caso si parla anche di set di istruzioni VLIW (Very Long Instruction Word). Sicuramente per i processori Intel della famiglia x86 possono essere considerati CISC mentre gli AMD gi da tempo hanno utilizzato tecnologie miste e pi orientate verso i RISC. Infatti dal 2002 con i processori Duron, Athlon, Opteron, AMD ha abbandonato la corsa sfrenata allaumento della frequenza del clock (che invece Intel ha continuato ancora per qualche anno) introducendo il fattore equivalente di prestazioni o Performance Rating contrassegnato da un + vicino allindicazione della velocit. In pratica signica che, ad esempio, lAthlon XP 3200+ ha prestazioni equivalenti a un Pentium IV a 3,2 Ghz malgrado la sua frequenza di clock effettiva sia solo di 2,2 Ghz; questo possibile proprio grazie alla diversa architettura interna della CPU oltre che a grazie una cache e un FSB molto veloci.

2.2.8 Generazioni di processori

I processori possono essere classicati, relativamente alla loro evoluzione, in generazioni; nella tabella 2.6 vengono riassunte le varie generazioni con lindicazione, per ognuna, del processore o della categoria di processori pi signicativa, dellarchitettura (ampiezza dei registri), della micro-architettura, della lunghezza del bus dati e indirizzi della frequenza massima del clock e dellanno di riferimento. Per micro-architettura si intende il modo in cui vengono realizzati allinterno delle CPU le istruzioni tipiche di una architettura come la IA-32 o la Intel 64.
Tabella 2.6 |
Gen. Prima Seconda Terza Quarta Quinta Sesta Settima Ottava Nona Decima Processore 8086 80286 80386 80486 Pentium Pentium Pro, Pentium II, Pentium III Pentium IV Itanium, Itanium-2 CPU Core 2 CPU Core i7 Archit. IA-32 IA-32 IA-32 IA-32 IA-32 IA-64 Intel 64 o x86-64 Intel 64 o x86-64 Microarc. i386 i486 P5 P6 Netburst Itanium Core (Penryn) Nehalem Bus dati 16 16 32 32 64 64 64 64 64 64 Bus ind. 20 24 32 32 32 36 36 64 64 64 Clock 10 Mhz 20 Mhz 50 Mhz 100 Mhz 300 Mhz 1 Ghz 3,72 Ghz 1,66 Ghz 3 Ghz 3,2 Ghz Anno 1980 1982 1985 1989 1993 1995 2000 2002 2006 2008

Il Personal Computer (parte I)

29

Occorre sottolineare come i processori Itanium segnino un netto distacco rispetto agli altri prodotti Intel con il passaggio dallarchitettura IA-32 alla IA-64: basti pensare che tali CPU abbandonano la gestione segmentata della memoria a favore di quella lineare; ovvia conseguenza che le due famiglie di processori non sono compatibili. I processori Intel 64 invece sono compatibili con i predecessori (questo anche il motivo della presenza della sigla x86-64). La tabella si riferisce a processori Intel; riguardo agli AMD possiamo citare la famiglia di processori Athlon come prodotti di maggiore spicco; in particolare la CPU Athlon 64 x2 ha portato i 64 bit e il doppio core nel mondo dei PC in anticipo rispetto ai processori di Intel. Infatti AMD per prima ha proposto lestensione dellinsieme di istruzioni x86 verso i 64 bit chiamandola AMD64 o anche x86-64 o x64; successivamente anche Intel ha reso compatibili i suoi processori a tale estensione denominando per la relativa tecnologia EM64T (Extended Memory 64 Technology).

2.2.9 Le CPU multicore

Come accennato in precedenza, la corsa allaumento della frequenza di clock delle CPU si fermata; il massimo stato raggiunto con i circa 3,8 Ghz degli ultimi modelli di Pentium IV. Questo accaduto nonostante la micro-architettura alla base di questi processori, cio la NetBurst Micro Architecture, prevedesse frequenze teoriche no ai 10 Ghz. I motivi fondamentali di questa scelta sono i costi eccessivi di sviluppo e lenorme aumento di consumi e di calore provocato da ogni ulteriore incremento della frequenza del clock. Arrivati alla soglia dei 4 Ghz di frequenza, infatti, un altro incremento del 10% della velocit avrebbe comportato un aumento del 15% dei consumi e un miglioramento delle prestazioni molto inferiore al 10%. Si quindi passati da uno sviluppo verticale della tecnologia delle CPU ad uno orizzontale che consiste nellintegrare nella stessa CPU due o pi core gemelli che condividono le varie risorse della CPU stessa (cache, bus, registri). Pu essere interessante notare come, no alle CPU Pentium IV lincremento delle prestazioni veniva perseguito con tre tipi di strategie: aumento della frequenza del clock; aumento della quantit di cache in modo da minimizzare gli accessi alla pi lenta memoria centrale; aumento della larghezza di banda verso la memoria centrale e diminuzione della latenza (intervallo di tempo o ritardo che intercorre tra la richiesta di un dato e il momento della sua disponibilit). Facendo un parallelo con il mondo dei motori a scoppio, vuol dire aumentare i giri del motore ottimizzando aspirazione e scarico; ma questo non lunico modo di incrementare la potenza: si pu anche aumentare la cilindrata (cilindri pi grossi) oppure il numero di cilindri, mantenendo costante il regime di rotazione. Per le CPU laumento di cilindrata corrisposto al passaggio dallarchitettura a 32 bit a quella a 64 bit con vantaggi per tutto sommato non eccezionali specialmente per macchine e applicazioni di fascia bassa (ambienti home e ofce) che non sfruttano appieno le maggiori possibilit di

30

Il Personal Computer (parte I)

trasferimento e elaborazione di dati a 64 bit e di indirizzamento di una quantit di memoria enormemente maggiore (bus indirizzi a 64 bit anzich a 32 o 36). Invece laumento del numero di cilindri per le CPU ha signicato integrare due core (e poi anche 4 o 8) nello stesso package. In questo modo si riescono ad avere prestazioni quasi doppie senza far aumentare eccessivamente i consumi e il riscaldamento del processore. Semplicando al massimo le cose possiamo supporre che, aumentando il clock di una CPU da 2,5 Ghz a 5 Ghz, lassorbimento di potenza passi da 75 Watt a 200 Watt; invece accostando due CPU da 2,5 Ghz il consumo si limita a 75 + 75 Watt. Inoltre occorre osservare che la fabbricazione di CPU che operino con frequenze pi basse molto pi semplice e meno costosa. I primi processori Intel della nuova micro-architettura Core, e cio le CPU delle famiglie Core 2 Duo e Core 2 Extreme proposte dalla met del 2006, avevano frequenze di clock di 2,66 e 2,93 Ghz rispettivamente, inferiori quindi agli ultimi modelli di Pentium 4 con una dissipazione di soli 75 Watt contro 150 Watt. Fra la Netburst e la Core, lIntel ha proposto una micro-architettura dedicata ai PC portatili denominata Mobile cui sono appartenute le CPU Pentium M e Core Duo speciche proprio per i notebook; occorre precisare che la Core Duo, pur essendo ottenuta accostando due core Pentium M e pur avendo un nome somigliante ai processori di nuova generazione, non a considerare una CPU multicore in quanto la sua micro-architettura deriva addirittura dalla vecchia P6. Le principali novit della micro-architettura Core possono essere cos riassunte: Wide Dynamic Execution: permette di aumentare il numero di istruzioni eseguite per ciclo di clock grazie alla pipeline a 14 stadi, a un meccanismo molto sosticato di predizione delle diramazioni del usso di esecuzione e allaggiunta di buffer per le istruzioni che permettono di minimizzare la necessit di accessi alla cache in caso di diramazioni o salti; Advanced Smart Cache: consente ai due core di condividere la stessa cache L2 in modo da ottimizzarne lutilizzo quando uno dei due inattivo e da non dovere duplicarne il contenuto se i due core operano sulle stesse istruzioni; Smart memory Access: grazie alla tecnologia di predizione dello sviluppo delle operazioni vengono caricate nella cache L2 e L1 i dati e le istruzioni successive prima di avere completato quelle correnti; se la predizione risulta corretta si ha un notevole guadagno nei tempi di esecuzione; Intelligent Power Capability: permette che i componenti della CPU temporaneamente inutilizzati vengano spenti per risparmiare energia, senza per comprometterne i tempi di reazione alla ripresa della loro attivit; Advanced Digital Media Boost: aumenta la velocit di esecuzione delle istruzioni multimediali SSE e prestazioni lavorando a 128 bit anzich a 64. Con la successiva famiglia dei processori Core i7 con micro-architettura Nehalem si hanno i primi modelli di CPU quad core monolitici, cio con quattro core (e, in prospettiva, otto core) su un singolo die. Anche nella famiglia precedente di processori esistevano modelli con quattro core, ma erano realizzati accostando in un unico package due blocchi dual core.

Il Personal Computer (parte I)

31

La soluzione monolitica permette di condividere alcune unit del processore e di avere una connessione diretta tra i vari core (nel caso di blocchi separati la comunicazione avviene invece grazie al bus di sistema) Altre importanti novit introdotte con questa architettura sono: integrazione, allinterno della CPU, del controller della memoria; adozione di un ulteriore livello di memoria cache, denominato L3, condiviso tra tutti i core e ampio 8 MB che si aggiunge alla cache L1 (64 KB) e L2 (256 KB) dedicate ad ogni core; processo produttivo inizialmente a 45 nanometri ma destinato a passare a 32 nanometri; numero di transistor contenuti nel chip, almeno per i primi modelli, inferiore rispetto ai processori precedenti (731 milioni contro 820) in quanto la quantit totale di memoria cache inferiore (nei core 2 presente una cache L2 di 12 MB); sostituzione del FSB con il gi citato bus QPI; recupero della tecnologia Hyper-Threading introdotta nei Pentium IV e adesso migliorata e rinominata Simultanues Multi-Threading, grazie alla quale ogni core sico pu elaborare contemporaneamente due distinti thread (parti in cui pu essere suddivisa lelaborazione di un processo o programma in esecuzione); in questo modo o un processore quad core equivale logicamente ad una unit con otto core. Si deve correttamente osservare che molte delle novit introdotte nella famiglia dei processori Intel Core i7 (quad core monolitico, controller della memoria integrato, sostituzione del FSB con un bus pi veloce) non sono novit assolute ma riproposizioni di soluzione introdotte in precedenza da AMD: il bus HyperTransport e il controller della RAM integrato risalgono addirittura al 2001 e al 2003 rispettivamente e sono presenti in tutte le CPU Athlon 64, la monoliticit stata adottata nel 2007 con le CPU Phenom II X4. I processori multicore rientrano nella categoria MIMD come i sistemi con pi processori (multiprocessore) con la differenza per che nel primo caso i core sono nella stessa CPU e condividono le risorse, nel secondo caso si hanno diverse CPU che non condividono alcuna risorsa se non un bus di comunicazione ad esse dedicato. Si deve comunque notare, che per sfruttare appieno la presenza di core multipli, i programmi devono essere prodotti con la tecnologia SMT (Simultaneos Multithreading Technology) e i sistemi operativi devono essere multi-thread. In pratica i programmatori devono scrivere codice secondo un modello di programmazione concorrente, in caso contrario i programmi vengono eseguiti da un solo core. Le tipologie di programmi pi adatte alle CPU multicore sono quelle che riguardano la manipolazione di video e audio, la gestione di grosse basi di dati, la graca, i servizi offerti in background dai server di rete; invece un programma costantemente in primo piano che necessita di molte risorse, come un videogioco di ultima generazione, viene eseguito pi velocemente da un processore tradizionale con clock molto spinto.

32

Il Personal Computer (parte I)

33

Capitolo

I linguaggi a basso livello


I linguaggi a basso livello sono quei linguaggi di programmazione che hanno un basso livello di astrazione e sono orientati alla macchina dipendendo in modo molto accentuato dalle caratteristiche hardware di questultima e in particolare della CPU. Nella scala di astrazione dei linguaggi al gradino pi basso troviamo il linguaggio macchina, seguito da vicino dai linguaggi assembly; tutti gli altri linguaggi di programmazione hanno un grado di astrazione molto pi elevato e vengono denominati linguaggi di alto livello o orientati al problema.

3.1 Il linguaggio macchina

Si dice istruzione macchina una istruzione corrispondente ad una operazione direttamente eseguibile dallHardware dellelaboratore; linsieme di tali istruzioni si chiama Linguaggio macchina. I programmi che devono essere eseguiti da un elaboratore elettronico devono risiedere in memoria centrale, secondo quanto proposto da John Von Neumann nel 1946. Lesecuzione avviene istruzione dopo istruzione in modo sequenziale e le istruzioni devono essere espresse in linguaggio macchina. Le istruzioni macchina hanno le seguenti caratteristiche: sono codicate in forma binaria; sono identicate da un codice che indica loperazione da eseguire; sono le sole istruzioni che un calcolatore pu comprendere ed eseguire; dipendono fortemente dallarchitettura dellelaboratore, dai registri della CPU, dalle varie unit funzionali; ne consegue che ogni elaboratore ha un proprio linguaggio macchina; linsieme delle istruzioni macchina eseguibili da un elaboratore costituisce il suo repertorio.

3.1.1 Il ciclo istruzione

Come abbiamo visto in precedenza, lesecuzione di ogni istruzione avviene grazie ad una serie di operazioni controllate dalla CU, che coinvolgono la memoria centrale, la ALU ed eventualmente altri dispositivi del sistema di elaborazione; tale serie di operazioni chiamata ciclo istruzione. Un ciclo istruzione costituito dalle seguenti fasi: 1. Fetch o prelevamento: listruzione il cui indirizzo specicato nel registro PC viene prelevata dalla memoria centrale e portata nel registro IR; al termine di tale operazione il valore del PC viene incrementato in modo da fare riferimento allindirizzo della prossima istruzione da eseguire; 2. Decode o decodoca: il decodicatore delle istruzioni interpreta il codice operativo dellistruzione e invia opportuni segnali di attivazione dei dispositivi (ALU, controllori di I/O ecc.) che devono eseguire listruzione;

34

I linguaggi a basso livello 3. Execute o esecuzione: loperazione corrispondente allistruzione viene eseguita.

Ovviamente al termine di un ciclo istruzione inizia immediatamente quello riguardante la successiva istruzione.

3.1.2 Descrizione e classicazione delle istruzioni macchina

In generale una istruzione macchina pu essere cos schematizzata:


Codice operativo Operandi

La parte codice operativo indica il tipo di istruzione (ad esempio 00000011 per la somma, 00000001 per lo spostamento ecc.); la sua lunghezza in bit in relazione con il numero di istruzioni eseguibili dallelaboratore: 2**K istruzioni se i codici sono lunghi K bit. La parte operandi variabile; la sua lunghezza e la sua presenza dipendono dal tipo di istruzione; in essa si fa riferimento a registri, ad indirizzi di celle di memoria o a entrambi. Naturalmente anche gli operandi sono indicati in binario. La lunghezza totale di una istruzione dipende dallelaboratore e nello stesso elaboratore possono essere previste istruzioni di lunghezza diversa; essa comunque sempre un multiplo della lunghezza di una cella di memoria; avremo quindi istruzioni lunghe 2, 4, 6 .... Byte.

3.1.2.1 Classicazione delle istruzioni per funzione svolta

Le istruzioni macchina possono essere classicate nel seguente modo in base ai tipi di operazioni svolte: istruzioni di I/O: servono per portare i dati allinterno o allesterno dellunit centrale dellelaboratore; prevedono lindicazione della periferica interessata e della locazione di memoria dove si trova il dato da portare allesterno o dove si vuole immettere il dato proveniente dallesterno; istruzioni aritmetico-logiche: sono le istruzioni di manipolazione dei dati; devono essere indicati i dati su cui operare e la destinazione del risultato; istruzioni di spostamento: servono a spostare dati da locazioni di memoria a registri della CPU o viceversa; istruzioni di salto: servono a modicare la sequenza di esecuzione di un programma e devono contenere lindirizzo di memoria dove si trova la prossima istruzione da eseguire. Fra le istruzioni di salto ne esistono di due tipi: incondizionato: in questo caso il salto viene comunque effettuato; condizionato: il salto si ha solo se vericata una certa condizione da specicare nellistruzione; tale condizione viene testata tramite lesame di un opportuno bit del registro di stato.

I linguaggi a basso livello

35

Per il sistema lesecuzione di un istruzione di salto molto semplice: viene scritto lindirizzo a cui si deve saltare nel registro PC al posto dellindirizzo della prossima istruzione. Supponiamo ad esempio che la CPU stia eseguendo listruzione memorizzata allindirizzo 150 e che tale istruzione (qui scritta per semplicit in Italiano e non in binario) sia salta a 200 e occupi 2 byte; al termine della fase di fetch di tale istruzione il valore del PC viene posto a 152 (indirizzo della prossima istruzione da eseguire senza salti); dopo la fase di decode, che riconosce listruzione di salto incondizionato, questultimo viene eseguito aggiornando il valore del PC a 200.

3.1.2.2 Classicazione delle istruzioni per numero di indirizzi

Quando una istruzione macchina ha fra i suoi operandi dei dati contenuti nella memoria centrale deve far riferimento agli indirizzi in cui essi risiedono. Vediamo come si possono classicare le istruzioni in base al numero di indirizzo esaminando un piccolo esempio concreto: supponiamo di avere un elaboratore in cui gli indirizzi di memoria vengono indicati con 16 bit e i codici operativi con 8 bit; supponiamo inoltre di voler svolgere una somma tra il contenuto delle celle di memoria 10 e 12 ponendo il risultato nella cella 20 e che il codice operativo della somma sia 00000011. istruzioni a tre indirizzi:
|00000011 0000000000010100 0000000000001010 0000000000001100

in questa istruzione vengono specicati gli indirizzi dei due addendi e lindirizzo del risultato (gli spazi sono inseriti per facilitare la lettura, in realt listruzione sarebbe una stringa ininterrotta di 0 ed 1); le istruzioni a tre indirizzi non sono molto usate negli elaboratori a causa della loro lunghezza; quella qui proposta occuperebbe sette byte. istruzioni a due indirizzi:
|00000011 0000000000001100 0000000000001010

questa istruzione somma il contenuto della cella 10 al contenuto della cella 12 ed il risultato viene posto nella cella 12 cancellando cos uno dei dati di partenza; per portare il risultato nella cella 20 sar quindi necessaria una successiva istruzione di spostamento del tipo:
|sposta il contenuto della cella 12 nella cella 20 | |00000001 0000000000010100 0000000000001100

avendo supposto che il codice dellistruzione sposta sia 00000001. istruzioni a un indirizzo: le istruzioni di questo tipo si servono del registro accumulatore per contenere uno degli operandi ed il risultato:
|00000011 0000000000001100

questa istruzione somma il contenuto della cella 12 al contenuto dellaccumulatore e pone il risultato nellaccumulatore; per poter raggiungere il nostro obiettivo tale istruzione deve

36 essere preceduta da:


|sposta nellaccumulatore il contenuto della cella 10

I linguaggi a basso livello

e seguita da:
|sposta il contenuto dellaccumulatore nella cella 20

che per brevit non traduciamo in binario; istruzioni a zero indirizzi: tale tipo di istruzioni riscontrabile solo nelle cosiddette unit centrali a stack o stack processor le quali usano dei registri organizzati come una pila (stack) gestita con la tecnica LIFO (Last In First Out) i dati sono memorizzati nei registri rispettando la sequenza di arrivo; lestrazione di un dato dalla pila avviene dal registro valorizzato per ultimo; la somma del nostro esempio viene realizzata nel seguente modo:
|00000011

questa istruzione preleva gli ultimi due dati presenti nella pila li somma e memorizza il risultato nella pila eliminando entrambi i dati di partenza; essa deve essere preceduta dalle seguenti istruzioni di inserimento nella pila (push):
|copia in testa allo stack il contenuto della cella 10 |copia in testa allo stack il contenuto della cella 12

e seguita dallestrazione dalla pila (pop):


|preleva dato dallo stack e ponilo nella cella 20 (POP)

supponendo che x e y siano il contenuto rispettivamente delle celle 10 e 12 la successione delle operazioni la seguente:
Operazione inizio push 10 push 12 somma pop 20 Valori nella pila x y x x+y

Si noti che il concetto di unit centrale a stack indipendente dallutilizzo di parte della memoria centrale come stack, effettuato da molti elaboratori grazie ad un apposito registro detto stack pointer (SP) che il registro che contiene lindirizzo della locazione di testa della pila.

I linguaggi a basso livello

37

3.1.2.3 Classicazione delle istruzioni per modo di indirizzamento

Le istruzioni macchina si possono classicare anche in base al modo in cui viene fatto riferimento agli indirizzi di memoria dei dati coinvolti in esse. Si ha quindi la classicazione in base al modo di indirizzamento: indirizzo assoluto o diretto: il valore indicato come operando lindirizzo della cella di memoria desiderata; indirizzo indiretto: il valore indicato come operando solitamente un registro che contiene lindirizzo della cella di memoria desiderata; indirizzo relativo: il valore indicato come operando indica lo scostamento della cella desiderata dallindirizzo dellistruzione; in pratica lindirizzo dato prendendo come base lindirizzo della cella contenente listruzione; quindi lindirizzo effettivo viene calcolato sommando a quello relativo il valore contenuto nel registro PC; gli indirizzi relativi vengono usati quando le celle di memoria di un programma devono essere spostate in posizioni diverse della memoria sica senza alterare gli indirizzi (codice rilocabile); indirizzo indexato: il valore indicato come operando viene sommato al contenuto di un registro (registro indice o XR) per ottenere lindirizzo della cella di memoria desiderata; questo tipo di indirizzamento adatto al caso di dati memorizzati in posizioni consecutive di memoria (vettore di memoria); il numero usato lindirizzo di base del vettore, il valore del registro indice (offset) permette di riferirsi ad un particolare elemento; operando immediato: il numero indicato come operando il valore (costante) da usare nellistruzione; in questo caso non previsto alcun accesso in memoria. Sono previsti anche altri tipi di indirizzamento pi complessi, come indiretto indexato, allo scopo di potenziare le possibilit della programmazione a basso livello (in assembly); daltra parte questi indirizzamenti richiedono vari accessi in memoria e molti calcoli e quindi diminuiscono lefcienza dei programmi.

3.1.3 Esempio di programma in linguaggio macchina

Vediamo, in un ipotetico linguaggio macchina, un banale programma che effettui la sottrazione tra due numeri interi positivi, di cui il primo il maggiore, togliendo ciclicamente una unit ad entrambi nch il secondo numero non si azzera; a quel punto il primo numero sar il risultato. Prima, per i lettori che gi conoscono linguaggi pi evoluti, vediamo una possibile soluzione in linguaggio C.
|int |{ | | | | | | | | |}
main() int dato1,dato2,ris; dato1=15; dato2=12; while (dato2!=0) { dato1=dato1-1; dato2=dato2-1; } ris=dato1;

38

I linguaggi a basso livello

Supponiamo di avere un elaboratore con parole a 16 bit, con 16 registri numerati da 0 a 15 ciascuno dei quali pu contenere un numero intero. Supponiamo poi che le istruzioni macchina siano composte da tre campi: il primo di 8 bit il codice operativo, il secondo di 4 bit indica il registro, il terzo di 16 bit indica lindirizzo di memoria della cella alla quale ci si vuole riferire. Le istruzioni da utilizzare sono le seguenti:
Istruzione 01011000 01010000 01011011 00000111 10000010 X X X X Y Y Y Y Signicato sposta nel registro X il contenuto della cella di indirizzo Y sposta il contenuto del registro X nella cella di indirizzo Y sottrai dal contenuto del registro X il contenuto cella di indirizzo Y salta allistruzione di indirizzo Y se il contenuto del registro X diverso da zero, altrimenti prosegui in sequenza stop

I due numeri da sottrarre si trovano nelle posizioni di indirizzo:


|0000000010010110 = 150 |0000000010011000 = 152
e

mentre la costante 1 nella cella di indirizzo:


|0000000010011010 = 154

il risultato verr memorizzato nella cella di indirizzo:


|0000000010011100 = 156

Il programma posto in memoria a partire dalla posizione:


|0000000001111010 = 122

Ogni istruzione occupa due parole (32 bit di cui 4 inutilizzati). Il programma in linguaggio macchina il seguente:
|Indirizzo | |0000000001111010 |0000000001111110 |0000000010000010 |0000000010000110 |0000000010001010 |0000000010001110 |0000000010010010
Istruzione (122) (126) (130) (134) (138) (142) (146) 01011000 0001 0000000010010110 01011000 0010 0000000010011000 01011011 0001 0000000010011010 01011011 0010 0000000010011010 00000111 0010 0000000010000010 01010000 0001 0000000010011100 10000010 0000 0000000000000000

Le prime due istruzioni caricano i contenuti delle posizioni 150 e 152 nei registri 1 e 2 rispettivamente; con la terza e la quarta si sottrae 1 ad entrambe; listruzione allindirizzo 138 esegue il

I linguaggi a basso livello

39

test sul secondo registro: se diverso da zero torna allistruzione della cella 130 altrimenti passa alla successiva istruzione nella quale si memorizza il contenuto del registro 1 (che contiene il risultato) nella cella 156; quindi il programma termina.

3.2 Il linguaggio assembly

Il linguaggio assembly il linguaggio di programmazione simbolico pi a basso livello cio pi vicino alla logica di funzionamento della macchina. Esso si distingue dai linguaggi di alto livello come il C, il Pascal, il COBOL e qualche altro centinaio che invece sono pi vicini al modo di ragionare e operare delluomo e in varia misura specializzati per la realizzazione di soluzioni di problemi applicativi negli ambiti pi vari. Il linguaggio assembly comunque costituisce gi un importante passo in avanti rispetto al linguaggio macchina permettendo di superare alcuni grossi limiti di questultimo.

3.2.1 Problemi nelluso del linguaggio macchina

Da quanto visto circa le caratteristiche del linguaggio macchina emergono in modo abbastanza netto le difcolt nello scrivere programmi servendosi di questo strumento; in sintesi: necessit di ricordare codici operativi costituiti da sequenze di cifre binarie prive di signicato immediato per luomo; necessit di fare riferimento direttamente a indirizzi di celle di memoria o a registri della CPU per potersi riferire agli operandi coinvolti nelle operazioni da svolgere; necessit di fare riferimento a indirizzi di istruzioni per scrivere le istruzioni di salto; difcolt nella correzione dei programmi, in quanto qualsiasi piccola modica come laggiunta di una istruzione pu comportare lesigenza di modicare molte delle altre istruzioni; infatti per far posto alla nuova istruzione si devono spostare in memoria quelle che la seguono e forse anche i dati su cui il programma opera, quindi tutte le istruzioni di salto verso istruzioni spostate, o che fanno riferimento a dati spostati, devono essere modicate. Questi problemi vengono risolti nei linguaggi di programmazione, sia a basso che alto livello con luso di: codici operativi mnemonici; nomi simbolici per i dati in memoria (le cosiddette variabili); etichette per contrassegnare le istruzioni.

3.2.2 Traduzione dei programmi assembly

E opportuno parlare di una pluralit di linguaggi assemblativi in quanto, esattamente come per il linguaggio macchina, ogni tipo di elaboratore (o meglio, di processore) ha il proprio. Infatti si pu affermare che lassembly costituisce la rappresentazione simbolica del linguaggio macchina e che c una corrispondenza uno a uno tra le istruzioni in assembly e quelle in linguaggio macchina.

40

I linguaggi a basso livello

Lassembly, come accennato, ha per il grosso vantaggio di prevedere luso di codici operativi mnemonici, nomi di variabili e etichette per le istruzioni e quindi permette una scrittura dei programmi meno laboriosa anche se ancora vincolata alla conoscenza delle caratteristiche logiche e siche del sistema di elaborazione. Naturalmente un programma scritto in questo linguaggio (programma sorgente) non pu essere immediatamente eseguito dallelaboratore; esso deve essere prima tradotto in linguaggio macchina. Questa operazione viene svolta da programmi traduttori detti assemblatori o assembler. Quindi la scrittura (editing) di un programma in linguaggio assembly solo la prima operazione da compiere per arrivare a poter eseguire il programma stesso; nello schema della gura 3.4 vediamo le varie fasi che conducono dalla scrittura del sorgente allesecuzione del programma con lindicazione del risultato prodotto da ogni fase e, in corsivo, dello strumento da usare per svolgere la fase stessa.
Figura 3.4. |

Nello schema i ussi di ritorno sono dovuti allesigenza di dover correggere il programma sorgente a seguito di eventuali errori riscontrati nella fase di traduzione e di linking (errori di sintassi) oppure in sede di esecuzione (errori run-time o errori logici). Nel seguito descriviamo in dettaglio solo le fasi di traduzione, linking e caricamento; per le altre diamo solo qualche indicazione. La stesura dei sorgenti pu essere fatta con un qualsiasi editor di testo, anche molto elementare e questa pu essere la scelta da preferire specialmente a ni didattici. Per ottimizzare e velocizzare le attivit di produzione dei programmi esistono invece degli strumenti, chiamati IDE (Integrated Development Environment), che mettono a disposizione tutto loccorrente per gestire le varie fasi, dalla stesura del sorgente al collaudo.

I linguaggi a basso livello

41

Riguardo al collaudo notiamo che esso pu essere svolto dal programmatore che ha scritto il programma o anche a altre persone; pu avvenire eseguendo il programma con dei dati di prova e, in caso si riscontrino errori o bug, pu avvalersi di strumenti di aiuto per la loro individuazione chiamati debugger (il cui uso qui non approfondiamo).

3.2.2.1 Il programma assemblatore

Una volta scritto il programma sorgente occorre passarlo in input allassemblatore in modo da ottenerne la traduzione in codice macchina. Prima di illustrare come avviene tale operazione, ricordiamo che ogni categoria di processore ha il proprio repertorio di istruzioni e quindi il proprio linguaggio macchina; di conseguenza anche il linguaggio assembly si differenzia in base al tipo di CPU e, in qualche caso, si hanno anche versioni diverse del linguaggio per lo stessa architettura di processore. Nel caso dei processori Intel x86 si hanno poi linguaggi assembly che sono basati su due modi diversi di scrivere le istruzioni e si parla di sintassi Intel e sintassi AT&T; nel primo caso si tratta prevalentemente di prodotti per le piattaforme DOS/Windows, nel secondo per le piattaforme Unix/Linux (il riferimento a AT&T dovuto al fatto che il primo Unix nato presso tale azienda). Possiamo elencare alcune delle versioni di assembly x86 pi diffuse e usate: MASM (Macro Assembler), prodotto proprietario della Microsoft, basato sulla sintassi Intel e disponibile per le piattaforme DOS/Windows; TASM (Turbo Assembler), prodotto proprietario della Borland, basato sulla sintassi Intel e disponibile per le piattaforme DOS/Windows; NASM (Netwide Assembler), prodotto libero e gratuito, basato sulla sintassi Intel e disponibile sia per DOS/Windows che per Unix/Linux;
AS 86,

prodotto libero e gratuito, basato sulla sintassi Intel e disponibile per Unix/Linux;

GAS (GNU Assembler), prodotto libero e gratuito creato nellambito del progetto GNU (GNU is Not Unix), basato sulla sintassi AT&T; disponibile nel mondo Unix/Linux, ma facendo parte del pacchetto gcc lo troviamo anche nella versione di questultimo per Windows, chiamata cygwin. Luso di un linguaggio assembly piuttosto di un altro fa si che la stessa istruzione venga scritta in modi anche molto diversi; ad esempio lo spostamento del contenuto del registro bx in ax viene scritto con le seguenti istruzioni, rispettivamente in GAS e in NASM:
1 2 3 4

|; GAS |movw %bx, %ax |;NASM |mov ax, bx

Dopo la traduzione per si ottiene la stessa istruzione macchina (il linguaggio macchina per quel tipo di CPU unico) espressa in esadecimale come: 89d8. Lo scopo di questo paragrafo fornire alcune conoscenze generali su come viene reso eseguibile un sorgente assembly e su come opera un assemblatore e non illustrare tutti i dettagli sulluso di una delle possibili versioni alternative del linguaggio; di conseguenza non approfondiamo, in

42

I linguaggi a basso livello

questa sede, neppure le differenze esistenti tra sintassi Intel e sintassi AT&T. Per questi aspetti pi pratici, relativi alla programmazione assembly, si possono consultare le dispense dello stesso autore dal titolo: Programmare in assembly in GNU/Linux con sintassi AT&T reperibili allindirizzo http://www.maxplanck.it/materiali selezionando la scelta VEDI MATERIALE e cercando poi in base al docente scegliendo il nome Ferroni Fulvio. Ci serviamo comunque di un piccolo esempio di sorgente scritto in assembly AT&T in modo da poter spiegare pi agevolmente in che modo opera il programma assemblatore.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

|// Dati |.data |num1: .byte 150 |num2: .byte 74 |tot: .word 0 |/* Istruzioni */ |.text |.globl _start |_start: | movw $0, %ax # pulisce il reg. ax | movb (num1), %al | addb (num2), %al | movw %ax, (tot) |fine: | movl $1, %eax | int $0x80

Nel listato la numerazione stata aggiunta per facilitarne la descrizione; le righe o le stringhe che iniziano con // e con # oppure che iniziano con /* e terminano con */, sono dei commenti. Il programma svolge una elaborazione molto banale che consiste nel sommare due valori, grandi un byte ciascuno, contenuti nelle celle di memoria corrispondenti alle etichette num1 e num2, ponendo poi il risultato nella cella identicata dalletichetta tot grande due byte (una word). Il calcolo viene fatto usando il registro accumulatore a 16 bit ax, o meglio gli 8 bit della sua met bassa al, e avviene nelle righe tra la 10 e la 13. Alla riga 15 si fa invece uso del registro accumulatore esteso eax a 32 bit. I codici operativi delle istruzioni comprendono un sufsso che indica la lunghezza dei dati coinvolti: b: 1 byte; w: 1 word, cio 2 byte; l: 1 long, cio 4 byte. A riga 14 denita una etichetta istruzioni ne: che inserita solo a scopo dimostrativo; servirebbe per i salti, ma qui non viene utilizzata. Le altre istruzioni (righe 9, 15, 16) sono sse ed essenziali per il corretto funzionamento di qualsiasi programma scritto in assembly AT&T. Nella prima parte del listato (righe 2-5) sono deniti i dati che il programma deve utilizzare; si tratta del segmento dati (.data), seguito poi dal segmento istruzioni (.text).

I linguaggi a basso livello

43

Il fatto che il programma sia suddiviso in segmenti (ci sarebbero anche un segmento stack e un segmento extra che qui non vengono usati) rispecchia la gestione segmentata della memoria da parte dei processori x86. In questo piccolo esempio sono presenti tutti i tre tipi di istruzioni che si possono trovare in un sorgente assembly, e precisamente: dichiarative: sono le istruzioni che servono a dichiarare le etichette corrispondenti ai dati usati dal programma; esecutive: sono le vere e proprie istruzioni corrispondenti alle azioni che lesecutore dovr svolgere; direttive: non si tratta di istruzioni del linguaggio assembly ma di istruzioni rivolte allassemblatore per fornirgli informazioni utili alla traduzione del programma. Per la precisione, nel nostro esempio, le direttive sono alle righe 2, 7 e 8 e informano lassemblatore di quali sono il segmento dati e il segmento istruzioni e di dove inizi la parte esecutiva del listato. Alle righe 3, 4, 5 abbiamo tre istruzioni dichiarative contenenti etichette dati, alle righe 9 e 14 due etichette istruzioni, le altre (a parte i commenti) sono esecutive. In precedenza avevamo accennato al fatto che esista una corrispondenza uno a uno tra istruzioni macchina e istruzioni assembly; questo vero se si considerano tra queste ultime solo le esecutive e se non si considerano quelle che richiamano sottoprogrammi o routine come int $0x80 (genera un interrupt software corrispondente al codice esadecimale 80 che fa eseguire la routine di chiusura dellesecuzione). Lassemblatore non traduce in binario le istruzioni direttive e neppure le dichiarative; le prime, come detto servono a passargli informazioni circa lo svolgimento del suo compito, le altre le usa per una prima fase della traduzione che ci accingiamo a descrivere. I compiti di un assemblatore sono i seguenti: tradurre in linguaggio macchina il programma sorgente, fornendo come risultato il programma oggetto; segnalare eventuali errori nella sintassi delle istruzioni; presentare (a video o su le) in forma leggibile (testo ASCII) il listing del programma oggetto; si tratta di un listato contenente informazioni sulla traduzione di ogni istruzione del sorgente e sugli indirizzi di memoria in cui risiedono le istruzioni tradotte e i dati da elaborare. Tutti gli assemblatori svolgono la loro funzione di traduzione in due passate: nella prima passata controllano la sintassi delle istruzioni, interrompendosi e fornendo opportune segnalazioni in caso di errore, e creano una tabella chiamata tavola dei simboli in cui inseriscono tutti i simboli o etichette (dati e istruzioni) incontrate e i corrispondenti indirizzi di memoria calcolati automaticamente; nella seconda passata avviene la traduzione vera e propria in codice macchina, fatta usando la tavola dei simboli precedentemente creata e la tavola dei simboli predefiniti, specica di ogni assembly e che contiene i corrispondenti binari dei codici operativi delle istruzioni.

44

I linguaggi a basso livello

Il motivo per cui sono necessarie due passate che durante la traduzione si possono incontrare riferimenti simboli ancora non deniti che lassemblatore non saprebbe come risolvere. Vediamo pi in dettaglio cosa avviene nella prima passata: ogni riga del programma sorgente viene suddivisa nei suoi elementi di base (etichetta, codice mnemonico, operandi ecc.); se letichetta presente viene memorizzata con il suo indirizzo nella tavola dei simboli; vengono decodicati il codice mnemonico dellistruzione, gli identicatori dei registri e il modo di indirizzamento usato nellistruzione; viene inserito il codice macchina relativo allistruzione appena tradotta e viene registrato il suo indirizzo; in base alla lunghezza in celle di memoria dellattuale istruzione macchina, viene calcolato lindirizzo della successiva. Anche per la seconda passata entriamo pi in dettaglio: se la riga contiene unetichetta, essa viene cercata nella tavola dei simboli e il corrispondente indirizzo viene posto allinterno dellistruzione macchina; se la riga contiene un dato numerico o un gruppo di caratteri ASCII, ne viene calcolato lequivalente esadecimale e inserito allinterno dellistruzione macchina; se la riga contiene unistruzione di salto, viene cercata nella tavola dei simboli letichetta a cui si deve saltare e il suo indirizzo viene inserito allinterno dellistruzione macchina. Nella descrizione delle operazioni svolte nelle due passate si fatto pi volte riferimento a indirizzi di dati e istruzioni; essi si riferiscono ad uno spazio ttizio di memoria detto spazio logico, che pu o non pu coincidere con lo spazio fisico che verr assegnato al programma eseguibile. Nel primo caso si parla di programma assoluto, nellaltro di programma rilocabile. Se il programma rilocabile, gli indirizzi dello spazio logico sono indirizzi relativi, calcolati rispetto allinizio del programma (indirizzo relativo zero); essi potranno essere variati in sede di linking quando, come vedremo tra breve, il nostro modulo oggetto viene unito ad altri moduli oggetto e lo spazio di memoria diviene unico. La loro trasformazione in indirizzi reali (o assoluti) avviene con una operazione denominata rilocazione che pu essere: statica: in tal caso la trasformazione avviene, per tutte le istruzioni, al momento del caricamento in memoria centrale per lesecuzione; dinamica: in tal caso la trasformazione avviene subito prima dellesecuzione di ogni singola istruzione. Unaltra osservazione importante riguarda i simboli o etichette che, come abbiamo visto, possono essere predeniti oppure no; nel secondo caso si possono ulteriormente distinguere in: simboli locali: deniti nel programma e riferibili (usabili) solo al suo interno;

I linguaggi a basso livello

45

simboli globali: deniti nel programma ma riferibili anche da parte di altri moduli (programmi); simboli esterni: riferiti nel programma ma deniti in altri moduli. Nel caso dei simboli esterni lassociazione ai rispettivi indirizzi relativi non pu essere fatta dallassemblatore in quanto essi non sono deniti nel programma che in fase di traduzione; tale operazione rimandata alla fase di linking, nella quale il nostro modulo oggetto unito ad altri moduli oggetto in cui deve esistere la denizione di tali simboli (altrimenti viene segnalato un errore fatale che impedisce la creazione del programma eseguibile).

3.2.2.2 La fase di linking

La fase di traduzione non conduce alla creazione del programma eseguibile perch necessaria una ulteriore operazione chiamata linking (lunico termine italiano che possa essere una traduzione accettabile collazione, ma si preferisce usare il termine inglese) compiuta da un programma linker. In questa fase il nostro modulo oggetto viene unito ad altri moduli oggetto che possono essere: moduli di libreria gi pronti, detti anche di supporto run-time, indispensabili per il funzionamento del programma; moduli oggetto scritti dal programmatore, anche in linguaggi diversi da quello usato per il primo modulo. Contemporaneamente viene anche completata lassegnazione degli indirizzi ai simboli deniti come esterni in qualche modulo e vengono aggiornati tutti gli indirizzi rilocabili. Al termine si ha la creazione del programma eseguibile con il suo spazio logico di memoria, pronto per essere caricato nella memoria centrale per lesecuzione. Quello appena descritto per solo uno dei modi in cui pu avvenire il linking; abbiamo infatti: linking statico: quello appena descritto, in cui tutti i moduli oggetto necessari vengono inseriti una volta per tutte nelleseguibile; linking dinamico: i moduli vengono richiamati solo al momento del bisogno durante lesecuzione (un esempio molto noto di questa modalit di linking si ha con i le .dll dynamic linking library usati in ambiente Windows). Il linking statico ha il vantaggio di assicurare migliori prestazioni da parte delleseguibile, che non deve interrompersi per il caricamento di moduli ulteriori ed preferibile se si vuole creare un programma il pi possibile indipendente dallambiente in cui sar eseguito (in quanto ha al suo interno tutti i moduli che servono per farlo funzionare). Il linking dinamico, daltra parte, permette di ottenere programmi eseguibili molto pi snelli e non costringe a ricreare di nuovo leseguibile ogni volta che viene fatta una piccola modica ad un qualsiasi modulo (basta tradurre solo il modulo modicato in modo da avere il rispettivo modulo oggetto aggiornato). Nei moderni ambienti operativi si preferisce lalternativa del linking dinamico ma si pu ricorrere a quello statico qualora esigenze particolari lo richiedano.

46

I linguaggi a basso livello

3.2.2.3 Il caricamento del programma

Quando un programma viene lanciato in esecuzione c unulteriore fase che deve essere svolta e che consiste nel caricamento del programma in memoria centrale; talvolta non ci si accorge della presenza di questa operazione a meno che il programma non sia molto grande e richieda quindi un tempo abbastanza lungo per essere trasferito. Tale compito svolto dal programma loader che copia leseguibile dalla memoria di massa in cui esso conservato nella RAM. Ricordiamo che questo passo essenziale afnch il programma possa essere eseguito in accordo con il concetto di programma memorizzato espresso da Von Neumann nel 1946. Possiamo avere due tipi di caricamento: caricamento statico: viene effettuato una volta per tutte e lassegnazione dello spazio di memoria al programma non pu variare durante tutta la sua esecuzione; caricamento dinamico: viene effettuato anche a pi riprese ed eventualmente in modo parziale, lo spazio sico assegnato al programma eseguibile pu variare durante lesecuzione; ci reso possibile dalle tecniche di allocazione dinamica della memoria (memoria virtuale) che tutti i moderni sistemi operativi sono in grado di gestire. Notiamo anche che il caricamento in memoria pu essere dinamico solo se il programma rilocabile.

47

Capitolo

Il Personal Computer (parte II)


In questo capitolo completiamo lesame dei componenti di un moderno PC occupandoci delle RAM, delle periferiche e della comunicazione tra queste ultime e lunit centrale.

4.1 La memoria centrale dei PC

Fisicamente la memoria RAM per i PC costituita da moduli cio da circuiti stampati su cui sono i saldati e veri e propri chip di memoria (gura 4.1).
Figura 4.1. |

I moduli diffusi attualmente sono i DIMM (Dual Inline Memory Modules) e i SODIMM (Small Outilne DIMM) per i portatili e vanno inseriti in appositi slot sulla scheda madre (ad esempio quelli indicati con la lettera G in gura 2.1). Tralasciando le vecchie modalit di funzionamento delle memorie RAM, come FPM (Fast Page Mode) e EDO (Extended Data Out), consideriamo le tipologie di memoria pi moderne iniziando dalle SDRAM (Synchronous Dynamic RAM) che hanno costituito un punto di svolta grazie alla loro capacit di operare in sincrono con le CPU, fornendo dati ad ogni ciclo di clock. Queste memorie vengono anche chiamate SDR (Single Data Rate) per distinguerle dalle successive DDR (Double Data Rate) che sono in grado di trasferire il doppio dei dati per ogni ciclo di clock e dalle DDR2 che trasferiscono il quadruplo dei dati. Le frequenze delle memorie SDR erano tipicamente di 66, 100, 133 Mhz; per le DDR si parte da 266 Mhz (133 effettivi), per arrivare a 600 Mhz con una banda di trasferimento dati da 2,1 a 4,8 GBps. Le DDR2 partono da 400 Mhz (100 effettivi) per salire no a 800 e oltre con banda di trasferimento tra 3,2 e 6,4 GBps. Attualmente le memorie in commercio sono le DDR2 e le DDR3 ancora pi veloci e con una piedinatura (numero e dimensione dei contatti da inserire nello slot) diversa. Fra le varie tipologie di RAM ci sono inoltre differenze sul numero e la disposizione di incavi nella piedinatura; questo per rendere impossibile linserimento di moduli di memoria di tipo non adeguato negli slot della scheda madre. Riguardo alle sigle che identicano i vari moduli DIMM o SODIMM di memoria occorre prestare attenzione in quanto possiamo avere una dicitura del tipo DDR 800 accompagnata (o sostituita) da PC2 6400; nel primo caso si fa riferimento alla frequenza (non quella operativa, che si ottiene dividendo per quattro), nel secondo caso alla banda espressa in MBps.

48

Il Personal Computer (parte II)

Osserviamo inne come sia possibile utilizzare una memoria con una frequenza pi alta in una scheda madre predisposta per moduli di frequenza inferiore, purch della stessa tipologia (loperazione inversa invece sconsigliata): ad esempio possibile usare un modulo DDR 400 al posto di un DDR 333 anche se, ovviamente, funzioner alla frequenza inferiore.

4.2 Le periferiche

Le unit periferiche si pongono come tramite tra il sistema di elaborazione e lambiente esterno; sono apparecchiature di varia natura controllate da canali o controller e da interfacce che, come abbiamo visto, sono dispositivi dotati di capacit elaborativa e in grado di gestire linterazione tra lunit centrale di elaborazione e le periferiche stesse (gura 4.2).
Figura 4.2. |

I controller sono sempre costituiti da componenti elettroniche mentre nelle periferiche possono essere presenti anche elementi elettromeccanici (si pensi ad esempio ad una tastiera oppure al motore di un disco sso). Nel caso di periferiche di input la parte elettromeccanica costituita da dispositivi detti trasduttori che trasformano un movimento o una condizione esterna (posizione, temperatura ecc.) in un segnale elettrico digitale. Nel caso di periferiche di output la parte elettromeccanica costituita da attuatori, cio da dispositivi che trasformano un segnale elettrico digitale in un movimento o in unaltra condizione esterna. La parte elettronica costituita da circuiti che servono a: immagazzinare temporaneamente i dati in ingresso o uscita e i segnali di comando; memorizzare le condizioni in cui la periferica attuare le operazioni proprie del dispositivo (ad esempio nella tastiera, un circuito scandisce ad intervalli regolari i contatti per vericare se c un tasto premuto e in caso affermativo ne individua la posizione a partire dalla quale, grazie ad una tabella , si risale al codice del simbolo corrispondente). Le periferiche sono poi dotate di un data buffer che unarea di memoria di transito in cui vengono parcheggiati i dati prima di essere inviati al dispositivo o dopo essere stati letti da questultimo; la sua presenza fondamentale per ovviare allenorme differenza di velocit tra la CPU e il bus di sistema e le varie periferiche che impedisce trasferimenti sincroni tra tali entit e impone comunicazioni asincrone. Infatti i dati da trasferire ad una periferica vengono depositati nel buffer e vengono poi gestiti con calma dal controller della periferica non tenendo inutilmente occupato il bus di sistema; inoltre anche nel caso di trasferimento dalla periferica allunit centrale il buffer importante perch pu funzionare come una piccola cache.

Il Personal Computer (parte II)

49

Afnch le periferiche funzionino correttamente poi necessario installare appositi programmi, chiamati driver, forniti insieme ai vari dispositivi o reperibili in Internet; questo a meno che il supporto per quella periferica non sia gi presente nel sistema operativo utilizzato. Le periferiche si possono suddividere in due gruppi: memorie ausiliarie o di massa: sono solitamente gestite a blocchi, prevedono cio trasferimenti da dati raggruppati in blocchi di un certo numero di byte; unit di input e output: sono solitamente gestite a caratteri, prevedono cio trasferimenti di un carattere o byte alla volta. Prima di occuparci delle periferiche pi importanti esaminiamo le modalit secondo le quali pu avvenire il dialogo tra di esse e il processore e poi le principali interfacce e controller presenti in un PC per la loro gestione.

4.2.1 Comunicazione tra processore e periferiche

I principali problemi della comunicazione tra processore e periferiche sono: sincronizzazione con lunit centrale (introdotto poco sopra); conversione dei dati tra la rappresentazione tipica del dispositivo esterno e il formato usato allinterno del computer; indirizzamento dei registri dati delle varie periferiche. Della conversione di formato si devono occupare (tra le altre cose) i controller o i moduli di interfaccia delle periferiche. Per quanto riguarda la questione degli indirizzi delle periferiche, chiamati anche porti, ci sono due alternative possibili: I/O mappato in memoria (memory mapped): in questo caso gli indirizzi fanno parte dello spazio di indirizzi assegnato alla memoria e il processore, per dialogare con la periferica, usa le stesse istruzioni predisposte per i trasferimenti da e verso la memoria centrale; questa la soluzione adottata ad esempio dai processori Motorola; I/O isolato (I/O mapped): in tal caso invece gli indirizzi fanno riferimento ad uno spazio autonomo, il processore possiede istruzioni speciche per linput/output e deve usare segnali di controllo aggiuntivi per discriminare se gli indirizzi usati appartengono alla memoria o si riferiscono a periferiche; questa la soluzione usata dai processori Intel e compatibili. La comunicazione tra processore e periferiche pu avvenire fondamentalmente in tre modalit: I/O programmato; con un meccanismo basato sulle interruzioni o IRQ (Interrupt ReQuest); I/O autonomo o di tipo DMA (Direct Memory Access).

50

Il Personal Computer (parte II)

4.2.1.1 I/O programmato

In questo tipo di comunicazione i trasferimenti dei dati avvengono tramite istruzioni di I/O eseguite direttamente dalla CPU; la periferica interessata al trasferimento dei dati viene individuata con un meccanismo chiamato polling/selecting. Il polling consiste in una interrogazione ciclica di tutte le periferiche collegate da parte della CPU in modo da selezionare (selecting) quella che vuole inviare o ricevere i dati in quel momento. Questa modalit di comunicazione non utilizzata nei moderni sistemi di elaborazione perch coinvolge troppo direttamente il processore, che deve adeguarsi ai tempi di risposta molto pi lenti delle periferiche, provocando uno spreco del suo tempo e quindi della sua capacit di calcolo.

4.2.1.2 Le interruzioni

Per ovviare al problema appena esposto viene usato un metodo che permette alla CPU di continuare a svolgere il suo compito principale (fare calcoli) mentre le operazioni di I/O vengono gestite senza coinvolgerla direttamente; si tratta del meccanismo delle richieste di interruzione. Una richiesta di interruzione, o pi brevemente, una interruzione, un segnale che una periferica pu inviare al processore per segnalare di voler iniziare un trasferimento dati o per segnalare la conclusione di un trasferimento iniziato in precedenza. In pratica, grazie alle interruzioni, la CPU non deve pi preoccuparsi di interrogare le periferiche perch sono esse a farsi avanti al momento del bisogno con una opportuna IRQ, e non deve neanche sovrintendere al trasferimento dati, gestito invece dal controller della periferica, che ne segnala poi il completamento con unaltra IRQ. In realt nei processori Intel e compatibili esistono due tipi di interruzioni: interruzioni vere e proprie o interruzioni hardware (asincrone): sono le interruzioni di cui abbiamo appena parlato; trap o interruzioni software (sincrone): sono richieste fatte da programma, con apposite istruzioni, per effettuare operazioni di I/O (nei linguaggi assembly delle CPU Intel listruzione usata INT seguita da un codice numerico che identica linterruzione software richiesta). In entrambi i casi poi si pu parlare di exception (eccezioni) che sono interruzioni dovute a eventi imprevedibili: rispettivamente guasti hardware oppure errori di programma (come la divisione per zero). Fra le interruzioni solo quelle hardware, chiamate anche esterne, corrispondono ad un segnale che deve essere ricevuto sicamente dalla CPU; le altre nascono al suo interno durante lesecuzione dei programmi (e infatti si chiamano anche interne). Nellarchitettura dei processori Intel sono stati allora predisposti dei contatti (piedini) specici per ricevere tali segnali; nella gura 4.3 mostrata la piedinatura della CPU 8086 in cui notiamo, tra gli altri, i contatti contrassegnati con INTR (INTerrupt Request) e NMI (Not Maskable Interrupt).

Il Personal Computer (parte II)


Figura 4.3. |

51

Il primo serve a ricevere i segnali di interruzione hardware normali, laltro invece i segnali dovuti a guasti. Questi ultimi sono non mascherabili: signica che non possono essere ignorati dalla CPU; cosa che invece pu avvenire per i segnali che arrivano al piedino INTR che possono essere (momentaneamente) ignorati se viene posto a uno lapposito bit (ag IF) del registro di stato. Sempre in riferimento alla piedinatura dell8086 segnaliamo anche il contatto INTA (INTerrupt Acknowledge) usato dalla CPU per inviare il segnale di richiesta ricevuta alla periferica. Per poter gestire un numero adeguato di periferiche con il meccanismo degli IRQ, nellarchitettura Intel stato previsto luso di un chip dedicato chiamato PIC (Programmable Interrupt Controller) o integrato 8259 con il compito di interporsi tra le periferiche e la CPU 8086. In pratica le periferiche inviano la richieste di interrupt al PIC che eventualmente le accoda in base alla loro priorit e poi invia la richiesta al piedino INTR; allaccettazione della richiesta (risposta proveniente da INTA) il PIC informa la CPU circa lidentit della periferica che ha effettuato la richiesta. Questo possibile grazie al fatto che il PIC ha otto linee (numerate da 0 a 7) a ognuna della quali collegata una periferica in ordine crescente di priorit. Quando la CPU riceve la richiesta e la accetta (se le interruzioni non sono mascherate) termina lesecuzione dellistruzione pendente in quel momento e poi interrompe lesecuzione del programma dedicandosi a gestire linterruzione eseguendo un apposito programma di risposta chiamato ISR (Interrupt Service Routine). A questo scopo utilizza una tabella chiamata IVT (Interrupt Vector Table) valorizzata dal BIOS allavvio della macchina, in cui sono contenuti, per ogni codice di interrupt (abbinato alla linea gestita dal PIC), gli indirizzi di memoria di partenza dei relativi ISR. Naturalmente, esaurite le operazioni previste nella risposta allinterrupt, la CPU potr riprendere lesecuzione del programma che aveva sospeso. Perch questo sia possibile, prima di eseguire lISR la CPU effettua il salvataggio del contesto che consiste nella memorizzazione (nello stack) del valore di tutti i registri allo scopo di recuperarli quando la ISR termina.

52

Il Personal Computer (parte II)

Per avere la possibilit di gestire 15 linee di IRQ invece di 8, i PIC utilizzati sono due, collegati in cascata (il secondo collegato alla linea IRQ2 del primo); inoltre con larchitettura IA-32 sono stati introdotti integrati pi sosticati come lAPIC (Advanced PIC) e il numero degli IRQ gestibili aumentato insieme alle potenzialit del meccanismo.

4.2.1.3 Accesso diretto alla memoria

Il meccanismo delle interruzioni, pur essendo migliore rispetto allI/O programmato, non particolarmente indicato quando si devono trasferire blocchi di dati ad alta velocit; questa eventualit si presenta nel caso delle periferiche pi veloci come i dischi ssi. Si ricorre allora ad un tipo diverso di trasferimento dati chiamato I/O autonomo o DMA (Direct Memory Access); in questo tipo di comunicazione la CPU non viene coinvolta in quanto viene utilizzato un controller specico chiamato DMAC (DMA Controller). Inoltre pu anche essere previsto un bus dati dedicato per non interferire con luso del bus dati normale; il trasferimento avviene direttamente dal disco alla memoria centrale e viceversa in modalit burst (a blocchi) o continua (alternativa conveniente solo in presenza di un bus dedicato per il DMA). Nei PC i canali DMA disponibili sono otto, da DMA-0 a DMA-7, ma uno stesso canale pu essere assegnato a pi di una periferica, a patto siano usate solo una alla volta.

4.2.1.4 Periferiche Plug and Play

Sebbene con lavvento del bus PCI sia totalmente cambiata la modalit di identicazione delle periferiche, la gestione degli interrupt stata mantenuta per ragioni di compatibilit. Per fortuna per, sempre con larrivo del PCI, stato anche proposto uno standard denominato P N P (Plug&Play) che permette di congurare automaticamente le periferiche riguardo a: linea IRQ; indirizzi di I/O; canale DMA. Precedentemente quando si installava un dispositivo questi settaggi dovevano essere fatti manualmente ed era frequente imbattersi in conitti tra periferiche diverse. Adesso tutto questo non accade pi a patto di avere chipset, BIOS, periferiche e sistema operativo, compatibili con lo standard PnP, cosa comunque sempre vera nei moderni PC. Lo standard si successivamente evoluto nel ACPI (Advanced Congurator and Power Interface) grazie al quale vengono assegnate le linee IRQ ai dispositivi allaccensione del sistema mantenendone alcune sempre ssi, come IRQ0 per il timer e IRQ1 per la tastiera.

4.2.2 Interfacce e controller

Dalla breve panoramica su interfacce e controller attualmente utilizzati in un PC escludiamo quelle che, come la porta seriale, la porta parallela, linterfaccia a infrarossi, seppure ancora usate in qualche caso, stanno ormai per essere del tutto abbandonate.

Il Personal Computer (parte II)

53

4.2.2.1 Interfaccia ATA parallela

Linterfaccia ATA (Advanced Technology Attachement) stata per molti anni la pi utilizzata per il collegamento ai dischi ssi ed divenuta anche uno standard, chiamato ATAPI (ATA Packet Interface), esteso ai dischetti e ai dispositivi ottici. Attualmente sarebbe pi opportuno denominarla PATA (Parallel ATA) per distinguerla dalla nuova interfaccia ATA seriale di cui parleremo nel prossimo paragrafo. Spesso il termine ATA confuso con IDE (Integrated Drive Electronics) che indica la tecnologia della parte elettronica del disco sso; questo avviene perch, ormai da molti anni, lelettronica dellinterfaccia stata integrata sui dischi ssi (o sulle unit ottiche). Linterfaccia ATA consente il collegamento di due dispositivi tramite un cavo piatto a 40 o 80 poli dotato di tre connettori di cui uno dal inserire sulla scheda madre (vedi gura 4.5); i dispositivi devono essere identicati in modo diverso (master e slave) agendo su dei ponticelli (jumper) presenti nella loro parte posteriore.
Figura 4.4. |

Le scelte possibili sono master, slave o cable select che vuol dire che il dispositivo diviene master o slave in base al connettore del cavo usato per il suo collegamento. Il cavo a 80 poli da preferire per collegare dischi ssi perch assicura un trasferimento dei dati pi veloce e afdabile; per i lettori o masterizzatori di dischi ottici sufciente anche il cavo a 40 poli. Ormai da molto tempo lIDE si evoluto in EIDE (Enanched IDE) e parallelamente lATA divenuto ATA-2. In ogni scheda madre sono disponibili due connettori EIDE che vengono identicati come controller primario e secondario; c poi un altro connettore simile per il lettore di dischetti che sta comunque cadendo in disuso (questi connettori sono indicati con le lettere H e I nella gura 2.1). I dischi ssi e/o ottici collegabili sono quindi al massimo quattro, almeno se ci limitiamo alluso dellinterfaccia PATA. Con essa sono possibili tre modi differenti di comunicazione: PIO (Programmed I/O): come visto nel paragrafo 4.2.1, prevede lintervento diretto della CPU ed quindi poco usato venendo quasi sempre disabilitato con appositi settaggi del BIOS;

54

Il Personal Computer (parte II) DMA (Direct Access Memory): si tratta della modalit di I/O autonomo illustrata nel paragrafo appena citato; UDMA (Ultra DMA): levoluzione del DMA e permette di ottenere velocit di trasferimento dati da 16,7 a 133 MBps; il suo utilizzo possibile solo ricorrendo ai cavi piatti a 80 poli.

4.2.2.2 Interfaccia ATA seriale

Linterfaccia di collegamento SATA (Serial ATA) sta prendendo il posto della PATA e, come si capisce dal nome, prevede un trasferimento dei dati seriale anzich parallelo. Sebbene con PATA vengano trasferiti 16 bit alla volta, la nuova interfaccia comunque pi veloce perch lavora con un clock almeno venti volte pi rapido; inoltre c necessit di molti meno li con una grande semplicazione della gestione dei cavi e dei connettori (si passa dai 40 o 80 li dei cavi PATA ai 7 li dei SATA i cui connettori sono mostrati nella gura 4.5).
Figura 4.5. |

Altri miglioramenti introdotti dal nuovo standard sono la possibilit di collegamenti hot swap (si possono collegare dischi con la macchina in funzione, o a caldo), labolizione del sistema di identicazione master-slave (ogni disco ha un suo cavo) e la possibilit di avere cavi pi lunghi (2 metri contro i 45 cm dei cavi PATA). Il tasso di trasferimento dellinterfaccia SATA partito da 150 MBps per poi passare a 300 MBps con il nuovo SATA 2.0 e successivamente a 600 MBps.

4.2.2.3 Interfaccia SCSI

Linterfaccia SCSI (Small Computer System Interface) abbastanza anziana in quanto risale al 1985 quando fu proposta per offrire prestazioni migliori rispetto ai collegamenti allora esistenti. Per poterla utilizzare necessario disporre di una apposita scheda di controllo, da inserire ad esempio in uno slot PCI, e di dispositivi compatibili; questo fa si che ladozione di questa tecnologia sia abbastanza costosa (lalternativa PATA o SATA prevede invece un pi economico controller integrato nella scheda madre). Le schede SCSI e i relativi dispositivi, in prevalenza dischi, sono stati allora usati soprattutto in macchine di fascia alta, come i server, dove sono importanti le prestazioni e soprattutto la robustezza e lafdabilit; su tali tipi di macchine spesso il controller SCSI integrato sulla scheda madre.

Il Personal Computer (parte II)

55

Alla scheda SCSI, denominata anche host adapter possibile collegare, con cavi dedicati da 50 o 68 contatti, dispositivi sia interni che esterni. Qualche anno fa una scheda SCSI era indispensabile anche nel caso si volessero usare lettori ottici (poi passati allinterfaccia PATA) e scanner (poi collegati alla porta parallela e ora alle porte USB); adesso si usa solo per pilotare dischi ssi SCSI molto prestanti e afdabili, o per gestire sistemi di dischi RAID, dei quali parleremo nel paragrafo 4.2.3.3, o anche per controllare unit a nastro magnetico. Come molte altre tecnologie, anche lo SCSI si evoluto nel tempo: con lo SCSI-2 stata data la possibilit di gestire periferiche diverse dai dischi, con lo SCSI-3 si aumentata la velocit grazie anche al DT (Double Transition) cio al fatto che vengono fatti due trasferimenti dati per ogni ciclo di clock. Nella tabella 4.6 vengono riassunte alcune delle versioni SCSI pi importanti con lindicazione del relativo standard ufciale, dellampiezza del bus, del tipo di connettore, della frequenza del clock, del tasso di trasferimento e del numero di periferiche gestibili. A tale proposito si deve notare che a un controller SCSI si possono collegare pi dispositivi eventualmente in cascata; nel conteggio va considerata anche la scheda di controllo stessa, quindi i dispositivi gestibili realmente sono quelli teorici meno uno. Ognuno di essi deve essere identicato con un indirizzo univoco detto LUN (Logical Unit Number) che va da zero a sette o a quindici; per questo occorre agire su dei ponticelli presenti in ogni periferica tenendo presente che gli indirizzi pi alti hanno maggiore priorit e che il pi alto solitamente riservato al controller. Con le versioni SCSI pi recenti lindirizzamento avviene comunque in modo automatico.
Tabella 4.6 |
Versione SCSI-1 Wide SCSI Fast SCSI Fast Wide SCSI Ultra SCSI Wide Ultra SCSI Ultra2 SCSI Wide Ultra2 SCSI Ultra160 SCSI Ultra 320 SCSI Standard SCSI-1 SCSI-2 SCSI-2 SCSI-2 SCSI-3 SCSI-3 SCSI-3 SCSI-3 SCSI-3 SCSI-3 Bus 8 bit 16 bit 8 bit 16 bit 8 bit 16 bit 8 bit 16 bit 16 bit 16 bit Conn. 50 li 68 li 50 li 68 li 50 li 68 li 50 li 68 li 68 li 68 li Clock bus 5 Mhz 5 Mhz 10 Mhz 10 Mhz 20 Mhz 20 Mhz 40 Mhz 40 Mhz 40 Mhz DT 80 Mhz DT Tasso trasf. 5 MBps 10 MBps 10 MBps 20 MBps 20 MBps 40 MBps 40 MBps 80 MBps 160 MBps 320 MBps Perif. 8 16 8 16 8 16 8 16 16 16

4.2.2.4 Interfaccia USB

Con il termine USB (Universal Serial Bus) si intende uninterfaccia di nuova concezione (la proposta nasce a met degli anni 90) pensata per il collegamento di periferiche esterne in sostituzione delle vecchie porte seriale e parallela, allo scopo di migliorarne sia le prestazioni che la comodit duso. Per soddisfare la seconda richiesta sono stati proposti connettori e cavi standard che possono arrivare a 5 metri di lunghezza. Nella gura 4.7 si vedono da sinistra a destra: connettore di tipo B micro;

56

Il Personal Computer (parte II) connettore di tipo proprietario, molto diffuso, ma fuori dallo standard USB; connettore di tipo B mini; femmina di tipo A di un cavo di prolunga; connettore di tipo A; connettore di tipo B.
Figura 4.7. |

Nella gura 4.8 si vedono invece un connettore di tipo A mini (a sinistra) e uno di tipo A micro.
Figura 4.8. |

Nella gura 4.9 si vedono inne due porte USB (tipo A femmina) di un PC portatile.
Figura 4.9. |

Il bus USB necessita di un controller, denominato anche host USB che incorpora un hub (fulcro, concentratore) USB, chiamato hub-root, dotato generalmente di due porte. Ogni moderna scheda madre ha integrati almeno uno o due di tali controller e dovrebbe mettere a disposizione anche una piedinatura USB per dispositivi interni. Ad un bus USB possono essere collegate no a 127 periferiche con una organizzazione piramidale chiamata tiered stars (stelle collegate) ottenuta grazie alluso di hub come quello di gura 4.10, in cui vediamo anche un piccolo cavo di prolunga USB.

Il Personal Computer (parte II)


Figura 4.10. |

57

Lorganizzazzione piramidale prevede un massimo di sette piani con il controller logicamente collocato in cima; scendendo di livello possiamo avere hub e periferiche singole, no ad arrivare al settimo piano in cui possono esserci solo queste ultime; lo scopo degli hub quello di aumentare la disponibilit di porte USB utilizzabili. Il tutto pu essere esemplicato nello schema della gura 4.11 che comunque rappresenta una situazione molto pi complessa e articolata di quelle che si incontrano di solito nei casi concreti.
Figura 4.11. |

Il controller ovviamente ha il compito di gestire il bus e lo fa in maniera deterministica con un meccanismo di polling/selecting di cui si accennato nel paragrafo 4.2.1. Questa una differenza rispetto ad altri bus, come ad esempio lo SCSI, che vengono gestiti con una politica a contesa; il motivo va ricercato nel fatto che molti dispositivi per cui stato pensato USB sono multimediali e pretendono che i dati siano trasferiti ad intervalli di tempo certi e regolari pena lo scadimento della qualit delle applicazioni audio o video che usano tali dispositivi. Infatti, a differenza di quello che avviene nel polling/selecting, nel meccanismo a contesa il dispositivo che prende liniziativa e usa il bus quando ne ha bisogno, a patto che sia libero; in caso contrario rimane in uno stato di attesa che ha durata imprecisata (quindi si tratta di una politica di gestione non deterministica dei trasferimenti tra PC e periferiche). Ogni periferica riceve automaticamente dal controller un indirizzo che serve ad identicarla per le operazioni di trasferimento dei dati; a tale scopo viene usato un protocollo a pacchetti:

58

Il Personal Computer (parte II) token packet: viene inviato dal controller e contiene lindirizzo del dispositivo coinvolto nella comunicazione e informazioni su natura e direzione dello scambio dati da effettuare; data packet: contiene i dati veri e propri che il sorgente invia alla destinazione (sorgente e destinazione sono lhost USB e una periferica o viceversa a seconda della direzione del trasferimento); handshake packet: contiene il messaggio sullesito positivo o negativo della trasmissione che la destinazione invia al sorgente.

Esaminando brevemente le caratteristiche elettriche del bus notiamo che il cavo comprende solo quattro li di cui uno per la terra e uno per lalimentazione elettrica (5 V) e due per la trasmissione dei dati, che avviene in modo bilanciato e half-duplex. Questo signica che i dati circolano in entrambi i sensi ma alternativamente; le altre possibilit sarebbero: simplex (trasmissione possibile solo in un verso) e full-duplex (trasmissione contemporanea in entrambi i sensi). I due li per i dati denominati D+ e D- sono incrociati per minimizzare i disturbi; inoltre, siccome i bit vengono rappresentati da variazioni di tensione (da 0 V a +3 V e -3 V rispettivamente) contemporaneamente sui due conduttori, un eventuale rumore elettrico avrebbe effetto su entrambi, non alterando la tensione relativa fra loro e non inuendo quindi sullintegrit del dato trasmesso. Il controller ed ogni dispositivo hanno un proprio clock autonomo e c quindi lesigenza di sincronizzazione tra sorgente e destinazione durante la comunicazione; allo scopo vengono inviati dei caratteri speciali (syn). Il fatto che il cavo trasporti anche lalimentazione importante perch permette appunto di alimentare direttamente i dispositivi dalla porta USB; si parla in questo caso di bus powered device. Le periferiche per cui questo possibile sono per solo quelle che non hanno grosse esigenze di potenza in quanto la corrente disponibile di solo 500 mA e la poptenza di 2,5 Watt, eventualmente da suddividere tra i dispositivi che fossero collegati ad un hub. Per questo motivo quasi sempre gli hub prevedono la possibilit di una alimentazione supplementare (come si nota anche in quello mostrato nella gura 4.10); in ogni caso quando la corrente disponibile via USB non sufciente, la periferica deve essere collegata direttamente ad una fonte di alimentazione elettrica e in questo caso si parla di self powered device. Altra caratteristica importante del bus USB il fatto che permette i collegamenti a caldo dei dispositivi. Per quanto riguarda il tasso di trasferimento dei dati occorre distinguere tra gli standard USB che si sono succeduti negli anni: USB 1.0 Low speed (1996): velocit di trasferimento di 1,5 Mbps (Mega bit per secondo); USB 1.1 Full speed (1998): velocit di trasferimento di 12 Mbps; USB 2.0 High speed (2000): velocit di trasferimento di 480 Mbps; USB 3.0 Super speed (2009) con velocit di trasferimento di 4800 Mbps. Notiamo quindi che, nonostante la velocit effettiva sia 2/3 di quella dichiarata, anche lobiettivo di migliorare le prestazioni delle vecchie interfacce seriale (115,2 Kbps) e parallela (2,4 MBps)

Il Personal Computer (parte II)

59

pienamente raggiunto rendendo quindi fattibile il collegamento alle porte USB di periferiche veloci come gli hard disk o i dispositivi ottici. Importante anche sottolineare che nello standard USB 3.0 sono cambiate anche le caratteristiche elettriche del bus: si passa infatti ad una corrente di 900 mA con una potenza di 4,5 Watt. Anche i connettori sono diversi in quanto variato il numero di li necessari al collegamento: nel tipo A i contatti per i li i pi sono nella parte posteriore che stata aggiunta aumentando la lunghezza del connettore stesso (vedi gura 4.12); nel tipo B stato aggiunta una sezione nuova sopra al vecchio connettore (vedi gura 4.13).
Figura 4.12. |

Figura 4.13. |

Queste soluzioni tecniche sono state studiate per permettere di usare anche i vecchi cavi USB con i nuovi connettori e avere quindi la retro compatibilit con gli standard precedenti. Per il futuro in preparazione il Wireless USB che permetter di trasferire dati senza li (ma ovviamente senza poter trasportare lalimentazione ai dispositivi) no ad una distanza di dieci metri e con velocit di 480 Mbps.

4.2.2.5 Interfacce FireWire e eSata

Il bus FireWire noto anche come standard IEEE-1394 e successivamente IEEE-1394b. LIEEE (Institute of Electrical and Electronic Engineer) unorganizzazione scientica internazionale con sede negli Stati Uniti che, fra le sue attivit, ha anche quella di denire standard nei campi dellelettronica e dellinformatica.

60

Il Personal Computer (parte II)

Anche nel caso del FireWire siamo in presenza di un bus seriale capace di raggiungere la velocit di 400 Mbps e 800 Mbps nella versione pi recente; altre analogie con USB sono la lunghezza massima del cavo, sempre di cinque metri circa e la possibilit di fare collegamenti a caldo. Ci sono per anche molte differenze: i connettori, i cavi e le porte sono diversi e non compatibili; non obbligatoria la presenza di un host controller e quindi si pu collegare direttamente un dispositivo FireWire ad un altro senza la presenza di un PC; non esistono hub FireWire, ma si possono comunque collegare dispositivi in cascata; le possibilit di alimentare i dispositivi sono maggiori e nella versione IEEE-1394b si ha una potenza disponibile di 25 Watt sufcienti, ad esempio, per un masterizzatore di DVD esterno. Il bus FireWire non comunque fortemente diffuso nel mondo dei PC (con leccezione dei notebook) mentre molto utilizzato nel campo dei dispositivi multimediali e soprattutto delle videocamere digitali. Come abbiamo notato la comunicazione tra le periferiche e il PC sta divenendo tutta di tipo seriale: infatti il bus SATA sta sostituendo PATA, le porte USB stanno soppiantando le porte parallele, oltre alle vecchie seriali. I motivi di questo passaggio sono fondamentalmente i seguenti: richiesto un minor numero di li con conseguente riduzione dei costi; c minore rischio di interferenze e di errori di trasmissione. Ovviamente per, il fatto che il circuito trasmissivo sia pi semplice, comporta una gestione pi complessa da parte dei controller e del relativo software. Concludiamo citando il bus E S ATA (External Sata) che non altro che la versione esterna del nuovo bus seriale di collegamento dei dischi rigidi. Si tratta di un bus con elevate prestazioni (1,5 Gbps), paragonabili a quelle ottenibili con i dispositivi interni; la lunghezza massima del cavo di due metri e non viene trasportata lalimentazione, cosa che invece prevista con la successiva versione E S ATAP (eSata Power).

4.2.3 Memorie ausiliarie o di massa

Abbiamo visto come la memoria centrale del sistema di elaborazione abbia la funzione di immagazzinare dati ed istruzioni durante la fase di elaborazione di un programma. Le memorie ausiliarie invece, essendo non volatili, permettono la conservazione delle informazioni nel tempo; vengono chiamate anche memorie di massa (in inglese mass storage) perch possono contenere una grande mole di dati ed informazioni. In base al tipo di accesso si suddividono in due grandi categorie: ad accesso sequenziale come i nastri magnetici o i dischi ottici; ad accesso diretto, come i dischi magnetici.

Il Personal Computer (parte II)

61

Recentemente si sono aggiunte anche memorie di massa ad accesso uniforme: le memorie ash. Le memorie ausiliarie si possono poi anche classicare secondo la tecnologia con la quale vengono realizzate e allora si parla di: memorie magnetiche come i nastri, i dischetti, i dischi ssi; memorie ottiche come i CD-ROM e i DVD-ROM. Le memorie magnetiche si basano sulla caratteristica dei campi magnetici di essere statici e semi-permanenti: possono cio cambiare congurazione e, una volta variata, la mantengono nch qualcosa non provoca un ulteriore cambiamento (questo fa s che esse siano riscrivibili e non volatili). Esse vengono realizzate usando sostanze magnetizzabili, come lossido di ferro, disposte su supporti metallici o plastici; la supercie magnetizzabile viene suddivisa in piccolissime porzioni dette areole ognuna delle quali destinata a contenere un bit. La testina di lettura/scrittura non tocca la supercie, si limita a sorarla alla minima distanza possibile (per permettere maggiore densit di memorizzazione dei dati); in fase di scrittura viene fatta circolare una corrente nella testina in modo da magnetizzare le areole, in fase di lettura il campo magnetico delle areole genera piccole correnti orientate nella testina. Ogni areola pu essere magnetizzata in senso orario oppure antiorario; quando la testina in lettura riscontrata una transazione di usso, cio un cambiamento da un orientamento allaltro, si associa il valore 1, in mancanza di tale transazione si associa il valore 0. Questo modo di rappresentare i bit viene detto indiretto e viene preferito, perch pi afdabile, a quello diretto, che sembrerebbe pi semplice e intuitivo: magnetizzazione in un senso corrisponde al valore 0, nellaltro senso al valore 1. Le memorie ottiche invece sfruttano la tecnologia laser per rappresentare i bit che vengono letteralmente scolpiti sulla supercie riettente del supporto di memoria; in questo modo si hanno depressioni (pit) e tratti di supercie liscia (land). La rilevazione dei dati memorizzati avviene grazie a un diodo che invia verso la supercie un fascio laser che viene riesso verso il dispositivo di lettura nel caso colpisca un land e disperso nel caso colpisca un pit. Anche in questo caso linformazione viene rappresentata in modo indiretto: la transazione da pit a land o viceversa corrisponde al valore 1, la mancata transazione al valore 0. La tecnologia ottica ha il pregio di offrire una densit di registrazione superiore rispetto a quella magnetica e anche di essere molto pi resistente nel tempo (un disco ottico non pu smagnetizzarsi), ma ha anche il difetto di non permettere la variazione delle informazioni registrate, in quanto il meccanismo di memorizzazione ora illustrato altera in maniera permanente le caratteristiche del supporto di memoria (ci avviene ad esempio per i CD-ROM e i DVD-ROM). Il problema stato superato nelle memorie ottiche scrivibili (ad esempio i CD-R) e riscrivibili (ad esempio i CD-RW) nelle quali i pit non sono pi delle incisioni sulla supercie del disco ma delle alterazioni, ottenute tramite surriscaldamento, della struttura cristallina di un polimero che ricopre la supercie stessa (tale alterazione reversibile nei supporti riscrivibili); le zone alterate riettono in modo diverso il raggio inviato del dispositivo di lettura permettendo di avere lo stesso effetto dei pit scolpiti. Per un supporto riscrivibile il raggio laser inviato dalla testina di lettura/scrittura ha tre potenze possibili:

62

Il Personal Computer (parte II) alta potenza: porta allo stato amorfo non riettente (corrisponde alla creazione di un pit); media potenza: porta allo stato cristallino riettente (corrisponde alla creazione di un land); bassa potenza: usata per la lettura.

4.2.3.1 Nastro magnetico

Un nastro magnetico una striscia di materiale plastico ricoperta di ossido di ferro in esso ogni carattere viene rappresentato con 8 bit (pi un bit per il controllo di parit) disposti sulla supercie del nastro stesso su 9 piste parallele (gura 4.14).
Figura 4.14. |

Il dispositivo di gestione del nastro, cio lunit a nastri collegata al sistema di elaborazione, dotata di una testina di lettura e scrittura in grado di leggere e modicare contemporaneamente i valori dei 9 bit corrispondenti ad un carattere, sulle 9 piste del nastro. Il bit di parit serve per un controllo su possibili errori di lettura: il suo valore 0 o 1 in modo da rendere sempre pari il numero di bit 1 del carattere rappresentato; in caso si presenza di un numero dispari di 1 nella codica di un carattere, il sistema rileverebbe una situazione di errore. Questo tipo di controllo il pi semplice fra tutti quelli che vengono frequentemente effettuati sui dati memorizzati o trasmessi, ma anche il meno efcace in quanto se si vericano due errori sullo stesso carattere il numero di 1 rimane pari e quindi non viene individuata alcuna anomalia. I caratteri sul nastro vengono memorizzati uno a anco allaltro, senza per occupare tutta la lunghezza magnetizzabile del supporto; sono invece suddivisi in blocchi separati da zone vuote chiamate gap. Il ruolo dei gap importante perch il nastro viene fatto scorrere solo quando il sistema effettua letture o scritture (altrimenti fermo) e tali operazioni possono avvenire solo quando la velocit di scorrimento del nastro costante; il gap serve allora serve a fare in modo che il nastro raggiunga tale velocit prima della effettuazione delloperazione richiesta. Quella descritta la logica classica di funzionamento dei nastri chiamata anche start-stop; nel tempo poi le tecniche di memorizzazione si sono evolute e possiamo citare, senza ulteriori approfondimenti di nastri streaming (sempre in movimento), registrazione in parallelo, registrazione elicoidale, registrazione a serpentina o lineare. I nastri magnetici sono stati i primi supporti di memoria di massa nella storia dellinformatica, sono economici e possono contenere una grossa quantit di dati, ma il fatto che consentono un accesso solo sequenziale ne limita molto luso in tutte le applicazioni che richiedono una grande velocit di reperimento delle informazioni o loro frequenti aggiornamenti.

Il Personal Computer (parte II)

63

Per questo i nastri vengono oggi principalmente utilizzati per fare le copie di sicurezza di archivi residenti su altri tipi di memorie (come i dischi). Ormai da molti anni non esistono pi i vecchi nastri magnetici a bobina (simili a quelli dei registratori audio degli anni 60) e sono stati sostituiti dai nastri a cartuccia (somiglianti alle musicassette) molto pi comodi da usare e meno ingombranti. Fra i pi diffusi possiamo citare i sistemi DLT (Digital Linear Tape) e SuperDLT, pilotati da interfaccia SCSI e con capacit di diverse centinaia di GB. Molti produttori hanno anche proposto dei sistemi in grado di gestire pi cartucce contemporaneamente e metterle in linea o fuori linea automaticamente minimizzando il bisogno di interventi manuali; si tratta dei cosiddetti jukebox il cui funzionamento ricorda proprio quello dei vecchi jukebox musicali.

4.2.3.2 Disco sso e dischetto

Fra i dischi magnetici si possono distinguere i dischi singoli come il oppy disk, o dischetto, e i disk-pack come il disco sso. Nel primo caso si ha un disco di materiale plastico, con diametro di 3,5 pollici, inserito, per proteggerlo, in un involucro di plastica pi robusta, dotato di feritoia apribile per permettere laccesso alle testine di lettura e scrittura (gura 4.15); entrambe le superci vengono usate per memorizzare i dati.
Figura 4.15. |

I dischetti hanno il vantaggio di essere comodamente trasportabili, per la loro lentezza e la capacit (1,44 MB) ormai irrisoria fanno si che non vengano praticamente pi usati, a vantaggio delle penne USB, ugualmente trasportabili ma molto pi veloci e capienti; di conseguenza, nei moderni PC, specialmente se portatili, stanno scomparendo i lettori di oppy. Nel disco sso si hanno pi piatti di alluminio o di altro materiale rigido (da cui discende laltro nome spesso usato di disco rigido o hard disk) montati su un singolo asse e racchiusi in un involucro che comprende anche: le componenti elettroniche, il motore elettrico per la rotazione dei dischi e un braccio mobile, chiamato pettine, dotato di tante testine di lettura e scrittura quante sono le facce utilizzabili per la memorizzazione. Nella gura 4.16 vediamo un disco aperto con i piatti e una delle testine in vista; nella gura 4.17 mostrata invece la parte posteriore con i chip di controllo.

64
Figura 4.16. |

Il Personal Computer (parte II)

Figura 4.17. |

Il disco sso collegato alla scheda madre con le interfacce (PATA, SATA, SCSI) citate in precedenza. Il diametro dei piatti quasi sempre di 3,5 pollici eccetto per i dischi ssi dei portatili per i quali si hanno unit da 2,5 pollici. Sia nel dischetto che nel disco sso le superci sono ricoperte di materiale magnetizzabile e lo spazio organizzato in cerchi concentrici chiamati tracce suddivise in spicchi chiamati settori. Nel caso del disco sso si parla anche di cilindri che corrispondono agli insiemi di tutte le tracce che, sulle varie superci dei piatti, sono alla stessa distanza dal centro (gura 4.18).
Figura 4.18. |

Il Personal Computer (parte II)

65

In ogni traccia i bit dei dati sono memorizzati in sequenza su areole consecutive. Il disco sso rimane in rotazione per tutto il tempo in cui il sistema acceso; questa una differenza rispetto al oppy disk e alle unit ottiche che vengono poste in rotazione solo al momento dellaccesso. La velocit di rotazione molto importante perch inuisce sulle prestazioni del disco: attualmente si hanno regimi di rotazione a 7.200 o 10.000 giri/minuto anche se alcuni dischi SCSI possono arrivare a 15.000 Le testine vengono spostate in senso radiale e rimangono sempre ad una distanza molto piccola dalle superci, senza toccarle, in quanto sono sollevate da un sottile strato di aria originato dalla rotazione; quando il sistema spento vengono parcheggiate in una posizione prestabilita chiamata landing zone. Laccesso ai dati di tipo diretto e avviene in base al loro indirizzo costituito da: numero di supercie o testina, numero di traccia o cilindro, numero di settore. Linsieme di queste informazioni prende il nome di geometria del disco; essa viene denita con loperazione di formattazione a basso livello, svolta in fabbrica e utile anche a marcare, come non utilizzabili, i settori difettosi. Ogni settore ha una grandezza di 512 byte: moltiplicando per tale valore il numero di testine, cilindri e settori, si ottiene la capienza del disco sso. Attualmente sono in commercio modelli di dischi con capacit di alcune centinaia di GB; a tale proposito occorre per notare che la capacit dei dischi viene espressa, dalle aziende produttrici, con multipli del byte ottenuti con potenze del dieci e non del due; quindi quando acquistiamo un disco da 250 GB ci dobbiamo aspettare che contenga 250.000.000.0000 byte e non 268.435.456.000 byte (250 * 1.024 * 1.024 * 1.024). Per rendersi conto dellevoluzione che si avuta anche nel campo dei dischi magnetici si pu fare riferimento ad uno dei primi dispositivi di questo tipo immessi sul mercato nel 1956: il Ramac 305 della IBM; si trattava di un dispositivo grande come un armadio, dal peso di una tonnellata, con 50 piatti da 24 a 1.200 giri/minuto, con costo di 50.000 dollari e capacit di 5 MB. Lo spazio disponibile su un disco sso pu essere suddiviso in partizioni, dopodich ogni partizione deve essere preparata alluso con loperazione di formattazione ad alto livello grazie alla quale viene denito su di essa il file system da utilizzare (ad esempio FAT32 o NTFS per Windows e Ext3 per Linux). Una partizione pu contenere solo dei dati oppure un sistema operativo; in questo caso allinizio del suo spazio memorizzato un programma di boot per quel sistema e la partizione si dice bootable. Nel caso la suddivisione non venga fatta, esiste comunque una (unica) partizione, quindi la formattazione ad alto livello viene sempre fatta su partizioni e non su tutto il disco (a meno che non sia un dischetto per il quale le partizioni non sono previste).

66 I motivi per cui pu essere utile usare pi partizioni sono:

Il Personal Computer (parte II)

suddividere lenorme spazio disponibile nei moderni hard disk; installare pi sistemi operativi, da usare alternativamente, sulla stessa macchina; ognuno di essi deve risiedere su una o pi partizioni separate; avere una partizione, che solitamente viene tenuta nascosta, in cui memorizzare loccorrente per il ripristino della macchina alle sue condizioni iniziali in caso di problemi; questo meccanismo viene messo in atto dai alcuni produttori sui PC da essi commercializzati ma pu anche essere gestito autonomamente dagli utenti ricorrendo ad appositi programmi. Le informazioni sulle partizioni sono conservate nel primo settore del disco, identicato da: testina 0, cilindro 0, settore 1 (la numerazione dei settori inizia da uno e non da zero) e precisamente nel MBR (Master Boot Sector). LMBR contiene la parte iniziale del boot loader o boot manager (programmi che gestiscono le prime fasi del caricamento del sistema operativo allaccensione della macchina) e una tabella chiamata tabella delle partizioni. Essa costituita da 4 righe, di 16 byte ciascuna, che descrivono ognuna una eventuale partizione; le partizioni possono essere quindi al massimo quattro. Questo limite non era problematico allepoca dei primi dischi ssi per i PC (met anni 80) che avevano capacit di qualche MB e per i quali non aveva molto senso prevedere un grosso numero di partizioni. Successivamente divenuto sempre pi importante riuscire a denire pi di quattro partizioni su un hard disk e si quindi intervenuti nel modo seguente: una delle quattro partizioni normali chiamate primarie pu essere denita come partizione estesa e contenere al suo interno un numero illimitato di partizioni logiche. Non forniamo qui ulteriori dettagli su come questo meccanismo venga gestito; segnaliamo solo che i sistemi operativi Windows sono in grado di attivarsi correttamente solo se installati su partizioni primarie.

4.2.3.3 Dischi RAID

I sistemi di dischi RAID (Redundant Array of Indipendent Disks) nascono negli anni 80 allo scopo di risparmiare riutilizzando dischi a basso costo gestendoli come una unica unit di memoria di massa; allepoca infatti la I dellacronimo stava per Inexpensive (poco costosi). Adesso laccento non pi posto sul risparmio (un moderno sistema RAID anzi abbastanza costoso) ma sul miglioramento delle prestazioni, sullintegrit dei dati, la tolleranza ai guasti. La gestione pu essere fatta via hardware (solitamente con controller SCSI) o via software a carico del sistema operativo; ovviamente la prima soluzione da preferire, anche se pi costosa, perch permette di avere prestazioni migliori e funzionalit aggiuntive come la possibilit di sostituire a caldo i dischi. Recentemente, con i nuovi chipset associati alle CPU di ultima generazione Core i7 di Intel e Phenom II di AMD si hanno a disposizione dei southbridge che incorporano il supporto alle pi comuni congurazioni RAID e sono in grado di gestire sei connettori Sata II da 3 Gbps da usare a tale scopo. I southbridge in questione sono Ich10R per Intel e SB750 per AMD e sono associati ai chipset X58 e 790FX o 790GX rispettivamente.

Il Personal Computer (parte II)

67

Grazie a questi nuovi componenti possibile usufruire della tecnologia RAID anche in sistemi di fascia media avendo prestazioni migliori rispetto alla gestione RAID via software; la soluzione con controller SCSI dedicato rimane invece da preferire per i sistemi di fascia alta. Parlando di tecnologia RAID occorre distinguere varie tipologie o livelli che si possono suddividere in livelli RAID standard e livelli RAID annidati (uso contemporaneo di livelli standard). Per quanto riguarda i livelli standard, i pi importanti e usati sono: RAID 0 o striping; RAID 1 o mirroring; RAID 5 o striping con parit; RAID 6 o striping con doppia parit. Nello striping si ha luso di pi dischi che vengono virtualmente uniti per formare un disco grande quanto la somma dei dischi componenti; i dati vengono suddivisi a strisce (stripes) e ogni striscia memorizzata in un disco diverso (gura 4.19).
Figura 4.19. |

In questo modo si ottimizza la velocit di accesso perch le letture o le scritture vengono fatte in contemporanea su pi dischi. Lafdabilit invece non aumenta e addirittura diminuisce in quanto, usando pi dischi, aumenta la probabilit che uno di essi si guasti, causando la perdita di tutti i dati; in altre parole, il parametro MTBF (Mean Time Between Failures), cio il tempo medio tra due guasti, che dovrebbe essere il pi alto possibile, diminuisce aumentando il numero di dischi impiegati. Nel mirroring (gura 4.20) si usano un numero pari di dischi in modo da avere una doppia copia degli stessi dati; in questo caso si privilegia ovviamente lafdabilit e, in piccola parte, la velocit almeno in lettura (i dati possono essere letti da pi dischi contemporaneamente).
Figura 4.20. |

Ulteriore incremento di afdabilit si ha con il duplexing nel quale viene duplicato anche il controller SCSI.

68

Il Personal Computer (parte II)

Il problema lo spreco di spazio in quanto con il mirroring si ha a effettivamente a disposizione solo la met della capacit totale disponibile. Con il RAID 5, che uno dei sistemi pi usati, i dati vengono memorizzati come nel RAID 0 ma in pi vengono calcolati e immagazzinati, sempre su dischi diversi, anche dei dati di parit (gura 4.21); grazie ad essi possibile sopperire allimprovvisa mancanza per guasto di uno dei dischi.
Figura 4.21. |

I dati mancanti infatti vengono ricalcolati automaticamente, a prezzo, ovviamente, di un certo rallentamento nel funzionamento del sistema. Siccome poi possibile la sostituzione a caldo dei dischi, il disco rotto pu essere cambiato con uno nuovo e, dopo poco tempo, il sistema torna a pieno regime nella situazione precedente al guasto. Se i dischi che si guastano sono invece due, il RAID 5 non pi efcace; per questo motivo non bene usare pi di 14 dischi perch oltre questo valore aumenta troppo la probabilit di guasto contemporaneo di due dischi. Il numero minimo di dischi da usare invece di tre e i dischi devono essere identici. Il RAID 6 funziona come il RAID 5 ma ha un meccanismo di doppia parit che permette di sopportare anche il guasto contemporaneo di due dischi. I livelli RAID annidati pi usati sono: RAID 0+1: uso del RAID 0 su n dischi e copia in RAID 1 su altri n dischi (gura 4.22); RAID 1+0: uso di dischi copiati in RAID 1 e poi uniti in RAID 0 (gura 4.23).
Figura 4.22. |

Il Personal Computer (parte II)


Figura 4.23. |

69

4.2.3.4 Unit ottiche

La prima memoria di tipo ottico ad avere una grossa diffusione stata il CD-ROM (Compact Disc - Read Only Memory) diretto discendente dei CD-DA (CD Digital Audio) proposti dalla Sony e dalla Philips nel 1982 allo scopo di sostituire i dischi in vinile come supporto per la diffusione e la commercializzazione della musica. Il supporto costituito da un disco trasportabile di 12 cm di diametro di materiale plastico rivestito di oro o alluminio riettente e da uno strato protettivo (gura 4.24); queste caratteristiche sono rimaste costanti in tutte le successive evoluzioni delle memorie ottiche (CD-R, CD-RW, DVD ecc.).
Figura 4.24. |

I dati vengono registrati usando pit e land, come illustrato nel paragrafo 4.13, sfruttando solo una delle superci (solitamente quella inferiore, libera da etichette, scritte ecc.). La memorizzazione avviene su una traccia suddivisa in settori e avvolta a spirale; tale spirale inizia al centro del disco e arriva al bordo dopo un percorso di quasi cinque km. La masterizzazione dei CD-DA e dei CD-ROM avviene in fabbrica: nel primo caso, viene memorizzata sul supporto musica digitalizzata, nel secondo caso, dati e informazioni gestibili da un computer. Un CD-ROM pu quindi essere solo letto usando unapposita unit collegata alla scheda madre; per poter avere supporti anche scrivibili e riscrivibili sono stati proposti rispettivamente i CD-R (CD Recordable) e i CD-RW (CD ReWritable).

70

Il Personal Computer (parte II)

La tecnologia che ha reso possibile la masterizzazione casalinga di questi supporti stata brevemente accennata nel paragrafo 4.13; naturalmente per essere in grado di effettuarla non basta pi avere un lettore di CD ma serve un masterizzatore (che conserva comunque la capacit di leggere CD-ROM, CD-R, CD-RW). La capacit; di questo tipo di supporti stata in partenza di 650 MB o 74 minuti di musica, ma poi passata, sfruttando in modo migliore lo spazio vicino al bordo del disco, a 700 MB o 80 minuti. In commercio si trovano anche dischi che superano questi limiti ma la loro afdabilit non garantita, anche perch non detto possano essere scritti e riletti regolarmente dalla maggior parte dei masterizzatori in circolazione. Un passo avanti importante nel campo dei supporti ottici si avuto con lavvento dei DVD (Digital Video Disk o Digital Versatile Disk), motivato anche stavolta da ragioni multimediali, in questo caso dal mondo del cinema; il DVD infatti stato proposto per poter contenere un lm digitalizzato della lunghezza di 133 minuti compresso con lalgoritmo MPEG-2, con audio stereo e sottotitoli in pi lingue. Il formato sico del disco lo stesso del CD-ROM ma aumenta molto la densit di memorizzazione; i bracci della spirale distano 0,74 micron contro 1,6 dei CD e si arriva a poter contenere 4,7 GB di dati. Anche per i DVD si avuta una evoluzione simile a quella dei CD e quindi dopo i DVD-ROM sono comparsi: DVD-R e DVD+R: DVD scrivibile una sola volta; DVD-RW e DVD+RW: DVD riscrivibili, no a circa 1.000 volte. La tecnologia dei DVD+R e DVD+RW leggermente diversa da quella dei CD-R, CD-RW, DVD-R, DVD-RW in quanto prevede che le zone colpite dal raggio di scrittura diventino momentaneamente liquide per poi solidicare subito dopo con una strutture diversa, anzich basarsi su alterazioni della struttura cristallina come accennato nel paragrafo 4.2.3; questa differenza non porta conseguenze a livello pratico anche perch tutti i lettori e masterizzatori prevedono la gestione di entrambe le categorie di supporti. Per aumentare ulteriormente la capacit dei DVD sono stati proposti: dischi a doppia faccia: portano la capienza a 9,4 GB ma necessitano di essere girati manualmente al momento del bisogno perch nei lettori il meccanismo di lettura uno solo; dischi a doppio strato: sfruttando una diversa inclinazione del raggio laser di masterizzazione e di quello di lettura, vengono resi disponibili due strati diversi sulla stessa supercie; in questo modo la capienza arriva a 8,5 GB; dischi a doppio strato e doppia faccia: vale quanto detto per quelli a doppia faccia; la capacit di 17 GB. Un moderno lettore di DVD dovrebbe essere in grado di leggere, e un moderno masterizzatore di DVD di scrivere e leggere, tutte le tipologie di CD e di DVD con leccezione dei DVD-RAM. Essi infatti sono dischi, riscrivibili no a 100.000 volte, proposti da Panasonic che si sono diffusi soprattutto come supporto per le videocamere digitali e che prevedono la possibilit di essere usati in modo simile agli hard disk (tra laltro in essi non c la traccia avvolta a spirale); difcilmente un lettore o masterizzatore di normali DVD in grado di gestire questi supporti.

Il Personal Computer (parte II)

71

Laccesso ai dischi ottici sequenziale come per i nastri magnetici, anche se la tecnologia usata lo rende pi veloce rispetto a questi ultimi; riguardo alla velocit si fa spesso riferimento a dei fattori di moltiplicazione, relativi alle prestazioni in lettura, scrittura e riscrittura, che si basano su un valore assunto come base di partenza. Per i CD tale velocit di base (1X) di 150 KBps, corrispondente alla velocit dei lettori dei CD-Audio, per i DVD invece il parametro 1X corrisponde a 1350 KBps; quindi un lettore di CD 52X e un lettore di DVD 16X (valori consueti per i moderni dispositivi), leggono rispettivamente alle velocit di 7.800 e 21.600 KBps. Il le system standard per i CD e i DVD lISO 9660 che supportato da tutti gli attuali sistemi operativi. ISO (International Standard Organization) lorganizzazione che denisce vari standard a livello mondiale. Con lISO 9660 ci sono delle limitazioni per quanto riguarda i supporti riscrivibili perch non supportata la modica dei dati; si pu per usare la scrittura di sessioni multiple che consiste nel masterizzare dati aggiungendoli ai precedenti. In questo modo per si sprecano circa 40 MB di spazio per ogni sessione aggiunta. Una soluzione migliore il le system UDF (Universal Disk Format) che permette di trattare il supporto riscrivibile come se fosse un dischetto magnetico con libert di aggiunta e cancellazione di le; questa soluzione (packet writing) per non standard e alcuni sistemi operativi non la supportano obbligando lutente a ricorrere a programmi aggiuntivi per la sua gestione. Per il futuro, la nuova tecnologia ottica il Blu-Ray della Sony, con la quale i dischi arrivano a capacit di 27 GB per lato; il nome dovuto al fatto che il raggio luminoso usato per la lettura di colore blu, anzich il consueto rosso. Laumento di capacit dovuto principalmente allassottigliarsi dello strato trasparente protettivo sulla supercie del disco che passa da 0,6 mm a 0,1 mm; in questo modo il laser deve attraversare meno materiale prima di raggiungere il substrato di memorizzazione e quindi il raggio luminoso soffre di minore diffusione permettendo una densit di memorizzazione (vicinanza tra pit e land) molto maggiore. I dischi Blu-Ray sono gi apparsi sul mercato con la nuova console di videogiochi Playstation 3 e hanno vinto una dura battaglia, per imporsi come nuovo standard, contro gli HD DVD (High Denition DVD), proposti da Toshiba, Sanyo e Nec, maggiormente compatibili con i vecchi DVD, soprattutto a livello di tecnologia di realizzazione (con possibilit quindi di riciclare gli impianti di fabbricazione), ma con capacit inferiore (20 GB per lato). Anche stavolta lo standard stato imposto dal mondo dello spettacolo: i nuovi DVD devono contenere lm di due ore, in alta denizione, con audio di alta qualit (sistemi 5+1 o 7+1); la vittoria di Blu-Ray su HD DVD si avuta proprio quando tutte le maggiori aziende cinematograche hanno scelto la soluzione proposta da Sony come supporto per la commercializzazione dei loro prodotti. Questa stata anche una rivincita per lazienda giapponese che usc scontta, ad inizio anni 80, in una battaglia simile per i videoregistratori: la tecnologia VHS fu preferita alla Betamax di Sony, da molti ritenuta migliore e diffusasi poi solo in Giappone. Per quanto riguarda il mondo dei PC, solo da poco sono disponibili lettori e masterizzatori per dischi Blu-Ray, ma il loro costo, come quello dei dischi stessi, ancora abbastanza alto.

72

Il Personal Computer (parte II)

4.2.3.5 Memorie ash e unit SSD

Le memorie ash si stanno diffondendo sempre di pi fra le memorie di massa; sono in pratica delle memorie ROM che per possono essere riscritte (quindi sono EEPROM) molte migliaia di volte. I loro punti di forza sono leconomicit, la comodit di trasporto e la velocit di accesso. Possiamo suddividere questa famiglia di dispositivi in tre categorie: memory card o schede di memoria: sono usate prevalentemente per fotocamere e videocamere digitali, per i telefonini, per i lettori MP3; per usarle con il PC necessario un lettore di schede di memoria interno o esterno ma sempre collegato a porte USB (nella gura 4.25 ne sono mostrati due, entrambi esterni; quello a sinistra in grado di leggere praticamente tutti i formati e comprende anche un lettore di dischetti, quello a destra legge solo schede SD).
Figura 4.25. |

La velocit di queste schede si misura con un fattore di moltiplicazione tenendo presente che 1X corrisponde a 150 KBps come per i CD; i tipi di schede pi importanti sono: Compact Flash (CF): proposte da una associazione di diverse aziende nel 1994; hanno dimensioni 43 x 36 mm e spessore di 3,3 o 5 mm; SmartMedia Card (SM): della Toshiba, con dimensioni di 46 x 37 mm e spessore di 0,74 mm; sono ormai poco usate perch poco capienti e prive di controller interno; Memory Stick (MS): della Sony, con dimensioni di 50 x 20 mm e spessore di 2,5 mm; disponibili anche nelle versioni Pro (pi capienti) e Duo (pi compatte); MultiMediaCard (MMC): di SanDisk e Siemens, con dimensioni di 24 x 37 mm e spessore di 1,4 mm; molto piccole e compatibili con le successive SD; SecureDigital (SD): di SanDisk, Matsushita e Toshiba (gura 4.26), con dimensioni di 24 x 37 mm e spessore di 1,4 mm (ma esistono anche in versioni pi piccole, le MiniSD e le Micro-SD); sono al momento fra le pi diffuse grazie alle elevate capacit (anche 2 o 4 GB) superate solo dalle CF, al controller integrato, alla possibilit di criptare il contenuto; xD-Picture (XD): di Fuji e Olympus, con dimensioni di 25,4 x 20 mm e spessore di 1,5 mm; nascono per sostituire le SmartMedia e, come loro, sono prive di controller.

Il Personal Computer (parte II)


Figura 4.26. |

73

UFD (USB Flash Drive): sono note anche come pendrive o chiavette USB e consistono in memorie di massa integrate con linterfaccia USB (gura 4.27); sono molto comode, maneggevoli, poco costose e hanno capacit anche di diversi GB, tutti pregi che ne hanno fatto aumentare la popolarit, tanto che stanno soppiantando del tutto i dischetti come memorie di massa trasportabili.
Figura 4.27. |

SSD (Solid State Disk): sono memorie di massa in cui il termine dischi usato impropriamente in quanto, pur avendo un aspetto esteriore simile ai dischi ssi (solitamente come quelli da 2,5 pollici) e pur essendo usati come tali, non hanno al loro interno alcun piatto in rotazione e sono invece costituiti da memorie ash. Soffermiamoci brevemente proprio sugli SSD, che stanno assumendo un ruolo sempre pi importante in virt di una serie di caratteristiche molto positive che possono essere cos riassunte: maggiore afdabilit e resistenza agli urti: non ci sono parti in movimento e delicati meccanismi di lettura/scrittura; riduzione dei consumi: lassenza di parti meccaniche in movimento permette un consumo inferiore durante le operazioni di lettura e scrittura in un SSD rispetto a un disco tradizionale; il risparmio energetico per inferiore a quello che ci si potrebbe attendere, o che viene pubblicizzato dai produttori, in quanto nella condizione di riposo un SSD assorbe comunque una quantit apprezzabile di energia, maggiore di quella assorbita da un disco sso nella medesima condizione; minori tempi di accesso: 0,1 ms in un SSD contro i 5-15 ms di un disco sso; questo permette di avere alcune migliaia di operazioni di I/O al secondo contro un centinaio e quindi le macchine equipaggiate con SSD hanno prestazioni migliori specie se gli accessi al disco sono di tipo casuale e si avviano in tempi notevolmente pi brevi rispetto a macchine dotate di disco tradizionale; nessun problema di frammentazione dei le: i tempi di accesso sono gli stessi in qualsiasi punto della memoria e quindi non ci sono ritardi in lettura dovuti al fatto che blocchi di dati dello stesso le non sono contigui.

74

Il Personal Computer (parte II)

I vantaggi appena elencati giusticano lutilizzo di questo tipo di memorie di massa soprattutto nel settore dei notebook e principalmente per i modelli mini denominati anche netbook, macchine dedicate principalmente alla connettivit e alluso in movimento, per le quali i bassi consumi e la rapidit di avvio sono fondamentali. Per quanto riguarda la velocit di trasferimento sequenziale dei dati non si riscontrano grossi vantaggi da parte delle memorie SSD che in qualche caso sono ancora superate da dischi ssi di buona qualit e con elevato regime di rotazione. I problemi pi gravi degli SSD sono per i costi, ancora molto elevati, e le capacit, abbastanza basse; entrambi i difetti sono presumibilmente destinati a scomparire nei prossimi mesi. Esistono due tecnologie che sono alla base della realizzazione delle celle di memoria ash degli SSD: SLC (Single Level Cell): in questo ogni cella pu essere solo piena (valore 1) o vuota (valore 0); MLC (Multi Level Cell): esistono pi livelli per ogni cella, ad esempio quattro con la possibilit di memorizzare in ognuna i valori 00, 01, 10, 11. La tecnologia MLC permette ovviamente di avere memorie pi capienti (si superano ormai i 100 GB) ma anche molto pi lente specie in scrittura (anche di tre, quattro volte); infatti per scrivere un dato in una cella occorre prima svuotarla del dato precedente, poi vericarne lo svuotamento, quindi scrivere il nuovo dato, per un totale di tre operazioni. Con la tecnologia SLC tutto questo non necessario e quindi si ha una velocit di accesso superiore; la capacit degli SSD di questo tipo si attesta sui 32 GB, per capacit maggiori i costi sono, al momento, proibitivi.

4.2.3.6 Gerarchia delle memorie

Si parla di gerarchia delle memorie per fare riferimento ad una classicazione in cui si rappresentano i vari tipi di memorie informatiche sulla base di alcune loro caratteristiche importanti, quasi sempre la velocit e il costo. Tale gerarchia pu essere rappresentata schematicamente come mostrato nella gura 4.28.
Figura 4.28. |

Il Personal Computer (parte II)

75

Osserviamo che, nello schema, la capacit cresce dallalto verso il basso ma con qualche piccola eccezione: la EEPROM usata in un PC infatti in quantit inferiore rispetto alla DRAM. Riguardo alla velocit sottolineiamo che lunica memoria che regge il passo della CPU la memoria locale, tutte le altre sono pi lente; gi la memoria centrale, che pure velocissima, circa 200 volte pi lenta della CPU. Inne occorre notare che i passaggi dati avvengono preferibilmente, ma non esclusivamente, tra memorie appartenenti a livelli adiacenti della gerarchia e che le differenze di velocit tra i vari tipi di memoria introducono, come accennato varie volte in precedenza, grosse problematiche per il progetto del sistema di elaborazione. Nella tabella 4.29 vengono riassunti i valori indicativi relativi a dimensioni, tempo di accesso e velocit di trasferimento (in MBps, con eventuale indicazione della quantit di byte trasferiti in parallelo) di alcuni tipi di memoria (tali valori si riferiscono al periodo di diffusione degli ultimi processori Pentium IV e i primi con core multipli (tra il 2006 e il 2008).
Tabella 4.29 |
Tipo di memoria Registri Cache L1 Cache L2 DRAM EEPROM SSD (SLC) SSD (MLC) Hard disk (SCSI) DVD (lettura) Nastro Dimensione < 1 KB Alcuni KB Alcuni MB 2 - 4 GB Centinaia di KB 32 GB 128 GB Centinaia di GB 8,5 GB Alcuni TB Tempo di acc. < 0,01 ns 0,16 ns 0,3 ns 2 ns 60-100 ns 0,1 ms 0,5 ms 5 ms 100 ms circa > 100 ms Velocit di trasf. (in MBps) 400.000 o 800.000 (4 o 8 byte) 192.000 (32 o 64 byte) 96.000 (32 byte) 3.000 50-100 120 (read) 80 (write) 100 (read) 30 (write) 200 > 20 1

4.2.4 Periferiche di I/O

In questo paragrafo facciamo una rapida panoramica sulle pi importanti periferiche di I/O, con qualche approfondimento solo per le stampanti e i dispositivi di visualizzazione (monitor e scheda video).

4.2.4.1 Tastiera e mouse

La tastiera e il mouse sono ormai dispositivi la cui tecnologia molto consolidata; le uniche novit che si sono avute negli ultimi anni sono dovute al lancio di modelli senza li (prima a infrarossi, adesso con tecnologia bluetooth) e, nel caso dei mouse, alla sostituzione dei modelli dotati di rotellina con quelli ottici, pi precisi e in grado di funzionare su qualsiasi supercie anche senza tappetino. Recentemente sono apparse in commercio tastiere con vari tasti speciali e mouse con rotellina aggiunta ai consueti due o tre pulsanti allo scopo di facilitare lo scorrimento dei documenti aperti a video; queste novit possono essere sfruttate per solo se il sistema operativo e/o i programmi utilizzati prevedono la loro gestione (eventualmente grazie allinstallazione di opportuni driver).

76

Il Personal Computer (parte II)

4.2.4.2 Scanner

Lo scanner uno strumento che consente di digitalizzare vari tipi di documenti contenenti testi o immagini in bianco e nero e a colori. I documenti, cos trasformati in segnali binari, possono essere manipolati dal computer, ad esempio con programmi di graca o con programmi OCR (Optical Character Recogniction) per il riconoscimento del testo, e memorizzati nelle sue memorie ausiliarie. Fisicamente lo scanner simile ad una fotocopiatrice (gura 4.30) ed caratterizzato da: profondit di colore, cio il numero di colori riconosciuti, espressa secondo il numero di bit usati per ottenerne le combinazioni (ad esempio 32 bit per avere oltre quattro miliardi di colori); risoluzione ottica, espressa in DPI (dot per inch) o punti per pollice. Pi alti sono tali valori, migliore la qualit dellimmagine catturata.
Figura 4.30. |

In molti scanner le risoluzioni trasversale e longitudinale sono diverse: la prima dipende dalla distanza tra i sensori ottici, laltra dal movimento degli stessi; valori abbastanza tipici sono 1200 x 2400 dpi. Esiste poi la risoluzione interpolata grazie alla quale si ottengono, via software, immagini con pi punti di quelli previsti dalla risoluzione ottica calcolandoli appunto con metodi di interpolazione; ovviamente per, per valutare la qualit dello scanner, opportuno fare riferimento solo alla risoluzione ottica e alla profondit di colore.

Il Personal Computer (parte II)

77

4.2.4.3 Scheda video e monitor

Il sistema video di un PC costituito da un monitor e da un controller, denominato scheda video. Le immagini rappresentate sul monitor sono formate da punti o pixel il cui numero fornisce la risoluzione, espressa indicando la quantit di pixel in orizzontale moltiplicata per quella in verticale. Altro parametro importante la profondit di colore che dipende, insieme alla risoluzione, dalle caratteristiche della scheda video e principalmente dalla memoria RAM che questultima possiede. Lo standard pi importante per le schede video il VGA (Video Graphics Adapter); nella gura 4.31, mostrata la relativa porta, alla quale si collega il cavo proveniente dal monitor.
Figura 4.31. |

Lo standard prevedeva in origine una risoluzione di 640 x 480 pixel ma si poi evoluto nel seguente modo: SVGA (Super VGA), risoluzione 800 x 600 pixel; XGA (eXtended Graphics Array), risoluzione 1024 x 768 pixel; SXGA (Super XGA), risoluzione 1280 x 1024 pixel; UXGA (Ultra XGA), risoluzione 1600 x 1200 pixel; QXGA (Quad XGA), risoluzione 2048 x 1536 pixel; QSXGA (Quad SXGA), risoluzione 2560 x 2048 pixel; QUXGA (Quad UXGA), risoluzione 3200 x 2400 pixel. Questo per quanto riguarda le risoluzioni tradizionali dette 4:3; ci sono poi le risoluzioni panoramiche o 16:9 o 16:10: WXGA (Wide XGA), risoluzione 1366 x 768 pixel; WSXGA (Wide SXGA), risoluzione 1600 x 1024 pixel; WUXGA (Wide UXGA), risoluzione 1920 x 1200 pixel; WQSXGA (Wide QSXGA), risoluzione 3200 x 2048 pixel; WQUXGA (Wide QUXGA), risoluzione 3840 x 2400 pixel. Una moderna scheda video si collega sulla scheda madre allo slot AGP oppure ad un PCI-Express e possiede al suo interno quattro componenti fondamentali:

78

Il Personal Computer (parte II) un acceleratore graco o GPU (Graphic Processing Unit) che a tutti gli effetti un processore aggiuntivo (quelli attuali sono a 128 bit, con densit di transistor a volte anche maggiore delle CPU e notevoli problemi di surriscaldamento); esso specializzato per i calcoli graci bidimensionali e tridimensionali e la sua presenza permette di non coinvolgere la CPU nelle elaborazioni grache con enormi guadagni nelle prestazioni generali del sistema; memoria RAM, in quantit molto alta (che talvolta arriva a pareggiare lammontare della memoria RAM di sistema installata sulla scheda madre), indispensabile per memorizzare le immagini da visualizzare e contenere i dati per i calcoli dellacceleratore graco; di tipo DDR2 o DDR3 ma modicata per lavorare a frequenze maggiori (e allora si parla di GDDR2 e GDDR3, dove G sta per Graphic); un componente detto RAMDAC (RAM Digital to Analog Converter) che ha il compito di convertire i dati digitali elaborati dalla scheda graca prima di inviarli al monitor (ovviamente nel caso questultimo sia analogico); il video BIOS che fornisce laccesso alle funzioni di base dellhardware video facendo da interfaccia tra questo e i programmi che usano la scheda graca; in pratica svolge funzioni simili al BIOS del sistema, del quale ci occuperemo nel paragrafo 4.3.

Nella gura 4.32 vediamo una scheda video in cui si distinguono la presa VGA cui collegare il monitor, la GPU nascosta dal dissipatore di calore e, allestrema sinistra, i chip di memoria.
Figura 4.32. |

Occorre far notare che nei modelli di PC pi economici, o per i quali le prestazioni grache non sono fondamentali, le funzioni della scheda graca sono integrate direttamente sulla scheda madre; in questi casi una parte della RAM del sistema viene usata per le elaborazioni grache ed questo il motivo per cui in molti PC di fascia bassa si riscontra un quantitativo di memoria centrale disponibile per i programmi e il sistema operativo inferiore a quello effettivamente presente sulla macchina. Il monitor la principale periferica di output anche se ha a che vedere pure con la fase di input perch visualizza quanto digitato da tastiera e gli spostamenti del puntatore associati ai movimenti del mouse. I monitor pi utilizzati no a qualche tempo fa erano quelli CRT (Cathode Ray Tube), basati sulla stessa tecnologia degli apparecchi televisivi (gura 4.33), ma ormai sempre pi soppiantati

Il Personal Computer (parte II)

79

(come avviene daltronde anche nel mercato dei televisori) dai modelli LCD (Liquid Crystal Display).
Figura 4.33. |

Questi ultimi in precedenza erano usati solo per i PC portatili ma, con la continua discesa dei prezzi, sono divenuti la scelta migliore anche per i sistemi desktop (da tavolo) in quanto comportano un ingombro nettamente inferiore. La tecnologia attuale di monitor LCD quella a matrice attiva o TFT (Thin Film Transistor) che ha permesso di superare i gravi limiti della precedente denominata a matrice passiva. Non entriamo qui nei dettagli di funzionamento delle tecnologie CRT e LCD ma forniamo solo alcune informazioni generali e la descrizione di qualche parametro che inuisce sulla qualit delle immagini visualizzate. Prima di tutto ripetiamo che per lungo tempo le schede grache hanno inviato ai monitor un segnale VGA analogico; questo per i monitor CRT non costituiva un problema, visto che sono dispositivi analogici, per gli LCD invece necessaria una ulteriore conversione del segnale da analogico a digitale (ricordiamo che in origine i dati sono digitali e vengono trasformati in analogici dal RAMDAC della scheda video). Per evitare questa doppia conversione, e considerando che ormai la gran parte dei monitor di tipo LCD, in molte schede video, soprattutto nei portatili, previsto luso dellinterfaccia DVI (Digital Visual Interface) per fornire un usso di dati digitale al monitor. Nei monitor i colori vengono ottenuto con il cosiddetto metodo additivo che consiste nel creare un colore sommando varie quantit dei tre colori fondamentali: Red, Green, Blu, da cui la sigla RGB. Il metodo si chiama additivo perch i colori pi luminosi si ottengono aggiungendo percentuali maggiori dei tre componenti fondamentali; in particolare se si aggiungono percentuali pari a zero si ottiene il nero, se pari al cento per cento si ottiene il bianco. Il metodo additivo usato nei monitor e nello scanner perch sono dispositivi in grado di emettere luce; diverso sar il caso delle stampanti per le quali si parler di metodo sottrattivo (vedi paragrafo 4.2.4.4). Una considerazione importante da fare che non si pu utilizzare un apparecchio televisivo al posto di un monitor o viceversa, in quanto il segnale inviato al monitor costituito da tre canali R, G, B separati pi due segnali per il sincronismo mentre le TV gestiscono un segnale unico che comprende tutte le informazioni e che infatti viene detto RGB composito; naturalmente, in caso di bisogno, si pu ricorrere ad appositi convertitori di segnale.

80

Il Personal Computer (parte II)

I parametri da tenere maggiormente in considerazione per valutare la qualit di un monitor sono i seguenti: forma: tradizionalmente la pi consueta quella 4:3 ma ora si stanno diffondendo sempre pi i formati panoramici come il 16:9 o il 16:10, pi adatti ad esempio alla visualizzazione di lm o di videogiochi; diagonale: espressa in pollici, d la dimensione del monitor; attualmente i modelli pi diffusi e meno cari sono quelli con diagonale di 17 e di 19 pollici; luminosit, contrasto e angolo di visuale: sono da considerare soprattutto per i monitor LCD mentre i CRT non presentano criticit rispetto a tali parametri; in particolare langolo di visuale (angolo dal quale possibile vedere le immagini come se fossimo davanti allo schermo) bene che sia almeno di 150 gradi; frequenza di rinfresco (refresh): deve essere di almeno 70 Hz per non affaticare gli occhi; questo parametro interessa per solo i monitor CRT e quindi non approfondiamo oltre natura e problematiche ad esso relative; tempo di risposta: importante per i monitor LCD e consiste nella velocit con cui si aggiornano i pixel; per avere una buona visualizzazione dei videogiochi e dei lmati occorrono valori di 25 ms, ma i modelli migliori scendono sotto i 20 ms; dot pitch: la distanza minima tra due punti e deve essere la pi piccola possibile; un valore accettabile 0,27 mm; risoluzione: nei monitor CRT un parametro che si pu variare senza problemi perch non c una corrispondenza esatta tra i pixel elaborati dalla scheda video e i punti visualizzati sullo schermo (per questo di solito viene indicata la loro risoluzione massima); per i monitor LCD invece un parametro vincolante in quanto essi sono costituiti da una matrice sica di punti (le celle dei cristalli liquidi) e, se si aumenta la risoluzione, i punti mancanti vengono interpolati creando sbavature e imperfezioni nelle immagini; numero di colori: questo il punto di maggior difetto dei monitor LCD rispetto ai vecchi CRT che riescono a visualizzare tutti i colori visibili dallocchio umano riproducendo in modo continuo (analogico) tutte le sfumature possibili; questo per la tecnologia TFT non possibile (anche se ci sono continui miglioramenti) e quindi per applicazioni di graca professionale sono ancora da preferire i monitor CRT.

4.2.4.4 Stampante

La stampante unimportante periferica di output che permette di ottenere i risultati delle elaborazioni su carta (hardcopy che si contrappone alla softcopy ottenibile sullo schermo); il costante abbassamento dei prezzi e i continui progressi tecnologici hanno fatto si che il suo utilizzo sia divenuto praticamente universale e con standard qualitativi molto elevati. Le stampanti si possono classicare in vari modi; una prima distinzione che possiamo fare in base alla tecnologia di stampa: stampanti a impatto: formano i caratteri spingendo un elemento meccanico contro un nastro inchiostrato posto tra lelemento stesso e la carta; stampanti a non impatto: formano i caratteri senza colpire la carta con elementi meccanici.

Il Personal Computer (parte II) Unaltra classicazione in base alla tecnica di trasferimento:

81

stampanti seriali: stampano un carattere alla volta in sequenza; la loro velocit si misura in caratteri al secondo (cps); stampanti parallele: trasferiscono su carta una riga di testo alla volta; la loro velocit si misura in linee al secondo (lps); stampanti a pagina intera: formattano unintera pagina e la trasferiscono lhardcopy in ununica soluzione; la loro velocit si misura in pagine al minuto (ppm). Inne possiamo avere una classicazione in base alla tecnica per definire il carattere: stampanti a carattere pieno: realizzano la stampa di ciascun carattere in un corpo unico come le vecchie macchine da scrivere a margherita; stampanti a matrice di punti: realizzano la stampa di ciascun carattere mediante laccostamento di piccoli punti (vedi gura 4.34).
Figura 4.34. |

I parametri pi importanti per decidere sulla qualit di una stampante sono la sua velocit la risoluzione di stampa espressa in dpi; riguardo al tipo di collegamento invece non ci sono grosse considerazioni da fare in quanto ormai tutte le stampanti prevedono il collegamento porte USB in sostituzione di quello parallelo. Una osservazione interessante riguarda il modo con cui vengono formati i colori nel caso della stampa: viene usato il metodo sottrattivo, basato sullassorbimento della luce, secondo il quale ogni colore ottenuto combinando quantit variabili dei colori fondamentali Cyan, Magenta, Yellow (da cui la sigla CMY) la cui somma globale fornisce il nero. Spesso per, per aumentare la qualit delle stampe dei caratteri del testo, viene aggiunto anche il nero come colore autonomo (la sigla diviene quindi CMYK dove K sta per blacK) e si parla di quadricromia anzich di tricromia; in caso di stampanti di alta qualit si pu poi avere un numero ancora maggiore di inchiostri (esacromia). vediamo adesso quali sono i tipi di stampanti pi diffuse attualmente o nel recente passato: stampanti a margherita (seriali, a impatto, a corpo unico): la testina di stampa utilizza un elemento chiamato margherita (a causa della sua forma), i caratteri sono posti allestremit dei petali o raggi della margherita e vengono premuti contro il nastro di scrittura; la qualit di stampa buona ma si tratta di stampanti molto lente (30-60 cps) e adatte solo alle stampe di puro testo, perci sono da tempo in disuso; stampanti ad aghi (seriali, a impatto, a matrice di punti): la testina di stampa contiene un certo numero di minuscoli aghi (9 oppure 24) attivati da opportuni impulsi in base al carattere da stampare; per aumentare la velocit la stampa di solito bidirezionale ma anche queste stampanti sono molto lente e quasi del tutto abbandonate;

82

Il Personal Computer (parte II) stampanti a getto di inchiostro (seriali, a non impatto, a corpo unico, vedi gura 4.35): la stampa avviene mediante linvio sulla carta di minuscoli getti dinchiostro che fuoriescono da decine di microscopici ugelli posti sulla testina di stampa equipaggiata con cartucce di inchiostro di colori diversi; sono stampanti veloci e molto silenziose che danno unelevata qualit per le stampe anche a colori grazie al fatto che gli inchiostri sono liquidi e possono essere mescolati direttamente sulla carta; unico punto a sfavore sono i costi di gestione in quanto sono molto cari sia i fogli di carta speciale, indispensabili per le stampe di alta qualit, sia i ricambi delle cartucce di inchiostro (talvolta il loro costo supera quello della stampante); stampanti laser (a pagina intera, a non impatto, a corpo unico, vedi gura 4.36): sfruttano la luce di un raggio laser per creare limmagine da stampare su un cilindro rivestito di materiale fotosensibile ruotante a velocit costante; la stampa si ottiene facendo aderire linchiostro in polvere (toner) caricato elettrostaticamente al cilindro per poi trasferirlo sulla carta tramite compressione e riscaldamento; sono stampanti molto veloci che forniscono risultati di ottima qualit con prezzi in continua discesa anche per i modelli a colori, anche in questo caso il problema lelevato costo dei materiali di consumo (cartucce di toner); stampanti a sublimazione (a pagina intera, a non impatto, a corpo unico, vedi gura 4.37): dedicate alla stampa di foto, utilizzano un processo di diffusione di inchiostri che, scaldati in modo variabile no a 400 gradi, passano dallo stato solido a quello di sublimazione e vengono assorbiti dalla carta con gradazione dei colori e dimensioni dei punti variabili in dipendenza della temperatura; gli inchiostri corrispondenti ai colori fondamentali sono contenuti su pellicole di plastica poste su un tamburo sul quale scorre la carta e vengono scaldati e trasferiti uno alla volta, rendendo necessari quattro passi per completare il procedimento di stampa; questo causa una certa lentezza oltre che lo spreco delle pellicole, ognuna delle quali usata solo parzialmente (per un solo colore fondamentale) e deve essere grande quanto la carta da stampare; la qualit per la migliore in assoluto tra tutte le tecnologie di stampa ed paragonabile a quella delle foto tradizionali anche rimanendo a risoluzioni molto basse (300 dpi); si tratta comunque di stampanti ancora abbastanza costose e che possono stampare solo su supporti di dimensione ssa e ridotta (10 x 15 o 13 x 18 cm).
Figura 4.35. |

Il Personal Computer (parte II)


Figura 4.36. |

83

Figura 4.37. |

4.2.5 Interfacce di rete, modem e bluetooth

In questo paragrafo esaminiamo velocemente le interfacce di rete il cui controller integrato in tutte le moderne schede madre al pari del modem e accenniamo brevemente alla tecnologia bluetooth. Il fatto che il controller della scheda di rete e il modem siano integrati non pregiudica la possibilit di installare, su slot PCI, schede di rete migliori o aggiuntive e di usare schede modem, oppure modem esterni, USB o seriali. Nella gura 4.38 vediamo a sinistra la connessione RJ-45 per il cavo di rete e a destra la RJ-11 per il cavo telefonico del modem.

84
Figura 4.38. |

Il Personal Computer (parte II)

In realt spesso i modem integrati sono addirittura emulati via software e questo pu costituire un problema se si vuole usare la macchina con sistemi operativi che non riconoscono queste periferiche ttizie; accade infatti spesso che esse siano correttamente supportate dalle varie versioni di Windows ma non da altri sistemi come Linux. Riguardo ai dispositivi di rete accenniamo solo che si fa sempre riferimento a reti LAN (Local Area Network) di tipo Ethernet e W I -F I (Wireless Fidelity), che sono di gran lunga le pi diffuse. Nel primo caso necessario un cavo di rete per collegare il PC ad un dispositivo chiamato switch, dotato di un numero di porte che va da 4 a 48, a cui saranno collegati anche gli altri dispositivi della rete; nel secondo caso necessaria la presenza, nel raggio di qualche decina di metri, di un access point, dotato di antenna, che permette le comunicazioni tra i vari nodi della rete Wi-Fi. Nella gura 4.39 vediamo un switch a 8 porte con un cavo di rete; nella gura 4.40 invece mostrato un access point.
Figura 4.39. |

Figura 4.40. |

Il Personal Computer (parte II)

85

In questa sede non forniamo ulteriori approfondimenti su questi aspetti che necessitano della conoscenza almeno delle nozioni di base sulla struttura e il funzionamento dellhardware e del software di rete, argomenti che non possono essere assolutamente liquidati in poche righe. Parlando di reti LAN pu comunque valere la pena di citare due esempi di periferiche di rete, un po particolari, che per sono sempre pi usate: stampanti di rete: sono stampanti che possiedono una loro interfaccia di rete e sono ad essa direttamente collegate anzich ad uno specico PC; possono essere usate da tutte le macchine presenti in rete; NAS (Network Area Storage): sono dei sistemi di dischi collegati direttamente alla rete per mettere a disposizione spazio di memoria ai vari nodi della rete stessa. Nei PC portatili di ultima generazione sono spesso integrate anche le interfacce Wi-Fi e bluetooth; in caso contrario si pu ricorrere a comodi dispositivi simili alle penne USB di cui vediamo esempi nella gura 4.41 (la scheda wireless quella a sinistra).
Figura 4.41. |

La tecnologia bluetooth senza li come il Wi-Fi ma si rivolge ad un altro tipo di utilizzo; in questo caso si parla infatti di PAN (Personal Area Network) per indicare tutti quei dispositivi di uso personale come telefonini, palm top, auricolari, ma anche tastiere e mouse, che gravitano in uno spazio molto ristretto (qualche metro) intorno allutente e che sfruttano questa tecnologia per interconnettersi. Concludiamo parlando del MODEM (MOdulatore-DEModulatore); si tratta di un dispositivo (vedi gura 4.42) che permette il collegamento tra computer sicamente distanti usando le normali linee telefoniche in quanto trasforma (in un modo che qui non approfondiamo) i segnali

86

Il Personal Computer (parte II)

digitali (bit), propri degli elaboratori, in segnali analogici adatti a essere trasportati su tali linee (originariamente progettate per la comunicazione vocale).
Figura 4.42. |

Se due computer distanti (chiamiamoli C1 e C2) si devono scambiare informazioni saranno necessari due modem (rispettivamente M1 e M2), uno per ogni elaboratore, collegati alla linea telefonica; se il computer C1 invia un messaggio questo sar convertito (modulato) in analogico da M1 e instradato sulla linea; allarrivo presso C2 il messaggio viene riconvertito (demodulato) in digitale da M2. Se C2 a inviare un messaggio i ruoli dei dispositivi sono naturalmente invertiti. I modem si classicano secondo la loro velocit, misurata in base ai bit al secondo che riescono ad inviare o ricevere; gli apparecchi di ultima generazione arrivano a 55.600 bps ed i loro prezzi sono ormai molto bassi (poche decine di euro). Da qualche tempo possibile collegarsi al provider anche con lADSL (Asymmetric Digital Subscriber Line), che sfrutta, nelle zone raggiunte dal servizio, le normali linee telefoniche. In tal caso si possono raggiungere velocit tra i 640.000 e i 20.000.000 bps in download (trasferimento dei dati dal provider al nostro computer) e tra i 128.000 e i 512.000 bps in upload (trasferimento inverso); ovviamente gli abbonamenti ADSL sono tutti a pagamento. Anche per lADSL necessario un dispositivo aggiuntivo che pu essere un modem ADSL USB oppure un router ADSL (vedi gura 4.43 in cui sono mostrati anche il cavo e la presa telefonica) a cui ci si collega con un cavo di rete; la seconda alternativa migliore perch spesso il router ADSL ha anche funzioni di switch (con almeno quattro porte) e talvolta pure di access point Wi-Fi, a costi sempre abbastanza contenuti.
Figura 4.43. |

Il Personal Computer (parte II)

87

Nel caso del modem ADSL, usare il termine modem comunque scorretto in quanto si tratta solo di un adattatore; infatti non necessaria alcuna modulazione o demodulazione data la natura digitale dei segnali ADSL.

4.3 Il BIOS

Il BIOS (Basic Input Output System) un componente fondamentale del sistema di elaborazione ed costituito da un insieme di programmi residenti nella memoria ROM del sistema. Il motivo per cui essi risiedono in tale tipo di memoria che devono entrare in azione appena accesa la macchina, momento nel quale la memoria RAM, essendo volatile, ha un contenuto impredicibile e comunque non utilizzabile e le memorie di massa non sono state ancora riconosciute. In verit, nei sistemi moderni, il BIOS risiede in una memoria EEPROM in modo che sia possibile aggiornarlo (operazione da compiere sempre con attenzione, consultando il sito della casa produttrice del BIOS e il manuale della scheda madre). Subito dopo laccensione, comunque, il BIOS viene copiato in RAM perch essa ha tempo di accesso inferiori rispetto alla ROM e quindi le operazioni vengono eseguite pi rapidamente. Il primo compito svolto da questo insieme di programmi lauto diagnostica o POST (Power On Self Test) che consiste in un rapido controllo di quasi tutti i dispositivi del sistema di elaborazione; eventuali problemi in questa fase possono anche bloccare il processo di avvio: si provi ad esempio a accendere un PC con la tastiera non collegata. Durante questa fase di controllo, i vari dispositivi (eccetto quelli che hanno un BIOS autonomo come le schede video o le schede SCSI) vengono inizializzati in base alle informazioni contenute in una porzione di RAM chiamata CMOS (Complementary Metal Oxide Semiconductor). Questultima una piccola memoria che non perde il suo contenuto perch alimentata da una batteria a bottone che si ricarica quando la macchina accesa, salvo esaurirsi dopo qualche anno, necessitando di sostituzione (vedi gura 2.1, lettera J). Grazie alla presenza di questa batteria i PC sono anche in grado di tenere aggiornata data e ora di sistema che altrimenti allaccensione si riposizionerebbe sempre a zero che corrisponde a 01/01/1980 per i sistemi DOS/Windows e a 01/01/1970 per i sistemi Unix/Linux (sono le date indicative in cui sono stati rispettivamente create le prime versioni di queste famiglie di sistemi operativi).

88

Il Personal Computer (parte II)

Le informazioni sulla congurazione dei dispositivi contenute nella CMOS sono in buona parte modicabili da parte dellutente che pu intervenire sui settaggi del BIOS premendo un opportuno tasto nei primi momenti di vita del sistema (quale sia il tasto dipende dal BIOS utilizzato e occorre quindi prestare attenzione ai primi messaggi che appaiono a video dopo laccensione, oppure consultare il manuale della scheda madre). Fra gli altri parametri congurabili ci sono anche le denizioni di due password, una per poter proseguire nellavvio della macchina e una per accedere alla congurazione del BIOS; se si deniscono queste password e poi si dimenticano non si riesce pi ad usare la macchina o a modicarne la congurazione e si deve necessariamente togliere momentaneamente la batteria (ovviamente a macchina spenta) in modo che il contenuto della CMOS si azzeri. Dopo la fase di POST viene eseguita la fase di bootstrap, che consiste nellesecuzione di un piccolo programma che effettua la ricerca, sulle memorie di massa disponibili, del programma di caricamento di un sistema operativo (boot loader) o di un programma che interagisca con lutente per la scelta del sistema da attivare (boot manager). Lordine di ricerca sulle memorie di massa uno dei parametri del BIOS che pi spesso pu essere necessario variare; ad esempio se si vuole avviare il PC dal lettore di CD o DVD, occorre che questultimo sia impostato come primo dispositivo su cui cercare il programma di boot. Nella gura 4.44 viene mostrata proprio la schermata di un BIOS in cui si effettua la scelta dellordine di ricerca appena citato.
Figura 4.44. |