Sei sulla pagina 1di 797

W illiam Stallings

Architettura
e organizzazione
dei calcolatori
Progetto e prestazioni
ottava edizione

P E A R S ON

Prentice
I
Hall f
I

Sommario

Prefazione all'edizione italiana


Prefazione
N ote sullautore

xx

Capitolo 0 Guida alla lettura


0.1
0.2
0.3

P ro filo d e lte sto


Percorso per lettori e docenti
Internet e risorse web

1
2
2

Parte 1 P ano ram ica


Capitolo 1 Introduzione
1.1
1.2
1.3

O rganizzazione e architettura
S tru ttu ra e fu n z io n e
Parole chiave, dom ande di revisione

8
14

Capitolo 2 Evoluzione e prestazioni del calcolatore


2.1
2.2
2.3
2.4
2.5
2.6
2.7

B revesto riad eicalco lato ri


Progettazione in funzione delle prestazioni
Evoluzione dell architettura Intel x86
Sistemi em bedded e ARM
Valutazione delle prestazioni
L etture e siti web consigliati
Parole chiave, dom ande di revisione e problem i

16
36
43
44
48
56
59

Sommario

Parte 2 Sistema di elaborazione


Capitolo 3 Visione ad alto livello delle funzioni e interconnessioni
del calcolatore
3.1 Componenti di un calcolatore
3.2 Funzione del calcolatore
3.3 Strutture di interconnessione
3.4 Interconnessione a bus
3.5 PCI
3.6 Letture e siti web consigliati
3.7 Parole chiave, domande di revisione e problemi
Appendice 3A Diagrammi di temporizzazione

68
71
85
87
96
105
105
110

Capitolo 4 Memoria cache


4.1 Panoramica dei sistemi di memoria di un calcolatore
4.2 Principidcllem em oriecache
4.3 Elementi di progettazione delle cache
4.4 Organizzazione della cache nel Pentium 4
4.5 Organizzazione della cache di ARM
4.6 Letture consigliate
4.7 Parole chiave, domande di revisione e problemi
Appendice 4A Caratteristiche delle prestazioni delle memorie a due livelli

114
121
123
144
147
148
149
156

Capitolo 5 Memoria interna


5.1
5.2
5.3
5.4
5.5

Memoria centrale a semiconduttore


Correzione degli errori
Organizzazione avanzata delle DRAM
Lettiure e siti web consigliati
Parole chiave, domande di revisione e problemi

164
173
179
185
186

Capitolo 6 Memoria esterna


6.1
6.2
6.3
6.4
6.5
6.6

Disco magnetico
RAID
Memorie ottiche
Nastri magnetici
Letture e siti web consigliati
Parole chiave, domande di revisione e problemi

192
202
212
217
220
221

Capitolo 7 Input/Output
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9

Dispositivi esterni
Moduli di I/O
I/O da programma
I/O interrupt driven
Accesso diretto alla memoria
Canali e processori di I/O
Interfaccia esterna: FireWire e InfiniBand
Lettiure e siti web consigliati
Parole chiave, domande di revisione e problemi

226
229
232
235
244
250
251
262
263

Sommario

Capitolo 8 Supporto ai sistemi operativi


8.1
8.2
8.3
8.4
8.5
8.6
8.7

Panoram icadeisistem ioperativi


Schedulazione
Gestione della memoria
Gestione della memoria nel processore Pentiiun
Gestione della memoria nel processore ARM
Letture e siti web consigliati
Parole chiave, domande di revisione e problemi

270
281
287
300
305
310
311

Parte 3 C P U
Capitolo 9 Aritmetica del calcolatore
9.1
9-2
9.3
9.4
9.5
9.6
9.7

Lunit aritmetico-logica
Rappresentazione degli interi
Aritmetica intera
Rappresentazione in virgola mobile
Aritmetica in virgola mobile
Letture e siti web consigliati
Parole chiave, domande di revisione e problemi

320
321
326
341
347
356
358

Capitolo 10 Linguaggi macchina: caratteristiche e funzioni


10.1 Caratteristiche delle istruzioni macchina
10.2 T ipi degli operandi
10.3 T ipi di dato di Intel x86 e ARM
10.4 T ipidioperazione
10.5 T ipi di operazioni in Intel x86 e ARM
10.6 Lcttureconsigliate
10.7 Parole chiave, domande di revisione e problemi
AppendicelOA Pile (stack)
AppendicelOB Little-endian, big-endian e bi-endian

364
370
373
376
389
399
400
407
413

Capitolo 11 Linguaggi macchina:


modi ai indirizzamento e formati
11.1
11.2
11.3
11.4
11.5
11.6
11.7

Indirizzamento
M odi di indirizzamento di x86 e ARM
Formati delle istruzioni
Formati delle istruzioni di x86 e di A RM
Linguaggioassembly
Letture consigliate
Parole chiave, domande di revisione e problemi

418
424
430
439
444
446
446

Sommario

Capitolo 12 Struttura e funzione del processore


12.1
12.2
12.3
12.4
12.5
12.6
12.7
12.8

Organizzazione del processore


Organizzazione dei registri
Ciclo esecutivo delle istruzioni
Pipeliningdelleistruzioni
La famiglia di processori Intel x86
II processore ARM
Letture raccomandate
Parole chiave, domande di revisione e problemi

452
454
459
463
483
491
498
499

Capitolo 13 ProcessoriRISC
13.1 C arattcristichcdeiresecuzionedelleistruzioni
13.2 Uso di un ampio banco di registri
13.3 Compilatori ottimizzanti
13.4 A rchitctturaR ISC
13.5 PipeliningRISC
13.6 MIPS R4000
13.7 SPARC
13.8 Controversia tra RISC e CISC
13.9 Lctturcraccom andatc
13.10 Parole chiave, dom ande di revisione e problemi

507
511
517
518
523
529
536
542
543
544

Capitolo 14 Parallelismo a livello di istruzioni


e processori superscalari
14.1
14.2
14.3
14.4
14.5
14.6

Panoramica
Problemi di progettazione
Pentiiun 4
ARM Cortex-A8
Letture raccomandate
Parole chiave, domande di revisione e problemi

550
555
563
570
579
580

Parte 4 U nit di controllo


Capitolo 15 Operazioni dell'unit di controllo
15.1
15.2
15.3
15.4
15.5

Micro-operazioni
C ontrollo del processore
Im plementazionecablata
Letture raccomandate
Parole chiave, dom ande di revisione e problemi

590
596
606
610
611

Capitolo 16 Controllo microprogrammato


16.1
16.2
16.3
16.4
16.5
16.6

C o n ccttid ib ase
Serializzazione delle microistruzioni
Esecuzione delle microistruzioni
T I 8800
Letture raccomandate
Parole chiave, domande di revisione e problemi

614
623
628
640
650
651

Sommario

Parte 5 O rg anizzazione parallela________________________________


Capitolo 17 Elaborazione parallela
17.1 Organizzazione multiprocessore
17.2 Mulciproccssori simmetrici
17.3 Coerenza delle cache e protocollo MESI
17.4 M ultithreadingechipm idtiprocessorc
17.5 Cluster
17.6 Accesso non uniforme alla memoria
17.7 * Elaborazionevettorialc
17.8 Letture raccomandate
17.9 Parole chiave, domande di revisione e problemi

656
659
666
672
680
687
691
704
705

Capitolo 18 Calcolatorimulticore
18.1
18.2
18.3
18.4
18.5
18.6
18.7

Prestazioni hardware
Prestazioni software
Organizzazionimulticore
Organizzazione multicore Intel x86
A R M llM P C o re
Letture e siti web consigliati
Parole chiave, domande di revisione e problemi

714
719
724
726
729
734
735

Appendice A Progetti per l'insegnamento dell'organizzazione


e dell'architettura dei calcolatori
A .l
A.2
A.3
A.4
A.5
A.6
A.7

Simidazioni interattive
Progetti di ricerca
Progetti di simulazione
Progetti in linguaggio Assembly
Assegnazione di letture e resoconti
Esercizi di scrittura
Raccolta di test

738
738
738
740
741
741
742

Appendice B Linguaggio Assembly e argomenti correlati


B.l
B.2
B.3
B.4

LinguaggioAssembly
Assemblatori
Caricamento e collegamento
Letture raccomandate e siti web

744
754
757
766

Appendice C Logica Digitale (sul web)


Glossario

773

Bibliografia

785

Indice analitico

801

Prefazione all'edizione italiana

Lautore di questo libro non ha certo bisogno di presentazione, ma lottava edizione del li
bro di W illiam Stallings sulle architetture dei calcolatori merita un com m ento particolare.
La prim a osservazione riguarda la m eritoria scelta di A R M come architettura di ri
ferimento per le m acchine RISC. C on il diffondersi di telefonini sempre pi sofisticati e
di altri gadget digitali per ascoltare musica, ricevere mail e cos via, i processori ARM
stanno vivendo una seconda giovinezza. E, proprio per questo motivo, sono Iem blem a dei
cosiddetti sistemi embedded (almeno per quanto riguarda le applicazioni commerciali). A
differenza dei calcolatori che abbiamo sulla nostra scrivania, questi processori sono lette
ralmente immersi in sistemi digitali pi am pi e la loro attivit dedicata ai sistemi di cui
fanno parte. N aturalm ente i pi recenti m odelli A R M sono allineati con le scelte archi
tetturali pi avanzate come ad esempio lorganizzazione multi-core.
D altro canto, lanalogo riferimento C ISC costituito dalla nuova famiglia multi-core Intel.
U n a ltra piccola, m a im p o rtan te novit di q uesta edizione linserim ento di
un A ppendice che tratta gli assemblatori. Assembler e loader sono lanello di congiunzio
ne tra lam biente di sviluppo e quello esecutivo. M olto spesso, purtroppo, gli studenti non
colgono appieno la differenza tra questi due mondi. Ecco dunque che largom ento meri
ta particolare attenzione.
A ncora dal punto di vista didattico, va detto che il libro uno strum ento prezioso
vuoi per il docente, vuoi per lo studente. Gli argom enti sono, com e sempre, organizzati
m olto bene e ogni capitolo contiene un puntatore a siti web che contengono im portanti
informazioni per gli studenti e per i professionisti che vogliono approfondire le proprie co
noscenze.
Prof. Ottavio M . DAntona
Dipartimento di Informatica e Comunicazione
Universit degli Studi di M ilano

Prefazione

Obiettivi
I contenuti di questo libro vertono sulla struttura e la funzione dei calcolatori, allo scopo
di presentare, nel m odo pi chiaro ed esauriente, la natura e le caratteristiche dei m oder
ni sistemi di elaborazione.
Q uesto obicttivo rappresenta per m olti versi una vera e propria sfida. Innanzi tutto,
esiste uncnorm e gamma di prodotti che possono vantare a pieno titolo la definizione di
calcolatore: dai pi economici microprocessori su un unico chip ai supercomputer da de
cine di milioni di dollari. E questa estrema variet si presenta non solo nei costi, m a anche
nelle dimensioni, nelle prestazioni e nelle applicazioni. In secondo luogo, i continui c re
pentini cam biam enti che da sempre caratterizzano la tecnologia non accennano ad arre
starsi. Trasformazioni che riguardano tu tti gli aspetti dellinform atica, a partire dalla tec
nologia dei circuiti integrati fino ad arrivare al sempre pi frequente uso di tecniche di
organizzazione parallela.
N onostante la variet e la mutevolezza della materia, alcuni concetti fondam entali
trovano coerente applicazione in ogni campo. Lapplicazione di tali concetti dipende dal
lo stato attuale della tecnologia e dagli obiettivi di rapporto tra costi e prestazioni, stabi
liti dal progettista. Lintento del libro e quello di fornire unesauriente trattazione dei fon
dam enti di organizzazione e arch itettu ra degli elaboratori in relazione alle odierne
problem atiche d i progettazione.
Il so ttotitolo suggerisce il tema e !approccio scelti. sempre stato im portante pro
gettare sistemi informatici per ottenere alte prestazioni; ma mai come ora tale vincolo sta
to cos fondam entale e difficile da soddisfare. Stanno crescendo rapidamente tu tte le prin
cipali caratteristiche di prestazione dei sistemi di elaborazione, incluse la velocit del
processore, la velocit della memoria, la sua capienza c la velocit di trasferimento dati. E,
per giunta, a ritm i differenti. Ci rende difficile concepire un sistema bilanciato, in grado
di massimizzare le prestazioni e lutilizzo di tu tti gli elementi. Cos, la progettazione dei cal
colatori diventa sempre pi un gioco in cui si apportano modifiche alla struttura e alla fun
zione di una specifica area per compensare un calo di prestazioni in unaltra area. Avremo
m odo di apprezzare com e questa sfida venga affrontata in numerose scelte progettuali.
Un calcolatore, come ogni sistema, consiste di un insieme di com ponenti intercon
nessi tra loro. Il sistema meglio caratterizzato in term ini di struttura (il m odo in cui i coni-

xvi

Prefazione

ponenti sono connessi) e di funzione (le operazioni svolte dai singoli componenti). Inoltre,
lorganizzazione degli elaboratori gerarchica. Ogni componente principale pu essere me
glio descritto scomponendolo a sua volta nei suoi principali sottocomponenti e descri
vendo struttura e funzione di questi ultimi. Per chiarezza e comprensibilit, lorganizza
zione gerarchica descritta nel libro con un approccio top-down:
calcolatore, i cui componenti principali sono il processore, la memoria e /
processore, i cui componenti principali sono lunit di controllo, i registri, Punir
aritmetico-logica e lunit di esecuzione delle istruzioni
unit di controllo: emette segnali di controllo per loperazione e la coordinazione
di tutti i componenti del processore. Limplementazione della microprogrammazionc chc viene tradizionalmente utilizzata prevede che i componenti principali siano
la memoria di controllo, i circuiti di scquenzializzazione delle microistruzioni e i re
gistri. Al giorno doggi la microprogrammazione riveste un ruolo minore, pur rima
nendo un im portante tecnica di implementazione.
Lobiettivo quello di presentare il materiale in uno stile che illustri i nuovi contenuti in
un contesto chiaro. Chiesto dovrebbe ridurre al m inimo la possibilit che il lettore perda
lorientamento, fornendo nel contempo maggiori stimoli rispetto a un approccio bottomuPIn tutta la trattazione, gli aspetti dei sistemi sono visti sia nellottica dellarchitettura
(gli attributi di un sistema visibili al programmatore in linguaggio macchina) sia delPorganizzazione (le unit operative e le loro interconnessioni che realizzano Parchitettura).

Esempi di sistema
Qiiesto testo si propone di introdurre il lettore ai principi della progettazione e alle te
matiche implcmentative dei principali sistemi operativi. Per questo motivo una trattazio
ne puramente concettuale o teorica sarebbe inadeguata. Per chiarire i concetti presentati
e rappresentare il ruolo pratico della progettazione, sono state prese in considerazione le
seguenti due famiglie di elaboratori.
Architettura Intel x86, quella utilizzata pi frequentemente per i calcolatori nonembedded. Gli x86 sono fondamentalmente processori CISC (complex instruction set
computer) con alcune caratteristiche RISC (reduced instruction set computer). I mem
bri pi recenti della famiglia x86 adottano principi di progettazione superscalare e
supportano configurazioni a processore multiplo. Levoluzione delle caratteristiche
dellarchitettura x86 costituisce un caso di studio dellevoluzione della maggior par
te dei principi di programmazione dellarchitettura dei computer.
ARM, probabilmente il processore embedded pi diffuso, utilizzato nei telefoni cel
lulari, iPod, apparecchiature di sensori remoti e in molti altri casi. ARM essenzial
mente un sistema RISC. Anche i membri pi recenti della famiglia ARM adottano
principi di progettazione superscalare e supportano configurazioni a processore mul
tiplo.
Molti, ma non tutti gli esempi utilizzati, sono presi da queste due famiglie di elaboratori.
Numerosi altri sistemi, sia contemporanei sia storici, forniscono esempi delle importanti
caratteristiche di progettazione delParchitettura degli elaboratori.

Prefazione

Struttura del testo


Il libro c organizzato in cinque parti.
Panoramica
Sistema di elaborazione
CPU, lunit centrale di elaborazione
Unit di controllo
Organizzazione parallela, incluse le organizzazioni multiprocessore.
Il testo include anche molti supporti didattici, tra cui il ricorso a simulazioni interattive e nu
merose figure e tabelle per esemplificare e chiarire la trattazione. Ogni capitolo comprende una
lista di parole chiave, domande di revisione, esercizi, suggerimenti per ulteriori letture e siti web
consigliati. Il libro comprende inoltre un esteso glossario e una bibliografia.

Destinatari del testo


Il testo concepito sia per lam bito universitario sia per quello professionale. Come libro
di testo, pensato per corsi accademici e di specializzazione - semestrali o annuali - in
informatica, ingegneria informatica e ingegneria elettronica.
Per il professionista, il testo costituisce un utile manuale di riferimento e pu essere
un valido ausilio per I autoapprendimento.

Materiale didattico di supporto


Collegandosi alla nostra pagina del catalogo on-line h ttp :// h p e .p e a rs o n .it/s ta llin g s , stu
denti e docenti potranno scaricare gratuitamente TAppendice C che contiene gli ele
menti di base dcllclcttronica digitale. Le porte logiche elementari (AND, O R, N O T ,...)
e i pi semplici circuiti combinatori e sequenziali sono gli atomi e le molecole del tes
suto con cui realizzato Thardware di tutti i sistemi di elaborazione delTinformazione.
I
docenti che adottano il testo avranno accesso ai seguenti supporti didattici (in lin
gua inglese) :
Solutions Manual: soluzioni alle domande di revisione e ai problemi di ogni capi
tolo.
Projects Manual : proposte di progetti per tutte le categorie sottoelencate.
Slide in PowerPoint: una serie di slide per ogni capitolo, adatte a essere utilizzate
durante la lezione.
File PDF: riproduzione di tutte le figure e tabelle presenti nel libro.
Test bank: vari test di tipo vero/falso, a scelta multipla e domande e risposte da com
pletare.
Per effettuare il download di questi file necessario collegarsi al seguente link:
h t tp :// w w w .p e a rs o n h ig h e re d .c o m /s ta llin g s /

e seguire le procedure di registrazione.

xviii

Prefazione

Servizi Internet per insegnanti e studenti


Esiste un sito web che fornisce supporto a studenti e insegnanti che usano questo libro. Il
sito contiene collegamenti ad altri siti interessanti e una serie di documenti utili. La pagi
na web ha indirizzo:
h ttp ://w illia m s ta llin g s.c o m /C O A /C O A 8 e .h tm l

E stata istituita una mailing list grazie alla quale i docenti che adottano il libro possono
scambiare informazioni, suggerimenti e domande, tra loro e con lautore. Non appena ver
ranno individuati errori di stampa o di altra natura, verr pubblicata unerrata corrige sul
sito:
W illia m S ta llin g s .c o m

E inoltre attivo il sito per gli stu d en ti di inform atica:


http://w w w .W illiam S tallin g s.co m /S tu d en tS u p p o rt.h tm l

Simulazioni interattive
Una novit di questa edizione sono le simulazioni interattive, che costituiscono un effica
ce strumento di comprensione per le complesse caratteristiche di progettazione di un mo
derno calcolatore. Per illustrare le funzioni chiave e gli algoritmi dellorganizzazione dei cal
colatori e del progetto di architetture vengono utilizzate venti simulazioni interattive,
segnalate da unicona che indica la disponibilit di una simulazione interattiva online. Le
simulazioni permettono di definire le condizioni iniziali, fungendo quindi da base per i
compiti da assegnare agli studenti. Il manuale del docente include una serie di esercizi, uno
per ogni animazione. Ogni compito costituito da una serie di problemi specifici che
possono essere assegnati allo studente.
Le simulazioni, suddivise capitolo per capitolo e in sequenza, sono reperibili attra
verso il seguente percorso:
h ttp :// w w w .W illia m S ta llin g s .c o m / C O A /A n im a tio n /L in k s .h tm l

Novit dell'ottava edizione


Nei quattro anni intercorsi dalla pubblicazione della precedente edizione di questo libro
linformatica ha assistito a innovazioni continue. In questa nuova edizione cerchiamo di co
gliere tali cambiamenti mantenendo nel contempo una trattazione vasta ed esauriente del
lintero argomento. A questo scopo, la precedente edizione stata attentamente rivista da
un gran numero di docenti di informatica e da molti professionisti del campo. Di conse
guenza, in molti punti lesposizione diventata pi chiara e concisa e le immagini sono sta
te migliorate. Inoltre, sono stati aggiunti parecchi esercizi gi sperimentati sul campo.
Oltre a queste sottigliezze, volte a migliorare laspetto pedagogico e la funzionalit
del testo, sono state apportate sostanziali variazioni in tutto il libro. Si mantenuta ap
prossimativamente la stessa organizzazione dei capitoli, anche se la maggior parte del ma
teriale stata rivista e sono stati apportati numerosi ampliamenti.
Ecco alcuni tra i pi significativi.
Simulazione interattiva. La simulazione fornisce un efficace strumento per com
prendere i complessi meccanismi di un moderno elaboratore. Lottava edizione con
tiene 20 strumenti di simulazione interattiva, basati sul Web, che coprono argomen

Prefazione

ti quali memoria cache, memoria centrale, I/O , predizione dei salti, pipelining delle
istruzioni ed elaborazione vettoriale. In alcuni punti del libro viene evidenziata la di
sponibilit di una simulazione, in modo che lo studente ne faccia uso nel momento
pi appropriato.
Processori embedded. Lottava edizione tratta anche la tematica dei processori em
bedded e della loro progettazione specifica. Larchitettura ARM viene utilizzata co
me esempio.
Processori multicore. Questa edizione si occupa di quello che al momento il nuo
vo sviluppo nellarchitettura degli elaboratori, ovvero lutilizzo di processori multipli
su un singolo chip. Il Capitolo 18 e dedicato interamente a questo argomento.
Memoria cache. Il Capitolo 4, dedicato completamente a questo tema, stato am
piamente rivisto, aggiornato e ampliato per offrire una pi completa copertura tec
nica e migliorarne il carattere pedagogico grazie allutilizzo di numerose immagini e
agli strumenti di simulazione interattiva.
Valutazione delle prestazioni. Nel Capitolo 2 viene ampliato significativamente il
discorso relativo alla valutazione delle prestazioni, toccando anche il tema dei ben
chmark e unanalisi della legge di Amdahl.
Linguaggio Assembly. Una nuova appendice (Appendice B) si occupa del linguag
gio Assembly e degli assemblatori.
DDR-SDRAM . La D D R, in particolare D D R 2 e DDR3, diventata la tecnologia
dominante della memoria centrale per i desktop e per i server. La tecnologia D D R
viene illustrata nel Capitolo 5.
Nastro LTO. LTO (linear tape open) diventato il formato super tape pi vendu
to ed ampiamente utilizzato per sistemi di elaboratori grandi e piccoli, special
mente per il backup. Qiiesto argomento viene trattato nel Capitolo 6.

Ringraziamenti
Questa nuova edizione ha beneficiato della revisione di molte persone che hanno genero
samente messo a disposizione il proprio tempo e la propria esperienza. Un primo ringra
ziamento va a quanti hanno rivisto il manoscritto, completamente o in larga misura: Azad
Azadmancsh (University o f N ebraska-O m aha), HenryCasanova (UnivcrsityofHawaii)1
Marge Coahran (Grinnell College), AndreeJacobsen (University ofNew Mexico), Kurtis
Kredo (University o f CaliforniaDavis), Jiang Li (Austin Peay State University), Rachid
Manseur (SUNY, Oswego), John Masiyowski (George Mason University), Fuad Muztaba
(Winston-Salem State University), Bill Sverdlik (Eastern Michigan University) e Xiaobo
Zhou (University o f Colorado Colorado Springs).
Un ringraziamento anche alle molte persone che hanno fornito revisioni tecniche det
tagliate di singoli capitoli: Tim Mensch, Balbir Singh, Michael Spratte (Hewlett-Packard),
Frai^ois-Xavier Peretmere, John Levine, Jeff Kenton, Glen H errm annsfeldt, Robert
Thorpe, Grzegorz Mazur (Facolt di Informatica, Warsaw University o f Technology), Ian
Ameline, Terje Mathisen, Edward Brekelbaum (Varilog Research Inc), Paul DeMone e
Mikael Tillenius. Vorrei inoltre ringraziare Jon Marsh della ARM per la revisione del ma
teriale concernente ARM.

xix

XX

Prefazione

La professoressa Cindy Norris dellAppalachian State University, il professor Bin Mu


della University o f New Brunswick e il professor Kenrick Mock della University o f Alaska
hanno contribuito allelaborazione degli esercizi. Aswin Sreedhar della University o f
Massachusetts ha sviluppato gli esercizi di simulazione interattiva e ha scritto la raccolta
di test. I professori Miguel Angel Vega Rodriguez, Juan Manuel Snchez Prez e Juan
Antonio Gmez Pulido, dellUniversit dellEstremadura (Spagna), hanno preparato gli
esercizi SMPCache del manuale per i docenti e sono ^li autori della guida per lutente di
SMPCache.
Todd Bezenek della University o f Wisconsin e James Stine della Lehigh University
hanno preparato gli esercizi SimpleScalar del manuale per i docenti. Todd ha anche scrit
to la guida per lutente di SimpleScalar.
Grazie ad Adrian Pullin del Liverpool Hope University College, che si occupato del
le slide in PowerPoint per questo testo.
Infine, un ringraziamento a tutti i responsabili della pubblicazione di questo libro, che
hanno lavorato come sempre in modo eccellente. Nello specifico, grazie al mio editor
Tracy Dunkelberger, alla sua assistente Melinda Haggerty e alla direttrice editoriale Rose
Kernan, oltre a Jake Warde della Warde Publishers per il lavoro di revisione e a Patricia M.
Daly, responsabile del copy-editing.

Note sull'autore
William Stallings ha apportato un contributo unico allo studio del vasto campo delle ar
chitetture dei calcolatori e delle reti digitali. Ha scritto 17 libri sullargomento, che salgo
no a 42 contando riedizioni e revisioni. I suoi lavori sono apparsi in numerose pubblica
zioni del TACM e della IEEE, tra cui Proceedings o f the IEEE e A C M Computing Reviews.
Per dieci volte ha ricevuto il premio per il miglior libro di testo di informatica da par
te della Text and Academic Authors Association.
Da pi di trentanni nel settore, W illiam Stallings e collaboratore, responsabile tec
nico e direttore di molte aziende ad alta tecnologia. H a progettato e implementato suite
di protocollo basate su T C P /IP e su OSI per vari calcolatori e sistemi operativi, dai mi
crocomputer sino ai mainframe. Svolge inoltre attivit di considenza per importanti enti
di ricerca statali, societ produttrici e utilizzatrici nel campo dellinformatica e aziende che
sviluppano software.
Ha creato e cura il Computer Scicncc Student Resource Site allindirizzo
h t t p :/ / w w w .W illia m S t a llin g s .c o m / S t u d e n tS u p p o rt .h t m l

Questo sito fornisce documenti e link relativi ad argomenti di interesse generale per stu
denti di informatica (e professionisti). E inoltre redattore della rivista Cryptologia, de
dicata a tutti gli aspetti della crittologia.
W illiam Stallings ha conseguito il Ph.D. in informatica presso il M IT e il B.S. in in
gegneria elettronica presso la Notre Dame University.

Capitolo 0

Guida alla lettura

Q uesto libro, insieme al sito web che lo integra, tratta una grande vastit di argomenti, la
wui panoramica viene delineata nel presente capitolo.

0.1

Profilo del testo

Il libro organizzato in cinque parti.


Parte 1: fornisce una panoram ica dell organizzazione e dellarchitcttura del calcolatore
e riguarda il m odo in cui la progettazione dellelaboratore si evoluta.
Parte 2: esamina i com ponenti principali di un calcolatore e le loro interconnessioni, sia
reciproche sia con il m ondo esterno. Q uesta parte include anche una discussione
dettagliata della memoria interna ed esterna e d e ll!/O . Infine viene esaminata la re
lazione tra larchitettura di un calcolatore e il sistema operativo che si esegue su tale
architettura.
Parte 3: prende in esame larchitettura interna e lorganizzazione del processore. La se
zione inizia con una discussione approfondita dell'aritmetica del calcolatore e p ro
segue analizzando linsieme di istruzioni (instruction set). La parte restante si occupa
della stru ttu ra e della funzione del processore, includendo una trattazione degli ap
procci RISC e superscalari.
Parte 4: discute la struttura interna dellunit di controllo del processore e luso della
microprogram m azionc.
Parte 5: tratta lorganizzazione in parallelo, incluso il multiprocessing simmetrico e i
cluster.
Alcuni capitoli c appendici disponibili online sul sito wTeb del libro si occupano di ulteriori
argomenti di rilievo per il testo.
U n sommario pi dettagliato, capitolo per capitolo, presente allinizio di ogni parte.

Capitolo 0 - Guida alla lettura

Questo testo si propone di familiarizzare il lettore con i principi della progettazione


e con le tematiche di implementazione della moderna organizzazione e architettura degli
elaboratori. Per questo, una trattazione puramente concettuale o teorica sarebbe inade
guata. Per chiarire e rafforzare i concetti presentati vengono quindi utilizzati esempi di
macchine di diverso tipo. Molti esempi, ma non tutti, sono tratti da due famiglie di ela
boratori: la famiglia Intel x86 e la famiglia ARM [advancedRISC machine). Insieme, que
sti due sistemi rappresentano gran parte delle tendenze attuali dellarchitettura degli ela
boratori- Intel x86 essenzialmente un elaboratore con set di istruzioni complesso (CISC,
complex instruction set computer) con alcune caratteristiche RISC (reduced instruction set
computer), mentre ARM sostanzialmente un sistema RISC. Entrambi i sistemi adottano
principi di progettazione superscalare e supportano configurazioni a processore multiplo.

0.2

Percorso per lettori e docenti

Questo libro presenta il materiale con un approccio top-down. Come discuteremo pi det
tagliatamente nel Paragrafo 1.2 un elaboratore pu essere visto come una struttura gerar
chica. Al livello pi alto si trovano i componenti principali degli elaboratori: processore,
I/O , memoria, periferiche. La Parte 2 esamina queste componenti e le analizza nel detta
glio, fatta eccezione per il processore. Questo approccio permette di intuire quali sono i
requisiti funzionali esterni che dettano larchitettura del processore, introducendo cos il
passaggio alla Parte 3, in cui il processore viene esaminato in dettaglio. La Parte 2 costrui
sce il contesto che permette di comprendere perch nella progettazione devono essere
prese le decisioni che perm ettono al processore di supportare il funzionamento comples
sivo del sistema. In seguito, nella Parte 4, ci soffermiamo sullunit di controllo, ovvero il
cuore del processore. Anche la progettazione di questa unit pu essere spiegata al meglio
nel contesto della funzione che esplica nellambito del processore. Infine, la Parte 5 pren
de in considerazione sistemi con processori multipli, inclusi cluster, computer multiprocessore e computer multicore.

0.3

Internet e risorse web

Su Internet e nel Web si trovano molte risorse a supporto di questo libro e per aiutare i let
tori a mantenersi aggiornati sugli sviluppi di questa materia.

Siti web per questo libro


Per q u e sto

lib ro s ta ta p re d is p o s ta u n a p p o s ita p a g in a w eb a llin d iriz z o


h ttp ://w w w .W illiam S tallin g s.co m /C O A 8 e.h tm l.
All in te rn o del sito w eb sar p re se n tata e allo c co rren z a a g g io rn ata lerra ta corrige. Il
le tto re p re g a to di seg n alare v ia e-m ail o g n i e rro re ris c o n tra to . Sempre allin d iriz zo
http ://w w w .W illiam S tallin g s.co m si trova lerrata co rrig e d ei m ici altri libri.

LA utore anche responsabile del C om puter Science Student Resource Site


Lo scopo di tale sito forni
re documenti, informazioni e link utili per studenti di informatica c professionisti.
( h t tp :/ / w w w .W illia m S t a llin g s .c o m / S t u d e n t S u p p o r t .h t m l) .

0.3 Internet e risorse web

I collegamenti sono organizzati in sei categorie.


Matematica: include un ripasso della matematica di base, un manuale sintetico sul
la teoria delle code, un elementare trattato di sistemi numerici e utili collegamenti a
siti web di natura matematica.
Come fare: consigli e suggerimenti per risolvere gli esercizi, scrivere rapporti tecni
ci e approntare presentazioni tecniche.
Risorse di ricerca: collegamenti a im portanti raccolte di documenti, rapporti tec
nici e fonti bibliografiche.
Miscellanea: ima serie di documenti e collegamenti utili.
Carriere in ambito informatico: link e documenti utili per coloro che desiderano
intraprendere una carriera nel settore informatico.
Umorismo e altre disgressioni: un bene distrarsi dal lavoro di tanto in tanto.

Altri siti web


Airinterno dei capitoli, nel paragrafo Letture e siti web consigliati, verranno segnalati spe
cifici siti che forniscono informazioni relative agli argomenti del libro. Poich gli indiriz
zi web tendono a cambiare frequentemente, non sono stati inclusi nel libro, ma sono di
sponibili nel sito web del testo. Altri link, non citati nel libro, verranno aggiunti sul sito web
a tempo debito.
Ecco un elenco di siti web di interesse generale, collegati al tema dellorganizzazione
e dellarchitettura del calcolatore.
W W W Com puterArchitecture Home Page: un esauriente indice di informazio

ni rilevanti per ricerche nel campo dellarchitettura, inclusi gruppi e progetti, orga
nizzazioni tecniche, letteratura, lavoro e informazioni commerciali.
CPU Info Center: informazioni su processori specifici, compresi documenti tecni
ci, informazioni sul prodotto e ultime novit.
Processor Emporium: raccolta di informazioni interessanti e utili.
ACM Special Interest Group on Computer Architecture: informazioni su atti
vit e pubblicazioni del gruppo SIGARCH.
IEEE Technical Com m ittee 011 Computer Architecture: la newsletter T C AA.

Newsgroup USENET
Molti newsgroup U SEN ET si occupano di aspetti dellorganizzazione e dellarchitettura
del calcolatore. Com e in tutti i gruppi di questo tipo, si riscontra un alto rapporto segna
le-rumore, ma vale la pena cercare un gruppo che soddisfi le proprie esigenze.

Capitolo 0 - G uida alla lettura

I newsgroup pi interessanti sono:


comp.arch. : un interessante newsgroup sul larchitettura dei calcolatori;
comp.arch.arithmetic: dove sono affrontati gli standard e gli algoritmi numerici-del
calcolatore;
comp.arch.storage: tratta specifici prodotti e problemi pratici legati al loro uso;
comp.parallel: dedicato alle applicazioni parallele.

Parte 1

Panoramica
Argomenti
La Parte 1 fornisce basi e contesto degli argomenti affrontati nel libro. Vengono presen
tati i concetti fondamentali dellorganizzazione e dellarchitetturadel calcolatore.

Percorso
Capitolo 1 - Introduzione
U capitolo affronta il concetto di calcolatore come sistema gerarchico. Un elaboratore
pu essere visto come una struttura di componenti e la sua funzione descritta nei termini
della funzione globale dei suoi com ponenti in cooperazione. Ogni componente, a sua vol
ta, pu essere descritto nei termini della propria struttura interna e funzione.

Capitolo 2 - Evoluzione e prestazioni del calcolatore


La storia della tecnologia informatica costituisce un interessante percorso per introdurre
i concetti basilari di organizzazione e architettura del calcolatore. Inoltre, vengono qui de
scritte le tendenze tecnologiche che hanno reso le prestazioni il principale obiettivo nella
progettazione dei sistemi di elaborazione e presentate in anteprima le varie tecniche e stra
tegie adottate per ottenere prestazioni bilanciate ed efficienti.

Panoramica Capitolo 1 - Introduzione

Esempi di attributi architetturali sono il repertorio delle istruzioni, il numero di bit usati
per rappresentare i vari tipi di dato (come numeri interi o caratteri), i meccanismi di I /O
e le tecniche di indirizzamento della memoria. Gli attributi organizzativi includono gli
aspetti hardware trasparenti al programmatore (come i segnali di controllo, le interfacce
tra il calcolatore e le periferiche e la tecnologia delle memorie).
Per esempio, decidere se un modello debba o non debba avere unistruzione di m ol
tiplicazione un problema di progettazione architetturale, mentre un problema di or
ganizzazione decidere se quellistruzione venga implementata da un circuito dedicato o tra
mite somme ripetute. La decisione in m erito pu essere basata sulla previsione della
frequenza duso dellistruzione di moltiplicazione, sulla velocit comparata dei due ap
procci, sul costo c sulla dimensione fisica di ununit di moltiplicazione.
La distinzione tra architettura e organizzazione c stata ed di fondamentale rilevan
za. Molti produttori di calcolatori offrono una famiglia di modelli, tutti caratterizzati dal
la stessa architettura ma con differenti organizzazioni. D i conseguenza, i vari modelli pre
sentano prezzi differenti e diverse prestazioni. Inoltre, una particolare architettura pu
perdurare per m olti anni e caratterizzare un buon numero di modelli, mentre la sua orga
nizzazione cambia al variare della tecnologia. Un esempio importante rappresentato dal
larchitettura eYlBM System/370, introdotta per la prima volta nel 1970, che ha caratte
rizzato svariati modelli. Lacquirente con modeste pretese poteva comprare un modello pi
lento ed economico, ma al crescere delle esigenze poteva passare a modelli pi costosi e ve
loci senza dover abbandonare il software gi sviluppato. Nel corso degli anni IBM ha in
trodotto svariati nuovi modelli basati su tecnologie superiori, offrendo allacquirente mag
giore velocit, minor costo o entrambe le cose. I modelli pi recenti hanno mantenuto la
stessa architettura, in m odo da proteggere gli investimenti software da parte degli utenti.
Incrcdibilmente, larchitettura del System/370 sopravvissuta, con qualche ritocco, fino a
oggi come architettura della linea di prodotti mainframe di IBM.
Nella classe dei microcomputer la relazione tra architettura e organizzazione molto
stretta. I cambiamenti tecnologici non solo influenzano lorganizzazione, ma implicano
lintroduzione di architetture pi potenti e complesse. In questo caso il vincolo di com
patibilit tra generazioni successive meno stringente. Dunque, esiste una maggiore inte
razione tra le decisioni di progettazione architetturale e organizzativa. Un interessante
esempio a tale riguardo dato dai sistemi RISC, che esamineremo nel Capitolo 13.
Questo libro analizza sia lorganizzazione sia larchitettura dei calcolatori, ma lat
tenzione si concentra maggiormente sul primo aspetto. Tuttavia, poich lorganizzazione
di un elaboratore deve essere progettata per implementare particolari specifiche architet
turali, una trattazione completa dellorganizzazione richiede anche un dettagliato esame
del larchi tettura.

1.2

Struttura e funzione

Un calcolatore un sistema complesso: gli odierni elaboratori contengono milioni di


componenti elettronici elementari. Come possibile descriverli con chiarezza? La chiave
risiede nel riconoscere la natura gerarchica dei calcolatori [SIM96]. Un sistema gerar
chico un insieme di sottosistemi correlati, ciascuno dei quali, a sua volta, di struttura
gerarchica, fino a quando non si giunge al livello pi basso dei sottosistemi elementari.

1.2 Struttura e funzione

Questa natura gerarchica dei sistemi complessi essenziale sia per la loro progetta
zione sia per la loro descrizione. Il progettista ha bisogno, di volta in volta, di trattare con
un particolare livello del sistema. Il com portam ento a ogni livello dipende solo da una ca
ratterizzazione semplificata c astratta del sistema al livello immediatamente pi basso.
A ogni livello il progettista ha a che fare con struttura e funzione.
Struttura: il modo in cui i com ponenti sono correlati.
Funzione: Fazione di ciascun singolo componente come parte della struttura.
In termini di descrizione si pu partire dal basso e costruire una descrizione completa, op
pure partire da una visione dinsieme e scomporre il sistema nei suoi sottocomponcnti.
Esperienze compiute in molti campi suggeriscono che il m etodo top-down il pi chiaro
ed efficace [WE1N75].
Pertanto, in questo libro il sistema rappresentato dal calcolatore sar descritto dalI alco verso il basso: dai componenti principali di un elaboratore (descrivendone struttu
ra e funzione) via via verso i livelli inferiori della gerarchia. La parte restante del paragrafo
fornisce ima succinta panoramica di questo programma.

Funzione
Sia la struttura sia il funzionamento di un calcolatore sono essenzialmente semplici. La
Figura 1.1 illustra le funzioni basilari che un elaboratore pu eseguire. In termini genera
li, esse sono quattro:
elaborazione dei dati {data processing)
memorizzazione dei dati (data storage)
trasmissione dei dati (data movement)
controllo (contro!)
II calcolatore, ovviamente, deve essere in grado di elaborare i dati. Qiiesti ultimi si posso
no presentare in ima grande variet di forme, e la gamma di requisiti per il loro trattamento
vasta. Tuttavia, vedremo che esistono solo pochi, fondamentali metodi (o tipi) di ela
borazione dati.
Risulta, inoltre, fondamentale che un calcolatore memorizzi i dati. Anche se lelabo
ratore sta trattando i dati al volo (ad esempio, i dati entranti vengono elaborati e gene
rano un risultato immediatamente disponibile), il calcolatore deve immagazzinare tem
poraneamente quelle parti di dati che di volta in volta vengono elaborate. Dunque, ci deve
essere quanto meno una funzione di memorizzazione a breve termine dei dati. Fatto ugual
mente importante, il calcolatore esegue una funzione di memorizzazione a lungo termi
ne. I file di dati vengono immagazzinati nellelaboratore per successivi reperimenti e ag
giornamenti.
Il calcolatore deve essere in grado di trasferire dati con il mondo esterno. Lambiente
operativo dellelaboratore consiste in meccanismi che operano sia come sorgenti sia come
destinazioni dei dati. Quando questi vengono ricevuti o trasmessi a un dispositivo (devi
ce) direttam ente connesso al calcolatore, il processo detto di input-output (I/O ) e il di-

Panoramica Capitolo 1 - Introduzione

Ambiente operativo
(origine e destinazione dei dati)

Figura 1.1

V isio n e fu n z io n a le del calco la to re.

spositivo detto periferica [peripheral). Quando i dati vengono trasmessi su lunghe di


stanze, da o verso un dispositivo remoto, il processo viene chiamato comunicazione di da
ti (data communication) .
Infine, ci deve essere il controllo di queste tre funzioni. In definitiva, questo control
lo viene esercitato da chi determina le istruzioni del calcolatore. Airinterno dellelaboratore presente ununit di controllo che, in risposta alle istruzioni, ne amministra le risor
se c orchestra le prestazioni delle sue parti funzionali.
A questo livello generale di trattazione, il numero di possibili operazioni che posso
no essere effettuate esiguo. La Figura 1.2 illustra i quattro possibili tipi di operazioni. Il
calcolatore pu funzionare come dispositivo di trasferimento dati (Figura 1.2a), sempli
cemente spostando i dati da una periferica o da una linea di comunicazione a unaltra, e pu
anche lavorare come dispositivo di memorizzazione (Figura 1.2b), con dati trasferiti dal
lesterno verso la memoria dellelaboratore (scrittura), e viceversa (lettura). Gli ultimi due
diagrammi m ostrano operazioni inerenti allelaborazione dei dati, sia immagazzinati
(Figura 1.2c) sia in circolazione tra memoria e ambiente esterno (Figura 1.2d).

1.2 Struttura e funzione

Figura 1.2

O p erazio ni del calco latore.

Panoramica Capitolo 1 - Introduzione

Figura 1.3

II calco latore.

La precedente discussione pu sembrare eccessivamente generica. certamente possibi


le, perfino al livello pi alto della struttura del calcolatore, differenziare una variet di fun
zioni ma, per citare [SIEW82] :
C e ben poco da fare per adattare un calcolatore al compito da eseguire. Il mo
tivo profondo risiede nella natura assolutamente generale dei calcolatori in cui
Tunica forma di specializzazione funzionale avviene al momento della pro
grammazione e non del progetto.
Struttura

La Figura 1.3 costituisce la rappresentazione pi semplice possibile di un calcolatore.


Lelaboratore interagisce in qualche modo con il proprio ambiente esterno. In generale, tut
ti i collegamenti con lambiente esterno possono essere classificati come dispositivi peri
ferici o linee di comunicazione. In seguito tratteremo entrambi i tipi di collegamento.
Tuttavia, linteresse del libro incentrato sulla struttura interna del calcolatore, che
mostrata al livello pi alto nella Figura 1.4.
Si riconoscono quattro componenti strutturali principali:
unit centrale di elaborazione (CPU), che controlla loperato del calcolatore e ne
esegue le funzioni di elaborazione (spesso identificata con il processore);
memoria centrale, che immagazzina i dati;
I / O, che trasferisce i dati tra calcolatore c ambiente esterno;
interconnessioni di sistema, che si occupano della comunicazione tra CPU, me
moria centrale e I /O. Un esempio comune di interconnessione di sistema il bus di
sistema, composto da una serie di conduttori ai quali si collegano tutti gli altri com
ponenti.
Di ciascuno dei componenti citati se ne trovano imo o pi esemplari. Tradizionalmente
troviamo una singola CPU, ma nella Parte 5 del testo verranno presentati e discussi alcu
ni problemi di progettazione relativi ai sistemi multiprocessore.

1.2 Struttura e funzione

'X
\
UNITA DI
7 Logica di \ CONTROLLO
scqucnzializ- ]
/azione

I----_

/^ R eg istri '
Idi controllo e
^decodificatori

Memoria
di controllo

Figura 1.4

II calco la to re: struttura di livello superiore.

Tutti questi componenti saranno esaminati in dettaglio nella Parte 2. Tuttavia, per i no
stri scopi, loggetto pi interessante, e per certi versi pi complesso, la CPU, i cui princi
pali componenti sono:
unit di controllo, che controlla il susseguirsi delle operazioni;
unit aritmetico-logica (ALU), responsabile della elaborazione dei dati;
registri, che costituiscono la memoria interna della CPU;
interconnessioni, meccanismi che attuano la comunicazione tra unit di control
lo, ALU e registri.

Panoramica Capitolo 1 - Introduzione

Ciascuno di questi componenti sar esaminato in dettaglio nella Parte 3, dove vedremo che
la complessit viene incrementata dalluso di tecniche di parallelismo e pipelining. Infine,
evidenziamo che tra i vari approcci allimplementazione dellunit di controllo, il pi co
mune la microprogrammazione. In sostanza, ununit di controllo microprogrammata
opera eseguendo microistruzioni che ne definiscono la funzionalit. Con questo approc
cio la struttura dellunit di controllo (che verr esaminata nella Parte 4) pu essere rap
presentata come nella Figura 1.4.

1.3

Parole chiave, domande di revisione

Parole chiave

architettura di un
calcolatore
bus di sistema
input-output (I/O)
memoria centrale

organizzazione di un
elaboratore
processore
registri

unit aritmetico-logica
(ALU)
unit centrale di
elaborazione (CPU)
unit di controllo

Domande di revisione
1. 1 Qual in termini generici la distinzione tra Iorganizzazionc di un calcolatore e la
sua architettura?
1.2 Qual la differenza tra struttura e funzione di un calcolatore?
1.3 Quali sono le quattro funzioni principali di un calcolatore?
1.4 Elencate e descrivete brevemente le principali componenti della struttura di un cal
colatore.
1.5 Elencate e descrivete brevemente le principali componenti strutturali di un pro
cessore.

Capitolo 2

Evoluzione e prestazioni
del calcolatore

Punti chiave

Levoluzione dei Evoluzione e prestazioni del calcolatorecalcolatori stata carat


terizzata Hallaum ento della velocit del processore, dalla dim inuzione delle di
m ensioni dei com ponenti e dallaum ento della dimensione della m em oria e del
la velocit di I/O .

Un fattore responsabile del grande increm ento di velocit del processore rap
presentato dalle m inori dimensioni dei suoi com ponenti. Tuttavia, il vero guada
gno in velocit degli ultimi anni deriva dallorganizzazione del processore, con lin
tenso uso di tecniche di pipelining, di esecuzione parallela e di esecuzione
speculativa, che anticipa lesecuzione di istruzioni che potrebbero essere successi
vamente richieste. Queste tecniche m irano a m antenere il processore im pegnato
per il m aggior tem po possibile.

Un problem a critico nella progettazione dei sistemi di elaborazione il bilancia


m ento delle prestazioni dei vari elementi, di m odo che i guadagni di prestazione
in un'area non siano penalizzati da un ritardo in altre. Per compensare questo sfa
sam ento vengono utilizzate varie tecniche, tra cui cache, bus di m em oria pi lar
ghi e chip di m em oria pi sofisticati.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

niziam o il nostro studio sui calcolatori presentandone brevemente la storia che, oltre a
risidtarc interessante di per se stessa, fornisce anche una panoramica della struttura e del
la funzione del calcolatore. Affronteremo, in seguito, il problema delle prestazioni. La
constatazione che necessario un utilizzo bilanciato delle risorse del calcolatore fornisce
un contesto utile in tutto il libro. Infine, daremo un rapido sguardo allevoluzione dei due
sistemi adottati nel testo come esempi chiave: le famiglie Intel x86 e ARM.

2.1

Breve storia dei calcolatori

La prima generazione: i tubi a vuoto


EN lAC

Il Breve storia dei calcolatoriprimo calcolatore elettronico digitale al m ondo stato


ENIAC (Electronic Numerical IntegratorAnd Computer), progettato e costruito presso la
University o f Pennsylvania. Il progetto ha avuto origine in risposta alle necessit belliche
degli Stati Uniti durante la Seconda Guerra Mondiale. Il Ballistics Research Laboratory
(BRL)1responsabile dello studio della gittata e delle tabelle di tiro delle nuove armi, ave
va difficolt nel produrre tali tabelle con precisione e in tempi ragionevoli. Senza le tabel
le di tiro, le nuove armi erano del tutto inutili. Il BRL assunse oltre duecento persone per
risolvere le equazioni balistiche necessarie usando calcolatrici da scrivania, ma la prepara
zione delle tabelle per ima singola arma avrebbe occupato una persona per molte ore, per
fino per giorni.
John Mauchly, un professore di ingegneria elettrica presso la University o f
Pennsylvania, e John Eckert, un suo allievo, proposero di costruire per queste applicazio
ni un calcolatore usando la tecnologia dei tubi a vuoto.
Nel 1943 lesercito accett la proposta: inizi cos il lavoro su E N IAC. La macchina
risultante era enorme: pesava 30 tonnellate, occupava unarea di circa 450 m 2, conteneva pi
di 18000 tubi a vuoto e consumava 140 Kilowatt di energia. ENIAC era per pi rapida di
qualsiasi altro elaboratore elettromeccanico, essendo capace di 5000 addizioni al secondo.
EN IA C era una macchina decimale e non binaria, nel senso che i numeri erano rap
presentati e manipolati in forma decimale. La sua memoria consisteva di 20 accumulatori, capaci di contenere un numero decimale a 10 cifre. Ciascuna cifra era rappresentata da
un anello di 10 tubi a vuoto. In ogni dato istante, solo un tubo a vuoto era nello stato ON,
rappresentando cos una delle 10 cifre. Linconveniente principale consisteva nella neces
sit di dover procedere a una programmazione manuale, impostando interruttori e con
nettendo e disconnettendo cavi.
Completato nel 1946, troppo tardi per essere utilizzato a scopi bellici, il suo primo
compito fu lesecuzione di complessi calcoli per determinare la fattibilit della bomba a
idrogeno. Ladozione con finalit diverse da quelle per cui era stato costruito ne evidenzi,
per, la versatilit di applicazione.
ENIAC continu a operare sotto la direzione del BRL fino al 1955.
La macchina di von Neumann

Il compito di predisporre e modificare i programmi per ENIAC era estremamente tedio


so. Il processo di programmazione avrebbe potuto essere semplificato se il programma fos-

2.1 Breve storia dei calcolatori

CPU Unit centrale di elaborazione

Figura 2.1

Struttura del calco la to re IAS.

se stato rappresentato in una forma adatta per la memorizzazione come per i dati. Cos un
calcolatore avrebbe potuto prelevare le proprie istruzioni dalla memoria e i programmi
avrebbero potuto essere avviati o modificati impostando semplicemente i valori di una por
zione di memoria.
Questa idea, nota come concetto di programma memorizzato (storcd-progt'am concept),
viene solitamente attribuita ai progettisti di ENIAC, c in particolare al matematico John von
Neumann, un consulente del progetto ENIAC. Alan Turing svilupp lidea quasi contem
poraneamente. La prima pubblicazione in merito (1945) contiene la proposta di von
Neumann per un nuovo calcolatore: EDVAC (Electronic Disarte Variable Computer).
Nel 1946 von Neumann c i suoi colleghi cominciarono la progettazione di un nuo
vo elaboratore a programma memorizzato, IAS, presso FInstitute for Advanced Studies di
Princeton. Questa macchina, seppure non completata fino al 1952, rappresenta il proto
tipo di tutti i successivi calcolatori a uso generale.
La Figura 2.1 mostra la struttura generale dellelaboratore IAS (si confronti con la par
te centrale della Figura 1.4). Tale struttura consiste di:
memoria centrale, che contiene dati e istruzioni,1
unit aritmetico-logica (ALU), in grado di operare su dati binari,
unit di controllo, che interpreta le istruzioni in memoria e le manda in esecuzione,
dispositivi di I /O, azionati dallunit di controllo.

1 In questo libro, se non altrimenti specificato, il termine istruzione indica unistruzione macchina che viene diret
tamente interpretata ed eseguita da un processore e non unistruzione in un linguaggio ad alto livello come Ada o
C++, che prima di essere eseguita deve essere compilata in una sequenza di istruzioni macchina.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Questa struttura fu descritta, nelle sue linee generali, nella prima proposta di von
Neumann, che riportiamo di seguito [VONN45J.
2.2 Primo. Dato che il dispositivo e principalmente un calcolatore, dovr eseguire con
maggiore frequenza elementari operazioni di aritmetica quali: addizione, sottrazio
ne, moltiplicazione e divisione. Dunque, e ragionevole che esso debba contenere or
gani specializzati proprio per queste operazioni.
Tuttavia, si deve osservare che, mentre questo principio sembra ragionevole, il mo
do specifico di realizzarlo richiede un esame pi minuzioso [...]. In ogni caso, il di
spositivo dovr presumibilmente avere una parte centrale aritmetica che costituisca
la prima parte specifica: CA.
2.3 Secondo. Il controllo logico del dispositivo, ossia la corretta sequenza con cui ese
guire le operazioni, pu essere effettuato in modo pi efficiente da un organo centrale.
Se questo dispositivo deve essereflessibile, cio il pi possibile generico, allora occor
re fare una distinzione tra le istruzioni specifiche relative a un particolare problema
e gli organi di controllo che assicurano che le istruzioni (qualunque esse siano) ven
gano eseguite nellordine corretto. Le prime devono essere in qualche modo memo
rizzate; i secondi sono rappresentati da ben definite parti operative del dispositivo.
Tramite la locuzione controllo centrale intendiamo solo questa seconda funzione, e gli
organi che la eseguono formano la seconda parte specifica: CC.
2.4 Terzo. Ciascun dispositivo che deve eseguire sequenze di operazioni lunghe e com
plesse (e in particolare calcoli) deve avere una memoria considerevole [...].
(b) Le istruzioni che governano un problema delicato possono costituire materiale
importante, soprattutto se il codice specifico, come avviene nella maggior parte dei
casi. Questo materiale deve essere memorizzato [...].
In ogni caso, la memoria costituisce la terza parte specifica del dispositivo: M.
2.6 Le tre parti specifiche CA, C C (che insieme formano C) e M corrispondono ai neu
roni associativi nel sistema nervoso umano. Rimangono da discutere gli equivalenti
dei neuroni sensoriali (afferenti) e motorii (efferenti). Qiiesti rappresentano gli organi
di ingresso e uscita del dispositivo [...].
Il dispositivo deve essere dotato della capacit di mantenere contatti in ingresso e
uscita (sensoriali e motorii) tramite circuiti dedicati. Questi saranno chiamati mez
z i di registrazione esterna del dispositivo: R [...].
2.7 Quarto. Il dispositivo deve avere organi per trasferire [informazioni] da R alle par
ti C e M. Questi organi formano il suo sistema di ingresso, la quarta parte specifica: I.
Si vedr che meglio eseguire tutti i trasferimenti da R (attraverso I) a M e mai di
rettamente da C [...].
2.8 Q uinto. Ihdispositivo deve avere organi per i trasferimenti [...] dalle sue parti speci
fiche C e M a R . Questi organi formano la sua uscita, la quinta parte specifica: 0.
Si vedr ancora una volta che meglio eseguire tutti i trasferimenti da M (attraverso
O) a R e mai direttamente da C.
Con rare eccezioni, tutti i calcolatori odierni hanno questa stessa struttura e sono pertan
to detti macchine di von Neumann. A questo punto, vale quindi la pena descrivere breve
mente le operazioni del calcolatore IAS [BURK46]. Seguendo [HAYE98], terminologia
e notazione di von Neumann verranno quindi mutate per adeguarle pi strettamente al-

2.1 Breve storia dei calcolatori

Opcode

Indirizzo

Opcode

Indirizzo

(b) Piirola di memoria di tipo istruzione

Figura 2 .2

Formati di m emoria del Tl AS.

I uso moderno; gli esempi e le illustrazioni che accompagnano la trattazione sono basati
su questultimo testo.
La memoria di IAS consiste di 1000 locazioni, chiamate parole (words), ciascuna di
40 cifre binarie (bit).2 In queste celle sono memorizzati sia i dati sia le istruzioni. I nume
ri sono rappresentati in notazione binaria e ogni istruzione un sequenza di bit. I loro for
mati sono mostrati nella Figura 2.2.1numeri sono rappresentati da un bit di segno e da un
valore di 39 bit. Una parola di memoria pu anche contenere due istruzioni da 20 bit, cia
scuna comprendente un codice operativo (opcode) di 8 bit che specifica loperazione da ese
guire e un indirizzo a 12 bit che punta a una delle parole di memoria (numerate da 0 a 999).
Lunit di controllo preleva le istruzioni dalla memoria e le esegue una alla volta. Per
spiegare quanto detto, necessario un diagramma strutturale pi dettagliato, mostrato nel
la Figura 2.3. Questa figura illustra che sia lunit di controllo sia la ALU contengono cir
cuiti di memorizzazione, i registri, definiti come segue.
Memory buffer register (MBR) : contiene une parola che deve essere immagazzinata
in memoria, o che pervenuta alla memoria.
Memory address register (MAR): specifica lindirizzo della parola di memoria in
cui scrivere il contenuto di MBR o che deve essere trasferita in MBR.
Instruction register (IR): contiene gli 8 bit del codice operativo dellistruzione cor
rentemente in esecuzione.
Instruction buffer register (IBR) : contiene temporaneamente listruzione destra di
una parola di memoria.

2 Non esiste una definizione universale del termine parola. In generale, una parola una sequenza ordinata di byte
o bit che rappresenta lunit di informazione che pu essere memorizzata, trasmessa o elaborata allinterno di un
dato computer. Solitamente, se il processore ha mi set di istruzioni a lunghezza fissa, la lunghezza delle istruzioni
equivale alla lunghezza di una parola.

F1Snoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

U nit aritm etico-logica (A L U )

U n it di controllo

Figura 2.3

Struttura esplosa del calco latore IAS.

Program counter (PC): contiene lindirizzo della prossima coppia di istruzioni da


caricare dalla memoria.
Accumulator (AC) e multiplier quotient (M Q): contengono temporaneamente
gli operandi e i risultati parziali delle operazioni della ALU. Per esempio, il risultato
della moltiplicazione di due numeri da 40 bit c un numero da 80 bit; i 40 bit pi si
gnificativi vengono memorizzati nellAC e i meno significativi nel registro M Q l
Come mostrato nella Figura 2.4, IAS continua a ripetere il ciclo esecutivo delle istruzioni che
consta di due fasi. Durante il ciclo di prelievo (jetch cycle), il codice operativo della suc
cessiva istruzione viene caricato nellIR c la porzione di indirizzo viene caricata nel MAR.

2.1 Breve storia dei calcolatori

M(X) = contenuto della locazione di memoria di indirizzo X


(i : j) = bit da i a j

Figura 2.4

D iag ram m a di flusso p a rzia le di un'operazion e del calco la to re IAS.

QiLesta istruzione pu essere letta da IBR o pu essere ottenuta dalla memoria caricando
una parola nel MBR e poi a seguire nellIBR, nellIR e nel MAR.
Per comprendere la necessit deirindirizzamento indiretto bisogna pensare che que
ste operazioni vengono controllate da circuiti elettronici e hanno come effetto luso di li
nee dati (datapath). Per semplificare lelettronica, viene usato un solo registro per specifi
care gli indirizzi di lettura o scrittura, e un solo registro per contenere il dato da trasferire
da o verso la memoria.
Qiiando il codice operativo stato registrato ncllIR, ha inizio il ciclo di esecuzione (exe
cute cycle). Il circuito di controllo interpreta il codice operativo ed esegue listruzione, im
postando i segnali di controllo appropriati per trasferire i dati o per fare eseguire unope
razione dalla ALU.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Tabella 2.1

Istruzioni IAS.

T ipo
di istruzione

Codice
operativo

R appresentazione
sim bolica

D escrizione

Trasferimento
dati

00001010

LOAD M Q .

Scrive il contenuto del registro M Q jiellaccuihulatore


AC

00001001

LOAD M Q 1M (X)

Scrive il contenuto di M (X) in MQ_

00100001

S T O R M (X )

Scrive il contenuto dcllaccumulatorc in M(X)

00000001

LOAD M (X)

Scrive M (X) nellaccumulatore

00000010

LOAD - M ( X )

Scrive -M (X ) nellaccumulatore

00000011

LOAD |M (X )|

Scrive |M (X )| nellaccumulatore

00000100

LOAD - |M (X )|

Scrive -jM (X )| nell accumulatore

Salto
incondizionato

00001101

JU M P M(X,0:19)

Carica listruzione dalla met sinistra di M (X)

00001110

JU M P M (X,20:39)

Carica listruzione dalla met destra di M (X)

Salto
condizionato

00001111

JU M P+M (X ,0:19)

Se il numero nellaccum ulatorc non negativo, carica


listruzione dalla met sinistra di M (X)

00010000

JU M P + M (X,20:39)

Se il numero nell accumulatore non negativo, carica


listruzione dalla met destra di M (X)

00000101

A D D M (X )

Somma M (X) ad AC; pone il risultato in AC

00000111

A DD |M (X )|

Somma |M (X )| ad AC; pone il risultato in AC

00000110

SUB M (X)

Sottrae M (X ) da AC; pone il risultato in AC

00001000

SUB |M (X )|

Sottrae [M (X )| da AC; pone il risultato in AC

00001011

M U LM (X )

Moltiplica M (X) per M Qj pone i bit pi significativi


del risultato in AC e i meno significativi in MQ_

00001100

DIV M (X)

Divide AC per M (X); pone il quoziente in MQ^e il re


sto in AC

00010100

LSH

Moltiplica laccumulatore per 2 (cio fa scorrere i bit


di una posizione verso sinistra)

00010101

RSH

Divide laccumulatore per 2 (cio fa scorrere i bit di


una posizione verso destra)

00010010

ST O R M (X ,8:19)

Rimpiazza il campo indirizzo sinistro di M (X) con i


12 bit pi a destra di AC

00010011

STO R M (X,28:39)

Rimpiazza il campo indirizzo destro di M (X ) con i 12


bit pi a destra di AC

Aritmetica

Modifica
di indirizzo

Il calcolatore IAS aveva un totale di 21 istruzioni (vedi Tabella 2.1) che possono essere rag'
gruppate come segue.
Trasferimento dati: per spostare dati dalla memoria ai registri della A lL U
versa) o tra due registri della ALU.

(o

vice

Salto incondizionato: normalmente, lunit di controllo esegue istruzioni nell or


dine con cui sono registrate in memoria. Tale ordine pu essere cambiato tramite uni
struzione di salto, il che facilita la ripetizione di operazioni.

2.1 Breve storia dei calcolatori

Salto condizionato : lefFcttuazionc del salto pu dipendere da una condizione, il che


consente la presenza di punti di decisione.
Aritmetiche: operazioni eseguite dallALU.
Modifica di indirizzo: consente di manipolare gli indirizzi nellALU e poi inserirli
in istruzioni da registrare in memoria. Ci conferisce ai programmi una considere
vole flessibilit di indirizzamento.
La Tabella 2.1 presenta le istruzioni in forma simbolica, ma in realt ogni istruzione si
uniforma al formato della Figura 2.2b. I primi 8 bit del codice operativo specificano qua
le delle 21 operazioni debba essere eseguita. I restanti bit indicano quale delle 1000 loca
zioni di memoria debba essere coinvolta nellesecuzione.
La Figura 2.4 mostra esempi di esecuzione di alcune di queste istruzioni. Si noti che
ogni operazione richiede un certo numero di passi, alcuni dei quali sono piuttosto elabo
rati. La moltiplicazione richiede 39 sotto-operazioni, una per ciascun bit, eccetto quella
del bit di segno.
Calcolatori commerciali

Gli anni Cinquanta videro la nascita dell'industria dei calcolatori, con due societ a do
minare il mercato: Sperrv e IBM.
Nel 1947 Eckert e Mauchly costituirono la Eckert-Mauchly Computer Corporation,
allo scopo di produrre calcolatori. La loro prima macchina di successo fu UNIVAC I
(Universal Automatic Computer), che fu com m issionata dallUfficio Anagrafe per il
Censimento del 1950. La Eckert-Mauehly Com puter Corporation divenne parte della di
visione UNIVAC della Sperry-Rand Corporation, che continu a costruire una serie di
successori di UNIVAC I.
Questa macchina fu il primo calcolatore commerciale di successo. Come dice il no
me stesso, UNIVAC era concepito tanto per applicazioni scientifiche quanto commerciali.
Il primo documento di descrizione del sistema elencava - come esempi dei compiti ese
guibili - calcoli matriciali, problemi statistici, fatturazioni dei premi per le compagnie di
assicurazioni e problemi logistici.
U N IV A C II, che presentava una memoria pi ampia c prestazioni pi elevate rispet
to a UNIVAC I, fu immesso sul mercato alla fine degli anni Cinquanta, e mostrava carat
teristiche diventate tipiche nellindustria dei calcolatori. Innanzitutto, lo sviluppo della tec
nologia consente la costruzione di elaboratori sempre pi grandi e potenti. Secondo, i
nuovi modelli hanno la propriet della cosiddetta backward compatibility? Questo signi
fica che i programmi scritti per le macchine pi vecchie possono essere eseguiti anche su
quelle nuove. Tale strategia mira a conservare la propria fetta di mercato: quando un clien
te decide di comprare un nuovo calcolatore sar invogliato a rivolgersi alla stessa societ
se potr evitare di gettare al vento i precedenti investimenti sostenuti per il software.
La divisione UNIVAC intraprese anche lo sviluppo della serie 1100, che avrebbe do
vuto costituire la sua principale fonte di guadagno. Questa serie evidenzia una significati
va distinzione per quel periodo. Il primo modello, UNIVAC 1103, e i suoi successori fu

3 Dal punto di vista dei vecchi sistemi lo stesso concetto viene definito upward compatibility.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

rono per molci anni pensaci principalmente per applicazioni scientifiche, caratterizzate da
lunghi e complessi calcoli. Altre societ si concentrarono su applicazioni commerciali che
richiedevano lelaborazione di un elevato numero di dati testuali. Tale distinzione, ora in
larga parte scomparsa, rimase evidente per un ragguardevole numero di anni.
IBM, che era il principale produttore di macchine per schede perforate, propose nel
1953 il suo prim o calcolatore elettronico a programma memorizzato: 701, concepito fon
damentalmente per applicazioni scientifiche [BASH81]. Nel 1955 IBM introdusse un
prodotto affine, 702, che aveva molte caratteristiche adatte alle applicazioni commerciali.
Questi furono i primi esemplari della longeva serie di calcolatori 700/7000, con cui
IBM divenne il principale produttore di calcolatori.

La seconda generazione: i transistor


La prima rivoluzione nel m ondo dei calcolatori elettronici dovuta alla sostituzione dei
tubi a vuoto con i transistor. Il transistor pi piccolo, pi economico, dissipa meno ca
lore delle valvole, e pu essere usato esattamente come le valvole per costruire elaborato
ri. A differenza dei tubi a vuoto, il transistor un dispositivo allo stato solido, fatto di silicio.
Il
transistor fu inventato nei laboratori di ricerca della Bell nel 1947 e nel decennio
successivo provoc una vera e propria rivoluzione elettronica. I primi calcolatori total
mente funzionanti a transistor furono immessi sul m ercato verso la fine degli anni
Cinquanta. Ancora una volta, IBM non fu la prima societ a sfruttare la nuova tecnolo
gia. I pionieri furono N C R e, con pi successo, RCA, grazie ad alcune piccole macchine a
transistor. IBM li segu a breve con la serie 7000.
Luso del transistor caratterizza la seconda generazione di calcolatori. E prassi con
sueta classificare i calcolatori in generazioni, basandosi sulla tecnologia hardware di base
adottata (Tabella 2.2). Ogni nuova generazione caratterizzata da migliori prestazioni
computazionali, memorie pi capaci e dimensioni inferiori rispetto alla precedente. Ma ci
sono anche altre differenze. La seconda generazione vide lintroduzione di unit aritmeti
co-logiche e di unit di controllo pi complesse, luso di linguaggi di programmazione ad
alto livello e la fornitura di software di sistema a corredo del calcolatore.
La seconda generazione degna di nota anche per la comparsa della Digital
Equipment Corporation (DEC). Fondata nel 1957, D EC proprio in quell anno produsse
il suo primo modello: PD P-1. Qiiesto calcolatore diede inizio al fenomeno dei minicom
puter, che sarebbero diventati cos importanti nella terza generazione.
Tabella 2.2
G enerazione

G en e ra zio n i di calco la to ri.


D ate
approssim ative

Tecnologia

Velocit caratteristica
(operazioni al secondo)

1946-1957

Tubi a vuoto

40.000

1958-1964

Transistor

200.000

1965-1971

Piccola e media scala di integrazione

1.000.000

1972-1977

Larga scala di integrazione

10.000.000

1978-1991

Grande scala di integrazione

100.000.000

1991-

Scala ultra-larga di integrazione

1.000.000.000

2.1 Breve storia dei calcolatori

IBM 7094
Dairincroduzione della serie 700 (nel 1952) alla creazione dellultimo esemplare della serie
7000 (nel 1964), questa linea di prodotti IBM sub levoluzione tipica dei prodotti infor
matici.
Gli esemplari successivi presentano migliori prestazioni, migliori capacit e/o prezzi
pi bassi.
La Tabella 2.3 mostra questa tendenza. Le dimensioni della memoria centrale, in
multipli di 210 parole a 36 bit, crebbe da 2K a 32K parole,* mentre il tempo per accedere
a una parola di memoria (memory cycle time) scese da 30 fis a 1,4 . Il numero di istruzioni
macchina aument da un modesto 24 a 185.
Lultima colonna indica la velocit della CPU. I miglioramenti nella velocit vengono
raggiunti tramite una migliore elettronica (i transistor sono pi veloci dei tubi a vuoto) e
la maggiore complessit dei circuiti. Ad esempio, IBM 7094 include un registro di backup
delle istruzioni, usato per bufferizzare listruzione successiva. A ogni ciclo esecutivo lunit
di controllo preleva dalla memoria due parole adiacenti. QiLindi, a parte la rara occorrcnza
di unistruzione di salto, il numero di accessi alla memoria per il prelievo delle istruzioni
risulta dimezzato. Questo prefetching (caricamento anticipato) riduce in m odo significa
tivo il tempo medio di esecuzione delle istruzioni.
Le restanti colonne della Tabella 2.3 diventeranno chiare nel seguito.
La Figura 2.5 mostra unelaborata configurazione (con molte periferiche) di un IBM
7094, macchina rappresentativa della seconda generazione di calcolatori [BELL71]. Tra le
molte differenze rispetto al calcolatore IAS la pi im portante e luso dei cosiddetti canali
di dati (data channels).
Un canale di dati un modulo di I / O indipendente, con un suo processore c uno spe
cifico insieme di istruzioni. In un sistema di elaborazione dotato di tale dispositivo, la CPU
non esegue direttamente le istruzioni di I/O . Qpeste infatti sono immagazzinate nella
memoria del canale per poi essere eseguite dal suo processore. La C PU d inizio allope
razione di I /O inviando lu i segnale di controllo al canale, ordinandogli cos di eseguire una
sequenza di istruzioni. Il canale esegue il suo compito indipendentemente dalla C PU e le
segnala il completamento delloperazione. Tale accorgimento solleva la C PU da un con
siderevole carico di lavoro.
Unaltra nuova caratteristica il multiplexor, che rappresenta il punto di raccordo
per i canali di dati, per la C PU e per la memoria. Il multiplexor governa laccesso alla
memoria da parte della C PU e dei canali di dati, permettendo a questi dispositivi di ope
rare indipendentemente.

La terza generazione: circuiti integrati


I transistor sono chiamati componenti discreti. Per tutti gli anni Cinquanta e i primi anni
Sessanta gli apparecchi elettronici erano costituiti in larga misura da componenti discre
ti: transistor, rcsistori, condensatori e cos via. I componenti discreti venivano prodotti se-

4 Lucilizzo di prefissi numerici come kilo (in italiano Kilo) e giga (in italiano Giga) viene discusso nel documento
di supporto (in lingua inglese) sul sito Com puter Science Student Resource, allindirizzo:
W illiam Stallings.com /StudentSupport.htm l.

26
Panoramica

Membri della Serie IBM 700/7000.

704

Tubi a
v u o to

T ubi
elettrostatici

30

2 -4

24

No

No

No

1955

Tubi a
v u o to

N uclei

12

4 -3 2

80

Si

No

No

2,5

709

1958

'Tubi a
v u o to

N uclei

12

32

140

Si

No

7090

1960

T ransistor

N uclei

2,18

32

169

UJ :

1952

Cielo
m acchina

Si

No

25

70941

1962

T ran sistor

N uclei

32

185

Si
(precisione
doppia)

Si

Si

30

7 0 9 4 II

1964

T ransistor

N uclei

1,4

32

185

Si
(precisione
doppia)

Si

Si

50

( )

Dimensione Numero
della
di codici
m em oria (K) operativi

N um ero
di registri
indice

Virgola Sovrapposi/ioni Sovrapposizioni


Velocit
m obile
nellI/O
nel prelievo
(com parata
cablata
(canali)
di istruzioni
al 701)

e prestazioni del calco la to re

701

Tecnologia
della
m emoria

j 35

Tecnologia
della CPU

Data di
prim a
consegna

2 - Evoluzione

Num ero
del m odello

Capitolo

Tabella 2.3

2.1 Breve storia dei calcolatori

Figura 2 .5

C o n fig u razio n e d e ll'IB M 70 9 4 .

paratamente e poi fissati su schede di masonite, note come schede stampate, che venivano
poi installate nei calcolatori e in altre apparecchiature elettroniche. La posa in opera di ogni
singolo transistor richiedeva il posizionamento dei tre contatti di un tubicino metallico
contenente un pezzo di silicio delle dimensioni di una capocchia di spillo sulla piastra del
circuito. Lintero ciclo produttivo era costoso e poco pratico.
Questo iniziava a creare problemi nellindustria dei calcolatori. Infatti, i primi ela
boratori della seconda generazione contenevano circa 10000 transistor, un numero che
crebbe fino alle centinaia di migliaia, rendendo sempre pi difficile la produzione di nuo
ve e pi potenti macchine.
Nel 1958 avvenne la scoperta che rivoluzion lelettronica e che diede inizio allera del
la microelettronica: linvenzione del circuito integrato. D opo una breve panoramica su
questa tecnologia ci soffermeremo su quelli che sono forse i due pi importanti esempla
ri della terza generazione, entrambi introdotti ai suoi albori: IBM System/360 c D EC
PDP-8.
M icroelettronica

Microelettronica significa letteralmente elettronica microscopica. Fin dagli albori dell elettronica digitale c dellindustria dei calcolatori ce stata tuia consistente e continua ten
denza verso la miniaturizzazione dei circuiti digitali. Prima di esaminare le implicazioni e
i benefici di questa tendenza, dobbiamo dire qualcosa sulla natura dcllclettronica digitale.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Ingressi

Uscite

Celia di
memoria
(binaria)

Ingressi

ik

Lettura
Segnale di attivazione

Scrittura

(a) Porta logica

Figura 2.6

(b) Cella di memoria

Elem enti fondam entali di un calco latore.

Gli elementi fondamentali di un calcolatore digitale, come sappiamo, eseguono la me


morizzazione, il trasferimento, lelaborazione dei dati e varie funzioni di controllo. I com
ponenti fondamentali sono di due tipi (Figura 2.6): porte logiche [gate) e celle di memo
ria (memory celt). Una porta (logica) un dispositivo che esegue una semplice funzione
booleana o logica, come ad esempio: SEyfE B SO N O VERI ALLORA CE VERO (por
ta AND). Tali dispositivi sono chiamati porte perche controllano il flusso di dati esatta
mente come le chiuse di un corso dacqua. La cella di memoria un dispositivo in grado
di memorizzare un bit; in altre parole essa si pu trovare in ogni momento in uno dei suoi
due stati stabili. I calcolatori sono costruiti mediante la interconnessione di un grandissi
mo numero di questi dispositivi fondamentali. Possiamo correlare questo discorso alle no
stre quattro funzioni di base.
Memorizzazione dati: fornita dalle celle di memoria.
Elaborazione dati: eseguita dalle porte logiche.
Trasferimento dati : le connessioni tra i componenti vengono usati per i trasferimenti
da memoria a memoria, sia in modo diretto sia attraverso porte logiche.
Controllo: le connessioni tra componenti possono trasportare segnali di controllo.
Per esempio, una porta logica avr uno o due ingressi per i dati pi un segnale di con
trollo che la attiva. Quando il segnale di controllo ON, la porta esegue la sua fun
zione sugli ingressi e produce unuscita. In modo simile, la cella di memoria imma
gazziner il bit che si trova sul suo ingresso quando il segnale di scrittura e O N e
invier sulla sua connessione duscita il bit presente nella cella quando il segnale di let
tura ON.
Dunque un calcolatore consiste di porte logiche, celle di memoria e mutue interconnessioni.
A loro volta le porte c le celle sono costituite da semplici componenti elettronici digitali.
Il
circuito integrato si basa sul fatto che i transistor, i rcsistori e i conduttori possono
essere realizzati a partire da un semiconduttore come il silicio. Fabbricare un intero circuito
su un unico pezzo di silicio piuttosto che assemblare componenti discreti, costituiti da pez
zi di silicio separati, in uno stesso circuito c una mera estensione dello stato dellarte. Su una
sola piastrina di silicio possono essere realizzati molti transistor. Fatto altrettanto impor
tante, questi transistor possono essere connessi tramite un processo di metallizzazione per
formare circuiti.

2.1 Breve storia dei calcolatori

Figura 2 .7

R elazio n e tra wafer, chip e porta.

La Figura 2.7 mostra i concetti chiave di un circuito integrato. U n sottile dischetto di si


licio, detto wafer, viene suddiviso in tante piccole superfici di pochi millimetri quadrati su
cui viene realizzato lo stesso circuito. Quando separate, ognuna di queste piccole superfi
ci costituisce un chip. Ogni chip composto da molte porte e/o celle di memoria pi un
certo numero di contatti esterni (pin) che sono chiamati in gergo piedini. Il chip viene im
ballato in un alloggiamento di protezione da cui escono i contatti per il collegamento ai
dispositivi esterni. Per produrre circuiti pi grandi e complessi possibile interconnette
re un certo numero di questi componenti sulla piastra di un circuito stampato.
Inizialmente, solo poche porte e celle di memoria potevano essere prodotte in mo
do affidabile e assemblate assieme. QiLesti primi circuiti integrati sono generalmente in
dicati dalfacronimo SSI (small-scale integration) che significa integrazione a piccola scala. Col
passare del tempo divenne possibile integrare nello stesso chip sempre pi componenti.
Questa crescita di densit illustrata nella Figura 2.8: si tratta di una delle tendenze tec
nologiche di maggiore rilievo.5La figura riflette la famosa legge di Moorc. Gordon Moore,
uno dei fondatori di Intel, nel 1965 [M OOR65], osserv che il numero di transistor che

5 Si noci che per gli assi verticali utilizzata una scala logaritmica. Per unintroduzione alle scale logaritmiche si ve
da il documento di ripasso della matematica elementare sul sito Com puter Science Student Support, allindirizzo:
W illiam Stallings.com /StudentSupport.htm l.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

1 miliardo
di transistor

Figura 2 .8

C rescita del num ero di transistor nella C P U [B O H R 0 3 ].

potevano essere integrati in un singolo chip stava raddoppiando ogni anno e previde cor
rettamente che questo ritmo di crescita sarebbe continuato nel limmediato futuro. Nella
sorpresa generale, Moore incluso, tale ritmo continu anno dopo anno, decennio dopo de
cennio. Nel 1970 il fenomeno rallent e da allora il raddoppio avviene ogni 18 mesi.
Le conseguenze della legge di Moore sono profonde.
1. Durante questo periodo di rapida crescita della densit, il prezzo dei chip rimasto
virtualmente inalterato. Ci significa che i costi dei circuiti logici di memoria sono
crollati drasticamente.
2. Poich gli clementi logici e di memoria su chip pi densamente integrati sono pi vi
cini, la lunghezza dei percorsi elettrici risulta abbreviata, il che implica un incre
mento della velocit operativa.
3. Il calcolatore diventa pi piccolo, rendendone pi agevole il posizionamento in una
grande variet di ambienti.
4. Si ha una riduzione nei requisiti di alimentazione c di raffreddamento.
5. Le interconnessioni dei circuiti integrati sono molto pi affidabili delle saldature.
Disporre di pi circuiti all'interno dello stesso chip significa avere meno intercon
nessioni tra i chip.

2.1 Breve storia dei calcolatori

IBM System/360

Fino al 1964, grazie alla sua serie 7000, IBM ebbe una salda presa sul mercato dei calcola
tori. In quell anno la societ annunci la nuova famiglia di elaboratori System/360. La no
tizia, seppur di per s non sorprendente, conteneva alcune novit spiacevoli per i clienti
IBM: la linea di prodotti 360 era incompatibile con le precedenti macchine IBM c la tran
sizione alla serie 360 sarebbe stata difficile per i vecchi clienti. Questo fu un passo ardito
da parte di IBM, ma la societ ritenne necessario rompere con alcuni vincoli dellarchitettura 7000 e produrre un sistema al passo con la nuova tecnologia dei circuiti integrati [PADE81, GIFF87].
La strategia ebbe successo sia da un punto di vista economico sia tecnico. Il 360 rap
present il successo del decennio e consolid IBM nella posizione di produttore domi
nante, con una quota di mercato superiore al 70 per cento. Con alcune modifiche ed esten
sioni, larchitettura dei mainframe6 IBM tuttora quella del System/360. Esempi d uso di
questa architettura possono essere ritrovati in tutto il testo.
Il
System/360 fu la prima famiglia di computer pianificata a livello industriale. La fa
miglia copriva un vasto campo di prestazioni e prezzi. La Tabella 2.4 mostra alcune delle
caratteristiche chiave dei vari modelli nel 1965 (ciascun membro della famiglia viene con
traddistinto da un numero di modello). I modelli erano tra loro compatibili, nel senso che
un programma scritto per un modello poteva essere eseguito da un altro modello della se
rie, con la sola differenza dei tempi di esecuzione.
Il
concetto di famiglia di calcolatori compatibili fu innovativo c di enorme succes
so. Un cliente con richieste modeste e lui budget lim itato poteva iniziare con il poco co
stoso Modello 30. In seguito poteva passare a una macchina pi potente senza sacrificare
Tinvestimento nel software gi sviluppato.
Tabella 2.4

C aratteristiche salienti della fam iglia System /360.

C aratteristiche

M odello 30

M odello 40

M odello 50

M odello 65

M odello 75

Dimensione massima
della memoria (byte)

64K

256K

256K

512K

512K

Tasso di trasferimento
dalla memoria (Mbyte/s)

0,5

0,8

2,0

8,0

16,0

Ciclo del processore ( s)

1,0

0,625

0,5

0,25

0,2

Velocit relativa

3,5

10

21

50

Numero massimo
di canali per i dati

Tasso di trasferimento
dati su un canale
(Kbyte/ s)

250

400

800

1250

1250

' Il termine mainframe viene utilizzato per i calcolatori pi grandi e potenti che non siano supercomputer. Le loro
caratteristiche tipiche sono il supporto di un grande database, un elaborato hardware di I/O e luso in una strut
tura centrale di elaborazione dati.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Ecco le caratteristiche di una famiglia di calcolatori.


Istruzioni macchina. Linsieme di istruzioni macchina supportato dai membri del
la famiglia molto simile e in molti casi esattamente lo stesso. In tal modo un pro
gramma eseguibile su un dispositivo lo sar anche su ogni altro. In alcuni casi, i m o
delli di fascia bassa dispongono di un sottoinsieme delle istruzioni dei modelli di
fascia alta. Qiiesto significa che i programmi sono compatibili verso lalto ma non ver
so il basso.
Sistema operativo. Lo stesso sistema operativo di base c disponibile per tutti i mem
bri della famiglia. In alcuni casi, ai membri di fascia pi alta vengono aggiunte ulte
riori caratteristiche.
Velocit. La frequenza di esecuzione delle istruzioni cresce dalla fascia pi bassa a
quella pi alta.
I/O . Il numero di porte di I / O cresce dalla fascia pi bassa a quella pi alta.
Dim ensione della memoria. La dimensione della memoria centrale cresce al pas
sare dalle fasce pi basse a quelle pi alte.
Prezzo. In uno stesso periodo temporale il costo dei sistemi incrementa al crescere
della fascia.
Come si pu realizzare tale concetto? Le differenze si basano su tre fattori: velocit di base,
dimensione e grado di simultaneit [STEV64]. Ad esempio, si possono ottenere maggiori
velocit di esecuzione di una data istruzione tramite luso di circuiti pi complessi ncllALU,
consentendo cos di eseguire in parallelo le sotto-operazioni. Un altro metodo per aumen
tare la velocit consiste nellincrcmcntarc la larghezza di banda del bus di memoria (il colle
gamento tra la memoria centrale e la CPU). Nel Modello 30 poteva essere prelevato dalla me
moria centrale solo un byte (8 bit) alla volta, mentre nel Modello 75 i byte diventano 8.
Il
System/360 non solo dett il futuro di IBM, ma ebbe anche un profondo impat
to sullintero comparto industriale. Molte delle sue caratteristiche sono diventate standard
su altri grandi calcolatori.

DEC PDP-8
Nello stesso anno in cui IBM consegn il primo System/360, vi fu un altro esordio di gran
de importanza: PDP-8. Nellepoca in cui un calcolatore medio richiedeva unintera stan
za climatizzata, PDP-8 (soprannominato minicomputer dalla stessa DEC, in omaggio alla
creazione della minigonna) era abbastanza piccolo da poter stare su un banco di labora
torio. Il PDP-8 non era in grado di svolgere tutte le funzioni dei mainframe ma, costando
solo 16000 dollari, era abbastanza economico da poter essere acquistato da ogni labora
torio. Al contrario, i System/360 costavano centinaia di migliaia di dollari.
Tra laltro, il basso prezzo e le piccole dimensioni del PDP-8 consentirono ad altre im
prese di realizzare e commercializzare sistemi di elaborazione pi complessi, imperniati sul
calcolatore della DEC. Nacque cos un importante settore deHindustria dei calcolatori, il
cosiddetto mercato O EM {original equipment manufacturers, manifattura di prodotti ori
ginali).
Il
PDP-8 fu un immediato successo e fece la fortuna di DEC. Questa macchina c i
successivi membri della famiglia (vedi Tabella 2.5) raggiunsero il livello di produzione
precedentemente riservato ai calcolatori IBM, con circa 50000 esemplari venduti ncllar-

2.1 B revesto riad eica lco lato ri

Tabella 2.5

Evo luzio n i del PD P-8 [V O EL881.

________

Costo del processore +


Tasso
Consegnato
4K parole
di trasferimento
laprim a
di memoria a 12 bit dati dalla memoria
Modello
volta
(in migliaia di dollari)
(parole/ s)

Volume
(in piedi Innovazioni
cubi)
e migliorie

PDP-8

4/65

16,2

1,26

8,0

Produzione automatica ad av
volgimento di cavo

PDP-8/5

9/66

8,79

0,08

3,2

Implementazione seriale delle


istruzioni

P D P -8/1

4/68

11,6

1,34

8,0

Integrazione su media scala

PDP-8/L

11/68

7,0

1,26

2,0

M inor ingombro

PDP-8/E

3/71

4,99

1,52

2,2

Omnibus

PDP-8/M

6/72

3,69

1,52

1,8

Ingombro dimezzato

PDP-8/A

1/75

2,6

1,34

1,2

Memoria a semiconduttori;
processore in virgola mobile

co di 12 anni. Come afferma la storia ufficiale di D E C 1il PDP-8 stabil il concetto di mi


nicomputer, segnando la strada per unindustria multimiliardaria Esso impose DEC co
me principale venditore di minicomputer, e, al tempo in cui PDP-8 raggiunse il termine
della propria vita utile, D EC era il secondo produttore di calcolatori, dopo IBM.
In contrasto con larchitettura a commutatore centrale (Figura 2.5) usata da IBM sui
propri sistemi 700/7000 e 360, i pi recenti modelli di PDP-8 adottavano una struttura che
ora praticamente universale per minicomputer c microcalcolatori: la struttura a bus (ve
di Figura 2.9). Il bus del PDP-8, chiamato Omnibus, consiste di 96 linee separate, usate per
trasportare segnali di controllo, indirizzi c dati. Poich tutti i componenti del sistema
condividono un insieme comune di lince per i segnali, il loro uso deve essere controllato
dalla CPU. Questa architettura molto flessibile, in quanto consente di inserire moduli
sul bus per creare varie configurazioni.

Le successive generazioni
La definizione delle successive generazioni di calcolatori c pi controversa. La Tabella 2.2
suggerisce una quarta e una quinta generazione, basate sui progressi nella tecnologia dei cir
cuiti integrati. C on lintroduzione dellintegrazione su larga scala (LSI, large-scale
integration), su un chip si possono ottenere pi di 1000 componenti. Lintegrazione su lar
ghissima scala (VLSI, very-large-scale integration) raggiunge il traguardo dei 10000 com
ponenti per chip, ma oggi lintegrazione su scala ultra-larga (ULSI, ultra-large-scale inte
gration) pu alloggiare oltre un milione di componenti su un singolo chip.

Figura 2.9

Struttura del bus in un calco latore PD P-8.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Con la rapida evoluzione della tecnologia, la frequente immissione di nuovi prodot


ti sid mercato e limportanza crescente del software e delle comunicazioni rispetto alThardware, la classificazione in generazioni si fa meno chiara e significativa. Menzioniamo
qui due tra i pi importanti risultati.
Memorie a semiconduttori

La prima applicazione della tecnologia dei circuiti integrati nel campo dei calcolatori fu
la costruzione del processore a partire dai chip integrati, ma ben presto la stessa tecnolo
gia fu adottata per costruire le memorie.
Negli anni Cinquanta e Sessanta, la maggior parte delle memorie dei calcolatori ve
niva costruita a partire da minuscoli anelli di materiale ferromagnetico, del diametro di cir
ca I /16 di pollice. Qticsti anelli venivano appesi a griglie di sottili fili sospesi aUmtemo del
calcolatore. Magnetizzato in un senso, lanello (chiamato nucleo o core) rappresentava
un 1; magnetizzato nellaltro verso, indicava uno 0. Le memorie a nuclei magnetici erano
piuttosto veloci; la lettura di un bit richiedeva circa un milionesimo di secondo. Ma era
no costose, ingombranti ed erano soggette alla cosiddetta lettura distruttiva: la semplice
azione di lettura cancellava il dato memorizzato nel nucleo. Era dunque necessario instal
lare circuiti per ripristinare i dati immediatamente dopo la loro estrazione.
Cos, nel 1970, la Fairchild produsse la prima memoria a semiconduttori relativa
mente capiente. Questi chip potevano contenere 256 bit di memoria. La lettura non era
distruttiva ed era molto pi veloce: soltanto 70 miliardesimi di secondo per la lettura di
un bit. Tuttavia il costo per bit era pi alto rispetto alle memorie a nucleo.
Nel 1974 avvenne un fenomeno degno di nota: il prezzo per bit delle memorie a se
miconduttore scese al di sotto di quello delle memorie a nucleo. Negli anni successivi il
prezzo delle memorie continu a diminuire c la loro densit ad aumentare. Ci ha permesso
la costruzione di macchine pi piccole, pi veloci, c con tanta memoria quanta ne aveva
no i calcolatori pi grandi e costosi di appena pochi anni prima. Gli sviluppi nella tecno
logia delle memorie, cos come nella tecnologia dei processori, cambiarono la natura dei
calcolatori in meno di dieci anni. Sebbene gli elaboratori ingombranti e costosi rimanga
no una parte del panorama, il calcolatore ora alla portata dellutente finale, nella forma
di macchina da ufficio e personal computer (PC).
Dal 1970 a oggi le memorie a semiconduttori sono passate attraverso 13 generazio
ni: 1K, 4K, 16K, 64K, 256K, 1M, 4M, 16M, 64M, 256M, I G, 4G e, al momento della pre
sente pubblicazione, 16Gbit su un unico chip (IK = 210, IM = 220, IG = 230). Ogni gene
razione presenta il quadruplo della densit rispetto alla precedente, e costi unitari e tempi
daccesso via via inferiori.
Microprocessori

Proprio come per i chip di memoria, la densit nei chip del processore ha continuato a cre
scere. Con il passare del tempo, fu possibile posizionare su ciascun chip un numero sem
pre crescente di clementi. Di conseguenza, per costruire un singolo processore furono ri
chiesti sempre meno chip.
Nel 1971, quando la Intel svilupp il suo 4004, si ebbe un importante passo avanti.
Si trattava del primo chip singolo che conteneva tu tti i componenti di una CPU: fu la na
scita del microprocessore.
Il 4004 pu sommare due numeri da 4 bit ed esegue le moltiplicazioni tramite addi

2.1 Brevestoria dei calcolatori

zioni ripetute. Per gli standard odierni, il 4004 senza dubbio rudimentale, ma segn l'i
nizio della continua evoluzione dei microprocessori.
Qpesto processo pu essere apprezzato pi facilmente considerando il numero di bit
che il processore tratta alla volta. Non esistendo una precisa determinazione di tale valo
re, forse la migliore misura lampiezza del bus dati: il numero di bit di dati che possono
essere immessi o emessi dal processore in un dato istante. Unaltra misura data dal numero
di bit neHaccumulatore o nei registri a uso generale. Spesso, ma non sempre, tali misure
coincidono: ad esempio, vennero sviluppati microprocessori che operavano su numeri a l
bit presenti nei registri, ma che potevano leggere c scrivere solo 8 bit per volta.
Un ulteriore, importante passo nell evoluzione dei microprocessori fu la nascita, nel
1972, dellIntel 8008. Si trattava del primo microprocessore a 8 bit. Nessimo di questi passi
avrebbe comunque avuto limpatto del successivo evento: lintroduzione nel 1974 dellIntel
8080, il primo microprocessore dutilizzo generale. Mentre il 4004 e 8008 erano stati proget
tati per applicazioni specifiche, 8080 era stato progettato per essere la CPU di un generico mi
crocalcolatore. Esso era, come 8008, un microprocessore a 8 bit; per era pi veloce, presen
tava un repertorio di istruzioni pi ricco e aveva una vasta capacit di indirizzamento.
Contemporancamcntevennero sviluppati i primi microprocessori a 16 bit. Tuttavia mi
croprocessori a 16 bit potenti e generali apparvero solo alla fine degli anni Settanta. Uno di
questi era 8086. Il gradino successivo in quest evoluzione si ebbe nel 1981, quando sia i la
boratori Bell sia la Hewlett-Packard svilupparono un microprocessore a chip singolo e a 32
bit. E nel 1985 lIntel lanci sul mercato il suo microprocessore a 32 bit, 80386 (Tabella 2.6).

Tabella 2 .6

E vo lu zio n e dei m icroprocessori Intel (co ntinua).

Processori degli anni 70


4004

8008

8080

8086

8088

1971

1972

1974

1978

1979

108 KHz

108 KHz

2 MHz

5 M H z, 8 M Hz,
10 M Hz

5 MHz,
8 MHz

Anno di introduzione
Clock

4 bit

OO

.
.N>

Ampiezza del bus

'O

(a)

Numero di transistor
(micron)

8 bit

8 bit

16 bit

8 bit

3500

6000

29.000

29.000

(0

(3)

64Kbvce

IM B

IM B

Dimensione dei transistor ([un) 10


Memoria indirizzabile

640 byte

16 Kbyte

(3)

(b) Processori degli anni 80


386T M DX

386T M SX

486T M DX C P U

1982

1985

1988

1989

6 M H z12,5 M H z

16 M H z-3 3 M H z

16 M H z-3 3 M H z

25 M H z-5 0 M H z

80286
Anno di introduzione
Clock
Ampiezza del bus
Numero di transistor

16 bit

32 bit

16 bit

32 bit

134.000

275.000

275.000

1.200.000

0,8-1

16 MB

4 GB

16 MB

4 GB

IG B

64 TB

64 TB

64 TB

8 KB

Dimensione dei transistor ([m) 1,5


Memoria indirizzabile
Memoria virtuale
Cache

36

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Tabella 2.6

Evo luzio n e dei m icroprocessori Intel.

(c) Processori degli anni 90


486T M SX
Anno di introduzione
Clock

Pentium Pro

Pentium II

1991

1993

1995

1997

16 M H z33 M Hz

60 M H z166 M Hz

150 M H z200 M H z

200 M H z300 M Hz

32 bit

32 bit

64 bit

64 bit

1,185 milioni

3,1 milioni

5,5 milioni

7,5 milioni

Ampiezza del bus


Numero di transistor

Pentium

Dimensione dei transistor () 1

0,8

0,6

0,35

Memoria indirizzabile

4 GB

4 GB

64 GB

64 GB

Memoria virtuale

64 TB

64 TB

64 TB

64 TB

8 KB

8KB

512 KB LI e I MB L2

512K B L 2

P entium III

Pentium 4

C ore 2 D uo

C ore 2 Q iiad

1999

2000

2006

2008

450-660 M Hz

1,3-1,8 G H z

1,06-1,2 G H z

3 G Hz

64 bit

64 bit

64 bit

64 bit

95 milioni

42 milioni

167 milioni

820 milioni

180

65

45

64 GB

64 GB

64 GB

Cache
(d) Processori recenti
Anno di introduzione
Clock
Ampiezza del bus
Niunero di transistor

Dimensione dei transistor (nm) 250


Memoria indirizzabile
Memoria virtuale
Cache

2.2

64 GB
64 TB

64 TB

64 TB

64 TB

512KB L2

256 KB L2

2 MB L I

6 MB L2

Progettazione in funzione delle prestazioni

Anno Progettazione in funzione delle prcstazionidopo anno, il prezzo dei calcolatori con
tinua a calare drasticamente, di pari passo con laum cnto delle loro prestazioni. Oggi, per
meno di 1000 euro, possibile acquistare al supermercato un personal computer che sur
classa le prestazioni di un mainframe IBM di dicci anni fa. Pertanto disponiamo di potenza
di elaborazione virtualmente illimitata. Qiicsta continua rivoluzione tecnologica ha per
messo lo sviluppo di applicazioni di stupefacente complessit e potenza. Per citare alcuni
esempi, le applicazioni da scrivania che richiedono la grande potenza degli odierni mi
croprocessori includono:
elaborazione di immagini
riconoscimento vocale
videoconfercnza
authoring multimediale
memorizzazione di documenti audio-video
modelli di simulazione

2.2 Progettazione in funzione delle prestazioni

Le odierne workstation (stazioni di lavoro da ufficio) supportano applicazioni scientifiche


e ingegneristiche altamente sofisticate, sistemi di simulazione e applicazioni grafiche e vi
deo. Inoltre, quasi tutte le transazioni commerciali si basano su server sempre pi potenti
che supportano le imponenti reti chc hanno rimpiazzato i vasti centri di calcolo degli an
ni passati.
Dal punto di vista del lorganizzazione e dellarchitettura dei calcolatori, la cosa affa
scinante chc da un lato i blocchi costitutivi di base dei miracolosi elaboratori moder
ni sono praticamente gli stessi di IAS. D altro canto le tecniche per ottenere le massime pre
stazioni dai materiali sono diventate sempre pi sofisticate.
Questa osservazione serve come linea guida nella presentazione di questo libro. Nel trat
tare i vari elementi e componenti di un calcolatore si perseguono due obicttivi. Primo, il te
sto spiega le fondamentali funzionalit nelle aree considerate e, secondo, il libro esplora le tec
niche richieste per ottenere le massime prestazioni. Nella parte restante di questa sezione
sottolineiamo alcuni dei fattori basilari per la progettazione in funzione delle prestazioni.

Velocit del microprocessore


Ci che conferisce ai processori Intel x86 o ai mainframe IBM la loro sbalorditiva potenza
computazionale !implacabile sfida in termini di velocit tra i produttori di processori.
Levoluzione di queste macchine continua a rispettare la legge di Moore, per cui i co
struttori possono approntare ogni tre anni una generazione di chip con il quadruplo dei
transistor. Nei chip di memoria ci ha quadruplicato ogni triennio la capacit della me
moria dinamica ad accesso casuale (DRAM, dynamic raidom-access memory), chc c anco
ra la tecnologia fondamentale per la memoria centrale dei calcolatori. Nei microproces
sori, lintroduzione di nuovi circuiti e laumento di velocit dovuto alla loro ridotta distanza
ha migliorato le prestazioni di quattro o cinque volte ogni tre anni, c questo fin dal lancio
della famiglia Intel x86 nel 1978.
Ma la velocit grezza del microprocessore non pu essere sfruttata a pieno se non
alimentata con un costante flusso di lavoro, cio di istruzioni macchina. Tutto ci che in
tralcia lo scorrimento di questo flusso mina la potenza del processore. Di conseguenza,
mentre i produttori di chip apprendevano come realizzare processori di densit sempre cre
scente, i progettisti ideavano tecniche pi elaborate per nutrire il mostro. Tra le tecniche
implementate nei moderni processori citiamo le seguenti.
Predizione dei salti: il processore guarda avanti tra le istruzioni prelevate dalla me
moria e decide quali diramazioni o gruppi di istruzioni saranno elaborati con mag
gior probabilit. Se la predizione si avvera, il processore pu prelevare in anticipo le
istruzioni corrette e memorizzarle in modo da rimanere occupato. Gli esempi pi so
fisticati di questa strategia predicono non solo la prossima diramazione ma i salti mul
tipli. Dunque, la predizione dei salti incrementa il carico di lavoro disponibile per le
secuzione da parte del processore.
Analisi del flusso di dati: il processore analizza la dipendenza delle istruzioni dai ri
sultati di altre istruzioni o dai dati, al fine di creare una schedulazionc ottimizzata del
le istruzioni. Queste ultime vengono organizzate in modo da essere eseguite appena
possibile, indipendentemente dall'originario ordine nel programma. Ci previene
ritardi non necessari.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

MH/

Figura 2 .1 0

V ariazio n e d e lle prestazioni di C ircu iti logici e M em oria [B O R K 0 3 ].

Esecuzione speculativa: utilizzando queste due tecniche, alcuni processori eseguo


no in modo speculativo alcune istruzioni che si trovano pi avanti nel codice, salvan
do i risultati in locazioni temporanee. Ci consente al processore di essere il pi oc
cupato possibile, eseguendo istruzioni chc in seguito saranno probabilm ente
necessarie. QirLeste e altre sofisticate tecniche consentono di sfruttare la velocit grez
za del processore.

Bilanciamento delle prestazioni


M entrela potenza del processore cresciuta rapidamente, altri componenti critici del cal
colatore non hanno seguito lo stesso ritmo di sviluppo. Ne risultata la necessit di trova
re un equilibrio nelle prestazioni per compensare uno scarto tra le potenzialit dei vari
componenti.
Fra tutti, il problema pi delicato si manifesta nellinterfaccia tra il processore c la me
moria centrale. Si consideri quanto mostrato nella Figura 2.10. Mentre la velocit del pro
cessore e la capacit della memoria sono cresciute rapidamente, la velocit di trasferi
mento dati tra loro si notevolmente attardata. Linterfaccia tra processore e memoria
centrale il percorso pi cruciale nellintero calcolatore, dato che responsabile del tra
sporto di un flusso costante di istruzioni macchina e di dati. Se la memoria o il collega
mento non riescono a tenere il ritm o delle insistenti domande del processore, qucstultimo si trova in uno stato di attesa, perdendo prezioso tempo di elaborazione.

2.2 Progettazione in funzione delle prestazioni

Esistono varie alternative per affrontare questo problema. Riportiamo alcuni esempi.
Incrementare il numero di bit che di volta in volta vengono letti rendendo le DRAM
pi ampie anzich pi profonde e usando bus pi larghi.
Cambiare linterfaccia con la DRAM per renderla pi efficiente, includendo una ca
che7 o altri schemi di buffering sul chip della DRAM.
Ridurre la frequenza degli accessi alla memoria, incorporando strutture cachc sem
pre pi complesse ed efficienti tra il processore e la memoria centrale. Ci include lin
troduzione di una o pi cache sul chip del processore e una cache esterna.
Incrementare la larghezza di banda della connessione tra processori e memoria, usan
do bus a velocit pi elevata e una gerarchia di bus per bufferizzare e strutturare il flus
so di dati.
Unaltra area di particolare interesse nella progettazione c la gestione dei dispositivi di
I/O . Con lincremento di velocit e potenza dei calcolatori, si sviluppano applicazioni pi
sofisticate che supportano luso di periferiche con pesanti richieste di operazioni di I /O.
La Figura 2.11 fornisce alcuni esempi di periferiche tipicamente in uso su PC e work
station. Le attuali generazioni di processori sono in grado di gestire i dati forniti da que

Gigabit Kthernet
Display grafici
Dischi fssi
Ethernet
Dischi ottici
Scanner
Stampanti laser
Floppy disk
Modem
Mouse

_____________________ _______

Tastiere
IO 4

IO 5

IO6

IO 7

IO 8

IO 9

Tasso trasmissivo (bps)

Figura 2.11

T ip ic i lassi trasm issivi dei dispositivi di I/O.

7 Una cachc una memoria velocc piuttosto piccola posta tra una memoria pi grande c i circuiti che guidano 1ac
cesso a quest ultima. Le cache (trattate nel Capitolo 4) contengono dati letti di recente e hanno lo scopo di rende
re pi veloce laccesso a questi dati.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

sti dispositivi, ma rimane il problema del loro trasferimento tra il processore e la periferi
ca. Qui le strategie possibili includono schemi di caching e buffering, oltre alluso di bus pi
veloci e strutture pi elaborate. Inoltre, Fuso di configurazioni a processore multiplo pu
aiutare a soddisfare le richieste di I/O .
La chiave di tutto questo lequilibrio. I progettisti si sforzano costantemente di bi
lanciare il throughput e le richieste di elaborazione da parte dei componenti del processo
re, della memoria centrale, dei dispositivi di I/O e delle strutture di interconnessione. Per
tener testa ai due seguenti fattori di costante evoluzione, la progettazione deve continua
mente essere ripensata.
Lindice di cambiamento delle prestazioni nei vari sottosistemi (processore, bus, me
moria, periferiche) differisce enormemente da un tipo di elemento allaltro.
Le nuove applicazioni e le nuove periferiche cambiano costantemente la natura del
le richieste al sistema in termini di profilo tipico delle istruzioni c di linee di accesso
ai dati.
Quindi, la progettazione dei calcolatori una forma darte in continua evoluzione. Il te
sto cerca di presentare le basi su cui essa si fonda e fornisce un colpo docchio sullo stato
dellarte.

Miglioramento dell'architettura e dell'organizzazione dei chip


Mentre i progettisti si scontrano con il problema di bilanciare le prestazioni del processore
e quelle delle memoria centrale e degli altri componenti, permane la necessit di incre
mentare la velocit del processore. Per ottenere tale aumento si possono seguire tre ap
procci diversi.
Aumentare la velocit dellhardware del processore. Questo incremento fonda
mentalmente ottenuto riducendo la dimensione delle porte logiche nel chip del pro
cessore, cos che pi porte possano essere contenute in uno spazio pi ristretto, e au
mentando la velocit di clock. Con lawicinam ento delle porte logiche, il segnale si
propaga pi velocemente, permettendo lincremento di velocit del processore. Un
clock pi veloce permette che ogni singola istruzione sia eseguita pi rapidamente.
Aumentare la dimensione c la velocit della cache interposta tra processore e me
moria centrale. In particolare, dedicando una porzione del chip del processore alla
memoria cachc, il tempo di accesso a tale memoria si riduce in maniera significativa.
Modificare !organizzazione del processore e la sua architettura in modo da aumen
tare la velocit effettiva di esecuzione delle istruzioni. Tipicamente, ci implica lu
tilizzo di una ccrta forma di parallelismo.
I fattori dominanti nel miglioramento delle prestazioni sono tradizionalmente laumento
della velocit di clock e della densit dei circuiti logici. La Figura 2.12 illustra il trend dei
processori Intel. Va osservato chc allaumentare della velocit di clock c della densit dei
circuiti cresce il numero di ostacoli chc si incontrano [INTE()4b].
Potenza: al crescere della velocit di clock e della densit dei circuiti cresce la den
sit di potenza (W att/cm2). La difficolt di dissipare il calore generato in circuiti ad

2.2 Progettazione in funzione delle prestazioni

Hypcrthreading (multicore)

Figura 2.12

Prestazioni dei processori Intel [G IB B 0 4 J.

alta densit e alta velocit sta diventando un problema sempre pi rilevante in fase di
progettazione ([GIBB04], [BORK03]).
Ritardo RC: la velocit con cui gli elettroni passano tra i transistor all'interno di un
chip c limitata dalla resistenza e dalla capacitanza delle connessioni metalliche; in par
ticolare, il ritardo cresce man mano aumenta leffetto RC. Al diminuire delle di
mensioni dei chip le connessioni diventano pi sottili, aumentando la resistenza, e pi
vicine tra loro, aumentando la capacitanza.
Latenza di memoria: la velocit della memoria influisce negativamente sulla velo
cit del processore, come descritto in precedenza.
Per queste ragioni, al fine di migliorare le prestazioni, sar posta sempre pi attenzione al
lorganizzazione e allarchitettura del processore. La Figura 2.12 mette in evidenza i prin
cipali cambiamenti effettuati nel corso degli anni per aumentare il parallelismo e di con
seguenza lefficienza computazionale dei processori. Le tecniche utilizzate saranno discusse
nei prossimi capitoli.

41

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

A partire dalla fine degli anni 80 e durante i 15 anni successivi, oltre al semplice au
mento della velocit di clock, sono state adottate principalmente due strategie per il mi
glioramento delle prestazioni. Per prima cosa cc stato im incremento della capacit della
cachc. Al giorno doggi tra il processore c la memoria principale ci sono due o tre livelli di
cache. Al crescere della densit dei circuiti nei chip sempre pi memoria cache stata in
corporata nel chip del processore, permettendo un accesso alla memoria molto pi velo
ce. Per esempio, nei primi processori Pentium il 10% dellarea del chip era dedicato alla me
moria cache, mentre nei chip dei pi recenti Pentium 4 lo spazio per la cache corrisponde
a circa la met del chip.
In secondo luogo, la logica di esecuzione delle istruzioni allinterno del processore
diventata sempre pi complessa, cos da permettere Icscciizionc parallela delle istruzioni.
Due approcci degni di nota sono stati il pipelining e le architetture supcrscalari. Una pi
peline lavora in m odo simile alla catena di montaggio di una fabbrica, permettendo cio
Icsecuzione contemporanca di diverse fasi dcllcsccuzionc di istruzioni distinte. Un pro
getto superscalare permette essenzialmente pipeline multiple allinterno di un singolo pro
cessore, in m odo che le istruzioni che non dipendono le une dalle altre possano essere ese
guite in parallelo. Queste soluzioni hanno ormai raggiunto il punto di evoluzione in cui il
vantaggio che possibile ottenere in termini di prestazioni non pi proporzionato alle
modifiche necessarie per ottenerlo. Lorganizzazione interna dei processori attuali estre
mamente complessa e in grado di realizzare un notevole parallelismo nel flusso di istru
zioni. Sembra verosimile che ulteriori migliorie in questa direzione sarebbero relativa
mente modeste [GIBB04]. Con tre livelli di cache sul chip del processore, ognuno dei quali
con una notevole capacit, anche i benefici ottenibili dalla cache sembrano aver raggiun
to un limite.
Nonostante ci, affidarsi semplicemente allincremento della frequenza di clock per
ottenere un miglioramento delle prestazioni porta al problema della dissipazione di po
tenza di cui gi abbiamo parlato. Pi grande la frequenza di clock, maggiore la poten
za chc occorre dissipare, e pi ci si avvicina ai limiti fisici.
Avendo presenti tutte queste difficolt, i progettisti si sono diretti verso un approc
cio completamente nuovo: mettere sullo stesso chip pi processori e una memoria cache
pi grande e condivisa. Lutilizzo di pi processori sullo stesso chip (detti anche sistemi a
core multipli o, pi comunemente, multicore) d la possibilit di migliorare le prestazio
ni senza aumentare la frequenza di clock. Alcuni studi hanno mostrato che allinterno di
un processore Tincremento delle prestazioni proporzionale alla radice quadrata dellaumento della complessit [BORK3]; se per i programmi sono in grado di supportare lu
tilizzo effettivo di pi processori, raddoppiando il numero di processori anche le presta
zioni raddoppiano. La strategia dunque quella di usare due processori pi semplici
piuttosto chc aumentare la complessit di un singolo processore.
Inoltre, limpiego di due processori giustifica !utilizzo di memorie cache pi capien
ti. Un fatto chc vale la pena notare che il consumo di potenza delle memorie molto mi
nore rispetto a quello del processore. Per il prossimo futuro possiamo aspettarci che la mag
gior parte dei nuovi chip sar di tipo multicore.

2.3 Evoluzione dell'architettura Intel x86

2.3

Evoluzione dell'architettura Intel x86

In rutto il testo, per illustrare i concetti e per evidenziare i compromessi, ci riferiamo a mol
ti esempi concreti. La maggior parte di questi tratta da due famiglie di calcolatori: la
Intclx86 e larchitettura ARM. Lattuale offerta x86 rappresenta il risultato di decenni di
sforzi nella progettazione di sistemi CISC. La famiglia x86 incorpora i sofisticati principi
di progettazione un tempo riservati ai mainframe e ai supercomputer e offre un esempio
eccellente dellarchitettura CISC. Larchitcttura ARM c utilizzata in unampia gamma di
sistemi embedded ed una delle architetture pi potenti c meglio progettate presenti sul
mercato.
Una breve panoramica di questi due sistemi viene presentata in questo paragrafo c nel
successivo.
In termini di quote di mercato, Intel stata per decenni il principale produttore di
microprocessori di sistemi non embedded, posizione che difficilmente ceder nellimme
diato futuro. Levoluzione del suo pi importante microprocessore rappresenta un buon
indicatore dellevoluzione tecnologica dei calcolatori.
La Tabella 2.6 mostra questa evoluzione. Intel era solita produrre un nuovo micro
processore ogni quattro anni ma, per tenere a distanza i rivali, conta di abbreviare di uno
o due anni i tempi di sviluppo. Cos ha fatto con la pi recente generazione x86.
Vale la pena di elencare alcuni dei capisaldi dellevoluzione della linea dei prodotti
Intel.
8080: il primo microprocessore ad uso generale. Si trattava di una macchina a 8 bit
con bus dati a 8 bit. Fu usato nel primo personal computer, FAltair.
8086: molto pi potente, a 16 bit. O ltre a un bus dati e registri pi larghi, dispone
va di una cachc per accodare istruzioni prima che fossero eseguite. Una variante di
questo processore, il modello 8088, venne impiegata nel primo personal computer
IBM, assicurando il successo di Intel. Il modello 8086 c il primo esemplare con ar
chitettura x86.
80286: questa estensione del modello 8086 consentiva lindirizzamento di ima me
moria da 16 Mbyte invece chc da 1 Mbyte.
80386: la prima macchina Intel a 32 bit fu una sostanziale revisione del prodotto.
Grazie allarchitettura a 32 bit, raggiunse la complessit e la potenza dei minicom
puter e dei mainframe in uso solo pochi anni prima. Fu il primo processore Intel a sup
portare il multitasking.
80486: in questa versione furono utilizzate tecnologie cache pi sofisticate e un raffi
nato pipelining delle istruzioni. Offriva anche un coprocessorc matematico incor
porato, che liberava la C PU principale dalle complesse operazioni matematiche.
Pentium: con il Pentium vennero introdotte tecniche superscalari che permettono
lesecuzione contemporanea di pi istruzioni.
Pentium Pro: questo modello svilupp il concetto di organizzazione superscalarc
iniziato col Pentium, tramite luso intensivo di rinominazionc di registri, predizione
dei salti, analisi del flusso di dati ed esecuzione speculativa.

44

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Pentium II : incorporava la tecnologia Intel M M X, per lelaborazione efficiente di da


ti video, audio e grafici.
Pentium III: il linguaggio macchina del Pentium III contiene istruzioni aggiuntive
in virgola mobile per supportare il software grafico 3D.
Pentium 4: il Pentium 4 include ulteriori istruzioni in virgola mobile e altri miglio
ramenti per la multimedialit.8
Core: e il primo microprocessore Intel x86 di tipo dual core, cio con due proces
sori su un singolo chip.
Core 2: il Core 2 implementa larchitettura a 64 bit. Il Core 2 Qiiad dispone di quat
tro processori su un singolo chip.
Oltre 30 anni dopo la sua introduzione nel 1978, larchitettura x86 continua a dominare
il mercato dei processori per sistemi non embedded. Anche se lorganizzazione e la tecno
logia dei modelli x86 drasticamente cambiata in questi decenni, larchitettura del set di
istruzioni ha mantenuto la compatibilit con le prime versioni. Un programma scritto per
le versioni pi vecchie di questa architettura pu quindi essere eseguito anche sulle nuo
ve. Le modifiche al set di istruzioni hanno riguardato nuove aggiunte, ma nessuna istru
zione stata eliminata. Nel corso di questi ultimi 30 anni sono state aggiunte circa uni
struzione al mese [ANTH08] e ora il set di istruzioni ne comprende circa 500.
Larchitettura x86 ci d una visione eccellente dellcvoluzionc dcllhardware dei com
puter negli ultimi 30 anni. L8086, introdotto nel 1978, aveva 29000 transistor e una fre
quenza di clock di 5 MHz. Un Intel Core 2 Quad del 2008 lavora a una frequenza di 3 GHz
(incremento di un fattore 600) e ha 820 milioni di transistor (circa 28000 volte quanti ne
aveva 18086). Ciononostante, linvolucro del Core 2 ha una dimensione di poco superio
re a quello dell8086 e i costi dei due processori sono simili.

2.4

Sistemi embedded e ARM

Larchitettura ARM ha origine da principi di progetto di tipo RISC e viene utilizzata in


sistemi embedded. Il Capitolo 13 esamina nel dettaglio le architetture RISC. In questo pa
ragrafo daremo uno sguardo dinsieme al concetto di sistema embedded, per poi rivolge
re la nostra attenzione ai sistemi ARM.

Sistemi embedded
Quando parliamo di un sistema embedded ci riferiamo allutilizzo di elettronica e software
allinterno di un prodotto, in contrapposizione a sistemi a utilizzo generale (general-purpo
se), come i desktop o i portatili. Una buona definizione di sistema embedded la seguente.9

9 Con il Pentium 4 Intel pass dalla numerazione romana a quella araba per indicare il numero del modello.
9 Michael Barr, Embedded Systems Glossary. NetrinoTechnical Librar)7. http://w w w .netrino.com /Publications/
Glossa ry/index.php.

2.4 Sistemi embedded e ARM

Tabella 2 .7 Esem pi di sistemi em bedded e loro m ercato [N O ERQ 5).


M ercato
Automobilistico

Dispositivo
Sistema di accensione
Controllo del motore
Sistema frenante

Elettronica di consumo

Televisione digitale e analogica


DVD, videoregistratori, decoder
Dispositivi palmari (PDA)
Elettrodomestici (frigoriferi, tostapane, microonde)
Automobili
Giochi
Telefoni/cellulari/cercapersone
Macchine fotografiche
GPS

Controllo industriale

Robotica e sistemi di controllo per la produzione industriale


Sensori

Medicina

Pompe a infusione
Macchine per dialisi
Dispositivi protesici
M onitor cardiaci

Office automation

Fax
Fotocopiatrici
Stampanti
M onitor
Scanner

Una combinazione di hardware e sofiware, ed eventualmente di altre componenti


meccaniche, progettata per assolvere a un compito specifico. In molli casi i sistemi em
bedded sono parte di un sistema o di un prodotto pi grande, come nel caso del siste
ma A B S di unautomobile.
I sistemi embedded sono di gran lunga pi diffusi dei computer general-purpose, perch
vengono utilizzati in una vastissima gamma di applicazioni (Tabella 2.7). Tali sistemi pos
sono avere una grande variet di requisiti e vincoli, come nei casi seguenti [GRIM05J:
sistemi piccoli e grandi implicano vincoli differenti in termini di costi di produzio
ne, e quindi necessit diverse per quanto riguarda ottimizzazione e riutilizzo;
sono soggetti a vincoli molto restrittivi e a combinazioni diverse di requisiti di qua
lit, ad esempio in termini di sicurezza, affidabilit, risposta in tempo reale, flessibi
lit e rispetto delle normative vigenti;
tempo di vita da breve a lungo;

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Software
Sistemi ausiliari
(alimentazione,
raffreddamento)

Ambiente esterno

Figura 2.13

Possibile o rg an izzazio ne di un sistema em bedded.

diverse condizioni ambientali in termini di radiazioni, vibrazioni e umidit, solo per


citare alcuni esempi;
differenti caratteristiche delle applicazioni, che possono essere statiche o dinamiche,
lente o veloci, rivolte al calcolo o a un utilizzo intensivo dcllin ter faccia, c/o combi
nazioni di queste;
diversi modelli di computazione (solitamente chiamati sistemi ibridi) chc variano dai
sistemi a eventi discreti a sistemi con dinamiche a tempo continuo.
Spesso i sistemi embedded sono strettamente relazionati al contesto di utilizzo. Questo pu
dare origine a vincoli di real-time imposti dalla necessit di interagire con il contesto. 1vin
coli, come la velocit di movimento, la precisione delle misurazioni e il periodo di tempo
richiesti impongono una precisa temporizzazione delle operazioni da eseguire. Se pi at
tivit devono essere svolte simultaneamente, i vincoli di real-time saranno pi restrittivi.
La Figura 2.13, basata su [KOOP96], mostra in termini generali lorganizzazione di
un sistema embedded. Oltre a processore c memoria vi e un certo numero di elementi chc
normalmente non sono utilizzati nei computer desktop o portatili:
tuia variet di interfacce che permette al sistema di misurare, manipolare e interagi
re con lambiente esterno;
linterfaccia con lutente pu essere molto semplice, come una spia lampeggiante,
ma anche molto complicata, come una vista robotica in tempo reale;

2.4 Sistemi embedded e ARM

la porca per la diagnostica c utilizzabile per esaminare il sistema che viene controlla
to, non solo per la diagnosi del computer;
dispositivi logici programmabili {VGK,field programmablegate array), specifici per
applicazioni (ASIC, application specific integrated circuit) o hardware non digitale so
no utilizzabili per migliorare prestazioni e sicurezza;
il software ha spesso funzionalit prefissate ed specifico per una data applicazione.

Evoluzione di ARM
ARM una famiglia di microprocessori e microcontrollori di tipo RISC, progettati da
ARM Inc. di Cambridge (Inghilterra). ARM progetta processori e architetture multicore e d in licenza i progetti ad aziende esterne che li producono. I chip ARM sono pro
cessori ad alta velocit famosi per le piccole dimensioni e la bassa potenza richieste. Gli
ARM vengono usati in maniera massiccia in computer palmari (PDA) e altri dispositivi
portatili, inclusi videogiochi, telefoni e unampia variet di prodotti di consumo. Ad esem
pio, i ben noti dispositivi Apple iPod e iPhone contengono dei chip ARM. Larchitettura
ARNI e probabilmente la pi diffusa nei sistemi embedded e dunque i chip ARM sono an
che i processori pi diffusi al mondo.
Le origini della tecnologia ARJvI vanno ricondotte alla inglese Acorn Computers.
Allinizio degli anni 80 Acorn stipul un accordo con British Broadcasting Corporation
(BBC) per lo sviluppo di un nuovo microprocessore per il progetto BBC Computer
Literacy. Il successo di questo accordo permise alla Acorn di continuare nello sviluppo e
progettare il primo processore RISC commerciale, lAcorn RISC Machine (ARM). La pri
ma versione, A RM I, divenne operativa nel 1985 e fu utilizzata per ricerche interne e svi
luppo, oltre a essere utilizzata come coprocessore nel progetto per la BBC. Sempre nel
1985, Acorn rilasci TARM2, un processore delle stesse dimensioni del precedente, ma pi
veloce e con pi funzioni. Ulteriori migliorie furono realizzate con il processore ARM3
(1989).
Durante questo periodo Acorn affid alla societ VLSI Technology la fabbricazio
ne dei suoi chip. VLSI poteva commercializzare i chip, ed ebbe un grande successo nel con
vincere altre aziende a montare processori ARM nei loro prodotti, in particolare come pro
cessori embedded.
Il
progetto ARM andava incontro alla domanda commerciale di processori per ap
plicazioni embedded ad alte prestazioni, bassi consumi, piccole dimensioni e costi conte
nuti, ma ulteriori sviluppi andavano oltre le capacit della Acorn. Fu cos creata una nuo
va societ, la ARM Ltd., che vedeva la partecipazione di Acorn, VLSI e Apple Computer.
Acorn RISC Machine fu rinominata Advanced RISC Machine.10 Il primo prodotto of
ferto dalla nuova societ fu ARM6, una versione migliorata di ARM3. In seguito, la societ
introdusse diverse nuove famiglie di processori, con sempre pi numerose funzionalit e
migliori prestazioni. La Tabella 2.8 mostra alcune caratteristiche delle diverse famiglie di

10 La societ abbandon la denominazione Advanced RISC Machine alla fine degli anni 90. Al giorno doggi tale
architettura conosciuta semplicemente come ARM.

48

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Tabella 2 .8

Evoluzione di ARM .

Famiglia

Funzionalit rilevanti

Cachc

ARMI

32-bit RISC

No

ARM 2

Istruzioni di moltiplicazione e scambio; unit di ge


stione della memoria, grafica e processore I/O inte
grati

No

MIPS tipico (5> MHz

"M IPS @ 12 M Hz

ARM3

Primo utilizzo della cache del processore

4KB unificata

12 MIPS @ 25 MHz

ARM6

Primo a supportare indirizzi a 32 bit; unit floating


point (virgola mobile)

4KB imificata

28 MIPS @ 33 M Hz

ARM7

SoC integrato

8KB unificata

60 MIPS @ 60 M Hz

ARM8

Pipeline a 5 stadi; predizione statica dei salti

8KB unificata

84 MIPS @ 72 MHz

16 KB/16 KB

300 MIPS @ 300 M Hz

ARM9E

Istruzioni DSP migliorate

16K B/16K B

220 MIPS @ 200 M Hz

ARMlOE

Pipeline a 6 stadi

32 KB/32 KB

ARJvll 1

Pipe-line a 9 stadi

Variabile

740 MIPS @ 665 M H z

Cortex

Pipeline supcrscalare a 13 stadi

Variabile

2000 MIPS @ I GHz

XScale

Processore per le applicazioni; pipeline a 7 stadi

32 KB/32 KB
LI 512KBL2

1000 MIPS @1,25 GHz

ARM9

Nota: DSP =Processore del segnale digitale (digirai signal processor); SoC = sistema su chip (system on a chip)

architetture ARM. I numeri della tabella sono solamente indicativi; i valori reali variano
a seconda delle differenti implementazioni.
Conformemente a quanto descritto sul sito web di ARM (arm.com), i processori
ARM sono progettati per soddisfare tre diverse categorie di sistemi:
sistemi embedded real-time: sistemi di memorizzazione, comparto automobilisti
co e industriale, applicazioni di rete;
piattaforme applicative: dispositivi chc utilizzano sistemi operativi come Linux,
Palm OS, Symbian OS e Windows CE per applicazioni wireless e di intrattenimen
to digitale;
applicazioni per la sicurezza: smart card, SlM card e terminali Bancomat.

2.5

Valutazione delle prestazioni

Nella valutazione dcllhardware di un processore e nella definizione dei requisiti di un


nuovo sistema le prestazioni sono tra i fattori chiave da tenere in considerazione, insieme
a costo, dimensioni, sicurezza, affidabilit e, in alcuni casi, ai consumi.
difficile effettuare confronti significativi tra diversi processori, anche tra processo
ri di ima stessa famiglia. La velocit pura molto meno importante del modo in cui un pro-

2.5 Valutazione delle prestazioni

ccssore si comporta con una data applicazione. Sfortunatamente le prestazioni rispetto al


le applicazioni non dipendono solo dalla velocit del processore, ma anche dal set di istru
zioni, dalla scelta del linguaggio di programmazione, dall efficienza del compilatore e dal
labilit del programmatore chc ha implementato lapplicazione.
Incominciamo questo paragrafo con uno sguardo rivolto ai metodi tradizionali di mi
surazione della velocit del processore. Esamineremo poi gli approcci pi comuni per va
lutare le prestazioni di un calcolatore c di un sistema di calcolo. Continueremo quindi con
una discussione su come unire i risultati ottenuti in diversi test. Infine, vedremo che cosa
si ottiene considerando la legge di Amdahl.

Velocit di clock e numero di istruzioni al secondo


Il clock di sistema. Le operazioni effettuate da un processore, come il fetch di unistru
zione, la sua decodifica, lesecuzione di operazioni aritmetiche e cos via sono governate dal
clock di sistema. Tipicamente, ogni operazione inizia con limpulso del clock. La velocit
di un processore quindi dettata, prima di tutto, dalla frequenza degli impulsi prodotti dal
clock, misurata in cicli al secondo, o in Hertz (H z).
Di solito i segnali del clock sono generati da un cristallo di quarzo in grado di pro
durre un segnale d onda costante. Tale onda viene convertita in un flusso di impulsi digi
tali che alimentano costantemente la circuiteria del processore (Figura 2.14). Ad esempio,
un processore a I G H z riceve 1 miliardo di impulsi al secondo. La frequenza degli impul
si chiamatafrequenza di clock (clock rate) o velocit di clock (clock speed). Un incremen
to, o un impulso, del clock chiamato ciclo di clock (clock cycle) o clock tick. Il tempo tra
due impulsi consecutivi la durata di un ciclo (cycle time).
La frequenza di clock non arbitraria, ma deve essere adeguata alle caratteristiche fi
siche del processore. Le azioni allinterno del processore richiedono linvio di segnali da un

Figura 2.14

O ro lo g io di sistem a (clo ck).

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

elemento del processore a un altro. Quando viene inviato un segnale all'interno del pro
cessore necessario un intervallo di tempo prima che la tensione si assesti e renda possi
bile la lettura accurata di un valore (1 oppure 0). Inoltre, a seconda delle caratteristiche fi
siche del processore, alcuni segnali possono cambiare pi rapidam ente di altri. Le
operazioni vanno quindi sincronizzate e calibrate affinch siano disponibili i valori elettrici
(la tensione elettrica) appropriati per ogni operazione.
Lesecuzione di unistruzione richiede un certo numero di passi distinti, come il fetch
dellistruzione dalla memoria, la decodifica delle varie parti dellistruzione, il caricamen
to e/o la memorizzazione di dati e lesecuzione di operazioni aritmetiche e logiche. Alcune
istruzioni hanno bisogno di pochi cicli, altre ne richiedono dozzine. Inoltre, con lutilizzo
di pipeline, diverse istruzioni vengono eseguite contemporaneamente. Se ne deduce che
un mero confronto tra velocit di clock di diversi processori non sar in grado di dire tu t
to quello che serve sulle prestazioni.
Frequenza di esecuzione delle istruzioni. Un processore guidato da un clock a fre
quenza costanteJ ot equivalentemente, a cycle time costante r, dove = H f Definiamo /
per un dato programma, come il numero di istruzioni macchina eseguite dal programma
fino al suo completamento (o per un intervallo di tempo fissato). Si noti che tale numero
e il numero di istruzioni eseguite, non il numero di istruzioni chc costituiscono il codice
oggetto del programma. Un parametro importante il numero medio di cicli per istru
zione di un programma, indicato con CPI. Se ogni istruzione richiedesse lo stesso nume
ro di cicli di clock, allora C P Isarebbe un valore costante. Invece, in generale, il numero di
cicli di clock per istruzione varia a seconda del tipo di istruzione (istruzioni di load, sto
re, branch e cos via). Sia CTY il numero di cicli richiesti per il tipo di istruzione /, e sia / il
numero di istruzioni di tipo / eseguite da un dato programma. Possiamo allora calcolare
il valore CPI come segue:

C Pl - - - (7 ' X

(2.0

Ac
U tempo T richiesto da un processore per eseguire un programma dato da:
T = Ic X C P I X
Possiamo raffinare questa espressione considerando che durante lesecuzione di unistru
zione una parte del lavoro svolta dal processore e una parte del tempo richiesta dal tra
sferimento di parole tra processore e memoria. In questultimo caso il tempo di trasferi
mento dipende dal cycle time della memoria, chc pu essere maggiore rispetto a quello del
processore. Riscriviamo dunque la precedente formula come:

P = h x [p + (m X )] x T
dove p il numero di cicli necessario per decodificare ed eseguire unistruzione, m il nu
mero di riferimenti alla memoria e k il rapporto tra il cycle time della memoria c quello del
processore. I cinque fattori di prestazione nella precedente relazione (/,/>, m, k, r) sono in
fluenzati da quattro caratteristiche del sistema: il progetto del set di istruzioni (noto co
me larchitettura del set di istruzioni), la tecnologia del compilatore (lefficienza del com-

2.5 Valutazione delle prestazioni

Tabella 2 .9

Fattori di prestazione e attributi del sistem a.


/C

A rch itettu ra del set d i istruzioni

Tecnologia del com pilatore

Im plem entazione del processore

?n

X
X

Cache e gerarchia di m em oria

pilatorc nella generazione del codice in linguaggio macchina partendo dal codice ad alto
livello), Timplcmcntazione del processore e la gerarchia di memoria e cache. La Tabella 2.9,
basata su [HWAN93], una matrice in cui una dimensione mostra i cinque fattori di pre
stazione e laltra le quattro caratteristiche del sistema. Una X in una cella indica una ca
ratteristica di sistema chc ha effetto su un dato fattore. Una misura comune delle perfor
mance di un processore la frequenza con cui le istruzioni sono eseguite, espressa in milioni
di operazioni al secondo (MIPS, millions ofinstructions per second) e chiamata M IP S rate.
Possiamo esprimere il MIPS rate in termini di frequenza di clock e C P Icome segue:
/
f
MIPS rate = ----- - = ------ -------7
T X IO6 C P I X IO6

(2.2)

Si consideri ad esempio una esecuzione di un programma che consiste nell esecuzione di


2 milioni di istruzioni su un processore a 400 M Hz. Il programma composto da quattro
tipologie principali di istruzioni. La frequenza delle diverse istruzioni e il CPI di ogni
istruzione, ottenuti mediante un esperimento di tracciamento del !esecuzione, sono:
CPI

Frequenza

Aritmetico/logica

60%

Load/store dati nella cache

18%

Branch

12%

Riferimenti a memoria (cache miss)

10%

T ip o d i istruzione

II CPI medio ottenuto con i dati della tabella e con il programma eseguito su un sistema
monoprocessore e CPI = 0,6 + (2 X O118) + (4 X 0,12) + (8 x 0 ,1 ) = 2,24. Il MIPS rate cor
rispondente c (400 X IO6) / (2,24 x IO6) 178.
Un altro comune strumento per misurare le prestazioni dedicato alle istruzioni in
virgola mobile (floating-point). Tali istruzioni sono frequentemente utilizzate in molte ap
plicazioni scientifiche c nei vidcogiochi. La prestazione in virgola mobile espressa in mi
lioni di istruzioni in virgola mobile al secondo (MFLOPS, millions o f floating-point opera
tions per second) cd c definita dalla seguente formula:
Numero di operazioni in virgola mobile eseguite
MFLOPS rate = -------------------------------------- ----------- --------------Tempo di esecuzione X IO 6

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Benchmark
Misure comc MIPS e MFLOPS si sono dimostrate inadeguate per la valutazione delle pre
stazioni dei processori. A causa delle differenze tra set di istruzioni, la frequenza di esecu
zione delle istruzioni non uno strumento valido per confrontare le prestazioni di archi
tetture diverse. Per esempio, si consideri listruzione ad alto livello:
A = B + C / * s i

a s s u m a che i d a t i s i a n o in m e m o r i a c e n t r a l e */

Con un set di istruzioni tradizionale, cio in un calcolatore di tipo CISC questa istruzio
ne pu corrispondere a una singola istruzione macchina:
add

m e m (B ),

m e m (C ), m e m (A )

In una tipica macchina RISC, la compilazione darebbe pressapoco questo risultato:


load m e m (B), reg(l);
load mem(C), reg(2);
add r e g (1 ), reg(2), reg(3);
store reg(3), m e m (A)

Grazie alla natura delle architetture RISC (discusse nel Capitolo 13), i due calcolatori pos
sono eseguire loriginale istruzione ad alto livello circa nello stesso tempo. Supponendo che
lesempio sia significativo per i due calcolatori, se la macchina CISC avesse una frequenza
di 1 MIPS, la RISC dovrebbe avere una frequenza di 4 MIPS, nonostante le due macchi
ne eseguano lo stesso numero di istruzioni ad alto livello nello stesso tempo.
Inoltre, le prestazioni di un dato processore su un dato programma potrebbero non
essere utili per determinare quale sar il comportamento del processore su applicazioni
molto diverse. Per le ragioni sin qui esposte, a partire dalla fine degli anni 80 e dai primi
anni 90, le attenzioni delle industrie c delle istituzioni accademiche si spostarono sulla mi
surazione delle prestazioni dei sistemi tramite specifici programmi di test, detti benchmark.
Lo stesso benchmark pu essere eseguito su diverse macchine c i risultati delle ese
cuzioni possono essere confrontati.
[^$^IC90] elenca le caratteristiche ideali di un benchmark:
1. essere scritto in un linguaggio ad alto livello, in modo che sia portabile su macchine
diverse;
2. essere rappresentativo di un particolare stile di programmazione, come ad esempio
programmazione di sistema, scientifico/numerica o commerciale;
3. poter essere facilmente misurato;
4. avere una vasta distribuzione.
B enchm ark SPEC. Le esigenze comuni di industria, mondo accademico c comunit di
ricerca di uno strumento di misurazione delle prestazioni dei computer che sia general
mente accettato hanno portato allo sviluppo di collezioni (suite) di programmi di
benchmark standard. Una suite di benchmark una collezione di programmi scritti in un
linguaggio ad alto livello che ha lo scopo di offrire un test significativo per un computer
in una particolare arca di programmazione applicativa o di sistema.

2.5 Valutazione delle prestazioni

La miglior collezione di tali programmi definita c mantenuta dal consorzio indu


striale SPEC (system performance evaluation corporation). Le misure di performance SPEC
sono largamente utilizzate per effettuare confronti e a scopi di ricerca. La pi conosciuta
suite di benchmark SPEC e la SPEC CPU2006, la suite standard per le applicazioni che
utilizzano il processore in maniera intensiva. SPEC CPU2006 quindi appropriata per mi
surare le prestazioni rispetto ad applicazioni che impiegano la maggior parte del loro tem
po effettuando computazioni, invece chc operazioni di I/O . La suite CPU2006 e basata su
applicazioni che i membri della SPEC hanno gi portato su una grande variet di piat
taforme e consiste in 17 programmi in virgola mobile scritti in C, C++ e Fortran, c in 12
programmi in C e C++ chc operano su interi. Lintera suite contiene oltre 3 milioni di li
nee di codice. SPEC CPU2006 la quinta generazione della suite per applicazioni a uso
intensivo del processore e sostituisce le precedenti SPEC CPU2000, SPEC CPU95, SPEC
CPU92 e SPEC CPU89 [HENN07].
Tra le altre suite SPEC vi sono:
SPECj vm98 : per valutare le prestazioni dcllmsicmc degli aspetti hardware e softwa
re della piattaforma client Java Virtual Machine (JVM).
SPEC jbb2000 (Java Business B enchm ark): per valutare applicazioni di e-com
merce lato server basate su Java.
SPECweb99: valuta le performance di server WWW.
SPECm ail2001 : per misurare le prestazioni di server mail.

Raggruppare i risultati
Per ottenere un confronto affidabile delle prestazioni di diversi computer c preferibile ese
guire un certo numero di benchmark differenti su ogni macchina e raggruppare poi i ri
sultati ottenuti. Ad esempio, se vengono utilizzati m benchmark diversi baster calcolare
la media aritmetica come segue:
R* = ~m I=
Z 1R

(23)

dove Rj il valore calcolato dalli-csimo benchmark per lesecuzione di unistruzione di lin


guaggio ad alto livello.
Unalternativa lutilizzo della media armonica :
(2.4)

Linteresse deHutente rivolto fondamentalmente al tempo di esecuzione di un sistema c


non alla frequenza di esecuzione delle istruzioni. Se prendiamo la media aritmetica delle
frequenze ottenute con vari benchmark otteniamo un risultato chc c proporzionale alla
somma degli inversi dei tempi desecuzione, ma non necessariamente inversamente pro
porzionale alla somma dei tempi. In altre parole, non e sufficientemente chiara la relazio

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

ne tra la media aritmcnica delle frequenze e il tempo di esecuzione. D altro canto, la me


dia armonica linverso del tempo medio di esecuzione.
I
benchmark SPEC non si preoccupano della frequenza di esecuzione delle istruzio
ni. Piuttosto, ! interesse rivolto a due metriche fondamentali: una basata sulla velocit e
laltra sulla frequenza. La metrica basata sulla velocit misura labilit di un computer nel
portare a termine un singolo compito. SPEC definisce un tempo di esecuzione per ogni
benchmark utilizzando una macchina di riferimento. I risultati per un sistema che viene
testato sono espressi come rapporto tra il tempo di esecuzione di riferimento e il tempo di
esecuzione sul sistema oggetto del test. Il rapporto calcolato come segue:
r, =

T refi

(2.5)

TSUI;

dove Trefj e il tempo di esecuzione del benchmark i sul sistema di riferimento e Tsutj il
tempo di esecuzione del benchmark i sul sistema testato.
Come esempio, consideriamo il Sun Biade 6250, dotato di 2 chip con quattro core per
chip. Uno dei benchmark SPEC CPU2006 per gli interi e 464.h264ref, implementazione
di riferimento di H.264/AVC (<advanced video coding), lo standard pi recente per la com
pressione video. Il sistema Sun esegue tale programma in 934 secondi. Limplemcntazione
di riferimento richiede 22135 secondi. Il rapporto e dato da 22136/934 = 23,7.
Siccome il tempo per il sistema testato appare a denominatore, maggiore e il rapporto
calcolato, pi grande e la velocit. Una misura complessiva delle prestazioni del sistema vie
ne calcolata utilizzando i valori dei rapporti ottenuti con limpiego di tutti i 12 benchmark
per gli interi. SPEC specifica luso della media geometrica, calcolata come segue:
1In

(2.6)

Un

dove r. il rapporto per li-esimo benchmark. Per il Sun Biade 6250, i rapporti ottenuti so
no i seguenti.
Benchm ark

R apporto

B enchm ark

R apporto

400.perlbcnch

17,5

458.sjeng

17,0

401.bzip2

14,0

462.1ibc|uantum

31,3

403.gcc

13.7

464.h264ref

23,7

429.mcf

17,6

471.omnetpp

9,23

445.gobmk

14,7

473.astar

10,9

456.hmmer

18,6

483.xalancbmk

14,7

La misura della velocit ottenuta calcolando la radice dodicesima del prodotto dei rap
porti:

(17,5 X 14 X 13,7 x 17,6 x 14,7 x 18,6 x 17 x 31,3 x 23,7 x 9,23 x 10,9 x 14,7)1/12 =18,5
La metrica basata sulla frequenza valuta una macchina mentre esegue compiti diversi. Per
questa metrica vengono eseguite contemporaneamente varie copie dei benchmark. Di so-

2.5 Valutazione delle prestazioni

lito il numero di copie coincide con il numero di processori presenti sulla macchina.
Ancora una volta il risultato espresso mediante un rapporto, pi complesso da calcolare
rispetto al caso precedente, ottenuto come segue:
,, -

( i7 )

Tsuti

dove Trefj il tempo di esecuzione di riferimento per il benchmark i, N il numero di copie


del programma che stato eseguito contemporaneamente e Tsut e il tempo trascorso dal
l'inizio dellesecuzione del programma su tutti gli N processori elei sistema testato fino al
la conclusione di tutte le copie del programma. Anche in questo caso si utilizza la media
geometrica per calcolare la misura complessiva delle prestazioni.
SPEC ha deciso di usare la media geometrica perche la pi adatta per quantit
normalizzate, come i rapporti chc si ottengono. [FLEM86] dimostra che la media geo
metrica ha la propriet di mantenere inalterati i rapporti tra le misure ottenute indipen
dentemente dal computer utilizzato come base per la normalizzazione.

Legge di Amdahl
I progettisti, quando rivolgono la loro attenzione alle prestazioni, cercano di ottenere mi
glioramenti utilizzando tecnologie pi valide o modificando il progetto. Alcuni esempi so
no lutilizzo di processori paralleli, luso di una gerarchia di memorie cache, laumento del
le velocit di accesso alla memoria e di trasferimento dati grazie a un miglioramento
tecnologico. In tutti questi casi importante notare che il progresso in un solo aspetto tec
nologico o di progetto non si riflette direttamente in un aumento delle prestazioni com
plessive. Tale limitazione espressa in modo succinto dalla legge di Amdahl.
Qiiesta legge fu introdotta da Gene Amdahl in [AMDA67] e riguarda il potenziale
aumento di velocit di un programma eseguito su processori multipli rispetto all esecu
zione dello stesso su un singolo processore. Si consideri un programma in esecuzione su
un singolo processore e tale che ima porzione (1 - f ) del tempo di esecuzione sia dedica
ta a codice intrinsecamente seriale e una porzioncy sia dedicata a codice infinitamente parallelizzabile, senza sprechi di tempo per lo scheduling. Sia T il tempo totale di esecuzio
ne del programma su singolo processore. Lincremento della velocit ottenuto utilizzando
A7processori in parallelo in grado di sfruttare completamente la porzione parallela del pro
gramma il seguente:
Aumento di velocit

tempo per eseguire il programma su un singolo processore


tempo per eseguire il programma su N processori paralleli
_ 7Xl - / ) + T f =
Tf

1
f

Possiamo trarre due importanti conclusioni:


1. quando f i piccolo, lutilizzo di processori paralleli ha un effetto ridotto;
2. quando N tende allinfinito, !aumento di velocit limitato da 1/(1 - f ) e i vantag
gi diminuiscono al crescere del numero di processori.

56

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

Secondo [GUST88] quesre conclusioni sono troppo pessimistiche. Ad esempio, un ser


ver pu utilizzare thread multipli o task multipli per gestire pi client ed eseguire i thread,
o i task, in parallelo fino al limite dato dal numero di processori. Molte applicazioni per
basi di dati devono trattare enormi quantit di dati suddivisibili tra diversi task. La legge
di Amdahl descrive il problema incontrato dalle industrie nello sviluppo di macchine
multicore con molteplicit sempre maggiore: il software in esecuzione sulle macchine de
ve essere adattato all esecuzione su piattaforme ad alto parallelismo per sfruttare la poten
za dell esecuzione in parallelo.
La legge di Amdahl pu essere generalizzata per valutare qualsiasi miglioria tecnica
o progetto di un sistema. Si consideri una qualsiasi evoluzione di una funzionalit di si
stema che provochi un aumento della velocit. Tale aumento pu essere espresso come:
Aumento di velocit =

prestazioni dopo levoluzione


prestazioni prima dellevoluzione

tempo di esecuzione prima dell evoluzione

(2.8)

tempo di esecuzione dopo !evoluzione


Si supponga chc una funzionalit del sistema sia utilizzata durante Icsccuzione per una
frazione di tem po/prim a dell evoluzione c che laumento di velocit della funzionalit do
po levoluzionc sia SUr. Quindi, lincremento complessivo delle prestazioni del sistema
sar
Aumento di velocit = ----------

Ad esempio, supponete che un task faccia un uso estensivo di operazioni in virgola mobi
le, con il 40% del tempo impiegato per questo tipo di operazioni. Con un nuovo proget
to hardware il modulo per le operazioni in virgola mobile viene migliorato di un fattore K.
In tal caso, lincremento complessivo delle prestazioni sar:
Aumento di velocit = --------
0,4

o,6 + -

Quindi, indipendentemente da K, il massimo incremento di 1,67.

2.6

Letture e siti web consigliati

Una descrizione della serie IBM 7000 si trova in [BELL71a], e [SIEW82] contiene una
buona trattazione dellIBM 360. In [BELL78a] vengono descritti il PDP-8 e altre macchine
DEC. Questi tre libri contengono anche numerosi esempi di altri calcolatori, percorren
do la storia degli elaboratori fino ai primi anni O ttanta. Un testo pi recente chc include

2.6 Letture e siti web consigliati

un eccellente insieme di casi di studio su macchine storiche [BLAA97], mentre


[BETK97] presenta la storia dei microprocessori.
[OLUK96], [HAMM97] e [SAKA02] studiano le motivazioni che portano allurilizzo di processori multipli su singolo chip.
[BREY09] offre uno sguardo generale sulla linea di processori Intel. La documenta
zione Intel [INTE08] in s un valido strumento.
La fonte pi completa di informazioni per larch itcttura ARM [SEALOO].11
[FURBOOI unaltra fonte eccellente. [SMIT8] effettua un interessante confronto tra gli
approcci ARM e x86 allutilizzo come processori embedded su dispositivi mobili.
Per uninteressante analisi della legge di Moorc e delle sue conseguenze, si vedano
[H U TC96], [SCHA97] e [BOHR98].
[HENN06J fornisce una descrizione dettagliata dei benchmark inclusi in CPU2006.
[SM1T88] analizza le medie aritmetiche, armoniche c geometriche.
BELL71a C. Bell e A. Newell, Computer Structures: Readings and Examples, New
York, McGraw-Hill, 1971.
BELL78a C. Bell ,J. Mudge c J. McNamara, Computer Engineering: A D E C View
o f Hardware Systems Design, Bedford (MA), Digital Press, 1978.
BETK 97 M. Betker, J. Fernando e S. Whalen, The History o f the
Microprocessor, Bell Labs TechnicalJournal, autunno 1997.
BLAA97 G. Blaauw e F. Brooks, Computer Architecture: Concepts and Evolution,
Reading (MA), Addison-Wesley, 1997.
B O H R 98 M. Bohr, Silicon Trends and Limits for Advanced Microprocessors,
Communications o f the A C M , marzo 1998.
BREYOO B. Brey, The Intel Microprocessors: 8086/8066, 80186/80188, 80286,
80386, 80486, Pentium, Pentium Pro and Pentium I I Processors, Upper Saddle
River (NJ), Prentice Hall, 20(H).
FURBOO Furbcr, S. ARAiSystem O n-Chip Architecture, Reading, MA,
Addison-Wesley, 2000.
HAM M 97 Hammond, L.; Nayfay, B.; c Olukotun, K. A Single-Chip
Multiprocessor Computer, settembre 1997.
H EN N 06 Henning, J. SPEC CPU2006 Benchmark Descriptions. Computer
Architecture News, settembre 2006.
H U T C 96 Hutcheson, G. e Hutcheson,J. Technology and Economics in the
Semiconductor Industry. Scientific Americany gennaio 1996.

11 Noto

n e lla

com unit ARM come ARM ARM

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

INTE08 birci Corp. Inrcl 64 e IA-32 Intel Architectures Software Developers


Manual (3 volumi). Denver, CO, 2008.
intel.com /products/processor/m anuals.

O LU K 96 Olukotun, K., et al.The Case for a Single-Chip Multiprocessor


Proceedings, Seventh International Conference on Architectural Supportfor
Programming Languages and Operating Systems, 1996.

SAKA02 Sakai, S. CM P on SoC: Architects View. Proceedings. 15th


International Symposium on System Synthesis, 2002.
S C H A97 Schalier, R Moores Law: Past, Present, and Future. IEEE Spectrum,
giugno 1997.
SEALOO Seal, D., ed. A R M Architecture Reference M an u al Reading, MA:
Addison-Wesley, 2000.
SIEW82 Sicwiorek, D.; Bell, C., e Newell, A. Computer Structures: Principles and
Examples. New York: McGraw-Hill, 1982.
SMIT88 Smith, J. Characterizing Computer Performance with a Single
Number. Communications of the A CAl, ottobre 1988.
SMIT08 Smith, B. ARM and Intel Battle over the Mobile Chips Future.
Computer, maggio 2008.

Siti web consigliati:


Intel Developers Page: una pagina web di Intel che fornisce un punto di partenza
per accedere alle informazioni sul Pentium. Include anche lIntel TechnologyJournal.
ARM: pagina web della ARM Limited, azienda chc sviluppa Farchitettura ARM.
Include la documentazione tecnica.
Standard Performance Evaluation Corporation: SPEC unorganizzazione lar
gamente riconosciuta neUmdustria dei calcolatori per lo sviluppo di benchmark
standard utilizzati per misurare e confrontare Ie prestazioni di diversi sistemi.
TopSOO Supercomputer Site: fornisce una breve descrizione dell architetnyra e del
lorganizzazione degli attuali supercalcolatori e prove comparative.
Charles Babbage Institute: presenta collegamenti a molti siti web chc trattano la
storia dei calcolatori.

2.7 Parole chiave, domande di revisione e problemi

2.7

Parole chiave, domande di revisione


e problemi

-- Parate chiave ; ||g


accumulatore (AC)
benchmark
calcolatore a programma
memorizzato
canali di dati
chip
ciclo di esecuzione
ciclo di fetch
ciclo istruzione
circuito integrato (IC)
codice operativo
compatibilit verso l'alto
input/output (I/O)
legge di Amdahl

linguaggio macchina
macchina di von
Neumann
produttore originale
(OEM)
memoria centrale
microprocessore
multicore
multiplexer
parola
program counter (PC)
registro buffer delle
istruzioni (IBR)

registro buffer di
memoria (MBR)
registro indirizzi di
memoria (MAR)
registro istruzioni (IR)
set di istruzioni
sistema embedded
SPEC
unit aritmetico-logica
(ALU)
unit di controllo
wafer

Domande di revisione
2.1 Che cos un calcolatore a programma memorizzato?
2.2 Quali sono i quattro principali componenti di un elaboratore?
2.3 A livello di circuito integrato, quali sono i tre principali elementi costitutivi di un
sistema di elaborazione?
2.4 Spiegate la legge di Moore.
2.5 Elencate e spiegate le caratteristiche salienti di una famiglia di calcolatori.
2.6 Qiial la caratteristica chiave distintiva di un microprocessore?

Problemi
2.1 Siano A = A (I), A (2),... ,A(IOOO) e B = B (I)115(2)..... B(IOOO) due vettori di 1000
numeri. A e B vanno sommati per ottenere un vettore C, tale che C(I) = A(I) + B(I)
per I = 1, 2 , ... , 1000. Scrivete un programma per risolvere il problema usando le
istruzioni macchina di IAS.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

2.2 a. Su IAS, come apparirebbe il codice macchina di unistruzione per prelevare il con
tenuto dellindirizzo di memoria 2?
Di quanti accessi a memoria ha bisogno la CPU per completare tale istruzione
durante il ciclo di istruzione?

b.

2.3 Si descriva in lingua italiana il processo chc la CPU deve intraprendere, su IAS, per
leggere un valore dalla memoria e scrivere un valore nella memoria, in termini di chc
cosa viene messo in MAR, MBR, bus degli indirizzi, bus dati e bus di controllo.
2.4 II contenuto di memoria di un calcolatore IAS e il seguente.
Indirizzo

C ontenuto

08A

010FA210FB

08B

O1OFA0F08D

08C

020FA210FB

Mostrate il codice assembly del programma chc inizia alTindirizzo 08A. Spiegate che
cosa fa il programma.
2.5 Indicate il numero di bit di ogni linea dati nella Figura 2.3 (ad esempio, della linea
tra AC e ALU ).
2.6 Nei modelli 65 e 75 dellIBM 360 gli indirizzi fanno riferimento a due memorie cen
trali separate (ad esempio, tutte le parole di numero pari in ununit e tutte quelle
di numero dispari in unaltra).
Quale potrebbe essere lo scopo di questa tecnica?
2.7 Facendo riferimento alla Tabella 2.4 osserviamo che le prestazioni relative dellIBM
360 Modello 75 sono 50 volte superiori rispetto a quelle del Modello 30, nonostante
il tempo di esecuzione delle istruzioni sia solo di 5 volte maggiore. Come giustifi
cate questa discrepanza?
2.8 Mentre girate per il negozio di computer di Billy Bob, sentite qualcuno chiedergli qual
il computer pi veloce in vendita nel negozio. Billy Bob risponde: Stai guardando
i Macintosh. Il Mac pi veloce chc abbiamo ha una frequenza di clock di 1.2 GHz. Se
davvero vuoi la macchina pi veloce, dovresti comprare le nostre macchine Intel
Pentium IV a 2.4 GHz. Ha ragione Billy? Chc cosa rispondereste voi al cliente?
2.9 ENIAC era una macchina decimale (invece che binaria) in cui un registro era rap
presentato da 10 valvole. In ogni istante di tempo solo una delle 10 valvole era nel
lo stato ON, per rappresentare una delle dieci cifre decimali. Spiegate perch que
sta rappresentazione c uno spreco assumendo chc ENIAC sia stata in grado di
avere simultaneamente pi valvole nello stato O N c OFF. QiLalc intervallo di inte
ri sarebbe possibile rappresentare con 10 valvole?
2.10 Un programma di benchmark viene eseguito su una macchina a 40MHz. Il pro
gramma consiste in 100000 istruzioni suddivise nelle seguenti tipologie:

2.7 Parole chiave, domande di revisione e problemi

T ip o lo g ia d i istruzione

N um ero d i istruzioni

C icli p er ogni istruzione

Aritm etica intera

45000

Trasferimento dati

32000

Virgola mobile

15000

8000

Trasferimento di controllo

Determinate CPI e MIPS effettivi e calcolate il tempo di esecuzione del programma.


2 .11 Si considerino due macchine distinte con due diversi set di istruzioni e con una fre
quenza di clock di 200 MHz. Le seguenti misurazioni sono state ottenute sulle due
macchine eseguendo un dato insieme di programmi di benchmark.
N um ero di istru zio n i
(in m ilioni)

T ip o lo g ia di istruzione

C icli per istruzione

Macchina A
Aritmetica e logica

Caricam ento e memorizzazine

Salto

Altro

Macchina B
10

Caricam ento e memorizzazione

Salto

Altro

Aritmetica e logica

a. Determinate i valori effettivi di CPI e MIPS e il tempo di esecuzione per ogni


macchina.
b. Com m entate i risultati.
2.12 I primi esempi di architetture CISC e RISC sono rispettivamente il VAX 11/780
e 1 RS/6000. Utilizzando un tipico programma di benchmark si ottengono le
seguenti caratteristiche delle due macchine.
Processore
V A X 11/780
IB M R S /6 0 0 0

Prestazioni

Tem po di C P U

5 MHz

1 M IP S

12 X se c o n d i

25 M H z

18 M IP S

Frequenza di clock

X se c o n d i

Lultima colonna mostra che il VAX impiega un tempo di 12 volte maggiore rispetto
airiBM , misurato in tempo di CPU.

61

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

a. Qual c il numero di istruzioni di codice macchina di questo programma di ben


chmark relativamente alle due macchine?
b. Quali sono i valori di C P I delle due macchine?
2.13 Q uattro programmi di benchmark eseguiti su tre diversi computer restituiscono i
seguenti risultati:
C o m p u terA

C om puter C

C om puter B

P rogram m a 1

10

20

P rogram m a 2

1000

100

20

P rogram m a 3

500

1000

50

P rogram m a 4

100

800

100

La tabella mostra il tempo di esecuzione espresso in secondi per le 100000000 istru


zioni eseguite in ognuno dei 4 programmi. Calcolate il valore del MIPS per ogni
computer e per ogni programma. Calcolate quindi la media aritmetica e armonica
dando lo stesso peso a ognuno dei quattro programmi, e stilate le classifiche dei
computer basate sulle due medie calcolate.
2.14 La seguente tabella, basata su dati presenti in letteratura [HEAT84], mostra il tem
po di esecuzione, in secondi, di cinque diversi programmi di benchmark su tre
macchine.
Processore
Benchm ark
M

417

244

134

83

70

70

H
I
K

66

153

135

39,449

35,527

66,000

772

368

369

a. Calcolate le misure delle velocit per ogni processore c per ogni benchmark,
normalizzate sulla macchina R. In altre parole, i rapporti per R sono tutti pari a 1,
e gli altri rapporti sono calcolati utilizzando TEquazione (2.5), trattando R co
me il sistema di riferimento. Calcolate quindi il valore della media aritmetica per
ogni sistema, utilizzando TEquazione (2.3). Qiiesco lapproccio utilizzato in
IHEAT84].
b. Ripetete la parte (a) dcllcsercizio utilizzando M come macchina di riferimento.
Tide calcolo non stato effettuato in [HEAT84].
e. Qiiale macchina la pi lenta secondo quanto ottenuto nei due punti precedenti?
d. Ripetete i calcoli effettuati nei punti (a) e (b) utilizzando la media geometrica,
definita dalTEquazionc (2.6). Quale macchina la pi lenta secondo i valori ot
tenuti nei due casi?

2.7 Parole chiave, domande di revisione e problemi

2.15 Per rendere pi chiari i risultati ottenuti nel precedente problema utilizziamo un
esempio pi semplice.
Processore
B enchm ark
X

20

10

40

40

80

20

a. Calcolate la media aritmetica per ogni sistema usando prima X e poi Y come
macchine di riferimento. Discutete il fatto che intuitivamente le tre macchine
hanno prestazioni quasi equivalenti, mentre la media aritmetica fornisce risulta
ti fuorvianti.
b. Calcolate il valore della media geometrica per ogni sistema usando prima X e poi
Y come macchine di riferimento. Discutete il fatto che i risultati sono pi reali
stici rispetto a quelli ottenuti con lutilizzo della media aritmetica.
2.16 Considerate lesempio di calcolo dei valori m edi di C P I e MIPS presente nel
Paragrafo 2.5, che restituisce come risultati un valore di CPI pari a 2.24 e un valore
di M IPS pari a 178. Assumete ora chc il programma possa essere eseguito in otto
task (o thread) paralleli, con d iincirca lo stesso numero di istruzioni eseguite in ogni
task. Lesecuzione avviene su un sistema a 8 core, in cui ogni core (processore) ha le
stesse prestazioni del processore singolo originariamente utilizzato. Il coordinam ento e la sincronizzazione tra le parti aggiunge 25000 istruzioni a ogni task.
Assumete che per ogni task vi sia la stessa distribuzione tra le tipologie di istruzio
ni descritta nellesempio, ma aumentate il C P I per riferimento a memoria in assen
za di dati nella cache (cachc miss) a 12 cicli, a causa delle contese per laccesso.
a.
b.
c.
d.

Determinate il CPI medio.


Determinate il corrispondente valore di MIPS.
Calcolate il fattore di incremento delle prestazioni.
Confrontate il fattore di incremento reale con quello ottenuto pervia teorica uti
lizzando la legge di Amdhal.

2.17 Un processore accede alla memoria centrale con un tempo medio Tr


Una piccola cache posta tra il processore c la memoria centrale. La cache ha un
tempo medio di accesso sensibilmente pi veloce T { < Tr La cache contiene in
ogni istante le copie di alcune parole della memoria centrale ed progettata in m o
do chc le parole alle quali pi probabilmente si far accesso nel pi immediato fu
turo siano presenti nella cache. Assumete che la probabilit, detta frequenza di ca
chc hit, di incontrare nella cache la parola successiva alla quale il processore accede
sia //.
a. Per un singolo accesso a memoria, qual e lincremento di velocit nellaccedcrc al
la parola nella cache piuttosto chc nella memoria centrale?
b. Sia T il tempo medio di accesso. Esprimete T in funzione di Ty T1 e H. Scrivete
lincremento di velocit complessivo in funzione di H.

Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

c. Nella pratica, un sistema pu essere progettato in modo che il processore debba


accedere prima alla cache per verificare la presenza della parola e poi, in assenza
di questa, accedere alla memoria centrale. In questo caso il tempo di accesso in
caso di cache miss (lopposto di cache hit) c T1 + Tr Esprimete T in funzione di
Tv T1 e H. Calcolate poi !incremento di velocit e confrontatelo con il risulta
to ottenuto al punto (b).

Parte 2

Sistema di elaborazione
Argomenti della seconda parte
Un sistema di elaborazione consiste di processore, memoria, I/O e interconnessioni tra
questi componenti. In questa parte procederemo al loro esame, ad eccezione del proces
sore che, per la sua complessit, sar affrontato separatamente nella terza parte.

Percorso della seconda parte


Capitolo 3 - Visione ad alto livello delle funzioni e interconnessioni
del calcolatore

Ad alto livello, un calcolatore consiste di processore, memoria c com ponenti di I/O . Il


com portam ento funzionale del sistema consiste nello scambio di dati e di segnali di con
trollo tra questi componenti. Per consentire questo scambio, tali componenti devono es
sere interconnessi. Il Capitolo 3 inizia con un breve esame dei componenti del calcolato
re con i loro requisiti di in p u t/o u tp u t. Si concentra quindi sui problem i chiave chc
riguardano la progettazione delle interconnessioni, e in particolare la necessit di suppor
tare gli interrupt. La maggior parte del capitolo dedicata a uno studio del pi comune ap
proccio allinterconnessione: luso di una struttura di bus.
Capitolo 4 - M emoria cache

Le memorie dei calcolatori esibiscono un vasto campo di tipi, tecnologie, organizzazioni,


modelli e prezzi. Il tipico sistema di elaborazione equipaggiato con una gerarchia di sot
tosistemi di memoria, alcuni interni (direttamente accessibili al processore) e altri esterni
(accessibili al processore attraverso un m odulo di I/O ). Il Capitolo 4 inizia con una pa
noramica di questa gerarchia, per poi trattare nel dettaglio la progettazione della memo
ria cache, incluse le cachc a codice c dati separati e le cache a due livelli.
Capitolo 5 - Memoria interna

La progettazione di un sistema di memoria centrale deve rispondere a tre requisiti di pro


gettazione fra loro concorrenti: grande capacit di immagazzinamento, tempi rapidi dac
cesso e basso costo. Con levoluzione della tecnologia delle memorie, queste tre caratteri
stiche cambiano, cosicch le decisioni di progettazione nellorganizzazione della memoria
principale devono essere riviste del tutto a ogni nuova implementazione. Il Capitolo 5 si
concentra sui problemi di progettazione relativi alla memoria interna. Per prima cosa ven
gono esaminate la natura e !organizzazione della memoria principale a semiconduttori. Poi,
vengono prese in considerazione le recenti e avanzate organizzazioni della memoria DRAM.

Capitolo 6 - M em oria esterna

Lorganizzazione di memoria esterna richiesta per ottenere una capacit di immagazzi


nam ento davvero grande e per una memorizzazione pi permanente rispetto a quella in
memoria principale. Il tipo di memoria esterna pi largamente usato il disco magnetico,
e gran parte del Capitolo 6 si concentra su tale argom ento. Per prima cosa saranno ana
lizzate la tecnologia del disco m agnetico ed effettuate considerazioni di progettazione. Poi
verr affrontato luso dellorganizzazione RAID per migliorare le prestazioni dei dischi.
Saranno inoltre esaminati i supporti di memorizzazione ottici e su nastro.
Capitolo 7 - Input /Output

1 moduli di I /O sono interconnessi con il processore e la m em oria principale, e ciascuno


di essi controlla uno o pi dispositivi esterni. Il C apitolo 7 c dedicato ai vari aspetti del
lorganizzazione dellinput/o u tp u t. Questa unarea complessa, e m olto meno compresa
di altre in term ini di aderenza ai requisiti di prestazione. Il Capitolo 7 esamina i meccani
smi tram ite i quali i moduli di I/O interagiscono con il resto del sistema di elaborazione,
usando le tecniche di I/O programmato, di interrupt e di accesso diretto alla memoria (di
rect memory access, D M A ). Inoltre viene descritta linterfaccia tra i moduli di I/O c i di
spositivi esterni.
Capitolo 8 - Supporto dei sistemi operativi

Anche se un esame dettagliato dei sistemi operativi esula dagli scopi del testo, im portante
comprendere le funzioni basilari del sistema operativo c di come esso sfrutti lhardwarc per
fornire le prestazioni desiderate. Il Capitolo 8 descrive i principi fondam entali dei sistemi
operativi c tratta le caratteristiche specifiche di progettazione ncllhardware del calcolatore
volte a fornirne il supporto. Il capitolo inizia con una breve storia, che serve a identificare
i principali tipi di sistema operativo e a giustificare il loro uso. Qiiindi viene introdotta la
multiprogram m azionc con un esame delle funzioni di scheduling a lungo e breve termine.
Inoltre, lanalisi della gestione della memoria include una trattazione di segmentazione, pa
ginazione e memoria virtuale.

Capitolo 3

Visione ad alto livello delle funzioni e


interconnessioni del calcolatore

Punti chiave

il ciclo esecutivo di unistruzione consiste nella sua lettura, seguita dalleventuale


prelievo degli operandi, dalleventuale memorizzazione di dati c da un eventuale
controllo di interrupt.

I com ponenti principali in un sistema di elaborazione (processore, m emoria cen


trale, I/O ) devono essere interconnessi per scambiare dati e segnali di controllo.
U pi com une mezzo di interconnessione il bus di sistema condiviso costituito
da pi linee. Negli elaboratori attuali vi una gcrarcliia di bus per migliorare le p r
stazioni.
^

G li elementi chiave della progettazione dei bus includono !arbitraggio (il per
messo di m andare i segnali sulle lince del bus pu essere centralizzato o distribui
to), la tem porizzazione (i segnali sui bus possono essere sincronizzati central
m ente o in m odo asincrono sulla base della pi recente trasmissione), e lampiezza
(il num ero di lince di indirizzo e di dati).

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

d alto livello, un calcolatore consiste della CPU, della memoria c dei componenti di
I / O. Questi elementi sono interconnessi per compiere la funzione base del calcolato
re: eseguire programmi. Quindi, possiamo genericamente descrivere un sistema di elabo
razione evidenziando il comportamento dei suoi componenti (i dati e i segnali di controllo
che questi scambiano tra loro) e descrivendo le interconnessioni e i relativi controlli.
Questa visione e importante per la sua forza esplicativa della natura di un calcolato
re. Di pari importanza il suo uso per capire i sempre pi complessi problemi legati alla
valutazione delle prestazioni. La padronanza della struttura e funzionalit offre la perce
zione dei colli di bottiglia, dei percorsi alternativi, dell entit dei malfunzionamenti di si
stema e della facilit di ottenere miglioramenti nelle prestazioni. In molti casi, le richieste
di maggiore potenza c di assenza di guasti vengono soddisfatte modificando il progetto an
zich incrementando meramente la velocit c laffidabilit dei singoli componenti.
Il capitolo, che si concentra sulle strutture fondamentali adottate per linterconnes
sione dei componenti di un calcolatore, inizia con una breve trattazione dei componenti
fondamentali. Viene poi fornita una panoramica funzionale ed esaminato luso dei bus.

3.1

Componenti di un calcolatore

Come visto nel Capitolo 2, la progettazione di quasi tutti i calcolatori odierni e basata sui
concetti sviluppati da John von Neumann presso Flnstitute for Advanced Studies di
Princeton. Tale concezione nota come architettura d i von Neumann ed basata su tre con
cetti chiave:
i dati e le istruzioni risiedono in ununica memoria di lettura e scrittura;
i contenuti di questa memoria sono accessibili per indirizzo, indipendentemente dal
tipo di informazione rappresentata;
lesecuzione avviene in modo sequenziale (a meno di esplicite modifiche), da uni
struzione a quella immediatamente successiva.
Il ragionamento alla base di questi concetti e stato trattato nel Capitolo 2, ma vale la pe
na riassumerlo in questa sede. Esiste un piccolo insieme di componenti logici di base che
possono essere combinati in vari modi per memorizzare dati binari e per eseguire su di es
si operazioni aritmetiche e logiche. Se c una particolare elaborazione da eseguire, pos
sibile costruire una configurazione di com ponenti logici appositamente progettata.
Possiamo pensare al processo di connettere i vari componenti nella configurazione desi
derata come un genere di programmazione. Il programma risultante in forma hardwa
re ed e chiamato programma cablato (hardwired program).
Ora si consideri questa alternativa. Supponiamo di costruire una generica configu
razione di funzioni aritmetiche e logiche. Tale circuito eseguir varie funzioni sui dati a se
conda dei segnali di controllo applicati. Nel caso di hardware dedicato il sistema accetta
dati e produce risultati (Figura 3.1a); nel caso di hardware generico, il sistema accetta da
ti e segnali di controllo e produce risultati. Dunque, invece di ri-cablarc Thardware per ogni
nuova applicazione, il programmatore deve solo fornire un diverso insieme di segnali di
controllo.

3.1 Componenti di un calcolatore

Figura 3.1

Approcci hardware e software.

Come verranno forniti tali segnali? La risposta semplice ma sottile. Lintero programma
di fatto ima sequenza di passi. A ogni passo vengono eseguite operazioni aritmetiche e
logiche sui dati. A ciascun passo, richiesto un nuovo insieme di segnali di controllo.
Supponiamo, ora, di codificare univocamente ogni possibile insieme di segnali di controllo
e di aggiungere al generico hardware un segmento chc possa accettare un codice e gene
rare i segnali di controllo (Figura 3.1b).
La programmazione ora c molto pi facile. Invece di ridefinire lhardware per ciascuna
applicazione, e sufficiente fornire una nuova sequenza di codici. Ogni codice in effetti
unistruzione, e una parte dcllhardwarc la interpreta c genera i relativi segnali di control
lo. Per distinguere questo nuovo metodo di programmazione dal precedente, una sequenza
di istruzioni c chiamata software.
La Figura 3.Ib indica i due principali componenti del sistema: un interprete delle
istruzioni e un modulo in grado di eseguire generiche istruzioni aritmetiche o logiche.
Questi due componenti costituiscono la CPU. Per il funzionamento di un calcolatore,
sono per necessari anche altri clementi. Per immettere dati c istruzioni nel sistema c per
convertirli in un formato utilizzabile necessitiamo di dispositivi di input. Ed anche ri-

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

M emoria centrale

CPU

'
. W

Bus d sistem a

t t . . -I

PC

:
.

M AR

Istruzione
Istruzione

;
-

IR
S

Istruzione

M BR
I/O A R

Dato

V
I n i t di

I esecuzione I
>-------------- f

D a to

I/O B R

Dato
Dato

Modulo di I/O

', , frs
<-.

;>'.

71-2

,
yifyw

Jv
"-X V i V J i v '' > . .. s
' '
X
- >.:.y ':: -.: '. >::: ;:;:. . :':> : :
' :
W -AfA ' / ' ' ' '', 'Mt,.
><, ,
,
,i,.,....,....-.;

f f |r '
. Sj.
*' !
1fi
sigi

3:
: y .. . .:

.:

.. , ..

.<^<\\.\>:-XV...,....

Figura 3.2

n- I

PC
IR
MAR
M BR
I/O A R
I/O B R

=
=
=
=
=
=

Program counter
Instruction register
M em ory address register
M em ory buffer register
I/O address register
I/O buffer register

Componenti del calcolatore: visione ad alto livello.

chiesto un mezzo per emettere i risultati, ossia un modulo di output. Considerati assieme,
i moduli di input e di output sono denominati componenti d i I/O.
Inoltre richiesto un ulteriore componente. Un dispositivo di input immetter istru
zioni e dati sequenzialmente. Ma un programma non viene sempre eseguito in sequenza;
esso potrebbe effettuare dei salti (si pensi allistruzione IAS di salto). In modo simile, le ope
razioni sui dati possono richiedere accesso a pi di un elemento per volta in una sequenza
predeterminata. Deve dunque essere possibile immagazzinare temporaneamente sia le
istruzioni sia i dati. Tale compito svolto dalla memoria , o memoria centrale (per distin
guerla dalle memorie di massa). Von Neumann evidenzi che la stessa memoria poteva es
sere usata per contenere sia le istruzioni sia i dati.
La Figura 3.2 mostra a grandi linee questi componenti e ne suggerisce le reciproche
interazioni. La CPU scambia dati con la memoria. A questo scopo, sono utilizzati due re
gistri interni della CPU: un memory address register (MAR), che specifica lindirizzo della
locazione di memoria da cui leggere o in cui scrivere e lui memory buffer register (MBR),

3.2 Funzione del calcolatore

chc contiene il dato da scrivere in memoria o letto dalla memoria. Analogamente, viene
usato un I/O address register (I/O AR) e un I/O buffer register (I/O BR) per lo scambio di
dati tra dispositivi di I/O e la CPU.
Un modulo di memoria consiste in un insieme di locazioni definite da indirizzi nu
merati in sequenza. Ogni posizione contiene una stringa di bit chc pu essere interpreta
ta sia come istruzione sia come dato. Il trasferimento dei dati dai dispositivi esterni alla
C PU e alla memoria, e viceversa, avviene tramite altri componenti dotati di buffer per
mantenere temporaneamente tali dati.
Presentiamo ora una panoramica della cooperazione tra questi componenti.

3.2

Funzione del calcolatore

La funzione principale di un calcolatore e lesecuzione di un programma, chc consiste di


un insieme di istruzioni registrate in memoria. Qiiesta sezione fornisce una panoramica de
gli elementi chiave dellcsccuzione di un programma. Nella sua forma pi semplice !ese
cuzione delle istruzioni si divide in due passi: il processore legge le istruzioni dalla memo
ria una alla volta e le esegue. Lesecuzionc di un programma consiste nella ripetizione di
questo processo. Lesecuzione delle istruzioni pu implicare parecchie operazioni interne
alle C PU e dipende dalla loro natura (si veda, ad esempio, la parte bassa della Figura 2.4).
Lelaborazione di una singola istruzione costituisce il suo ciclo esecutivo, mostrato nel
la Figura 3.3.1due passi sono dett [fase d i fetch efase esecutiva. Lesecuzione si ferma solo se
la macchina viene spenta, se avviene qualche errore irreparabile o se si incontra unistru
zione che blocchi il calcolatore.

Prelievo ed esecuzione delle istruzioni


Allinizio di ogni ciclo esecutivo il processore legge unistruzione dalla memoria. In un pro
cessore tipico, un registro chiamato program counter (PC) contiene lindirizzo della pros
sima istruzione da prelevare. Salvo diversa indicazione, il processore dopo il prelievo in
crem enta il PC , in m odo chc la prossima istruzione eseguita sia quella posizionata
allindi rizzo di memoria immediatamente successivo. Ad esempio, si consideri un calco
latore in cui le istruzioni occupano una parola di memoria da 16 bit. Si assuma che il PC
contenga lindirizzo 300. Il processore prelever listruzione eia tale indirizzo e nei succes
sivi cicli prelever le istruzioni dalle locazioni 301, 302, 303 c via dicendo. Qiicsta se
quenza pu essere alterata, come ora spiegato.
Fase di fetch

F igura 3 .3

Semplice ciclo macchina.

Fase esecutiva

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Listruzione prelevata caricata in un registro del processore noto come instruction


register (IR). Listruzione contiene bit chc specificano loperazione che il processore deve
compiere. Il processore interpreta listruzione ed esegue lazione richiesta. In generale, que
ste azioni ricadono in quattro categorie.
Processore-memoria: i dati possono essere trasferiti dal processore alla memoria o
viceversa.
Processore-I/O: i dati possono essere trasferiti verso una periferica o viceversa.
Elaborazione dati: il processore pu eseguire operazioni aritmetiche o logiche
sui dati.
Controllo : unistruzione pu specificare che la sequenza esecutiva venga alterata. Ad
esempio, il processore pu prelevare dalla locazione 149 unistruzione chc specifica
che la prossima istruzione da eseguire quella chc si trova allindirizzo 182. Cos, al
successivo ciclo di prelievo, verr letta listruzione che si trova nella locazione 182 an
zich nella 150.
Lesecuzione di unistruzione pu comprendere una combinazione di queste azioni.
Si consideri un semplice esempio su unipotetica macchina con le caratteristiche
elencate nella Figura 3.4. Il processore contiene un unico registro dati, chiamato accumu
latore (AC). Sia le istruzioni chc i dati occupano 16 bit. Dunque, e conveniente organiz
zare la memoria usando parole da 16 bit. Il formato dellistruzione prevede 4 bit per il co
dice operativo, quindi ci possono essere 24 = 16 differenti codici operativi (opcode), c
possono essere indirizzate fino a 2 12 = 4096 (4K) parole di memoria.
La Figura 3.5 illustra lesecuzione parziale di un programma, mostrando le porzioni
rilevanti della memoria e dei registri del processore.1 Il frammento di programma ripor
tato somma i contenuti della parola di memoria allindirizzo 940 a quelli allindirizzo 941
e memorizza il risultato in questultima locazione. Sono richieste tre istruzioni, che pos
sono essere descritte come tre cicli di fetch e tre cicli esecutivi.
1. Il PC contiene 300, !indirizzo della prima istruzione. Questultima (rappresentazio
ne csadccimale 1940) viene caricata nellinstruction register c il PC viene incrementa
to. Si noti che questo processo implica luso del memory address register e del memory
buffer register che, per semplicit, qui vengono ignorati.
2. I primi 4 bit (cifra esadecimalc 1) nellIR indicano che deve essere caricato laccu
mulatore. I restanti 12 bit specificano lindirizzo (940) dal quale i dati devono esse
re caricati.
3. La prossima istruzione (5941 ) viene caricata dalla locazione 301 c il PC viene incre
mentato.

1 Viene usata la notazione csadccimale, nella quale ogni cifra rappresenta 4 bit. Si tratta della notazione pi conve
niente per rappresentare i contenuti della memoria e dei registri quando la lunghezza della parola un multiplo di 4.

3.2 Funzione del calcolatore

--------------

Opcodc

-----______________

--------------

15

(a) Fonnato delle istruzioni


15
t
i .
Valore
assoluto

(b) Form ato dei dati interi


Program counter (PC) = indirizzo delfistruzione
Instruction register (IR) = istruzione in esecuzione
A ccum ulator (AC) = m emorizzazione tem poranea
(e) Registri interni della CPU
O(X)I = C arica in A C una cella di m em oria
OOlO = Scrive in m em oria il contenuto di AC
0 1 0 1 = Som m a una cella di m em oria al contenuto di AC
(d) L ista parziale dei codici operativi

Figura 3.4

C a ra tte ristic h e di u n 'ip o te tic a m a c c h in a .

M em oria
300 1 9 4 0
301 5 9 4 1
302 2 9 4 1

M emoria
Registri della CPU
300 1 9 4 0
3 0 0 | PC
AC 301 5 9 4 1
1 9 4 0 IR 302 2 9 4 1

940 0 0 0 3
941 0 0 0 2

940 0 0 0 3
941 0 0 0 2
Passo 2

Passo 1
M em oria
300 1 9 4 0
301 5 9 4 1
302 2 9 4 1
940 0 0 0 3
941 0 0 0 2
Passo 3

Registri
3
0
5

Memoria
della CPU
300 1 9 4 0
0 11 PC
0 0 3 AC 301 5 9 4 1
9 4 1 IR 302 2 9 4 1
940 0 0 0 3
941 0 0 0 2

3+2=5

940 0 0 0 3
941 0 0 0 2

0 0 0
0 0 0 5

Registri della CPU


3 0 3j PC
0 0 0 5
2 9 4 1

M emoria
Registri della CPU
3 0 2 1PC
300 1 9 4 0
0 0 0 5 AC 301 5 9 4 1
2 9 4 1 IR 302 2 9 4 1

F igura 3.5

Registri della CPU


0 ~ 2 ]P C
AC
I 15 9 4 I f xI
\IR

Passo 4

M em oria
300 1 9 4 0
301 5 9 4 1
302 2 9 4 1

Passo 5

Registri della CPU

Passo 6

Esempio di esecuzione di un programma (i dati sono in notazione esadecimale).

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

4. I vecchi contenuti dellAC e i contenuti della locazione 941 vengono sommati e il ri


sultato viene memorizzato nellAC stesso.
5. Listruzione successiva (2941) viene prelevata dalla locazione 302 e il PC viene in
crementato.
6. I contenuti dellAC vengono memorizzati alla locazione 941.
In questo esempio, per sommare i contenuti della locazione 940 ai contenuti della 941 so
no richiesti tre cicli istruzione. Potendo disporre di istruzioni pi complesse, sarebbero sta
ti necessari meno cicli. Alcuni processori, ad esempio, includevano istruzioni contenenti
pi di un indirizzo di memoria. Su tali processori, il ciclo esecutivo di una particolare
istruzione poteva coinvolgere pi di un riferimento alla memoria. Inoltre, alcune istruzio
ni potevano specificare unoperazione di I /O.
Per esempio, listruzione del PDP-11 espressa simbolicamente come ADD A,B me
morizza la somma dei contenuti delle locazioni B e A nella locazione A. Si ha un unico ci
clo di istruzione costituito dai seguenti passi.
Prelievo dellistruzione ADD.
Trasferimento del contenuto della locazione di memoria A nel processore.
Trasferimento del contenuto della locazione di memoria B nel processore. Affinch
il contenuto di A non venga distrutto, il processore deve avere almeno due registri in
vece di un singolo accumulatore.
Somma dei due valori.
Scrittura del risultato nella locazione di memoria A.
Dunque, il ciclo di esecuzione per una particolare istruzione pu implicare pi di un rife
rimento alla memoria. Inoltre, invece di accessi alla memoria, unistruzione pu specifica
re unoperazione di I/O . Tenendo presenti queste considerazioni aggiuntive, la Figura 3.6
fornisce una visione pi dettagliata rispetto al ciclo istruzione base della Figura 3.3. La fi
gura nella forma di un diagramma di stato. Per ogni dato ciclo istruzione, alcuni stati pos
sono essere nulli e altri possono essere visitati pi di una volta. Gli stati si possono descri
vere come segue.
Calcolo indirizzo istruzione (CU) : determina lindirizzo della successiva istruzio
ne da eseguire. Solitamente ci implica la somma di lui numero fissato allindirizzo
dellistruzione precedente. Ad esempio, se ogni istruzione e limga 16 bit e la memo
ria organizzata in parole di 16 bit, allora si somma 1. Sc invece la memoria orga
nizzata in byte di 8 bit indirizzabili individualmente, allora si somma 2.
Fetch (F): legge listruzione dalla memoria e la trasferisce nel processore.
Decodifica istruzione (DI): analizza listruzione per determinare il tipo di opera
zione da eseguire e loperando (o gli operandi) da usare.
Calcolo indirizzo operando (CIO): determina lindirizzo delloperando se lope
razione implica un riferimento a un operando in memoria oppure ottenibile da una
periferica.

3.2 Funzione del calcolatore

Figura 3.6

Diagramma di stato del ciclo m acchina.

Lettura operando (LO) : legge loperando dalla memoria o d a una periferica.


Operazione su dati (OD): esegue loperazione indicata nell'istruzione.
Memorizzazione risultato (MO): scrive il risultato nella memoria o lo invia a una
periferica.
Gli stati nella parte superiore della Figura 3.6 implicano uno scambio tra processore e me
moria o periferiche. Gli stati nella parte inferiore implicano solo operazioni interne al pro
cessore. Lo stato C IO appare due volte, dato che unistruzione pu provocare una lettura,
una scrittura o entrambe. In ogni caso, lazione eseguita in questo stato fondamental
mente la stessa nei due casi, dunque c sufficiente un unico nome di stato.
Si noti anche che il diagramma consente operandi e risultati multipli, come richie
sto da alcune istruzioni. Ad esempio listruzione A D D A,B del PDP-11 ha come risultato
la seguente sequenza di stati: CII, F, DI, CIO, LO, CIO , LO, O D , CIO, MO.
Infine, su alcune macchine unistruzione pu specificare unoperazione da eseguire su
un vettore o su una stringa. Come indicato nella Figura 3.6, ci implica una sequenza ci
clica di operazioni.

Interrupt
Praticamente tu tti i calcolatori forniscono un meccanismo che consente ad altri com po
nenti di interrompere la normale elaborazione del processore. La Tabella 3.1 elenca le pi
com uni classi di interrupt. La natura specifica di questi interrupt sar esaminata nei
Capitoli 7 e 12. Tuttavia e necessario introdurre ora il concetto per comprendere con pi
chiarezza la natura del ciclo istruzione. Per ora, il lettore non si deve preoccupare dei det
tagli sulla generazione e sul trattam ento degli interrupt, ma deve concentrarsi sulla co
municazione tra sottosistemi.

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

T ab ella 3.1
P rogram m a

Classi di interrupt._________________________________________________________________________
Generato da una condizione derivante dall esecuzione di unistruzione, quale un overflow
(traboccamento), una divisione per zero, un tentativo di eseguire unistruzione macchina
scorretta o un riferimento al di fuori dello spazio di memoria dellutente.

T im er

Generato da un tim er del processore (che perm ette al sistema operativo di eseguire deter
m inate funzioni a tempi prefissati).

I /O

Generato da un controllore di I/O , per segnalare il regolare completamento di unoperazio


ne o una condizione di errore.

G u asto hardw are

Generato da un guasto (mancanza di alimentazione, errore di parit in memoria, etc.).

Gli interrupt sono previsti sostanzialmente per migliorare lefficicnza dellelaborazione. Per esempio, la maggior parte dei dispositivi esterni molto pi lenta del processo
re. Si supponga che il processore stia trasferendo dati verso una stampante, secondo lo sche
ma della Figura 3.3. D opo ogni istruzione di scrittura, il processore deve fermarsi ad
aspettare chc la stampante completi la scrittura. La durata di questa pausa pu essere del
lordine di molte centinaia o perfino migliaia di cicli macchina (chc non usano la memo
ria). Chiaramente, questo un uso assai poco efficiente del processore.
La Figura 3.7a illustra questo stato di cose. Il programma utente prevede una serie di
chiamate di procedura - W R ITE - inframmezzate da altre operazioni. I segmenti di co
dice indicati con 1, 2 e 3 si riferiscono alle sequenze di istruzioni che non richiedono le pe
riferiche. Le W R IT E si riferiscono a un programma di sistema che effettuer la vera e pro
pria operazione di I/O . Il programma di I/O consiste di tre sezioni.
Una sequenza di istruzioni (etichettata con 4) per predisporre leffettiva operazione
di I/O . Questo pu includere la copia dei dati di output in uno speciale buffer e la
impostazione di alcuni parametri del dispositivo.
Lcffettivo comando di I / O. Senza luso di interrupt, una volta che tale comando vie
ne dato, il programma deve attendere che il dispositivo di I /O esegua la funzione ri
chiesta (o interrogare periodicamente il dispositivo). Il programma potrebbe resta
re in attesa eseguendo ripetutamente un test per determinare se loperazione di I/O
sia stata eseguita.
Una sequenza di istruzioni (etichettata nella figura con 5) per completare lopera
zione. Ci potrebbe includere limpostazione di un flag che indichi il successo o il fal
limento delloperazione.
D ato chc le operazioni di I/O possono richiedere un tempo relativamente lungo, il pro
gramma di I/O resta bloccato in attesa del completamento delloperazione; di conse
guenza, il programma utente rimane fermo nel punto della chiamata W R IT E per un con
siderevole lasso di tempo.

Gli interrupt e il ciclo macchina


Grazie agli interrupt, il processore pu eseguire altre istruzioni mentre in corso unope
razione di I/O . Si consideri il flusso esecutivo nella Figura 3.7b. Come prima, il program
ma utente raggiunge un punto nel quale esegue una chiamata di sistema (W RITE). Il pro
gramma di I/ O invocato in questo caso consiste solo del codice preparatorio c delleffettivo

Program m a
utente

Program m a
en I/O

Program m a
utente

Programm a
li I/O

--

>'

'

Com ando
di I/O

WRTTE

/ x
' - " / /

END
/'

\ /

/
/

/ /
>/ /
W R ITE / '

"

W R IT E /

, 1 1
/ / i

Com ando
di I/ O

W R IT E

y /
^

/ /
/ /
/ /
/ /

/
/

fi / I

U t'

I1

'
/ 1

/
/

Program m a
di I/O

/ '/ " I

X
W R ITE

Program m a
utente

C om ando
di I/O

/
/ /
' /
/ /
' /

s.

/ /
/ /
/ /

G estore
^dellinterrupt

s \/l

/ V

/ /
/ /

G estore
del Iinterrupt

!/r' " - / r i

W R IT E - I

/ I

/ /
/ /
/ /
/ /
/ /
/ /
/ /
//

END

1
END

(/
W RITE
(a) S en za interrupt

Figura 3 .7

W R ITE

W R IT E

(b) C on interrupt; b reve attesa di I/O

(c) C on interrupt; lunga attesa d i I/O

Flusso di co n tro llo di un program m a co n e se n z a interrupt.

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

comando di I/O . Dopo lesccuzionc di queste poche istruzioni, il processore torna a ese
guire il programma utente. Nel frattempo, il dispositivo esterno e occupato ad accettare i
dati dalla memoria del calcolatore e a stamparli. Questa operazione di I/O condotta in
maniera concorrente allesecuzione delle istruzioni del programma utente.
Quando il dispositivo esterno pronto ad accettare altri dati dal processore, il rela
tivo modulo di I/O manda al processore un segnale di richiesta di interrupt. Il processore
risponde sospendendo le operazioni del programma corrente, saltando a un programma
per servire quel particolare dispositivo di I/O , noto come gestore di interrupt (interrupt
handler), e riprendendo Tcsecuzione originaria dopo chc la richiesta del dispositivo sta
ta soddisfatta. Nella Figura 3.7b i punti nei quali avvengono le interruzioni sono indicati
con un asterisco.
Dal punto di vista del programma utente, un interrupt solo uninterruzione del nor
male flusso esecutivo. Qiiando la routine di interrupt completata, viene ripresa lesecu
zione del programma utente (Figura 3.8). Dunque i programmi utente non devono con
tenere alcun codice speciale per gestire gli interrupt; il processore e il sistema operativo
sono responsabili della sua sospensione e della sua ripresa a partire dallo stesso punto.
Per agevolare gli interrupt, viene aggiunto al ciclo di istruzione un ciclo di interrupt
(interrupt cycle), come mostrato nella Figura 3.9. In esso, il processore controlla se e avve
nuto qualche interrupt, il che e indicato dalla presenza di un segnale di interrupt. Se non
vi sono interrupt pendenti, il processore procede al ciclo di prelievo e legge la successiva
istruzione del programma corrente. Se invece c un interrupt pendente, il processore ope
ra come segue.
Sospende lesecuzione del programma attualmente in esecuzione e salva il suo con
testo. Questo significa memorizzare lindirizzo della prossima istruzione da eseguire
Program m a utente

O ccorrenza
d ell'in terru p t

Figura 3 .8

/+ 1

Trasferimento di controllo via interrupt.

G estore d ell'interrupt

3.2 Funzione del calcolatore

F a s e d i fe tc h

Figura 3.9

F a s e e s e c u tiv a

C ic lo d i in te r r u p t

C iclo istruzione con interrupt.

(lattuale contenuto del program counter) c ogni altro dato rilevante per lattivit cor
rente del processore.
Imposta il program counter al lindirizzo di partenza di una routine per la gestione
dellinterrupt.
Il processore procede poi al ciclo di fetch e legge la prima istruzione del programma di ge
stione dcllintcrrupt (che di solito fa parte del sistema operativo). Generalmente determi
na la natura dellinterrupt ed esegue le azioni necessarie. Nellesempio chc abbiamo utiliz
zato, il gestore determina quale periferica ha generato lintcrrupt c pu saltare a un
programma chc scriver dati sulla periferica. Qiiando la routine di gestione termina, il pro
cessore riprendeIcsccuzionc del programma utente dal punto dellinterruzione.
chiaro chc in questo processo si verifichi dell 'overhead, nel senso che il gestore dcllinterrupt deve eseguire istruzioni extra per determinare la natura dellinterrupt e per de
cidere lazionc appropriata. Ciononostante, a causa del tempo relativamente abbondante
che si sarebbe perso nellattesa di unoperazione di I/O , luso degli interrupt garantisce un
pi intenso utilizzo del processore.
Per apprezzare il guadagno in efficienza, si consideri la Figura 3.10, chc rappresenta un
diagramma temporale basato sul flusso di controllo delle Figure 3.7a c 3.7b. Si assuma an
che chc il tempo richiesto per loperazione di I /O sia relativamente breve: meno del tem
po richiesto per completare lesecuzione delle istruzioni tra le operazioni di scrittura nel pro
gramma utente. Il caso pi tipico, specialmente per un dispositivo lento quale una
stampante, chc le operazioni di I/O impieghino molto pi tempo dellesecuzione di una
sequenza di istruzioni utente. La Figura 3.7c indica questo stato di cose. In tal caso, il pro
gramma utente raggiunge la seconda chiamata W RITE prima che loperazione di I /O in
vocata precedentemente sia stata completata. Il risultato che il programma utente viene
bloccato in quel punto. Solo quando la precedente operazione di I/O viene completata pu
essere trattata la nuova chiamata W RITE e pu iniziare una nuova operazione di I / O. La
Figura 3.11 mostra la temporizzazione di questa situazione con e senza luso di interrupt.
Possiamo vedere chc si ottiene ancora un guadagno in efficienza, dato che parte del tempo
in cui loperazione di I/O c in corso si sovrappone allesecuzione delle istruzioni utente.

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Tempo

A tte sa d el

O perazione di I/O

p ro c e ss o re

Attesa del
processore

Figura 3.10

O perazione di I/O

(a)

(2 a)

,3 a )

O perazione di I/O

O perazione di I/O

(b) C on interrupt

Senza interrupt
Temporizzazione del programma: breve attesa di I/O.

La Figura 3.12 mostra un diagramma di stato del ciclo macchina rivisto, che ora include
lelaborazione degli interrupt.
Interrupt multipli

La discussione fin qui si concentrata sulloccorrenza di un solo interrupt. Si supponga,


invece, chc possano avvenire interrupt multipli. Ad esempio, un programma potrebbe ri
cevere dati da una linea di comunicazioni e stampare i risultati. La stampante generer un
interrupt ogni volta che completa un operazione di stampa. Il controllore della linea di co
municazioni generer un interrupt ogni volta che arriva ununit di dati. Lunit potrebbe
essere sia un carattere sia un blocco di caratteri, a seconda del tipo di comunicazione. In
ogni caso, mentre viene gestito un interrupt di stampa c possibile che avvenga un interrupt
di comunicazione.

3.2 Funzione del calcolatore

Tem po

Attesa del
processore

O perazione di I/O

O perazione di I/O

>' :

SS n

A tte sa d el
p ro c e ss o re
'

Figura 3 .1 1

A ttesa del
processore

(a)

O perazione di I/O

O perazione di I/O

(b) Con interrupt

Senza interrupt

Tem porizzazione del programma: lunga attesa di I/O.

Per trattare gli interrupt multipli si possono usare due approcci. Il primo c disabilitare gli
interrupt durante lelaborazione di un interrupt. Un interrupt disabilitato implica sempli
cemente che il processore pu e deve ignorare il segnale di richiesta di interrupt. Se durante
questo tempo avviene un interrupt, generalmente esso rimane pendente c sar controlla
to dal processore dopo la riabilitazione degli interrupt. Dunque, gli interrupt che si veri
ficano durante !esecuzione di un programma vengono immediatamente disabilitati. Dopo
il termine della routine di gestione relativa, essi vengono abilitati prima della ripresa del
programma utente, e il processore controlla se ne siano avvenuti altri. Qiicsto approccio

L e ttu ra
o p era n d o

A ltri o p eran d i

C a lc o lo
in d irizzo
istru zio n e

Fig u ra 3 .1 2

D eco d ifica
istru zio n e

C a lc o lo
in d irizzo
o p era n d o

O p era zio n e
su d ati

Istru z io n e co m p letata,

R ito rn o per

fc tc h d ella su c cessiv a istru zio n e

strin g h e e vettori

D iag ra m m a di stato del c ic lo m a c c h in a , co n interrupt.

82
Sistema di elaborazione Capitolo

C a lco lo
in d irizzo
risu lta to

N essu n
interrupt

C o n tro llo

In terru p t

3 - Visione ad alto livello delle funzioni

A ltri risu ltati

3.2 Funzione del calcolatore

P ro g ram m a utente

Gestione
d e ll'in te rru p t X

(a) E laborazione sequenziale degli in terru p t

P ro g ram m a utente

Gestione
dellin te rru p t X

a
Gestione
dellin te rru p t Y

\
\

(b) E laborazione an n id ata degli in te rru p t

Figura 3.13

Trasferimento di controllo con interrupt multipli.

semplice e pulito, dato che gli interrupt sono gestiti in ordine strettamente sequenziale
(Figura 3.13a).
Lo svantaggio per che non si tiene conto di fattori di priorit o di tempistica. Per
esempio, Tinput dalla linea di comunicazioni potrebbe richiedere di essere assorbito rapi
damente per fare posto ad altro input. Sc il primo lotto non stato elaborato prima del
larrivo del secondo, i dati potrebbero venire smarriti.
Un secondo approccio consiste nel definire le priorit per gli interrupt e consentire
a un interrupt di priorit pi alta di interrompere il trattamento di un interrupt a priorit
inferiore (Figura 3.13b). Come esempio, si consideri un sistema con tre dispositivi di I/O :
ima stampante, un disco e una linea di comunicazione, con priorit rispettivamente di va
lore 2,4 e 5. La Figura 3.14 illustra una possibile sequenza. Un programma utente inizia al
listante / = 0 . A r = 10 si verifica un interrupt di stampa; linformazione utente viene posi
zionata sulla pila di sistema e lesecuzione procede con la routine di servizio dcHinterrupt

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

P rogram m a utente

Figura 3.14

ISR della stam pante

della linea
di com unicazione

Esempio di sequenza temporale di interrupt multipli.

(ISR) di scampa. Mentre questa routine ancora in esecuzione, a / = 15, avviene un inter
rupt di comunicazione. Poich la linea di comunicazioni ha una priorit pi alta della
stampante, viene gestito tale interrupt. LISR della stampante viene interrotto, il suo stato
viene memorizzato sulla pila e lesecuzione procede con I ISR di comunicazione. Mentre
questa routine e in esecuzione, avviene lui interrupt di disco (/ = 20). Poich questo inter
rupt ha una priorit pi bassa, esso viene semplicemente mantenuto e viene completata la
procedura dellinterrupt di comunicazione.
Q uando ci avviene (/= 2 5 ), viene ripristinato il precedente stato del processore, os
sia Icsecuzionc dcllISR di stampa. Tuttavia, prima ancora di eseguire anche solo unistru
zione di tale routine, il processore onora linterrupt del disco, che ha priorit superiore, e
il controllo passa allISR del disco. LISR di stampa viene ripresa solo quando la routine del
disco c stata completata (/ = 35). Quando anche questultima routine finisce (t = 40), il con
trollo finalmente ritorna al programma utente.

Funzioni di I/O
Finora abbiamo trattato le operazioni del calcolatore controllate dal processore, conside
rando principalmente linterazione tra processore e memoria. Ora conviene riportare un
breve riassunto del ruolo dei componenti di I/O (chc saranno trattati in modo approfon
dito nel Capitolo 7).
Un modulo di I/O (ad esempio il controllore del disco) pu scambiare dati diretta
mente con il processore. Proprio come il processore, esso pu innescare una lettiua in me
moria, designando lindirizzo di una specifica locazione. A sua volta il processore pu an
che scambiare dati con un modulo di I /O. In questidtimo caso, il processore identifica una

3.3 Strutture di interconnessione

periferica gestita dal proprio driver. Dunque, si pu verificare una sequenza di istruzioni
simile a quella della Figura 3.5, con istruzioni di I/O anzich riferimenti alla memoria.
In alcuni casi conveniente chc ci siano scambi diretti tra I/O e memoria. In tali si
tuazioni, il processore assegna a un modulo di I/O lautorit di leggere da o scrivere in me
moria, cosicch il trasferimento dati possa avvenire senza lintervento del processore.
Durante tale trasferimento, il modulo di I/O emette comandi di lettiua o scrittura verso
la memoria, liberando il processore dalla responsabilit dello scambio. Qiiesta operazio
ne, nota come accesso diretto alla memoria (DM A, direct memory access) verr esaminata
nel Capitolo 7.

3.3

Strutture di interconnessione

Un calcolatore consiste in un insieme di componenti o moduli di tre tipi fondamentali


(processore, memoria, I / O) che comunicano tra loro. Dunque, devono esserci percorsi di
collegamento che costituiscono la cosiddetta struttura d i interconnessione.
La Figura 3.15 suggerisce i tipi di scambio necessari, indicando le principali forme di
input e output per ogni tipo di modulo.2
Memoria: tipicamente, un banco di memoria consiste di un certo numero di loca
zioni (celle o parole), diciamo A7, tutte della stessa lunghezza. A ognuna di queste vie
ne assegnato un indirizzo numerico univoco, che va da 0 a.N - I. Il contenuto di una
locazione di memoria pu essere letto o scritto. La natura delloperazione c indicata
dai segnali di controllo di lettura e scrittura. La locazione interessata e specificata da
un indirizzo.
Moduli di I/O : da un punto di vista interno al sistema, /O e funzionalmente si
mile alla memoria. Sono possibili due operazioni, la lettura e la scrittura. Inoltre, un
modulo di I/O pu controllare pi di un dispositivo periferico. Le interfacce di que
sti dispositivi sono considerate come porte e viene loro assegnato un indirizzo uni
voco, chc va da 0 a M - 1. Inoltre, ci sono linee dati esterne per linput e loutput dei
dati. Infine, i moduli di I/O possono mandare segnali di interrupt al processore.
Processore: legge le istruzioni e i dati, scrive i dati dopo lelaborazione, usa segnali
di controllo per gestire le operazioni del sistema c pu ricevere segnali di interrupt.
Lelenco precedente definisce i dati da scambiare. Le interconnessioni garantiscono i se
guenti tipi di trasferimento.
Dalla memoria al processore: il processore legge unistruzione o un dato dalla
memoria.
Dal processore alla memoria: il processore scrive un dato in memoria.
D all! / O al processore: il processore legge i dati da una periferica.

2 Lc frecce grandi rappresentano linee di segnale che trasportano bit in parallelo. Qiielle sottili sono linee (seriali)
da un bit.

85

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

L e ttu ra

Figura 3.15

Moduli del calcolatore.

Dal processore allI/O : il processore invia dati alla periferica.


DaUI/O alla memoria o viceversa: in questi due casi, i moduli di I/O possono
scambiare dati direttamente con la memoria, senza passare per il processore, usando
laccesso diretto alla memoria (DMA).
Nel corso degli anni sono state tentate molte strutture di interconnessione. Le pi comu
ni tra queste sono il bus e le varie strutture a bus multiplo. La parte restante del capitolo
dedicata a questo argomento.

3.4 Interconnessione a bus

3.4

Interconnessione a bus

Il bus c un mezzo di comunicazione chc collega due o pi dispositivi. Sua caratteristica pe


culiare c quella di essere un mezzo di trasmissione condiviso. Al bus si collegano pi di
spositivi, c l u i segnale trasmesso da uno di essi disponibile per la ricezione da parte di tut
ti gli altri dispositivi connessi al bus. Sc due dispositivi trasmettono nello stesso periodo
di tempo, il loro segnale si sovrapporr c verr mascherato. Cos, solo un dispositivo per
volta pu trasmettere con successo.
Generalmente, un bus consiste di pi percorsi di comunicazione, detti linee. O gni li
nea in grado di trasmettere segnali chc rappresentano i bit: 0 1. Considerate assieme,
le linee possono trasmettere cifre binarie simultaneamente (in parallelo). Per esempio, un
dato da 8 bit pu essere trasmesso in parallelo da un bus a 8 linee.
I sistemi di elaborazione contengono svariati bus chc forniscono un collegamento tra
i componenti dei vari livelli gerarchici del calcolatore. U n bus chc collega i componenti
principali di un elaboratore (processore, memoria, I/O ) c detto bus d i sistema (system bus).
Le strutture di interconnessione pi comuni sono basate sulluso di uno o pi bus.

Struttura dei bus


Il bus di sistema consiste tipicamente di un numero di linee che va da circa 50 a qualche
centinaio. A ogni linea viene assegnato un particolare significato o funzione. Sebbene esi
stano vari schemi, le lince dei bus possono essere classificate in tre gruppi funzionali
(Figura 3.16): dati, indirizzi c controllo. Inoltre, possono esserci linee per lalimentazio
ne elettrica.
Le linee dati forniscono il percorso su cui viaggiano i dati tra i moduli di sistema, e
considerate collettivamente, sono chiamate bus dati, chc consistono di un numero di linee
separate che va da 32 a qualche centinaio. Il numero di linee viene detto am piezza del bus
dati. Poich ogni linea pu trasportare solo un bit alla volta, il numero di lince determina
quanti bit possano essere trasportati contemporaneamente. Lampiezza del bus dati un
fattore chiave per le prestazioni complessive del sistema. Ad esempio, se il bus dati e largo
8 bit e ciascuna istruzione e lunga 16 bit, il processore deve accedere alla memoria due vol
te per ogni istruzione.

F ig u ra 3 .1 6

Schema di interconnessione a bus.

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Le linee indirizzi vengono impiegate per designare la destinazione dei dati presenti sul
bus dati (o la locazione da cui prelevarli). Ad esempio, se il processore intende leggere un
dato (8,16 o 32 bit) da una locazione di memoria, ne pone lindirizzo sulla linea degli in
dirizzi. Chiaramente, lampiezza del bus degli indirizzi determina la massima quantit di
memoria di un sistema. Inoltre, le lince indirizzi vengono generalmente utilizzate per in
dicare le porte di I/O . In genere, i bit pi significativi vengono usati per selezionare una par
ticolare periferica, e quelli di ordine pi basso individuano una locazione d i memoria o una
porta di I/O allinterno del modulo. Ad esempio, su un bus indirizzi a 8 bit, gli indirizzi
O l l l l l l l e inferiori possono riferirsi a locazioni di un modulo di memoria (il modulo 0)
con 128 parole, e gli indirizzi 10000000 c superiori ai dispositivi collegati a un modulo di
I/O (il modulo 1).
Lc linee di controllo vengono utilizzate per controllare laccesso e luso delle linee da
ti c indirizzi. Poich queste ultime sono condivise da tutti i componenti, ci deve essere un
mezzo per controllare il loro uso. I segnali di controllo trasmettono sia comandi sia infor
mazioni di tcmporizzazionc tra i moduli del sistema. I segnali di temporizzazione indica
no la validit delle informazioni di dati e indirizzi. I segnali di comando specificano le ope
razioni da compiere. Le tipiche linee di controllo includono le seguenti.
Memory write: provoca la scrittura dei dati sul bus alla locazione specificata.
Memory read: posiziona sul bus i dati della locazione specificata.
I/O write: determina linvio dei dati (lungo il bus) alla porta di I /O specificata.
I/O read: posiziona sul bus i dati della porta di I/O specificata.
Transfer ACK: indica che i dati sono stati accettati in uscita dal bus o scritti sul bus
stesso.
Bus request: significa che un modulo vuole prendere controllo del bus.
Bus grant: indica che a un modulo richiedente stato concesso il controllo del bus.
Interrupt request: testimonia la presenza di un interrupt pendente.
Interrupt ACK: prende atto chc !interrupt pendente e stato riconosciuto.
Clock: usato per sincronizzare le operazioni.
Reset: inizializza tutti i moduli.
J i.
Il bus pera come segue. Se un modulo desidera inviare dati a un altro, deve ottenere lu
so del bus e poi trasferire i dati sul bus. Se un modulo desidera richiedere dati da un altro
modulo, deve ottenere luso del bus, trasferire una richiesta allaltro modulo sulle appro
priate linee di controllo e di indirizzo, e poi deve attendere linvio dei dati.
Da un punto di vista fisico, il bus di sistema costituito da vari conduttori elettrici
in parallelo. Nella sua disposizione classica, questi conduttori costituiscono un circuito
stampato. Il bus si estende lungo tutte le componenti del sistema, che si collegano a qual
cuna o a tutte le sue linee. La tipica disposizione fisica mostrata nella Figura 3.17.
Nellesempio, il bus consiste di due colonne verticali di conduttori. Lungo le colon
ne, a intervalli regolari, sono presenti dei punti di attacco (slot) che si estendono orizzon
talmente per sostenere una scheda di circuito stampato. 1 principali componenti occupa
no una o pi piastre e si inseriscono nel bus in corrispondenza di opportune fessure. Lintera
disposizione viene ospitata in un telaio. I sistemi moderni tendono invece ad avere tutti i

3.4 Interconnessione a bus

Bus

Figura 3.17

Tipica realizzazione di un'architettura a bus.

componenti principali sulla stessa piastra con pi elementi sullo stesso chip, come avvie
ne per il processore. Dunque, un bus interno al chip pu connettere il processore c la me
moria cache, mentre un bus interno alla scheda pu connettere il processore alla memo
ria centrale e ad altri componenti.
Qiiesta disposizione la pi conveniente. Un piccolo sistema di elaborazione pu es
sere acquistato e poi espanso (pi memoria, pi I /O) aggiungendo ulteriori schede. Se il
componente di una scheda si guasta, questa pu essere rimossa e sostituita con facilit.

Gerarchie a bus multiplo


Se al bus connesso un gran numero di dispositivi, le prestazioni ne soffriranno, per due
motivi principali.
1. In generale, pi dispositivi sono collegati al bus, pi il bus lungo e il ritardo di pro
pagazione aumenta. Tale ritardo determina il tempo necessario ai dispositivi per
coordinare luso del bus. Quando il controllo del bus passa con frequenza da un di
spositivo a un altro, tali ritardi di propagazione possono influenzare notevolmente le
prestazioni.
2. Il bus pu diventare un collo di bottiglia quando la domanda di trasferimento di da
ti aggregati si avvicina alla capacit del bus. Questo problema pu essere neutraliz
zato in qualche modo incrementando la velocit di trasferimento dei dati sul bus e
usando bus pi ampli (ad esempio passando da 32 a 64 bit). Tuttavia, poich i tassi
di generazione dati dei dispositivi collegati (ad esempio, controllori grafici e video o
interfacce di rete) stanno crescendo rapidamente, la struttura a bus singolo desti
nata a perdere la sfida.
In realt, la maggior parte dei sistemi di elaborazione fa uso di bus multipli, generalmen
te disposti gerarchicamente. Una tipica struttura tradizionale c quella mostrata nella Figura
3.18a. C e un bus, detto bus di memoria , che collega il processore a una memoria cache e

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

M em oria
centrale
Bus locale

Processore

SCSI

Cache/
bridge

FireW ire

Bus di sistem a

G rafica

Interfaccia
del bus di
espansione

FAX

.... -........-...............
(b)
Figura 3.18

Video

LAN

Seriale
M odem

_ _ _ i_ _ _ _ _ _ _ _ _ _ S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ;

Aichitettura ad alte prestazioni

Esempi di configurazioni di bus.

che pu supportare uno o pi dispositivi locali. Il controllore della cache connette que
st ultima al bus locale e al bus di sistema al quale sono attaccati i banchi della memoria cen
trale. Come si vedr nel Capitolo 4, luso di una cachc evita al processore di accedere con

3.4 Interconnessione a bus

eccessiva frequenza alla memoria centrale. Ne deriva chc la memoria centrale pu essere po
sta sul bus di sistema. In questo modo, / scambia dati con la memoria centrale attra
verso il bus di sistema senza interferire con lattivit del processore.
I
controllori di I/O possono essere collegati direttamente al bus di sistema. Una so
luzione pi efficiente consiste nel fare uso di uno o pi bus di espansione. Linterfaccia di
un bus di espansione bufferizza i trasferimenti di dati tra il bus di sistema c i controllori di
I/O sul bus di espansione. Questa disposizione consente al sistema di supportare unam
pia gamma di dispositivi di I/O , isolando allo stesso tempo il traffico dalla memoria al pro
cessore dal traffico di I/O . La Figura 3.1 Ba mostra alcuni esempi di dispositivi di I/O che
dovrebbero essere collegati al bus di espansione. Lc connessioni di rete includono le reti
locali (LAN, locai area network) quali Ethernet, c le connessioni alle reti geografiche
(WAN, wide area network) quali le reti a commutazione di pacchetto. SCSI (small computer
system interface) un tipo di bus usato per collegarc i dischi c altre periferiche. Le porte se
riali sono tipicamente utilizzate per stampanti e scanner.
Questa architettura piuttosto efficiente, ma comincia a vacillare col crescere delle
prestazioni dei dispositivi di I/O . Per affrontare questa situazione Tindustria tende a co
struire bus ad alta velocit strettam ente integrati con il resto del sistema.
La Figura 3.18b mostra una tipica realizzazione di questo approccio. Ancora una
volta, il bus di memoria connette il processore al controllore della cache ed a sua volta
collegato a un bus di sistema chc supporta la memoria centrale. Il controllore della cache
integrato in un bridge, o dispositivo di buffering, che lo connette al bus ad alta velocit.
Questultimo realizza le connessioni alle LAN veloci, quali Fast Ethernet a 100 Mbps,
controllori delle workstation video e grafiche, controllori di interfaccia verso bus locali di
periferica quali SCSI c FireWire. Qiicstultimo uno schema di bus ad alta velocit pro
gettato specificamente per i dispositivi di I/O ad alta capacit. I dispositivi pi lenti sono
ancora collegati a uninterfaccia chc bufferizza il traffico tra il bus di espansione e il bus ad
alta velocit.
In questo schema, il bus ad alta velocit porta i dispositivi veloci a unintegrazione pi
stretta con il processore e allo stesso tempo il bus rimane indipendente dal processore
medesimo. In tal modo, vengono compensate le differenze tra le velocit del processore c
del bus c le definizioni della linea di segnale. I cambiamenti nellarchitettura del processo
re non influenzano il bus ad alta velocit, e viceversa.

Elementi di progettazione del bus


Sebbene esistano varie implementazioni del bus, sono pochi i parametri fondamentali o
gli elementi di progettazione che servono a classificare c differenziare i bus. La Tabella 3.2
elenca gli elementi chiave.

Tipi di bus
Le linee dei bus possono essere di due tipi: dedicate e multiplexate. Una linea dedicata
assegnata in m odo permanente a una funzione o a un sottoinsieme fisico di componenti.
Un esempio di ci c luso di linee dedicate separate per indirizzi e dati, cosa comune
in molti bus, ma non essenziale. Ad esempio, le informazioni di indirizzo e dati possono
essere trasmesse sullo stesso insieme di linee usando una linea di controllo Address Valid.

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Tabella 3.2

Elementi di progettazione del bus.

T ipo

Ampiezza

Dedicano

Indirizzi

Mulciplexato

Dati

M etodo di arbitraggio

T ip o di trasferim ento dati

Centralizzato

Lettura

Distribuito

Scrittura

Tem porizzazione

L ettura-m odifica-scrittura

Sincrona

Lettura dopo scrittura

Asincrona

Blocco

Allinizio del trasferimento dati, lindirizzo posto sul bus e viene attivata la linea Address
Valid. A questo punto, ogni modulo ha un periodo di tempo definito per copiare lindirizzo
e determinare se esso sia il modulo destinatario. Lindirizzo viene quindi rimosso dal bus,
e le stesse connessioni sono usate per i successivi trasferimenti di lettura o scrittura dati.
Questo metodo di uso delle stesse linee per scopi diversi noto come time multiplexing.
Il
vantaggio di questa tecnica consiste nell utilizzo di un numero inferiore di linee, con
conseguente risparmio di spazio ed eventuale abbattimento dei costi. Lo svantaggio c che
allintcrno di ogni modulo sono richiesti circuiti pi complessi. Inoltre, si ha una poten
ziale riduzione delle prestazioni perch certi eventi che condividono le stesse linee non pos
sono aver luogo in parallelo.
Luso di pi bus, ciascuno dei quali connette solo un sottoinsicme di moduli, det
to physical dedication. Un tipico esempio luso di un bus di I / O per connettere tutti i mo
duli di I/O ; questo bus viene poi connesso al bus principale tramite qualche tipo di mo
dulo adattatore. Il vantaggio potenziale di questo schema lalto throughput, conseguenza
di una minore contesa del bus. Gli svantaggi sono rappresentati dalle dimensioni e dai mag
giori costi del sistema.
Metodo di arbitraggio

In tutti i sistemi, tranne i pi semplici, pi di un modulo pu avere necessit del control


lo del bus. Per esempio, un modulo di I/O pu dover leggere o scrivere direttamente in me
moria, senza inviare i dati al processore. Poich, di volta in volta, solo ununit pu tra
smettere con successo sul bus, sono necessari metodi di arbitraggio. Questi possono essere
classificati approssimativamente in centralizzati o distribuiti. In uno schema centralizza
to, un dispositivo - detto controllore del bus (bus controller) o arbitro (arbiter) - decide
a chi assegnare il bus. Il dispositivo pu essere un modulo separato o una parte del pro
cessore. Negli schemi distribuiti invece non esiste un controllore centrale. Al contrario, i
moduli seguono un algoritmo di controllo daccesso e cooperano nella condivisione del
bus. Entrambi i metodi di arbitraggio, hanno lo scopo di designare un dispositivo, sia es
so il processore o un modulo di I/O , come gestore (master). Il gestore pu dunque inizia
re un trasferimento dati verso un altro dispositivo che agisce con ruolo subalterno (slave)
per quel particolare scambio.

3.4 Interconnessione a bus

Clock
Linee di stato

Linee indirizzi -----

Attivazione degli indirizzi

Ciclo di lettu ra

> I

Indirizzo stabilizzato

> -

V
~^J)ati validi i n ^

I
I

Linee
dati
S crittu ra

Figura 3.19

<

Segnali di stato

Linee
dati
L ettura

Ciclo di sc rittu ra

<

Dati validi out

Temporizzazione delle operaz oni con bus sincrono.

Temporizzazione
La temporizzazione, che pu essere sincrona o asincrona, si riferisce al modo in cui gli even
ti sono coordinati sul bus.
Con la tem porizzazione sincrona, Ioccorrenza degli eventi sul bus c determinata da
un clock. Il bus ha una linea di clock sulla quale trasmette una sequenza alternata di I e O
di uguale durata. La trasmissione della coppia 1-0 viene detta ciclo di clock (clock cycle)
o ciclo di bus (bus cycle) e definisce un intervallo di tempo. Tutti gli altri dispositivi sul bus
sono in grado di leggere la linea di clock, c tutti gli eventi partono all'inizio di un ciclo di
clock. La Figura 3.19 mostra un tipico diagramma di temporizzazione semplificato per le
operazioni di lettura e scrittura sincrone (si veda lAppendice 3A per una descrizione dei
diagrammi di temporizzazione). Sul fronte di guida del segnale di clock (con un leggero
ritardo di reazione) potrebbero cambiare altri segnali del bus. La maggior parte degli even
ti ha la durata di un singolo ciclo di clock. In questo semplice esempio il processore pone
un indirizzo di memoria sulle linee di indirizzo durante il primo ciclo di clock (e pu as
serire varie linee di stato). Quando le linee di indirizzo sono state stabilizzate, il processo
re emette il segnale di abilitazione dclTindirizzo. Per unoperazione di lettura, il processo
re emette allinizio del secondo ciclo un comando di lettura. Un blocco di memoria
riconosce Tindirizzo e, dopo un ritardo di un ciclo, posiziona i dati sulle lince dati. Per uno
perazione di scrittura, il processore pone i dati sulle linee dati allinizio del secondo ciclo
ed emette un comando di scrittura dopo che le linee dati si sono stabilizzate. Il blocco di
memoria copia linformazione dalle lince dati durante il terzo ciclo di clock.

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

L in ee di stato

Linee indirizzi

Lettura

Segnali di stato

Indirizzo stabilizzato

------- S_____________________ /

L inee dati
Acknow ledge

Dati validi

--------------- \ _____________ /
(a ) C ic lo d i le ttu ra d e l b u s di s iste m a

L in ee di stato

Segnali di stato

L in ee indirizzi

In d irizzostab ilizzato

Linee dati
Scrittura

A cknow ledge

Dati validi

.....

--------- S________________/

-------- \___

(b)
Figura 3.20

Ciclo di scrittura del bus di sistema

Temporizzazione delle operazioni con bus asincrono.

Con la temporizzazione asincrona, loccorrenza di un evento sul bus dipende dalloceorrenza di un evento precedente. Nel semplice esempio di lettura della Figura 3.20a, il pro
cessore pone sul bus i segnali di indirizzo c di stato. D opo aver atteso che questi segnali si
stabilizzino, emette un comando di lettura, indicando la presenza di segnali di indirizzo c
di controllo validi. La memoria appropriata decodifica lindirizzo e risponde mettendo i
dati sulla linea dati. Una volta che le lince dati si sono stabilizzate, il modulo di memoria
asserisce la linea di avvenuto acknowledge per segnalare al processore che i dati sono di
sponibili. D opo che il gestore ha letto i dati dalle linee relative, annulla il segnale di lettu
ra. Ci comporta che il blocco di memoria rinunci al possesso del bus. Infine, una volta li
berata la linea di acknowledge, il gestore rimuove linformazione di indirizzo.

3.4 Interconnessioneabus

La Figura 3.20b mostra una semplice operazione di scrittura asincrona. In questo ca


so, il gestore posiziona i dati sulla linea dati nello stesso m omento in cui pone i segnali sul
le linee di stato e di indirizzo. Il blocco di memoria risponde al comando di scrittura co
piando i dati dalle linee dati e poi asserendo la linea di acknowledge. Il gestore annulla il
segnale di scrittura e il modulo di memoria annulla il segnale di acknowledge.
La prima strategia c pi semplice da implementare e da collaudare, ma meno fles
sibile rispetto alla temporizzazione asincrona. Poich tutti i dispositivi su un bus sincro
no sono legati a una frequenza di clock fissa, il sistema non pu avvantaggiarsi delle mi
gliorie nelle prestazioni dei dispositivi. Con la temporizzazione asincrona, un bus pu
essere condiviso da dispositivi lenti e veloci.
Am piezza del bus

Lampiczza del bus dati ha impatto sulle prestazioni del sistema: pi ampio il bus, pi
grande il numero di bit trasferibili contemporaneamente. Lampiezza del bus indirizzi ha
im patto sulla capacit del sistema: pi ampio il bus di indirizzo, maggiore il numero di
locazioni indirizzabili.
Tipo di trasferimento dati
Infine, com e m ostrato nella Figura 3.21, i bus supportano vari tipi di trasferim ento dati.
T utti i bus supportano sia la scrittura (dal gestore al subordinato) sia la lettura (dal su
b ordinato al gestore). I bus multiplexati, prim a sono utilizzati per specificare lindirizzo e
poi per trasferire i dati. In LLnoperazione di lettura, si manifesta tipicam ente una pausa m en
tre i dati vengono prelevati dal subordinato per essere posti sul bus. Per una lettura o una
scrittura, si potrebbe verificare Lin ritardo se fosse necessario passare attraverso larbitrag
gio per ottenere il controllo del bus per il resto delloperazione (ad esempio, prendere il con
trollo del bus per richiedere una lettura o una scrittura, e poi riprenderlo per eseguire una
lettura o una scrittura).

Nel caso di bus dedicati, lindirizzo viene posto sul bus indirizzi e l rimane mentre i
dati vengono posti sul bus dati. Per unoperazione di scrittura, il gestore pone i dati sul bus
dati non appena Tindirizzo si stabilizzato e il subordinato ha avtito lopportunit di ri
conoscere il proprio indirizzo. Per unoperazione di lettura, il subordinato pone i dati sul
bus dati non appena ha riconosciuto il proprio indirizzo e ha prelevato i dati.
Alcuni bus possono anche svolgere operazioni combinate. Unoperazione di read-modify-write e scmpliccmcntc una lettura seguita immediatamente da una scrittura allo stes
so indirizzo chc viene trasmesso solo una volta allinizio delloperazione. Lintera operazione
generalmente indivisibile per evitare interferenze da parte di altri potenziali gestori del
bus. Il principale scopo di questa operazione la protezione delle risorse di memoria con
divise nei sistemi multiprogrammati (vedi Capitolo 8).
Read-after-ivrite c unoperazione indivisibile, che consiste in una scrittura seguita im
m ediatam ente da una IettLira dallo stesso indirizzo. Loperazione di lettura pu essere ese
guita a scopo di verifica.

Alcuni bus supportano anche il trasferimento di blocchi di dati. In questo caso, un in


dirizzo seguito da n dati. Il primo elemento di dati trasferito verso lindirizzo specificato
o a partire da esso; gli altri elementi sono trasferiti verso o a partire dai successivi indirizzi.

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Tempo

Tempo
Indirizzo
(secondo ciclo)

' Indirizzo
(prim o ciclo)

Indirizzo

Scrittura (m ultiplexata)

Dati e indirizzi inviati dal


gestore n ello stesso ciclo
su linee di bus separate.

S crittura (non m ultiplexata)


Tempo
di
accesso

Indirizzo

Dati

Lettura (m ultiplexata)

Tempo
Indirizzo

..

dati

Scrivi
dati

read-m odify-w rite

Scrivi
dati

Indirizzo

_
Dati

Lettura (non m ultiplexata)

Leggi
dati

read after write

Indirizzo

Dati

Dati

Dati

Trasferim ento di un blocco di dati


Figura 3.21

3.5

Tipi di trasferimento dati sul bus.

PCI

Linterconnessione di componenti periferici (PCI ,peripheral component interconnect) un


diffuso bus ad alta ampiezza di banda e indipendente dal processore chc pu funzionare
come bus di periferica. Rispetto ad altri bus, il PCI induce migliori prestazioni nei sotto
sistemi di I/O ad alta velocit (adattatori grafici, controllori di interfaccia di rete, con
trollori di disco c cos via). Lo standard corrente permette luso di linee dati a 66 M H z fi
no a un numero di 64, per una frequenza di trasferimento grezza di 528 Mbyte/s o 4,224
Gbps. Ma non c solo lalta velocit a rendere attraente il PCI. Esso specificamente pro
gettato pervenire incontro, da un punto di vista economico, alle richieste di I/O dei mo
derni sistemi e richiede un numero estremamente ridotto di chip per implementare e sup
portare altri bus collegati al bus PCI.
Intel inizi a lavorare sul PCI nel 1990, per i suoi sistemi basati su Pentium. Lazienda,
quindi, rese pubblici tutti i brevetti e incoraggi la creazione di unassociazione industria-

3.5 PCI

le, la PCI SIG1per sviluppare e mantenere la compatibilit delle specifiche PCI. Il risulta
to e chc PCI c stato ampiamente adottato e sta trovando un crescente impiego allinterno
di personal computer, workstation e server. Poich le specifiche sono di pubblico domi
nio e sono supportate da una vasta sezione nellindustria dei microprocessori e delle peri
feriche, i prodotti PCI costruiti da differenti produttori sono compatibili.
PCI progettato per supportare varie configurazioni di sistema, includendo i siste
mi sia a singolo processore sia a processore multiplo. Di conseguenza, fornisce un insieme
di funzioni generiche, c fa uso di temporizzazione sincrona e di uno schema di arbitraggio
centralizzato.
La Figura 3.22a mostra un tipico uso di PCI in un sistema monoproccssorc. Un con
trollore DRAM e un bridge verso il bus PCI forniscono un accoppiamento stretto con il
processore e la capacit di trasportare dati ad alta velocit. Il bridge agisce come un buffer
dati, di modo chc la velocit del bus PCI possa differire da quella di I/O del processore.
In un sistema multiproccssorc (Figura 3.22b), una o pi configurazioni PCI possono es
sere connesse tramite bridge al bus di sistema del processore. Il bus di sistema supporta so
lo le unit processore/cache, la memoria centrale e i bridge PCI. Ancora una volta, fuso
di bridge mantiene il PCI indipendente dalla velocit del processore e pu ricevere e tra
sportare rapidamente i dati.

Struttura del bus


Il PCI pu essere configurato a 32 o 64 bit. La Tabella 3.3 definisce le 49 linee di segnale
obbligatorie per il PCI. Queste sono divise nei seguenti gruppi funzionali.
Contatti di sistema: includono i contatti di clock c reset.
Contatti di indirizzo e di dati: comprendono 32 lince multiplexate per gli indiriz
zi e i dati. Le altre linee di questo gruppo sono usate per interpretare c validare le li
nee di segnale chc trasportano indirizzi e dati.
Contatti di controllo deHinterfaccia: controllano la temporizzazione delle transa
zioni c forniscono coordinamento tra chi d inizio alle transazioni e le destinazioni.
Contatti di arbitraggio: a differenza delle altre linee di segnale del PCI, queste non
sono condivise: ogni gestore PCI ha una propria copia di linee di arbitraggio che lo
connettono direttamente allarbitro del bus PCI.
Contatti di comunicazione degli errori: usati per comunicare errori di parit o
altro.
Inoltre, le specifiche PCI definiscono 51 linee di segnale opzionali (Tabella 3.4), suddivi
se nei seguenti gruppi funzionali.
Contatti di interrupt: servono per i dispositivi PCI che devono generare richieste
di servizio. Anche queste linee non sono condivise: ogni dispositivo PCI possiede una
propria linea di interrupt o linee verso un controllore di interrupt.
Contatti di supporto alla cache: sono necessari per supportare una memoria sul
PCI (di cui pu esistere una copia cache nel processore o in un altro dispositivo).
Qpcsti contatti supportano protocolli snoopy cache (Capitolo 18).

97

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Processore
Cache
Controllo
del
bridge

Audio

A nim azione

DRAM

Bus PCI

LAN

SCST

Bridge del bus


di espansione

G rafica
Dispositivi
di I/O di base

(a) Desktop

F igura 3 .2 2

Esem pi di c o n fig u ra z io n i PCI.

Contatti di estensione del bus a 64 bit: includono 32 linee multiplexate tra indirizzi
e dati e combinate con le linee indirizzi/dati obbligatorie a formare un bus indiriz
zi/dati a 64 bit. Altre linee di questo gruppo sono usate per interpretare e validare le
linee di segnale chc trasportano indirizzi e dati. Infine, ci sono due linee che attivano
due dispositivi PCI per concordare luso della capacit di 64 bit.
Contatti di scansione JTAG/boundary: supportano le procedure di testing definite
nello standard IEEE 1149.1.

3.5 PCI

Tabella 3.3

Linee di segnale PCI standard.

Designazione

T ip o

D escrizione

CLK

in

Fornisce la temporizzazione per tutte le transazioni ed campionato dagli input sul fron
te di salita. Sono supportati clock fino alla frequenza di 33 M Hz.

RST#

in

Inizializza i registri PCI, i sequencer c i segnali.

AD [31::0]

t/s

Linee multiplexate per indirizzi e dati

C/BE[3::0]#

t/s

Comando di bus multiplexato e segnali di abilitazione dei byte. Durante la tase dati, le
linee indicano quali delle quattro corsie dei byte trasportino dati significativi.

PAR

t/s

Parit pari per Ic linee AD e C /B E dopo un ciclo di clock. PAR impostato dal gestore,
nelle fasi di scrittura, e dal destinatario nella fase di lettura.

FRAME#

s/t/s

Impostato dal gestore corrente per indicare linizio e la durata di una transazione. asse
rito allinizio e negato quando liniziatore pronto a dare il via alla fase dati finale.

1RDY#

s/t/s

Initiator Ready. Impostato dal gestore corrente (iniziatore della transazione). Durante
una lettura, indica che il gestore pronto ad accettare i dati; durante una scrittura, indica
che su A D sono presenti dati validi.

TRDY#

s /t/s

Target Ready. Impostato dal destinatario (dispositivo selezionato). Durante una lettura,
indica che su AD sono presenti dati validi; durante una scrittura, indica che il destinatario pronto ad accettare i dati.

STOP#

s /t/s

Indica che lattuale destinatario desidera che liniziatore ponga termine alla transazione
corrente.

IDSEL

in

Initialization Device Select. Usato come un selettore di chip (ch ip select).

DEVSEL

in

Selezione periferica. Asserito dal dispositivo che ha riconosciuto il proprio indirizzo.

REQ#

t/s

Indica allarbitro che il dispositivo richiede luso del bus.

G N T#

t/s

Indica al dispositivo che larbitro ha concesso laccesso al bus.

PERR#

s /t/s

Parity Error. Indica il rilevamento di un errore di parit sui dati da parte di un destinatario (in scrittura) o da parte di un iniziatore (in lettura).

SERR#

o /d

System Error. Pu essere attivato da ogni dispositivo per riportare errori di parit sugli
indirizzi e altri errori critici.

fiM

C ontatti di controllo di interfaccia

M H ttM lI I

C o n tatti di arbitraggio

:.'."::.:":*:*'

llili!P lililj| | I I H 1|||||

C ontatti di resoconto degli errori

Comandi PCI
Lattivit del bus si esplica nella forma di transazioni tra un iniziatore (initiator ), o gestore
(master), c un destinatario (target). Quando un gestore del bus ne acquisisce il controllo,
esso determina il tipo della prossima transazione. D urante la fase di indirizzamento della
transazione, le linee C /B E vengono utilizzate per segnalare il tipo di transazione. I co
mandi sono:
Interrupt Acknowledge
Special Cycle

99

100

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

T ab ella 3 .4

Linee di segnale PCI opzionali.

D esigna/ione

T ipo

Descrizione

_________

MH

jpOOOOOCCBBtBOOQPOwW
OwC
INTA#

C o n tatti di im e n ttp t

o /d

Usato per richiedere un interrupt.

INTB#

o /d

Usato per richiedere un interrupt (solo su dispositivi multifunzione).

IN TC*

o /d

Usato per richiedere un interrupt (solo su dispositivi multifunzione).

IN TI)#

o /d

Usato per richiedere un interrupt (solo su dispositivi multifunzione).

C o n ta ttid isu p p o rto a U a c a c h e

SBO*

in/out Snoop Backoft. Indica che una linea stata modificata.

SD O N E

in,/out Snoop Done. Indica lo stato dellindagine [snoop) corrente. Asserito quando la ricerca
completata.

!IIiIiJB

C o n tatti di estensione del bus a 64 bit

;:: 9

AD[63::32]

t/s

Linee multiplexatc per indirizzi e dati usate per estendere il bus a 64 bit.

C/BE[7::4]#

t/s

Comando di bus multiplexato e segnali di abilitazione dei byte. Durante la fase


indirizzi, le linee forniscono ulteriori comandi di bus. Durante la fase dati, le linee
indicano quali delle quattro corsie estese dei byte trasportino dati significativi.

REQ64#

s/t/s

Usato per richiedere trasferimenti a 64 bit.

ACK64#

s /t/s

Indica che il destinatario desidera eseguire un trasferimento a 64 bit.

PAR64

t/s

Fornisce parit pari per le linee A l) e C /B E dopo un ciclo di clock.

TCK

in

Test clock. Usato per temporizzarc le informazioni di stato e per testare dati in ingresso
e uscita.

Pin JTAGVBoumfary Scan

SSftfIllll \

TDI

in

Test input. Usato per acquisire serialmente dati e istruzioni.

TDO

out

Test output. Usato per emettere serialmente dati e istruzioni.

TM S

in

Test Mode Select. Usato per controllare lo stato del controllore di porta.

TRST*

in

Test Reset. Usato per iniziaiizzare il controllore di porta.

in
out
t/ s
s /t/s
o/ d

S egnale di so lo ingresso.
S egnale di sola uscita.
S egnale d i I / O bid ire zio n a le e tri-stato .
S egnale tri-s ta to so ste n u to , g e stito d a u n u n ico p ro p rie ta rio p e r volta,
O p e n d ra in : c o n sen te la con d iv isio n c.
L o sta to attiv o del segnale c o rrisp o n d e alla bassa tensione.

I/O Read
I/O Write
Memory Read
Memory Read Line
Memory Read Multiple
Memory Write
Memory Write and Invalidate
Configuration Read
Configuration Write
Dual Address Cycle

JJj

3.5 PCI

Tabella 3.5

Interpretazione dei comandi di scrittura PCI._________________________________________

T ip o d i com ando

Per m em oria con cachc____________Per m em oria senza cache

Memory Read

Legge mezza linea di cache (o meno) Due trasferimenti (o meno)

Memory Read Line

Legge da 1,5 a 3 linee di cache

Memory Read Multiple Legge pi di 3 linee di cache

Esegue da 3 a 12 trasferimenti dati consecutivi


Esegue pi di 12 trasferimenti dati consecutivi

Interrupt Acknowledge un comando di lettura destinato al dispositivo che funziona co


me controllore di interrupt sul bus PCI. Durante la fase di indirizzamento, le linee indi
rizzo non sono usate e le linee di abilitazione del byte indicano la dimensione dellidenti
ficatore di interrupt che verr restituito. Il com ando Special Cycle viene usato
dalliniziatore per trasmettere un messaggio a uno o pi destinatari.
Con i comandi I/O Read c W rite vengono trasferiti i dati tra liniziatore e un con
trollore di I/O . I dispositivi di I/O hanno il loro spazio di indirizzamento, e le linee indi
rizzo indicano un particolare dispositivo e specificano i dati da trasferire da o verso quel
dispositivo. Il concetto di indirizzi di I/O sar affrontato nel Capitolo 7.
I comandi M emory Read e Write sono utilizzati per il trasferimento di un blocco da
ti (che occupa uno o pi cicli di clock). Linterpretazione di questi comandi dipende dal
fatto che il controllore della memoria sul bus PCI sia in grado di supportare il protocollo
PCI per i trasferimenti tra memoria e cache. In caso positivo, il trasferimento dati con la
memoria avviene in termini di interi blocchi (o linee) di cache.3 Luso dei tre comandi
Memory Read c riportato nella Tabella 3.5. Il comando Memory Write e usato per trasfe
rire i dati in memoria. Il comando Memory Write and Invalidate trasferisce i dati in me
moria e garantisce chc sia scritto almeno un blocco di cache. Qiiesto comando esegue la
copia di un blocco di cachc nella memoria centrale (write back).
Due altri comandi consentono la lettura e laggiornamento dei parametri di confi
gurazione, che avviene utilizzando appositi registri interni.
II comando Dual Address Cycle viene impiegato per indicare lindirizzamcnto a 64 bit.

Trasferimento dati
Ogni trasferimento dati sul bus PCI una singola transazione consistente in una fase di indi
rizzo e una o pi fasi di dati. In questo paragrafo affrontiamo una tipica operazione di lettura.
La Figura 3.23 mostra la temporizzazione della transazione di lettura. Tutti gli even
ti sono sincronizzati con il fronte di discesa del clock, chc avviene a met di ogni ciclo di
clock. I dispositivi sul bus campionano le linee del bus sul fronte di salita allinizio del ci
clo di bus. Seguono gli eventi significativi, con le loro etichette sul diagramma.
a. Una volta che il gestore del bus ne ha preso il controllo, pu iniziare la transazione
asserendo FRAME. Qiiesta linea rimane asserita finch liniziatore pronto a com
pletare lultima fase di dati. Liniziatore pone anche !indirizzo di partenza sul bus in
dirizzi, e il comando di lettura sulle linee C/BE.
b. Allinizio del secondo ciclo di clock il destinatario riconosce il proprio indirizzo sul
le linee AD.
31 principi fondamentali della memoria cache sono descritti nel Capitolo 4; i protocolli di cachc basata sul bus so
no descritti nel Capitolo 17.

101

FRAME#

AD

C/BE#

IRDY#

TRDY#

DEVSEL#
F ase indirizzi

F ase dati
S tato di attesa

F ase dati

F ase d ati

S tato d i attesa

S ta to di attesa

-T ransazione su l b u s---------

Figura 3 .2 3

O p erazio ne di lettura PCI.

3.5 PCI

c. Liniziatore smette di utilizzare il bus AD. Un ciclo di inversione (indicato dalle due
frcccc circolari) richiesto su tutte le linee di segnale che possono essere utilizzate da
pi di un dispositivo, cosicch la caduta del segnale di indirizzo prepara il bus per lu
so da parte del dispositivo di destinazione. Liniziatore cambia linformazione sulle li
nee C /B E per designare quali linee AD vanno usate per il trasferimento dei dati at
tualmente indirizzati (da 1 a 4 byte). Liniziatore asserisce anche IRDY per indicare
chc c pronto per il primo elemento di dati.
d. Il destinatario selezionato asserisce DEVSEL per indicare che ha riconosciuto il suo
indirizzo e chc risponder. Posiziona i dati richiesti sulle linee AD e asserisce TRDY
per indicare chc sul bus sono presenti dati validi.
e. Liniziatore legge i dati allinizio del quarto ciclo di clock e cambia le lince di abilita
zione del byte come richiesto per la preparazione della prossima lettura.
f. In questo esempio, il destinatario necessita di lui certo tempo per preparare il secon
do blocco di dati da trasmettere. Quindi, annulla TRD Y per segnalare alliniziatore
che nel prossimo ciclo non ci saranno nuovi dati. Di conseguenza, liniziatore non leg
ge le lince dati allinizio del quinto ciclo di clock c non cambia labilitazione del by
te durante tale ciclo. Il blocco di dati viene letto allinizio del sesto ciclo di clock.
g. Li questo ciclo, il destinatario posiziona il terzo elemento di dati sul bus. Tuttavia, ncllcscmpio, liniziatore ancora non pronto per leggerli (potrebbe trovarsi in tuia con
dizione temporanea di buffer pieno). Dopo di che, annulla IRDY. Di conseguenza, il
destinatario manterr il terzo elemento di dati sul bus per un ciclo di clock extra.
h. Liniziatore sa chc il terzo trasferimento di dati lultimo, c dunque annulla FRAME
per segnalare al destinatario che si tratta dellultimo trasferimento. Asserisce, inoltre,
IRDY per segnalare di essere pronto a completare tale trasferimento.
i. Liniziatore annulla IRDY, riportando il bus allo stato inattivo, e il destinatario an
nulla TR D Y c DEVSEL.

Arbitraggio
U PCI fa uso di uno schema di arbitraggio centralizzato e sincrono, nel quale ciascun ge
store presenta un unico segnale di richiesta (REQ request) e di concessione (G N T)(p i ) .
Queste linee di segnale sono connesse a un arbitro centrale (Figura 3.24) e per concedere
laccesso al bus viene usato un semplice handshake tra richiesta e concessione.

F ig u ra 3.24

Arbitro del bus PCI.

103

104

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

CLK

REQ#-A

( i

REQ#-B

GNT#-A

GNT#-B

I
I

I
I

J----------------U
FRAM E#

IRDY#

TRDY#

I
I
I

I
I
I
____ ! _ /

Al)
-Accesso A-

Fgura 3 .2 5

-Accesso B-

A rb itrag g io d el b u s PCI tra d u e gestori

Le specifiche PCI non impongono un particolare algoritmo di arbitraggio. Larbitro pu


usare un approccio first-come-firsl-served, un approccio round-robin o uno schema di prio
rit. Un gestore PCI deve arbitrare ciascuna transazione che desidera eseguire, dove una
singola transazione consiste di una fase indirizzo seguita da una o pi fasi dati contigue.
Riportiamo la sequenza di eventi relativi allesempio della Figura 3.25.
a. In qualche punto che precede il primo ciclo di clock, A ha asserito il proprio segna
le PlEQ1Larbitro campiona questo segnale allinizio del ciclo.
b. Durante questo ciclo, B richiede luso del bus asserendo il proprio segnale R E Q
c. Nello stesso tempo, larbitro asserisce GNT-A per concedere laccesso del bus ad A.
d. Il gestore A del bus campiona GNT-A allinizio del secondo clock e apprende chc gli
stato concesso laccesso al bus. Trova, inoltre, IRDY c TRDY annullati, il chc indica che il bus c inattivo. Di conseguenza, asserisce FRAME e posiziona lindirizzo
sul bus indirizzi c il comando sul bus C /B E (non mostrato). Continua anche ad as
serire REQ-A, poich dopo questa transazione nc deve eseguire una seconda.
e. Allinizio del terzo clock larbitro del bus campiona tutte le linee REQ e decide di con
cedere il bus a B nella prossima transazione. Poi, asserisce GNT-B e annulla GNT-A.
B non potr usare il bus finch questultimo non ritorner a uno stato inattivo.

3.7 Parole chiave, domande di revisione e problemi

f. A annulla FRAxME per indicare che in corso Tulcimo (e unico) trasferimento dati.
Pone i dati sul bus dati e segnala la destinazione con IRDY. Il destinatario legge i da
ti all'inizio del successivo ciclo di clock.
g. Allinizio del quinto ciclo di clock, B trova IRDY e FRAME annullati c cos in gra
do di prendere il controllo del bus asserendo FRAME. Inoltre, annulla la propria li
nea REQ1dato che vuole eseguire una sola transazione.
In seguito, al gestore A viene concesso laccesso al bus per la sua successiva transazione.
Si noti che larbitraggio pu aver luogo nello stesso istante in cui lattuale gestore del
bus sta eseguendo un trasferimento dati. Dunque, nessun ciclo di bus viene perso nellcscguirc larbitraggio. Questo fenomeno viene detto arbitraggio nascosto (hidden arbitration).

3.6

Letture e siti web consigliati____________________

Il testo pi chiaro dedicato al PCI [SHAN99]. [ABB004] contiene anche molte infor
mazioni concrete sul PCI.
A B B 0 04 D. Abbot, P C I Bus Demystified, New York: Elsevier, 2004.
SHAN99 T. Shanley e D. Anderson, P C I Systems Architecture, Richardson (TX),
Mindsharc Press, 1999.

Siti web consigliati:


P C I Special Interest G roup: informazioni su specifiche e prodotti PCI.
P C I Pointers: collegamenti a produttori PCI e ad altre fonti informative.

3.7

Parole chiave, domande di revisione e


problemi

ampiezza del bus


arbitraggio centralizzato
arbitraggio del bus
arbitraggio distribuito
bus
bus degli indirizzi
bus dei dati
bus di sistema
ciclo di istruzione

esecuzione
dell'istruzione
gestore di interrupt
interconnessione di
periferiche (PCI)
interrupt
interrupt disabilitato
memory address register
(MAR)

memory buffer register


(MBR)
prelievo dell'istruzione
routine di servizio
del !'interrupt
temporizzazione
asincrona
temporizzazione
sincrona

105

106

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Domande di revisione
3 .1 Quali categorie generali di funzioni vengono specificate tramite le istruzioni di un
calcolatore?
3.2 Quali sono i possibili stati che definiscono !esecuzione di unistruzione?
3.3 Elencate e definite brevemente due approcci per il trattam ento degli interrupt
3.4 Qiiali tipi di trasferimento deve supportare una struttura di interconnessione (ad
esempio, il bus)?
3.5 Qiial il vantaggio di usare unarchitcttura a bus multipli rispetto a una a bus singolo?
3.6 Elencate e definite brevemente i gruppi funzionali delle linee di segnale per il PCI.

Problemi
3.1 Lelaboratore ipotizzato nella Figura 3.4 ha anche due istruzioni di I/O :
0011 = carica AC dal I l/O
0 1 11 = memorizza AC nellI/O
In questi casi, lindirizzo a 12 bit identifica un particolare dispositivo di I/O .
Mostrate lesecuzione del programma (usando il formato della Figura 3.5) per il se
guente programma.
1. Carica AC dalla periferica 5.
2. Somma i contenuti della locazione di memoria 940.
3. Memorizza AC nella periferica 6.
Assumete chc il successivo valore recuperato dalla periferica 5 sia 3 c che la locazione
940 contenga il valore 2.
3.2 Lesecuzione del programma della Figura 3.5 viene descritta nel testo usando sei pas
si. Estendete questa descrizione per mostrare luso di MAR e MBR.
3.3 Si consideri un ipotetico microprocessore a 32 bit con istruzioni di 32 bit compo
ste di due campi: il primo byte contiene il codice operativo e il secondo loperando
immediato o un indirizzo di operando.
a. Qual la massima capacit di memoria direttamente indirizzabile (in byte)?
b. Descrivete le prestazioni del sistema nei due casi in cui il bus di memoria del pro
cessore abbia 32 linee per gli indirizzi e 16 linee per i dati, oppure abbia 16 linee
per gli indirizzi e 16 linee per i dati.
c. Qiianti bit sono necessari per il program counter e per !instruction register?
3.4 Considerate un ipotetico microprocessore che genera un indirizzo a 16 bit (ad
esempio, si assuma che il program counter e gli address register siano larghi 16 bit)
e abbia un bus dati a 16 bit.

3.7 Parole chiave, domande di revisione e problemi

a. Qual il massimo spazio di indirizzamento della memoria cui il processore pu


accedere direttam ente se c connesso a una memoria a l 6 bit?
b. Qual il massimo spazio di indirizzamento della memoria cui il processore pu
accedere direttam ente se c connesso a una memoria a 8 bit?
c. Quali caratteristiche architetturali consentiranno a questo processore di accedere
a uno spazio di I /O separato?
d. Sc unistruzione di I/O pu specificare un numero di porta di I/O a 8 bit, quan
te porte di I/O a 8 bit pu supportare il microprocessore? Q uante a 16 bit?
Fornite la spiegazione.
3.5 Considerate un microprocessore a 32 bit, con un bus dati esterno a 16 bit, pilotato
da un clock di input a 8 MHz. Si assuma che questo microprocessore presenti un
ciclo di bus la cui durata minima equivale a quattro cicli di clock di input. Qiial c
la massima velocit di trasferimento dati che questo processore pu sostenere? Per
migliorare le sue prestazioni, sarebbe meglio rendere il suo bus dati esterno a 32 bit
o raddoppiare la frequenza di clock esterno fornita al microprocessore? Specificate
ogni assunzione fatta e fornite la spiegazione. Suggerimento: Determinate il num e
ro di byte trasferibile per ogni ciclo di bus.
3.6 Considerate un sistema di elaborazione contenente un modulo di I /O che controlla
un semplice sistema tastiera/tclcscrivcntc. I seguenti registri sono contenuti nel
processore c collegati direttam ente al bus di sistema:
INPR:
OUTR:
FGI :
FG O :
IEN:

Input Register, 8 bit


O u tp u t Register, 8 bit
InputFlag1I b i t
O u tp u t Flag, 1 bit
Interrupt Enable, 1 bit

La battitura di un tasto dalla telescrivente c loutput della stampante verso la tele


scrivente sono controllati dal modulo di I/O . La tclcscrivcntc c in grado di codifi
care un simbolo alfanumerico in una parola di 8 bit c dccodificarc una parola a 8 bit
in un simbolo alfanumerico.
a. Descrivete come il processore pu scambiare dati con la telescrivente usando i re
gistri INPR, O U T R , FG I c FGO.
b. Descrivete come tale funzione pu essere resa pi efficiente utilizzando anche IEN.
3 .7 Considerate due microprocessori con bus di dati esterni da 8 e da 16 bit. In tutto il
resto i processori sono identici, anche nella durata dei cicli di bus.
a. Supponete che tutte le istruzioni e gli operandi siano lunghi due byte. D i quale
fattore differiscono le due velocit massime di trasferimento dati?
b. Assumete ora che met degli operandi e delle istruzioni sia lunga un byte e rie
saminate le vostre considerazioni.
3.8 La Figura 3.26 indica uno schema di arbitraggio distribuito che pu essere usato con
uno schema di bus obsoleto noto come Multibus I. Gli agenti sono fisicamente col-

107

108

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Figura 3.26

Arbitraggio distribuito del Multibus I.

legaci in modo circolare {daisy-ehairi) e hanno priorit diverse. Lagente pi a sini


stra nel diagramma riceve un segnale costante buspriority in (BPRN) che indica che
nessun agente a priorit pi alta desidera il controllo del bus. Sc lagente non vuole
il bu s, asserisce la propria linea bus priority out (BPRO). Allinizio di un ciclo di
clock, ciascun agente pu richiedere il controllo del bus abbassando la propria li
nea BPRO. Questo abbassa la linea BPRN del successivo agente nella catena, il che
necessario per abbassare la propria linea BPRO. Cos, il segnale viene propagato
per tutta la catena. Alla fine della reazione a catena, ci dovrebbe essere solo un agen
te il cui BPRN asserito e il cui BPRO non lo . Questo agente ha la priorit. Se al
linizio di un ciclo di bus il bus non occupato (BUSY inattivo), lagente chc ha la
priorit pu prendere il controllo del bus asserendo la linea BUSY.
E necessario un certo tempo perch il segnale BPR si propaghi dallagente a massi
ma priorit fino a quello a minima priorit. Questo tempo deve essere inferiore a un
ciclo di clock? Fornite una spiegazione.
3.9 II bus VAX SBl utilizza uno schema di arbitraggio distribuito e sincrono. Ciascun
dispositivo SBI (il processore, la memoria, i moduli di I/O ) possiede una priorit
unica ed associato a una singola linea di richiesta di trasferimento (TR). SBI ha
16 di tali lince (TRO, T R I ,... TR IS), con TRO chc ha la massima priorit. Quando
un dispositivo vuole usare il bus, prenota un certo periodo di tempo asserendo la
propria linca TR. Alla fine del ciclo in cui c stata emessa la prenotazione, ciascun
dispositivo con una prenotazione pendente esamina le linee TR; il dispositivo a
maggiore priorit con una prenotazione utilizza il successivo periodo di tempo.
Al bus possono essere collegati un massimo di 17 dispositivi. Il dispositivo con
priorit 16 non ha una linea TR. Perch?
3.10 II dispositivo a priorit inferiore solitamente presenta il tempo di attesa medio pi
basso. Per questa ragione, al processore viene in genere assegnata la priorit pi bas
sa su SBI. Perch il dispositivo con priorit 16 presenta di solito il tempo dattesa me
dio pi basso? In quali circostanze questo non sarebbe vero?
3.11 Per unoperazione di lettura sincrona (Figura 3.19), il modulo di memoria deve po
sizionare i dati sul bus in modo che siano sufficientemente lontani dal fronte di di
scesa del segnale di Lettura per permettere la stabilizzazione del segnale. Assumete

3.7 Parole chiave, domande di revisione e problemi

che il bus di un microprocessore abbia una frequenza di clock di 10 M Hz e che il


segnale di Lettura cominci a finire a met della seconda met del Ty
a. Determinate la lunghezza del ciclo di istruzioni di lettura della memoria.
b. Quando, al pi tardi, dovrebbero essere posizionati sul bus i dati della memoria?
Assumete 20 ns per la stabilizzazione delle linee di dati.
3.12 Considerate un microprocessore con ima temporizzazione di lettura della memo
ria come indicato nella Figura 3.19. Dopo alcune analisi, un progettista definisce chc
la memoria finisca di fornire dati di lettura puntualmente in circa 180 ns.
a. Qiianti stati di attesa (cicli di clock) devono essere inseriti per una corretta ope
razione di sistema se la frequenza di clock del bus di 8 MHz?
b. Per rafforzare gli stati di attesa, viene utilizzata una linea di stato Ready (Pronto).
Qiiando il processore ha emesso un comando di Read (Lettura), deve attendere
chc venga attivata la linea di Ready prima di tentare di leggere i dati. A quale in
tervallo di tempo deve essere tenuta bassa la linea di Ready per forzare il proces
sore a inserire il numero di stati di attesa richiesto?
3.13 Un microprocessore ha una temporizzazione di scrittura della memoria come mo
strato nella Figura 3.19. Il produttore stabilisce che lampiezza del segnale di Write
(Scrittura) possa essere determinato da T - 50, dove T c il periodo di clock (in ns).
a. Quale ampiezza dobbiamo aspettarci per il segnale di Write se la frequenza di
clock del bus di 5 MHz?
b. Il data sheet del microprocessore specifica che i dati siano validi per 20 ns dopo
lestremit in discesa del segnale di Write. Qiial la durata totale della presenta
zione di dati validi alla memoria?
c. Qiianti stati di attesa dovrebbero essere inseriti se la memoria richiede una pre
sentazione di dati validi per almeno 190 ns?
3.14 Un microprocessore presenta unistruzione diretta dincremento della memoria,
che somma 1 al valore in una locazione di memoria. Listruzione ha cinque stadi:
fetch del codice operativo (quattro cicli di clock del bus), fetch degli indirizzi de
gli operandi (tre cicli), fetch delloperando (tre cicli), incremento di 1 delloperan
do (tre cicli) e memorizzazione delloperando (tre cicli).
a. Di quale percentuale aumenter la durata delloperazione se dobbiamo inserire
due stati di attesa (bus) in ogni operazione di lettura e di scrittura in memoria?
b. Riconsiderate il caso assumendo che loperazione di somma comporti 13 cicli an
zich 3 cicli.
3.15 II microprocessore Intel 8088 ha una temporizzazione del bus di lettura simile a quel
lo della Figura 3.19, ma richiede quattro cicli di clock del processore. I dati validi re
stano sul bus per una quantit di tempo chc comprende anche il quarto ciclo di
clock del processore. Assumete che la frequenza di clock del processore sia di 8 MHz.
a. Qual la velocit massima di trasferimento dei dati?
b. Riesaminate il caso assumendo chc sia necessario inserire uno stato di attesa per
ogni byte trasferito.

109

110

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

3.16 LIntel 8086 e un processore a 16 bit simile per molti aspetti all8088 a 8 bit. L8086
utilizza un bus a 16 bit in grado di trasferire 2 byte alla volta, ammesso che il byte
pi basso abbia un indirizzo pari. Tuttavia, 8086 permette chc le parole siano alli
neate sia sui pari sia sui dispari. Sc viene presa come riferimento una parola con al
lineamento dispari, per trasferire la parola vengono richiesti due cicli di memoria,
ognuno composto da quattro cicli di bus. Considerate unistruzione sull8086 che
coinvolga due operandi da 16 bit. Qiianto tempo richiede il fetch degli operandi?
Elencate le risposte possibili. Prendete in considerazione una frequenza di clock di
4 iMHz e ipotizzate che non ci siano stati di attesa.
3.17 Considerate un microprocessore a 32 bit il cui ciclo di bus abbia la stessa durata di
quello di un microprocessore a 16 bit. Assumete che in media il 20% degli operan
di c delle istruzioni sia lungo 32 bit, che il 40% sia 16 bit e che il restante 40% sia
lungo solo 8 bit. Calcolate il miglioramento che si ottiene nel fetch delle istruzio
ni e degli operandi nel microprocessore a 32 bit.
3.18 II microprocessore considerato nel Problema 3.14 inizia la fase di fetch degli ope
randi dellistruzione nel momento esatto in cui la tastiera attiva una linea di richie
sta di interruzione. Dopo quanto tempo il processore entra nel ciclo di processo del
linterruzione? Prendete in considerazione una frequenza di clock del bus di 10
MHz.
3.19 Disegnate e spiegate un diagramma di temporizzazione per unoperazione PCI di
scrittura (simile alla Figura 3.23).

Appendice 3A

Diagrammi di temporizzazione

In questo capitolo i diagrammi di temporizzazione vengono utilizzati per illustrare se


quenze di eventi e loro dipendenze. Per il lettore che non ha familiarit con questi dia
grammi, lappendice fornisce una breve spiegazione.
La comunicazione tra dispositivi collegati a un bus ha luogo lungo un insieme di li
nee in grado di trasportare segnali. Possono essere trasmessi due differenti livelli di segna
le (livelli di tensione), che rappresentano gli stati logici: 0 e I. Un diagramma di tempo
rizzazione mostra il livello di segnale su una linea in funzione del tempo (Figura 3.27a). Per
convenzione, il livello di segnale corrispondente a 1 viene mostrato con un livello pi al
to rispetto a quello corrispondente a 0. Solitamente, lo 0 il valore di default. Ci signifi
ca chc, se non viene trasmesso alcun dato o segnale, allora il livello sulla linea quello che
rappresenta lo 0. La transizione del segnale da 0 a 1 viene spesso chiamata fronte di salita
(o leading edge) e la transizione da Ia O viene detta fronte di discesa (o trailing edge). Tali
transizioni non sono istantanee, ma hanno una certa durata, anche se molto piccola. Per
chiarezza, la transizione viene solitamente disegnata come una linea obliqua che esagera il
tempo richiesto. Occasionalmente, il lettore vedr diagrammi che utilizzano linee verti
cali, il che suggerisce erroneamente che la transizione sia istantanea. Su un diagramma di
temporizzazione pu accadere chc tra gli eventi di interesse trascorra una quantit di tem
po variabile o quasi irrilevante. Qiicsta eventualit viene raffigurata tramite unintcrruzionc nella linea temporale.

Appendice 3A Diagrammiditemporizzazione

Alto
Basso
F ro n te
di salita

F ro n te
di discesa

In terv allo

lem p o

(a) Seg n ali in fu n zio n e d el tem po

L inee basse

L inee basse o alte

Linee basse

(b) Gruppi di linee

C o m an d o

R isposta

(c) Dipendenza causa-effetto

(d) Segnale di clock


Figura 3.27

Diagrammi di temporizzazione.

Talvolta i segnali sono rappresentati a gruppi (Figura 3.27b). Ad esempio, se i dati sono
trasferiti un byte alla volta, allora sono richieste otto linee. Generalmente, non impor
tante sapere lesatto valore trasferito su tale gruppo, ma piuttosto se i segnali siano pre
senti o meno.
Una transizione di segnale su una linea pu far scattare un dispositivo connesso per
far cambiare il segnale su altre linee. Ad esempio, se un modulo di memoria rileva un se
gnale di controllo di lettura, posizioner i segnali dei dati sulle linee dati. Tale relazione cau
sa-effetto produce sequenze di eventi. Per mostrare queste dipendenze sui diagrammi di
temporizzazione si ricorre a frecce (Figura 3.27c).

111

Sistema di elaborazione Capitolo 3 - Visione ad alto livello delle funzioni

Nella Figura 3.27c, se il nome del segnale e barrato, allora quel segnale attivo quan
do basso. Ad esempio, Command attivo, o asserito, a 0 Volt.
Ci significa che Command = 0 viene interpretato come un valore logico vero (1).
Spesso i bus hanno anche una linea di clock cui c connesso un orologio elettronico
chc fornisce una regolare, ripetitiva sequenza di transizioni (Figura 3.27d). Il segnale di
clock pu servire a sincronizzare altri eventi.

Capitolo 4

Memoria cache

Punti chiave
La memria dei calcolatori organizzata in modo gerarchico. Al livello pi alto,
pi vicino al processore, troviamo i registri. A seguire, esistono uno o pi livelli di
cache. Qiiandovengono utilizzati pi livelli, li indicheremo con LI, LI, e cos via.
Poi troviamo la memoria centrale, che solitamente una RAM dinamica, DRAM
(dynamic random-access memory). Tutti questi livelli sono considerati interni al si
stema di elaborazione. La gerarchia continua poi con la memoria esterna, e il suc
cessivo livello c generalmente il disco fisso. Ulteriori livelli sono costituiti dai sup
porti removibili quali i dischi ottici c i nastri.

Scendendo lungo la gerarchia di memoria, si riscontra uri costo per bit inferiore,
una capacit superiore e tempi di accesso pi lenti. Sarebbe bello poter usare so
lo la memoria pi veloce ma, poich anche la pi costosa, si scende a compro
messi tra tempi di accesso c costi, utilizzando pi memoria lenta. Lo stratagem
ma consiste nellorgariizzarc in memoria i dati e i programmi di modo che le
informazioni man mano richieste si trovino, il pi frequentemente possibile, nel
la memoria pi veloce.

In generale, e probabile che la maggior parte degli accessi alla memoria centrale
da parte del processore avvenga in locazioni referenziate di rcccntc. Per questo mo
tivo, la cachc mantiene una copia di alcune delle locazioni di memoria appena uti
lizzate. Sc la cache progettata bene, allora per la maggior parte delle volte le pa
role di memoria richieste dal processore si troveranno gi nella cache.

114

Sistema di elaborazione Capitolo 4 - Memoria cachc

ebbene semplici da un punto di vista concettuale, pi di ogni altro componente le me


morie dei calcolatori esibiscono il pi ampio spettro di tipologie, tecnologie, organiz
zazioni, prestazioni c costi. Nessuna tecnologia soddisfa in assoluto i requisiti di memoria
di un calcolatore. Pertanto, il tipico sistema di elaborazione equipaggiato con una ge
rarchia di sottosistemi di memoria, alcuni interni (direttamente accessibili da parte del pro
cessore) e altri esterni (accessibili al processore tramite un modulo di I/O).
Qiicsto e il prossimo capitolo si concentrano sugli elementi della memoria interna,
il Capitolo 6 sar quindi dedicato alla memoria esterna. In particolare, il primo paragrafo
esamina le caratteristiche salienti delle memorie mentre i successivi sono dedicati a un ele
mento essenziale per tutti i moderni sistemi di elaborazione: la memoria cache.

4.1

Panoramica dei sistemi di memoria


di un calcolatore

Caratteristiche dei sistemi di memoria


Il complesso argomento delle memorie dei calcolatori pu essere affrontato pi agevol
mente classificando i sistemi di memoria in base alle loro specifiche caratteristiche ; le pi
importanti sono elencate nella Tabella 4.1.
Il termine l o c a z i o n e nella Tabella 4.1 riferito al fatto chc la memoria sia interna o
esterna al calcolatore. La memoria interna viene spesso identificata con la memoria cen
trale, ma ne esistono altre forme. Il processore dispone di una propria memoria locale, sot
to forma di registri (si veda, ad esempio, la Figura 2.3). Inoltre, come vedremo, la parte del
processore che costituisce lunit di controllo pu a sua volta richiedere una propria mcTabella 4.1

Caratteristiche salienti dei sistemi di memoria del calcolatore.

Locazione

Prestazioni

Processore

Tempo di accesso

Interna (principale)

Tempo di ciclo

Esterna (secondaria)
Capacit

Velocit di traserimento
Modello fsico

Dimensione della parola

A semiconduttore

Numero di parole

Magnetico

Unit di trasferim ento


Parola
Blocco
M etodo di accesso
Sequenziale
Diretto
Casuale
Associativo

Ottico
Magneto'ottico
C aratteristiche fsiche
Volatile/non volatile
Riscrivibile/non riscrivibile
Organizzazione
Moduli di memoria

4.1 Panoramicadcisistemidimem oriadiuncalcolatore

moria interna. La cache rappresenta un altra forma di memoria interna. La memoria ester
na costituita dai dispositivi periferici di memorizzazione, quali dischi e nastri, accessibi
li al processore tramite controllori di I/O.
Unowia caratteristica della memoria la sua capacit. Per le memorie interne, essa
tipicamente espressa in byte (1 byte = 8 bit) o in parole. Le lunghezze di parola pi co
muni sono 8,16 e 32 bit. La capacit delle memorie esterne tipicamente espressa in byte.
Un concetto correlato 1unit di trasferimento. Per la memoria interna, lunit di
trasferimento uguale al numero di linee dati in ingresso c in uscita dal modulo di me
moria. Tale numero pu essere uguale alla lunghezza della parola, ma c spesso maggiore (64,
128 o 256 bit). Per chiarire questo punto, consideriamo tre concetti reciprocamente cor
relati per la memoria interna.
Parola: lunit naturale di organizzazione della memoria, La dimensione della pa

rola corrisponde generalmente al numero di bit utilizzati per rappresentare un nu


mero e alla dimensione delle istruzioni. Sfortunatamente, esistono molte eccezioni.
Ad esempio, il CRAY C90 (un vecchio modello di supercomputer CRAY) ha una
lunghezza di parola di 64 bit, ma rappresenta gli interi con 46 bit. NcHarchitettura
Intel x86 la lunghezza delle istruzioni, espressa in numero di byte, molto varia, c la
dimensione di una parola e 32 bit.
Unit indirizzabili: in alcuni sistemi lunit indirizzabile la parola. Altri, invece, am

mettono !indirizzamento a livello di byte. In ogni caso, la relazione tra la lunghezza


in bit A di un indirizzo e il numero N di unit indirizzabili 2A = N.
Unit di trasferimento: per la memoria centrale, questo il numero di bit letti o

scritti contemporaneamente, e non equivale necessariamente a ima parola o a unu


nit indirizzabile. Per la memoria esterna, i dati vengono spesso trasferiti in unit
molto pi larghe di una parola, dette blocchi.
Unaltra distinzione tra i tipi di memoria il metodo di accesso ai dati.
Accesso sequenziale: la memoria organizzata in unit, chiamate record. Laccesso
deve avvenire in uno specifico ordine. Le informazioni di indirizzamento memoriz
zate vengono usate per separare i record e sono daiuto per il loro reperimento. Si adot
ta ununica unit di lettura/scrittura. In questo modo, il tempo daccesso al generico
record altamente variabile. Le unit a nastro, trattate nel Capitolo 6, sono ad accesso
sequenziale.
Accesso diretto: come per laccesso sequenziale, laccesso diretto implica ununica

unit di lettura/scrittura. Qui, i singoli blocchi (o record) presentano un indirizzo


univoco basato sulla locazione fisica. Laccesso al blocco avviene direttamente ed se
guito da una ricerca sequenziale, un conteggio o un attesa per raggiungere la locazione
finale. Ancora una volta, il tempo di accesso e variabile. Le unit disco, trattate nel
Capitolo 6, sono ad accesso diretto.
Accesso casuale: ogni locazione indirizzabile in memoria ha il proprio circuito di in

dirizzamento. Il tempo per accedere a una locazione e costante e non dipende dalla
sequenza dei precedenti accessi. Cos, qualunque locazione pu essere indirizzata e
raggiunta direttamente. La memoria centrale e certe cache sono ad accesso casuale.

115

116

Sistema di elaborazione Capitolo 4 - Memoria cache

Accesso associativo: si tratta di un tipo di memoria ad accesso casuale in cui una cer

ta configurazione di bit pu essere confrontata simultaneamente con gli indirizzi di


tutte le locazioni. Cos, le parole di memoria sono identificate sulla base di una par
te dei loro contenuti piuttosto che del loro indirizzo. Anche in questo caso ogni lo
cazione dispone del proprio circuito di indirizzamento, e il tempo daccesso e costante
e non dipende dagli accessi precedenti. Le memorie cache spesso hanno accesso as
sociativo.
Dal punto di vista dellutente, le due caratteristiche pi importanti sono la capacit e le pre
stazioni. I tre parametri di prestazione usati sono i seguenti.
Tempo d accesso (latenza) : per la memoria ad accesso casuale, questo il tempo im

piegato per eseguire unoperazione di lettura o scrittura. Si tratta cio del tempo chc
intercorre tra listante in cui un indirizzo viene presentato alla memoria e listante in
cui i dati sono stati memorizzati o resi disponibili per luso. Per le altre memorie, il
tempo daccesso quello chc serve per posizionare lunit di lettura/scrittura nella lo
cazione desiderata.
Durata del ciclo di memoria: questo concetto si applica principalmente alla me

moria ad accesso casuale e consiste del tempo di accesso pi qualsiasi tempo addi
zionale richiesto prima che possa cominciare un secondo accesso. Tale tempo addi
zionale pu essere richiesto per motivi elettrici o per rigenerare i dati se questi
vengono letti in maniera distruttiva. Si noti chc il tempo di ciclo di memoria riguar
da il bus di sistema, non il processore.
Tasso di trasferimento: la frequenza alla quale i dati possono essere trasferiti nella

o dalla unit di memoria. Per la memoria ad accesso casuale, linverso della durata del
ciclo di memoria. Per la memoria ad accesso non casuale, vale la seguente relazione:

1N

= j

+ rI
R

dove
T n = tempo medio per leggere o scrivere N b it
Ta = tempo medio di accesso
n = numero di bit
R = tasso di trasferimento, in bit per secondo (bps)
Dal punto di vista fisico esistono svariati tipi di memoria. I pi comuni al giorno doggi so
no le memorie a semiconduttore, le memorie magnetiche (dischi c nastri) e quelle ottiche
e magneto-ottiche.
Numerose caratteristiche fisiche della memorizzazione dei dati sono importanti. In
una memoria volatile, le informazioni decadono naturalmente o sono perse quando viene
a mancare lalimentazione. In una memoria non volatile, le informazioni memorizzate per
mangono senza deterioramenti fino a quando non vengono deliberatamente modificate,
e per mantenerle non richiesta energia elettrica. Le memorie magnetiche sono di tipo non
volatile. La memoria a semiconduttore pu essere sia volatile sia non volatile. Le memorie
incancellabili non possono essere alterate, se non distruggendo lunit di memorizzazio
ne. Lc memorie a semiconduttore di questo tipo sono note come memorie di sola lettura

4.1 Panoram icadeisistem idim em oriadiuncalcolatore

(ROM, read-only memory). Necessariamente, una memoria incancellabile deve anche es


sere non volatile.
Per la memoria ad accesso casuale, lorganizzazione un elemento chiave di pro
gettazione. Intendiamo, cio, la disposizione fisica dei bit della parola. Come vedremo fra
poco, non sempre si usa la disposizione pi ovvia, come spiegato nel Capitolo 5.

La gerarchia di memoria
I vincoli di progettazione sulla memoria di un calcolatore possono essere riassunti da tre
domande. Qiiante grande? Quante veloce? Qiianto costa?
La domanda sulla dimensione in qualche modo aperta. Se c la capacit, non man
cheranno certo applicazioni chc la utilizzino. Alla domanda sulla velocit , in un certo sen
so, pi facile rispondere. Per ottenere le migliori prestazioni, la memoria deve essere in gra
do di stare al passo con il processore. In altre parole, non vorremmo che il processore
dovesse fermarsi in attesa di istruzioni o operandi. Va tenuta in considerazione anche lul
tima domanda. In un sistema reale, il costo della memoria deve essere ragionevole in rela
zione a quello degli altri componenti.
Come ci si potrebbe aspettare, ce un compromesso tra le tre caratteristiche chiave:
costo, capacit e tempo di accesso. Rispetto alle svariate tecnologie che sono utilizzate per
i sistemi di memoria sussistono le seguenti relazioni:
minore il tempo di accesso, maggiore c il costo per bit
maggiore la capacit, pi basso il costo per bit
maggiore la capacit, pi lungo il tempo di accesso.
Limbarazzo del progettista e chiaro. Questi vorrebbe tecnologie che consentono una gran
de capacit, sia perch la capacit richiesta sia perch il costo per bit basso. Daltro can
to, per rispettare i requisiti di prestazione, il progettista deve usare memorie costose, di ca
pacit relativamente pi bassa e con brevi tempi di accesso.
La soluzione risiede nel non fare affidamento su un unico componente di memoria
o su ununica tecnologia, bens nclladottare una gerarchia di memoria. Una tipica ge
rarchia c mostrata nella Figura 4.1. Scendendo lungo la gerarchia si riscontra:
a. un decrescente costo per bit
b. una capacit crescente
c. un tempo di accesso crescente
d. una decrescente frequenza di accesso da parte del processore.
In questo modo, le memorie pi piccole, pi costose e pi veloci, sono integrate da me
morie pi grandi, pi economiche e pi lente. La chiave del successo di questa organizza
zione il punto (d): la minor frequenza di accesso. Esamineremo pi dettagliatamente que
sto concetto quando tratteremo la cache e la memoria virtuale (Capitolo 8). Ora forniamo
una breve spiegazione.

117

118

Sistema di elaborazione Capitolo 4 - Memoria cache

Figura 4.1

Gerarchia della memoria.

Esempio 4 . 1 Supponiamo chc il processore acceda a due livelli di memoria. Il livello 1 con

tiene 1.000 parole e ha un tempo di accesso di 0,01 jUs; il livello 2 contiene 100.000 paro
le e ha un tempo di accesso di 0,1 /Xs. Si assuma che se la parola localizzata nel livello 1,
il processore vi accede direttamente. Se si trova nel livello 2, allora viene prima trasferita
al livello 1 e poi il processore vi accede. Per semplicit, ignoriamo il tempo richiesto dal pro
cessore per determinare in quale livello si trovi la parola. La Figura 4.2 illustra il tipico an
damento di una situazione come questa. La figura indica il tempo di accesso medio a tuia
memoria a due livelli in funzione della frequenza di successo H (hit), dove:1
H = rapporto tra gli accessi chc vengono soddisfatti nella memoria pi veloce (ad esem
pio, nella cachc) e il numero totale
T x = tempo di accesso al livello 1
T1 = tempo di accesso al livello 2
Come si pu vedere, per alte percentuali di accessi al livello 1, il tempo di accesso to
tale medio molto pi vicino a quello del livello 1 chc a quello del livello 2.
1 Parliamo di successo (hit) quando la parola alla quale si accede si trova nella memoria pi veloce; parliamo di fal
limento (miss) in caso contrario.

4.1 Panoramica dei sistemi di memoria di un calcolatore

Ti + T 2

Frazione di accessi chc coinvolge solo il livello 1 (hit ratio)

Figura 4.2

Prestazioni degli accessi che coinvolgono solo I livello 1 (hit ratio).

Se nel nostro esempio supponiamo che il 95 per cento degli accessi in memoria siano sod
disfatti nella cache, allora il tempo di accesso medio a una parola pu essere espresso
scrivendo:
(0,95)(0,01 ) + (0,05)(0,01 s + 0,1 ) = 0,0095 + 0,0055 = 0,015 jUs.
Dunque, il tempo di accesso medio c molto pi vicino a 0,01 /Is che a 0,1 /is, come auspi
cato.

Luso di due livelli di memoria per ridurre il tempo medio daccesso in linea di principio
funziona, ma solo se si verificano le condizioni dalla (a) alla (d). Nella stragrande mag
gioranza dei casi le prime tre condizioni lo sono. Fortunatamente, anche la condizione (d)
e generalmente valida.
La base per la validit della condizione (d) un principio noto come localit dei ri
ferimenti [DENN68]. Durante Icsccuzionc di un programma, i riferimenti alla memo
ria da parte del processore, sia per i dati sia per le istruzioni, tendono a raggrupparsi. 1pro
grammi contengono generalmente molti cicli iterativi c subroutine. Qiumdo si entra in un
ciclo o in un sottoprogramma, si riscontrano ripetuti riferimenti a un piccolo insieme di
istruzioni. Analogamente, le operazioni su tabelle c array implicano laccesso a un insieme
di dati contigui. Nel lungo periodo, i raggruppamenti cambiano, ma nel breve periodo il
processore lavora principalmente con raggruppamenti fissi di riferimenti alla memoria.
Di conseguenza, possibile organizzare i dati nella gerarchia in modo che la percen
tuale di accessi a ciascun livello immediatamente pi basso risulti sostanzialmente mino
re di quella al livello sovrastante. Rispetto allcscmpio precedente si supponga che il livel
lo 2 contenga tutte le istruzioni di un programma e i suoi dati. Il raggruppamento corrente

119

120

Sistema di elaborazione Capitolo 4 - Memoria cache

pu essere temporaneamente posto nel livello 1 e, occasionalmente, uno dei raggruppa


menti nel livello 1 dovr essere spostato al livello 2 per fare posto a un nuovo gruppo di ri
ferimenti. In media, tuttavia, la maggior parte dei riferimenti avverr verso istruzioni e da
ti contenuti nel livello 1.
Qiicsto principio pu essere applicato anche su pi livelli di memoria, come suggeri
to dalla gerarchia mostrata nella Figura 4.1. Il tipo di memoria pi veloce, pi piccola e pi
costosa, consiste nei registri interni al processore. Generalmente, i processori contengono
dozzine di questi registri, sebbene alcune macchine ne abbiano centinaia. Scendendo di due
livelli, la memoria centrale il principale sistema di memoria interna del calcolatore.
Ciascuna locazione nella memoria centrale ha un indirizzo univoco. La memoria centrale
viene solitamente estesa con una cachc pi piccola e pi veloce. La cache non solitamen
te visibile al programmatore o al processore. E un dispositivo per gestire il movimento di
dati tra la memoria centrale e i registri del processore in modo da migliorare le prestazioni.
Le tre forme di memoria appena descritte sono tipicamente volatili e adottano la tec
nologia a semiconduttore. Luso di tre livelli sfrutta il fatto che tali memorie siano dispo
nibili in una variet di tipi differenti per velocit e costo. I dati vengono memorizzati in mo
do duraturo sulle memorie di massa (dischi fissi e supporti removibili quali dischi, nastri
e supporti ottici). La memoria esterna e non volatile, detta anche memoria secondaria o
ausiliaria, utilizzata per memorizzare i file di dati e programmi, ed solitamente visibi
le al programmatore in termini di file e record, anzich di singoli byte o parole. Il disco vie
ne anche impiegato per fornire uncstensionc alla memoria centrale, nota come memoria
virtuale, che verr trattata nel Capitolo 8.
Nella gerarchia si possono includere altre forme di memoria. Ad esempio, i grandi
mainframe IBM includono una memoria interna nota come Expanded Storage.
Questultima utilizza una tecnologia a semiconduttore pi lenta e meno costosa di quella
della memoria centrale. Tale memoria non si inserisce nella gerarchia ma un ramo late
rale: i dati possono essere spostati tra la memoria centrale e quella espansa ma non tra la
memoria espansa e quella esterna. Altre forme di memoria secondaria includono i dischi
ottici e magncto-ottici. Infine, alla gerarchia si possono aggiungere livelli software. Una
porzione della memoria centrale pu essere usata come buffer per mantenere tempora
neamente i dati da leggere dal disco. Tale tecnica, talvolta definita cachc del disco,2migliora
le prestazioni in due modi.
Le scritture su disco sono raggruppate. Invece di numerosi piccoli trasferimenti di da
ti, ne abbiamo pochi e grandi. Questo migliora le prestazioni del disco c minimizza
il coinvolgimento del processore.
Alciuii dati da scrivere possono essere stati referenziati da un programma prima di es
sere scaricati su disco. In questo caso, i dati vengono recuperati rapidamente dalla ca
che software piuttosto che dal disco.
LAppendice 4A esamina le implicazioni sulle prestazioni delle strutture di memoria
multilivello.

2 La cache del disco generalmente una tecnica puramente software e non viene esaminata in questo libro. Per una
trattazione si veda [STAL09J.

4.2 Principidellememoriecache

Trafcrimcnto blocco

(b) Organizzazione della cachc a tre livelli

Figura 4.3

4.2

Cachc e memoria centrale.

Principi delle memorie cache

La memoria cache progettata per avere una velocit assimilabile a quella delle memorie pi
veloci, fornendo allo stesso tempo una vasta capacit al prezzo delle memorie a semicondut
tore meno costose. Il concetto mostrato nella Figura 4.3a in cui compare una memoria rela
tivamente grande e lenta assieme a una memoria pi piccola e veloce. La cache contiene una
copia di parti della memoria centrale. Quando il processore tenta di leggere una parola di me
moria, si effettua un controllo per determinare se la parola sia nella cache. In caso affermativo,
la parola viene consegnata al processore. In caso contrario, bisogna portare nella cache un nu
mero fisso di parole di memoria centrale (un blocco) e poi la parola viene trasferita nel pro
cessore. Per il fenomeno di localit dei riferimenti, quando l u i blocco di dati viene prelevato e,
posto nella cache per soddisfare un singolo riferimento alla memoria, probabile che ci saranno
riferimenti futuri a quella stessa locazione di memoria o ad altre parole nel blocco.
La Figura 4.3b mostra lutilizzo di pi livelli di cache. La cache L2 pi lenta e tipi
camente pi grande della cache LI e la cache L3 pi lenta e tipicamente pi grande del
la cache L2.
La FigLira 4.4 mostra Ia struttura di un sistema cache/memoria centrale. La memo
ria centrale costituita da 2" parole indirizzabili, ognuna delle quali ha il proprio indiriz
zo di -bit. Per spiegare Imdirizzamento, si SLLpponga che le parole della memoria centra
le siano raggruppate in blocchi di ATparole ciascuno. Ci sono, cio, M = 2n/ K blocchi.
La cache consiste di C l in e e 3 di K parole ciascuna, e il numero di linee radicalmente in3 Quando ci si riferisce allunit di base di una cachc si preferisce utilizzare il termine linea anzich il termine bloc
co per due ragioni: (1 ) per evitare confusione con il blocco della memoria principale contenente lo stesso numero
di parole di dati di una linea di cache; (2) perch ima linea di cache non contiene soltanto parole, come un blocco
della memoria principale, ma anche tag e bit di controllo.

121

122

Sistema di elaborazione Capitolo 4 - Memoria cachc

Numero Etichetta
di linea ( t a g )

Blocco

0
1

0
1
2

C - I

Indirizzo
di memoria

2
3

Blocco
(K parole)

Lunghezza
del blocco
(K parole)

(a) Cachc

Blocco

In - 1
Lunghezza *
di parola
(b) Memoria centrale

Figura 4.4

Struttura cache/memoria centrale.

feriore al numero di blocchi di memoria centrale (C << At). Ogni linea contiene A' paro
le e unetichetta (tag) di pochi bit. Ogni linea contiene inoltre alcuni bit di controllo (non
mostrati nella figura) come, ad esempio, un bit che indica se la linea e stata modificata do
po il suo caricamento nella cachc. La lunghezza di una linea, esclusi tag e bit di controllo,
detta dimensione della linea (linesize). Una linea pu essere formata anche solo da 32
bit in cui ogni parola formata da un singolo byte. In tal caso diciamo che la dimensione
della linea di 4 byte. Il numero di linee e molto inferiore rispetto al numero di blocchi
nella memoria principale (m <<M). In ogni istante, solo un sottoinsieme di blocchi del
la memoria risiede nella cache. Sc viene letta una parola in un blocco di memoria, quel bloc
co viene trasferito in una delle linee della cachc. Poich ci sono pi blocchi che linee, una
singola linea non pu essere dedicata esclusivamente e in modo permanente a un partico
lare blocco. Cos, ogni linea include unetichetta (tag) che identifica quale particolare
blocco sia attualmente memorizzato. Il tag solitamente una parte dell'indirizzo di me
moria centrale, come verr spiegato nel seguito del paragrafo.
La Figura 4.5 mostra una lettura. Il processore genera lindirizzo, RA, di una parola
da leggere. Se la parola presente nella cache, essa viene trasferita nel processore.
Altrimenti, il blocco contenente quella parola viene caricato nella cache e poi la parola vie
ne trasferita nel processore. La Figiua 4.5 presenta queste ultime due operazioni in paral
lelo e riflette lorganizzazione illustrata nella Figura 4.6, tipica delle odierne organizzazio-

4.3 Elem entidiprogettazioncdellecachc

Figura 4.5

Operazione di lettura nella cache.

ni della cachc. In essa, la cachc si collega al processore tramite un bus chc contiene lince
separate per i dati, gli indirizzi e il controllo. Le linee dei dati e di indirizzi sono collegatc
anche a buffer per dati e indirizzi, a loro volta collegati al bus di sistema che permette di
raggiungere la memoria centrale. Se loperazione ha successo (cache hit), i buffer dati c in
dirizzi vengono disabilitati c la comunicazione avviene unicamente tra il processore c la ca
chc, senza coinvolgere il bus di sistema. Se fallisce (cachemiss), la parola richiesta viene pri
ma letta e portata nella cache e quindi trasferita dalla cache al processore.
LAppendice 4A tratta i parametri di prestazione relativi alluso della cache.

4.3

Elementi di progettazione delle cache

Forniremo adesso una panoramica dei parametri di progettazione della cache e indiche
remo alcuni tipici risidtati. Occasionalmente si far riferimento alluso di cache nz\Xhighperformance computing (HPC) chc si occupa di supercomputer e del relativo software, spe
cialmente per applicazioni scientifiche inerenti a grandi moli di dati, calcoli vettoriali e

123

124

Sistema di elaborazione Capitolo 4 - Memoria cache

Figura 4.6

Tipica organizzazione della cache.

matriciali e con uso di algoritmi paralleli. La progettazione di cachc per HPC alquanto
differente da quella per altre piattaforme hardware. Molti ricercatori hanno rilevato che le
applicazioni HPC presentano prestazioni insoddisfaccnti su architetture chc impiegano
cache [BAIL93]. Altri hanno mostrato come una gerarchia di cachc pu risultare utile per
migliorare le prestazioni se il software applicativo opportunamente progettato per sfrut
tare la cache [WANG99, PRESOl ].4
Sebbene esistano moltissime implementazioni di memorie cache, esistono pochi ele
menti chiave (vedi Tabella 4.2) per classificare e differenziare la loro architettura.

Indirizzi di cache
Quasi tutti i processori general purpose e molti processori embedded supportano la memo
ria virtuale, un concetto di cui parleremo nel Capitolo 8. In pratica, la memoria virtuale imo
strumento che permette ai programmi di indirizzare la memoria da un punto di vista logi
co, senza prestare attenzione alla quantit di memoria principale fisicamente disponibile.
Quando viene utilizzata la memoria virtuale i campi indirizzo delle istruzioni macchina con
tengono indirizzi virtuali. Lettura c scrittura nella memoria principale vengono effettuate tra
mite unapposita unit di gestione della memoria (MMU, memory management unit) che tra
duce un indirizzo virtuale in un indirizzo fisico nella memoria principale.
Qiiando si utilizzano gli indirizzi virtuali il progettista pu scegliere se collocare la
cache tra il processore c la MMU oppure tra la MMU e la memoria principale (Figura 4.7).
4 Per una trattazione generale dellH P C , si veda [DOW D98].

4.3 Elementidiprogettazionedellecache

T ab ella 4 .2

Elementi di progettazione della cache.

Indirizzi di cache
Logico
Fisico
D im ensione della cache
Funzione d i traduzione
Indirizzamento diretto

Politica di scrittura
Write through
Write back
Write once
D im ensione della linea di cache
N um ero d i cache

Indirizzamento completamente associativo

A uno o a due livelli

Indirizzamento set-associativo

Unificate o separate

Algoritm o di sostituzione
Least recentely used (LRU)
First in first out (FIFO)
Least frequently used (LFU)
Random

Una cache logica, chiamata anche cache virtuale, immagazzina dati utilizzando indirizzi
virtuali. Il processore accede alla cache direttamente, senza passare per la MMU. Una ca
che fisica salva i dati utilizzando gli indirizzi fisici della memoria principale.
Un vantaggio ovvio della cache logica e chc la velocit di accesso maggiore rispet
to alla cache fisica, perch la cachc pu rispondere prima chc la MMU traduca Imdirizzo. Lo svantaggio riguarda il fatto chc la maggior parte dei sistemi di memoria virtuale offre
a ogni applicazione lo stesso spazio di indirizzamento della memoria virtuale, ovvero ogni
applicazione vede una memoria virtuale che inizia allindirizzo 0. Lo stesso indirizzo vir
tuale in due diverse applicazioni fa quindi riferimento a diversi indirizzi fisici. La memo
ria cache deve dunque essere completamente svuotata a ogni cambiamento di contesto, op
pure devono essere aggiunti alcuni bit a ogni linea di cachc per identificare a quale spazio
di indirizzamento virtuale lindirizzo fa riferimento.
11 confronto tra cachc logica c cachc fisica c un argomento piuttosto complesso ed
esula dagli scopi di questo libro. Per una trattazione pi approfondita si vedano [CEKL97]
e [JAC008].

Dimensione della cache


Il secondo elemento nella Tabella 4.2, la dimensione della cache, gi stato affrontato. Si
vorrebbe chc la dimensione fosse cos piccola che il costo totale medio per bit si avvicinasse
a quello della memoria centrale, ma cos grande che il tempo medio di accesso totale si av
vicinasse a quello della cache. Esistono numerose altre ragioni per utilizzare una cache pic
cola. Pi grande c la cache, maggiore il numero di porte logiche per !indirizzamento. Il
risultato c chc grandi cachc tendono a essere leggermente pi lente rispetto a quelle pi pic
cole, anche se costruite con la stessa tecnologia e posizionate nello stesso modo nel chip e
sulla scheda. Lc aree disponibili su chip e scheda limitano anchesse la dimensione della ca
chc. Poich le prestazioni della cache sono molto sensibili alla natura del carico di lavoro,
impossibile determinare una dimensione ottimale della cache. La Tabella 4.3 elenca le
dimensioni della cachc di alcuni processori precedentemente e attualmente utilizzati.

125

126

Sistema di elaborazione Capitolo 4 - Memoria cache

(a) Cache logica

(b) Cache fisica

Figura 4.7

Cache fisica e logica.

Funzioni di traduzione (m apping )


Dato chc ci sono meno linee di cachc che blocchi di memoria centrale, occorre un algoritmo
per eseguire Findirizzamento dei blocchi di memoria centrale nelle linee della cache. Inoltre,
richiesto un criterio per determinare quale blocco di memoria centrale attualmente occupi
una certa linea di cache. La scelta della funzione di traduzione impone come la cachc debba
essere organizzata. Si possono usare tre tecniche: diretta, associativa e set-associativa.
Esempio 4.2 Esamineremo ciascuna di queste prendendo in considerazione prima la strut
tura generica e poi forniremo un esempio specifico. In tutti e tre i casi, lesempio comprende
i seguenti elementi.
La cache contiene 64 Kbyte.
1dati vengono trasferiti tra la memoria centrale e la cachc in blocchi di 4 byte ciascuno.
Questo significa che la cachc c organizzata con 16K = 214lince di 4 byte ciascuna.
La memoria centrale consiste di 16 Mbyte, e ogni byte c indirizzabile con 24 bit
(224 = 16M). Cos, ai fini dcHindirizzamento, possiamo considerare la memoria cen
trale formata da 4M blocchi di 4 byte ciascuno.

4.3 Elementi di progettazione delle cache

T ab ella 4 .3

Dimensioni della cache in alcuni processori.

Processore

T ipo

A nno di
introduzione

C achea
LI

Cache
LI

Cachc
L3

IBM 360/85

Mainframe

1968

da 16 a 32 KB

PDP-11/70

Minicomputer

1975

IK B

VAX 11/780

Minicompterer

1978

16 KB

IBM 3033

Mainframe

1978

64 KB

IBM 3090

Mainframe

1985

da 128 a 256 KB

Intel 80486

PC

1989

8 KB

Pentium

PC

1993

8 KB/8 KB

Da 256 a 512 KB

PowerPC 601

PC

1993

32 KB

PowerPC 620

PC

1996

32 KB/32 KB

PowerPC G4

PC/server

1999

32 KB/32 KB

D a 2 56K Ba I MB

2 MB

IBM S/390 G 4

Mainframe

1997

32 KB

256KB

2 MB

IBM S/390 G6

Mainframe

1999

256KB

8 MB

Pentiiun 4

PC/server

2000

8 KB/8 KB

256KB

High-end. server/
Supercomputer

2000

64 KB/32 KB

8 MB

IBM SP

Supercomputer

2001

8 KB

2 MB

PC/server

2001

16 K B /16 KB

96 KB

High-end server

2001

32 KB/32 KB

4M B

PC/server

2002

32 KB

256KB

6 MB

IBM POWERS

High-end server

2003

64 KB

1.9 MB

36 MB

CRAYXD-I

Supercomputer

2004

64 kB/64 KB

I MB

IBM POWER6

PC/server

2007

64 kB/64 KB

4M B

32 MB

IBM zlO

Mainframe

2008

64 kB/128 KB

3 MB

24-48 MB

CRAY MTAb
Itanium
SGI Origin 2001
Itanium 2

4M B

i Due valori separati da slash si riferiscono rispettivamente alla cache istruzioni e alla cachc dati
'Entrambe le cache sono riservate alle istruzioni: non sono presenti cache dati

La tecnica pi semplice, nota come indirizzamento diretto (direct mapping), assegna a cia
scun blocco di memoria centrale una sola possibile linea di cachc. La corrispondenza
esprimibile come:
i =j modulo m
dove
i

= numero della linea nella cache

= numero del blocco nella memoria centrale

m = numero di linee nella cache


La Figura 4.8a mostra Tindirizzamcnto dei primi m blocchi della memoria principale. A
ogni blocco corrisponde una sola linea della cache. I successivi m blocchi della memoria

127

128

Sistema di elaborazione Capitolo 4 - Memoria cachc

L0

-----

Bro-,____
Primi m blocchi
della memoria principale
(uguale alla dimensione
della cache)

Memoria cache
b = lunghezza di blocco, in bit
t = lunghezza di tag, in bit

(a) Indirizzamento diretto

(b) Indirizzamento associativo

Figura 4.8

Indirizzamento dalla memoria principale alla cache: diretto e associativo.

principale vengono tradotti nello stesso modo, ovvero al blocco Bw della memoria prin
cipale corrisponde la linea L0, al blocco B +1 la linea L1, e cos via.
La funzione di traduzione viene implementata facilmente utilizzando lindirizzo. La
Figura 4.9 ne illustra il meccanismo generale. Per accedere alla cachc, ogni indirizzo in me
moria centrale pu essere scomposto in tre campi. I iv bit meno significativi identificano
un byte allinterno del blocco di memoria centrale; nella maggior parte delle odierne mac
chine, Tindirizzamento a livello di byte. I restanti s bit specificano uno dei 2Sblocchi di
memoria centrale. I circuiti della cachc interpretano questi s bit come un tag di s - r bit
(la parte pi significativa) pi un campo di r bit chc identifica una delle m = 2r lince della
cachc. Riassumendo:
lunghezza dellindirizzo = ( + w) bit
numero di unit indirizzabili = 2S+U>parole o byte
dimensione del blocco = dimensione della linea = 2Wparole o byte
ys+w
numero di blocchi in memoria centrale =
= 2S

Etichetta

Indirizzo di m em oria
I Etichetta |

Linea

| Parola 1

(Successo nella cache)


1 se corrisponde
0 se non corrisponde

1 se corrisponde
0 se non corri sponde
----------------- (Fallim ento nella cache)

Figura 4.9

O rganizzazione della cache con indirizzamento diretto.

Dati

4.3

Elementidiprogettazionedellecache

129

130

Sistema di elaborazione Capitolo 4 - Memoria cache

numero di linee nella cachc = m = 2r


dimensione della cachc 2r+ft/ parole o byte
dimensione del tag = (s - r) bit
LefFetto che i blocchi di memoria centrale vengono assegnati a linee di cache come segue:
Linea di cache

Blocchi di m em oria centrale assegnati

0, m, Im , . . . . 2' - w

I, m + 1,2m + I , . . . , 2s - m + 1

m- I

m - I, Im , 3w - I ........Is 1

Cos, luso di una parte dellindirizzo come numero di linea fa corrispondere a ciascun blocco
di memoria centrale ununica linea di cachc. Quando un blocco viene effettivamente letto c po
sto nella linea di cache, necessario etichettare i dati per distinguerli dagli altri blocchi chc pos
sono essere inseriti in quella linea. Gli (s - r) bit pi significativi servono a questo scopo.
Esempio 4.2a La Figura 4.10 mostra il caso dellindirizzamento diretto? Nellesempio,
m =16K = 214e i =j modulo 214. La corrispondenza diventa:
Linea di cache

Blocchi di m em oria centrale assegnati

000000,010000....... FF0000

000004.010004,. . . . FF0004

2H - 1

00FFFC, 01FFFC,. . . . FFFFFC

Si noti che nessuna coppia di blocchi cui corrisponde la stessa linea ha lo stesso tag. Cos,
i tag dei blocchi con indirizzi di partenza 000000,010000,..., FF0000 sono rispettivamente
00,01,..., FE
Facendo ancora una volta riferimento alla Figura 4.5, loperazione di lettura avviene
come segue. Alla cache perviene un indirizzo di 24 bit. 1 14 bit del numero di linea sono
impiegati come un indice per accedere a una particolare linea della cachc. Se gli 8 bit del
lindirizzo che costituiscono il tag sono uguali al tag attualmente memorizzato in quella
linea, allora il numero di parola a due bit viene utilizzato per selezionare uno dei 4 byte in
quella linea. Altrimenti, il tag pi la linea a 22 bit viene usato per prelevare un blocco dal
la memoria centrale. Lindirizzo attuale che viene impiegato per il prelievo quello etichetta
pi linea a 22 bit concatenato con due bit posti a 0, di modo che vengano prelevati 4 by
te a partire da un confine del blocco.

5 In questa e nelle figure seguenti tu tti i valori .sono rappresentati in notazione esadecimalc.

4.3 Elementi di progettazione delle cache

Indirizzo d e lla m e m o ria centrale


(binario)
E tichetta
(hex)

E tichetta

L in ea + Parola
D ati

sono rap p resen tati in n o tazio n e binaria;


gli altri sono in n o tazio n e csad ccim ale (hex).

32 bit
M em o ria centrale 16-M B yte

E tichetta

L in ea

P arola

8 bit

14 bit

2 bit

In d irizzo d ella m e m o ria centrale

Figura 4.10

Esempio di indirizzamento diretto.

La tecnica de ITindirizzamento diretto semplice e poco costosa da implementare. Il suo


svantaggio principale chc esiste una locazione fissa nella cachc per ciascun blocco di me
moria. Cos se un programma accede ripetutamente a parole di due blocchi cui assegna
ta la stessa linea, allora i blocchi verranno continuamente scambiati nella cache, e la per
centuale di successi sar bassa (un fenomeno noto come thrashing).

S electiv e V ic tim C a c h e S im u la to r

132

Sistema di elaborazione Capitolo 4 - Memoria cache

Un modo per diminuire lo svantaggio dovuto a un miss ricordare che cosa stato scar
tato nel caso in cui servisse ancora. Siccome i dati scartati sono gi stati prelevati, lo si pu
riutilizzare a un costo piuttosto basso. Un tale riciclaggio dei dati c possibile usando una
speciale cache chiamata victim cache. Qiiesta cache fu inizialmente introdotta come un mo
do per ridurre i conflict miss di cache a indirizzamento diretto senza peggiorare il tempo
di accesso alla cache. La victim cache una cachc totalmente associativa, la cui dimensio
ne varia tipicamente tra le 4 e le 16 linee, che risiede tra una cachc a indirizzamento diret
to LI e il successivo livello di memoria.
Lindirizzamento associativo supera lo svantaggio dcHindirizzamento diretto permet
tendo ai blocchi di memoria di essere caricati in qualsiasi linea di cache (Figura 4.8b). In
questo caso, la logica di controllo della cache interpreta un indirizzo di memoria sempli
cemente come unetichetta e un campo parola. Il campo etichetta identifica univocamen
te un blocco di memoria centrale. Per determinare se un blocco si trovi nella cachc, la lo
gica di controllo deve esaminare in parallelo tutte le etichette di linea. La Figura 4.11
mostra il meccanismo. Si noti chc nessun campo dellindirizzo corrisponde al numero di
linea, cosicch il numero delle linee nella cache non determinato dal formato dcHindirizzo. Per riassumere,
lunghezza dellindirizzo = ( + tv) bit
numero di unit indirizzabili = 2S*Wparole o byte
dimensione del blocco = dimensione della linea = 2"'parole o byte

F ig u ra 4.11

Organizzazione della cache completamente associativa.

4.3 Elementidiprogettazionedellecache

.sono rappresentati in notazione binaria;


gli altri valori sono in notazione
esadeeim ale (hex)

32 bit
M em oriacentrale 16-M Byte

Parola

Etichetta

fcx?r-i><,.} ' '

Indirizzo d ella m em oria centrale =

22 bit

Figura 4.12

%
2 bit

Esempio di indirizzamento associativo.

numero di blocchi in memoria centrale =

2s+Uf

= 2'

numero di linee nella cachc = non determinato


dimensione del tag = s bit.

Esempio 4.2b La Figura 4.12 illustra lesempio con indirizzamento associativo. Gli indi
rizzi di memoria centrale consistono di un tag di 22 bit e di un numero di byte a 2 bit. In
ogni linea di cache va memorizzato il tag e il blocco di dati di 32 bit. Si noti che sono i 22
bit pi a sinistra (i pi significativi) dellindirizzo a formare il tag. Dunque, lindirizzo esa-

133

134

Sistema di elaborazione Capitolo 4 - Memoria cachc

decimale a 24 bit 16339C presenta lctichetta a 22 bit 058CE7. Lo si vede facilmente in no


tazione binaria:
indirizzo di memoria

0001 0110 0011 0011 1001 1100


1
6
3
3
9
C

etichetta (i 22 bit pi a sinistra)

00
0

0101 1000 1100 1110 0111


5
8
C
E
7

(binary)
(hex)
(binarv)
(hex) '

Con Imdirizzamento associativo, si ha flessibilit per quanto riguarda il blocco da sosti


tuire quando occorre caricare un nuovo blocco nella cache. Gli algoritmi di sostituzione,
trattati pi avanti in questo paragrafo, sono progettati per massimizzare la frequenza di suc
cessi. Il principale svantaggio dcU'indirizzamcnto associativo la complessit circuitale ri
chiesta per esaminare in parallelo i rag di tutte le lince di cachc.

C a c h e T im e A n alisy s S im u la to r

L indirizzamcnto set-associativo c un compromesso che unisce i punti di forza dellap


proccio diretto e di quello associativo riduccndo nel contempo i loro svantaggi. In questo
caso, la cache divisa in v insiemi (set) di k linee. Sussistono le relazioni
m - VX k
i =j

modulo V

dove
i
j

= numero dellinsieme della cache


numero del blocco in memoria centrale

m = numero di lince nella cache


V

= numero di insiemi

k = numero di lince in ogni insieme


Con questo indirizzamento, chiamato set-associativo a k vie, il blocco B pu essere asse
gnato a qualunque linea dellinsieme i. La Figura 4.13a illustra la traduzione dei primi v
blocchi della memoria principale. Come nel caso deHindirizzamento associativo, a ogni
parola corrispondono pi linee di cache. Nell indirizzamento set-associativo a ogni paro
la corrispondono tutte le linee di cache in uno specifico insieme; in questo modo il bloc
co B0 viene mappato nellinsieme 0, e cos via. La cache set-associativa pu quindi essere
fisicamente implementata come v cache associative. anche possibile implementare la ca
chc set-associativa come k cache a indirizzamento diretto, come mostrato nella Figura
4.13b. Ogni cache indirizzata direttamente viene chiamata via e consiste in v linee. Le pri
me Vlinee della memoria principale sono mappate direttamente nelle v linee di ogni via;
il successivo gruppo di v linee della memoria principale viene mappato in modo simile, c
cos via. Limplcmentazione a indirizzamento diretto solitamente usata per bassi gradi di

4.3 Elementi di progettazione delle cachc

135

IVi
P rim i V blocchi
d ella m em oria
p rin c ip ale

S et v-1 della cache


(a) V cache a indirizzamento associativo

(b)

Figura 4.13

kcache a indirizzamento diretto

Indirizzamento dalla memoria principale alla cache: set-associativo a k vie.

associativit (valori piccoli di k), mentre Hmplementazione a indirizzamento associativo


tipicamente utilizzata per alti gradi di associativit [JAC008).
Nellindirizzamento set-associativo, la logica di controllo della cache interpreta un
indirizzo di memoria come tre campi: tag, set e parola. I d bit di set specificano uno tra i
V = I tl insiemi. Gli s bit dei campi tag e set specificano uno dei I s blocchi di memoria prin
cipale. La Figura 4.14 mostra la logica di controllo della cachc. NelHndirizzamento total
mente associativo la logica di controllo della cachc considera gli indirizzi di memoria co
me costituiti da tre campi: tag, insieme c parola.
I
d bit di insieme specificano uno dei v = 2 insiemi. Gli s bit dei campi tag e insieme
specificano uno dei I s blocchi della memoria centrale. Con un indirizzamento completa
mente associativo, letichetta in un indirizzo di memoria piuttosto grande e deve essere
comparata all etichetta di ogni linea nella cache. Con !indirizzamento set-associativo a k

136

C%
s

I Ctichella I

Set

M e m o ria c e n tra le

C ache

-A,
Indirizzo di memoria

Etichetta

*
| Parola |

Dati

s-d

o
-c
c:
r/
H
C^
o'
et
fi&
o

I
s d s
--y

F,

r
Confronta

ISfc

.(Successo nella cache)


0 se corrisponde
1 se non corrisponde
0 se corrisponde
1 se non corrisponde
(Fallimento nella cache)

Figura 4.14

Organizzazione della cache set-associativa a K vie.

2k-

I
I

Sistema di elaborazione Capitolo 4 - Memoria cache

di un singolo insieme. Riassumendo:

lunghezza dcllindirizzo = (s + w) bit


numero di unit indirizzabili = 2S+U'parole o byte

dimensione del blocco = dimensione della linea = I tif parole o byte

S + H1

4.3 Elementidiprogcttazionedellecache

137

2 *+*>

numero di blocchi in memoria centrale =

2W

= 2s

numero di linee dell'insieme = k


numero di insiemi v = 2d
numero di lince nella cache = kv = k X 2d
dimensione del tag = (s - d) bit

Esempio 4. 2c La Figura 4.15 mostra il nostro esempio adottando lindirizzamento set-as


sociativo con due linee per insieme, dunque un indirizzamento set-associativo a due vie. Il
numero dinsieme a 13 bit identifica un unico insieme della cache, e fornisce anche il nu
mero del blocco nella memoria centrale, modulo 213. Qiicsto determina la corrisponden
za tra blocchi e linee. Dunque, i blocchi 000000, 008000,..., FF8000 della memoria cen
trale sono mappati nellinsieme 0 della cache. Ciascuno di questi blocchi pu essere
caricato in ciascuna delle due lince dclliiisieme. Si noti chc non esistono coppie di bloc
chi aventi lo stesso numero di etichetta mappabili nello stesso insieme della cache. Per una
lettura, il numero di insieme a 13 bit viene utilizzato per determinare quale insieme di due
lince debba essere esaminato. Entrambe le linee nellinsieme sono confrontate con il tag
dell'indirizzo cui si deve accedere.
Nel caso estremo di v = m, k = 1, la tecnica set-associativa si riduce allindirizzamento di
retto, e per v= 1,k = m,si riconduce all indirizzamento associativo. Luso di due linee per
insieme (v = m !2, k = 2) lorganizzazione set-associativa pi comune. La frequenza di suc
cesso migliora in modo significativo attraverso I indirizzamento diretto. Il set associativo
a quattro vie (v = m i 4, k = 4) porta a un modesto miglioramento aggiuntivo con un costo
addizionale relativamente piccolo [MAYB84, HILL891. Ulteriori incrementi nel numero
di linee per insieme hanno scarso effetto.
La Figura 4.16 mostra il risultato di una simulazione per misurare le prestazioni di una
cache set-associativa in funzione della sua dimensione [GENU04]. La differenza in termini
di prestazioni tra indirizzamento diretto e set-associativo a due vie piuttosto alta fino a
dimensioni della cache di 64 Kb. Si noti anche che la differenza tra due e quattro vie su 4
Kb c assai inferiore rispetto alla differenza su 8 Kb. La complessit della cache cresce con
lassociativit e in questo caso laumento dellassocitivit non sarebbe giustificabile a me
no di un incremento della dimensione della cache fino a 8 o anche 16 Kb. Un ultimo pun
to degno di nota che oltre i 32 Kb lincremento delle dimensioni della cache non porta
significativi vantaggi nelle prestazioni.
I
risultati nella Figura 4.16 sono basati su una simulazione di esecuzione di un com
pilatore GCC. Applicazioni diverse possono dare risultati diversi. Ad esempio, [CANTO 1]
fornisce risultati per le prestazioni della cache utilizzando molti benchmark della suite
CPU2000 SPEC. 1risultati di [CANTO 1] nel confronto tra dimensione della cache e fre
quenza di successi seguono lo stesso andamento di quelli mostrati nella Figura 4.16, anche
se i valori sono talvolta differenti.
C a c h e S im u la to r
M u ltita s k C a c h e S im u la to r

138

Sistema di elaborazione Capitolo 4 - Memoria cache

Ind irizzo d e lla m em oria ce n tra le (binario)

Etichetta,
(h e x )

E ticlietta

Indirizzo della memoria centrale =

S et + Parola

D a ti

O ft O 0 0:0 0 0 0 0' 0 'Q.


O .Q G O O O S Q Q :0; O f t l M

13579246

EtichcUa

Set

9 bit

13 bit

Parola

2 bit

Hf

K W & 1 1 1 :1 0 0 0
P O q l i i ili i i i;i i i i l i i o

02C
02C

'O'O'0': OiO0 0 0:0 0 0 Oi 7 7 7 7 7 7 7 7


i S W i i P o 0 OiP'0 0 ;OOlOOO 11 2 3 5 8 1 3

i Xmx;

02C

FEDCBA98

Etichetta

Dati

Set
numero Etichetta

Dati

-------

rr. -

;r

02C

] [

I j l i O0

12 3 4 5 6 7 8

9 bit

IF F
IF F

' OOiOWOiOO0OW 0 O;

'4

32 bit
9 bit
cache da 16K linee

32 bit

IF F
IF F

I f l M M "I 11:1000!
! i l l i- L 'f i 'tf l 1 ; 0 :

11223344
24682468

----- -

32 bit
Memoria centrale da 16 MB

Not a: I valori dellindirizzo di memoria


sono rappresentati in notazione binaria;
gli altri valori sono in notazione esadecimale.

Figura 4.15

Esempio di indirizzamento set-associativo a due vie.

Figura 4 .1 6

Grado di associativit e dimensione della cache.

4.3 Elementi di progettazione delle cache

Algoritmi di sostituzione
Per poter scrivere un nuovo blocco nella cachc, occorre sostituire uno dei suoi blocchi.
Con !indirizzamento diretto, esiste solo una possibile linea per un particolare blocco, e non
ce niente da scegliere. Per le altre due tecniche invece, necessario un criterio di sostituzione
chc, per ottenere alte velocit, deve essere implementato in hardware. Sono stati sperimen
tati vari algoritmi: menzioniamo quattro dei pi comuni. Probabilmente il pi efficace lal
goritmo di sostituzione LRU (least recently used) che sostituisce quel blocco dellinsieme che
rimasto nella cache pi a lungo senza essere referenziato. In una memoria set-associativa
a due vie, questo viene implementato facilmente. Ogni linea include lu bit USE.
Qiiando si accede a una linea, il suo bit USE posto a 1 e il bit USE dellaltra linea
di quellinsieme posto a 0. Quando un blocco deve essere posto nellinsieme, viene uti
lizzata la linea il cui bit USE a 0. Poich assumiamo chc le locazioni di memoria pi uti
lizzate saranno referenziate con maggior probabilit, lalgoritmo LRU dovrebbe fornire la
miglior frequenza di successi. Unaltra possibilit lalgoritmo FIFO (first-in-first-out)\ es
so sostituisce il blocco nclFinsieme che c rimasto pi a lungo nella cachc. Questo lalgo
ritmo facilmente implementato con tecniche round-robin o a buffer circolare.
Un'altra possibilit ancora data dallalgoritmo LFU che sostituisce il blocco del
linsieme che ha subito meno accessi. Per la sua implementazione si pu associare un con
tatore a ciascuna linea. Una tecnica di natura completamente diversa consiste nel prende
re una linea a caso tra quelle candidate. Varie simulazioni hanno mostrato che le prestazioni
della sostituzione casuale sono appena leggermente inferiori rispetto agli altri algoritmi
[SMIT82].

Politica di scrittura
Prima che un blocco residente nella cache possa essere sostituito, necessario verificare se sia
stato alterato nella cache ma non in memoria centrale. Se non cos, allora il vecchio bloc
co nella cache pu essere soprascritto. Viceversa, sar stata eseguita almeno unoperazione di
scrittura su una parola in quella linea di cache, e di conseguenza necessario aggiornare la
memoria centrale. Esiste tutta una serie di politiche di scrittura, con compromessi tra le
prestazioni c i costi. Ci sono due problemi da affrontare. Primo, pi di im dispositivo pu ave
re accesso alla memoria centrale. Per esempio, un modulo di I/O potrebbe essere in grado
di leggere o scrivere direttamente in memoria. Se una parola stata alterata soltanto nella ca
che, allora la corrispondente parola di memoria non c valida. Al contrario, se il dispositivo
di I/O ha alterato la memoria centrale, allora la parola nella cache a non essere valida. Un
problema pi complesso si verifica quando pi processori sono connessi allo stesso bus e cia
scun processore ha una propria cache locale. In tal caso, se una parola viene alterata in una
cache, presumibilmente ci potrebbe invalidare una parola nelle altre.
La tecnica pi semplice chiamata write-through. Utilizzando tale tecnica, tutte le
operazioni di scrittura vengono eseguite sia in memoria centrale sia nella cache, assicurando
cos chc la memoria centrale sia sempre aggiornata. Qualsiasi altro modulo processore-ca
che pu monito rare il traffico verso la memoria centrale per mantenere la consistenza al
linterno della propria cache. Il principale svantaggio di questa tecnica consiste nel gene
rare un notevole traffico in memoria che pu costituire un collo di bottiglia. Una tecnica
alternativa, nota come write back minimizza le scritture in memoria. Questa tecnica pre
vede chc gli aggiornamenti siano eseguiti solo nella cache.

139

140

Sistema di elaborazione Capitolo 4 - Memoria cache

IJ problema di questa tecnica che parti della memoria centrale non sono aggiornate,
c dunque gli accessi tramite moduli di I/O possono essere consentiti solo attraverso la ca
chc. Ci richiede circuiti complicati e costituisce un potenziale collo di bottiglia. Lesperienza
ha mostrato chc la percentuale di accessi alla memoria in scrittura dellordine del 15 per cen
to [SMIT82], ma per certe applicazioni tale valore pu avvicinarsi al 33 per cento (molti
plicazioni tra vettori) c pu arrivare al 50 per cento (trasposizioni di matrice).

Esempio 4.3 Considerate una cache con dimensione di linea di 32 byte e una memoria

principale che richiede 30 ns per il trasferimento di una parola di 4 byte. Per ogni linea che
viene scritta almeno una volta prima di essere riportata fuori dalla cachc, qual il nume
ro medio di volte che occorre scrivere una linea prima chc sia ricopiata nella memoria prin
cipale, affinch una cache write back sia pi efficiente di una cachc write through?
Nel caso della cache write back, ogni linea modificata viene ricopiata in un tempo pa
ri a 8 X 30 ns = 240 ns. Nel caso write through, ogni aggiornamento della linea richiede
chc una parola sia ricopiata in memoria principale e questo avviene in 30 ns. Quindi il wri
te back pi efficiente se mediamente le linee chc vengono scritte almeno una volta ven
gono scritte pi di 8 volte prima di essere ricopiate nella memoria principale.

In unorganizzazione a bus in cui pi di un dispositivo (generalmente un processore) pre


senta una cache, e la memoria centrale c condivisa, sussiste un ulteriore problema.
Lalterazione dei dati in una cache invalida non solo la parola corrispondente nella memoria
centrale ma anche quella stessa parola nelle altre cachc (qualora abbiano quella stessa pa
rola). Anche adottando una politica write-through, le altre cachc potrebbero contenere da
ti non validi. I sistemi che prevengono !insorgere di questo problema mantengono la coe
renza della cache.
Elenchiamo ora alcuni possibili approcci al problema.
Monitoraggio del bus con write through: i controllori delle cache osservano le li

nee di indirizzi per rilevare operazioni di scrittura in memoria da parte di altri gestori
del bus. Se un altro gestore scrive in una locazione di memoria condivisa gi residente
nella cache, il controllore della cachc invalida tale valore nella cache. Questa strate
gia presuppone luso di una politica write-through da parte di tutte le cache.
Trasparenza hardware: viene utilizzato hardware aggiuntivo per assicurare che tut-

ti gli aggiornamenti alla memoria centrale, tramite cache, si riflettano in tutte le ca


che. Cos, se un processore modifica una parola nella propria cache, tale aggiorna
mento viene scritto in memoria centrale e tutte le parole corrispondenti nelle altre
cache vengono similmente aggiornate.
Memoria noncacheable: soltanto una porzione di memoria centrale, detta nonca

cheable, pu essere condivisa. In questi sistemi gli accessi alla memoria condivisa so
no dei cache miss, dato che la memoria condivisa non viene mai copiata nella cachc.
La memoria noncacheable pu essere identificata via hardware (chip-select) o tramite
indirizzi riservati.
Il tema della coerenza della cache un campo di ricerca particolarmente attivo: cc ne oc
cuperemo ancora nella Parte 5.

4.3 Elementi di progettazione delle cache

Dimensione delle linee


Un altro elemento di progettazione la dimensione delle linee. Quando un blocco di dati
posizionato nella cachc, viene recuperata non solo la parola desiderata, ma anche un cer
to numero di parole adiacenti. Qiiando la dimensione del blocco cresce, vengono portati
all'interno della cache pi dati utili c la percentuale di successi inizialmente aumenter per
il principio di localit che asserisce unelevata probabilit di accesso ai dati limitrofi a una
parola referenziata. In seguito, per, la frequenza di successo comincer a diminuire e la pro
babilit di utilizzare le informazioni appena prelevate diventer minore della probabilit di
riutilizzare le informazioni che devono essere sostituite. Entrano in gioco due specifici
effetti.
Blocchi pi larghi riducono il numero di blocchi nella cache. Poich ogni prelievo di
blocco sovrascrive i contenuti pi vecchi della cache, un piccolo numero di blocchi
porta alla sovrascrittura dei dati in fasi immediatamente successive al loro prelievo.
Quando i blocchi diventano troppo grandi, ogni parola addizionale pi lontana dal
la parola richiesta, e quindi diminuisce la probabilit che venga richiesta nellimme
diato futuro.
La relazione tra dimensione del blocco e frequenza di successi complessa, dipendendo
dalle caratteristiche di localit di un particolare programma, e non esistono valori ottimali
definitivi. Dimensioni da 8 a 64 byte sembrano ragionevolmente vicine AYoptimum
[SMIT87, PRZY88, PRZY90, HAND98]. Nei sistemi HPC si usano prevalentemente di
mensioni di linea di 64 e 128 byte.

Numero di cache
Qando le cache furono introdotte, i sistemi avevano generalmente una sola cache. In
tempi pi recenti, luso di cache multiple diventato la norma. Due aspetti di questo pro
blema di progettazione riguardano il numero di livelli di cache e luso di cache unificate o
separate.
Cache multilivello
Con lo sviluppo dellintegrazione circuitale, divenuto possibile avere una cache sullo
stesso chip del processore: la cache on-chip. Confrontata con una cache raggiungibile at
traverso un bus esterno, la cache on-chip riduce lattivit del bus esterno del processore e
quindi velocizza i tempi di esecuzione c incrementa le prestazioni generali del sistema.
Qiiando le istruzioni o i dati richiesti vengono trovati sulla cache on-chip, laccesso al bus
viene eliminato. Poich i percorsi dati interni al processore sono pi corti dei bus, gli ac
cessi della cache on-chip sono sensibilmente pi veloci anche in assenza di cicli di attesa
del bus. Inoltre, durante questo periodo il bus libero per altri trasferimenti.
Ladozione di una cache on-chip pone la domanda se le cachc off-chip, o esterne, sia
no ancora opportune. Generalmente, la risposta affermativa e la maggior parte dei pro
getti odierni include sia una cachc on-chip sia una esterna. Lorganizzazione risultante no
ta come cache a due livelli, dove la cachc interna viene chiamata al livello 1 (LI) e quella
esterna al livello 2 (L2). La ragione per includere una cache di secondo livello c la seguen
te. Sc non esiste una cache L2 e il processore effettua una richiesta di accesso a una loca
zione di memoria non presente nella cachc LI, allora il processore deve accedere alla me-

141

142

Sistema di elaborazione Capitolo 4 - Memoria cache

moria DRAM o ROiM attraverso il bus. A causa della bassa velocit del bus e ai lenti tem
pi di accesso alla memoria, il risultato una prestazione scadente. D altro canto, se viene
usata una cache L2 SRAM (static RAM), allora le informazioni mancanti possono, in
molti casi, essere rapidamente recuperate. Se la SRAM sufficientemente veloce per asse
condare la velocit del bus, allora si pu accedere ai dati utilizzando ima transazione di sta
to senza attesa, il tipo pi veloce di trasferimento sul bus.
Due caratteristiche della progettazione delle odierne cachc multilivello sono degne di
nota. In primo luogo, per una cache off-chip L2, in molti progetti non viene utilizzato il bus
di sistema come percorso per i trasferimenti tra la cache L2 e il processore, bens viene im
piegato un percorso dati separato, in modo da ridurre il carico di lavoro sul bus di sistema.
In secondo luogo, con il continuo restringimento dei componenti del processore, un buon
numero di processori ora incorpora la cache L2 sul chip, migliorando le prestazioni.
I
potenziali risparmi dovuti alluso di una cache L2 dipendono dalla frequenza di suc
cessi in entrambe le cachc (LI c L2). Diversi studi hanno mostrato chc, in generale, luso
di una cachc di secondo livello migliora effettivamente le prestazioni ([AZIM92], [NOVI93], [HAND98]). Tuttavia, luso di cache multilivello complica tutti i problemi di pro
gettazione collegati alla cachc, inclusi dimensione, algoritmi di sostituzione c politiche di
scrittura (per una trattazione dellargomento si veda [HAND98] e [PEIR99]).
La Figura 4.17 mostra il risultato di una Simulazine per studiare le prestazioni di una
cache a due livelli in funzione della dimensione della cache [GENU04]. Nella figurasi as
sume che entrambe le cache abbiano la stessa dimensione di linea e viene mostrata la fre
quenza di hit totale, ovvero levento che il dato desiderato sia presente nella cache LI e nel
la cache L2. La figura mostra la relazione tra la dimensione di LI e limpatto di L2 sugli hit
totali. L2 ha poco effetto sul numero totale degli hit fino a quando la sua dimensione al-

Dimcnsionc della cache L2 (in hj'te)

F igura 4 .1 7

Frequenza di successo totale (LI e L2) per L I di 8 e 16 Kbyte.

4.3 Elementi di progettazione delle cache

meno il doppio della dimensione di LI. Si noti che la porzione pi ripida della curva per
una cache LI di 8 Kbyte si ha quando la dimensione di L2 di 16 Kbyte, mentre con una
LI di 16 Kbyte, la zona pi ripida si incontra per L2 di 32 Kbyte. Prima di questi punti L2
ha un impatto praticamente nullo sulle prestazioni complessive della cachc. La necessit
che la dimensione di L2 sia superiore a quella di LI per avere un effetto sulle prestazioni
ha delle ragioni specifiche. Se LI ed L2 avessero la stessa dimensione di linea e la stessa ca
pacit, i loro contenuti sarebbero pi o meno identici.
Con laumento della porzione di chip a disposizione della cache, la maggior parte dei
microprocessori recenti ha spostato la cache di secondo livello sul chip e ha aggiunto una
cache L3. In origine la cache L3 era accessibile per mezzo di un bus esterno. Pi recente
mente la maggioranza dei microprocessori ha incorporato anche la cachc L3 nel chip. In
ogni caso, sembra che si riesca a ottenere dalla cachc L3 un vantaggio in termini di pre
stazioni (si veda, ad esempio, [GHAI98]).
Cache unificata (unified) e separata (split)

Qiiando la cache on-chip fece la sua prima apparizione, molti progetti prevedevano unu
nica cache per dati c istruzioni. Pi di recente, diventato usuale dividere la cachc in due:
una dedicata alle istruzioni e una dedicata ai dati. Queste cachc coesistono allo stesso li
vello, tipicamente come due cachc LI. Quando il processore tenta di prelevare unistru
zione dalla memoria principale consulta prima la cache LI per le istruzioni e quando il pro
cessore deve prelevare un dato dalla memoria principale, verifica prima la presenza del dato
nella cache LI dei dati.
Ci sono due vantaggi potenziali legati a una cachc unificata.
Per una data dimensione, una cache unificata presenta una percentuale di successo pi
elevata rispetto a quella separata, poich bilancia il carico tra prelievi di istruzioni e
di dati in modo automatico. In altre parole, se un percorso esecutivo implica molti
pi prelievi di istruzioni che di dati, allora la cache tender a riempirsi di istruzioni,
mentre se un percorso di esecuzione implica un numero relativamente maggiore di
prelievi di dati, avverr lopposto.
necessario progettare e implementare una sola cachc.
Nonostante questi vantaggi, oggi si tende ad adottare cachc separate in particolare per
macchine supcrscalari quali Pentium c PowerPC, che enfatizzano lesecuzione parallela di
istruzioni e il prelievo anticipato di istruzioni. Il vantaggio chiave della progettazione di ca
che separate consiste neUeliminazionc della contesa della cache tra lunit di prelie
vo/decodifica delle istruzioni e lunit di esecuzione. Ci particolarmente importante nei
progetti basati sul pipelining delle istruzioni. In genere, il processore prelever istruzioni in
anticipo e riempir un buffer, o una pipeline, con le istruzioni da eseguire. Si supponga ora
di avere ima cache unificata per istruzioni e dati. Qiiando si deve eseguire un accesso in me
moria, la richiesta viene sottoposta alla cache unificata. Se, allo stesso tempo, lunit di pre
lievo anticipato delle istruzioni (prefetcher) effettua una richiesta di lettura di istruzione in
cache, tale richiesta verr temporaneamente bloccata di modo che la cachc possa dappri
ma servire lunit di esecuzione, permettendole di completare listruzione attualmente in
esecuzione. Tale contesa della cache pu provocare un degrado nelle prestazioni per !in
terferenza con un uso efficiente della pipeline. La cachc separata evita questa difficolt.

143

144

Sistema di elaborazione Capitolo 4 - Memoria cachc

Tabella 4.4

Evoluzione della cache Intel.

P roblem a

Soluzione

La memoria esterna pi lenca del


bus di sistema.

Aggituita di una cache esterna che 386


utilizza tecnologie di memoria
pi veloci.

Con Im crem ento della velocit del


processore il bus esterno diventa un
collo di bottiglia nell accesso alla
cache.

Spostamento della cache esterna


sul chip, con funzionamento alla
stessa velocit del processore.

486

La cache interna piuttosto piccola a Aggiunta di una cache L2 esterna


causa dello spazio ridotto sul chip.
che utilizza tecnologie pi veloci
rispetto alla memoria principale.

486

Si verificano conflitti quando il


Introduzione di cache separate
Prefetcher delle istruzioni e lUnit di per istruzioni e dati.
Esecuzione richiedono
simultaneamente laccesso alla cachc.
In questo caso, il Prefetcher viene
bloccato fino al completamento
dellaccesso da parte dellunit di
esecuzione.

Pentium

Con lincremento della velocit del


processore il bus esterno diventa un
collo di bottiglia nellaccesso alla
cachc L2.

Introduzione di un back-side bus


separato pi veloce rispetto al bus
esterno principale (front-side). Il
BSB dedicato alla cache L2

Pentium Pro

Spostamento della cachc L2 sul


chip del processore

Pentium II

Aggiunta di una cache L3.

Pentiimi III

Spostamento della cache L3 sul


chip del processore.

Pentiiun 4

Alcune applicazioni lavorano su


grandi database e devono avere un
accesso veloce a grandi quantit di
dati. Le cache presenti sul chip sono
troppo piccole.

4.4

Processore su cui la nuova


funzionalit appare
per la prim a volta

Organizzazione della cache nel Pentium 4

Levoluzione ncllorganizzazione della cache chiaramente visibile in quella dei microprocessori Intel (Tabella 4.4). Mentre 80386 non include una cache on-chip, 80486 ne in
clude una da 8 Kbyte, con linee da 16 byte e organizzazione set-associativa a quattro vie.
Tutti i processori Pentium includono due cache on-chip, una per i dati e una per le istru
zioni. Nel Pentinm 4, la cache dati di 16 Kbyte, ha linee da 64 byte e un organizzazione
set-associativa a quattro vie. La cache istruzioni del Pentium 4 viene descritta pi avanti.
Il Pentium II include anche una cache L2 che alimenta le altre due. La cache L2 set-as
sociativa a otto vie, con una dimensione di 512 Kb e lince da 128 byte. Una cachc L3 fu

4.4 Organizzazione della cache nel Pentium 4

aggiunta a partire dal Pcntiiun III. Qiiesta cache venne montata sul chip del processore sul
le versioni high-end del Pentium 4.
La Figiura 4.18 presenta schematicamente il Pentium 4, evidenziando il posiziona
mento delle tre cache. Il nucleo del processore consiste di quattro componenti principali.
Unit di fetch/decodifica: preleva sequenzialmente le istruzioni dalla cache L2, le

decodifica c traduce in una serie di micro-operazioni chc vengono memorizzate nel


la cache istruzioni LI.
Logica di esecuzione out-of-ordcr: esegue le micro-operazioni soggette a dipen

denze tra dati e a disponibilit di risorse; cos, le micro-operazioni possono essere pre
disposte per 1esecuzione in un ordine differente da quello del programma. Sc il tem
po lo consente, questa unit organizza lesecuzione speculativa di micro-operazioni
che potrebbero essere richieste in futuro.
Unit di esecuzione: esegue le micro-operazioni, prelevando i dati dallapposita ca

che LI e memorizza i risultati temporanei nei registri.


Sottosistema di memoria: questa unit include la cache L2 e il bus di sistema, che

viene utilizzato per accedere alla memoria centrale (in caso di miss sulle cache LI e
L2) c per accedere alle periferiche.
A differenza dcllorganizzazionc adottata in tutti i precedenti modelli di Pentium, e nella
maggior parte degli altri processori, la cachc istruzioni del Pentium 4 si trova tra i circui
ti di decodifica delle istruzioni e il nucleo di esecuzione. La motivazione di fondo che sta
alla base di questa decisione e la seguente. Come si dir in modo pi completo nel Capitolo
14, Pentium decodifica le istruzioni macchina e le traduce in semplici istruzioni (di tipo
RISC) chiamate micro-operazioni. Luso di micro-operazioni semplici e di lunghezza fis
sa permette ladozionc di tecniche di pipelining superscalare e di schedulazione che mi
gliorano le prestazioni. Tuttavia, le istruzioni macchina Pentium sono difficili da decodi
ficare e hanno varie lunghezze e molte opzioni. Ne deriva chc le prestazioni sono migliori
se la decodifica viene eseguita indipendentemente dalla logica di schedulazione c di pipe
lining. Torneremo sullargomento nel Capitolo 14.
La cachc dati utilizza la politica writc-back: i dati sono ricopiati in memoria cen
trale solo quando vengono rimossi dalla cachc ed avvenuto un aggiornamento. Il pro
cessore Pentium 4 pu essere configurato dinamicamente per supportare il caching di ti
po writc-through.
La cachc dati LI c controllata da due bit in uno dei registri di controllo, chiamati bit
CD (cache disable) c N W (not write-through). Si veda la Tabella 4.5. Esistono anche due
istruzioni Pentium 4 chc possono essere impiegate per controllare la cachc dati: INVD in
valida (svuota) la memoria della cachc interna e segnala a quella esterna (qualora ve nc sia
almeno una) di invalidarsi. WBINVD riscrive e invalida la cachc interna, quindi riscrive c
invalida quella esterna.
Sia la cachc L2 sia la cachc L3 sono set-associative a 8 vie, con una dimensione di li
nea di 128 byte.

145

146

i <

Unit di
prclicvo/dccodifica
istruzioni
64

Banco dei registri


in virgola mobile

Banco dei registri interi

Unit di
caricamento
indirizzi

Unit di
memorizzazione
indirizzi

ALU
per gli
interi

ALU

ALU per
gli interi

MMX in
virgola
mobile

Trasfer
memo
registri

Cache L 2 (512 K B )

..................

Figura 4 .1 8

Visione schem atica del Pentium 4 .

Sistema di elaborazione Capitolo 4 - Memoria cache

Bus di sistema

4.5 OrganizzazioncdcIIacachcdiARM

T ab ella 4.5

M o d O Derativi d e lla c a c h e del P entium 4.


M odo operativo

Bit di controllo
CD

NW

Cache fili

W rite through

Invalidate
Abilitato

Abilirato

Abilitato

Disabilitato

Abilitato

Abilitato

Disabilitato

Disabilitato

Disabilitato

Nota: C D = O c W

4.5

non una combinazione valida

Organizzazione della cache di ARM

Lorganizzazione della cachc nei processori ARM ha seguito levoluzione dellarchitettura


della famiglia ARM, rispecchiando la continua ricerca di prestazioni chc e la forza motri
ce dei progettisti di microprocessori.
La Tabella 4.6 mostra questa evoluzione. Il modello ARM7 utilizzava una cache uni
ficata, mentre tutti i modelli seguenti utilizzano una cache per le istruzioni e una per i da
ti. Tutti i progetti ARM utilizzano cache set-associative, con diversi gradi di associativit
e dimensioni di linea. Gli ARM con cache dotati di MMU utilizzano una cache logica nel
le famiglie da ARM7 a ARM10, inclusi i processori Intel StrongARM e Intel Xscale.
La famiglia ARJvIl 1 utilizza una cache fisica. La differenza tra cache logica e fisica stata
trattata in precedenza (Figura 4.7).
Uninteressante funzionalit del larchitettura ARM lutilizzo di un piccolo buffer di
scrittura FIFO (first-in first-out) per migliorare le prestazioni di scrittura in memoria. Il
buffer di scrittura interposto tra la cache e la memoria principale e consiste in un insie
me di indirizzi e un insieme di dati. Il buffer piccolo rispetto alla cache e pu immagaz
zinare fino a quattro indirizzi. Tipicamente il buffer di scrittura abilitato per tutta la me
moria principale, anche se pu essere selettivamente disabilitato a livello di pagina. La
Tabella 4.6

C a ra tte ristic h e d e lla c a c h e di ARM.


Associativit
D im ensione
Dim ensione
della cachc (KB) della linea di
cache (parole)

Locazione

D im ensione
del buffer di
scrittura
(parole)

Core

T ip o di
cache

ARM720T

Unificata

4 vie

Logica

ARM920T

Separata

16/16 D /I

64 vie

Logica

16

ARM926EJ-S

Separata

4-128/4-128 D /I

4 vie

Logica

16

ARM1022E

Separata

16/16 D /I

64 vie

Logica

16

ARM1026EJ-S

Separata

4-128/4-128 D /I

4 vie

Logica

Intel
StrongARM

Separata

16/16 D /I

32 vie

Logica

32

Intel Xscale

Separata

32/32 D /I

32 vie

Logica

32

ARMI 136-JF-S

Separata

4-64/4-64 D /I

4 vie

Fisica

32

147

148

Sistema di elaborazione Capitolo 4 - Memoria cache

Figura 4.19

Organizzazione della cache di ARM e del buffer di scrittura.

Figura 4.19, presa da [SLOS04], mostra le relazioni tra buffer di scrittura, cache e memo
ria principale.
Vediamo come funziona il buffer di scrittura. Quando il processore scrive in una zo
na abilitata all utilizzo del buffer, il dato posto nel buffer a una velocit pari a quella del
processore e il processore continua la sua esecuzione. La scrittura ha luogo quando il da
to presente nella cachc ricopiato nella memoria principale. Il dato da scrivere viene tra
sferito dalla cache al buffer di scrittura. Il buffer di scrittura realizza quindi la scrittura ester
na in parallelo. Se il buffer di scrittura pieno (sia perche stato raggiunto il massimo
numero di parole nel buffer, sia perch non ci sono pi posizioni per nuovi indirizzi) il pro
cessore viene bloccato finch non ce spazio sufficiente nel buffer. Mentre vengono eseguite
operazioni chc non coinvolgono scritture, il buffer di scrittura continua a scrivere sulla me
moria principale fino a quando si svuota completamente.
I
dati scritti nel buffer di scrittura non sono disponibili per la lettura nella cache fi
no a quando non sono stati trasferiti dal buffer alla memoria centrale. Qiicsta la ragione
principale per cui il buffer e cos piccolo. Anche in questo modo, a meno che una grande
porzione del programma esegua operazioni di scrittura, il buffer di scrittura riesce a mi
gliorare le prestazioni.

4.6

Letture consigliate______________________________

[JACG08] c una trattazione eccellente e aggiornata del progetto delle cache. Unaltra
trattazione completa della progettazione delle cache si trova in [HAND98]. Una docu
mentazione classica che vale ancora la pena leggere [SMIT82], chc tratta i vari elemen
ti di progetto delle cachc e presenta i risultati di un esteso insieme di analisi. Un altro in
teressante classico [WILK65], probabilmente il primo documento a introdurre il
concetto di cachc.[GOOD83] e unutile analisi dei comportamenti della cache. Un altro
studio chc vale la pena di leggere [BELL74]. [AGAR89] presenta un esame dettagliato
di svariati problemi di progetto collegati alla multiprogrammazionc e al multiprocessing.
[HIGB90] fornisce un insieme di semplici formule che possono essere impiegate per sti
mare le prestazioni della cache in funzione dei loro parametri.

4.7 Parole chiave, domande di revisione e problemi

AG AR89 A. Agar wal, Analysis of Cache Performancefor Operating Systems and


Multiprogramming, Boston, KluwcrAcadcmic Publishers, 1989.
BELL74 Bell, J.; Casasent, D.; e Bell, C. An Investigation into Alternative
Cache Organizations. IEEE Trayisactions on Computers, aprile 1974.
http://research.microsoft.com/users/GBell/gbvita.htm.
GOOD83 Goodman, J. Using cache memory to reduce proccssor-memory
ban d w id th Proceedings, l ( r Annual International Symposium on Computer
Architecture, 1983, Ristampato in [HILLOOj.
HAND98 J. Handy, The Cache Memory Book, San Diego, Academic Press, 1993.
HIGB90 L. Higbie, Quick and Easy Cachc Performance Analysis, Computer
Architecture News, giugno 1990.
JA C 008 Jacob, B.; Ng1S.: e Wang, D. Memory Systems: Cache, DRAM, Disk.
Boston: Morgan Kaufmann, 2008.
SMIT82 Smith, A. Cache Memories AC M Computing Surveys, settembre
1992.
WILK65 Wilkes, M Slave Memories and Dynamic Storage Allocation, IEEE
Transitions on Electronic Computers, aprile 1965. Ristampato in [HILLOO].

4.7

Parole chiave, domande d revisione e


problemi__________________________________

Parle chiave
accesso casuale
accesso diretto
accesso sequenziale
algoritmo di sostituzione
cache dei dati
cache delle istruzioni
cache fisica
cache LI
cache L2
cache L3
cache logica
cache multilivello
cache separata
cache unificata

cache virtuale
fallimento di cache
(cache miss)
frequenza di successo
(o di hit)
gerarchia di memoria
high-performance
computing (HPC)
indirizzamento
associativo
indirizzamento diretto
indirizzamento
set-associativo
insieme di cache

linea di cache
localit
localit spaziale
localit temporale
memoria cache
successo di cache
(cache hit)

taB

tempo di accesso
write back
write once
write through

149

150

Sistema di elaborazione Capitolo 4 - Memoria cache

Domande di revisione
4 .1 Qiuili sono le differenze tra laccesso sequenziale, diretto e casuale?
4.2 Qiial la relazione generale tra tempo di accesso, costo della memoria e capacit?
4.3 Come si mette in relazione il principio di localit con luso di livelli multipli di
memoria?
4.4 Quali sono le differenze tra indirizzamento diretto, associativo e set-associativo?
4.5 In una cachc a indirizzamento diretto, un indirizzo di memoria centrale visto co
me lunione di tre campi. Elencate e definite tali campi.
4.6 In una cache associativa, un indirizzo di memoria centrale visto come lunione di
due campi. Elencate e definite tali campi.
4.7 In una cache set-associativa, un indirizzo di memoria centrale visto come lunio
ne di tre campi. Elencate e definite tali campi.
4.8 Qual la distinzione tra localit spaziale e localit temporale?
4.9 In generale, quali sono le strategie per sfruttare la localit spaziale e la localit
temporale?

Problemi
4.1 Una cache set-associativa consiste di 64 linee, o slot, divise in insiemi di quattro li
nee. La memoria centrale contiene 4K blocchi di 128 parole ciascuno. Mostrate il
formato degli indirizzi della memoria centrale.
4.2 Una cache set-associativa a due vie ha linee da 16 byte e una dimensione totale di 8
Kbyte. La memoria principale, di 64 Mbyte, indirizzabile al byte. Mostrate il for
mato degli indirizzi della memoria principale.
4.3 Esibite le seguenti informazioni, in formato csadccimale, per gli indirizzi esadecimali 111111, 666666 e BBBBBB della memoria principale.
a. Valori di etichetta, linea e parola nel caso di una cache a indirizzamento diretto,
utilizzando il formato della Figura 4.10.
b. Valori di etichetta e parola per una cache associativa, utilizzando il formato del
la Figura 4.12.
c. Valori di etichetta, insieme c parola per una cachc set-associativa a due vie, uti
lizzando il formato della Figura 4.15.
4.4 Elencate i seguenti valori.
a. Per lcsempio di cachc a indirizzamento diretto della Figura 4.10: lunghezza del
lindirizzo, numero di unit indirizzabili, dimensione del blocco, numero di bloc
chi in memoria centrale, numero di linee nella cache, dimensione delletichetta.
b. Per lcsempio di cache associativa della Figura 4.12: lunghezza dellindirizzo, nu
mero di unit indirizzabili, dimensione del blocco, numero di blocchi in memoria
centrale, numero di linee nella cache, dimensione delletichctta.
c. Per lesempio di cache set-associativa a due vie della Figura 4.15: lunghezza del
lindirizzo, numero di unit indirizzabili, dimensione del blocco, numero di bloc-

4.7 Parole chiave, domande di revisione e problemi

chi in memoria centrale, numero di linee nellinsieme, numero di insiemi, numero


di linee nella cache, dimensione delletichctta.
4.5 Si consideri un microprocessore a 32 bit dotato di cache on-chip da 16 Kbyte, set
associativa a quattro vie. Assumendo che le linee della cachc abbiano una dimen
sione di quattro parole da 32 bit, tracciate un diagramma a blocchi della cache mo
strando la sua organizzazione e come i differenti campi indirizzo vengano utilizzati
per determinare successi e fallimenti. Dove viene mappata nella cache la parola di
indirizzo in memoria ABCDE8F8?
4.6 Si assumano le seguenti specifiche per una memoria cache esterna: set-associativa a
quattro vie: dimensione di linea di due parole da 16 bit; capace di ospitare un tota
le di 4K parole a 32 bit dalla memoria centrale; usata con un processore a 16 bit che
adotta indirizzi a 24 bit. Progettate la struttura della cache e mostrate come inter
preta gli indirizzi del processore.
4.7 Intel 80486 ha una cache unificata on-chip. Essa contiene 8 Kbyte, ha un organizza
zione set-associativa a quattro vie e una lunghezza di linea di quattro parole da 32 bit.
La cachc organizzata in 128 insiemi. C e un unico bit di validit di linea e tre bit
BO, BI e B2 (i bit LRU) per linea. Qiiando si verifica un fallimento, 80486 legge
16 byte della memoria centrale in un solo blocco di lettura. Tracciate un diagram
ma semplificato della cache e mostrate come sono interpretati i campi degli indirizzi.
4.8 Si consideri un calcolatore con una memoria centrale di 216 byte indirizzabili c una
dimensione di blocco di otto byte c si assuma di usare una cache a indirizzamento
diretto di 32 lince.
a. Come sono suddivisi gli indirizzi di memoria in etichetta, numero di linea c nu
mero di byte?
b. In quale linea verrebbero memorizzati i byte con i seguenti indirizzi?
0001

0001

0001

1011

1100

0011

0011

0100

1101

0000

0001

1101

1010

1010

1010

1010

c. Si supponga che il byte di indirizzo 0001 1010 0001 1010 sia memorizzato nella
cachc. Qiiali sono gli indirizzi degli altri byte memorizzati?
d. Quanti byte di memoria possono essere memorizzati in tutto nella cache?
e. Perch anche letichctta viene memorizzata nella cachc?
4.9 Per la sua cachc on-chip, lIntel 80486 utilizza un algoritmo di sostituzione detto
pseudo least recently used. A ciascuno dei 128 insiemi di quattro lince (etichet
tati LO, LI, L2, L3), sono associati tre bit: B0, B le B2. Lalgoritmo di sostituzione
lavora nel modo seguente: quando una linea deve essere sostituita, come prima co
sa la cache determina se luso pi recente provenga da LO e LI o da L2 c L3. Poi la
cache determina quale coppia di blocchi sia stata utilizzata meno di recente e la con
trassegna per la sostituzione. La Figura 4.20 illustra la logica.
a. Specificate come i bit B0, BI e B2 vengano impostati e descrivete come vengano
utilizzati ncHalgoritmo di sostituzione indicato nella Figura4.20.

151

152

Sistema di elaborazione Capitolo 4 - Memoria cache

Sono valide tu tte


le 4 linee nellinsieme?

No

Sostituisci
la linea
non valida

BO = O?

Sostituisci
LO
Figura 4.20

Sostituisci
LI

Sostituisci
L2

Sostituisci
L3

Strategia di sostituzione nella cache on-chip di un Intel 80486.

1>. Mostrate chc lalgoritmo dell80486 approssima un vero algoritmo LRU.


Suggerimento: considerate il caso in cui il pi recente ordine duso sia LO, L2, L3, LI.
c. Dimostrate che un vero algoritmo LRU richiederebbe sei bit per insieme.
4.10 Una cache set-associativa ha blocchi di quattro parole da 16 bit e ima dimensione
di insieme di 2. La cache pu ospitare un totale di 4048 parole. La dimensione del
la memoria centrale cachable di 64K X 32 bit. Progettate la struttura della cachc e
mostrate come vengono interpretati gli indirizzi del processore.
4.11 Si consideri un sistema di memoria che utilizza indirizzi a 32 bit per Tindirizzamcnto
a livello di byte, e ima cachc con linee da 64 byte.
a. Si assuma chc la cachc adotti Tindirizzamento diretto con un campo etichetta
nelTindirizzo di 20 bit. Mostrate il formato delTindirizzo e determinate i seguenti
parametri: numero di unit indirizzabili, numero di blocchi nella memoria cen
trale, numero di lince nella cache, dimensione dellctichetta.
b . Si assuma chc la cache sia associativa. Mostrate il formato delTindirizzo e deter
minate: numero di unit indirizzabili, di blocchi nella memoria centrale, di linee
nella cachc, eia dimensione del letichetta.
c. Si assuma chc la cache sia set-associativa a 4 vie con un campo etichetta nelTin
dirizzo di 9 bit. Mostrate il formato delTindirizzo e determinate: numero di unit
indirizzabili, di blocchi nella memoria centrale, di linee nelTinsieme, di insiemi
nella cachc, di linee nella cache, e la dimensione delletichetta.
4.12 Considerate un computer con le seguenti caratteristiche: 1 Mbyte di memoria prin
cipale; dimensione di parola di 1 byte: dimensione di un blocco di 16 byte; di
mensione della cachc di 64 Kbyte.
a. Fornite i valori di etichetta, indirizzo della linea di cache c offset di parola per una
cache a indirizzamento diretto, relativamente agli indirizzi della memoria prin
cipale F0010,01234 c CABBE.

4.7 Parole chiave, domande di revisione e problemi

b. Trovate due indirizzi qualsiasi della memoria principale con etichette diverse
che corrispondano allo stesso intervallo di cachc nel caso di una cachc a indiriz
zamento diretto.
c. Fomite i valori di etichetta c offset per una cachc completamente associativa, per
gli indirizzi di memoria principale FOOlO e GABBE.
d. Fornite i valori di etichetta, insieme e offset per una cache set-associativa a due
vie, per gli indirizzi di memoria principale F0010 e GABBE.
4.13 Descrivete una semplice tecnica per Timplcmentazione di un algoritmo di sostitu
zione LRU in una cache set-associativa a quattro vie.
4.14 Gonsiderate ancora TEsempio 4.3. Gomc cambia la risposta se la memoria princi
pale ha un tempo di accesso pari a 30 ns per la prima parola c di 5 ns per le parole
successive?
4.15 Si consideri il seguente codice:
f o r ( i = 0; i < 20; i++)
f o r ( j = 0; j < 10; j++)
a[i] = a[i] * j
a. Fornite un esempio di localit spaziale nel codice.
b. Indicate un esempio di localit temporale nel codice.
4.16 Si generalizzino le equazioni (4.2) e (4.3) riportate nelTAppendice 4A, per gerarchie
di memoria a ArIivclli.
4.17 Un sistema di elaborazione contiene una memoria centrale di 32K parole a 16 bit
e una cache di 4K parole divisa in insiemi di quattro linee con 64 parole per linea.
Si assuma chc la cache sia inizialmente vuota. Il processore preleva parole dagli in
dirizzi 0, 1, 2,..., 4351 in questordine. Esso poi ripete tale sequenza di prelievo per
altre nove volte. La cache dieci volte pi veloce della memoria centrale. Stimate il
miglioramento derivante dalluso della cache. Si assuma per la sostituzione del bloc
co una politica LRU.
4 .18 Gonsiderate una cache di 4 linee da 16 byte ciascuna. La memoria principale sud
divisa in blocchi di 16 byte ciascuno, ossia il blocco 0 ha indirizzi da 0 a 15, e cos
via. Gonsiderate adesso un programma che accede alla memoria con la seguente se
quenza di indirizzi:
Una volta: da 63 a 70.
Per 10 volte: da 15 a 32; da 80 a 95.
a. Supponete che la cache sia a indirizzamento diretto. I blocchi di memoria 0,4 e
cos via sono assegnati alla linea 1; i blocchi 1, 5 e cos via sono assegnati alla li
nea 2; e cos per gli altri blocchi. Calcolate la frequenza di successo.
b. Supponete chc la cache sia set-associativa a due vie, con due insiemi di due lince
ciascuno. I blocchi con numerazione pari sono assegnati alTinsiemc 0 c gli altri
alTinsieme 1. Calcolate la frequenza di successo per la cache set-associativa a due
vie utilizzando lo schema di sostituzione LRU.

153

154

Sistema di elaborazione Capitolo 4 - Memoria cachc

4.19 Si consideri un sistema di memoria con i seguenti parametri:


T = 100 ns
C = 10-4$/bit
T rn = 1200 ns
Cm = 10 5$/bit
a. Qual il costo di 1 Mbyte di memoria centrale?
b. Qual il costo di 1 Mbyte di memoria centrale usando la tecnologia della me
moria cache?
c. Se il tempo di accesso effettivo del 10 per cento pi grande rispetto al tempo
di accesso alla cache, qual e la percentuale di successi //?
4.20 a. Considerate una cache LI con tempo di accesso di 1 ns c frequenza di successo
H = 0,95. Supponete di cambiare il progetto della cache (dimensioni della cache e
sua organizzazione) in modo chc //s ia incrementato al valore 0,97 c il tempo di ac
cesso diventi di 1,5 ns. Sotto quali condizioni una tale modifica comporta un mi
glioramento delle prestazioni?
b. Spiegate le ragioni per cui il risultato ottenuto ha un significato intuitivo.

4.21 Considerate una cachc a singolo livello con tempo di accesso di 2,5 ns, dimensio
ne di linea di 64 byte e frequenza di successo H = 0,95. La memoria principale c in
grado di trasferire blocchi con un tempo di accesso di 50 ns per la prima parola (4
byte) c di 5 ns per le successive.
a. Qiial c il tempo di accesso in caso di cache miss? Assumete chc la cache attenda
fino a quando la linea sia stata prelevata dalla memoria principale e quindi vi sia
una riesecuzione con cachc hit.
b. Supponete che incrementando le dimensioni della linea a 128 byte la frequenza
di successo //diventi 0,97. Il tempo medio di accesso alla memoria sar minore?
4.22 Un elaboratore ha una cache, una memoria centrale e un disco utilizzato per la me
moria virtuale. Se una parola referenziata nella cache, sono richiesti 20 ns per ac
cedervi. Se essa si trova nella memoria centrale ma non nella cache, sono richiesti
60 ns per caricarla nella cache e quindi laccesso viene nuovamente effettuato. Sc la
parola non nella memoria centrale, sono richiesti 12 ms per prelevare la parola dal
disco, seguiti da 60 ns per copiarla nella cache e infine laccesso viene nuovamente
fatto partire. La percentuale di successi nella cachc c 0,9 e nella memoria centrale c
0,6. Qiial il tempo medio in ns richiesto per accedere a ima parola referenziata su
questo sistema?
4.23 Considerate una cache con dimensione di linea di 64 byte. Assiunete che media
mente il 30% delle linee della cachc sia dirty. Una parola formata da 8 byte.
a. Assumete che vi sia il 3% di cachc miss (quindi la frequenza di successo 0,97).
Calcolate la quantit di traffico verso la memoria centrale in termini di byte per
istruzione, sia nel caso di una politica write through, sia nel caso di una politica
write back. La memoria letta nella cache una linea alla volta, ma nel ricopiare i
dati una sola parola pu essere scritta dalla cache nella memoria centrale.
b. Ripetete il punto a. per una percentuale di cache miss del 5%.
c. Ripetete il punto a. per una percentuale di cache miss del 7%.
d. Quali conclusioni potete trarre dai risultati ottenuti?

4.7 Parole chiave, domande di revisione e problemi

4.24 Su un processore Motorola 68020 l u i accesso alla cache impiega due cicli di clock.
Il passaggio di dati dalla memoria centrale al processore attraverso il bus impiega tre
cicli di clock nel caso non si aggi ungano stati di attesa; i dati sono inviati al pro
cessore parallelamente allinvio alla cachc.
a. Calcolate la lunghezza effettiva di un ciclo di memoria dati una frequenza di suc
cesso di 0,9 c una frequenza di clock di 16,67 MHz.
b . Ripetete il calcolo assumendo di inserire 2 stati di attesa di un ciclo ciascuno per
ogni ciclo di memoria. Qiiali conclusioni potete trarre dai risultati ottenuti?
4.25 Assumete di avere un processore con un ciclo di memoria di 300 ns e una frequenza
di esecuzione delle istruzioni di 1 MIPS. Ogni istruzione richiede in media un ciclo
di bus di memoria per il fetch dellistruzione c un ciclo per loperando coinvolto.
a. Calcolate lutilizzo del bus da parte del processore.
b . Supponete che il processore sia dotato di una cache per le istruzioni c che la fre
quenza di hit associata sia 0,5. Stimate limpatto sullutilizzo del bus.
4.26 Le prestazioni di un sistema di cachc a singolo livello per operazioni di lettura pos
sono essere caratterizzate dalla seguente equazione:
T a = T c + (x I - H )' T m
Dove T j il tempo medio di accesso, Tc il tempo di accesso alla cachc, Tm il tem
po di accesso alla memoria (dalla memoria ai registri del processore) c H t la fre
quenza di successo. Per semplicit si assuma che una parola sia caricata nella cache
in parallelo con il caricamento nel registro del processore. Lequazione che stiamo
considerando c analoga allEquazione 4.2.
a. Sia Tij il tempo di trasferimento di una linea tra la cache e la memoria centrale, e
sia W la frazione di riferimenti alla memoria in scrittura. Riscrivete la preceden
te equazione per tener conto anche delle scritture, utilizzando una politica write
through.
b . Sia Wb la probabilit chc una linea nella cache venga alterata. Date LLna formula
per T c utilizzando una politica write back.
4.27 In un sistema con due livelli di cache si definiscano Td = tempo di accesso alla cache
di primo livello; Tcl = tempo di accesso alla cachc di secondo livello; Tm = tempo di
accesso alla memoria; H 1= percentuale di successi per la cache di primo livello; H 1=
percentuale di successi combinata per le cache di primo e secondo livello. Fornite una
formula per il tempo medio di accesso di una operazione di lettura.
4.28 Assumete di avere le seguenti prestazioni in caso di fallimento in lettura: un ciclo
di clock per inviare un indirizzo alla memoria centrale c quattro cicli di clock per
accedere a una parola di 32 bit della memoria centrale e trasferirla al processore c
alla cache.
a. Se la dimensione di una linea di cache di una parola, qual la penalit di falli
mento (cio il tempo aggiuntivo richiesto per una lettura in caso di fallimento)?

155

156

Sistema di elaborazione Capitolo 4 - Memoria cache

b. Qual c la penalit di fallimento se la dimensione di una linea di cache di quat


tro parole c viene eseguito un trasferimento multiplo non a raffica?
c. Qual la penalit di fallimento se la dimensione di una linea di cache di quat
tro parole c viene eseguito un trasferimento, con un ciclo di clock per parola?
4.29 Si consideri il precedente problema e si supponga di modificare il progetto della ca
che incrementando la dimensione di una linea da una a quattro parole ottenendo co
s una riduzione della percentuale di fallimenti di cachc dal 3,2 all*1,1%. Nel caso di
trasferimento a raffica e non, qual la penalit media di fallimento, calcolata come
media su tutte le operazioni di lettura, per le due diverse dimensioni della linea?

Appendice 4A

Caratteristiche delle prestazioni


delle memorie a due livelli

In questo capitolo viene fatto riferimento a una cache che agisce come un buffer tra la me
moria centrale e il processore, creando una memoria interna a due livelli. Tale architettu
ra a due livelli fornisce prestazioni migliori rispetto a una paragonabile memoria a un li
vello, sfruttando la propriet nota come localit, trattata in questa appendice.
Il
meccanismo di caching della memoria centrale fa parte dellarchitettura del calco
latore, implementato in hardware e generalmente non c visibile al sistema operativo.
Esistono altre due istanze di memoria a due livelli chc sfruttano anchesse la localit
e che sono, almeno parzialmente, implementate nel sistema operativo: la memoria virtua
le e la cache del disco (Tabella 4.7). La memoria virtuale sar trattata nel Capitolo 8, men
tre la cache del disco esula dagli scopi di questo libro (si veda a questo proposito
[STAL09]). Qui di seguito forniremo una panoramica di alcune delle caratteristiche del
le prestazioni delle memorie a due livelli, comuni a tutti e tre gli approcci.

Tabella 4.7

Caratteristiche delle memorie a due livelli.


Cache

M em oria virtuale
(paginazione)

Cache del disco

R apporti tra tipici


tem pi d i accesso

5/1 (tra memoria centrale


e cache)

IO6Zl (tra
centrale e disco)

IO6Zl (tra memoria


centrale e disco)

Sistema di gestione
della m em oria

Implementato tramite
hardware speciale

Combinazione di
hardware e software di
sistema

Software di sistema

Tipica dim ensione del


blocco

Da 4 a 128 byte

Da 64 a 4096 byte

D a 64 a 4096 byte

Accesso del processore


al secondo livello

Accesso diretto

Accesso indiretto

Accesso indiretto

Appendice 4A Caratteristiche delle prestazioni delle memorie a due livelli

Localit
La base per i vantaggi nelle prestazioni di una memoria a due livelli c il principio noto co
me localit dei riferimenti [DENN68]. Tale principio afferma che i riferimenti in memo
ria tendono a raggrupparsi in cluster. A lungo andare, i cluster cambiano, ma in brevi pe
riodi il processore lavora principalmente con raggruppamenti fissi di riferimenti alla
memoria.
Questo principio si dimostra valido per i seguenti motivi.
1. Eccezion fatta per le istruzioni di salto c di chiamata di procedura, chc costituisco
no una piccola frazione di tutte le istruzioni di un programma, 1esecuzione di un pro
gramma sequenziale. Dunque, nella maggior parte dei casi, la successiva istruzione
da prelevare segue immediatamente quella appena prelevata.
2. raro avere una lunga sequenza ininterrotta di chiamate di procedura seguita dalla
corrispondente sequenza di ritorni. Piuttosto, la profondit di invocazione delle pro
cedure dei programmi rimane confinata in una finestra abbastanza stretta. Cos, per
brevi periodi di tempo, i riferimenti alle istruzioni tendono a essere localizzati in po
che procedure.
3. La m aggior parte di costrutti iterativi consiste di un num ero relativam ente piccolo
di istruzioni ripetute m olte volte. Per tLLtta literazione, lelaborazione dunque ri
stretta a una piccola porzione contigua di codice.

4. In molti programmi, gran parte dei calcoli richiesti relativa a strutture dati, come
array o sequenze di record. In molti casi, i riferimenti successivi a tali strutture dati
avverranno su dati contigui.
Questanalisi c stata confermata da molti studi. Con riferimento al punto 1, numerose ri
cerche hanno analizzato il comportamento dei linguaggi ad alto livello e la Tabella 4.8 ne
mostra i risultati chiave, misurando la frequenza di vari tipi di istruzione. Il primo studio
sul comportamento dei linguaggi di programmazione, eseguito da [KNUT71], esamina
va una serie di programmi FORTRAN utilizzati come esercizi per gli studenti. Tanenbaum
[TANE78] pubblic le misure raccolte su pi di 300 procedure utilizzate in programmi
di sistema e scritte in un linguaggio chc supporta la programmazione strutturata (SAL).
Patterson c Scquein [PATT82a] analizzarono un insieme di misurazioni prese dai compiT ab ella 4 .8

F re q u e n z a d in a m ic a relativ a d e lle o p e ra z ioni di un lin g u ag g io a d a lto livello.


[PATT82J
Pascal
C
Sistema
Sistema

[TANE78]
SAL
Sistema

[HUCK831
Pascal
Scientifico

[K N U T71]
FORTRAN
Studeute

Assegnamento

74

67

45

38

Loop

4
12

Studio
Linguaggio
C arico d i lavoro

42

15

12

IF

20

11

29

43

36

GOTO

Altro

Chiamata

157

158

Sistema di elaborazione Capitolo 4 - Memoria cache

N um ero di chiam ate o rito rn i


11
1
1
1
1
1n i 11
1
1
1
1
1
1
1
1
11
1
1
1
1
1M j lL u

ni i

i i

Ini i i

ii i i

Iui i

i i

m
Im
m
i i i Ii

ii i i i

ni Ini i

i i i h

im
i.nm
i

R ito rn o

C h ia m a ta

Livello di aimidamento

Figura 4.21

Esempio Chiamata-Ritorno di un programma.

latori e dai programmi di composizione tipografica, progettazione assistita dal calcolato


re (CAD) e ordinamento di file.
Sono stati inoltre presi in esame i linguaggi C e Pascal. Huck [HUCK83] ha analiz
zato quattro programmi volti a rappresentare una combinazione di calcoli scientifici, tra
cui trasformata rapida di Fourier c sistemi di equazioni differenziali. I risultati concorda
no nel dire che le istruzioni di salto e di chiamata rappresentano solo una frazione delle
istruzioni eseguite durante il tempo di vita di un programma. Dunque, questi studi con
fermano lasserzione del punto 1.
La seconda affermazione confermata dagli studi riportati in [PATT85a]. La Figura
4.21 illustra il comportamento di chiamata e ritorno da procedura. Ogni chiamata rap
presentata dalla linea che si muove in basso a destra, e ogni ritorno dalla linea che si muo
ve in alto a destra. Nella figura viene definita una finestra di profondit 5. Solo una sequenza
di chiamate e ritorni con un movimento netto di 6 in ciascuna direzione causa lo sposta
mento della finestra. Come si pu vedere, il programma in esecuzione pu rimanere al
linterno di una finestra stazionaria per lunghi periodi di tempo. Uno studio degli stessi ana
listi su programmi C c Pascal ha mostrato chc una finestra di profondit 8 avrebbe richiesto
una traslazione in meno dclll per cento delle chiamate o ritorni [TAMI83].
In letteratura, viene operata una distinzione tra localit spaziale c localit tempora
le. La localit spaziale si riferisce alla tendenza dcllesecuzione di coinvolgere locazioni di
memoria ravvicinate. Questo riflette la tendenza da parte di un processore ad accedere al
le istruzioni in modo sequenziale. La locazione spaziale riflette anche la tendenza di un pro
gramma ad accedere ai dati in modo sequenziale, comc quando si elabora una tabella.
La localit temporale si riferisce alla tendenza da parte del processore ad accedere alle lo
cazioni di memoria che sono state usate recentemente. Ad esempio, quando viene esegui
to un ciclo iterativo, il processore esegue ripetitivamente lo stesso insieme di istruzioni.
Tradizionalmente, la localit temporale viene sfruttata mantenendo le istruzioni e i
dati usati di recente nella memoria cache e sfruttando una gerarchia di cache. La localit
spaziale viene generalmente sfruttata utilizzando blocchi di cache pi grandi c incorpo
rando meccanismi di prelievo anticipato nella logica di controllo della cache.

Appendice 4A Caratteristiche delle prestazioni delle memorie a due livelli

Recentemente, sono state effettuate ricerche degne di nota per affinare tali tecniche e ot
tenere migliori prestazioni, ma le strategie di base rimangono le stesse.

Operazioni della memoria a due livelli


La propriet di localit pu essere sfruttata nella costituzione di una memoria a due livel
li. La memoria di livello superiore (MI) c pi piccola, pi veloce e pi costosa rispetto a
quella di livello inferiore (M2). M l viene utilizzata come deposito temporaneo per una par
te dei contenuti di M2, chc c pi grande. Quando avviene un riferimento alla memoria, si
tenta di accedere all elemento in ML Se questo avviene, allora si ha un accesso rapido.
Altrimenti, mi blocco di locazioni di memoria viene copiato da M2 a M l e quindi laccesso
ha luogo tramite MI. In nome della localit, una volta che il blocco c trasferito in M I, ci
si aspetta un certo numero di rapidi accessi alle locazioni di tale blocco.
Per esprimere il tempo medio daccesso a un elemento, dobbiamo considerare non so
lo le velocit dei due livelli di memoria, ma anche la probabilit chc un certo riferimento
possa essere trovato allinterno di MI. Abbiamo
Ts = H x T 1+ (1 - )

(T x + T2) = T 1+ (1 - )

T2

(4.2)

dove
= tempo dacccsso medio (di sistema)
T1= tempo di accesso di M l (ad esempio, cache, cache del disco, ctc.)
T2= tempo di accesso di M2 (ad esempio, memoria centrale, disco, etc.)
H= percentuale di successi (in M I)
La Figura 4.2 mostra il tempo dacccsso medio in funzione della percentuale di successi.
Come si pu vedere, per unalta percentuale di successi, il tempo daccesso medio totale e
molto pi vicino a quello di M l che a quello di M2.

Prestazioni
Esaminiamo, ora, alcuni parametri rilevanti per la valutazione di un sistema di memoria a
due livelli. Per prima cosa, consideriamo i costi. Abbiamo
(4.3)
dove
Cs = costo medio per bit della memoria combinata a due livelli
C, = costo medio per bit della memoria di livello superiore M l
C1 = costo medio per bit della memoria di livello inferiore M2
S1 = dimensione di Ml

.V2 = dimensione di M2
Vorremmo che Cs - C1. Dato chc C1 >> C2, questo richiede Sx << S2. La Figiura 4.22 mo
stra tale relazione.

159

Sistema di elaborazione Capitolo 4 - Memoria cache

Figura 4.22

Relazione tra costo medio della memoria e dimensione relativa della memoria
per una cache a due livelli.

Consideriamo, ora, il tempo daccesso. In una memoria a due livelli, per fornire un mi
glioramento significativo nelle prestazioni abbiamo bisogno che Ts sia circa uguale a T1
{Ts ~ T {). Dato che T1 molto minore di T1 (T { T2), necessaria una percentuale di
successi prossima a 1.
Dunque, ci piacerebbe chc M 1 fosse piccola per mantenere bassi costi, ma grande per
migliorare la percentuale di successi e di conseguenza le prestazioni. Esiste una dimensio
ne di M l chc soddisfi entrambi i requisiti in misura ragionevole? Possiamo rispondere a
questa domanda tramite una serie di sotto-domande.
Quale valore di percentuale di successi richiesto affinch T^ T1 ?
Qiiale dimensione di M 1 assicurer la percentuale di successi richiesta?
Tale dimensione soddisfa i requisiti di costo?
Per arrivare a questo, si consideri la quantit T iZTs, che viene detta efficienza di accesso. Si
tratta di una misura di quanto sia prossimo il tempo daccesso medio (T v) al tempo dac
ccsso di M l (T 1). DallEquazione (4.2) abbiamo

Appendice 4A Caratteristiche delle prestazioni delle memorie a due livelli

Frazione di successi = H
Figura 4.23

Efficienza d'accesso in funzione della frazione di successi (r= 2/ ).

Nella Figura 4.23 tracciato T J T s in funzione della percentuale di successi H, usando il


rapporto T J T xcome parametro. Generalmente, il tempo di accesso alla cache on-chip c
circa da 25 a 50 volte pi rapido di quello alla memoria centrale (ad esempio, T J T1va da
25 a 50), il tempo di accesso alla cache ofF-chip circa da 5 a 15 volte pi rapido di quel
lo alla memoria centrale (ad esempio, T J T1Wa da 5 a 15) c il tempo daccesso alla memo
ria centrale circa 1000 volte minore del tempo daccesso al disco ( T J Tx= 1000). Dunque,
una percentuale di successi di circa 0,9 sembrerebbe necessaria per soddisfare i requisiti sul
le prestazioni.
Possiamo ora formulare la domanda sulla dimensione relativa della memoria in mo
do pi esatto. Una percentuale di successi di almeno 0,8 ragionevole perch S1sia molto
minore di 2? Qiicsto dipende da molti fattori, inclusa la natura del software in esecuzione
e i dettagli della progettazione della memoria a due livelli. Laspetto pi determinante , ov
viamente, il grado di localit. La Figura 4.24 suggerisce leffetto chc la localit ha sulla per
centuale di successi. Chiaramente, se la dimensione di M l la stessa di M2, allora la per
centuale di successi sar di 1: tutti gli elementi in M2 vengono anche memorizzati in MI.
Si supponga ora chc non ci sia localit; in altre parole, i riferimenti sono completa
mente casuali. In questo caso la percentuale di successi dovrebbe essere ima finizione lineare
della dimensione relativa della memoria. Per esempio, se M l c grande la met di M2, al
lora in ogni istante met degli elementi di M2 si trovano anche in M 1 e la percentuale di
successi sar 0,5. In pratica per, ce sempre un ccrto grado di localit. Gli effetti di una lo
calit moderata c di una forte sono indicati nella figura.

162

Sistema di elaborazione Capitolo 4 - Memoria cache

D im ensione relativ a della m e m o ria (S 1/S 2 )

Figura 4.24

Frazione di successi in funzione della dimensione relativa della memoria.

Cos, se ce localit forte, possibile raggiungere alti valori nella percentuale di suc
cessi anche con una dimensione relativamente piccola della memoria di livello superiore.
Ad esempio, numerosi studi ([AGAR89], [PRZY88], [STRE83] e [SMIT82]) hanno mo
strato che cache piuttosto piccole possono raggiungere una percentuale di successi di cir
ca il 75 per cento, indipendentemente dalla dimensione della memoria centrale. Una ca
che che va da IK a 128K parole generalmente adeguata, mentre la memoria centrale ora
tipicamente dellordine dei multipli dei megabyte. Quando consideriamo la memoria vir
tuale e la cache del disco, citiamo altri studi che confermano lo stesso fenomeno, ossia che
una M l relativamente piccola raggiunge un alto valore nella percentuale di successi gra
zie alla localit.
Questo ci porta allultima domanda elencata in precedenza: la dimensione relativa
delle due memorie soddisfa i requisiti di costo? La risposta chiaramente affermativa. Se
occorre solo una memoria di livello supcriore relativamente piccola per ottenere buone pre
stazioni, allora il costo medio per bit dei due livelli di memoria si avviciner a quello del
la pi economica memoria di livello inferiore.
Si noti che lanalisi con il coinvolgimento della cache L2, o addirittura delle cachc L2
c L3, molto pi complessa. Si vedano [PEIR99] e [HAND98] per una trattazione ap
profondita dcllargomento.

Capitolo 5

Memoria interna

Punti chiave

Lc due memorie a semiconduttore e ad accesso casuale sono la RAM dinamica


(DRAxM) e la RAM statica (SRAM). La SRAJVl pi veloce, pi costosa e meno
densa della DRAM, c viene usata per le memorie cache. La DRAM viene utiliz1 memoria centrale.
1
zata per la

Lc tecniche di correzione dcrrorc sono comunemente impiegate nei sistemi di


memorizzazione e implicano Taggiimta di bit ridondanti che sono funzione dei bit
dati. Sc si verifica un errore su un bit, possibile rilevarlo e, solitamente, correg
gerlo.

Per compensare la velocit relativamente lenta della DRAM, sono state intro
dotte alcune particolari organizzazioni di DRAM. Le pi comuni sono la DRAM
sincrona e la DRAxM RamBus. Entrambe implicano Tuso del clock di sistema per
il trasferimento di blocchi di dati.

164

Sistema di elaborazione Capitolo 5 - Memoria interna

uesto capitolo inizia fornendo una panoramica generale sui sottosistemi di memo
ria centrale a semiconduttore, comprendenti memorie ROM, DRAM e SRAM.
V engono quindi prese in considerazione le tecniche di controllo degli errori utilizzate per
migliorare laffidabilit della memoria. Infine, saranno trattate le pi avanzate architettu
re DRAM.

5.1

Memoria centrale a semiconduttore

Nei primi calcolatori la forma pi comune di memorizzazione ad accesso casuale per la me


moria centrale adottava una schiera di anelli di materiale ferromagnetico, detti nuclei
(core). Lavvento della microelettronica ha per reso obsoleta questa tecnologia.
Oggigiorno, lutilizzo di chip a semiconduttore nella memoria centrale praticamente uni
versale. Gli aspetti chiave di questa tecnologia vengono esplorati in questo capitolo.

Organizzazione
Lelemento di base di una memoria a semiconduttore la cella di memoria. Sebbene ven
ga utilizzata una grande variet di tecnologie elettroniche, tutte le celle di memoria a se
miconduttore condividono alcune specifiche propriet.
Presentano due stati stabili (o scmistabili), che rappresentano il bit (0/1).
possibile scrivere nella cella (almeno una volta), per impostare lo stato (0/1).
possibile leggere lo stato della cella.
La Figura 5.1 mostra le operazioni di una cella di memoria. Nel caso pi comune, la cella
presenta tre porte. La porta di selezione, come suggerisce il nome, seleziona una cella di me
moria per unoperazione di lettura o scrittura. La porta di controllo indica la lettura o la
scrittura. Per la scrittura, laltra porta fornisce un segnale elettrico chc imposta lo stato del
la cella. Per la lettura, la porta costituisce loutput dello stato della cella. I dettagli dellor
ganizzazione interna, del funzionamento e della temporizzazione delle celle di memoria di
pendono dalla specifica tecnologia dintegrazione usata ed esulano dagli scopi di questo
Controllo

(a) S crittura
Figura 5.1

Operazioni della cella di memoria.

Controllo

(b) L ettura

5.1 Memoria centrale a semiconduttore

T ab ella 5.1

Tipi di memoria a semiconduttore.

T ip o d i m em oria

Random-access
memory (RAlvi)

Categoria

Cancellazione

M em oria di
lettura-scrittura

Elettrica, a livello
di byte

Read-only memory
(ROM )
Programmable RO M
(PROM )

Flash memory

Elettrico

V olatilit

Volatile

Maschere
M emoria di sola
lettura

Impossibile

Raggi
ultravioletti, a
livello di chip

Erasable PIlO M
(RPROM)
Electrically Erasable
PROM (EEPROM)

M eccanism o
d i scrittura

M em oria
principalm ente di
lettura

N on volatile
Elettrico

Elettrica, a livello
di byte
Elettrica, a livello
di blocco

testo, se non per un breve riassunto. Ai nostri scopi, daremo per scontato che le celle in
dividuali possano essere selezionate per le operazioni di lettura e scrittura.

DRAM e SRAM
Tutti i tipi di memoria che descriveremo in questo capitolo sono ad accesso casuale, cio,
si accede direttamente a ogni parola di memoria tramite un circuito dedicato.
La Tabella 5.1 elenca i principali tipi di memoria a semiconduttore. Il pi comune
la memoria ad accesso casuale, RAM (random-access memory). Si tratta, ovviamente, di un
errato utilizzo del termine, dato che tutti i tipi elencati nella tabella sono ad accesso casuale.
Una caratteristica distintiva della RAM consiste nella possibilit di leggere c scrivere dati
da e in memoria, in modo semplice e rapido. Lettura e scrittura sono ottenute tramite se
gnali elettrici.
Laltra caratteristica distintiva della RAM risiede nella volatilit. La RAJvl deve ave
re alimentazione costante, altrimenti i dati vanno persi. Dunque, la RAM pu essere uti
lizzata soltanto per una memorizzazione temporanea. Lc due forme tradizionali di RAM
dei calcolatori sono la DRAM e la SRAM.

RAM dinamica
La tecnologia RAM si divide in due: dinamica e statica. Una RAM dinamica (DRAM)
composta da celle chc memorizzano i dati in forma di cariche su condensatori. La presenza
o assenza di carica sui condensatori viene interpretata come bit 1 o bit 0. Poich i con
densatori tendono naturalmente a scaricarsi, le RAM dinamiche richiedono periodica-

165

166

Sistema di elaborazione Capitolo 5 - Memoria interna

Tensione (corrente continua)

L inea degli indirizzi

TVansistor

C ondensatore di
m em orizzazione

Linea
di bit B

T erra

(a) Cella di RAM dinamica (DRAM)

Figura 5.2

(b) Cella di RAM statica (SRAM)

Strutture tipiche di una cella di memoria.

mence il refresh, cio il rinnovamento della carica per mantenere la memorizzazione dei da
ti. Il termine dinamica si riferisce alla tendenza della carica immagazzinata a disperdersi,
anche in presenza di alimentazione.
La Figura 5.2a rappresenta la tipica struttura di una cella DRAM che memorizza un
bit. La linea dindirizzo viene attivata quando si deve leggere o scrivere il bit della cella. Il
transistor si comporta da corto circuito (non si oppone al flusso di corrente) quando c
tensione sulla linea dindirizzo e da circuito aperto (impedisce il flusso di corrente) quan
do non c tensione sulla linea dindirizzo.
Per la scrittura, si applica tensione alla linea di bit: un valore alto di tensione rappre
senta il bit 1, un valore basso rappresenta il bit 0. Qiiindi si applica un segnale alla linea din
dirizzo, che carica il condensatore.
Per la lettura, quando la linea di indirizzo selezionata, il transistor si accende c la ca
rica immagazzinata nel condensatore percorre una linea di bit collcgata a un amplificato
re chc confronta la tensione con un valore di riferimento e determina se la cella contiene
un 1 o uno 0. Poich la lettura dalla cella scarica il condensatore, per completare lopera
zione si deve ripristinare la carica.
Sebbene le celle siano impiegate per memorizzare bit, si tratta essenzialmente di di
spositivi analogici. Entro certi limiti, un condensatore pu assumere carica arbitraria:
soltanto il valore di soglia che determina se la carica debba essere interpretata come 0 o
come 1.

5.1 Memoria centrale a semiconduttore

RAM statica

Al contrario, una RAM statica (SRAM) un dispositivo digitale che utilizza gli stessi ele
menti di base del processore. In una SRAM, i valori binari sono memorizzati mediante por
te logiche. Le RAM statiche mantengono i propri dati finch sono alimentate.
La Figura 5.2b rappresenta la tipica struttura di una cella SRAM. Quattro transistor
(T r T 21T y T 4) sono connessi in modo da costituire uno stato logico stabile. Nello stato
logico 1, il punto C 1 alto e il punto C9e basso; in questo stato, T 1e T 4 sono spenti, men
tre T-, e T 3 sono accesi. Nello stato logico 0, il punto C 1 basso e il punto C7 alto; in que
sto stato, T 1e T 4 sono accesi, mentre T 7 e T^ sono spenti. Entrambi gli stati sono stabili
finche la cella alimentata (con corrente continua). A differenza delle DRAM, per man
tenere i dati non richiesto il refresh.
Come nella DRAM, la linea di indirizzo viene usata per aprire o chiudere un inter
ruttore. La linea di indirizzo controlla due transistor (T. e T 6). Qiiando a questa linea vie
ne applicato un segnale, i due transistor vengono accesi, consentendo la lettura o la scrit
tura. Per unoperazionedi scrittura, si applica il valore desiderato del bit alla linea B, e il
valore negato alla linea B. Questo forza i quattro transistor (T p T 2, T 3, T 4) allo stato cor
retto. In lettura, il valore viene letto dalla linea B.
SRAM e DRAM: un confronto

Sia le RAM statiche sia quelle dinamiche sono volatili, nel senso che per conservare i va
lori dei bit e necessaria unalimentazione continua. Una cella di memoria dinamica pi
semplice e pi piccola di una cella di memoria statica. Dunque, le DRAM sono pi den
se (celle pi piccole = pi celle per unit di superficie) e meno costose (a parit di capacit).
D altro canto, le DRAM richiedono circuiti aggiuntivi per il refresh periodico. Per me
morie grandi, il costo di questi circuiti e pi che compensato dal costo inferiore della sin
gola cella. Dunque, le DRAM tendono a essere favorite per memorie di grandi capacit.
In sostanza le SRAM sono pi veloci delle DRAM. Grazie a queste caratteristiche relati
ve, le SRAIvI sono usate per le memorie cache (sia on-chip sia off-chip), e le DRAM per la
memoria centrale.

Tipi di ROM
Come suggerisce il nome, una memoria a sola lettura ROM (read-only memory) contie
ne uno schema di dati permanente che non pu essere cambiato. Le ROM non sono vo
latili, ossia, mantengono i valori dei loro bit anche in assenza di alimentazione. Mentre
possibile leggere una ROM, non possibile scrivervi nuovi dati. Unimportante applica
zione delle ROM la microprogrammazione, chc sar discussa nella Parte 4. Tra le altre
applicazioni potenziali, ricordiamo:
subroutine di libreria per funzioni frequentemente richieste
programmi di sistema
funzioni tabulate.
Il vantaggio delle ROM che i dati o i programmi di piccola dimensione sono direttamente
disponibili e non devono essere caricati da un dispositivo esterno.

167

168

Sistema di elaborazione Capitolo 5 - Memoria interna

Una ROM c costruita come ogni altro chip integrato, ma i dati sono impostati nel
chip durante il processo di fabbricazione. Ci presenta due problemi.
Il passo di inserimento dei dati include un costo fisso relativamente grande, indi
pendentemente dal numero di esemplari.
Non c spazio per errori. Se un bit sbagliato, lintero lotto di ROM deve essere
scartato.
QtLando richiesto Lin piccolo numero di ROM con un particolare contenuto, unalter
nativa meno costosa la ROM programmabile, PROM. Come la ROM, queste memo
rie non sono volatili e vi si pu scrvere solo una volta. Per la PROM, il processo di scrit
tura di natura elettrica e pu essere effettuato dal fornitore o dallacquirente, se in possesso
di unapparecchiatura speciale per il processo di scrittura chc, in questo caso detto di
programmazione. Le PROM forniscono flessibilit e convenienza. La ROM rimane al
lcttante per grossi volumi di produzione.
Un altra variante di queste memorie di sola lettura detta memoria principalmente
di lettura (read-mostly memory), che utile quando le operazioni di lettura sono molto pi
frequenti delle operazioni di scrittura ed richiesta una memorizzazione non volatile.
Esistono tre memorie di questo tipo: le EPROM, le EEPROM e le memorie flash.
Le memorie di sola lettura cancellabili e programmabili otticamente, EPROM
{erasable programmable read-only memory), sono lette e scritte elettricamente, come le
PROM. Comunque, prima di una scrittura, tutte le celle di una EPROM devono essere
cancellate e portate allo stesso stato iniziale tramite lesposizione a radiazioni ultraviolet
te del chip confezionato. La cancellazione viene eseguita facendo brillare una intensa luce
ultravioletta attraverso una finestra nel chip. Il processo di cancellazione pu essere ripe
tuto pi volte e pu richiedere fino a 20 minuti. Anchc le EPROM mantengono i dati per
un tempo indefinito. A parit di capacit la EPROM pi costosa della PROM, ma pre
senta il vantaggio di poter essere aggiornata.
Una pi interessante memoria principalmente di lettura la memoria di sola lettura
cancellabile e programmabile elettricam ente, EEPROM (electrically erasable pro
grammable read-only memory). Si tratta di una memoria in cui si pu scrivere in qualsiasi
momento senza cancellarne i contenuti, aggiornando solo i byte indirizzati. La scrittura ri
chiede molto pi tempo della lettura (parecchie centinaia di microsecondi per byte). La
EEPROM combina il vantaggio della non volatilit con la possibilit di aggiornamento lo
cale, utilizzando le linee ordinarie di controllo, di indirizzo c di dati del bus. La EEPROM
pi costosa di una EPROM ed anche meno densa (meno bit per chip).
Unaltra forma di memoria a semiconduttore la memoria flash, cos chiamata per
la velocit con la quale pu essere riprogrammata. Introdotta per la prima volta nella met
degli anni Ottanta, la memoria flash intermedia tra EPROM e EEPROM per costi e per
funzionalit. Come la EPROM, la memoria flash adotta una tecnologia di cancellazione
elettrica. Unintera memoria flash pu essere cancellata in pochi secondi, ossia molto pi
velocemente di una EPROM, ma possibile cancellare solo alcuni blocchi di memoria
piuttosto chc lintero chip. La memoria flash deve il proprio nome allorganizzazione del
microchip: una sezione di cclle di memoria pu essere cancellata in una singola azione o
flash. Le memorie flash, per, non consentono la cancellazione a livello di byte. Come la
EPROM, utilizzano solo un transistor per bit, e cos raggiungono una densit paragona
bile a quella delle EPROM.

5.1 Memoriacentraleasemiconduttorc

169

Logica del chip


Come per altri circuiti integrati, le memorie a semiconduttore sono commercializzate in
chip confezionati (Figura 2.7) chc contengono una matrice di celle di memoria.
Nella gerarchia di memoria vista nel suo insieme, sappiamo chc sono richiesti com
promessi tra velocit, capacit e costi. Tali compromessi esistono anche quando conside
riamo lorganizzazione delle celle di memoria e la logica funzionale su un chip. Per le me
morie a semiconduttore, uno dei problemi salienti di progettazione c il numero di bit chc
possono essere letti/scritti simultaneamente. A un estremo troviamo unorganizzazione
nella quale la disposizione fisica delle celle nella matrice la stessa della disposizione logi
ca (come percepito dal processore) delle parole in memoria. La matrice organizzata con
W parole di B bit ciascuna. Per esempio, un chip da 16 Mbit potrebbe esser organizzato
con IM parole da 16 bit. Allaltro estremo si trova la cosiddetta organizzazione onc-bitpcr-chip, nella quale i dati vengono letti/scritti un bit per volta.
La Figura 5.3 mostra la tipica organizzazione di una DRAM da 16 Mbit in cui vengo
no letti o scritti 4 bit per volta. Logicamente, la matrice di memoria c organizzata come quat
tro matrici quadrate di 2048 per 2048 elementi. Sono possibili varie disposizioni fisiche. In
ogni caso, gli clementi della matrice sono connessi per linee orizzontali (righe) e verticali (co
lonne). Ogni linea orizzontale si collega al terminale Select delle celle nella propria riga; ogni
linea verticale si collega al terminale Data-In/Sense delle celle nella propria colonna.
Il
numero di linee chc forniscono lindirizzo della parola da selezionare c Iog2 W. Nel
nostro esempio, ci sono 11 lince di indirizzo chc selezionano una delle 2048 righe. Queste

RAS CAS

Figura 5.3

Tipica DRAM da 16 Mbit (4M x 4).

WE

OE

170

Sistema di elaborazione Capitolo 5 - Memoria interna

11 linee entrano in un decodificatore di riga che ha 2048 lince in uscita. In funzione dei bit
in ingresso (211= 2048). Il decodificatore attiva uno solo dei 2048 output.
Altre undici linee di indirizzo selezionano una delle 2048 colonne da 4 bit per co
lonna. Qiiattro linee dati vengono utilizzate per lingresso di quattro bit nel buffer dati o
per la loro uscita dal buffer. In ingresso (scrittura), il bit driver di ogni linea di bit viene im
postato secondo il valore della corrispondente linea dati. In uscita (lettura), il valore di ogni
linea di bit amplificato e poi inoltrato sulle lince dati. La linea di riga seleziona la riga di
celle da usare per la lettura o la scrittura.
Poich in questa DRAM vengono letti/scritti solo 4 bit per volta, per leggere/scrivere unintera parola di dati il controllore della memoria deve essere collegato a pi DRAM.
Si noti che ci sono solo 11 linee di indirizzo (AO-Al 0), la met del numero che ci si
aspetterebbe per una matrice 2048 X 2048. Questo consente di risparmiare sid numero dei
contatti. Le 22 linee di indirizzo necessarie sono multiplexate allesterno del chip. Le 11 li
nce di indirizzo definiscono alternativamente una riga e una colonna della matrice. Questi
segnali sono accompagnati dai segnali di selezione riga (RAS) (row address select) e di se
lezione colonna (CAS) (column address select).
I
contatti WE e OE (write e output enable) indicano se devessere eseguita una scrit
tura o una lettura. Due altri contatti, non mostrati nella Figura 5.3, rappresentano la mes
sa a terra e il generatore di tensione.
Come digressione, !indirizzamento multiplexato c luso di matrici quadrate hanno
come risultato il quadruplicamcnto delle dimensioni della memoria a ogni nuova genera
zione di chip. Un contatto aggiuntivo dedicato allindirizzamento raddoppia il numero di
righe e colonne, e cos la dimensione del chip pu crescere di un fattore 4.
La Figura 5.3 indica anche i circuiti di refresh, che sono necessari in tutte le DRAM.
Una semplice tecnica per il refresh prevede di disabilitare il chip della DRAM durante il
ripristino delle sue celle. Un contatore di refresh genera uno dopo laltro tutti i valori di ri
ga. Per ciascuna riga, le linee di output passano al decodificatore di riga che attiva la op
portuna linea RAS. I dati di ogni cella vengono letti e riscritti nella stessa locazione, otte
nendo cos il ripristino dei contenuti delle celle.

Confezionamento del chip


Come detto nel Capitolo 2, i circuiti integrati sono montati su supporti che hanno dei con
tatti per la connessione con lesterno.
La Figura 5.4a mostra una EPROM confezionata, cio un chip da 8 Mbit organiz
zato come IM X 8. In questo caso, lorganizzazione trattata come un pacchetto oncword-per-chip. La EPROM ha 32 contatti (un tipico valore) che supportano le seguenti
lince di segnale.
Lindirizzo della parola cui accedere. Per parole da 1M, ci sono 20 (220 = 1M) con
tatti, da AO ad A l9.
I dati da leggere, che consistono di 8 linee (D0-D7).
Lalimentazione (Vcc).
Un contatto di terra (Vss).
Un contatto chip enable (CE). Poich ci potrebbe essere pi di un chip di memoria,
ciascuno connesso allo stesso bus indirizzi, il contatto CE viene utilizzato per indi-

5.1 Memoria centrale a semiconduttore

4M X 4

24

6 24 c o n tatti 19

*7

0.6

i8
1

17
16

11

V ,

dall'alto 13

(a) E P R O M da 8 M bit
Figura 5.4

(b) D R A M d a 16 M bit

Contatti e segnali di una memoria.

care se lindirizzo sia valido o meno per quel chip. Il contatto CE viene attivato dai
circuiti connessi ai bit pi significativi del bus indirizzi.
Una linea di servizio (Vpp) che fornisce tensione durante la scrittura (programma
zione).
La Figura 5.4b, invece, mostra la tipica configurazione dei contatti del chip di una DRAM
da 16 Mbit organizzato come 4M X 4. Esistono numerose differenze rispetto ai chip del
le ROM. Poich una RAM pu essere aggiornata, i contatti dati servono per lingresso e
per luscita. I contatti write enable, WE, e output enable, OE, indicano se si tratta di scrit
tura o di lettura. Poich si accede alla DRAM per riga e colonna, e lindirizzo e multiplexato, sono sufficienti 11 contatti di indirizzo per specificare le 4M combinazioni ri
ga/colonna (211 X 2" = 222 = 4M). Le funzioni dei contatti row address select (RAS) e
column address select (CAS) sono gi state discusse. Il contatto no connect (NC) ha la sola
funzione di pareggiare il numero dei contatti.

Organizzazione dei moduli


Se un chip RAM contiene solo 1 bit per parola, allora avremo chiaramente bisogno di un
numero di chip almeno uguale al numero di bit per parola. Come esempio, la Figura 5.5
mostra la possibile organizzazione di un modulo di memoria di 256K parole da 8 bit.
I 18 bit dellindirizzo provengono dall esterno, ad esempio da un bus. Lindirizzo rag
giunge 8 chip 256 X 1 bit, ciascuno dei quali fornisce ingresso/uscita per 1 bit.
Questorganizzazione funziona quando la dimensione della memoria corrisponde al
numero di bit per chip. Nei casi di memoria pi grande, necessaria una matrice di chip.

171

172

Sistema di elaborazione Capitolo 5 - Memoria interna

Figura 5.5

Organizzazione di una memoria da 256 Kbyte.

La Figura 5.6 mostra la possibile organizzazione di una memoria contenente IM parole di


8 bit. In questo caso, abbiamo quattro colonne di chip, e ciascuna colonna contiene 256K
parole disposte come nella Figura 5.5. Per IM parole, sono necessarie 20 linee di indiriz
zo. I 18 bit meno significativi vengono presentati a tutti i 32 moduli. I 2 bit pi significa
tivi costituiscono lingresso a un circuito di selezione di gruppo che invia un segnale chip
enable a una delle quattro colonne di moduli.

In terlea v e d M em o ry S im u la to r

vx

5.2 Correzionedeglierrori

MAR

<N
AS
Selezione
di 1 tra 4 gruppi

1/512|

BB
S

!1/5121

B itS

Figura 5.6

Organizzazione di una memoria da 1 Mbyte.

Memoria interleaved
La memoria principale composta da un insieme di chip di memoria DRAM. I chip pos
sono essere raggruppati per formare un banco di memoria. possibile organizzare i banchi
di memoria in un modo conosciuto come memoria interleaved (interlacciata). Ogni ban
co e in grado, in maniera indipendente, di servire richieste di lettura o scrittura. In tal mo
do un sistema con ATbanchi di memoria pu servire K richieste simultanee, permettendo
cos di aumentare le prestazioni in lettura e scrittura di un fattore K. Sc le parole conse
cutive di memoria sono immagazzinate in banchi diversi il trasferimento di un blocco di
memoria pu essere velocizzato.

5.2

Correzione degli errori__________________________

Le memorie a semiconduttore sono soggette a errori. Questi possono essere classificati in


guasti hardware (hard failure) ed errori software [soft error). Un guasto hardware un
difetto fisico permanente per cui le celle di memoria interessate non memorizzano i dati
in modo affidabile. Questi gravi errori possono essere causati da condizioni ambientali, di
fetti di fabbricazione o consumo. Un errore software un evento casuale e non distrutti
vo che altera i contenuti di una o pi celle, senza danneggiare fisicamente la memoria. Gli
errori software possono essere causati da problemi di alimentazione o da particelle (X.
Queste particelle derivano dal decadimento radioattivo e sono dolorosamente comuni in
praticamente tutti i materiali. Chiaramente, tutti gli errori sono indesiderati, e la maggior

173

174

Sistema di elaborazione Capitolo 5 - Memoria interna

Segnale di erro re

Figura 5.7

Funzionamento del codice a correzione di errore.

parte delle odierne memorie centrali dispone di circuiti per la rilevazione e correzione de
gli errori.
La Figura 5.7 mostra in modo schematico il processo. Quando i dati devono essere
memorizzati, si esegue un calcolo sui dati per produrre un codice, calcolo rappresentato
tramite la funzione f II codice memorizzato insieme ai dati. Cos, se si devono memo
rizzare M b it di dati c il codice lungo K bit, allora la dimensione effettiva della parola me
morizzata M + K bit.
Quando si deve leggere una parola, il codice viene impiegato per rilevare c, possibil
mente, correggere gli errori. Un nuovo insieme di ATbit di codice generato a partire da
gli M bit di dati e confrontato con i bit di codice prelevati. Il confronto ottiene uno dei
seguenti risultati.
Non vengono rilevati errori. I bit di dati prelevati sono emessi.
Viene rilevato un errore, ed possibile correggerlo. I bit di dati pi i bit per la corre
zione dellerrore sono inviati a un correttore, il quale produce un insieme corretto di
M bit da emettere.
Viene rilevato un errore, ma non c possibile correggerlo. Ci viene segnalato.
I codici che operano in questa maniera sono detti codici a correzione derrore (error-

correcting codes). Un codice caratterizzato dal numero di bit errati presenti in una paro
la che questo riesce a rilevare e correggere.
Il
pi semplice tra i codici a correzione di errore e il codice di Hamming, ideato da
Richard Hamming presso i Bell Laboratories. La Figura 5.8 utilizza i diagrammi di Venn
per illustrare luso di questo codice su parole da 4 bit (M = 4). Tre cerchi che si interseca
no nel piano determinano sette regioni. Assegniamo i 4 bit di dati agli scomparti interni
(Figura 5.8a). I restanti scompart vengono riempici con i cosiddetti bit di parit. Ciascun
bit di parit scelto in modo che il numero totale di 1 nel proprio cerchio sia pari (Figura

5.2 C o rre zio n cd cg lie rro ri

5.8b). Cos, dato chc il cerchio A include tre bit 1, il bit di parit in quel cerchio impo
stato a 1. Ora, se un errore modifica uno dei bit di dati (Figura 5.8c), esso viene facilmen
te rilevato. Controllando i bit di parit, si rilevano le discrepanze nei cerchi A e C ma non
nel cerchio B. Lerrore pu quindi essere corretto cambiando quel bit.
Per chiarire i concetti implicati, sviluppiamo un codice che possa rilevare e correg
gere un bit in parole da 8 bit.
Per iniziare, determiniamo quanto debba essere lungo il codice. Con riferimento al
la Figura 5.7, i circuiti di confronto ricevono in ingresso due stringhe di K bit. Il confron
to bit a bit viene effettuato eseguendo lOR esclusivo dei due ingressi. Il risultato viene chia
mato parola sindrom e. Cos, ogni bit della sindrome vale O o l a seconda che i
corrispondenti bit dei due ingressi siano uguali oppure no.
La sindrome quindi ampia K bit e il suo valore varia tra Oe 2A- I. Il valore O indi
ca chc non c stato rilevato alcun errore e gli altri 2K - 1 valori indicano, in caso di errore,
quale bit sia errato. Ora, poich un errore pu coinvolgere ciascuno degli M bit di dati e
ciascuno dei ATbit di controllo, dobbiamo avere
2A'- 1 M + K
Questa disuguaglianza fornisce il numero di bit richiesti per correggere lerrore di un sin
golo bit in una parola di M bit. Ad esempio, pcryV = 8 abbiamo quanto segue:
Sc AT= 3, allora 23 - 1 < 8 + 3
Sc K = 4, allora 24 - 1 > 8 + 4

175

176

Sistema di elaborazione Capitolo 5 - Memoria interna

Incremento della lunghezza della parola con la correzione degli errori.

Tabella 5.2

C orrezione di errori singoli


____________________________________

C orrezione di errore sin g o lo /


R ilevam ento di errore d o ppio

B it di dati

B it di co n tro llo

% increm ento

B it di controllo

% increm ento

50

16

31,25

5
6

37,5

32

5
6

21,875

18,75
10,94

64

12,5

128

6,25

7,03

256

3,52

10

3,91

62,5

Dunque 8 bit di dati richiedono 4 bit di controllo. Le prime tre colonne della Tabella 5.2
elencano il numero di bit di controllo necessari per varie lunghezze di parola di dati.
Owiaincntc sarebbe utile che la sindrome di 4 bit per una parola di 8 bit avesse le se
guenti propriet.
Se la sindrome contiene tutti 0, non e stato rilevato alcun errore.
Sc la sindrome contiene un unico bit pari a 1, allora si c avuto un errore in uno dei 4
bit di controllo. Non richiesta alcuna correzione.
Sa la sindrome contiene pi di un bit pari a 1, allora il valore numerico della sindro
me indica la posizione del bit dati errato. Per correggerlo, basta complementare il bit.
Per ottenere queste caratteristiche, i bit di dati e di controllo sono disposti in una parola
da 12 bit come mostrato nella Figura 5.9. Le posizioni dei bit sono numerate da 1 a 12. Le
posizioni il cui numero una potenza di 2 sono designate come bit di controllo. I bit di
controllo sono calcolati come segue. Il simbolo 0 indica !operazione di OR esclusivo:
Cl =

Dl 0

C2 =

D I

C4 =

D 20

D 40

D 20

D3 0

D4 0

D3 0

D 4

CS =

D 50

D7
D6 0

D7
D8

D5 0 D 6 0

D 70

D8

Ogni bit di controllo opera sui bit del dato il cui numero di posizione contiene un 1 nel
la stessa posizione del numero di posizione di quel bit di controllo. Cos, le posizioni dei
Posizione
del bit
Numero di
Posizione
Bit dei dati
Bit di controllo
Figura 5.9

12

.0

Il(X)

IOII

1010

1001

D8

D7

D6

D5

8
1000

0111

0110

0101

D4

D3

D2

C8

D isp o sizio n e dei b it dei dati e d i co n tro llo .

4
OI(M)
:

C4

3
(M)II

,
\
0010; 0001

DI
C2

Cl

5.2 C orrezionedeglierrori

bit di dati 3, 5, 7, 9 c 11 (DI, D2, D4, D5 e D7) contengono tutte un 1 nel bit meno si
gnificativo del loro numero di posizione, cos come C l; le posizioni dei bit 3,6,7,10 e 11
contengono tutte un 1 nella seconda posizione di bit, cos come C2; e cos via. Vista in al
tro modo, la posizione di bit n viene controllata dai bit Cj tali che Zi = n. Ad esempio, la
posizione 7 viene controllata dai bit in posizione 4, 2 e 1; infatti 7 = 4 + 2+1.
Verifichiamo, con un esempio, chc lo schema funzioni. Assumiamo che la parola in
ingresso sia OOl 11001, con il bit di dati D l nella posizione pi a destra. I calcoli procedo
no come segue:

= =
C2=10O01010O=1
C4 = 0 0 0 1 0 0 = 1
C8 = 1 0 1 0 0 0 0 = 0
Si supponga ora che il terzo bit subisca un errore c sia cambiato da 0 a I. Qiiando i bit di
controllo vengono ricalcolati, abbiamo:

0 =100010100=1
C2 = 1 0 1 0 1 0 1 0 0 = 0
C4 = 0 0 1 0 1 0 0 = 0
C8 = 1 0 1 0 0 0 0 = 0
Quando i nuovi bit di controllo vengono confrontati con i vecchi, si ottiene la parola sin
drome
C8
0

C4

C2
i

Cl
i

0
1

1
0

Il risultato 0110 indica che il bit in posizione 6, che contiene il bit di dati 3, c errato.
La Figura 5.10 illustra i precedenti calcoli. I bit di dati e di controllo sono posizio
nati correttamente nella parola da 12 bit. Quattro bit dati hanno valore 1 (in grigio nella
tabella), i loro valori di posizione di bit vengono posti in XOR e producono il codice di
Hamming Ol i i , che forma le quattro cifre di controllo. Il blocco memorizzato
001101001111. Si supponga ora che il terzo bit di dati, in posizione 6, subisca un errore e
venga modificato da 0 a I. Il blocco risultante 001101101111. Il codice di Hamming ri
sultante ancora 01 11. LoXORtrail codice di Hammingeivalori di posizione di bit per
bit di dati non nulli d come risultato 0110. Il risultato non nullo rileva un errore e indi
ca che Terrore nella posizione di bit 6.
Il codice appena descritto noto come codice di correzione di singolo errore (SEC,
single-error-correcting). Comunemente, le memorie sono dotate di un codice di correzione
di singolo errore e rilevazione di doppio errore, SEC-DED (double-eror-detectmg). Come
mostra la Tabella 5.2, tali codici richiedono un bit aggiuntivo rispetto ai codici SEC.

177

178

Sistema di elaborazione Capitolo 5 - Memoria interna

Posizione
di bit
Posizione
(binario)
Bit dei dati
Bit di controllo
Parola
memorizzata come
Parola
prelevata coin
Posizione
Bit di controllo

Figura 5.10

12

11

10

1100

1011

1010

1001

1000

O lii

0110

0101

0100

D8

D7

06

D5

D4

D3

D2

>

0010

0011

1
0001 I

Dl
C4

C8

C2

C1 J
1

1100

1011

1010

1000

O lii

0110

0101

0100

0011

0010

0001
1

1001

____

0_

Calcolo dei bit di controllo.

La Figura 5.11 illustra come funzionano questi codici, con una parola di dati da 4 bit. La
sequenza mostra che se avvengono due errori (Figura 5.1 le), la procedura di controllo va
fuori strada (d) e peggiora il problema creando un terzo errore (e). Per risolvere il proble
ma, viene aggiunto un ottavo bit impostato in modo che il numero totale di 1 nel dia
gramma sia pari. Il bit parit extra cattura Terrore (f).
Un codice a correzione derrore migliora laffidabilit della memoria al costo di una
maggiore complessit. Con unorganizzazione onc-bit-per-chip, un codice SEC-DED
generalmente considerato adeguato. Per esempio, le implementazioni IBM 30xx utilizza
no un codice SEC-DED a 8 bit per ogni 64 bit di dati nella memoria centrale. Dunque, la
dimensione della memoria centrale effettivamente circa il 12 per cento pi ampia di
quanto appaia allutente. I calcolatori VAX adottano un SEC-DED a 7 bit per ogni 32 bit
di memoria, con un overhead del 22 per cento. Alcune DRAM odierne adottano 9 bit di
controllo per ogni 128 bit di dati, con un overhead del 7 per cento [SHAR97].
(a)

-- ^ ^

(b)

(C )

V /^ X o V 7
V W

0
&

(d)

( 1

Figura 5.11

( 1 1 ) (\ I
7 \ y lyC i\ y V /
V
Q

(V

/J U 1 i

V / iX o V
T
o j
E

X
A

l i

x\ y

V
W

C odice di H am m ing SEC-DED.

EU

5.3 O rganizzazioncavanzatadeIIeD R AM

5.3

Organizzazione avanzata delle DRAM

Come detto nel Capitolo 2, uno dei colli di bottiglia pi critici nei processori ad alte pre
stazioni linterfaccia verso la memoria centrale interna. T ale interfaccia c il cammino pi
importante nellintero sistema di elaborazione. Il blocco costitutivo fondamentale della
memoria centrale rimane il chip della DRAM, come avvenuto per decenni. Fino a un re
cente passato, non si sono verificati significativi cambiamenti ncllarchitettura DRAM
dai primi anni Settanta. Il chip tradizionale della DRAM c vincolato sia alla propria ar
chitettura interna sia alla sua interfaccia verso il bus di memoria del processore.
Abbiamo visto che un attacco al problema delle prestazioni della memoria centrale
DRAM consistito nellinserire uno o pi livelli di cache SRAM ad alta velocit tra la me
moria centrale e il processore. Ma la SRAM molto pi costosa della DRAM, ed espan
dere la dimensione della cache oltre un certo punto produce risultati inferiori.
Rcccntemcnte sono stati tentati alcuni miglioramenti dclTarchitettura DRAM di ba
se, e alcuni di questi sono oggigiorno disponibili. I due schemi attualmente dominanti so
no SDRAM, DDR-DRAM e RDRAM, il cui confronto e illustrato nella Tabella 5.3. Lo
schema CDRAVl ha anchesso ricevuto una certa attenzione. In questo paragrafo esami
niamo tali approcci.

DRAM sincrona
Una delle forme pi adottate di DRAM la DRAM sincrona, SDRAM [VOGL94]. A dif
ferenza della DRAM tradizionale, che asincrona, la SDRAM scambia dati con il pro
cessore in sincronia con un segnale di clock esterno, viaggiando alla piena velocit del bus
di memoria senza imporre stati di attesa.
In una tipica DRAM, il processore presenta indirizzi e livelli di controllo alla me
moria, indicando chc un insieme di dati in una certa locazione di memoria dovrebbe es
sere o letto o scritto nella DRAM. Dopo un ritardo, il tempo di accesso, la DRAM legge
o scrive i dati. Durante il ritardo del tempo di accesso, la DRAM esegue varie finizioni in
terne, quali lattivazione dellalta capacit elettrica delle linee di riga e di colonna, la lettu
ra dei dati c Tinstradamento dei dati attraverso i buffer di uscita. Durante questo tempo,
il processore deve semplicemente attendere, rallentando cos le prestazioni del sistema.
Con laccesso sincrono, la DRAM trasferisce i dati sotto il controllo del clock di si
stema. Il processore o un altro gestore emette un comando chc viene recepito dalla DRAM.
La DRAM risponde quindi dopo un predefinito numero di cicli di clock. Nel frattempo,
Tabella 5.3

Confronto tra le prestazioni di alcune versioni di DRAM.___________


F rc q u c n z a d ic lo c k
(M Hz)

V elocit di
trasferim ento
(G B /s)

T e m p o d ia ccesso
(ns)

N u m e ro d ip in

SDRAM

166

1,3

18

168

RDRAM

600

4,8

12

162

179

180

Sistema di elaborazione Capitolo 5 - Memoria interna

- Oi 1J h

umili
ii
II

!I

D -

S 73
cti t, 3
J -

s S u fp
axoiR 3ijipo3oa

3
V
j

;
03

U
U
X

il processore pu compiere in piena sicurezza altri compiti mentre la SDRAM sta elabo
rando la richiesta.
La Figura 5.12 mostra la logica interna della SDRAM da 64 MB di IBM [IBM01],
chc rappresenta una tipica organizzazione di SDRAM, e la Tabella 5.4 definisce il ruolo
dei vari contatti. La SDRAM adotta una modalit burst (letteralmente: raffica) per elimi-

5.3 O rganizzazioneavanzatadeIIeD R AM

Tabella 5.4

Assegnamento dei contatti SDRAM.

D a AO a A 13

Ingressi degli indirizzi

C LK

Ingresso del clock

CKE

Clock enable

CS

C hip select

RAS

Row address strobe

CAS

Colum n address strobe

WE

W rite enable

Da DQO a D Q 7

Ingressi/uscite dati

DQM

D ata mask

narc ccrci ritardi. In questa modalit, una serie di bit di dati pu essere emessa rapidamente
dopo laccesso al primo bit. Questo modo utile quando tutti i bit cui accedere sono in
sequenza c si trovano nella stessa riga della matrice. Inoltre, la SDRAM presenta unar
chitettura interna a banchi multipli che migliora le capacit di parallelismo nel chip.
Il modo registro e la logica di controllo associata costituiscono unaltra caratteristi
ca chiave che distingue le SDRAM dalle tradizionali DRAM. La modalit registro speci
fica la lunghezza della raffica, ossia il numero di unit di dati separate poste sul bus in mo
do sincrono. Il registro consente anche al programmatore di regolare la latenza tra il
ricevimento di una richiesta di lettura e linizio del trasferimento dati.
La SDRAM raggiunge le migliori prestazioni quando trasferisce grandi blocchi di da
ti serialmente, come avviene per applicazioni quali elaborazione di testi, fogli elettronici c
multimedialit.
La Figura 5.13 mostra un esempio di operazioni della SDRAM. In questo caso, la lun
ghezza del burst 4 e la latenza 2. Il comando di lettura del burst viene iniziato con le li
nee CS e CAS basse, mantenendo RAS e WE alti sul fronte di salita del clock. Gli ingres
si di indirizzo determinano !indirizzo della colonna di partenza per il burst; e il modo
registro seleziona il tipo di burst (sequenziale o interlacciato) c la sua lunghezza (1, 2,4, 8
e piena pagina). Il ritardo dalla partenza del comando a quando i dati della prima cella ap
paiono in uscita uguale al valore della latenza CAS impostato nel modo registro.
Esiste ora una versione avanzata di SDRAM, nota come double data rate SDRAM
(DDR-SDRAM), che supera la limitazione once-per-cycle. La DDR-SDRAM pu invia
re i dati al processore due volte in ogni ciclo di clock.

TO

Tl

I
I

T2

T3

T4

T5

T6

T7

TB

C LK
COM M AND

D Q s I----------------l

I
Figura 5.13

Tem porizzazione della lettura SDRAM (lunghezza del burst = 4, latenza CAS = 2).

181

182

Sistema di elaborazione Capitolo 5 - M emoria interna

DRAM Rambus
La RDRAM, sviluppata da Rambus [FARM92, CRIS97], stata adottata da Intel per i suoi
processori Pentium e Itanium ed diventata la principale concorrente alla SDRAM. I
contatti dei chip RDRAM si trovano tutti sullo stesso lato. Il chip scambia dati con il pro
cessore con 28 cavi lunghi non pi di 12 cm. Il bus indirizza fino a 320 chip RDRAM e ha
una velocit di 1,6 GB/s.
Lo speciale bus RDRAM veicola indirizzi e informazioni di controllo adottando un
protocollo asincrono orientato ai blocchi. Dopo un tempo di accesso iniziale di 480 ns, il
bus produce una velocit di trasferimento dati di 1,6 GB/s. Ci che rende possibile tale
velocit e il bus stesso, che definisce le impedenze, la temporizzazione e i segnali in maniera
molto precisa. Piuttosto che essere controllata dai segnali espliciti RAS, CAS, R /W e CE
utilizzati nelle DRAM convenzionali, una RDRAM ottiene una richiesta di memoria sul
bus ad alta velocit. Tale richiesta contiene lindirizzo desiderato, il tipo di operazione e il
numero di byte ncHopcrazionc.
La configurazione di una RDRAM, illustrata nella Figura 5.14, consiste in un con
trollore c alcuni moduli RDRAM collegati tra loro tramite bus. Il controllore si trova a un
estremo della configurazione, c laltro estremo del bus una terminazione parallela delle
linee del bus. Questultimo include 18 linee dati (16 per i dati effettivi, 2 per la parit) che
funzionano al doppio della frequenza del clock: i bit sono inviati sul fronte di salita e sul
fronte di discesa di ogni ciclo di clock. Ne risulta una velocit di 800 Mbps su ogni linea
dati. Sono inoltre presenti 8 linee (RC) separate, utilizzate per i segnali di indirizzo e di con
trollo. C anche un segnale di clock che inizia allestremo lontano dal controllore, si pro
paga fino al controllore e torna indietro. I moduli RDRAM inviano i dati al controllore
in modo sincrono rispetto al clock e il controllore invia i dati alle RDRAM in modo sin
crono con il segnale di clock nella direzione opposta. Altre linee di bus forniscono tensione
di riferimento, terra e alimentazione.

DDR SDRAM
Una limitazione delle memorie SDRAM che possono inviare dati al processore una so
la volta per ciclo di clock. Una nuova versione di SDRAM, indicata con il nome di DDR
SDRAM (doublc-data-rate SDRAM), in grado di inviare dati per due volte a ogni ciclo
di clock, una volta durante il fronte di salita del clock e una durante il fronte di discesa.
Lc DDR SDRAM sono state sviluppate dalla JEDEC Solid State Technology
Association, una divisione della Electronic Industries Alliance. I chip DDR, utilizzati mas
sicciamente nei computer desktop e nei server, sono prodotti da varie industrie.
La Figura 5.15 mostra la temporizzazione per una lettura in memorie D D R II tra
sferimento dei dati c sincronizzato ai fronti di salita e di discesa del segnale di clock e al se
gnale DQS (bidirectional data strobe), fornito dal controllore della memoria durante una
letturae dalla DRAIvI durante una scrittura. Nelle implementazioni tipiche il segnale DQS
ignorato durante la lettura. Una spiegazione dell utilizzo del segnale DQS in fase di scrit
tura va oltre i nostri scopi. Si rimanda il lettore a [JAC008] per maggiori dettagli.
Si sono succedute due generazioni di miglioramenti della tecnologia DDR. La DDR2
ha incrementato la velocit di trasferimento dati aumentando la frequenza di funziona
mento del chip RAM e le dimensioni del buffer di prefetch, passato da 2 a 4 bit per chip.
Il buffer di prefetch una memoria cachc situata sul chip RAM. Il buffer permette alla

5.3 Organizzazione avanzata delle DRAM

RAM di anticipare il posizionamento di alcuni bit che saranno messi nella base dati il pi
rapidamente possibile. La L)I)R3, introdotta nel 2007, aumenta la dimensione del buffer
di prefetch a 8 bit.

183

184

Sistema di elaborazione Capitolo 5 - Memoria interna

i.

ia

Clock

R A S = R ow address select (indirizzo di riga)


C A S = C o lum n address select (indirizzo di colonna)
D Q = D ati (ingresso o uscita)
D Q S = D Q sclcct

Figura 5.15

Temporizzazione di memorie DDR SDRAM.

Teoricamente un modulo DDR pu trasferire dati alla frequenza di clock per frequenze
comprese tra 200 e 600 MHz, un modulo DDR2 per frequenze che vanno dai 400 ai 1066
MHz e un modulo DDR3 per frequenze dagli 800 ai 1600 MHz. Nella pratica, le frequenze
raggiunte sono un po inferiori rispetto alle massime teoriche.

Cache DRAM
La cache DRAAiI, CDRAM, sviluppata da Mitsubishi | HIDA90, ZHANOl] integra una
piccola cache SRAM (16 Kb) in un chip DRAM.
La SRAM sulla CDRAM pu essere utilizzata in due modi. Primo, essa pu essere
usata come una vera cache, con un certo numero di linee a 64 bit. Questa versione effi
cace per accessi casuali alla memoria.

5.4 L e ttu re e sitiw e b co n sig lia ti

La SRAM sulla CDRAM pu anche essere utilizzata come buffer per supportare
Tacccsso seriale di un blocco di dati. Ad esempio, per il refresh di uno schermo bit map
ped, la CDRAM pu prelevare anticipatamente i dati dal buffer DRAM e porli nel buffer
SRAM. I successivi accessi al chip si trasformano in accessi alla SRAM.

5.4

Letture e siti web consigliati__________________

[PRIN97] fornisce una vasta trattazione delle tecnologie di memoria a semiconduttore, in


cluse SRAM, DRAM e memorie flash. [SHAR97] affronta gli stessi temi, con maggiore
enfasi sugli argomenti di collaudo e affidabilit. [PRIN02] si focalizza sulle architetture
avanzate della DRAM e della SRAM. Per unanalisi approfondita della DRAM, si veda
[KEETOl]. [CUPPOl] fornisce un interessante confronto tra le prestazioni di vari sche
mi DRAM. [BEZ03] unintroduzione esauriente alla tecnologia delle memorie flash.
Una buona spiegazione dei codici a correzione derrore c contenuta in [MCEL85].
Per uno studio pi approfondito, trattazioni degne di nota chc occupano un intero libro
sono [ADAM91] c [BLAH83]. [SHAR97] contiene una buona panoramica sui codici uti
lizzati nelle odierne memorie centrali.
ADAM91 J. Admele, Foundations o f Coding, New York, Wiley, 1991.
ASH90 Ash, R Information Theory. New York: Dover, 1990.
BEZ03 Bez, R; et al. Introduction to Flash Memory. Proceedings o f the IEEE,
aprile 2003.
BLAH83 Blahut, R lheoyy and Practice of Error Control Codes. Reading, MA:
Addison-Wesley, 1983.
CUPPOl Cuppu,V., et al. High Performance DRAMS in Workstation
Environments. IEEE Transactions on Computers, novembre 2001.
JA C 008 Jacob, B.; Ng, S. e Wang, D. Meynory Systems: Cache, DRAM, Disk.
Boston: Morgan Kaufmann, 2008.
KEET01 B. Kccth e R. Baker, DRAM Circuit Desigyi: A Tutorial, Piscataway
(NJ), IEEE Press, 2001.
MCEL85 R. McEliece, The Reliability of Computer Memories, Scientific
Amcricayi, gennaio 1985.
PRIN97 B. Prince, Semicoyiductor Memories, New York, Wiley, 1997.
PRIN02 B. Prince, High Performance Memories: New Architecture DRAMs and
SRA AL, Evolution and Function, New York, Wiley, 2002.
SHAR97 A. Sharma, Semiconductor Memories: Techyiology, Testing, ayid
Reliability, New York, IEEE Press, 1997.
SHAR03 Sharma, A. AdvancedStmicoyiductorMemories: Architectures, Designs,
and Applicatioyis. New York: IEEE Press, 2003.

185

186

Sistema di elaborazione Capitolo 5 - Memoria interna

Siti web consigliati:


Thc RAM Guide: buona panoramica della tecnologia RAM con molti link utili
RDRAM: sito utile contenente informazioni sulla RDRAM

5.5

Parole chiave, domande di revisione e


problemi

cache DRAM (CDRAM)


codice a correzione di
errore (ECC)
codice di correzione di
singolo errore e
rilevazione di doppio
errore, SEC-DED
codice di correzione di
singolo errore, SEC
codice di Ham m ing
correzione degli errori
DRAM Rambus (RDRAM)

DRAM sincrona (SDRAM)


errori software
guasti hardware
memoria a
semiconduttore
memoria a sola lettura
(ROM)
memoria flash
memoria non volatile
memoria principalm ente
di lettura
memoria volatile

RAM dinam ica (DRAM)


RAM statica (SRAM)
ROM cancellabile e
programmabile
elettricamente
(EEPROM)
ROM cancellabile e
programmabile
otticam ente (EPROM)
ROM programmabile
(PROM)
sindrome

Domande di revisione
5.1 Qiiali sono le propriet salienti della memoria a semiconduttore?
5.2 Quali sono le due accezioni della locuzione memoria ad accesso casuale?
5.3 Qual la differenza tra DRAM e SRAM, in termini di applicazione?
5.4 Qiial la differenza tra DRAM e SRAM, in termini di velocit, dimensione e
prezzo?
5.5 Spiegate perch un tipo di RAM considerato analogico e laltro tipo digitale.
5.6 Qiiali sono le applicazioni delle RAM?
5.7 Quali sono le differenze tra EPROM, EEPROM e memoria flash?
5.8 Spiegate la funzione di ogni contatto nella Figura 5.4b.
5.9 Che cos il bit di parit?
5.10 Come si interpreta la sindrome nel codice di Hamming?
5.11 In cosa differisce la SDRAIVI dalla DRAM ordinaria?

5.5 Parole chiave, domande di revisione e problem i

Figura 5.16

Temporizzazione semplificata di una lettura da DRAM.

Problemi
5.1 Indicate le ragioni per cui le RAM sono state tradizionalmente organizzate con un
bit per chip, mentre le ROM sono solitamente organizzate con pi bit per chip.
5.2 Si consideri una RAM dinamica in cui si deve compiere il refresh 64 volte per ms.
Ogni operazione di refresh richiede 150 ns; un ciclo di memoria richiede 250 ns. Che
percentuale del tempo operativo totale della memoria spesa in refresh?
5.3 La Figura 5.16 mostra un diagramma semplificato di temporizzazione di unoperazione di lettura su un bus, per una memoria DRAM. Il tempo di accesso va da a
Ir Vi quindi un tempo di ricarica, da /, a Iy durante il quale il chip DRAM deve
ricaricarsi prima che il processore possa accedervi di nuovo.
a. Assumete che il tempo di accesso sia di 60 ns e che il tempo di ricarica sia di 40
ns. Qiianto dura un ciclo di memoria? Qiial la massima velocit di trasferimento
che la DRAM pu sostenere, assumendo che loutput sia a 1 bit?
b. Qiiale velocit di trasferimento si riesce a ottenere con la costruzione di un si
stema di memoria a 32 bit che utilizza questi chip?
5.4 La Figura 5.6 indica come costruire un modulo in grado di immagazzinare 1 Mbyte
basato su un gruppo di quattro chip da 256 Kbyte ciascuno. Poniamo che questo
modulo sia confezionato come un unico chip da 1 Mbyte, dove la dimensione di pa
rola di 1 byte. Fornite un diagramma ad alto livello che indichi come costruire una
memoria per computer di 8 Mbyte utilizzando otto chip da 1 Mbyte. Assicuratevi
di mostrare nel vostro diagramma le linee indirizzo e il loro scopo.

187

188

Sistema di elaborazione Capitolo 5 - Memoria interna

5.5 Su un tipico sistema basato su Intel 8086 connesso attraverso il bus di sistema a una

memoria DRAM, per unoperazione di lettura, il segnale RAS si attiva sul fronte
di discesa del segnale di Attivazione degli indirizzi (Figura 3.19). Tuttavia, a cau
sa della propagazione e di altri ritardi, RAS diventa attivo solo 50 ns dopo che il
segnale di Attivazione degli indirizzi si abbassa. Assumete che questo succeda in
mezzo alla seconda met dello stato T 1 (un po prima di quanto succeda nella
Figura 3.19). I dati vengono letti dal processore alla fine di T y Per presentarli in
tempo al processore i dati devono per essere forniti dalla memoria 60 ns prima.
Questo intervallo di tempo e dovuto al ritardo di propagazione lungo il cammino
dalla memoria al processore e ai requisiti del processore. Assumete un clock di 10
MHz.
a. Qiianto veloci (in termini di tempo di accesso) sarebbero le DRAM se non do
vesse essere inserito alcuno stato di attesa?
b. Quanti stati di attesa dobbiamo inserire per unoperazione di lettura se il tempo
di accesso alle DRAM di 150 ns?
5.6 La memoria di un particolare microcomputer viene costruita a partire da DRAM

64K X 1. Secondo il data sheet, il vettore delle celle della DRAM organizzato in
256 righe. Ogni riga deve subire almeno un refresh ogni 4 ms. Si supponga di effet
tuare il refresh della memoria in maniera strettamente periodica.
a. Qiial il periodo di tempo tra richieste di refresh consecutive?
b. Qiiale dimensione deve avere il contatore di refresh degli indirizzi?
5.7 La Figura 5.17 mostra una delle prime memorie SRAM, il chip 16 X 4 Signetics

7489, che immagazzina 11 parole da 4 bit.


a. Elencate le modalit operative del chip per ogni possibile posizione del segnale
in input CS mostrata nella Figura 5.17c.
b. Elencate il contenuto delle locazioni di memoria dalla 0 alla 6 dopo limpulso n.
c. Qiial lo stato dei valori di output durante gli impulsi in ingresso da h a m?
5.8 Progettate una memoria di 16 bit della capacit totale di 8192 bit utilizzando chip
SRAM di dimensione 64 X 1 bit. Si fornisca la configurazione della matrice del
chip sulla piastra di memoria mostrando tutti i segnali di ingresso e di uscita richiesti
per assegnare questa memoria allo spazio di indirizzamento pi basso. La proget
tazione dovrebbe consentire accessi sia ai byte sia alle parole da 16 bit.
5.9 Una comune imit di misura dei guasti di componenti elettronici la Failure unIT

(FIT), espressa come la quantit di guasti per un miliardo di ore di utilizzo. Unaltra
ben nota, ma meno utilizzata, misura il tem po medio tra i guasti (MTBF), che
esprime il tempo medio di funzionamento di un particolare componente fino al
guasto successivo. Considerate la memoria da I MB di un microprocessore a 16 bit,
con DRAM 256K X 1. Calcolate il suo MTBF assumendo 2000 FIT per ogni
DRAM.
5.10 Considerando il codice di Hamming mostrato nella Figura 5.10, indicate cosa av

viene quando un bit di controllo anzich un bit di dati e errato.

5.5 Parole chiave, domande di revisione e problemi

-c i
* 2:
O

A3
CS

R/W

Input

M odalit
operativa

03

D2

16X 4

02

-C

SRAM

Dn

S crittura

7489

. .:

13
L ettura

12

7.

O u tp u t

R /W

Signetics

D3

CS

Ii

Dati

H
S crittura in ib ita
M em orizzazion e
- O u tp u t
disabilitato

GND
(a) S ch em a dei contatti

H
H

H = livello alto d i tensione


L = livello basso di tensione
X = non significativo
(b) T abella di v erit

I U

! i- i u j i

k i

R/W
D3

D2

Dl
DO

(c) S equenza degli im pulsi

Figura 5.17

SRAM Signetics 7489.

5.11 Si supponga chc una parola di dati da 8 bit memorizzata sia 11000010. Adottando
lalgoritmo di Hamming, determinate quali bit di controllo verrebbero immagazzi
nati in memoria con la parola di dati. Mostrate la via seguita per ottenere la risposta.
5.12 Per la parola 00111001, i bit di controllo memorizzati sarebbero 0111. Si suppon
ga chc, quando la parola viene letta dalla memoria, i bit di controllo siano calcola
ti per essere 1101. Quale parola di dati letta dalla memoria?

189

190

Sistema di elaborazione Capitolo 5 - Memoria interna

5.13 Qiianti bit di controllo sono necessari se il codice a correzione di errore di Hamming
viene usato per rilevare errori di bit singoli in una parola di dati a 1024 bit?
5.14 Sviluppate un codice SEC! per una parola di dati a 16 bit. Generate il codice per una
parola di dati 0101000000111001. Evidenziate che il codice identificher corretta
mente un errore nel bit di dati 5.

C apitolo 6

Memoria esterna

Punti chiave

I diselli magnetici rimangono il componente pi importance della memoria ester


na. Dischi rimovibili c dischi fissi sono utilizzati dai pi piccoli ai pi grandi si
stemi di calcolo.

Per ottenere migliori prestazioni e maggior disponibilit, molti sistemi di grandi


dimensioni adottano la tecnologia RAID, ovvero una famiglia di tecniche per lu
ti lizzo di pi dischi in parallelo, dotati di ridondanza implicita per compensare i
guasti del disco.

La tecnologia di memorizzazione ottica c diventata via via pi importantc in tut


ti i sistemi di elaborazione. Mentre i C D -R O M sono stati ampiamente usati per
molti anni, ora stanno diventando sempre pi importanti i C D masterizzabili e i
DVD.

192

Sistema di elaborazione Captolo 6 - Memoria esterna

n questo capitolo sono esaminati sistemi di memorizzazione esterna, a iniziare dal di


spositivo pi importante: i dischi magnetici, fondamento della memoria esterna vir
tualmente su tutti i sistemi di elaborazione. Verr quindi mostrato come luso di batterie
di dischi assicuri migliori prestazioni, prendendo in particolare considerazione i sistemi no
ti come RAID (redundant array o f independent disk). Componente sempre pi importan
te di molti sistemi di elaborazione e la memoria ottica esterna, trattata nel terzo para
grafo. Infine, vengono descritti i nastri magnetici.

6.1

Disco magnetico

Un disco un piatto circolare di materiale non magnetico, chiamato substrato, rivestito


di materiale magnetizzabile. Tradizionalmente, il substrato era in alluminio o in una lega
di alluminio. Pi di recente, sono stati introdotti substrati di vetro che presentano molti
vantaggi, tra cui:
maggior uniformit della pellicola magnetica superficiale, con conseguente miglio
ramento dellaffidabilit del disco
significativa riduzione dei difetti complessivi della superficie con conseguente dimi
nuzione degli errori di lettura-scrittura
minor distanza tra testina e supporto
maggior rigidit
maggiore resistenza a urti e danneggiamenti.

Meccanismi di lettura e scrittura magnetica


I dati vengono memorizzati e in seguito recuperati dal disco tramite una bobina condut
tiva detta testina (head); molti sistemi hanno testine di lettura e di scrittura separate.
Durante le operazioni di lettura e scrittura, la testina e ferma mentre il disco ruota sotto
di essa.
Il meccanismo di scrittura e basato sul processo per cui lelettricit che fluisce attra
verso una bobina produce un campo magnetico. Alla testina di scrittura vengono inviati im
pulsi, e nella superficie sottostante vengono registrati schemi magnetici differenti a secon
da che la corrente sia positiva o negativa. La testina di scrittura stessa fatta di materiale
facilmente magnetizzabile e ha la forma di un ferro di cavallo stilizzato attorno a cui sono
avvolti pochi giri di conduttore filiforme (Figura 6.1). Una corrente elettrica nel filo indu
ce, attraverso gli estremi del ferro di cavallo, un campo magnetico che, a sua volta, magne
tizza una piccola area del mezzo di registrazione. Linversione della direzione della corren
te invcrtc lorientamento del campo magnetico sul supporto di registrazione.
Il meccanismo di lettura tradizionale basato sul fatto che un campo magnetico in
movimento relativo rispetto a una bobina produce in essa una corrente elettrica. La por
zione di superficie del disco che passa sotto la testina genera una corrente della stessa po
larit di quella precedentemente registrata. Poich la struttura della testina di lettura so
stanzialmente analoga a quella della testina di scrittura, la stessa testina pu essere utilizzata

6.1 Disco magnetico

C orrente
di lettu ra

Figura 6.1

Testina di scrittura induttiva/lettura magnetoresistiva.

per le due funzioni. Lc testine singole sono adottate dai floppy disk e dai pi vecchi siste
mi a disco rigido.
Gli odierni sistemi a disco rigido usano un meccanismo di lcttiura chc richiede una
testina di lettiua distinta chc c comodo posizionare vicino alla testina di scrittura. La te
stina di lettura comprende un sensore magnetoresistivo (MR) parzialmente schermato. Il
materiale magnetoresistivo presenta una resistenza elettrica che dipende dalla magnetiz
zazione del mezzo chc si muove sotto di esso. Tramite il passaggio di una corrente attra
verso il sensore magnetoresistivo, i cambiamenti di resistenza vengono rilevati come segnali
di tensione. Lc caratteristiche di questi sistemi consentono maggiori densit di memoriz
zazione c velocit operative.

Organizzazione e formattazione dei dati


La testina un dispositivo relativamente piccolo in grado di leggere o scrivere su una por
zione del disco rotante. Ci origina la disposizione fisica dei dati in anelli concentrici, chia
mati tracce {track). Le tracce hanno la stessa larghezza della testina, e ne esistono migliaia
per ciascun piatto.
La Figura 6.2 mostra questa disposizione dei dati. Tracce adiacenti sono separate da
spazi {gaps). Ci previene, o quanto meno minimizza, gli errori dovuti al disallineamen
to della testina o semplicemente airintcrfcrenza tra i campi magnetici.
Il trasferimento dati avviene per settori (Figura 6.2). Generalmente ci sono centinaia
di settori per traccia, e questi possono essere di lunghezza fissa o variabile. La maggior par
te dei sistemi odierni adotta settori a lunghezza fissa, quasi universalmente di 512 byte. Per
evitare di imporre irragionevoli requisiti di precisione, settori adiacenti sono separati da
spazi.

193

194

Sistema di elaborazione Capitolo 6 - Memoria esterna

Settori

Figura 6.2

Tracce

Schema di disco dati.

I bit vicini al centro del disco ruotano sotto un punto fsso, come la testina di lettu
ra/scrittura, pi lentamente dei bit esterni. Dunque, occorre compensare la variazione di
velocit in modo che la testina possa leggere tutti i bit alla stessa velocit. Ci si pu fare
incrementando lo spazio tra i bit registrati nei settori del disco. Le informazioni possono
quindi essere lette alla stessa velocit facendo ruotare il disco a velocit angolare co
stante. La Figura 6.3a mostra la disposizione di un disco che ruota a velocit angolare co
stante. Il disco diviso in settori a forma di torta e in tracce concentriche. Il vantaggio del
la velocit angolare costante e che i singoli blocchi di dati possono essere direttamente
indirizzati per traccia e settore. Per spostare la testina dalla sua posizione corrente a un in
dirizzo specifico sufficiente un suo piccolo movimento verso la traccia desiderata e una
breve attesa perch il settore specificato venga a trovarsi sotto la testina. Per contro, la quan
tit di dati immagazzinabili sulle lunghe tracce esterne deve essere la stessa di quella delle
piccole tracce interne.
Poich la densit, in bit per centimetro lineare, cresce spostandosi dalla traccia pi
esterna a quella pi interna, la capacit di memorizzazione dei semplici dischi a velocit
angolare costante limitata dalla massima densit ottenibile sulla traccia pi interna. Per
incrementare la densit, i moderni sistemi a disco fisso utilizzano una tecnica nota come
registrazione a pi zone (multiplezone recording), nella quale la superficie e ripartita in un
certo numero di aree (solitamente 16). AHintcrno di ciascuna di queste, il numero di bit
per traccia costante. Le zone pi lontane dal centro contengono un numero maggiore di
bit (pi settori) rispetto alle zone pi vicine al centro. Ci consente una capacit media di
memorizzazione pi elevata, necessitando per di circuiti leggermente pi complessi. Dato

6.1 Disco magnetico

(a) Velocit angolare costante


Figura 6.3

(b) R egistrazione a pi zone

Confronto tra metodi di disposizione del disco.

chc la cestina del disco si muove da una zona allaltra, la lunghezza (lungo la traccia) dei
singoli bit muta, provocando un cambiamento nei tempi di lettura e di scrittura. La Figura
6.3b suggerisce la natura della registrazione a pi zone; in tale figura, ogni zona compren
de una singola traccia.
necessario un criterio per localizzare la posizione del settore allinterno di una trac
cia. Chiaramente, ci deve essere un punto di partenza sulla traccia e un modo per identi
ficare linizio c la fine di ciascun settore. QiLesti requisiti sono rispettati tramite dati di con
trollo memorizzati sul disco. In sostanza, il disco viene iniziaiizzato con alcuni dati ad hoc
utilizzabili solo dal suo sistema di controllo e non accessibili allutente.
Un esempio di formattazione del disco c illustrato nella Figura 6.4. In questo caso,
ciascuna traccia contiene 30 settori di 600 byte. Ogni settore contiene 512 byte di dati pi
informazioni destinate al controllore del disco. Il campo ID rappresenta un identificato
re univoco o un indirizzo utilizzato per localizzare un particolare settore. Il byte SYNCH
delimita linizio del campo. Il numero di traccia identifica una traccia sulla superficie. Il nu
mero di testina identifica una testina, dato che questo disco presenta pi piatti (come
verr tra breve spiegato). I campi ID e dati contengono un codice di rilevazione derrore.

Caratteristiche fisiche
La Tabella 6.1 elenca le principali caratteristiche dei vari tipi di disco magnetico. Primo,
la testina potrebbe essere fissa oppure mobile, rispetto alla direzione radiale del piatto. Nei
dischi a testina fissa si trova una testina di lettura-scrittura per ciascuna traccia. Lc testi
ne sono montate su un braccio rigido che si estende attraverso tutte le tracce; attualmen
te questi sistemi sono rari. Nei dischi a testina mobile, invece, troviamo ununica testina
di lettura-scrittura, anch essa montata su un braccio. Dato che la testina deve essere in gra
do di raggiungere qualsiasi traccia, il braccio pu estendersi o ritrarsi.
11 disco stesso montato in un telaio, che comprende il braccio, lalbero che fa ruo
tare il disco e i circuiti per lingresso e uscita dei dati. Il disco non rimovibile rimane per
manentemente montato nel proprio telaio. Ad esempio, il disco fisso dei personal com
puter non e rimovibile. Al contrario i dischi rimovibili possono essere asportati e sostituiti
con altri dischi. Il vantaggio di questa strategia consiste nel poter disporre di quantit il
limitate di dati pur avendo un numero limitato di memorie disco.

195

196

S e tto re

_
Spazio
1
Byte

A '

Figura 6 .4

S e tto re fisico I

S e tto re fisico 29

Campo
Campo
Campo
Campi
Spazio
Spazio Spazio
Spazio
Spazio
ID
dati
ID
dati
2
3
1
2
3
0
0
1
1
7

>

515
\

20

17

41

515

CRC

Dati
512

Formato della traccia di un disco Winchester (Seagate ST506).

CRC

FL

Campo
Campo
Spazio
Spazio
ID
dati
2
3
29
29
7

41

515

600 byte/settore
>

Byte di
sincro
nizza
zione

Spazio
1
17

20

\
\

"A

Byte di
N
N
N
sincro
nizza traccia testina settore
zione

Byte

S e tto re fisico 0

n _

20

Sistema di elaborazione Capitolo 6 - Memoria esterna

In d ice

6.1 Disco magnetico

Tabella 6.1

Caratteristiche fisiche di un sistema disco.

M ovimento della testina

Piatto

Testina fissa (ima per traccia)

Piatto singolo

Testina mobile (una per superficie)

Pi piatti

P ortabilit del disco

Meccanismo della testina

Disco non rimovibile

Conratto (floppy)

Disco rimovibile

Distanza fssa

Lati

Separazione acrodinamica (Winchester)

Lato singolo
Due Iaci

Inoltre, tali dischi possono essere spostati da un calcolatore a un altro, come si fa con
floppy disk e cartucce ZIP.
Quando, ed la maggior parte dei casi, la patina magnetizzabile applicata a en
trambe le facce del piatto i dischi sono detti a doppia faccia (<double-sided), altrimenti so
no a faccia singola (.single-sided).
Nei modelli che hanno pi piatti (;multiple platter) impilati verticalmente a distan
za di qualche centimetro, sono presenti pi bracci (Figura 6.5). Qiiesti dischi utilizzano una
testina mobile di lettura-scrittura per ciascuna superficie dei piatti. Tutte le testine sono
meccanicamente fissate in modo che si trovino alla stessa distanza dal centro del disco e
si muovono contemporaneamente. Cos, in ogni istante, tutte le testine sono posizionate
sulle tracce chc presentano uguale distanza dal centro del disco. Linsieme di tutte le tracTestina di lettura/scrittura
(1 per superficie)
\

Direzione di movimento
del braccio

Superfcie 9
Piatto
Superfcie 8
Superfcie 7
Superfcie 6
Superfcie 5
Superfcie 4
Superfcie 3
Superfcie 2
Superficie 1
Superficie 0
A lbero
Figura 6.5

C om ponenti di un drive di disco.

Braccio

197

198

Sistema di elaborazione Capitolo 6 - Memoria esterna

Figura 6.6 Tracce e cilindri.


cc nella stessa posizione relativa sul piattello viene detto cilindro (cylinder) come, ad esem
pio, le tracce evidenziate in grigio nella Figura 6.6.
Infine, il meccanismo della testina consente una classificazione dei dischi in tre tipi.
Tradizionalmente, la testina di lettura-scrittura viene posizionata a una distanza fissa so
pra il piattello, lasciando unintercapedine daria. Allaltro estremo troviamo il meccanismo
chc effettivamente viene a contatto fisico con il supporto durante le operazioni di lettura
o scrittura. Qiiesto c il meccanismo dei floppy disk, che rappresentano il tipo di disco me
no costoso.
Per comprendere la terza possibilit utile commentare la relazione tra la densit dei
dati e la dimensione dellintercapedine daria. La testina deve generare o leggere un cam
po elettromagnetico di intensit sufficiente alla scrittura e alla lettura. Pi stretta c la te
stina, pi vicina deve trovarsi rispetto alla superficie del piatto. Una testina pi stretta si
gnifica tracce pi ravvicinate e quindi una maggior densit di dati, il che positivo.
Tuttavia, pi vicina al disco la testina, pi grande il rischio derrore per impurit o im
perfezioni. Per migliorare ulteriormente la tecnologia, venne sviluppato il disco Winchester.
Le testine del Winchestcrvcngono utilizzate negli assemblaggi di dischi ermeticamente si
gillati che sono praticamente privi di contaminanti. Es se operano pi vicino alla superfi
cie del disco rispetto alle testine convenzionali, consentendo cos una maggiore densit dei
dati. La testina in realt una foglia (foil) aerodinamica che si appoggia leggermente sul
la superficie del piattello quando il disco e fermo. La pressione daria generata da un disco
in rotazione c sufficiente per allontanare la foglia dalla superficie. Il sistema risultante, pri
vo di contatto, pu utilizzare testine pi strette che operano pi vicino alla superficie del
piattello rispetto alle testine convenzionali dei dischi rigidi.1
La Tabella 6.2 fornisce i parametri per i dischi ad alte prestazioni, attualmente in uso.

1 II term ine W inchester fu originariamente adottato da IBM per indicare il disco 3340 prima della sua commer
cializzazione. Il 3340 era un disco rimovibile con Ie testine sigillate ermeticamente. U termine viene ora applicato a
tu tti i drive di disco ermeticamente chiusi dotati di testine aerodinamiche. II disco W inchester si trova comune
mente allinterno di personal computer e workstation, di cui costituisce il disco fisso.

6.1 Disco magnetico

Tabe lla 6.2

Parametri d i un tip ic o d rive di disco fisso.______

C ara tteristich e

_______ ____________________

Seagate
Seagate B arrac u d a
S eagate
B arrac u d a ES.2
7 200.10
B arrac u d a 7 2 0 0 .9

Seagate

H itach i
M ic ro d rh e

Applicazione

Server ad alta
capacit

Server ad alce
prestazioni

Desktop di
fascia bassa

Portatili

Palmari

Capacit

IT B

750 CiB

160 GB

120 GB

8 GB

Tempo minimo di posi


zionamento da traccia a
traccia

0,8 ms

0,3 ms

1,0 ms

1,0 ms

Tempo medio di
posizionamento

8,5 ms

3,6 ms

9,5 ms

12,5 ms

12 ms

Velocit dellalbero

7200 rpm

7200 rpm

7200

5400 rpm

3600 rpm

Ritardo medio
rotazionale

4,16 ms

4,16 ms

4,17 ms

5,6 ms

8,33 ms

Velocit massima di tra


sferimento

3 G B/s

300 M B /s

300 M B /s

150 M B/s

10 M B /s

Byte per settore

512

512

512

512

512

Tracce per cilindro


(numero ili superile i dei
piatti)

Parametri delle prestazioni del disco


Gli effettivi dettagli delle operazioni di un disco dipendono dal sistema di elaborazione,
dal sistema operativo e dalla natura dei canali di I/O e delThardware del controllore del
disco. Un generico diagramma temporale dei trasferimenti di I/O su disco mostrato nel
la Figura 6.7.
Il disco in funzione ruota a velocit costante. Per leggere o scrivere, la testina deve tro
varsi sulla traccia desiderata e allinizio del settore desiderato (di quella traccia). Nei siste
mi a testina mobile la selezione della traccia implica il movimento della testina e negli al
tri la selezione elettronica di una testina. Sui sistemi a testina mobile, il tempo richiesto per
posizionare la testina sulla traccia noto come tempo di posizionamento (seek time). In
entrambi casi, una volta chc la traccia stata selezionata, il controllore del disco attende
finch il settore appropriato ruota per allinearsi con la testina. Il tempo richiesto affinch

199

200

Sistema di elaborazione C apitolo 6 - Mem oria esterna

A ttesa
p er I dispositivo

A ttesa
p er il canale

I ......................U n

Posizionam ento

R itardo
rotazionale

IV asferim ento
dati

I-.......................f .....................-I--------- 1
Dispositivo
occupato

Figura 6.7

Temporizzazione di un trasferimento di I/O su disco.

linizio del settore raggiunga la testina e noto come ritardo, o latenza rotazionale (rota
tional delay). La somma delleventuale tempo di posizionamento e del ritardo rotazionale
equivale al tempo di accesso (access time), ossia il tempo richiesto per il posizionamento.
Una volta che la testina e in posizione, loperazione di lettura o scrittura viene eseguita
quando il settore si muove sotto la testina; si tratta della porzione delloperazione dedica
ta al trasferimento dei dati: la sua durata detta tem po di trasferimento (transfer time).
Oltre ai tempi di accesso e di trasferimento, esistono parecchi ritardi di accodamento associati normalmente a unoperazione di I/O su disco. Quando un processo effettua
una richiesta di I/O, esso deve dapprima attendere in coda che il dispositivo sia disponi
bile. In quel momento, il dispositivo viene assegnato al processo. Sc il processo condivide
un canale di I/O o un insieme di canali di I/O con altri drive di disco, allora ci potrebbe
essere unattesa aggiuntiva perch il canale sia disponibile. A quel punto, si esegue il posi
zionamento per iniziare laccesso al disco.
Alcuni sistemi per i server adottano una tecnica nota come lettiua rotazionale posi
zionale, RPS (rotationalpositional sensing). Ecco come funziona: quando stato dato il co
mando di posizionamento, il canale viene rilasciato per gestire altre operazioni di I/O. Una
volta che il posizionamento c completato, il dispositivo determina quando i dati passeranno
sotto la testina. Quando quel settore si avvicina alla testina, il dispositivo tenta di ristabi
lire il percorso di comunicazione con host. Se lunit di controllo o il canale sono impe
gnati con un altro I/O, allora il tentativo di riconnessione fallisce e il dispositivo deve
compiere unintera rivoluzione prima di poter tentare unaltra riconncssione; questo fe
nomeno detto fallimento RliS (RPSmiss). Ci rappresenta un ulteriore ritardo che de
ve essere sommato alla linea temporale della Figura 6.7.
Tempo di posizionamento

Il tempo di posizionamento il tempo richiesto per far giungere il braccio del disco alla
traccia richiesta. Si tratta di una quantit difficile da precisare. Il tempo di posizionamen
to consiste di due componenti chiave: il tempo di inizializzazione e il tempo per attraver
sare le tracce che devono essere superate una volta che il braccio di accesso ha preso velo
cit. Sfortunatamente, il tempo di attraversamento non una funzione lineare del numero
di tracce, ma include un proprio tempo di inizializzazione e uno di assestamento (il tem
po che segue il posizionamento della testina sulla traccia richiesta e che precede la conferma
della sua identificazione).
Un grande miglioramento deriva da componenti del disco pi piccoli e leggeri. Alcuni
anni fa, i dischi avevano un diametro di 36 cm, mentre la dimensione pi comune al gior
no doggi 8,9 cm, con una conscguente riduzione della distanza che il braccio deve per
correre. Oggi il tipico tempo medio di posizionamento per i dischi fissi inferiore ai 10 ms.

6.1 Disco magnetico

Ritardo rotazionale

Ad eccezione dei floppy, i dischi odierni ruotano a velocit chc vanno dai 3600 (per di
spositivi portatili quali fotocamere digitali) ai 20000 giri al minuto (fino alla stesura di que
sto libro); a questa velocit, si ha una rotazione ogni 3 ms. Dunque, in media, il ritardo ro
tazionale sar di 1,5 ms.
Tempo di trasferimento

Il tempo di trasferimento verso o da un disco dipende dalla velocit di rotazione del disco
secondo la seguente legge:

Dove
T = tempo di trasferimento
b = numero di byte da trasferire
N = numero di byte per traccia
r = velocit di rotazione.
Dunque il tempo di accesso totale medio pu essere espresso come
~ ~
1
b
Ja = Js + + ---Ir
rN
dove T rappresenta il tempo medio totale di posizionamento. Si noti che, sui sistemi a zo
ne, il numero di byte per traccia variabile, il chc complica i calcoli.2
Un confronto sui tempi

Partendo dai parametri precedentemente definiti, consideriamo due difFcrcnti operazioni


di I/O che mostrano il pericolo di affidarsi ai valori medi. Si consideri un disco con un tem
po medio di posizionamento dichiarato di 4 ms, una velocit di rotazione di 15000 giri al
minuto, settori da 512 byte e 500 settori per traccia. Si supponga di voler leggere un file
composto da 2500 settori per un totale di 1,28 Mbyte. Vorremmo stimare il tempo tota
le per il trasferimento.
Come prima cosa, si assuma che il file sia memorizzato nel modo pi compatto pos
sibile. Ossia, il file occupa tutti i settori di 5 tracce adiacenti (5 tracce X 500 settori/traccia
= 2500 settori). Questa nota come organizzazione sequenziale. Ora, il tempo per leggere
la prima traccia :
Posizionamento medio
Ritardo rotazionale
Lettiua di 500 settori

4 ms
2 ms
4 ms
IOms

Si supponga che le tracce rimanenti possano ora essere lette senza alcun tempo di posizio
namento sensibile. In altre parole, !operazione di I/O tiene il passo del flusso dal disco.

2 Si confrontino le due relazioni precedenti con TEquazione (4.1).

201

202

Sistema di elaborazione Capitolo 6 - Memoria esterna

Allora, al pi, dobbiamo sopportare il ritardo rotazionale per ogni traccia successiva. Dunque
ogni traccia successiva viene letta in 2 + 4 = 6 ms. Il tempo totale per leggere lintero file :
10 + (4 X 6) = 34 ms = 0,034 s
Si calcoli ora il tempo richiesto per leggere gli stessi dati utilizzando laccesso casuale an
zich quello sequenziale; ossia, gli accessi ai settori sono distribuiti in modo casuale nel di
sco. Per ogni settore, abbiamo
Posizionamento medio
4 ms
Ritardo rotazionale
2 ms
Lettura di 1 settore
0,008 ms
6,008 ms
Tempo totale = 2500 X 6,008 = 15020 ms = 15,02 s
chiaro che lordine nel quale i settori sono letti dal disco ha un impatto notevole sulle
prestazioni deHI/O. Nel caso di accessi nei quali pi settori vengono letti o scritti, man
teniamo un certo controllo sul modo in cui i settori di dati vengono disposti. Comunque,
anche nel caso di un accesso singolo a un file, in ambiente multiprogrammato ci saranno
richieste concorrenti di I/O per lo stesso disco. Cos, vale la pena esaminare come le pre
stazioni dcllI/O su disco possano essere migliorate rispetto al caso di accessi puramente
casuali. Questo porterebbe a considerare gli algoritmi di scheduling del disco e dunque a
inoltrarsi nello studio del sistema operativo, cosa chc esula dagli scopi di questo libro (si
veda [STALO?]).

R A ID S im u la to r

6.2

RAID

Come precedentemente detto, la rapidit nei miglioramenti delle prestazioni delle memorie
secondarie stata decisamente inferiore rispetto a quelli di processori e memorie principali.
Questo disallineamento ha reso il sistema disco forse il principale argomento di interesse
nella ricerca per migliorare le prestazioni complessive di un sistema di elaborazione.
Come accade anche in altri settori, i progettisti delle memorie disco riconoscono che,
se le capacit di un componente non possono essere incrementate oltre un dato livello, ul
teriori guadagni in termini di prestazioni sono ottenibili utilizzando pi componenti in pa
rallelo. Nel caso della memorizzazione su disco, questo porta allo sviluppo di batterie (ar
ray) di dischi chc operano indipendentemente e in parallelo. Disponendo di pi dischi,
richieste distinte di I/O possono essere gestite in parallelo, visto che i dati richiesti risie
dono su dischi separati. Inoltre, una singola richiesta di I/O pu essere eseguita in paral
lelo se il blocco di dati cui accedere distribuito su pi dischi.
Con luso di pi dischi, si dispone di unampia variet di modi per organizzare i dati
e per aggiungere ridondanza al fine di migliorare laffidabilit. Ci potrebbe rendere diff
cile lo sviluppo di schemi di basi di dati che possano essere utilizzati su pi piattaforme.

6.2 RAID

Fortunatamente, lindustria ha concordato uno schema standardizzato perla progettazione


di basi di dati su pi dischi, schema noto come RAID {redundant array o f independent di
sk). Lo schema RAID consiste di 7 livelli,3 da 0 a 6. Qiiesti livelli non implicano una rela
zione gerarchica, ma designano differenti architetture progettuali che condividono tre
caratteristiche comuni.
1. RAID e un insieme di dischi fsici visti dal sistema operativo come una singola unit;
2. i dati sono distribuiti sui dischi dellinsieme;
3. la capacit ridondante viene utilizzata per memorizzare informazioni di parit, che
garantiscono il recupero dei dati in caso di guasto.
I dettagli della seconda c della terza caratteristica variano da livello a livello. RAID 0 non
supporta la terza caratteristica.
Il termine RAID fu originariamente coniato nel documento di un gruppo di ricer
catori dellUniversit della California a Berkeley [PATT88].4 Il documento evidenzi va
rie configurazioni e applicazioni RAID e introdusse la definizione dei livelli RAID tutto
ra in uso. La strategia RAID sostituisce i sistemi a grande capacit e distribuisce i dati per
consentire laccesso simultaneo a pi dischi, migliorando quindi le prestazioni di I/O e con
sentendo incrementi di capacit.
Il contributo del progetto RAID consiste nel trattare effettivamente la necessit di
ridondanza. Sebbene consentire a pi testine di operare simultaneamente porti a velocit
pi alte di I/O e di trasferimento, limpiego di pi dispositivi incrementa la probabilit di
guasti. Per compensare questo calo di affidabilit, RAID utilizza informazioni di parit me
morizzate per attivare il recupero dei dati persi in seguito a guasti del disco.
Esaminiamo ora i livelli RAID, riassunti nella Tabella 6.3. La tabella mostra le pre
stazioni dei sette livelli RAID sia in termini di capacit di trasferimento, sia in termini di
tasso di richieste di I/O soddisfatte. Come si vede, rispetto a queste due metriche le pre
stazioni dei livelli RAID sono intrinsecamente assai diffusi.
La Figura 6.8 un esempio che mostra luso dei sette schemi RAID per supportare
una capacit che, senza contare la ridondanza, richiede quattro dischi. La figura eviden
zia la disposizione dei dati dellutente e dei dati ridondanti e indica i requisiti di memo
rizzazione relativi ai vari livelli. Ci riferiremo a questa figura per tutta la seguente tratta
zione.

RAID livello 0
II RAID livello 0 non un vero componente della famiglia RAID, in quanto non include
la ridondanza per migliorare le prestazioni. Comunque, per alcune applicazioni, ad esem
pio su supercomputer, prestazioni e capacit sono i principali problemi mentre il basso co
sto pi importante di una maggiore affidabilit.

3Alcuni ricercatori e alcune compagnie hanno definito livelli addizionali, ma i 7 livelli qui descritti sono quelli universai mente riconosciuti.
4 In tale documento, Tacronimo RAID stava per redundant airay o f inexpensive disk. Il termine inexpensive venne usa
to per paragonare i piccoli dischi relativamente economici in un array RAID a un unico disco grande e costoso
(SLED, single large expensive disk). Lo SLED ormai obsoleto, e una tecnologia similare per i dischi viene impie
gata per configurazioni RA ID e non RAID. I)i conseguenza, lindustria ha adottato il termine independent per sot
tolineare il fatto che larray RAID provoca significativi miglioramenti nelle prestazioni e nellaff(labilit.

203

204

Sistema di elaborazione Capitolo 6 - Memoria esterna

Tabella 6.3

Livelli RAID.

C ategoria

Livello D escrizione Dischi


richiesti

D isponibilit
di dati

Tasso
di trasferim ento
dati con pesanti
richieste di I /O

Velocit
di richiesta di I /O
di piccole
dim ensioni

Striping

Non
ridondante

,V

Inferiore a quella di
un singolo disco

Elevato

Elevatissimo sia in
scrittura chc in
lettura

Mirroring

Mirror

IN

Maggiore rispetto a Maggiore di un


RAID 2 ,3,4,5:
unico disco in
inferiore a RAID 6 lettura; simile a un
disco in
unico
scrittura

Fino al doppio di un
unico disco in
lettura; simile a un
unico disco in
scrittura

Ridondante
tramite
codice di
Hamming

N+ m

Molto maggiore di
un unico disco;
paragonabile a
RAID 3 ,4,5

Circa il doppio di
un unico disco

Parit con bit N + 1


intcrlacciato

Parit con
AU 1
blocco
interlacciato

Molto pi elevato
rispetto a un singolo
: disco; paragonabile
: a RAID 2,3, o 5

Parit
' + l
distribuita
con blocco
interlacciato

Molto pi elevato
rispetto a un unico
disco; paragonabile
a RAID 2,3, o 4

Simile a RAID 0 in Simile a RAID 0 in


lettura; molto
lettura; molto
inferiore a un unico inferiore a un
singolo disco in
disco in scrittura
scrittura

Parit
N+ 2
distribuita
duale con
blocco
intcrlacciato

Pi elevato di tutte
le alternative
elencate

Simile a RAID 0 in Simile a RAID 0 in


lettura; inferiore di lettura; molto
RAID 5 in scrittura inferiore di RAID 5
in scrittura

Accesso
parallelo

Accesso
indipendente

Superiore a tutte le
alternative elencane

Molto pi elevato
Superiore a tutte le
rispetto a un singolo al ternative elencate
disco; paragonabile
a RAID 2 ,4 ,o 5
Simile a RAID 0 in
lettura; molto
interiore a un unico
disco in scrittura

Circa il doppio
rispetto a un unico
disco
Simile a RAID 0 in
lettura; molto
inferiore a un
singolo disco in
scrittura

N = numero di dischi per i dati; m c proporzionale al logaritmo di N

Per il RAID 0, i dati dellutente c di sistema sono distribuiti su tutti i dischi dell ar
ray. Ci presenta un netto vantaggio rispetto alluso di un unico grande disco: nel caso di
due richieste di I/O rivolte a due differenti blocchi di dati, esiste unalta probabilit che i
dati richiesti si trovino su dischi differenti. Dunque, le due richieste possono essere trat
tate in parallelo.
Ma il RAID 0, cos come tutti i livelli RAID, va oltre la semplice distribuzione dei
dati sui dischi: i dati vengono suddivisi a strisce (striped) su tutti i dischi disponibili.
Questo pu essere meglio compreso considerando la Figura 6.9. Tutti i dati sono visti co
me memorizzati su un unico disco logico. Il disco diviso in strisce (strip) che possono es
sere blocchi fisici, settori o altro. Le strisce sono distribuite a rotazione (schema round-ro-

6.2 RAID

<s2si:M;iSS3i
Striscia 0

Striscia I

Suiscia 2

Striscia 4

Striscia 5

Striscia 6

Striscia 7

Striscia 8

Striscia 9

Striscia 10

Striscia 11

Striscia 12

Striscia 13

Striscia 14

Striscia 15

Striscia 3

(a) RAID 0 (non ridondante)


Striscia 0

Striscia 1

Striscia 2

Striscia 3

Striscia 0

Striscia 1

Striscia 2

Striscia 4

Striscia 5

Striscia 6

Striscia 7

Striscia 4

Striscia 5

Strisciafi

Striscia 7

Striscia 8

Striscia 9

Striscia IO

Striscia 11

Striscia 8

Striscia 9

Strisciii 10

Striscia I I

Striscia 12

Striscia 13

Striscia 14

Striscia 15

Striscia 12

Striscia 13
""-----------^

Striscia 1 4 ,

Striscia 15
---------------

(b) RAID I (m irror)

(c) RAID 2 (ridondanza tram ite codice di Ham m ing)

b| ^

bO

b2

b3

P(b>

P(0-3>

(d) RAID 3 (p a rit con bit interiacciato)


(^:1:3
Blocco 0

ev:S:5S
Blocco 1

Blocco J

^ : ^
Blocco 3

Blocco 4

Blocco 5

Blocco 6

Blocco 7

Pf4-7>

Blocco X

Blocco 9

Blocco IO

Blocco 11

"p< 7v

Blocco 12

Blocco 13

Blocco 14

Blocco 15

P( 1.2-15)
------------

(e) RAID 4 (p a rit a livello di blocco)


Blocco O

Blocco 1

Blocco 2

Blocco 4

Blocco 5

Blocco 6

Blocco 8

Blocco 9

Blocco 12
PU fv 19)

Blocco 16
_

Blocco 3
(4 -7 > ^

em><
Blocco 7

P(X-H)

Blocco IO

Blocco 11

Blocco 13

Blocco 14

Blocco 15

Blocco 18

Blocco 19

Blocco 17

_ J

_ J

(f) RAID 5 (p a rit distribuita a livello di blocco)


Blocco 0

Blocco 1

Blocco 2

Blocco 3

P(O-S)

Blocco 4

Blocco 5

Blocco 6

Pt.4-7) ^

CH4-7)

Blocco 7

Blocco 8

Blocco 9

P(K-U)

Blocco 10

Blocco 11

Blocco 14

Blocco 15

Blocco 12

0(12-15)

(g) RAID 6 (ridondanza duale)


Figura 6.8

L iv e lli RAID.

Blocco 13

^ Q (0 -3 )_

Striscia 3

205

206

Sistema di elaborazione Capitolo 6 - Memoria esterna

Disco
fisico 0

Disco
logico

Disco
fisico 1

Disco
fisico 2

Disco
fisico 3
S triscia 3

Striscia 0

S triscia 0 - -

S triscia 1

S triscia 1

S triscia 4

S triscia 5

Striscia 2

S triscia 8

S triscia 9

S triscia 10

Striscia 11

S triscia 3

Striscia 12

S triscia 13

S triscia 14

S triscia 15

Striscia 7

1' I
1i i
1I
ii

S triscia 8
S triscia 9

ii
ii

Software di
gestione

S triscia 10
S triscia 11
Striscia 12

S triscia 15

Figura 6.9

Mappatura dei dati per un array RAID livello 0.

bin) sui membri dellarray. Un insieme di strisce logicamente consecutive chc mappa esat
tamente una striscia su ciascun membro dellarray detto stripe. In un array a -dischi, le
prime n strisce logiche sono fisicamente memorizzate come la prima striscia su ciascuno
degli n dischi, c formano la prima stripe; le seconde n strisce logiche sono distribuite sul
le seconde strisce di ciascun disco; c cos via. Il vantaggio di questo schema risiede nel fat
to chc le richieste di I/O relative a pi strisce logicamente continue possono essere gesti
te in parallelo fino a n strisce per richiesta, riduccndo notevolmente il tempo di
trasferimento.
La Figura 6.9 indica fuso di software di gestione dell array chc tiene conto della cor
rispondenza tra spazio fisico e logico del disco.
RAID 0 per alte velocit di trasferimento dati

Le prestazioni dei sistemi RAID dipendono in modo critico dalla struttura delle richieste
e dalla disposizione dei dati. Questi argomenti possono essere trattati in modo pi chiaro
nel RAID 0, ove limpatto della ridondanza non interferisce con lanalisi. Innanzitutto, si
consideri luso di RAID 0 per ottenere unalta velocit di trasferimento dati. Sono richie

6.2 RAID

sti due requisiti. Primo, unalta capacit di trasferimento lungo lintero percorso tra la me
moria e i singoli dischi.
11secondo requisito che lapplicazione deve trattare le richieste di I/O in modo effi
ciente. Tale requisito viene rispettato se la tipica richiesta rivolta a grandi quantit di da
ti logicamente contigui, rispetto alla dimensione della striscia. In questo caso, una singo
la richiesta di I/O implica il trasferimento parallelo di dati da pi dischi, aumentando
leffettiva velocit di trasferimento rispetto al trasferimento da disco singolo.
RAID 0 per alti tassi di richiesta di I/O
Negli ambienti orientati alle transazioni, lutente c generalmente pi interessato al tempo
di risposta che al tasso di trasferimento. Per una singola richiesta di I/O su una piccola
quantit di dati, il tempo di I/O principalmente determinato dal movimento delle testine
del disco (tempo di posizionamento) e dal movimento del disco (latenza rotazionale).
Negli ambienti transazionali possono esserci centinaia di richieste di I/O al secon
do. Un array di dischi pu fornire alte velocit d esecuzione dcllI/O bilanciando il carico
su pi dischi. Un efficace bilanciamento del carico si pu ottenere solo in presenza di ri
chieste multiple in sospeso. Questo, a sua volta, implica la presenza di pi applicazioni in
dipendenti o di una singola applicazione orientata alle transazioni capace di richieste mul
tiple asincrone di I/O. Le prestazioni saranno influenzate anche dalla dimensione della
striscia. Se questa relativamente grande, in modo che una singola richiesta di I/O coin
volga un singolo accesso al disco, allora pi richieste di I/O in attesa possono essere gestite
in parallelo, riducendo il tempo che le richieste trascorrono in coda.

RAID Livello 1
Il RAID 1 differisce dai RAID di livello pi alto per il modo in cui si ottiene la ridondan
za. Negli altri schemi RAID, per introdurre la ridondanza si utilizza una forma di calcolo
della parit, mentre in RAID 1 la ridondanza viene ottenuta semplicemente duplicando
tutti i dati. Come mostrato nella Figura 6.8b, si usa lo striping dei dati, come nel RAID 0.
Ma in questo caso, ogni striscia logica viene mappata su due diversi dischi.
Lorganizzazione RAID 1 comporta numerosi aspetti positivi.
1. Una richiesta di lettura pu essere soddisfatta dal disco, dei due che contengono i da
ti richiesti, chc presenta la minor somma dei tempi di posizionamento e di latenza
rotazionale.
2. Una richiesta di scrittura richiede laggiornamento di entrambe le strisce corrispon
denti, ma questa operazione pu essere eseguita in parallelo. Dunque, le prestazioni
in scrittura sono dettate dalla pi lenta delle due scritture (ad esempio, quella che implica la somma pi grande tra tempo di posizionamento c latenza rotazionale).
Comunque, con il RAID 1 non ce penalit di scrittura.I livelli RAID dal 2 al 6 im
plicano luso dei bit di parit. Dunque, quando una singola striscia viene aggiornata,
il software di gestione dell array deve prima calcolare e aggiornare i bit di parit e quin
di aggiornare la striscia in questione.
3. La ripresa dopo un guasto semplice. Se un disco ha un malfunzionamento, i dati so
no disponibili sullaltro.

207

208

Sistema di elaborazione Capitolo 6 - Memoria esterna

Il principale svantaggio del RAID 1 risiede nei costi, se non altro pcrchc richiede spazio
doppio per la memorizzazione. Pertanto le configurazioni RAID 1 sono generalmente
utilizzate per software di sistema e per dati e file altamente critici. In questi casi, il RAID
1 fornisce un backup in tempo reale dei dati e, in caso di guasto di un disco, i dati sono im
mediatamente disponibili.
In un ambiente orientato alle transazioni, le prestazioni del RAID 1 nelle operazio
ni di lettura possono risultare quasi doppie rispetto a quelle del RAID 0. In ogni caso, se
una frazione consistente delle richieste di I/O sono scritture, allora si potrebbe non ri
scontrare un significativo guadagno di prestazioni rispetto a RAID 0. RAID 1 pu anche
fornire migliori prestazioni rispetto a RAID 0 per le applicazioni a trasferimento dati in
tensivo con unalta percentuale di letture. I miglioramenti avvengono se l applicazionc pu
ripartire le richieste di lettura in modo da coinvolgere entrambi i dischi.

RAID Livello 2
I RAID livello 2 e 3 utilizzano tecniche di accesso parallelo. Tutti i dischi di un array ad
accesso parallelo partecipano allesecuzione delle richieste di I/O. Ovviamente, tutti gli al
beri sono sincronizzati in modo che la testina di ciascun disco si trovi nella stessa posizio
ne su ogni disco in ogni dato momento.
Come negli altri schemi RAID, si adotta lo striping dei dati. Nel caso del RAID 2 e 3,
le strisce sono molto piccole, spesso quanto un singolo byte o una singola parola. Nel
RAID 2, viene calcolato un codice a correzione di errore sui corrispondenti bit di ogni di
sco dati, c i bit del codice sono memorizzati nelle corrispondenti posizioni di bit su pi di
schi di parit. Solitamente, si adotta un codice di Hamming, in grado di correggere erro
ri su un bit c rilevare errori doppi.
RAID 2 richiede meno dischi rispetto al RAID 1, ma rimane comunque piuttosto
dispendioso. Il numero di dischi ridondanti proporzionale al logaritmo del numero di
dischi per i dati. In lettura, si accede a tutti i dischi simultaneamente. I dati richiesti e il co
dice a correzione di errore sono inviati al controllore dellarray. Se si riscontra un errore sin
golo, il controllore pu riconoscere c correggere Terrore istantaneamente, in modo che il
tempo di accesso per la lettura non venga rallentato. In una scrittura, si deve accedere a tut
ti i dischi per i dati c per la parit.
RAID 2 si rivelerebbe efficace in un ambiente in cui si verificano molti errori di di
sco. Data Talta affidabilit dei dischi, RAID 2 non viene implementato.

RAID Livello 3
Organizzato in modo simile a RAID 2, RAID 3 richiede per un solo disco ridondante,
indipendentemente dal numero di dischi dellarray c utilizza laccesso parallelo, con i dati
distribuiti in piccole strisce. Invece di un codice a correzione dcrrorc, si calcola un bit di
parit per Tinsiemc dei bit nella stessa posizione su tutti i dischi dei dati.
Ridondanza
In caso di guasto, si accede al disco di parit e i dati vengono ricostruiti. Una volta chc il
disco guasto viene rimpiazzato, i dati mancanti possono essere ripristinati e Topcrazionc
pu riprendere.

6.2 RAID

La ricostruzione dei dati e piuttosto semplice. Si consideri un array di 5 dischi nel qua
le i dati sono contenuti nei dischi XO, XI, X2 e X3 mentre X4 rappresenta il disco di pa
rit. La parit per IV-esimo bit viene calcolata come segue:
X4(Z) = X3(Z) X2(z) 0 Xl(Z) 0 XO(Z)

Si supponga che il guasto riguardi XI. Sc eseguiamo POR esclusivo di X4(/) 0 X l(/) con
entrambi i membri della precedente equazione, otteniamo
X l (/) = X4(Z) X3(Z) 0 X2(Z) 0 XO(Z)

Cos, i contenuti delle strisce di dati su X 1 possono essere ripristinati dai contenuti delle
strisce corrispondenti sugli altri dischi dellarray. Qiiesto principio persiste nei livelli RAID
superiori.
Nel caso di un guasto del disco, tutti i dati sono ancora disponibili nella forma che
viene detta modo ridotto (reduced mode). In questo modalit, per le letture, i dati man
canti sono rigenerati al volo utilizzando il calcolo dellOR esclusivo. Qiiando i dati ven
gono scritti su un array ridotto RAID 3, si deve mantenere la consistenza della parit per
la successiva rigenerazione. Il ritorno alla piena operativit richiede chc il disco guasto sia
sostituito e che i suoi contenuti siano riprodotti sul nuovo disco.
Prestazioni

Poich i dati vengono organizzati in strisce molto piccole, RAID 3 pu offrire una velo
cit di trasferimento dati molto elevata. Ogni richiesta di I/O implicher il trasferimento
parallelo dei dati da tutti i dischi. Per grandi trasferimenti, il miglioramento nelle presta
zioni particolarmente notevole. D altro canto, si pu eseguire solo una richiesta di I/O
alla volta. Cos, in un ambiente orientato alle transazioni, le prestazioni ne soffrono.

RAID Livello 4
I livelli RAID dal 4 al 6 utilizzano una specifica tecnica di accesso. In questi array i dischi
operano in modo indipendente, cosicch richieste di I/O separate possano essere soddi
sfatte contemporaneamente. Pertanto, i dischi ad accesso indipendente sono pi adatti al
le applicazioni chc richiedono alti ritmi di richiesta di I/O c sono relativamente meno adat
te per le applicazioni che richiedono alti tassi di trasferimento dati.
Come negli altri schemi RAID, si adotta lo striping dei dati. Lc strisce dei RAID dal
4 al 6, sono relativamente grandi. RAID 4 utilizza una striscia di parit bit a bit sulle cor
rispondenti strisce di ciascun disco dati, e i bit di parit sono memorizzati nella corri
spondente striscia sul disco di parit.
RAID 4 risulta penalizzato dalle richieste di scrittura di piccola dimensione. Per ef
fettuare una scrittura, il software di gestione deve aggiornare non solo i dati utente ma an
che i corrispondenti bit di parit. Si consideri un sistema di 5 dischi con 4 dischi dati (da
XO a X3) c un disco di parit (X4). Si supponga di eseguire una scrittura in una striscia sul
disco XI. Inizialmente, per ogni bit Z, abbiamo la seguente relazione:
X4(Z) = X3(Z) X2(Z) X l (Z) XO(Z)

Dopo un aggiornamento, con le posizioni dei bit potenzialmente alterati contrassegnati


da un apice,

209

210

Sistema di elaborazione Capitolo 6 - Memoria esterna

X 4 ' (Z) = X3(/') 0


= X3(Z) 0
= X3(Z)
= X 4 (/)0

X2(Z) 0 X l ' (/) 0 XO(Z)


X2(Z) 0 X l ' (Z) 0 XO(Z) Xl(Z) 0 Xl(Z)
X2(Z) X l (Z) XO(Z) Xl(Z) X l 7 (Z)
Xl(Z) (Z)

Il set di istruzioni precedente derivato come segue. La prima riga indica che un cambia
mento in X 1 condizioner anche il disco di parit X4. Nella seconda riga vengono aggiunti
i termini X I (Z) X l (Z). Poich loperazione di OR esclusivo tra ogni quantit e se stes
sa restituisce 0, ci non condiziona lespressione. Tuttavia, per convenzione, viene creata
la terza linea per riordinare. Infine, viene usata TEquazione 6.1 per sostituire i primi quat
tro termini con X4(Z).
Per calcolare la nuova parit, il software di gestione deve leggere la vecchia striscia uten
te e la vecchia striscia di parit. Poi pu aggiornare queste due strisce con i nuovi dati e con
la parit ricalcolata. Cos, ogni scrittura di striscia implica due letture e due scritture.
Nel caso di ima scrittura di pi dati che coinvolga le strisce su tutti i drive di disco,
la parit viene facilmente computata calcolando solo i nuovi bit di dati. Cos, il drive di pa
rit pu essere aggiornato in parallelo rispetto ai drive dei dati e non si hanno letture o scrit
ture extra.
In ogni caso, ciascuna operazione di scrittura deve coinvolgere il disco di parit, chc
dunque pu diventare un collo di bottiglia.

RAID Livello 5
Organizzato in modo simile al precedente, RAID 5 si differenzia da questo in quanto di
stribuisce le strisce di parit su tutti i dischi. Un tipico schema di allocazione c il round-ro
bn, mostrato nella Figura 6.8f Per un sistema a n dischi, la striscia di parit si trova su un
disco diverso per le prime n strisce, e poi lo schema si ripete.
Questa strategia evita il potenziale collo di bottiglia riscontrato nel RAID 4.

RAID Livello 6
Il RAID 6 fu introdotto in un successivo documento a opera dei ricercatori di Berkeley
[KATZ89]. Nello schema RAID 6 si effettuano due distinti calcoli della parit che sono
memorizzati in blocchi separati su dischi differenti. Cos, un sistema RAID 6 i cui dati
utente richiedono N dischi consiste di N + 2 dischi.
La Figura 6.8g illustra lo schema. P e Qsono due differenti algoritmi di verifica dei
dati. Uno dei due TOR esclusivo utilizzato nei RAID 4 e 5. Laltro un algoritmo indipendente di verifica dei dati. Questo rende possibile rigenerare i dati anche se due dischi
contenenti i dati utente si guastano.
Il
vantaggio del RAID 6 consiste nel Talrissi ma disponibilit dei dati. Per provocare
la perdita dei dati, dovrebbero guastarsi tre dischi nellarco del tempo medio di riparazio
ne (MTTR, mean time to repair). Daltro canto, il RAID 6 incorre in una sostanziale pe
nalit di scrittura, dato che ciascuna di queste riguarda due blocchi di parit. I benchmark
[EISC07] mostrano come un controllore RAID 6 possa soffrire di un calo superiore al 30%
nelle prestazioni complessive di scrittura se paragonato alTimplementazione di un RAID
5. Lc prestazioni in lettura di RAID 5 e RAID 6 sono simili.
La Tabella 6.4 riassume un confronto dei 7 livelli.

6.2 RAID

Tabella 6.4

C onfro n to di RAID.

Livello Vantaggi

Svantaggi

A pplicazioni

La prestazione in I /O viene migliorata no- Il guasto di un solo drive pu


tevolm cntc dal !estensione del carico di causare la perdita di tutti idaI /O su pi canali e dischi
ti di un array
Non vi alcun overhead dovuto al calcolo
di parit
Progetto m olto semplice
Facile da implementare

Produzione ed editing di video


Editing di immagini
Applicazioni di preparazione
alla stampa
Applicazioni di qualsiasi tipo
che richieda elevata banda

II 10.0% di ridondanza dei dati significa che Overhead di disco pi elevanon e necessaria una ricostruzione in caso to rispetto a tu tti i tipi di
di guasto di disco, ma solo una copia del RAID (100%) - inefficienza
disco di sostituzione
In alcune circostanze RAID 1 pu tollerare
molteplici guasti simultanei del disco
Il pi semplice progetto di sottosistemi di
memorizzazione RAID

Contabilit
Stipendi del personale
Servizi finanziari
Qualunque applicazione che
richiede una disponibilit
molto elevata

Possibilt di trasferire dati a velocit elevatissime


Pi elevata la velocit di trasferimento
dei dati, migliore il rapporto tra i dischi
di dati e i dischi E C C
Il progetto del controllore relativamente
semplice rispetto a RAID 3 ,4 e 5

Elevatissima velocit di trasferimento da- La velocit di transazione arti in lettura


riva nel migliore dei casi a
Elevatissima velocit di trasferimento da- eguagliare quella di un singoti in scrittura
lo disco (se gli alberi sono
Il guasto di un disco ha impatto trascura- sincronizzati)
bile sul throughput
II progetto del controllore
Un basso rapporto tra i dischi EC C (di pa- piuttosto complesso
rit) e i dischi di dati vuol dire elevata efficienza

Elevatissima velocit di transazione di da- Il progetto del controllore Non esiste implementazione
ti in lettura
abbastanza complesso
commerciale
Un basso rapporto tra i dischi EC C (di pa- Peggiori velocit di transa- / non commerciabile
rit) c i dischi di dati vuol dire elevata effi- zione e velocit di trasfericienza
m ento globale in scrittura
Ricostruzione dei dati diffici
le e inefficiente in caso di gua
sto del disco

Elevatissima velocit di transazione in Progetto del controllore pi


scrittura
complesso
Basso rapporto tra i dischi E C C (parit) e Difficile da ricostruire in caso
i dischi di dati com porta elevata efficienza di guasto del disco (rispetto
Buona velocit di trasferimento globale a RAID di livello 1)

OfFreiuiaelevatissimatollerenzadierrore Progettodel controllore pi Soluzione perfetta per lapplinei dati ed in grado di tollerare pi gua- complesso
cazione di servizi critici
sti simultanei nei drive
Elevatissimo overhead del
controllore per lelaborazione
degli indirizzi di parit

Rapporto molto elevato dei Non esistono implementaziodischi E C C rispetto ai dischi ni commerciali / non comdi dati con parole corte - inef- merciabilc
ficienza
Elevatissimi costi iniziali - richiede velocit di trasferimento troppo elevate da giu
stificare
Produzione di video e streaminglive
Editing di immagini
Editing di video
Applicazioni di preparazione
alla stampa
Qiialunque applicazione che
richieda un alto throughput

Server di file e di applicazioni


Server di banche dati
Server di rete, di posta elettronica e news server
Server intranet
Livello RAID pi versatile

211

212

Sistema di elaborazione Capitolo 6 - Memoria esterna

Tabella 6.5

D ischi o ttic i.

CD

Compact disk. Disco non cancellabile che memorizza informazioni audio digitalizzate.
Il
sistema standard adotta dischi da 12 cm e pu registrare pi di 60 minuti di musica.

C D -R O M

Compact disk read-only memory. Disco non cancellabile per la memorizzazione di dati.
Il sistema standard adotta dischi da 12 cm e pu contenere pi di 650 Mbyte.

C D -R

C D rcordablc. Simile a un CD-RO M . Lutente pu scrivervi dati solo una volta.

C D -RW

C D rewritable. Simile a l u CD-RO M . Lutente pu cancellare e riscrivere sul disco pi volte.

D VD

Digital video disk. Tecnologia per produrre rappresentazioni digitali compresse di informazio
ni video c grandi volumi di altri dati digitali. Vengono usati dischi da 8 c da 12 cm di diametro,
con una capacit fino a 17 Gbyte. Il DVD standard di sola lettura (DVD-ROM ).

D VD -R

DVD recordable. Simile a un D VD-ROM . Lutente pu scrivere sul disco solo ima volta.
Si pu usare solo una faccia del disco

DVD-RW

DVD rewritable. Simile a un DVD-ROM . Lutente pu scrivere sul disco pi volte. Si pu


usare solo una faccia del disco

Blu-Ray DVD

Disco video ad alta definizione. Ha una capacit molto pi elevata rispetto ai DVD, in quanto
utilizza un laser (blu-viola) a 405 nm. Un solo strato su una faccia pu contenere fino a 25
Gbyte.

6.3

Memorie ottiche

Nel 1983 venne introdotto uno tra i prodotti di consumo di maggiore successo di tutti i
tempi: il sistema audio digitale CD {compact disk). LI CD e un disco non cancellabile chc
pu memorizzare pi di 60 minuti di informazioni audio su un lato. Lampio successo
commerciale del CD permise lo sviluppo di una tecnologia di memorizzazione su disco ot
tico a basso costo che ha rivoluzionato Timmagazzinamento dei dati su calcolatore.
Commentiamo brevemente gli svariati sistemi di dischi ottici esistenti (Tabella 6.5).

Compact Disk
CD-ROM
CD audio e CD-ROM (compact disk read-only memory) condividono una tecnologia si
milare. La principale differenza risiede nel fatto che i lettori CD-ROM sono meno leviga
ti e presentano dispositivi di correzione degli errori per assicurare la correttezza del trasfe
rimento dati tra disco e processore. Il supporto fsico dei due dischi formato da una
resina (policarbonato) e le informazioni registrate digitalmente (musica o dati) sono stam
pate come una serie di microscopici pozzetti (pit) sulla superficie di policarbonato. Questo
avviene, prima di tutto, creando un disco master tramite un laser ad alta intensit con una
fine messa a fuoco. Il master viene usato, a sua volta, come matrice per stampare le copie
sul policarbonato. La superficie picchiettata viene poi ricoperta con una superficie alta
mente riflettente, solitamente di alluminio o oro. Tale superficie risplendente protetta dal
la polvere e dalle striature tramite un rivestimento acrilico sul quale pu essere serigrafata
unetichetta.
Le informazioni vengono recuperate tramite un laser a bassa potenza. Il raggio laser
penetra il policarbonato mentre un motore fa ruotare il disco (Figura 6.10). Lintensit del
la luce riflessa del laser cambia quando incontra un pit. Specificamente, se il raggio laser ca-

6.3 Mem orie ottiche

Acrilico
protettivo

213

E tichetta

III
I< I I
I I I
I I I

Policarbonato

Alluminio

Y I Y

I
I

T rasm issione/ricezione laser


Figura 6.10

Come funziona il CD.

de su un pit, che presenta una superficie in qualche modo ruvida, la luce si diffonde e vie
ne riflessa alla sorgente una bassa intensit. Le aree tra i pit sono dette land, e presentano
una superficie liscia, che riflette a intensit pi alta. Il cambiamento tra pit e land viene ri
levato da un fotoscnsorc e convertito in segnale digitale. Il sensore testa la superficie a in
tervalli regolari. Linizio o la fine di un pit rappresentano un 1; quando laltezza non varia
viene registrato uno .
Ricordiamo che, sui dischi magnetici, le informazioni sono registrate in tracce con
centriche. Con il sistema pi semplice a velocit angolare costante il numero di bit per trac
cia e costante. Un incremento nella densit si ottiene con la registrazione a zone multiple,
nella quale la superficie divisa in un certo numero di zone, e le zone pi lontane dal cen
tro contengono pi bit rispetto alle zone pi vicine. Sebbene questa tecnica incrementi la
capacit, non ancora ottimale.
Per ottenere una maggior capacit, CD e CD-ROM non organizzano le informazioni
su tracce concentriche, ma su una traccia a spirale che inizia vicino al centro e si svolge ver
so il bordo del disco. I settori in prossimit dellestremit del disco sono della stessa lun
ghezza di quelli interni. Cos, le informazioni sono impacchettate uniformemente sul di
sco in segmenti della stessa dimensione e questi vengono letti alla stessa velocit ruotando
il disco a velocit variabile. I pit sono poi letti dal laser a velocit lineare costante. Il disco
ruota pi lentamente per gli accessi sul lato esterno rispetto a quelli vicini al centro. Cos,
la capacit di una traccia e il ritardo rotazionale aumentano in prossimit del bordo del di
sco. La capacit di memorizzazione di un CD-ROM circa di 680 MB.
I
dati su un CD-ROM sono organizzati come una sequenza di blocchi. Un tipico for
mato, mostrato nella Figura 6.11, consiste dei seguenti campi.
Sync: identifica linizio di un blocco e consiste di un byte di soli 0, 10 byte di tutti 1
e un byte di soli 0.
Header: lintestazione contiene lindirizzo del blocco e il byte del modo. Il modo 0
specifica un campo dati vuoto; il modo 1 specifica luso di un codice a correzione di

214

Sistema di elaborazione Capitolo 6 - Memoria esterna

...

P F ... rF rF
JrJf

12 byte

4 bvte

SYNC

II

D ati

...

ECC
stratific ato
:X
: : :: V

2048 byte

^ 288 byte w

Dati

< L -E C C >

2352 byte

Figura 6.11

Formato dei blocchi del CD-ROM.

errore di 288 byte e 2048 byte di dati; il modo 2 specifica 2336 byte di dati utente sen
za codice a correzione di errore.
Data: dati utente.
Auxiliary: dati utente aggiuntivi nel modo 2, in luogo del codice a correzione di er
rore.
A causa della velocit lineare costante, gli accessi casuali diventano pi difficili. Individuare
uno specifico indirizzo implica il movimento della testina in una generica arca, aggiu
stando la velocit di rotazione e leggendo lindirizzo, eseguendo poi altri aggiustamenti per
trovare e accedere allo specifico settore.
Il
CD-ROM risulta appropriato per la distribuzione di grandi quantit di dati a un
gran numero di utenti. Poich la spesa del processo iniziale di scrittura elevata, non ade
guato alle applicazioni individuali. Rispetto ai tradizionali dischi fissi, il CD-ROM pre
senta due vantaggi.
Il disco ottico insieme alle informazioni memorizzate pu essere massicciamente re
plicato con una spesa modesta, a differenza del disco magnetico. 1dati di un disco ma
gnetico devono essere riprodotti copiando un disco alla volta utilizzando due drive.
Il disco ottico e rimovibile, quindi utilizzabile per gli archivi. La maggior parte dei di
schi magnetici non rimovibile. Le informazioni sui dischi fissi devono essere copiate
su nastro prima chc il disco possa essere usato per memorizzare nuove informazioni.
Gli svantaggi del CD-ROM sono i seguenti.
E un dispositivo di sola lettura e non pu essere aggiornato.
Il suo tempo daccesso, circa mezzo secondo, molto superiore rispetto ai dischi ma
gnetici.
CD registrabili

Per applicazioni nelle quali richiesta una o poche copie di un insieme di dati stato svi
luppato il CD wrile-once read-many, noto come CD registrabile, CD-R [CD recordable).
Qiiesti dischi sono preparati in modo da poter essere riscritti una volta mediante un rag

6.3 Mem orie ottiche

215

gio laser di modesta intensit. Cos, tramite un controllore di disco leggermente pi co


stoso rispetto a quello del CD-ROM, !utente pu tanto scrivere, una sola volta, sul disco
quanto leggerlo.
Il
supporto dei CD-R simile ma non identico a quello di CD o CD-ROM. In que
sti ultimi, le informazioni sono registrate incidendo dei pozzetti sulla superficie del mez
zo, che cambia le sue caratteristiche riflettenti. Nei CD-R, il supporto include uno strato
di colorante che viene usato per cambiare le propriet di riflessione ed e attivato da un la
ser ad alta intensit. Il disco risultante pu essere letto dalle unit CD-R o CD-ROM.
Il
disco ottico CD-R utile per la memorizzazione di archivi di documenti e file, e
fornisce una registrazione permanente di grandi volumi di dati.
CD N s c r v i b i l i

Il disco ottico CD-RW pu essere ripetutamente scritto e sovrascritto, cos come un di


sco magnetico. Tra i vari tentativi, lunico approccio puramente ottico che si dimostra
to interessante e detto cambiamento di fase. Il disco a cambiamento di fase utilizza un ma
teriale che presenta diverse caratteristiche di riflessione nelle due fasi: uno stato amorfo, nel
quale le molecole hanno una disposizione casuale che riflette poco la luce, e uno stato cri
stallino, nel quale il supporto ha una superficie liscia molto riflettente. Un raggio laser pu
cambiare la fase del materiale. Il principale svantaggio di questi dischi che, a lungo an
dare, il materiale perde permanentemente le sue propriet. Gli attuali materiali possono es
sere cancellati anche un milione di volte.
Il
CD-RW ha lovvio vantaggio di poter essere riscritto e dunque usato come un ve
ro supporto di memorizzazione secondario. In questo senso, in competizione con il di
sco magnetico. Inoltre il disco ottico ha tolleranze costruttive molto meno severe di quel
le per i dischi magnetici ad alta capacit. Dunque, presentano unaffidabilit pi elevata e
un tempo di vita pi lungo.

DVD (Digital Versatile Disk)


Con il capace DVD, lindustria elettronica ha finalmente trovato un sostituto accettabile
del nastro analogico VHS. Il DVD ha di fatto sostituito il nastro utilizzato nei videoregi
stratori, VCR (video cassette recorder) e, cosa pi importante in questa trattazione, sostituir
il CD-ROM nei personal computer e nei server. Il DVD porta il video nellera digitale. Esso
contiene film con incredibile qualit di immagine e come i CD audio, che le unit DVD
possono comunque leggere, supporta laccesso casuale. I DVD sono fino a sette volte pi
capienti di un CD-ROM, quindi i giochi per PC diventano pi realistici e il software edu
cativo incorpora informazioni.
La maggiore capacit dei DVD rispetto ai CD dovuta a tre differenze (Figura 6.12).
1. I bit sono impacchettati pi fittamente. La spaziatura tra i cicli della spirale di un CD
di 1,6 |Im e la minima distanza tra i pit lungo la spirale di 0,834 |Im. U DVD uti
lizza un laser con una lunghezza donda pi breve e raggiunge una spaziatura tra i ci
cli di 0,74 e una distanza tra pit di 0,4 . Il risultato lincremento della capa
cit che raggiunge 4,7 GB.
2. Il DVD adotta un secondo strato di pit e land posto sopra il primo strato. Un DVD
doppio strato presenta uno strato semiriflettente al di sopra dello strato riflettente e,

216

Sistema di elaborazione Capitolo 6 - M emoria esterna

E tic h e tta

S tra to p ro te ttiv o
(acrilico)
S tra to rifle tte n te
(allum inio)

Tl laser si concentra
sui pit di policarbonato
di fronte allo strato riflettente

S u b s tra to di p o licarb o n ato


(plastica)

(a) CD-ROM - Capacit 682 MB


S u b stra to d i c a rb o n a to , lato 2
S tra to sem irifle tten te. Iato 2
S u b stra to di c a rb o n a to , lato 2
S tra to co m p letam en te rifle tte n te , Iato 2
S tra to c o m p letam en te rifletten te, lato I
S u b stra to di ca rb o n a to , lato 1

Il laser si concentra
sui pit di uno strato un lato per volta.
II disco va girato per leggere laltro lato.

S tra to s em irifle tten te, lato 1


S u b stra to di c a rb o n a to , lato 1

(b) DVD-ROM, doppio lato, doppio strato - Capacit 17 GB

Figura 6 .1 2

C D -R O M c D V D -R O M .

variando la messa a fuoco, i laser dei DVD possono leggere separatamente i due stra
ti. In pratica questa tecnica raddoppia la capacit del disco, portandola a circa 8,5 GB.
La riflessivit pi bassa del secondo strato limita la sua capacit e pertanto non si ot
tiene un vero e proprio raddoppio.
3. Il DVD-ROM pu essere a doppio lato, mentre i dati su un CD sono registrati su un
solo lato. La sua capacit sale fino a 17 GB.
Cos come per i CD, ci sono DVD versione registrabile c di sola lettura (Tabella 6.5).

Dischi ottici ad alta definizione


I dischi ottici ad alta definizione sono stati progettati per memorizzare video ad alta defi
nizione e contenere moiri pi dati rispetto ai normali DVD. Grazie a un laser con una lun
ghezza donda pi corra, nella gamma blu-viola, stato possibile raggiungere una densit
di bit molto pi elevata. I pit di dati, che costituiscono gli 1 e gli 0 digitali, sono pi pie-

6.4 Nastri magnetici

2,11 //ni

CD

m m
Y;
;X;???!xv'SSBBS'
i I P i f .,, WM 'm S trato di dati
lam pada
I -and
>
SmbeS P
% m m
.. >..
's: *
1.2uni
>< , - .
P it ^
' rP -' /flmwm, /xo
Jraecir

0,58
Blu-ray

m m m ,l |
*

"y-y >'y'

^>.?>!

lunghezza d onda
del laser
= 780 nm

.**-*
' .W .

/ * < < *: * -v*


i* > *;.v.+..*.

1,32 uni

. -.*

'e.*..<>

T
0,1 m

-v - ~

>*.>**.*.

. t > w . < 4K*. r . i r ' * * *


j < 4 * * * . m .ii
Mi** M* 4**>* V-Hi-X-Ht-*** K M mi'*

ft<* < v r *M > V..


A
< m v . y<y

Wv*'/

AW-W,. .A A* .< CK

4* m

it

A-AA
-

405 nm
0,6 ni

<** wm * m*

***- *>V-W
X<*>**
>*> **. wx ooew.
:
xe ****< *

Figura 6.13

650 nm

Caratteristiche della memoria ottica.

coli nei dischi ottici ad alta definizione che nei DVD, in conseguenza della diversa lun
ghezza donda del laser.
Inizialmente furono lanciati sul mercato due formati di disco, ovvero due tecnologie,
concorrenti: lH D DVD e il DVD Blu-ray. L HD DVD5 pu contenere fino a 15 GB in
un singolo strato su una sola faccia. Il Blu-ray posiziona lo strato di dati sul disco molto pi
vicino al laser (si veda Timmagine a destra dei diagrammi nella Figura 6.13), permettendo
cos una messa a fuoco pi definita e una minor distorsione, e quindi anche pit e tracce pi
piccoli. I Blu-ray hanno una capacit fino a 25 GB per faccia. Ne sono disponibili tre ver
sioni: sola lettura (BD-ROM), registrabili (BD-R) e riscrivibili (BD-RE).

6.4

Nastri magnetici________________________________

I sistemi a nastro utilizzano la stessa tecnica di scrittura e di registrazione dei sistemi a di


sco. Il supporto un nastro di poliestere flessibile (simile a quello usato in alcuni capi di
abbigliamento) ricoperto di materiale magnetizzabile. Il rivestimento pu consistere in par
ticelle di metallo puro con leganti speciali o pellicole di metallo placcate. Lunit nastro
analoga ai consueti sistemi di registrazione su nastro. La larghezza del nastro varia da 0,38

5 Non pi commercializzato alla data di pubblicazione di questo volume (N.d.T.).

217

218

Sistema di elaborazione Capitolo 6 - Memoria esterna

a 1,27 cm. I nastri vengono solitamente confezionati in bobine aperte che devono essere
infilate in un albero. Oggi, praticamente tutti i nastri sono alloggiati in cartucce.
I
dati sono strutturati in tracce parallele longitudinali. I primi sistemi usavano gene
ralmente 9 tracce. Questo rendeva possibile memorizzare un byte alla volta, con un bit ad
dizionale di parit come nona traccia. In seguito, comparvero sistemi chc impiegavano 18
o 36 tracce, corrispondenti a una parola di memoria. Qiicsto tipo di registrazione detta
parallela. La maggior parte dei sistemi moderni usa invece la cosiddetta registrazione seriale, nella quale i dati sono disposti come una sequenza di bit lungo ciascuna traccia, co
s come avviene nei dischi magnetici. Analogamente al disco, i dati vengono letti e scritti
in blocchi contigui, detti recordfisici. I blocchi sul nastro sono separati da spazi detti interrecordgap. Cos come il disco, il nastro viene formattato al fine di migliorare la localizza
zione dei record fisici.
La tecnica tipica di registrazione adottata nei nastri seriali detta registrazione a ser
pentina. In questa tecnica, quando i dati sono in fase di registrazione, il primo insieme di
bit viene memorizzato per Finter lunghezza del nastro. Qiiando si raggiunge la fine del na
stro, le testine vengono spostate per registrare una nuova traccia, e il nastro viene ancora
una volta registrato per la sua intera lunghezza, ma in direzione opposta. Il processo con
tinua, avanti e indietro, finch il nastro pieno (Figura 6.14a). Per aumentare la velocit,
la testina di lettura-scrittura in grado di leggere e scrivere da 2 a 8 tracce adiacenti in mo
do simultaneo. I dati vengono ancora memorizzati in modo seriale lungo le singole trac
ce, ma i blocchi in sequenza sono memorizzati su tracce adiacenti, come suggerito dalla
Figura 6.14b.
I nastri sono dei dispositivi ad accesso sequenziale. Sc la testina del nastro viene posi
zionata sul primo record, allora per leggere TuItimo record necessario leggere tutti i re
cord, uno alla volta. Se la testina posizionata oltre il record richiesto, occorre riavvolge
re in parte il nastro e iniziare la lettura da Ti in avanti. A differenza del disco, il nastro in
movimento solo durante le operazioni di lettura e di scrittura.
Contrariamente al nastro, il disco viene detto dispositivo ad accesso diretto in quan
to non deve leggere in sequenza tutti i settori per raggiungere quello desiderato, ma deve
solo attendere i settori chc si frappongono alTintcrno di una traccia c pu effettuare accessi
successivi a ogni traccia.
II nastro magnetico fu il primo tipo di memoria secondaria c viene ancora ampia
mente usato come membro della gerarchia di memoria di costo inferiore c di velocit pi
bassa.
Nel settore dei supporti a nastri la tecnologia pi diffusa al giorno doggi c rappre
sentata da un sistema a cartucce noto come linear tape-open (LTO), cio nastro aperto in
linea. Gli LTO sono stati sviluppati alla fine degli anni 90 come alternativa open source
ai vari sistemi dominanti sul mercato. La Tabella 6.6 indica i parametri propri delle varie
generazioni di LTO.

6.4 Nastri magnetici

Traccia 2
T raccia 1
Traccia O
Direzione
di lettura/scrittura

Lato inferiore del nastro


(a) Lettura e scrittura a serpentina

Traccia 3 |

12

Traccia 2 j 3

Traccia 1 T

Traccia 0

| 11

16

20

fi?

14

13

17

Direzione di movimento del nastro


(b) Disposizione dei blocchi per i sistemi che leggono/scrivono quattro tracce simultaneamente

Figura 6.14

C a ra tte ristic h e di un tip ic o n a stro m a g n e tic o .

D ata di rilascio
C apacit com pressa
Velocit di trasferim ento com pressa
(M B/s)

LTO 2

LTO-3

LTO-4

LTO-5

LTO-6

2000

2003

2005

2007

TBA

TBA

200 G B

400 G B

800 G B

1600 G B

3,2 T B

6,4 T B

40

80

160

240

360

540

4880

7398

9638

13300

384

512

O !

D ensit lineare (b it/m m )

LTO -I

896

Lunghezza del s u p p o rto (m)

609 m

609 m

680 m

820 m

Larghezza del su p p o rto (cm)

1,27

1,27

1,27

1,27

16

16

N um ero d i tracce

N um ero di tracce lette /sc ritte sim ul


taneam ente

219

220

Sistema di elaborazione Capitolo 6 M emoria esterna

6.5

Letture e siti web consigliati

[JAC008] tratta in modo esauriente il tema dei dischi magnetici. [MEE96a] fornisce
una buona trattazione della tecnologia di registrazione dei sistemi a disco e a nastro.
[MEE96b] si concentra sulle tecniche di memorizzazione dei dati per i sistemi a disco c a
nastro. [COMEOO] rappresenta un breve ma istruttivo articolo sulle attuali tendenze del
la memorizzazione su disco magnetico. [RADD08] e [ANDE03] forniscono unanalisi pi
recente della tecnologia di memorizzazione dei dischi magnetici.
Un ottimo saggio sulla tecnologia RAID, scritto dai suoi ideatori, c [CHE94]. Una
panoramica pi dettagliata offerta da [FRIE96]. In [CHEN96] si pu trovare un otti
mo confronto delle prestazioni dellarchitcttura RAID.
[MARC90] fornisce uneccellente panoramica del campo della memorizzazione ot
tica. Uninteressante trattazione della sottostante tecnologia di registrazione c lettura si tro
va in [MANS97].
[RSC03] presenta una completa panoramica su tutti i tipi di sistemi di memoria
esterna, con una discreta quantit di dettagli tecnici su ciascuno, cos come avviene in
[KHUR01]. [HAEU07] approfondisce in modo dettagliato largomento degli LTO.
ANDE03 D. Anderson, You Dont KnowJack About Disks. in A C M Queue,
giugno 2003.
CHEN94 P. Chen, E. Lee, G. Gibson, R. Katz, e D. Patterson, RAID: HighPerformance, Reliable Secondary Storage in AC Ai Computing Surveys,
giugno 1994.
CHEN96 Chen, S. e Towslcy, D. A Performance Evaluation of RAID
Architectures IEEE Transaction on Computers, ottobre 1996.
COMEOO R. Comerford, Magnetic Storage: The Medium that Wouldnt Die
in IEEE Spectrum, dicembre 2000.
FRIE96 M. Friedman, RAID Keeps Going and Going and ... in IEEE
Spectrum, aprile 1996.
HAUE08 B. Hacusscr, et al. IBM System Storage Tape Library Guidefor Open
Systems. IBM Rcdbook SG24-5946-05, ottobre 2007. ibm.com/redbooks
JA C 008 B. Jacob, S. Ng, e D. Wang, AIemory Systems: Cache, DRAAl, Disk.
Boston, Morgan Kaufmann, 2008.
KHUROI A. Khurshudov, The Essential Guide to Computer Data Storage, Upper
Saddle River (NJ), Prentice Hall, 2001.
MANS97 M. Mansuripur c G. Sincerbox, Principles and Techniques o f Optical
Data Storage in Proceedings ojthe IEEE, novembre 1997.
MARC90 A. Marchant, Optical Recording, Reading, MA, Addison-Wesley, 1990.
MEE96a C. Mee e E. Daniel, a cura di, Magnetic Recording Technology, New
York, McGraw-Hill, 1996.

6.6 Parole chiave, domande di revisione e problem i

MEE96b C. Mcc e E. Daniel, a cura di, Magnetic Storage Handbook, New York,
McGraw-Hill, 19%.
RADD08 Radding, A. Small Disks, Big Specs. Storage Magazine, settembre 2008.
ROSC03 W. Rosch, Winn L. Rosch Hardware Bible1Indianapolis (IN), Sams, 1999.

Siti web consigliati:


Optical Storage Technology Association: buona fonte di informazioni sulle tec
nologie di memorizzazione ottica c sui produttori, assieme a un vasto elenco di link
di rilievo.
Sito web LTO: informazioni sulla tecnologia LTO e sui venditori autorizzati.

6.6

Parole chiave, domande di revisione e


problemi

Blue-ray
CD
CD-R
C D-ROM
CD-RW
cilin d ro
dati a striscia
dischi fissi
dischi rim ovibili
disco magnetico
DVD
DVD-R

DVD-ROM
DVD-RW
floppy disk

gap
land
latenza rotazionale
memoria ottica
nastro magnetico
piatto
pit
RAID
registrazione a pi zone

settore
tempo di accesso
tempo di posizionamento
tempo di trasferimento
testina
traccia
velocit angolare
costante (CAV)
velocit lineare costante
(CLV)

Domande di revisione
6 .1 Qiiali sono i vantaggi nell utilizzo di un substrato di vetro nei dischi magnetici?
6.2 Come vengono scritti i dati sui dischi magnetici?
6.3 Come vengono letti i dati dai dischi magnetici?
6.4 Spiegate la differenza tra un semplice sistema a velocit angolare costante e un si
stema di registrazione a zone multiple.
6.5 Definite i termini traccia, cilindro e settore.
6.6 Qual c la tipica dimensione di un settore su disco?

221

222

Sistema di elaborazione Capitolo 6 - Memoria esterna

6.7 Fornite una definizione dei termini tempo di posizionamento, ritardo rotazionale, tem
po daccesso e tempo di trasferimento.
6.8 Quali caratteristiche comuni sono condivise dai livelli RAID?
6.9 Fornite una definizione sintetica dei sette livelli RAID.
6.10 Spiegate la locuzione striped data.
6 .11 Come si ottiene Ia ridondanza nei sistemi RAID?
6.12 Nel contesto RAID, qual c la differenza tra accesso parallelo e accesso indipendente?
6.13 Qual la differenza tra velocit angolare costante e velocit lineare costante?
6.14 Perch i DVD hanno maggiore capacit dei CD?
6.15 Spiegate la registrazione a serpentina.

Problemi
6.1 Si consideri un disco con N tracce numerate da 0 a N - 1 con settori distribuiti ca
sualmente e uniformemente. Vogliamo calcolare il numero medio di tracce attra
versate durante un posizionamento.
a. Per prima cosa, calcolate la probabilit di un posizionamento di lunghezzaj quan
do la testina e posizionata sulla traccia t. Suggerimento: questo problema richie
de di determinare il numero totale di combinazioni, tenendo conto che tutte le
posizioni della traccia perla destinazione del posizionamento sono equiprobabili.
b. Calcolate la probabilit di un posizionamento di lunghezza K. Suggerimento:
questo implica la somma su tutte le possibili combinazioni di movimenti delle
K tracce.
c. Calcolate il numero medio di tracce attraversate dal posizionamento, utilizzan
do la formula per il valore atteso
N- 1

EM = / Xl M*= il
/ =0
n
.i.
. .j . V
( + 1)
Suggerimento: utilizzate Ie identit
l~
2
;= 1

V o

: JL j
/=1

n(n+){2n+\)
6

d. Dimostrate che per grandi valori di N i il numero medio di tracce attraversate dal
posizionamento si avvicina a N / 3.
6.2 Fornite la definizione dei seguenti termini per un sistema a disco:
ts = tempo di posizionamento; tempo medio per posizionare la testina sulla traccia
r = velocit di rotazione del disco, in giri al secondo
n = numero di bit per settore
N = capacit di una traccia, in bit
tA = tempo per accedere a un settore
Sviluppate una formula per tA in funzione degli altri parametri.

6.6 Parole chiave, domande di revisione e problem i

6.3 Considerare un disco magnetico con 8 superfici, 512 tracce per superficie e 64 set
tori per traccia. La dimensione dei settori di l KB. Il tempo di posizionamento c
di 8 ms, il tempo di passaggio da traccia a traccia di 1,5 ms e lalbero ruota a 3600
rpm.6 Lc tracce successive in un cilindro possono essere lette senza movimento del
la testina.
a. Qiial la capacit del disco?
b . QiKil il tempo medio di accesso? Assumete chc il file venga salvato in settori suc
cessivi e in tracce di cilindri successivi, a partire dal settore 0, traccia 0, del cilin
dro i.
c. Stimate il tempo necessario a trasferire un file di 5 iVlB.
d. Qiial la massima velocit di trasferimento in burst?
6.4 Considerate un disco a piatto unico con i seguenti parametri: velocit di rotazione
7200 rpm; numero di tracce per faccia del piatto 30.000; numero di settori per trac
cia 600; tempo di posizionamento 1 ms ogni cento tracce attraversate. Supponete
chc venga richiesto al disco di accedere a un settore casuale di una traccia casuale e
che la testina parta dalla traccia 0.
a. Qual c il tempo medio di posizionamento?
b. Qiial c la latenza rotazionale media?
c. Qiial il tempo di trasferimento per un settore?
d. Qiianto il tempo medio totale necessario a soddisfare la richiesta?
6.5 C e differenza tra registrazioni fisiche e registrazioni logiche. Una registrazione
logica una raccolta di elementi di dati collegati concepiti come unit concettua
le, indipendentemente da come o dove linformazione salvata. Una registrazione
fsica unarea adiacente di memorizzazione definita dalle caratteristiche del di

spositivo di memorizzazione c del sistema operativo. Assumete di avere un disco nel


quale ogni registrazione fisica contiene circa trenta registrazioni logiche da 120 by
te. Calcolate quanto spazio di disco (in settori, tracce e superfici) sia necessario per
memorizzare 300.000 registrazioni logiche se il disco a settore fisso, con 512 by
te/settore, con 96 settori/traccia, 110 tracce per superficie c 8 superfici utilizzabili.
Ignorate i record di intestazione e gli indici di traccia e supponete chc le registra
zioni non possano estendersi su due settori.
6.6 Considerate un disco chc ruota a 3600 rpm. Il tempo di posizionamento per muo
vere la testina tra tracce adiacenti di 2 ms. Ci sono 32 settori per traccia, memo
rizzati linearmente dal settore 0 al settore 31. La testina vede i settori in ordine
ascendente. Assumete chc la testina di lettura/scrittura sia posizionata allinizio del
settore 1 sulla traccia 8. Il buffer della memoria principale abbastanza grande da
contenere una traccia intera. I dati vengono trasferiti tra le locazioni del disco leg
gendo dalla traccia sorgente nel buffer della memoria principale c poi scrivendo i
dati dal buffer alla traccia richiesta.

6 rpm sta per giri al m inuto (N.d.T.).

223

224

Sistema di elaborazione Capitolo 6 - M emoria esterna

a. Quanto tempo occorre per trasferire il settore 1 della traccia 8 al settore 1 della
traccia 9?
b. Quanto tempo occorre per trasferire tutti i settori della traccia 8 ai settori cor
rispondenti della traccia 9?
6.7 Dovrebbe essere chiaro chc lo striping del disco pu migliorare la velocit di trasfe
rimento dati quando la striscia piccola rispetto alla dimensione della richiesta di
I/O. Dovrebbe anche essere chiaro che RAID 0 fornisce prestazioni migliori ri
spetto a un singolo disco molto capiente, perch le molteplici richieste di I/O pos
sono essere gestite in parallelo. Tuttavia, in questultimo caso, necessario lo striping
del disco? Ossia, lo striping del disco migliora le prestazioni nella velocit delle ri
chieste di I/O rispetto a un comparabile array di dischi senza striping?
6.8 Considerate un RAID a 4 drive da 200 GB ciascuno. Qual c la capacit di memo
rizzazione di dati disponibile per ognuno dei livelli di RAID (0, 1, 3,4, 5 c 6)?
6.9 In im compact disc laudio viene convertito in digitale con campionamento a 16 bit
e viene utilizzato un flusso di byte a 8 bit per la memorizzazione. Uno schema sem
plice per la memorizzazione dei dati, detto registrazione diretta, consisterebbe nel
rappresentare un 1 con un land e uno 0 con un pit. Ogni byte viene invece esteso a
un numero binario a 14 bit. Risulta chc esattamente 256 (28) su un totale di 16.134
(214) numeri a 14 bit hanno almeno due zeri tra ogni coppia di 1; tali numeri sono
i numeri selezionati per lespansione da 8 a 14 bit. 11sistema ottico riconosce la pre
senza di 1 individuando una transizione da pit a land o vicecersa, mentre riconosce
gli 0 misurando le distanze tra i cambiamenti dintensit. Questo schema presup
pone chc gli 1 non siano in successione e per questa ragione si utilizza la codifica a
14 bit. Il vantaggio di un tale schema il seguente. Per un dato diametro del raggio
laser esiste una dimensione minima di pit, indifferentemente dal modo in cui i bit
sono rappresentati. In uno schema di questo tipo la dimensione minima del pit me
morizza 3 bit, perch ogni 1 seguito da almeno due 0. Nella registrazione diretta
10 stesso pit potrebbe memorizzare soltanto un bit. Tenendo in considerazione sia
11 numero di bit memorizzati per ogni pit sia lestensione dei numeri da 8 a 14 bit,
qual lo schema che memorizza il maggior numero di bit e con quale fattore?
6.10 Progettate una strategia di backup per un sistema di calcolo. Una possibilit consi
ste nellutilizzo di dischi esterni plug-in, chc costano $150 per ogni drive da 500 GB.
Una seconda possibilit consiste nellacquisto di un dispositivo a nastro del costo
di $2500 e di nastri da 400 GB al costo di $50 ciascuno (prezzi rilevati nel 2008).
Una diffusa strategia di backup prevede la presenza di due insiemi di dispositivi di
backup e richiede di scrivere sui backup in alternanza in modo che in caso di gua
sto del sistema durante il backup la versione precedente resti intatta. E anche pre
visto un terzo set di dispositivi al di fuori del sistema, scambiato periodicamente con
uno dei due set interni.
a. Supponete di dovere eseguire il backup di 1 TB (1000 GB) di dati. Qanto co
sterebbe il sistema di backup a disco?
b. Qiianto costerebbe un sistema di backup a nastro per 1 TB di dati?
c. Qiiale dimensione dovrebbe avere ogni backup per rendere pi conveniente il si
stema a nastro?
d. Qyalc tipo di strategia di backup favorisce i nastri?

Capitolo 7

Input/Output

Punti chiave

Larchitettura di I/O di un sistema di elaborazione progettata per costituire un


mezzo sistematico di controllo dellinterazione con lcstcrno e per fornire al siste
ma operativo le informazioni necessarie a gestire in modo efficace 1attivit di I /O.

Lc tre principal i tecniche sono: I / O da programma, nel quale TI/O avviene sot
to il diretto e continuo controllo del programma che richiede loperazione; I/O
driven (guidato da interrupt), nel quale un programma esegue un comando di
I/O c poi continua la propria esecuzione, finch non viene interrotto dallhardwarc di I/O che gli segnala la fine delloperazione richiesta; accesso diret
to alla m em oria (DMA, direct memory access), nel quale un processore specializ
zato prende il controllo delloperazione di I/O per spostare un grande blocco di
dati.

Due significativi esempi di interfacce esterne di I/O sono FireWire e InfiniBand.

226

Sistema di elaborazione Capitolo 7 - Input/Output

I / O S ystem D e s ig n T o o l

ltre al processore e ai moduli di memoria, il terzo elemento chiave di un sistema di


elaborazione linsieme delle unit di I/O. Qiieste si interfacciano con il bus di si
stema e controllano uno o pi dispositivi periferici. Un modulo di I/O non una sempli
ce connessione meccanica di un dispositivo con il bus di sistema, ma contiene circuiti che
eseguono funzioni di comunicazione tra la periferica e il bus.
Il
lettore si potrebbe chiedere perche le periferiche non siano direttamente connes
se al bus di sistema. Le ragioni sono le seguenti.

Esiste una gran variet di periferiche con diversi metodi di operare. Sarebbe poco con
veniente incorporare nel processore la logica necessaria a controllare tutta una schie
ra di dispositivi.
La velocit di trasferimento dati delle periferiche e generalmente di gran lunga infe
riore rispetto a quella della memoria o del processore. Dunque, e poco pratico utiliz
zare il bus di sistema ad alta velocit per comunicare direttamente con una periferica.
D altro canto, il tasso di trasferimento dati di alcune periferiche supcriore a quello
della memoria o del processore. Ancora una volta, la mancata corrispondenza, se
non gestita correttamente, sarebbe causa di inefficienza.
Le periferiche molte volte usano formati di dati e lunghezze di parola differenti ri
spetto al calcolatore al quale sono connesse.
, quindi, richiesta la presenza di un modulo di I/O che riveste due principali funzioni
(Figura 7.1):
interfaccia verso il processore e la memoria tramite il bus di sistema o un punto di
diramazione;
interfaccia verso uno o pi dispositivi periferici tramite connessioni su misura.
Iniziamo il capitolo con una sintetica trattazione dei dispositivi esterni, seguita da una pa
noramica di struttura e funzione dei moduli di I/O. Considereremo, poi, i vari modi in cui
le funzionalit di I/O possono essere eseguite in coopcrazione con il processore e con la
memoria: linterfaccia interna di I/O. Infine, esamineremo linterfaccia esterna, posta tra
il modulo di I/O c il mondo esterno.

7.1

Dispositivi esterni

Le operazioni di I/O sono effettuate tramite un vasto assortimento di dispositivi che


scambiano dati tra lambiente esterno e il calcolatore. I dispositivi esterni si connettono al
calcolatore tramite i moduli di I/O (Figura 7.1). Tali collegamenti sono usati per lo scam
bio di controllo, stato e dati tra i moduli e i dispositivi. Qiicsti sono spesso detti disposi
tivi periferici (peripheral device) o, pi semplicemente, periferiche {peripheral).

7.1 Dispositivi esterni

Figura 7.1

227

Generico modulo di I/O.

Possiamo classificare i dispositivi esterni in tre grandi categoric:


dispositivi decifrabili dall'uomo: adatti alla comunicazione con lucente del cal

colatore;
dispositivi decifrabili dalla macchina: adatti alla comunicazione con le apparec

chiature;
dispostivi di comunicazione: adatti alla comunicazione con i dispositivi remoti.

Esempi di disposicivi decifrabili dall uomo sono i terminali video (VDT, video display ter
minal) e le scampanti. Esempi di dispositivi decifrabili dalla macchina sono i dischi ma
gnetici, i nastri e i sensori e gli attuatori usati nella robotica. Si noci chc in queseo capico
lo sciamo considerando i siscemi a disco e a nascro come disposicivi di I/O, mencre nel
Capitolo 6 li avevamo considerati dispositivi di memoria. Da un punto di vista funziona
le, tali dispositivi fanno parte della gerarchia di memoria. Da un punto di vista scruccurale, sono concrollaci da moduli di I/O e dunque vanno consideraci in queseo capicolo.
I
disposicivi di comunicazione consencono al calcolacore di scambiare daci con siscemi remoci chc possono essere disposicivi decifrabili dalluomo (come un cerminale), da
una macchina o da un aler calcolacore.
In cermini molco generali, la nacura di un disposicivo esterno indicata nella
Figura 7.2. Linterfaccia verso il modulo di I/O ha forma di segnali di controllo, di dati e
di stato. I segnali di controllo determinano la funzione che il dispositivo eseguir, come in
viare dati al modulo di I/O (INPUT o READ), acquisire dati dal modulo di I/O (O U T
PUT o WRITE), riportare lo stato o eseguire alcune particolari funzioni di controllo del
dispositivo (come il posizionamento di una cescina del disco). I dati sono insiemi di bic da
scambiare con un modulo di I/O. I segnali di stato indicano lo sraco del disposicivo. Un

228

Sistema di elaborazione Capitolo 7 - Input/O utput

Figura 7.2

Diagramma a blocchi di una periferica.

esempio costituito dagli stati READY/NOT-READY che mostrano se il dispositivo sia


pronto per il trasferimento dati.
La logica di controllo del dispositivo controlla le sue operazioni su comando del mo
dulo. Il trasduttore converte i dati dalla forma elettrica ad altre forme denergia durante lout
put c viceversa durante linput. Tipicamente, il trasduttore dispone di un buffer che man
tiene temporaneamente i dati in corso di trasferimento; la dimensione comune per il buffer
va dagli 8 ai 16 bit.
Linterfaccia tra il modulo di I/O e il dispositivo esterno sar esaminata nel
Paragrafo 7.7. Linterfaccia tra il dispositivo esterno e lambiente esula dagli scopi di que
sto testo, ma comunque ne saranno presentati numerosi, brevi esempi.

Tastiera/Monitor
Il pi comune mezzo dinterazione tra calcolatore c utente lo schema tastiera/monitor.
Lutente fornisce linput attraverso la tastiera. Gli ingressi vengono trasmessi al calcolato
re e possono anche essere visualizzati sul monitor. Inoltre, il monitor mostra i dati forniti
dal calcolatore.
Lunit fondamentale di scambio e il carattere. A ciascun carattere corrisponde una
specifica codifica, tipicamente di 7 o 8 bit. Il codice pi comunemente usato per il testo
!International Reference Alphabet, noto come IRA.1 Ciascun carattere di questo codice

1 IRA definita nella IT U -T Reccomendation T.50 ed era precedentemente conosciuta come InternationalAlphabet
Number 5 (IA5). La versione americana di IRA corrisponde allAmerican Standard Codefor Informalion Interchange
(ASCII).

7.2 M oduli di I/O

rappresentato da un unico codice binario di 7 bit; possono, quindi, essere rappresentati


128 differenti caratteri. I caratteri sono di due tipi: stampabili c di controllo. I caratteri
stampabili sono quei caratteri alfabetici, numerici e speciali chc possono essere stampati
su carta o mostrati su schermo. Alcuni caratteri di controllo riguardano la stampa o la vi
sualizzazione dei caratteri - un esempio il cosiddetto ritorno a capo, CR (carriage re
turn) - , altri riguardano le procedure di comunicazione.
Per linput da tastiera, il rilascio di un tasto da parte deHutcntc genera l u i segnale elet
trico chc viene interpretato dal trasduttore nella tastiera e tradotto nel corrispondente co
dice IRA. In output, i caratteri del codice vengono trasmessi a un dispositivo esterno da
un modulo di I/O . Il trasduttore presso il dispositivo interpreta tale codice c invia i segnali
elettrici richiesti al dispositivo di output per mostrare il carattere in questione o per ese
guire la funzione di controllo richiesta.

Drive del disco


11 controllore (drive) del disco contiene i circuiti che gestiscono lo scambio di dati, segnali
di controllo e di stato con il modulo di I/O e i circuiti che controllano il meccanismo di
lettura-scrittura. In un sistema a testine fisse, il trasduttore in grado di effettuare la con
versione tra lo stato magnetico della superficie del disco e i bit nel buffer del dispositivo
(Figura 7.2). Un disco a testina mobile deve anche essere in grado di muovere il braccio in
senso radiale sulla superficie del disco.

7.2

Moduli di I/O

Funzioni dei moduli


Le funzioni e i requisiti principali dei moduli di I/O ricadono nelle seguenti categorie:
controllo e temporizzazione
comunicazione con il processore
comunicazione con i dispositivi
buffering dei dati
rilevazione degli errori
Il processore pu comunicare con uno o pi dispositivi esterni secondo schemi tempora
li imprevedibili che dipendono dalle richieste di I/O del programma. Le risorse interne,
quali la memoria centrale e il bus di sistema, devono essere condivise tra un certo nume
ro di processi, incluso Tl/O dei dati. Dunque, la funzione di I /O include requisiti di con
trollo e temporizzazione, per coordinare il flusso del traffico tra le risorse interne e i di
spositivi esterni. Ad esempio, il controllo del trasferimento dati da un dispositivo esterno
al processore pu implicare la seguente sequenza di passi.
1. Il processore interroga il modulo di I/O per controllare lo stato del dispositivo
connesso.
2. Il modulo di I/O restituisce lo stato del dispositivo.

229

230

Sistema di elaborazione Capitolo 7 - Input/Output

3. Sc il dispositivo pronto a trasmettere, il processore richiede il trasferimento dei da


ti, per mezzo di un comando rivolto al modulo di I/O.
4. Il modulo di I/O ottiene un unit di dati (ad esempio, 8 o 16 bit) dal dispositivo
esterno.
5. 1dati vengono trasferiti dal modulo di I/O al processore.
Se il sistema utilizza un bus, allora ogni interazione tra il processore c il modulo di I/O im
plica uno o pi arbitraggi del bus.
Il
precedente scenario semplificato illustra anche come il modulo di I/O debba co
municare con il processore e con il dispositivo esterno. La comunicazione con il pro
cessore implica i seguenti punti.
Decodifica del comando: il modulo di I /O accetta i comandi del processore, gene

ralmente inviati come segnali sul bus di controllo. Ad esempio, un modulo di I/O per
un controllore di disco potrebbe accettare i seguenti comandi: READ SECTOR,
WRITE SECTOR, SEEK sul numero di traccia c SCAN dellID del record. Gli ul
timi due comandi includono ciascuno un parametro che viene inviato sul bus dati.
Dati: i dati vengono scambiati tra il processore e il modulo di I/O tramite il bus dati.
Resoconto dello stato: poich le periferiche sono lente, importante conoscere lo

stato del modulo di I/O. Ad esempio, quando il processore richiede di inviare dati a
un modulo di I/O, quest'ultimo potrebbe non essere pronto in quanto sta ancora la
vorando sul precedente comando di I/O. Ci pu essere riportato tramite un segnale
di stato, come ad esempio BUSY c READY. Ci possono essere anche segnali di sta
to per evidenziare varie condizioni di errore.
Riconoscimento dellindirizzo: cos come le parole di memoria, ogni dispositivo

ha un indirizzo. Diuique un modulo di I/O deve riconoscere gli indirizzi delle peri
feriche che controlla.
D altra parte, il modulo di I/O deve essere in grado di eseguire la comunicazione con i
dispositivi. Qiiesta implica comandi, informazioni di stato c dati (Figura 7.2).
Un compito essenziale dei moduli di I/O il buffering dei dati. La necessit di tale fun
zione evidenziata nella Figura 2.11. Mentre il tasso di trasferimento dati tra memoria cen
trale e processore relativamente alto, per molte periferiche questo tasso di ordini di gran
dezza inferiore e varia notevolmente. 1dati provenienti dalla memoria centrale vengono inviati
a raffica a un modulo di I/O dove vengono dapprima bufferizzati e poi inviati alla periferica
alla velocit di quest ultima. In direzione opposta, i dati vengono bufferizzati in modo da non
intasare la memoria con unoperazione di trasferimento lenta. Dunque, il modulo di I/O de
ve essere in grado di operare sia alla velocit del dispositivo sia alla velocit della memoria.
Analogamente, se il dispositivo di I/O opera a una velocit pi elevata rispetto alla velocit
della memoria, allora il modulo di I/O esegue loperazione di buffering richiesta.
Infine, i moduli di I/O sono spesso responsabili del rilevamento di errori e del con
seguente resoconto al processore. Una classe di errori include i malfunzionamenti mecca
nici ed elettrici (ad esempio, Iniccppamento della carta o il deterioramento di una traccia
del disco). Unaltra classe consiste nei cambiamenti non intenzionali delle stringhe di bit
quando trasmesse dal dispositivo al modulo. Un semplice esempio di tecniche di rileva
mento degli errori basato sulluso di un bit di parit per ogni carattere. Ad esempio, il co
dice IRA rappresenta i caratteri con 7 bit di un byte e l ottavo viene impostato in modo

7.2 M oduli di I/O

In terfaccia verso il bus di sistem a

In terfaccia verso il dispositivo esterno

Linee dati

Linee indirizzi -4

Linee di controllo ^

Figura 7.3

Diagramma a blocchi di un m odulo di I/O.

chc il byte contenga un numero pari (parit pari, even parity) o dispari (parit dispari, odd
parity) di bit posti a I. Il modulo di I/O controlla la parit dei byte ricevuti per determi
nare se sia avvenuto un errore.

Struttura dei moduli di I/O


I moduli di I/O variano in modo considerevole per complessit c numero di dispositivi
esterni chc controllano. In questa sede, ci limiteremo a fornirne una descrizione somma
ria, mentre un dispositivo specifico, Intel 82C55A, sar descritto nel Paragrafo 7.4. La
Figura 7.3 fornisce l u diagramma a blocchi di un modulo di I/O collegato al resto del cal
colatore tramite linee di segnale (ad esempio, le linee del bus di sistema). I dati trasferiti
verso e dal modulo sono bufferizzati in uno o pi registri. Ci possono anche essere dei re
gistri di stato che forniscono le informazioni sullo stato attuale. Un registro di stato pu
anche funzionare da registro di controllo, per accettare le informazioni di controllo det
tagliate provenienti dal processore. I circuiti del modulo interagiscono con il processore
tramite lince di controllo. Il processore utilizza queste linee per inviare i comandi al mo
dulo di I/O. Alcune linee di controllo possono essere usate dal modulo di I/O (ad esem
pio, per i segnali di arbitraggio e di stato). Il modulo deve anche essere in grado di rico
noscere e generare gli indirizzi dei dispositivi che controlla. Ciascun modulo di I/O ha il
proprio indirizzo oppure, se controlla pi di un dispositivo esterno, un insieme di indiriz
zi. Infine, il modulo di I/O contiene linterfaccia con ciascun dispositivo controllato.
Un modulo di I/O opera per consentire al processore di vedere un vasto campo di
dispositivi in maniera semplice c pu fornire un ampio spettro di funzioni: pu nascon
dere i dettagli di temporizzazione, i formati e gli aspetti elettromeccanici dei dispositivi
esterni per consentire al processore di emettere semplici comandi di lettura e scrittura e,
al limite, di apertura o chiusura dei file. Nella sua forma pi semplice, un modulo di I/O
pu anche lasciare visibili al processore le operazioni interne dei dispositivi come, ad esem
pio, il riavvolgi mento del nastro.

231

232

Sistema di elaborazione C apitolo 7 - Input/Output

I
moduli di I/ O che si occupano della maggior parte dei carico di elaborazione, pre
sentando uninterfaccia di alto livello al processore, sono solitamente detti canali di I / O
(I/O channel) o processori di I/O (I/O processor). I moduli elementari che richiedono un
controllo dettagliato sono invece detti controllori di I/O (I/O controller) o controllori
del dispositivo (device co?itroller). 1 controllori di I/O sono solitamente presenti sui mi
crocomputer, mentre i canali di I/O sono generalmente adottati nei mainframe.

7.3

I/O da programma

Per le operazioni di I/O sono possibili tre tecniche. NellI/O da programma, i dati ven
gono scambiati tra processore e modulo di I/O. Il processore esegue un programma che
gli attribuisce il controllo diretto per loperazione di I/O, inclusa la lettura dello stato del
dispositivo, linvio di un comando di lettura o scrittura e il trasferimento dei dati. Dopo
aver inviato un comando al modulo, il processore deve attendere finch !operazione di I/O
risulta completa. Se il processore pi rapido del modulo di I/O, si tratta di uno spreco
di tempo di processore. Nclll/O interrupt driven (cio guidato dagli interrupt) il pro
cessore invia un comando di I/O, prosegue nellesecuzione di altre istruzioni e viene in
terrotto dal modulo quando questultimo ha completato il proprio lavoro. In queste due
tecniche, il processore responsabile del prelievo dei dati dalla memoria centrale, duran
te le operazioni di input, e della scrittura dei dati in memoria centrale, durante quelle di
output. Lalternativa nota come accesso diretto alla memoria o semplicemente DMA
(idirect memory access). In questo caso, il modulo di I/O e la memoria centrale scambiano
i dati direttamente, senza il coinvolgimcnto di processore.
La Tabella 7.1 indicala relazione tra queste tecniche. In questo paragrafo esploriamo
la prima e le altre saranno trattate nei prossimi paragrafi.

Panoramica dell'l/O da programma


Quando il processore sta eseguendo un programma e incontra unistruzione correlata con
lI/O , esso esegue listruzione inviando un comando al modulo di I/O appropriato.
NellI/O da programma, il modulo eseguir lazione richiesta e imposter i bit appropria
ti nel suo registro di stato (Figura 7.3). Il modulo non intraprende ncssunaltra azione per
allertare il processore. In particolare, esso non interrompe il processore. quindi respon
sabilit del processore il controllo periodico dello stato del modulo di I/O finch non vie
ne rilevato il completamento delloperazione.
Per spiegare questa tecnica, la consideriamo dapprima dal punto di vista dei coman
di di I /O inviati dal processore, e poi dal punto di vista delle istruzioni di I/O eseguite dal
processore.
Tabella 7.1

Tecniche di I/O.

Trasferim ento I/O -m cm o ria


tram ite processore
'Irasferim ento d ire tto -I/O m em oria

Senza in terru p t

C on in terru p t

I /O da programma

I/O guidato da interrupt


Accesso diretto alla memoria (DMA)

7.3 1/0 da programma

Comandi di I/O
Per eseguire unistruzione di I/O, il processore invia un indirizzo (che specifica il modulo
di I/O e il dispositivo esterno coinvolti) c un comando di I/O. Ci sono quattro tipi di co
mandi di I/O che i moduli possono ricevere quando sono indirizzati dal processore.
Controllo: utilizzato per attivare una periferica e comunicarle cosa fare. Ad esempio,
possibile ordinare a ununit nastro di riavvolgersi o di spostarsi avanti di un record.
Questi comandi sono costruiti su misura per ogni particolare tipo di periferica.
Test: adottato per testare le condizioni di stato dei moduli di I/O e delle sue perife

riche. Il processore vorr conoscere se una certa periferica sia accesa e disponibile per
luso, oppure se la pi recente operazione di 1 /0 sia stata completata o se siano av
venuti degli errori.
Lettura: provoca lottenimento di dati dalla periferica da parte del modulo e la loro

scrittura in un buffer (il registro dati nella Figura 7.3). Il processore pu poi ottene
re i dati imponendo al modulo di I/O di scriverli sul bus dati.
Scrittura: impone al modulo di prendere i dati dal bus e di trasmetterli alla periferica.

La Figura 7.4a fornisce un esempio di I/O da programma per leggere un blocco di dati da
un dispositivo periferico (ad esempio, un record su nastro) e archiviarli in memoria. I da
ti vengono letti una parola alla volta. Per ogni lettura, il processore resta in uno stato di at
tesa che termina soltanto quando la parola stata scritta nel registro dati del modido di
I/O. Il diagramma di flusso evidenzia come questa tecnica presenti lo svantaggio di esse
re eccessivamente lenta e di tenere occupato, senza alcuna necessit, il processore.

Istruzioni di I/O
Nelll/O da programma, si riscontra una strettissima corrispondenza (quasi una corri
spondenza biunivoca) tra le istruzioni di I/O e i comandi che il processore invia ai moduli
di I/O per eseguirle. La forma delle istruzioni dipende dal modo in cui i dispositivi ester
ni vengono indirizzati.
Solitamente, troviamo numerose periferiche connesse al sistema tramite moduli di
I/O e a ciascuna viene assegnato un identificatore o un indirizzo univoco. I comandi d i I/O
inviati dal processore contengono lindirizzo del dispositivo desiderato. Cos, i moduli
devono interpretare il bus degli indirizzi per determinare a chi rivolto il comando.
Qiiando processore, memoria centrale e I/O condividono un bus comune, ci sono
due modalit di indirizzamento: memory mapped e separato. Nel T l/O memory mapped,
non ce distinzione tra lo spazio degli indirizzi delle locazioni di memoria c dei dispositi
vi di 1/0. Il processore tratta i registri dei moduli di I/O come locazioni di memoria e uti
lizza le stesse istruzioni macchina per accedere alla memoria o ai dispositivi di I/O. Cos,
per esempio, con 10 linee di indirizzo si pu supportare un totale di 210 = 1024 locazioni
di memoria c indirizzi di I/O, in qualsiasi combinazione.
Questo meccanismo necessita di una sola linea di lettura e una di scrittura, sul bus.
In alternativa, il bus pu essere dotato di unulteriore linea di comando chc specifica se lin
dirizzo si riferisce a una locazione di memoria o a una periferica. In tal modo lo spazio de
gli indirizzi pu essere interamente disponibile per la memoria oppure per /. Questa
volta, con 10 linee di indirizzo, il sistema pu supportare 1024 locazioni di memoria op-

233

234

Sistema di elaborazione Capitolo 7 - Input/Output

Invia il com ando


eli lettura
I
al m odul .

Invia il comi
di lettura
al modulo

Leggi io sialo
d e l m odulo

->i/o

CPU
F a qualcos'altro

Leggi lo stalo
del m odulo

Invia il com ando


di lettura
d el blocco
al m odulo

CPU

DM A

F a qualcosaltro

Interrupt

Interrupt
DM A -> CPU

Non
pronto

Istruzione successiva
Condizione
d errore

Veritlca stato.
Pronto

Condizione
d errore

(c) A ccesso diretto alla m em oria (DM A)

Pronlo

Uggi

Leggi
la parola
del m odulo

la parola
del m odulo

Scrivi
la parola
in m em oria

Scrivi
CPU - M emoria

Fatto?

la parola
in m em oria

Fatto?

Istruzione successiva
(a) I/O da programma

Figura 7.4

Verifica siato.

Istruzione successiva
(b) I/O interrupt-driven

Tre tecniche per l'in pu t di un blocco di dati.

pure 1024 indirizzi di I/O. Poich gli indirizzi di memoria sono discinti da quelli di I/O,
si parla di I/O separato.
La Figura 7.5 mette a confronto queste due versioni di I/O da programma. La Figura
7.5a mostra come linterfaccia di un singolo dispositivo di input, quale una tastiera, possa
apparire a un programmatore che utilizza /O memory mapped. Si assuma un indirizzo a
10 bit, una memoria a 512 bit (locazioni da 0 a 511) e (non oltre) 512 indirizzi di I/O (lo
cazioni da 512 a 1023). Due indirizzi sono dedicati agli input da tastiera da un particolare
terminale. Lindirizzo 516 si riferisce al registro dati e lindirizzo 517 si riferisce al registro
di stato, che funge anche da registro di controllo per ricevere i comandi del processore. Il
programma dellesempio legge un byte dalla tastiera e lo pone in un registro del processore. Si noti che il processore rimane in loop fino a quando il byte del dato e disponibile.
Con lI/O separato (Figura 7.5b), le porte di I/O sono accessibili solo tramite spe
ciali comandi di I/O che attivano le linee di comando di I/O del bus.
La maggior parte dei processori dispone di svariate istruzioni di riferimento alla me
moria, ma nel caso di I/O separato, ci possono essere solo poche istruzioni di I/O. Dunque,
lui vantaggio dellI/O memory mapped consiste nel poter utilizzare questo vasto repertorio
di istruzioni, consentendo una programmazione pi efficiente. Uno svantaggio consiste in
vece nel maggior utilizzo di prezioso spazio dindirizzamento in memoria. Entrambe le ver
sioni sono di uso comune.

7.4 I/O interrupt driven

0
Registro d i in p u t d a ti da tastiera

516

0
Registro di stato e controllo della testiera

517
t 1 = P ronto
0 = O ccupato

IN D IR IZ Z O

200
202

Im postato a 1 per iniziare la lettu ra

ISTR U ZIO N E
OPERA NDO
I Il
Load AC
517
Store AC
517
Load AC
B ranch if Sign = 0
202
Load AC
516

C O M M EN TO
C arica neUaccum ulatore
Inizia la lettu ra della tastiera
Legge il byte di stato
Sta in loop fino a quando pronto
C arica un byte di dati

(a) I/O m em ory m apped

IN D IR IZZ O
200
201

ISTR U ZIO N E
OPERA NDO
Load I/O
5
5
Test I/O
B ranch Not Ready
201
5
In

CO M M EN TO
Inizia la lettu ra della tastiera
C ontrolla il com pletam ento
Sta in loop fino al com pletam ento
C arica un byte di dati

(b) I/O separato

Figura 7.5

7.4

I/O memory mapped e separato.

I/O interrupt driven

Il problema d ell!/O da programma c chc il processore deve attendere per un lungo periodo
di tempo prima chc il modulo di competenza sia pronto per la ricezione o la trasmissione
dei dati. Frattanto, il processore deve verificare ripetutamente lo stato del modulo di I/O,
con conseguente, netto degrado delle prestazioni deUmtero sistema.
Lalternativa e che il processore invii un comando di I/O a un modulo e poi prose
gua nello svolgimento di altro lavoro. Il modulo di I/O interromper il processore quan
do pronto allo scambio di dati. Il processore esegue poi il trasferimento dei dati c quin
di riprende lelaborazione interrotta.
Vediamo come questo avviene. Per linput, dal punto di vista del modulo di I/O, il
modulo di I/O riceve un comando READ dal processore e procede quindi alla lettura dei
dati provenienti da una delle sue periferiche. Una volta che i dati sono depositati nei suoi
registri, il modulo invia al processore un interrupt tramite il bus di controllo e poi atten-

235

236

Sistema di elaborazione Capitolo 7 - Input/Output

de finche il processore gli richiede i dati. Qiiando viene effettuata la richiesta, il modulo
scrive i dati sul bus dati ed quindi pronto per unaltra operazione.
Dal punto di vista del processore, per linput il processore invia un comando READ
e poi prosegue facendo qualcosaltro (ad esempio, potrebbe eseguire istruzioni di un altro
programma). Al completamento di ogni istruzione, il processore controllalcventuale pre
senza di interrupt (Figura 3.9). Qiiando rileva un interrupt inviato dal modulo di I/O, il
processore salva il contesto esecutivo (program counter e registri) del programma cor
rente ed elabora linterrupt. In questo caso, il processore legge i dati provenienti dal mo
dulo di I/O e li scrive in memoria. Poi il processore ripristina il contesto esecutivo e ri
prende !esecuzione interrotta.
Si osservi la Figura 7.4b che mostra luso di I/O guidato da interrupt per la lettura di
un blocco di dati e la si confronti con la Figura 7.4a. Pur risultando maggiormente effi
ciente rispetto allI/O da programma, in quanto elimina le attese non necessarie, anche
questa strategia richiede molto tempo al processore, attraverso il quale devono comunque
passare i dati che vanno dalla memoria al modulo di I/O o viceversa.

Elaborazione degli interrupt


Si consideri pi dettagliatam ente il ruolo del processore nelFl/O interrupt driven.
Loccorrenza di un interrupt scatena un certo numero di eventi, sia nellhardware del pro
cessore sia nel software. La Figura 7.6 mostra una tipica sequenza. Quando una periferica
completa unoperazione di I/O, avviene la seguente sequenza di eventi hardware.
1. Il dispositivo invia un interrupt al processore.
2. Il processore conclude lesecuzione dellistruzione corrente prima di rispondere all interrupt, come indicato nella Figura 3.9.
3. Il processore controlla gli interrupt determinandone lcventuale presenza e invia un
segnale di riconoscimento al dispositivo chc ha inviato linterrupt. Il riconoscimen
to consente al dispositivo di rimuovere il proprio segnale di interrupt.
4. Il processore si prepara a trasferire il controllo alla routine di interrupt. Per iniziare,
deve salvare le informazioni che saranno necessarie per riprendere lesecuzione del
programma corrente dal punto in cui sopraggiunto !interrupt. Informazioni mi
nime richieste sono: (a) lo stato del processore, contenuto in un registro chiamato
Program Status Word (PSW ) e (b) la locazione della prossima istruzione da esegui
re, contenuta nel program counter (PC). Queste informazioni possono essere poste
in cima alla pila di sistema.2
5. Il processore scrive nel PC lindirizzo della prima istruzione della routine di gestio
ne dellintcrrupt considerato. A seconda del l'architettura del calcolatore e della pro
gettazione del sistema operativo, ci pu essere un singolo programma, un program
ma per ciascun tipo di interrupt o un programma per ciascun dispositivo e ciascun
tipo di interrupt. Se presente pi di una routine di gestione dcllinterrupt, il pro
cessore deve determinare quale invocare. Questa informazione pu essere inclusa nel

2L 'A ppendice IOA tra tta Ic op erazio ni su lle pile.

7.4 I/O interrupt driven

H ard w are

____ ____

Software

Il controllore di una periferica


o un altro dispositivo
hardw are solleva un interrupt
Salvataggio delle restanti
informazioni di stato
del processo
II processore completa
! esecuzione
d ellistruzione corrente
Interrupt del processo

ra s
Ripristino
delle informazioni
di stato del processo
Il processore pone PSW
e PC in cim a alla pila
Ripristino
dei vecchi PSW e PC
Il processore scrive
il nuovo valore nel PC
a seconda d ellinterrupt

Figura 7.6

Semplice elaborazione di interrupt.

segnale di interrupt, oppure il processore pu dover inviare una richiesta al disposi


tivo che ha sollevato linterrupt per ottenere ima risposta contenente le informazio
ni richieste.
Dopo che il PC ha assunto lindirizzo della routine di interrupt, il processore inizia ad ese
guire la fase di fetch di un nuovo ciclo istruzione. Poich il fetch c determinato dal conte
nuto del PC, il risultato che il controllo viene trasferito al programma di gestione dellinterrupt. Lesecuzione di questo programma d i seguenti risultati.
6. Il PC e il PSW relativi al programma interrotto sono stati salvati sulla pila di siste
ma. Comunque, esistono ulteriori informazioni considerate parte dello stato di un
programma in esecuzione. In particolare necessario conservare anche il contenuto
dei registri del processore in quanto potrebbero essere utilizzati (e quindi modifica
ti) dalla routine di interrupt. Tipicamente, questa routine comincer a copiare i con-

237

238

Sistema di elaborazione Capitolo 7 - Input/Output

T - M

Pila di
controllo

JV + 1

T
-H Y - L t

mmz

counter

J
Y

In iz io

Routine
di servizio

dcllinicmipi
Y + L

Riiom o

./ "
:''^ x':: g
I r - -V/1* 1
Stack

': -:>>>

Processore

N
N +1

Programma utente

M em oria centrale

(a) L in te rru p t avviene dopo


u n 'istru zio n e a ll ind irizzo N
Figura 7.7

<b) R itorno d a irin tc rru p t

Cambiamenti in memoria e nei registri causati da un interrupt.

tenuti dei registri sulla pila. La Figura 7.7a mostra un semplice esempio in cui un pro
gramma utente viene interrotto dopo listruzione alla locazione N. 1contenuti dei re
gistri pi lindirizzo dellistruzione successiva (Ar+ 1) vengono posti in cima alla pi
la. Lo stack pointer (il puntatore alla cima della pila) viene aggiornato per puntare alla
nuova cima della pila, e il PC viene aggiornato per puntare allinizio della routine di
servizio dellinterrupt.
7. Lelaborazione dellinterrupt include un esame delle informazioni sullo stato delle
operazioni di I/O o di altri eventi che hanno causato linterrupt. Esso pu anche com
portare linvio di Lilteriori comandi o segnali di riconoscimento al dispositivo di I/O.

7.4 I/O interrupt driven

8. Quando lelaborazione delTinterrupt e completa, i valori dei registri salvati vengono


recuperati dalla pila e riportati nei registri (ad esempio, si veda la Figura 7.7b).

9. Latto finale il ripristino dei valori di PSW e PC a partire dalla pila. Come risul
tato, la successiva istruzione eseguita sar quella del programma precedentemente
interrotto.
Si noti limportanza del salvataggio completo delle informazioni di stato del programma
interrotto in vista della ripresa. Infatti Tinterrupt non una routine invocata dal pro
gramma, ma pu avvenire in qualsiasi istante e quindi in qualunque punto dclTcsccuzione
di un programma utente. La sua occorrenza imprevedibile. Indubbiamente, come ve
dremo nel prossimo capitolo, i due programmi possono non avere alcunch in comune e
possono appartenere a due diversi utenti.

Problemi di progettazione
NclTimplementazione dellI/O interrupt driven sorgono due problemi di progettazione.
Primo, dato chc ci sar quasi sempre pi di un modulo di I/O, come pu il processore de
terminare quale dispositivo abbia sollevato l interrupt? Secondo, se avvengono pi inter
rupt, come fa il processore a decidere quale elaborare?
Si consideri dapprima lidentificazione del dispositivo e i quattro tipici approcci al
problema:
pi linee di interrupt
interrogazione software
daisy chain (interrogazione hardware, vettorializzata)
arbitraggio del bus (vettorializzato)
Lapproccio pi diretto al problema prevede pi linee di interrupt tra il processore e i mo
duli di I/O. Tuttavia, non e pratico dedicare molte linee di bus agli interrupt. Di conse
guenza, anche in presenza di pi linee, ciascuna sar connessa a pi moduli di I/O. Dunque,
per ogni linea deve essere impiegata una delle altre tre tecniche.
Unalternativa Tinterrogazione software {softwarepoll). Qiiando il processore ri
leva un interrupt, salta a una routine di servizio il cui compito interrogare i moduli di I/O
per determinare quale abbia causato Tinterrupt. Linterrogazione potrebbe utilizzare una
linea di comando separata (ad esempio, TEST_I/0). In questo caso, il processore asseri
sce TEST_I/O c scrive lindirizzo di un modulo di I/O sul bus indirizzi. Il modulo di I/O
risponde positivamente se ha innescato un interrupt. In alternativa, i moduli di 1/0 po
trebbero contenere un registro di stato indirizzabile. In tal caso il processore legge il regi
stro di stato dei moduli per identificare il modulo che ha sollevato Tinterrupt e poi salta
alla routine di servizio specifica per quel dispositivo.
Lo svantaggio delTinterrogazionc software la perdita di tempo. Una tecnica pi effi
ciente, detta daisy chain, consiste in uninterrogazione hardware. Un esempio di tale con
figurazione mostrato nella Figura 3.26. Tutti i moduli di I/O condividono una linea di
richiesta di interrupt comune. La linea di riconoscimento delTintcrrupt passa attraverso
tutti i moduli. Il processore chc rileva un interrupt invia a sua volta un interrupt di rico
noscimento. Questo segnale si propaga attraverso i moduli di I/O fino a quando giunge a
quello richiedente che, generalmente, risponde posizionando una parola sul bus dati.

239

240

Sistema di elaborazione Capitolo 7 - Input/Output

Qiiesta parola viene detta vettore ed costituita o dallindirizzo del modulo di I/O o da
qualche altro tipo di identificatore. In entrambi i casi, il processore utilizza il vettore co
me puntatore per lappropriata routine di servizio del dispositivo. Ci evita la necessit di
eseguire dapprima una generica routine di servizio dcllintcrrupt. Qiiesca tecnica chia
mata interrupt vettoriale.
Esiste un altro modo di utilizzare !interrupt vettoriale: larbitraggio del bus. Con
questa tecnica, un modulo di I/O deve ottenere il controllo del bus prima di poter asseri
re la linea di richiesta dellinterrupt. Cos, solo un modulo alla volta pu abilitare la linea.
Qiiando il processore rileva !interrupt, risponde sulla linea di riconoscimento dcllintcrrupt. A questo punto il modulo richiedente scrive il proprio vettore sulla linea dati.
Le tecniche precedenti servono a identificare il modulo di I/O richiedente e forniscono
anche un modo per assegnare le priorit quando pi di un dispositivo sta per richiedere il
servizio di interrupt. In presenza di pi linee, il processore non fa altro che considerare la li
nea di interrupt con la priorit pi alta. Nel caso dellinterrogazione software, l ordine nel
quale i moduli vengono interrogati determina la loro priorit. Analogamente, lordine in
cui i moduli sono collegati lungo la daisy chain a determinarne la priorit. Infine, larbi
traggio del bus pu utilizzare uno schema di priorit, come detto nel Paragrafo 3.4.
Affrontiamo, ora, due esempi concreti.

Controllore di interrupt Intel 82C59A


Intel 80386 ha una linea di richiesta interrupt (INTR, interrupt request) e una per la con
cessione (INTA, interrupt acknowledge). Per poter realizzare vari schemi di priorit, que
sto processore solitamente configurato con un arbitro di interrupt esterno: 82C59A. Le
periferiche sono connesse a 82C59A, che a sua volta collegato al processore.
La Figura 7.8 mostra !utilizzo dellarbitro esterno per collegare pi moduli di I/O al
processore. Un singolo 82C59A pu gestire fino a 8 moduli. Se necessario il controllo di
pi moduli si pu adottare una disposizione a cascata che ne gestisce fino a 64.
Lunica responsabilit di 82C59A la gestione degli interrupt. Larbitro riceve le ri
chieste di interrupt da parte dei moduli connessi, determina quale interrupt abbia la prio
rit pi alta e lo segnala al processore tramite la linea INTR. Il processore accorda il di
ritto aHinterruzione mediante la linea INTA. Qiiesto impone a 82C59A di scrivere le
appropriate informazioni sul bus dati. Il processore pu quindi procedere a elaborare linterrupt e a comunicare direttamente con il modulo di I/O per leggere o scrivere dati.
82C59A programmabile nel senso che 80836 determina lo schema di priorit da
usare impostando una parola di controllo in un registro di 82C59A. Sono possibili le se
guenti modalit di interrupt.
Annidamento totale: le richieste di interrupt vengono ordinate per priorit da 0

(IR) a 7 (IR7).
A rotazione: in alcune applicazioni, alcuni dispositivi hanno la stessa priorit di in

terrupt. In questa modalit, al dispositivo appena servito, viene assegnata la priorit


pi bassa nel suo gruppo.
Maschera speciale: consente al processore di inibire gli interrupt provenienti da

determinati dispositivi.

7.4 I/O interrupt driven

C o n tro llo re

slave
d i in te rr u p t
82C 59A

C o n tro llo re
sla v e
di in te rr u p t
8 2C 5 9A

C o n tro llo re
sla v e
di in te rr u p t
82C 59A

Figura 7.8

Uso del controllore Intel 8 2 C 5 9 A .

C o n tro llo re
m a s te r
d i in te r r u p t
82C 59A

P ro cesso re
80386

241

242

Sistema di elaborazione Capitolo 7 - Input/Oulput

Bus dati
8086

A lim entazione- 1r

-T

indirizzo AO
linee A l
le ttu ra h-* Logica di
scrittu ra controllo
reset l

chip I^
select {

--

(a) D iagram m a a blocchi

Figura 7.9

(b) Disposizione dei contatti

I n te r fa c c ia p r o g r a m m a b ile di p e r if e r ic a Intel 8 2 C 5 5 A .

Interfaccia programmabile di periferica Intel 82C55A


Come esempio di modulo utilizzato per /O da programma e guidato dagli interrupt,
consideriamo FIntel 82C55A. Si tratta di un modulo di I/O a uso generale e a chip singolo,
progettato per affiancare il processore Intel 80386. La Figtua 7.9 mostra un diagramma a
blocchi generale c la destinazione dei 40 contatti del modulo.
Il lato destro del diagramma a blocchi rappresenta linterfaccia esterna di 82C55A.
Le 24 linee di I/O sono programmabili dal processore per mezzo del registro di control
lo. L80386 pu impostare il valore di tale registro per specificare vari modi operativi e con
figurazioni. Le 24 lince sono divise in tre gruppi (A, B c C). Ciascun gruppo pu funzio
nare come una porta di I/O a 8 bit. Inoltre, il gruppo C c suddiviso in due sottogruppi da
4 bit (C A e C R) che possono essere utilizzati congiuntamente alle porte di I/O A e B.
Configurate in questa maniera, trasportano i segnali di controllo c di stato.
Il lato sinistro del diagramma rappresenta linterfaccia verso il bus del processore. Essa
include un bus dati bidirezionale a 8 bit (D0-D7) utilizzato per trasferire i dati verso le por
te di I/O e per trasferire le informazioni di controllo al registro relativo. Lc due lince di in
dirizzo specificano una delle tre porte di I/O o il registro di controllo. I trasferimenti han
no luogo quando la linea CHIP SELECT attiva assieme alla linea READ o WRITE. La
linea RESET serve per linizi al izxazione.
Il registro di controllo viene caricato dal processore per determinare la modalit ope
rativa e per definire i segnali. Nelle operazioni in Modo 0, i gruppi di linee A, B c C fun
zionano come tre porte di I/O a 8 bit. Ciascuna pu essere utilizzata per linput o per lout
put. Altrimenti, i gruppi A eB fungono da porte di I/O, e le linee del gruppo C funzionano
come linee di controllo per A e B. I segnali di controllo assolvono due scopi principali:

7.4 I/O interrupt driven

R ich iesta d i in te rru p t

C3

AO
Al

RO

'R l
K3
R4
R5

TA STIE R A
:

Control

C4

CS

':?/e

D ata read y
A cknow ledge
. .

. .

82C55A

D ISPLAY

In h
B ackspace
C le a r
.....

D ata re a d V

B lan k in g
C le a r line
R ich ie sta d i in te rru p t

< -----------------F ig u ra 7 .1 0

In te rfa c c ia ta stie ra / d isp la y d e ll'8 2 C 5 5 A .

Yhandshaking e la richiesta di interrupt. Lhandshaking e un semplice meccanismo di temporizzazione. Una linea di controllo viene utilizzata dal mittente come linea DATA READY
(per indicare quando i dati sono presenti sulle linee) e unaltra viene usata dal destinatario
come ACKNOWLEDGE (indicando che i dati sono stati letti). Unaltra linea pu essere
designata come INTERRUPT REQUEST e ricollegata al bus di sistema.
Poich 82C55A programmabile attraverso il registro di controllo, pu essere usa
to per controllare svariati, semplici dispositivi periferici, come un terminale tastie
ra/monitor (cfr. Figura 7.10). La tastiera fornisce 8 bit in input. Due di questi, SHIFT e
CONTROL, hanno un significato speciale per il programma di gestione della tastiera in

243

244

Sistema di elaborazione Capitolo 7 - Input/Output

esecuzione nel processore. Comunque, tale interpretazione trasparente a 82C55A, il


quale accetta semplicemente gli 8 bit e li scrive sul bus dati del sistema. Per luso con la ta
stiera sono previste due linee di controllo dcll handshaking
Il monitor c anche collegato a una porra dati a 8 bit. Ancora, due bit hanno un si
gnificato speciale. Oltre a due linee di handshaking, due linee forniscono funzioni di con
trolli addizionali.

7.5

Accesso diretto alla memoria

Svantaggi dell'l/O da programma e interrupt driven


L I/O interrupt driven, sebbene pi efficiente del semplice I/O da programma, richiede an
cora lintervento attivo del processore per trasferire i dati tra memoria c moduli di I/O, e
ogni trasferimento dati deve passare attraverso il processore. Dunque, entrambe queste for
me di I/O presentano due svantaggi intrinseci.
1. Il tasso di trasferimento di I/O limitato dalla velocit alla quale il processore pu
testare e servire i dispositivi.
2. A ogni trasferimento dati, il processore deve eseguire un certo numero di istruzioni
(Figura 7.5).
Esiste una specie di compromesso tra questi due inconvenienti. Si consideri il trasferi
mento di un blocco di dati. Con il semplice I/O da programma, il processore pu sposta
re dati a un tasso piuttosto elevato, con il limite di non poter svolgere nessunaltra opera
zione; nellaltro caso il processore liberato da questo vincolo, a spese per della velocit
di trasferimento di I/O. In ogni caso, entrambi i metodi hanno comunque un effetto ne
gativo sullattivit del processore e sulla velocit di trasferimento dati.
Quando si debbono spostare grandi volumi di dati, necessaria una tecnica pi effi
ciente: lacccsso diretto alla memoria DMA (directmemory access).

Funzioni del DMA


Il DMA (Figura 7.11) c un modulo addizionale sul bus di sistema, che in grado di simu
lare il processore c addirittura di sottrargli il controllo del sistema, in modo da poter tra
sferire dati da e verso la memoria sul bus di sistema. A tale scopo, il DMA deve utilizzare
il bus quando il processore non lo richiede, o deve forzare il processore a sospendere tem
poraneamente le operazioni. Questultima tecnica c pi comune e viene detta cycle stealing
(letteralmente, il furto di un ciclo) perch il modulo DMA effettivamente sottrae un ci
clo di bus.
Quando il processore desidera leggere o scrivere un blocco di dati, invia un coman
do al modulo DMA, facendogli pervenire le seguenti informazioni.
Se si tratta di una lettura o di una scrittura (utilizzando la linea di controllo lettu
ra/ scrittura tra processore c DMA).
Lindirizzo del dispositivo di I/O interessato (tramite il bus dati).

7.5 Accesso diretto alla memoria

Figura 7.11

Diagramma a blocchi di un tipico DMA.

La locazione iniziale in memoria (tramite il bus dati) che verr memorizzata dal
DMA nel proprio registro indirizzo.
Il numero di parole da leggere o scrivere, ancora una volta comunicato tramite il bus
dati e memorizzato in un registro del DMA.
Il processore continua poi con altro lavoro. In effetti ha delegato questa operazione di
I/O al DMA. Il modulo DMA trasferisce lintero blocco di dati, una parola alla volta, di
rettamente da o verso la memoria, senza passare attraverso il processore. Qiiando il tra
sferimento completo, il modulo invia un segnale di interrupt al processore. Dunque, il
processore coinvolto solo allinizio e alla fine del trasferimento (Figura 7.4c).
La Figura 7.12 mostra dove il processore possa essere fermato allinterno del ciclo ese
cutivo. In ogni caso, il processore viene bloccato appena prima di richiedere luso del bus.
Il modulo DMA trasferisce poi una parola e restituisce il controllo al processore. Si noti
chc questo non rappresenta un interrupt: infatti il processore non salva il contesto (per ini
ziare unaltra elaborazione), ma si limita a fermarsi per un ciclo di bus. LcfFetto complessi
vo c che il processore opera pi lentamente. Ci nondimeno, per il trasferimento di pi pa
role, il DMA molto pi efficiente rispetto allI/O guidato da interrupt o da programma.
Alcune possibili configurazioni DMA sono mostrate nella Figura 7.13. Nel primo
esempio, tutti i moduli condividono lo stesso bus di sistema. Il modulo DMA, lavorando

245

246

Sistema di elaborazione Capitolo 7 - Input/Output

Tempo

V/iuu iaii uAiuiic

^
C iclo
processore

C iclo
processore

Ciclo
processore

C iclo
processore

Ciclo
C iclo
processore
processore

-ir-

Esecuzione
istruzione

M em orizza
risultato

Prelievo
istruzione

Decodifica
istruzione

Prelievo
operando

fe.

Interru pt
del processo

R reakpoint del DIVfA


Figura 7.12

B reakpoint d ellinterru pt

Breakpoint di DM A e di interrupt durante un ciclo di istruzione.

come un surrogato del processore, utilizza /O da programma per scambiare dati tra la me
moria e i moduli di 1/0 attraverso il DMA. Qiicsta configurazione, pur poco costosa,
chiaramente inefficiente. In tal modo, ogni trasferimento di parola consuma due cicli di bus.
Il numero di cicli di bus richiesti pu essere decisamente ridotto integrando le fun
zioni di DMA e I/O. Come indica la Figura 7.13b, questo richiede lesistenza di un per
corso tra il modulo DM A c uno o pi moduli di I/O, percorso che non include il bus di
sistema. I circuiti logici del DM A possono effettivamente far parte di un modulo di I/O,
o rappresentare un modulo separato che controlla uno o pi moduli di I/O. Qiiesto con
cetto pu essere spinto un passo avanti connettendo i moduli di 1/0 al modulo DMA tra
mite un bus di I/O (Figura 7.13c). Ci riduce a uno il numero di interfacce di I/O nel mo
dulo DMA e costituisce una configurazione facilmente espandibile. In entrambi i casi
(Figura 7.13b e 7.13c), il bus di sistema condiviso dal modulo DMA, dal processore e dal
la memoria utilizzato dal modulo DM A solo per scambiare dati con la memoria. Lo
scambio di dati tra DMA e moduli di I/O ha luogo al di fuori del bus di sistema.

Controllore DMA Intel 8237A


Il controllore DM A Intel 8237A si inserisce nella famiglia di processori 80x86 per forni
re la capacit di accesso diretto alla memoria. La Figura 7.14 mostra la posizione del mo
dulo DMA. Quando questo modulo utilizza i bus di sistema (dati, indirizzo e controllo)
per il trasferimento dei dati, manda al processore un segnale chiamato HOLD. Il proces
sore risponde con il segnale HLDA (holdacknowledge), per indicare al modulo DMA che
pu utilizzare i bus. Se, ad esempio, il modulo DM A deve trasferire un blocco di dati dal
la memoria al disco, si comporter come segue:

7.5 A ccessodirettoallam em o ria

(a) Bus singolo, DMA isolato

B u s di sistem a

M em o ria

m IA

X n i V lllllllll

Bus di I/O

I/O

I/O

s.

(c) Bus di I/O


Figura 7.13

Tre configurazioni DMA.

1. Il dispositivo periferico (come il controllore del disco) richieder Tintervento del


DMA asserendo il segnale DREQ_(la richiesta di DMA).
2. Il DMA asserisce il suo HRQ^richiesta di hold), segnalando cos alla CPU attraver
so il pin HOLD che deve utilizzare i bus.
3. La CPU porter a termine il ciclo di bus in corso, ma non necessariamente Fistruzione
in corso, e risponder alla richiesta di DMA alzando il suo segnale HDLA, infor
mando cos il DMA 8237 che pu utilizzare i bus per eseguire la sua attivit. HOLD
deve rimanere attivo per tutto il tempo in cui il DMA esegue la propria attivit.
4. Il DMA attiver il DACK (DMA acknowledge) per informare la periferica che co
mincer a trasferire i dati.
5. Il DMA inizia il trasferimento dei dati dalla memoria alla periferica collocando lin
dirizzo del primo byte del blocco sul bus di indirizzo e attivando MEMR, in modo

247

248

Sistema di elaborazione Capitolo 7 - Input/Output

CPU

D A C K = D M A ack n o w led ge
DREQ = ric h ie sta DMA
HLD A = H O LD ack n o w led ge
H RQ = ric h ie sta HOLD

Figura 7.14

Utilizzo del bus di sistema del chip 8237.

chc il byte venga letto dalla memoria sul bus dati; attiva poi il segnale IOW per scri
vere il byte sulla periferica. In seguito, il DMA decrementa il contatore e incremen
ta il puntatore di indirizzo e ripete questo punto finch il conto non raggiunge lo ze
ro e lattivit stata completata.

6. Una volta che il DMA ha terminato, disattiva HRQi Segnalando cos alla CPU chc
pu riprendere il controllo dei propri bus.
Mentre il DM A utilizza i bus per il trasferimento dei dati, il processore rimane inattivo.
Allo stesso modo, quando il processore usa il bus, il DMA inattivo. Il DM A 8237 no
to come controllore DMA fly-byy perch i dati che vengono trasferiti da una locazione al
laltra non passano n vengono memorizzati nel chip del DMA. Di conseguenza, il DMA
pu trasferire i dati solo tra una porta di I/O e un indirizzo di memoria, ma non tra due
porte I/O e due locazioni di memoria. Tuttavia, come spiegato di seguito, il chip DMA
pu eseguire un trasferimento da memoria a memoria attraverso un registro.
L8237 contiene quattro canali DMA programmabili indipendentemente, e ognuno
di essi pu essere attivo in qualsiasi momento. Qiiesti canali sono numerati 0, 1,2 e 3.
L8237 ha un insieme di cinque registri di controllo/comando per programmare e con
trollare loperazione di DMA attraverso uno dei suoi canali (Tabella 7.2).
Registro di Comando: il processore carica questo registro per controllare lattivit
del DMA. DO permette un trasferimento da memoria a memoria, in cui il canale O
viene utilizzato per trasferire un byte in un registro temporaneo dell8237 e il canale
1 viene utilizzato per trasferire il byte dal registro alla memoria. Qiiando abilitato

7.5 Accesso diretto alla memoria

Tabella 7.2
B it
OO

Registri del ch ip Intel 8 2 3 7 A .

C o m an d o
A/D da m em oria a
memoria

Stato

M odo

Il canale 0 ha
raggiunto il
TC
Seleziona canale

Dl

A/D m antenim ento


dell'indirizzo del
canale 0

Il canale 1 ha
raggiunto il
TC

1)2

A/D controllore
% /'

Il canale 2 ha
raggiunto il
TC

Irasferim ento di
verifica/scrittura/
lectura

Azzera/imposta bit
di m aschera del
canale 3

Il canale 3 ha
raggiunto il
TC

D4

P riorit fissa/ a
rotazione

Richiesta
canale 0

A/D ini/.ializzazione
autom atica

D5

Selezione di scrittura
ri tardata/estesa

Richiesta
canale 0

Seleziona increm en
to/decremento di in N on utilizzato
dirizzo

Richiesta
canale U

1)7

Rilevazione attiva di
D A C K alto/basso

Richiesta
canale 0

Azzcra/imposta bit
di m aschera del
canale 1

Azzera/ imposta bit Azzera/imposta bit


di maschera
di m aschera del
canale 2

Temporizzazione
normale/compressa

Rilevazione attiva di
D REQalto/'basso

Azzera/imposta bit
di maschera del
canale 0

Seleziona bit di
m aschera del
canale

1)3

1)6

M schera g lo b ale

M asch era sin go la

m
J i 'li}

Non utilizzato

Seleziona modo
(a domanda/singolo
/a blocchi/a cascata)

A/D = arrivo/disattivo
T C = termine conteggio

il trasferimento da memoria a memoria, D l pu essere utilizzato per disabilitare lin


cremento, o il decremento, sul canale 0 in modo che lui valore fissato possa essere
scritto in un blocco di memoria. D2 abilita o disabilita il DMA.
Registro di Stato: il processore legge questo registro per determinare lo stato del

DMA. I bit D 0-D 3 vengono utilizzati per indicare se i canali 0 -3 abbiano raggiun
to il T C (termine conteggio). I bit D 4-D 7 vengono utilizzati dal processore per de
terminare se ogni canale ha una richiesta di DMA in corso.
Registro di Modo: il processore imposta questo registro per determinare la moda

lit operativa del DMA. I bit DO e D l sono utilizzati per selezionare un canale. Gli
altri bit selezionano le varie modalit operative per il canale selezionato. I bit D2 e D3
determinano se il trasferimento avviene da un dispositivo I/O alla memoria (scritttira) o viceversa (lettura), oppure se si tratta di unoperazione di verifica. Se il bit D4
vale 1, il registro di indirizzo della memoria e i registri di conteggio vengono ricari
cati con il loro valore originario alla fine di un trasferimento di dati DMA. I bit D6
e D7 determinano la modalit di utilizzo dcll8237. In modalit singola potrebbe es
sere trasferito un singolo byte di dati. Le modalit di blocco e domanda vengono uti
lizzate per Lin trasferimento in blocco, nel quale la modalit di domanda permette la
conclusione prematura del trasferimento. La modalit a cascata permette di mette
re in cascata pi chip 8237 per utilizzare pi di 4 canali.

249

250

Sistema di elaborazione Capitolo 7 - Input/Output

M aschera singola: il processore imposta il registro. I bit L)0 e D l selezionano il ca


nale. Il bit D2 azzera o imposta il bit di maschera per quel canale. Attraverso questo
registro linput DREQdi un canale specifico pu essere mascherato (disabilitato) op
pure smascherato (abilitato). Mentre il registro di comando pu essere utilizzato per
disabilitare lintero chip DMA, il registro di singola maschera permette al program
matore di abilitare o disabilitare un canale specifico.
M aschera globale: questo registro simile al registro di maschera singola se non per
il fatto che tutti e quattro i canali possono essere mascherati o smascherati con la stes
sa operazione di scrittura.
Inoltre, 8237 ha otto registri di dati: un registro di indirizzo della memoria e un regi
stro di conteggio per ogni canale. Il processore imposta questi registri per indicare la lo
calizzazione della parte di memoria principale coinvolta dai trasferimenti.

7.6

Canali e processori di I/O

Evoluzione delle funzioni di I/O


Levoluzione dei sistemi di elaborazione ha determinato una crescente complessit nei sin
goli componenti, sempre pi sofisticati. Ci particolarmente evidente nelle funzioni di
I/O. Abbiamo gi visto parte di tale evoluzione. I passi evolutivi possono essere riassunti
come segue.
1. La CPU controlla direttamente un dispositivo periferico. Qiiesto avviene nei sem
plici dispositivi controllati dal microprocessore.
2. Si aggiunge un controllore o un modulo di I/O. La CPU utilizza TI/O da program
ma, senza interrupt. Con questo passo la CPU diventa in qualche modo indipendente
dai dettagli delle interfacce dei dispositivi esterni.
3. Si adotta la configurazione precedente, ma si introducono gli interrupt. La CPU
non deve pi sprecare tempo in attesa dellesccuzionc delle operazioni di I/O, a tut
to vantaggio dell efficienza.
4. Al modulo di I/O viene dato accesso diretto alla memoria tramite il DMA. Ora e
possibile spostare blocchi di dati da o verso la memoria senza coinvolgere la CPU, se
non allinizio e alla fine del trasferimento.
5. Il modulo di I/O viene potenziato per diventare quasi un vero processore che co
munque dispone di proprie istruzioni macchina specializzate. La CPU spinge il pro
cessore di I/O allesecuzione di un programma registrato nella memoria centrale. Il
processore di I/O esegue tali istruzioni senza lintervento della CPU chc pu, quin
di, specificare una sequenza di attivit di I/O ed essere interrotta solo quando linte
ra sequenza stata eseguita.
6. Il modulo di I/O ha anche una memoria locale e diventa un calcolatore a tutti gli ef
fetti. Adottando tale architettura, si possono controllare molti dispositivi di I/O
con il minimo coinvolgimeli to della CPU. Un uso comune di tale architettura c il
controllo della comunicazione con terminali interattivi. Il processore di I/O si pren
de cura della maggior parte dei compiti coinvolti nel controllo dei terminali.

7.7 Interfaccia esterna: FireW ire e InfiniBand

Procedendo lungo tale percorso evolutivo, un numero sempre maggiore di funzioni di I/O
sono eseguite senza il coinvolgimento della CPU. A questa vengono via via sottratti i com
piti correlati allI/O, migliorando le prestazioni. Con gli ultimi due passi (5 e 6), si verifi
ca un radicale cambiamento grazie allintroduzione del concetto di modulo di I/O in gra
do di eseguire un programma. Al passo 5, il modulo di I/O viene frequentemente detto
canale di I/O (I/O channel ), mentre nel passo 6 si usa molte volte la locuzione processo
re di I/O (I/Oprocessor). Comunque, le definizioni vengono occasionalmente applicate a
entrambe le situazioni. Nel seguito della trattazione useremo il termine canale di I/O.

Caratteristiche dei canali di I/O


Il canale di I/O rappresenta unestensione del concetto di DMA, ed ha la capacit di ese
guire istruzioni di I/O, il che gli conferisce il completo controllo delle operazioni di I/O.
In un sistema di elaborazione dotato di tali dispositivi, la CPU non esegue istruzioni di
I/O. Qiicste sono archiviate nella memoria centrale allo scopo di essere eseguite da un pro
cessore specializzato, presente nello stesso canale di I/O. Quindi, la CPU avvia il trasferi
mento di I/O istruendo il canale di I/O in merito all esecuzione del programma in me
moria. Il programma specificher il dispositivo o i dispositivi, larea o le aree di memoria
coinvolte, la priorit e le azioni da intraprendere per determinate condizioni di errore. Il
canale segue tali istruzioni e controlla il trasferimento dati.
Come mostrato nella Figura 7.15, due sono i tipi di canali di I/O di uso comune. Un
canale selettore controlla pi dispositivi ad alta velocit attraverso uno dei quali procede,
di volta in volta, al trasferimento dati. Dunque, il canale di I/O seleziona un dispositivo
ed effettua il trasferimento dati. Ogni dispositivo, o ciascun piccolo insieme di dispositi
vi, gestito da un controllore, o modulo di I/O, molto simile a quelli che abbiamo tratta
to. Dunque, il canale di I/O opera in vece della CPU nella gestione di questi controllori
di I/O. Un canale multiplo (multiplexor channel) pu gestire contemporaneamente 1/0
di pi dispositivi. Per i dispositivi a bassa velocit, un multiplexor di byte accetta o tra
smette i caratteri il pi rapidamente possibile a pi dispositivi. Ad esempio, il flusso di ca
ratteri risultante da tre dispositivi con diverse velocit e stringhe individuali A1 A2 A3 A4
..., B B2 B3 B4 ... e C 1 C , C 3 C 4 ... potrebbe essere A 1 B1 C 1 A2 C 2 A^ B2 C 3 A4 e cos via.
Per dispositivi ad alta velocit, un multiplexor di blocchi interlaccia blocchi di dati prove
nienti da diversi dispositivi.

7.7

Interfaccia esterna: FireWire e InfiniBand

Tipi di interfaccia
Linterfaccia verso una periferica da un modulo di I/O deve avere una specifica corri
spondenza alla natura e alle operazioni della periferica stessa. Esistono due tipi di inter
faccia: seriale e parallela (Figura 7.16). Nelle interfacce parallele vi sono pi linee che con
nettono il modulo di I/O e la periferica, e pi bit vengono trasferiti simultaneamente, cos
come i bit di una parola vengono simultaneamente trasferiti sul bus dati. Le interfacce se
riali hanno una sola linea di trasmissione, e i bit sono trasferiti uno alla volta. Linterfaccia
parallela tradizionalmente adottata per le periferiche pi veloci, come nastri e dischi,

251

252

Sistema di elaborazione Capitolo 7 - Input/Output

C anale dati e indirizzi


verso la memoria centrale

(a) Selettore
C anale dati e indirizzi
verso la mem oria centrale

(b) M ultiplexor
Figura 7.15

Architettura dei canali di I/O.

mentre Imcerfaccia seriale e tipicamente usata per stampanti e terminali. Grazie a una
nuova generazione di interfacce seriali ad alta velocit, quelle parallele sono sempre meno
utilizzate.
In ogni caso, il modulo di I/O deve instaurare un dialogo con la periferica. In termi
ni generali il dialogo per unoperazione di scrittura quello che segue:

7.7 Interfaccia esterna: FireW ire e InfiniBand

Modulo di I/O
Verso
la periferica

Modulo di I/O
Verso
la periferica

Verso il bus
di sistema

(b) I/O seriale


Figura 7.16

I/O seriale e parallelo.

1. il modulo di I/O invia un segnale di controllo richiedendo il permesso di inviare dati,


2. la periferica accusa ricevuta della richiesta,
3. il modulo di I/O trasferisce i dati (una parola o un blocco a seconda della periferica),
4. la periferica conferma la ricezione dei dati.
Le operazioni di lettura procedono in modo similare.
La chiave dclloperativit di un modulo di I/O un buffer in grado di memorizzare i
dati che stanno passando tra la periferica e il resto del sistema. Tale buffer consente al mo
dulo di I/O di compensare le differenze di velocit tra il bus di sistema e le sue linee esterne.

Configurazioni punto-punto e multipunto


La connessione tra un modulo di I/O e i dispositivi esterni pu essere o punto-punto o
multipunto. Linterfaccia punto-punto fornisce una linea dedicata tra il modulo di 1/0 e
il dispositivo esterno. Sui piccoli sistemi i tipici collegamenti punto-punto includono quel
li verso la tastiera, la stampante c il modem esterno. Un classico esempio di tale interfac
cia la specifica EIA-232 (per una sua descrizione, si veda [STAL07]).
Le interfacce multipunto stanno assumendo sempre maggiore importanza e sono uti
lizzate per supportare dispositivi di memorizzazione di massa esterni e multimediali (CD
ROM, video, audio). Queste interfacce sono in effetti bus esterni, ed esibiscono lo stesso
tipo di logica dei bus trattati nel Capitolo 3. In questo paragrafo focalizziamo lattenzio
ne su due esempi chiave: FireWire e InfiniBand.

253

254

Sistema di elaborazione Capitolo 7 - Input/Output

Bus seriale FireWire


Con processori chc raggiungono velocit dell ordine dei GHz e dispositivi di memoriz
zazione con capacit multiple dei gigabit, la domanda di I/O per i PC, le workstation e i
server e diventata formidabile. Le tecnologie dei canali di I/O ad alta velocit sviluppate
per i mainframe e per i supercomputer sono ancora troppo costose e voluminose per esse
re adottate sui sistemi pi piccoli. Di conseguenza, si manifestato notevole interesse ri
guardo allo sviluppo di unalternativa ad alta velocit alla SCSI e di altre interfacce di I/O
per piccoli sistemi. Il risultato lo standard IEEE 1394 per bus seriali ad alte prestazioni,
comunemente detto FireWire.
FireWire mostra un certo numero di vantaggi sulle pi datate interfacce di I/O.
Presenta una velocit molto alta, un basso costo cd e facile da implementare. Infatti,
FireWire sta incontrando favore non solo nei sistemi di elaborazione, ma anche nei pro
dotti elettronici di consumo, quali le fotocamere digitali, i videoregistratori c i televisori.
In questi prodotti, FireWire viene utilizzato per trasportare immagini video chc sempre pi
di frequente provengono da sorgenti digitali.
Uno dei punti di forza dellinterfaccia FireWire l uso della trasmissione seriale (un
bit per volta) anzich parallela. Le interfacce parallele, quali la SCSI, richiedono pi con
nessioni, il chc si traduce in cavi e connettori pi grandi e costosi, con un numero maggiore
di contatti che possono incurvarsi o rompersi. Un cavo con pi fili necessita di una scher
matura per evitare reciproche interferenze elettromagnetiche. Inoltre, le interfacce paral
lele richiedono la sincronizzazione tra i fili, un problema che peggiora allaumentare della
lunghezza del cavo.
In aggiunta, i calcolatori stanno diventando fisicamente pi piccoli mentre aumen
tano il loro potere computazionale e le loro richieste di I/O. I calcolatori palmari e tasca
bili hanno poco spazio per i connettori, ma richiedano alti tassi di trasferimento dati per
gestire immagini e video.
Lo scopo di FireWire fornire ununica interfaccia di I/O con un semplice connet
tore che possa gestire numerosi dispositivi attraverso una singola porta, in modo chc il
mouse, la stampante laser, il drive del disco esterno, il collegamento per laudio e la rete lo
cale possano essere sostituiti da un singolo connettore. Il connettore si ispira a quello usa
to nel GameboyNintendo. E cos comodo che lutente pu raggiungere il retro della mac
china e inserirlo senza guardare.
Configurazioni FireWire

FireWire adotta una configurazione daisy chain, e supporta fino a 63 dispositivi connessi
a una singola porta. Inoltre, utilizzando i bridge si possono interconnettere fino a 1022 bus
FireWire, in modo che il sistema pu gestire tutte le periferiche richieste.
FireWire consente il cosiddetto inserimento a caldo (hotplugging) grazie al quale
possibile connettere e disconncttcre le periferiche senza dover spegnere il sistema o ricon
figurarlo. Inoltre, FireWire permette la configurazione automatica; non necessario im
postare manualmente i dispositivi o preoccuparsi della loro posizione relativa. La Figura
7.17 mostra una semplice configurazione FireWire. Nel FireWire non ci sono terminazio
ni, e il sistema esegue automaticamente una funzione di configurazione per assegnare gli
indirizzi. Si noti inoltre che un bus FireWire non richiede un daisy chain rigido, ma am
mette una configurazione ad albero.

7.7 Intcrtacciaestern aiFireW ireeIniiniBancI

Figura 7.17

Semplice configurazione FireWire.

Unimportante caratteristica di tale standard e il fatto di specificare tre strati di protocol


li per indicare il modo in cui il sistema ospite interagisce con i dispositivi periferici sul bus
seriale. La Figura 7.18 illustra questa pila, composta dai seguenti tre strati.

Figura 7.18

Pila dei protocolli FireW ire.

255

256

Sistema di elaborazione Capitolo 7 - Input/Output

Strato fisico: definisce i mezzi di trasmissione consentiti a FireWire e le loro carat

teristiche elettriche e di segnale.


Strato di collegamento: descrive la trasmissione dei dati nei pacchetti.
Strato di transazione: definisce un protocollo domanda-richiesta che nasconde al

le applicazioni i dettagli dello strato inferiore del FireWire.


Strato fsico

Lo strato fisico di FireWire specifica numerosi mezzi trasmissivi e i loro connettori, con dif
ferenti propriet fisiche c di trasmissione dati. Sono definite velocit di trasferimento da
ti da 25 a 3200 Mbps. Lo strato fisico converte i dati binari in segnali elettrici e fornisce an
che il servizio di arbitraggio chc garantisce che solo un dispositivo alla volta trasmetta dati.
FireWire prevede due forme di arbitraggio. La forma pi semplice basata sulla di
sposizione ad albero dei nodi sul bus FireWire. Un caso speciale di questa struttura il dai
sy chain lineare. Lo strato fisico contiene la logica che consente a tutti i dispositivi con
nessi di autoconfigurarsi in modo che un nodo sia designato come radice deUalbero e gli
altri nodi siano in relazione padre-figlio. Una volta stabilita questa configurazione, il no
do radice agisce come arbitro centrale ed elabora le richieste di accesso al bus secondo la
politica first-come-first-scrvcd. Nel caso di richieste simultanee, il nodo con la pi alta prio
rit naturale guadagna laccesso. La priorit naturale c stabilita in base alla vicinanza dei no
di concorrenti alla radice e, tra quelli chc hanno uguale distanza, a partire dal pi basso nu
mero di identificazione.
Il metodo di arbitraggio di FireWire c integrato con due funzioni addizionali, !arbi
traggio imparziale (fair) e larbitraggio con urgenza. Nella prima metodologia, il tempo di
utilizzo del bus considerato suddiviso in intervalli , detti di imparzialit. Allinizio di un
intervallo, ciascun nodo impostami flag AE (arbitration_enable) e quindi, durante linter
vallo, compete per laccesso al bus. Unavolta guadagnato lacccsso, il nodo reimposta il pro
prio flag AE e non pu pi competere nellarco di tale intervallo. Qiicsto schema rende lar
bitraggio pi equo, nel senso che evita che dispositivi ad alta priorit monopolizzino il bus.
In aggiunta a questo schema, ad alcuni dispositivi pu essere assegnata una priorit
urgente. Tali nodi possono prendere il controllo del bus pi volte durante un intervallo
dimparzialit. Essenzialmente, a ogni nodo ad alta priorit c associato un contatore che
consente il controllo del 75 per cento del tempo di bus disponibile. Per ogni pacchetto non
urgente possono essere trasmessi tre pacchetti urgenti.
Strato di collegamento

Lo strato di collegamento definisce la trasmissione di dati in forma di pacchetti. Vengono


supportati due tipi di trasmissione.
Asincrona: una quantit variabile di dati (c di informazione di servizio) trasferita co
me pacchetto a un indirizzo esplicito c viene restituito un segnale di riconoscimento.
Isocrona: una quantit variabile di dati trasferita in una sequenza di pacchetti a lun

ghezza fissa trasmessi a intervalli regolari. Questa forma di trasmissione adotta un in


dirizzamento semplificato e non ha segnale di riconoscimento.

7.7 Interfaccia esterna: FireW ire e InfiniBand

Sub-azione 1: rich iesta


G ap di
subazione

"

Bi

Pi* chctt0

Sub-azione 2: risposta

G ap di **
A ck F~~\ sub-
gap [ ^ J azione

Ba

P acchetto

'G a p di
Ack I I
subgap [A ck J ^ jone

------
Tempo

(a) Esem pio di sub-azione asincro na

Sub-azione 1: rich iesta

Sub-azione 2 : rispo sta

(e) E sem pio di sub-azioni isocrone

Figura 7.19

Sub-azioni FireWire.

La trasmissione asincrona utilizzata dai dati chc non presentano requisiti di velocit fs
sa di trasferimento. Sia lo schema di arbitraggio imparziale sia quello di arbitraggio con ur
genza pu essere adottato per la trasmissione asincrona. Il metodo di default larbitrag
gio imparziale. I dispositivi chc desiderano unampia frazione della capacit del bus o che
hanno requisiti di ritardo stringenti utilizzano il metodo di arbitraggio con urgenza. Ad
esempio, un collettore di dati in tempo reale pu adottare !arbitraggio con urgenza quan
do i buffer sono pieni oltre la met.
La Figura 7.19a mostra una tipica transazione asincrona. Il processo di consegna di
un singolo pacchetto viene chiamato sub-azione (subaction). La sub-azione suddivisa in
cinque periodi di tempo.
Sequenza di arbitraggio: lo scambio di segnali richiesti per dare al dispositivo il

controllo del bus.


Trasmissione di pacchetto: ogni pacchetto include unintestazione (header) con

tenente gli indirizzi del mittente e del destinatario. Lintestazione contiene anche
informazioni sul tipo di pacchetto, dei byte CRC per il controllo degli errori e altri
parametri di servizio. Il blocco di dati pu anche contenere altri byte per il control
lo degli errori.
Gap di riconoscimento: il tempo in cui il destinatario riceve e decodifica un pac

chetto e genera un segnale di ricevuta.

257

258

Sistema di elaborazione Capitolo 7 - Input/Output

Ricevuta: il ricevente del pacchetto restituisce un pacchetto di ricevuta con un co


dice che indica lazione intrapresa dal ricevente.
Gap d i sub-azione: il periodo di inattivit forzata per assicurarsi chc altri nodi
sul bus non diano inizio allarbitraggio prima della trasmissione del pacchetto di ri
conoscimento.
Nel momento in cui la ricevu ta viene inviata, il nodo controlla il bus. Dunque, se lo scam
bio uninterazione richiesta-risposta tra due nodi, il nodo che risponde pu immediata
mente trasmettere il pacchetto di risposta senza passare per una sequenza di arbitraggio
(Figura 7.19b).
Ai dispositivi che regolarmente generano o ricevono dati come audio o video, viene
fornito laccesso isocrono. Questo metodo garantisce che i dati possano essere consegna
ti entro un ritardo specificato con una velocit di trasferimento garantita.
Per ammettere un traffico misto di dati isocroni e asincroni, si designa un nodo co
me gestore del ciclo (cycle master ). Periodicamente, il gestore emette un pacchetto
cycle_start chc segnala a tutti gli altri nodi linizio di un ciclo isocrono, durante il quale
possono essere inviati solo pacchetti isocroni (Figura 7 .19c). Ciascunasorgcntc di dati iso
croni compete per lacccsso al bus. Il nodo vincitore trasmette immediatamente un pac
chetto. A questo pacchetto non corrisponde alcun segnale di riconoscimento, e cos altre
sorgenti di dati isocroni arbitrano immediatamente il bus dopo la trasmissione del prece
dente pacchetto isocrono. Ne risulta un piccolo intervallo di tempo tra la trasmissione di
un pacchetto e il periodo di arbitraggio del pacchetto successivo, intervallo dettato dai ri
tardi sul bus. Tale ritardo, detto gap isocrono, pi piccolo del gap di sub-azione.
Dopo che tutte le sorgenti isocrone hanno trasmesso, il bus rimane inattivo per un
tempo sufficiente affinch si verifichi un gap di sub-azione. Questo segnala alle sorgenti
asincrone che possono ora concorrere per laccesso al bus. Lc sorgenti asincrone possono
quindi usare il bus fino allinizio del successivo ciclo isocrono.
I
pacchetti isocroni vengono etichettati con numeri di canale a 8 bit, precedente
mente assegnati tramite un dialogo tra i due nodi in procinto di scambiare dati isocroni.
Lintestazione, pi corta rispetto a quella dei pacchetti asincroni, include lu campo per la
lunghezza dei dati e un CRC dellintestazione.

InfiniBand
InfiniBand una specifica recente di I/O rivolta al mercato dei server di fascia alta.3La pri
ma versione delle specifiche fu pubblicata allinizio del 2001 e attrasse numerosi fornitori.
Lo standard descrive unarchitettura e il flusso di dati tra i processori e i dispositivi intel
ligenti di I/O. InfiniBand intende sostituire il bus PCI nei server, per fornire una capacit
superiore, una migliore espandibilit e una grande flessibilit. Sostanzialmente, InfiniBand
consente ai server, ai dispositivi di memorizzazione remota e ad altri dispositivi di rete di
essere connessi a una struttura centrale. E possibile collcgarc fino a 64 mila server, sistemi
di memorizzazione e dispositivi di rete.

3 InfiniBiind c il risu ltato d ella fu sione d i due p ro getti co n co rren ti: Future I/O (.sostenuto d a C isco , HP, O m p a q
e IB M ) e N ext G en eratio n (svilup pato d a Intel e ap p o ggiato d a num erose a ltre co m p agn ie).

7.7 Interfaccia esterna: FireW ire e InfiniBand

Architettura InfiniBand
Sebbene PCI rappresenti lu metodo dinterconnessione affidabile e molto veloce, c pur
sempre unarchitettura lim itata rispetto a InfiniBand. Questultimo non richiede chc
!hardware di interfaccia di I/O fondamentale sia contenuto nello chassis del server. Con
InfiniBand, la memorizzazione remota, il networking e le connessioni tra server vengono
ottenute collegando tutti i dispositivi a una struttura centrale. Rimuovere / dallo chas
sis dei server consente una densit pi alta di server e un centro dati pi flessibile in quan
to, se necessario, si possono aggiungere nodi indipendenti.
A differenza del PCI, chc misura le distanze da una piastra madre CPU in centime
tri, InfiniBand consente ai dispositivi di I/O di essere posizionati fino a una distanza di 17
metri dal server utilizzando fili di rame, fino a 300 metri usando fibra ottica multimodo e
fino a dieci chilometri con la fibra ottica a modo singolo. Il tasso trasmissivo pu rag
giungere i 30 Gbps.
La Figura 7.20 illustra larchitettura InfiniBand. Gli elementi chiave sono i seguenti.
Host channel adapter (H C A) : invece di svariati slot PCI, un tipico server richiede

ununica interfaccia verso un HCA che collega il server a uno switch InfiniBand.
H CA si collega al server tramite un controllore di memoria che accede al bus di si
stema e controlla il traffico tra processore e memoria e tra HCA e memoria. HCA
legge e scrive in memoria mediante DMA.
Target channel adapter (TCA) : questo adattatore collega i sistemi di memorizza

zione, i router e altri dispositivi periferici a uno switch InfiniBand.


Switch InfiniBand: lo switch fornisce connessioni fisiche punto-punto verso una se

rie di dispositivi e instrada il traffico da un collegamento a un altro. Il server e i di-

D ispositivo
(Iest in azi

TOA
Sotto rete
HSSsoBU-aasaaa

Switch

'

\ \

Mcocgamente B InH niBand p * * n * o IBj C

IB

= In fin iB an d

H C A = host ch a n n e l a d a p te r
T C A ta rg e t ch a n n e l a d a p te r
Figura 7 .2 0

Schem a dello sw itch In finiB and .

Router fcol!egamentoIB[ Router

IliifiliH

259

260

Sistema di elaborazione Capitolo 7 - Input/Output

spositivi comunicano attraverso lo switch che gestisce i collegamenti senza inter


rompere le operazioni dei server.
Collegam enti: si ha collegamento tra switch e adattatore di canale, o tra due switch.
Sottorctc: una sottorete costituita da uno o pi switch interconnessi e dai colle
gamenti chc connettono i dispositivi agli switch. La Figura 7.20 mostra una sottorc
tc con uno switch, ma quando si devono connettere un gran numero di dispositivi
sono necessarie sottoreti pi complesse. Lc sottoreti consentono agli amministrato
ri di confinare il broadcast e le trasmissioni multicast al loro interno.
Router: connette le sottoreti InfiniBand, o connette uno switch InfiniBand a una re
te, quale una LAN (locaiarca network ), una WAN (ioide area network ) o una rete per
la memorizzazione (storage area network).
Cili adattatori di canale sono dispositivi intelligenti chc gestiscono le funzioni di I/O sen
za interrompere il processore del server. Ad esempio, esiste un protocollo di controllo con
cui imo switch scopre tutti i TC A e gli H CA della struttura e assegna a ciascuno gli indi
rizzi logici. Tutto questo senza il coinvolgimcnto del processore.
Gli switch InfiniBand aprono temporaneamente i canali tra il processore e i disposi
tivi con i quali sta comunicando. I dispositivi non devono condividere la capacit del ca
nale (come nei progetti basati su bus come PCI, dove i dispositivi devono arbitrare lac
cesso al processore). Altri dispositivi vengono aggiunti alla configurazione allacciando il
T CA di ciascun dispositivo allo switch.
Operazioni InfiniBand

Ogni collegamento fisico tra uno switch e uninterfaccia (H CA o TCA) pu supportare


fino a 16 canali logici, chiamati corsie virtu ali (virtual lanes). Una corsia riservata per
la gestione della struttura e le altre corsie per il trasporto dei dati. 1 dati sono inviati nella
forma di flussi di pacchetti, ove ciascun pacchetto contiene una porzione dei dati da tra
sferire, e informazioni di indirizzamento c controllo. Dunque, per gestire il trasferimento
dati si usa un insieme di protocolli di comunicazione. Una corsia virtuale viene tempora
neamente dedicata al trasferimento dati da un nodo a un altro. Lo switch InfiniBand in
dirizza il traffico da una corsia in ingresso a una corsia in uscita per instradare i dati verso
i terminali desiderati.
La Figura 7.21 indica la struttura logica di InfiniBand. Qiieste code possono essere
localizzate nelladattatore del canale o nella memoria del dispositivo connesso. Per ciascuna
corsia virtuale si usa una coppia separata di code. Lhost utilizza queste code nel modo se
guente. Posiziona una transazione, chiamata work queue entry (WQE) nella coda di invio
e nella coda di ricezione della coppia di code. Le due pi importanti WQE sono SEND e
RECEIVE. Per una SEND, il WQE specifica un blocco di dati nello spazio di memoria
del dispositivo perche lhardwarc li spedisca al destinatario. Una WQE RECEIVE speci
fica dove Thardware deve posizionare i dati ricevuti da lu i altro dispositivo quando tale con
sumatore esegue una SEND. Ladattatore di canale processa le WQE accodate nellordine
di priorit opportuno e genera una completion queue entry (CQE) per indicare il comple
tamento della transazione.

7.7 Interfaccia esterna: FireW ire e InfiniBand

Figura 7.21

Pila dei protocolli di comunicazione InfiniBand.

La Figura 7.21 indica anche ladozione di unarchitettura a 4 strati.


Fisico: le specifiche definiscono tre velocit di collegamento (IX , 4X e 12X) corri
spondenti a 2,5, 10 e 30 Gbps (Tabella 7.3). I supporti fisici previsti sono rame e fi
bra ottica.
Collegam ento: questo strato definisce la struttura dei pacchetti c uno schema che
assegna un indirizzo di collegamento a ciascun dispositivo di una sottorete. Qiiesto
livello responsabile della definizione delle corsie virtuali c dcllinstradamento dei da
ti attraverso gli switch nellambito di una sottorete. I pacchetti includono anche un
codice a rilevamento di errore per maggior affidabilit.
Rete: lo strato di rete instrada i pacchetti tra differenti sottoreti.
Trasporto: lo strato di trasporto fornisce un meccanismo affidabile per i trasferi
menti end-co-end dei pacchetti attraverso una o pi sottoreti.

Tabella 7.3
C ollegam ento

Collegamenti InfiniB and e throughput.


Tasso trasm issivo
(un id irezion ale)

C ap acit u tilizz ab ile


(80% d el tasso trasm issivo)

T h ro u gh p u t effettivo
(invio + ricezione)

I wide

2,5 Gbps

2 Gbps (250 M Bps)

(250 + 250) MBps

4 wide

10 Gbps

8 Gbps (I GBps)

(I + I) GBps

12 wide

30 Gbps

24 Gbps (3 G Bps)

(3 + 3) CiBps

261

262

Sistema di elaborazione Capitolo 7 - Input/Output

7.8

Letture e siti web consigliati

Una buona trattazione dei moduli di I/O e delle architetture Intel, incluse 82C59A e
82C55A, si trova in [BREY09] e [M AZI03]. FireWire e descritto accuratamente in
[ANDE98], mentre |WICK97] e [THOMOO] ne forniscono una concisa panoramica.
InfiniBand trattato dettagliatamente in [SHAN03], [FUTR01] e pi brevemente in
[KAGA01].
ANDE98 D. Anderson, FireWire System Architecture, Reading (MA), AddisonWesley, 1998.
BREY09 B. Brcy Ihe Intel Microprocessors: 8086/8066, 80186/80188, 80286,

80386, 80486, Pentium, Pentium Pro Processor, Pentium II, Pentium III, Pentium 4
and Core2 with 64-bit Extensions, Upper Saddle River (NJ), Prentice Hall, 2009.
F UTROI Wr. Futral, InfiniBand Architecture: Development and Deployment,
Hillsboro (OR), Intel Press, 2001.
KAGAOl M. Kagan,'InfiniBand: Thinking Outside the Box Design in
Communicatiom System Design, settembre 2001, (www.csdmag.com).
MAZI03 M. Mazidi, e j. Mazidi1The 80x86IBM PC and Compatible Computers:
Assembly Language, Design and Interfacing, Upper Saddle River, NJ : Prentice
Hall, 2003.
SHAN 03 T. Shanlcy, InfmBandNetwork Architecture, Reading, M A: AddisonWesley, 2003.
THOMOO D. Thompson, IEEE 1394: Changing the Way We Do Multimedia
Communications in IEEEMultimedia, aprile-giugno 2000.
W 1CK97 I. Wickelgrcn, The Facts About FireWire in IEEE Spectrum, aprile
1997.

Siti web consigliati:


TlO Hom e Page: il TlO un comitato tecnico del National Committee on
Information Technology Standards e si occupa delle interfacce di basso livello. La sua
opera principale e Small Computer System Interface (SCSI).
1394 Trade Association: include informazioni tecniche e riferimenti ai fornitori
FireWire.
InfiniBand Trade Association: include informazioni tecniche e riferimenti ai for
nitori InfiniBand.
N ational Facility for I/O C haracterization and O ptim ization: un servizio dedi
cato allistruzione e alla ricerca nel campo della progettazione e delle prestazioni di
I/O. Strumenti utili e tutorial.

7.9 Parole chiave, domande di revisione e problemi

7.9

Parole chiave, domande di revisione e


problemi
____________

accesso diretto alla


memoria (DMA)
canale di I/O
canale multiplo
canale selettore
comando di I/O
cycle stealing

dispositivo periferico
FireWire
I/O da programma
I/O interrupt driven
I/O memory mapped
I/O parallelo
I/O separato

I/O seriale
InfiniBand
interrupt
modulo I/O
processore di I/O

Domande di revisione
7 .1 Elcncatc tre grandi classificazioni dei dispositivi esterni (o periferiche).
7.2 Che cose Tlntemational Reference Alphabet?
7.3 Quali sono le principali funzioni di un modulo di I/O?
7.4 Elencate e descrivete brevemente tre tecniche per eseguire Tl/O.
7.5 Qual la differenza tra I/O memory mapped e I/O isolato?
7.6 Quando avviene un interrupt di dispositivo, come fa il processore a determinare
quale sia stato il dispositivo che lo ha sollevato?
7 .7 Qiiando un modulo DMA prende il controllo di un bus? E mentre lo mantiene, co
sa fa il processore?

Problemi
7.1 In un tipico processore viene utilizzato un indirizzo I/O distinto per fare riferi
mento ai registri di dati I/O e un indirizzo distinto per i registri di controllo e di sta
to in un controllore I/O per un dato dispositivo. Tali registri vengono definiti por
te. In un Intel 8088 vengono utilizzati due formati di istruzioni I/O. In un formato,
il codice operativo a 8 bit specifica unoperazione di I/O; il codice operativo se
guito da un indirizzo di porta a 8 bit. Altri codici operativi di I/O implicano che
Tindirizzo di porta contenuto nel registro DX a 16 bit. Qiiante porte pu indi
rizzare T8088 nelle sue modalit di indirizzamento di I/O?
7.2 Un formato di istruzioni simile viene utilizzato nella famiglia di microprocessori
Zilog Z8000. In questo caso e possibile un indirizzamento diretto della porta, in cui
un indirizzo di porta a 16 bit parte dellistruzione, ma anche un indirizzamento
indiretto, in cui listruzione fa riferimento a uno dei registri generici a 16 bit che con

263

264

Sistema di elaborazione Capitolo 7 - Input/Output

tiene !indirizzo di porta. Qiiante porte pu indirizzare lo Z8000 nelle sue moda
lit di indirizzamento di I/O?
7.3 Lo Z8000 c anche in grado di eseguire un trasferimento di I/O a blocchi che, a dif
ferenza di quanto avviene col DMA, controllato direttamente dal processore. Le
istruzioni di trasferimento a blocchi specificano un registro di indirizzo di porta
(Rp), un registro di contatore (Re) e un registro di destinazione (Rd). Il registro Rd
contiene lindirizzo di memoria principale dove deve essere salvato il primo byte let
to dalla porta di input. Il registro Re uno qualsiasi dei registri generici a 16 bit.
Qiianto pu essere grande un blocco di dati da trasferire?
7.4 Considerate un microprocessore con unistruzione di trasferimento di I/O a bloc
chi simile a quella dello Z8000. Dopo la prima esecuzione questo tipo di istruzio
ne richiede cinque cicli di clock per unulteriore esecuzione. Tuttavia, se utilizzia
mo unistruzione di I/O non a blocchi, saranno necessari 20 cicli di clock per il
prelievo e !esecuzione. Calcolate lincremento di velocit con listruzione di I/O a
blocchi per un trasferimento di blocchi di 128 byte.
7.5 Un sistema basato su un microprocessore a 8 bit e ha due dispositivi di I/O. I con
trollori I/O di questo sistema utilizzano registri di controllo e di stato separati.
Entrambi i dispositivi gestiscono i dati un bit alla volta. Il primo dispositivo ha due
linee di stato e tre linee di controllo. Il secondo dispositivo ha tre linee di stato e
quattro lince di controllo.
a. Qiianti registri di modulo di controllo I/O a 8 bit sono necessari per la lettura
dello stato e il controllo di ogni dispositivo?
b. Qiianti registri di modulo di controllo ci devono essere se il primo dispositivo
un dispositivo di solo output?
c. Quanti indirizzi distinti sono necessari per controllare questi due dispositivi?
7.6 La Figura 7.5 indica che nel caso di I/O da programma il processore bloccato in
un ciclo di attesa mentre fa il controllo di stato di un dispositivo I/O. Per incre
mentare lefficienza il software di I/O potrebbe essere scritto in modo che il pro
cessore controlli periodicamente lo stato del dispositivo. Se il dispositivo non
pronto, il processore pu passare ad altre attivit. Dopo alcuni intervalli di tempo,
il processore ritorna a ricontrollare lo stato.
a. Considerate lo schema sopra citato per loutput di dati un carattere alla volta ver
so una stampante che lavora a 10 caratteri al secondo (cps). Chc cosa succede se
il suo stato viene controllato ogni 200 ms?
b. Considerate poi una tastiera con un buffer di un singolo carattere. In media, i ca
ratteri vengono inseriti alla velocit di 10 cps, ma lintervallo di tempo tra due ri
lasci consecutivi dei tasti pu essere anche di 60 ms. Con quale frequenza il pro
gramma di I/O dovrebbe controllare la tastiera in oggetto?
7.7 Un microprocessore verifica lo stato di un dispositivo I/O di output ogni 20 ms, con
un timer che allerta il processore ogni 20 ms. Linterfaccia del dispositivo include
due porte: ima per lo stato e una per loutput di dati. Qiianto tempo e necessario per

7.9 Parole chiave, domande di revisione e problemi

scansionare e servire il dispositivo, dato un clock di 8 MHz? Assumete per sempli


cit che tutti i cicli di istruzioni pertinenti impieghino 12 cicli di clock.
7.8 Nel Paragrafo 7.3 sono stati citati un pregio c un difetto dellI/O memory mapped
rispetto alTI/O isolato. Elencate altri vantaggi e svantaggi.
7.9 Un particolare sistema viene controllato da un operatore attraverso comandi inse
riti da tastiera. Il numero medio di comandi inseriti in un arco di 8 ore di 60.
a. Supponete chc il processore scansioni la tastiera ogni 100 ms. Quante volte de
ve essere controllata la tastiera in 8 ore?
b. Di quale frazione sarebbe ridotto il numero di visite del processore alla tastiera
in caso di I/O interrupt driven?
7.10 Considerate un sistema che utilizza XVO interrupt driven per un dispositivo parti
colare che trasferisce i dati a una media di 8 KB/s su base continua.
a. Assumete che il processo di interrupt necessiti di circa 100 ms (ovvero, il tempo
per saltare alla routine di servizio dellm tcrrupt [ISR], eseguirla e tornare al pro
gramma principale). Determinate quale frazione di tempo di processore viene
consumata da questo dispositivo di I/O se il dispositivo manda un interrupt per
ogni byte.
b. Assumete ora chc il dispositivo abbia due buffer a 16 byte e interrompa il pro
cessore quando uno di essi pieno. Naturalmente, il processo di interrupt c pi
lungo, perch lISR deve trasferire 16 byte. Mentre esegue la routine di interrupt,
il processore richiede circa 8 ms per trasferire ogni byte. Determinate qual la fra
zione di tempo di processore utilizzata dal dispositivo di I/O in questo caso.
c. Assumete che il processore sia dotato di unistruzione per il trasferimento di I/O
a blocchi come quella dello Z8000, permettendo cos allISR associata di trasfe
rire ogni byte di un blocco in soli 2 ms. Determinate la frazione di tempo di pro
cessore utilizzata da questo dispositivo I/O.
7.11 Praticamente in tutti i sistemi chc includono moduli DMA laccesso DM A alla
memoria principale ha una priorit pi alta rispetto all accesso della CPU alla me
moria principale. Perch?
7.12 Un modulo DM A sta trasferendo caratteri in memoria in modalit cycle stealing,
a partire da un dispositivo chc trasmette a 9600 bps. Il processore sta prelevando
istruzioni alla velocit di un milione al secondo (I MIPS). Di quanto verr rallen
tato il processore a causa dell attivit del DMA?
7.13 Considerate un sistema nel quale i cicli di bus impiegano 500 ns. Il trasferimento del
controllo di bus in entrambe le direzioni dal processore al dispositivo I/O impiega
250 ns. Uno dei dispositivi I/O ha una velocit di trasferimento dei dati di 50 KB/s
e utilizza il DMA. I dati vengono trasferiti un byte alla volta.
a. Supponete di impiegare il DMA in modalit burst. Linterfaccia DMA acquisi
sce cos il dominio del bus prima dellinizio del trasferimento di un blocco e
mantiene il controllo del bus finch il blocco non completamente trasferito. Per

265

266

Sistema di elaborazione Capitolo 7 - Input/Output

quanto tempo il dispositivo tiene occupato il bus quando trasferisce un blocco


di 128 byte?
b. Rifate il calcolo in caso di modalit cycle stealing.
7.14 11 diagramma di temporizzazione dell8237A mette in evidenza chc, una volta co
minciato il trasferimento di un blocco, sono necessari tre cicli di clock del bus per
ogni ciclo DMA. Durante il ciclo DMA, 8237 trasferisce un byte di informa
zione tra la memoria e il dispositivo I/O.
a. Supponete di temporizzare 8237 a una frequenza di 5 MHz. Qiianto tempo
occorre per trasferire un byte?
b. Quale sarebbe la velocit massima di trasferimento dei dati conseguibile?
c. Assumete che la memoria non sia abbastanza veloce e che quindi occorra inseri
re due stati di attesa per ogni ciclo DMA. Qiiale sarebbe la velocit reale di tra
sferimento dei dati?
7.15 Assumete che, nel sistema considerato ncllesercizio precedente, un ciclo di memo
ria richieda 750 ns. Sino a quale valore potete ridurre la frequenza senza intaccare
la velocit di trasferimento dei dati raggiungibile?
7.16 Un controllore DM A serve quattro collegamenti di telecomunicazione in sola ri
cezione (uno per ogni canale DMA) aventi ciascuno una velocit di 64 Kbps.
a. In quale modalit fareste operare il controllore: burst oppure cycle stealing?
b. Quale schema di priorit utilizzereste per servire i canali DMA?
7.17 Un calcolatore a 32 bit presenta due canali selettori e un canale multiplo. Ciascun
canale selettore supporta due unit disco c due unit nastro. Al canale multiplo sono connesse due stampanti parallele, due lettori di scheda e 10 terminali VDT. Si
assumano le seguenti velocit di trasferimento:
Drive del disco
800 Kbyte/s
Drive del nastro magnetico
200 Kbyte/s
Stampante parallela
6,6 Kbyte/s
Lettore di schede
1,2 Kbyte/s
VDT
1 Kbyte/s
Stimate la massima velocit aggregata di trasferimento di I/O per questo sistema.
7.18 Un calcolatore consiste di un processore c di un dispositivo di I/O, detto D, con
nesso alla memoria centrale M tramite un bus condiviso di ampiezza una parola. Il
processore pu eseguire al massimo IO6 istruzioni al secondo. Un istruzione media
richiede cinque cicli macchina, tre dei quali occupano il bus di memoria. Le ope
razioni di lettura e scrittura in memoria utilizzano un ciclo macchina. Si supponga
che il processore stia continuamente eseguendo programmi in background che ri
chiedono il 95 per cento della sua velocit di esecuzione delle istruzioni ma nessu
na istruzione di I/O. Si assuma chc un ciclo macchina equivalga a un ciclo di bus.
Ora si supponga che il dispositivo di I/O debba essere usato per trasferire blocchi
di dati molto grandi tra M c D.

7.9 Parole chiave, domande di revisione e problemi

Figura 7.22

Problema della mela.

a. Se viene usato / da programma e il trasferimento di una parola richiede chc


il processore esegua due istruzioni, stimate la massima velocit di trasferimento
dati possibile per D, in parole al secondo.
b. Stimate la stessa velocit adottando il DMA.
7.19 Una sorgente di dati produce caratteri IRA a 7 bit, e a ciascuno di questi viene ag
giunto un bit di parit. Si ricavi unespressione per la massima velocit di trasferimento
dati effettiva (velocit dei bit dati IRA) su una linea a R bps nei seguenti casi:
a. trasmissione asincrona, con un bit di stop di 1,5 unit
b . trasmissione a bit sincroni, con un frame di 48 bit di controllo c 128 bit di
informazione
c. lo stesso di (b), con un campo informazioni di 1024 bit
d . trasmissione a caratteri sincroni, con 9 caratteri di controllo per frame e 16 ca
ratteri di informazione
e. lo stesso di (d), con 128 caratteri di informazione.
7.20 Qiicsto problema si basa su unillustrazione del meccanismo di I/O suggerita in
[ECKE90] (Figura 7.22). Due donne stanno giocando ai due lati di un alto muret
to. Una di loro, chiamata Applc-server, ha dal suo lato lu magnifico albero carico
di deliziose mele; ella ben lieta di fornire mele allaltra donna ogni volta chc glie
le chiede. Laltra, chiamata Applc-cater, non ha alberi nel proprio giardino, deve per
cibarsi di mele a velocit costante (una mela al giorno toglie il medico di torno):
se ne mangia una quantit maggiore si ammaler, se ne mangia una inferiore depe
rir. Nessuna delle due pu parlare, e dunque il problema consiste nel passaggio di
mele da Applc-server a Applc-cater alla velocit corretta.
a. Si assuma che in cima al muretto ci sia una sveglia e che lorologio possa avere
pi impostazioni per lallarme. Come potrebbe essere utilizzato lorologio per ri
solvere il problema? Disegnate un diagramma temporale per illustrare la solu
zione.

267

268

Sistema di elaborazione Capitolo 7 - Input/Output

Si assuma ora di non avere a disposizione una sveglia. Piuttosto, Applc-cater pos
siede una bandiera che pu sventolare ogni volta chc ha bisogno di una mela.
Suggerite una nuova soluzione. Sarebbe utile una bandiera anche ad Applc-server?
Se s, incorporatela nella soluzione. Descrivete i lati negativi di questapproccio.
c. Si metta ora da parte la bandiera c si assuma lesistenza di una lunga corda.
Suggerite una soluzione migliore rispetto a (b) usando la corda.
b.

Capitolo 8

Supporto ai sistemi operativi

Punti chiave
Il sistema operativo, OS (operatingsystem), il software chc controlla lesecuzione
dei programm i e chc gestisce le risorse del processore. M olte funzioni svolte dal
sistema operativo, tra cui la schedulazione (scheduling) dei processi e la gestione
della memoria, possono essere eseguite in modo efficiente e rapido se !hardware
del processore supporta il sistema operativo. Praticamente, tutti i processori pos
siedono tali capacit in modo pi o meno marcato, compreso !hardware p erla ge
stione della memoria virtuale c dei processi.
Una delle funzioni pi im portanti di un sistema operativo la schedulazione dei
processi (task). LOS determ ina quale processo debba essere eseguito a ogni dato
momento. In genere, {hardware interrompe, d i tanto in tanto, il processo in ese
cuzione cosi da consentire al sistema operativo di prendere una nuova decisione
di scheduling fine di ripartire il tempo di processore in modo imparziale tra i pro
cessi.
Unaltra funzione importante del sistema operativo la gestione della memoria.
La m aggior parte dei sistemi operativi attuali include la memoria virtuale, che pre
senta due vantaggi: (I ) un processo pu andare in esecuzione senza che tutte le sue
istruzioni e i suoi dati siano presenti in memoria centrale, e (2) lo spazio totale di
memoria richiesto da un programm a pu di gran lunga superare leffettiva me
moria centrale del sistema. Sebbene la memoria sia gestita tram ite software, il sisterna operativo si basa sul supporto hardware del processore, incluso lhardwarc
per la paginazione e per la segmentazione.

270

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

onostante che i contenuti dei questo libro siano essenzialmente incentrati sullhardware, all'interno del presente capitolo verr affrontato largomento del softwa
re di sistema. Il sistema operativo un insieme di programmi chc gestisce le risorse del cal
colatore, fornisce servizi ai programmatori e organizzai esecuzione di altri programmi. Per
apprezzare i meccanismi con cui la CPU controlla lelaborazione essenziale una com
prensione dei sistemi operativi. In particolare, vengono spiegati gli effetti degli interrupt
e della gestione della gerarchia di memoria.
Il capitolo inizia con una panoramica e una breve storia dei sistemi operativi, men
tre la parte pi corposa riguarda le funzioni dei sistemi operativi di maggiore rilevanza nel
lo studio dellorganizzazione e dellarchitettura dei calcolatori: lo scheduling e la gestione
della memoria.

8.1

Panoramica dei sistemi operativi

Obiettivi e funzioni dei sistemi operativi


Il sistema operativo c un insieme di programmi che controlla lesecuzione dei programmi
applicativi e funge da interfaccia tra lutente e !hardware. Si pu immaginare chc esso ab
bia due obiettivi.
Convenienza: rendere pi conveniente luso di un calcolatore.
Efficienza: consentire al sistema di elaborazione di utilizzare in modo efficiente le ri

sorse.
Il sistema operativo come interfaccia utente/calcolatore
Lhardware e il software utilizzati per fornire applicazioni a un utente possono essere visti
in modo stratificato o gerarchico, come mostrato nella Figiua 8.1. Lutente finale, gene
ralmente non interessato allarchitettura del calcolatore, vede il sistema di elaborazione co
me unapplicazione che pu essere espressa in un linguaggio di programmazione e svilup
pata da un programmatore. Chi volesse sviluppare un programma applicativo con
istruzioni completamente responsabili del controllo dellhardware del calcolatore do
vrebbe fronteggiare un compito di complessit schiacciante. I programmi di sistema han
no lo scopo di semplificare tale compito. Alcuni di questi programmi, detti anche utility,
implementano le funzioni utilizzate con maggiore frequenza e quelle che possono essere
di aiuto nella creazione dei programmi, nella gestione dei file e nel controllo dei disposi
tivi di I/O. I programmatori si avvalgono di questi supporti per sviluppare applicazioni chc,
durante la loro esecuzione, invocheranno le utility per eseguire determinate funzioni. Il pi
importante programma di sistema il sistema operativo. Questo maschera al program
matore i dettagli deHhrdware e gli fornisce un interfaccia per utilizzare il sistema. Il sistema
operativo agisce come un mediatore, rendendo pi facile per il programmatore e per i
programmi applicativi laccesso e luso di tali servizi.
In breve, il sistema operativo fornisce tipicamente servizi nelle seguenti aree.
Creazione dei programmi : il sistema operativo fornisce servizi, quali editor e debug

g er , per assistere il programmatore nella stesura dei programmi. Generalmente, que


sti servizi sono delle utility messe a disposizione dal sistema operativo.

8.1 Panoram icadeisistem ioperativi

Programmi applicativi

U tility

Hardware

ra 8.1

Strati e viste di un sistema di elaborazione.

Esecuzione dei programmi: per eseguire un programma, le sue istruzioni e i suoi da

ti devono essere caricati nella memoria centrale, i dispositivi di I/O e i file devono es
sere inizializzati, c occorre approntare ulteriori risorse. Il sistema operativo gestisce
tutto questo per lutente.
Accesso ai dispositivi di I/O: a ogni dispositivo di I/O associato un insieme di

istruzioni c di segnali di controllo. Il sistema operativo si fa carico dei dettagli in mo


do chc il programmatore possa utilizzare semplici comandi di lettura e scrittura
Accesso controllato ai file: nel caso dei file, il controllo deve conoscere la natura del

dispositivo di I/O e del formato dei file sul supporto di memorizzazione. Ancora una
volta, il sistema operativo si occupa dei dettagli. Inoltre, nel caso di utilizzo concor
rente da parte di pi utenti, il sistema operativo pu fornire meccanismi di protezione
per controllare laccesso ai file.
Accesso al sistema: nel caso di sistemi condivisi, il sistema operativo controlla lac

cesso al sistema nel suo insieme e alle sue specifiche risorse. La funzione di accesso de
ve fornire la protezione delle risorse e dei dati nei confronti di utenti non autorizza
ti c deve risolvere i conflitti nella contesa delle risorse.
Rilevamento degli errori e relativa risposta: mentre il sistema di elaborazione in

funzione, possono verificarsi vari errori: hardware (quali errori di memoria e guasti
o malfunzionamenti dei dispositivi) o software (come !overflow, il tentativo di ac
cedere a locazioni di memoria proibite e limpossibilit di accettare la richiesta di

271

272

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

unapplicazione). In ogni caso, il sistema operativo deve risolvere la condizione di er


rore con il minimo impatto sulle applicazioni in esecuzione. La risposta pu variare
dalla semplice comunicazione di errore a un nuovo tentativo di effettuare loperazione
fino alla terminazione del programma chc ha provocato lerrore.
Accounting: un buon sistema operativo raccoglie statistiche duso delle risorse ed ef
fettua un monitoraggio dei parametri di prestazione. Qiiestc informazioni risultano
particolarmente utili per anticipare la richiesta di future modifiche e per la messa a
punto del sistema al fine di migliorare le prestazioni. Inoltre, sui sistemi multiutentc, possono essere utilizzate ai fini della fatturazione.
Il sistema operativo come gestore di risorse
Un calcolatore un insieme di risorse per il trasporto, la memorizzazione, lelaborazione
dei dati e il controllo di queste funzioni. Il sistema operativo c responsabile della gestione
di tali risorse.
Possiamo dire chc il sistema operativo a controllare il movimento, la memorizza
zione e lelaborazione dei dati? Da un certo punto di vista, la risposta c affermativa: tramite
la gestione delle risorse del calcolatore, il sistema operativo ha il controllo delle sue fun
zioni di base. Ma questo controllo viene esercitato in maniera curiosa. In genere, immagi
niamo un meccanismo di controllo come qualcosa di esterno, di distinto e separato da
quanto viene controllato. Ad esempio, il sistema di riscaldamento casalingo controllato
da un termostato chc esterno allapparato di generazione del calore e da quello di distri
buzione. Non questo il caso del sistema operativo, che e un meccanismo di controllo inu
suale sotto due aspetti.
Il sistema operativo funziona nella stessa maniera del software ordinario di un cal
colatore; in altre parole, un programma eseguito dal processore.
Il sistema operativo spesso rinuncia al controllo e deve dipendere dal processore per
tornarne in possesso.
Il sistema operativo non , infatti, nicntaltro chc un programma che, al pari degli altri pro
grammi, fornisce istruzioni al processore. La differenza chiave risiede nel programma. Il si
stema operativo dirige il processore nelluso di altre risorse del sistema c nella temporiz
zazione dellcsccuzione di altri programmi. Ma per eseguire questi compiti, il processore
deve sospendere lcsecuzionc del sistema operativo. Dunque, il sistema operativo rinuncia
al controllo affinch il processore svolga del lavoro utile e successivamente riprende il con
trollo per il tempo necessario a preparare il processore a svolgere la successiva parte di la
voro. I meccanismi coinvolti in tutto questo dovrebbero diventare chiari con il procede
re del capitolo.
La Figiua 8.2 suggerisce che le risorse principali sono gestite dal sistema operativo.
Una sua porzione si trova nella memoria centrale e include il kernel, o nucleo, che con
tiene le funzioni utilizzate con maggiore frequenza e altre chc vengono caricate in memo
ria quando devono essere eseguite. La memoria centrale contiene anche i programmi uten
te c i loro dati. Lallocazione della memoria determinata congiuntamente dal sistema
operativo e da quella parte del processore dedicata alla gestione della memoria, come pre
sto vedremo. Il sistema operativo decide quando i dispositivi di I/O possano essere utiliz
zati dai programmi in esecuzione, e controlla laccesso ai file c il loro uso. Il processore stcs-

8.1 Panoramica dei sistemi operativi

Sistema di elaborazione

!:

Dispositivi di I/O

Softw are
di sistem a

C ontrollore di I/O

---------

C ontrollore di I/Ok

Dati e
program m i

+ !)

Stam panti,
tastiere,
fotocam ere d ig itali,
etc.

Figura 8.2

H. J

/X

II sistema operativo come gestore di risorse.

so rappresenta una risorsa, c il sistema operativo deve determinare per quanto tempo il pro
cessore sia dedicato allesecuzione di un particolare programma utente. Nel caso di un si
stema multiprocessore, questa decisione riguarda tutti i processori.

Tipi di sistema operativo


Le caratteristiche peculiari che servono a differenziare i vari tipi di sistemi operativi si di
spongono lungo due dimensioni indipendenti. La prima dimensione specifica se il siste
ma sia batch (a lotti) o interattivo. Nei sistemi interattivi, fu tente/programmatore intera
gisce direttamente con il calcolatore, solitamente tramite un terminale (tastiera/monitor),
per richiedere fesecuzione di un compito o per eseguire una transazione. Inoltre, a secon
da della natura delfapplicazione, Futcnte pu comunicare con il calcolatore durante !ese
cuzione del compito. Al contrario, nei sistemi batch il programma dell utente viene com
binato con i programmi di altri utenti c sottoposto al calcolatore da un operatore. Dopo
il completamento del programma, i risultati vengono presentati alfutente. Al giorno dog
gi, i sistemi batch puri sono molto rari. Tuttavia sar utile esaminarli brevemente.
Una dimensione indipendente riguarda leventuale uso della multiprogrammazione.
Questa tecnica mira a mantenere il processore il pi impegnato possibile, facendolo lavo
rare su pi di un programma alla volta. In memoria risiedono pi programmi, e il proccs-

273

274

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

sorc passa rapidamente dalluno allaltro. I sistemi monoprogrammati lavorano invece su un


solo programma alla volta.
I primi sistemi operativi

Fino alla met degli anni Cinquanta non esistevano i sistemi operativi, per cui il pro
grammatore interagiva direttamente con I hardware della macchina. Qpesti processori ve
nivano attivati da una console, che consisteva in luci ben visibili, interruttori, qualche for
ma di dispositivo di input e una stampante. I programmi, scritti in codice macchina,
venivano inseriti tramite un lettore di schede o di nastri perforati. Se un errore interrom
peva il programma, la condizione di errore veniva indicata dalle luci. Il programmatore po
teva procedere ncllcsamc dei registri e della memoria centrale per determinare la causa del
lerrore. Se il programma giungeva al normale completamento, loutput appariva sulla
stampante.
Questi sistemi primitivi presentavano due problemi principali.
Schedulazione: la maggior parte delle installazioni usava un registro per prenotare

il tempo di processore. In genere, le prenotazioni erano espresse in multipli di 30 mi


nuti. Per cui. se il programma di un utente che aveva prenotato unora era portato a
termine in 45 minuti, si sarebbe verificato uno spreco di tempo di calcolo. Daltro
canto, lutente poteva incontrare problemi, non giungere al completamento nel tem
po concessogli ed essere, quindi, costretto a rimandare la soluzione del problema.
Tempo di configurazione: i programmi, chiamati job, potevano implicare il cari

camento in memoria di un programma scritto in linguaggio ad alto livello (pro


gramma sorgente), del relativo compilatore e il salvataggio del programma compi
lato (programma oggetto) e infine il caricamento e il collegamento ( linking) del
programma oggetto. Ciascuno di questi passi poteva richiedere il montaggio o lo
smontaggio di nastri o limpostazione di pacchi di schede o di nastri. In presenza di
un errore, lutente era, solitamente, costretto a ritornare allinizio della sequenza di
configurazione. Per cui, tuia quantit considerevole di tempo era sprecata nella sem
plice configurazione del programma.
Qiiesta modalit operativa potrebbe essere chiamata elaborazione seriale, per indicare che
gli utenti hanno accesso al calcolatore luno dopo laltro. Nel tempo, sono stati sviluppati
vari strumenti software di sistema per rendere lelaborazione seriale pi efficiente. Tra que
sti, ricordiamo le librerie di funzioni comuni, i linker, i caricatori, i debugger e le routine dei
driver di I/O, comunemente disponibili a tutti gli utenti.
Semplici sistemi batch

I primi processori erano molto costosi, e dunque era importante massimizzarne !utilizzo.
A questo scopo vennero sviluppati dei semplici sistemi operativi batch. Con tali sistemi,
chiamati anche monitor, lutente non ha pi accesso diretto al processore, ma sottopone
il job su schede o su un nastro a un operatore, il quale organizza una sequenza di job e po
ne lintero lotto su un dispositivo di input per luso tramite il monitor.
Per comprendere questo schema, lo si consideri da due punti di vista: quello del mo
nitor e quello del processore. Nel primo caso il monitor controlla la sequenza di eventi.

8,1 Panoramica dei sistemi operativi

Elaborazione
deli interrupt
Driver del
dispositivo
Serializzazione
dei job

Confine

Interprete
del linguaggio
di controllo

Area
programmi
utente

Figura 8.3

Mappa della memoria per monitor residente.

Quindi, la maggior parte del monitor, detta m onitor residente, deve sempre essere in me
moria centrale e disponibile per lesecuzione (Figura 8.3). La parte restante consiste di uti
lit e funzioni comuni che vengono caricate come subroutine nel programma utente alli
nizio dei job chc le richiedono. Il monitor legge i job uno alla volta da un lettore di schede
o da un drive di nastro magnetico. Quando viene letto, il job corrente caricato nellarea
dei programmi utente, e gli viene passato il controllo. Una volta completato, il job resti
tuisce il controllo al monitor che, immediatamente, legge il job successivo. I risultati di cia
scun job vengono stampati per essere forniti allutente.
Si consideri ora questa sequenza dal punto di vista del processore. A un dato istante,
il processore sta eseguendo istruzioni della parte di memoria centrale che contiene il mo
nitor. Queste istruzioni provocano la lettura del successivo job allinterno di unaltra por
zione di memoria. Una volta che il job e stato letto, il processore incontrer nel monitor
unistruzione di salto che lo istruisce a continuare Fcsccuzione allinizio del programma
utente. Il processore poi eseguir istruzioni del programma utente finch non incontra una
condizione di terminazione o di errore. Ciascuno di questi due eventi forza il processore
a prelevare la sua successiva istruzione dal programma monitor. Dunque, la frase il con
trollo passato a un job significa semplicemente che il processore sta eseguendo istruzioni
di un programma utente, mentre il controllo tornato al monitor significa che il pro
cessore sta eseguendo istruzioni del monitor.
Dovrebbe essere chiaro chc il monitor gestisce il problema della schedulazione. Si ac
coda un lotto di job, ciascuno dei quali viene eseguito nel modo pi rapido possibile, sen
za tempi morti.

275

276

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Chc dire del tempo di configurazione del job? Il monitor gestisce anche questo. Per
ciascun job, le istruzioni vengono incluse in l u i linguaggio di controllo dei job ( JC L Job
control language). Si tratta di un tipo particolare di linguaggio di programmazione utiliz
zato per fornire istruzioni al monitor. Un semplice esempio quello di un utente chc sot
topone un programma scritto in FORTRAN pi i dati da utilizzare. Ogni istruzione
FORTRAN e ogni dato si trova su ima scheda perforata o in un record su nastro. Oltre al
le istruzioni FORTRAN e ai dati, il job include istruzioni di controllo, denotate dal pre
fisso
Il tipico formato del job assomiglia a questo:
SJOB
SFTN
} istruzioni FORTRAN

SLOAD
SRUN
} Dati

SEND
Per eseguire questo job, il monitor legge listruzione SFTN e carica il compilatore FOR
TRAN da ununit di memoria esterna (solitamente un nastro). Il compilatore traduce il
programma utente in codice oggetto, che viene salvato nella memoria centrale o di mas
sa. Nel primo caso lintera operazione viene detta compile, load and go. Sc loggetto vie
ne salvato su nastro, allora e richiesta !istruzione SLOAD. Questa viene letta dal monitor
che riprende il controllo dopo la compilazione. Il monitor invoca il loader (caricatore), che
scrive il programma oggetto in memoria, al posto del compilatore, e gli trasferisce il con
trollo. In questa maniera, un ampio segmento di memoria centrale pu essere condiviso
tra vari sottosistemi, sebbene istante per istante solo uno di questi risieda in memoria e sia
in esecuzione.
Vediamo che il monitor, o sistema operativo batch, semplicemente un programma
che fa affidamento sulla capacit del processore di leggere le istruzioni dalle varie porzio
ni della memoria centrale al fine di prendere c cedere il controllo in modo alternato. Sono
anche auspicabili altre caratteristiche hardware.
Protezione della memoria: il programma utente in esecuzione non deve alterare la

rea di memoria che contiene il monitor. Sc ci avvenisse, lhardware del processore


dovrebbe rilevare un errore e trasferire il controllo al monitor. Il monitor dovrebbe
eliminare allora il job, stampare un messaggio di errore e caricare il successivo job.
Tim er: si usa un timer per evitare che un job monopolizzi il sistema. Il timer azze

rato allinizio di ogni job. Quando il timer scade, si verifica un interrupt e il control
lo ritorna al monitor.
Istruzioni privilegiate: alcune istruzioni sono dette privilegiate c possono essere ese

guite solo dal monitor. Tra queste troviamo le istruzioni di I/O. Dunque il monitor
mantiene il controllo dei dispositivi di I/O. Ci evita, per esempio, che un pro
gramma utente legga accidentalmente istruzioni di controllo di un altro job. Se un
programma utente deve usare TI/O, richiede al monitor di eseguire le operazioni per

8.1 Panoram icadeisistcm iopcrativi

Lettura di un record per file


Esecuzione di 100 istruzioni
Scrittura di un record per file

15
1 &
15 5

TOTALE

21

Utilizzo percentuale della CPU =

Figura 8.4

= 0.032 = 3,2%

Esempio di utilizzo del sistema.

suo conto. Se il processore incontra unistruzione privilegiata mentre sta eseguendo


un programma utente, il suo hardware lo considera un errore e trasferisce il control
lo al monitor.
Interrupt: i primi modelli di calcolatore non avevano questa capacit.
Il processore esegue alternativamente programmi utente c monitor. Ci comporta due sa
crifici: parte della memoria occupata dal monitor e parte del tempo di processore con
sumato dal monitor. Pur essendo due forme di overhead , i sistemi batch migliorano !uti
lizzo del calcolatore.
Sistemi batch multiprogrammati

Anche con la serializzazione automatica dei job fornita da un semplice sistema operativo
batch, il processore rimane molto spesso inattivo, essendo i dispositivi di I/O pi lenti. La
Figura 8.4 mostra in dettaglio un calcolo rappresentativo riferito a un programma chc ela
bora un file di record ed esegue, in media, 100 istruzioni d i processore per record. In que
sto esempio il calcolatore spende pi del % per cento del proprio tempo in attesa che i di
spositivi di I/O terminino il trasferimento dati! La Figura 8.5a illustra questa situazione.
Il processore trascorre una data quantit di tempo in esecuzione, fino a quando raggiun
ge unistruzione di I/O c deve aspettarne la conclusione prima di poter procedere.
Qiiesta situazione dinefficienza non inevitabile. Sappiamo che occorre memoria
sufficiente per ospitare il sistema operativo (monitor residente) e un programma utente.
Supponiamo di disporre di uno spazio per il sistema operativo e due programmi utente.
Ora, quando un job impone unattesa per lI/O, il processore pu passare allaltro, chc pro
babilmente non c in attesa di I/O (Figura 8.Sb). Inoltre, potremmo espandere la memo
ria per contenere 3,4 o pi programmi e passare dalluno allaltro (Figura 8.5c). Ci no
to come m ultiprogram m azionc, o m u ltitaskin g.1 Si tratta di un tema centrale dei
moderni sistemi operativi.

1 II termine multitasking viene Talvolta impiegato per identificare pi task allinterno dello stesso programma, che
possono essere gestiti in modo concorrente dal sistem a operativo, in contrasto con la multiprogrammazione, che si
riferirebbe a pi processi da parte di pi programmi. Tuttavia, pi comune considerare i termini equivalenti, co
me avviene nella m aggior parte dei dizionari standard (ad esempio, IEEE Std 100-1992, Ihe New IEEE Standard
Dictionary o f Electrical and Electronics Terms).

277

278

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Program m a A

Run

Attesa

Run

Attesa

Tempo -----------------------------------*
(a) Monoprogrammazione

Program m a A

Run

Attesa

Run

Attesa

Program m a B Attesa Run

Attesa

Run

Attesa

Run Run
A
B

Attesa

Run Run
A
B

Attesa

Tempo -----------------------------------*
(b) M ultiprogram mazione con due programmi

Program m a A

Run

Attesa

Attesa Run

Program m a C

Combinazione

Attesa

Run

Run

Attesa

'Run

Run Run #11


B ' C /
A

Attesa

Attesa

Attesa

Attesa

Attesa
Run Run 'n,
A
B ; c ^

Attesa

Tempo
(e) M ultiprogram m azione con tre programmi
Figura 8.5

Esempio di multiprogrammazione.

Esempio 8 .1 Qpcsco esempio illustra i vantaggi della multiprogrammazione. Considerate


un computer con 250 MB di memoria disponibile (non utilizzata dal sistema operativo),
un disco, un terminale c una stampante. Tre programmi, diciamo JO B l,JO B 2 cJOB3, so
no mandati in esecuzione contemporaneamente, con gli attributi che vedete elencati nel
la Tabella 8.1. Assumiamo cheJOB2 eJOB3 effettuino richieste minime sul processore e
cheJOB3 utilizzi continuamente disco e stampante. In un semplice ambiente batch i pro
grammi verranno eseguiti sequenzialmente. In questo caso, JO B l completa la sua esecu
zione in 5 minuti, JOB2, dopo unattesa di 5 minuti, termina la sua esecuzione in 15 mi
nuti e lesecuzione di JOB3 inizia dopo 20 m inuti per terminare 30 minuti dopo il
momento in cui stato mandato in esecuzione. Lutilizzo medio delle risorse, il through-

8.1 Panoramica dei sistemi operativi

Tabella 8.1

Attributi di esecuzione di un programma.

Tipo
Durata
Memoria richiesta
Usa il disco?
Usa il terminale?
Usa la stampante?

JOBI

JOB2

JOB3

C PU Bound

1/0 Bound

I/O Bound

5 m in

15 min

10 min

50 M

IOOM

80 M

No

No

Si

No

Si

No

No

No

Si

put e il tempo di risposta sono mostrati nella Tabella 8.2, nella colonna relativa alla monoprogrammazione. Lutilizzo di ogni dispositivo illustrato nella Figura 8.6a. E eviden
te che nei 30 minuti richiesti per lcsccuzionc dei tre programmi ogni risorsa viene note
volmente sottoutilizzata.
Supponete ora che i programmi siano eseguiti in maniera concorrente su un sistema
operativo multiprogrammato. Siccome i programmi si contendono le risorse raramente,
tutti e tre possono essere eseguiti pressappoco nel tempo minimo (assumendo che il tem
po di processore allocato a JOB2 e JOB3 sia sufficiente per mantenere attive le loro ope
razioni di input/output). JO B l richieder esattamente 5 minuti per essere completato, ma
al suo completamento JOB2 sar gi a un terzo della sua esecuzione eJOB3 alla met. 1tre
programmi termineranno entro 15 minuti. Il miglioramento risulta evidente esaminando
la colonna relativa alla multiprogrammazione della Tabella 8.2, ottenuta a partire dagli
istogrammi della Figura 8.6b.

Come per i semplici sistemi batch, anche un sistema batch multiprogrammato deve fare
affidamento su determinate caratteristiche hardware del computer. La caratteristica pi im
portante chc risulta utile per la multiprogrammazione il supporto hardware alle inter
ruzioni di I/O e al DMA. Con / interrupt driven o il DMA il processore pu inviare
un comando di I/O per un determinato job ed eseguirne un altro mentre TI/O viene svol
to dal controllore del dispositivo. Quando loperazione di I/O c completata, il processo
re viene interrotto e il controllo passa a un programma di gestione dcHintcrrupt del siste
ma operativo. Il sistema operativo trasferir poi il controllo a un altro job.
Tabella 8.2

Effetti della multiprogrammazione sul l'utilizzo di risorse.

Uso del processore


Uso della memoria
Uso del disco
Uso della stampante
Tempo
Throughput
Tempo medio di risposta

Monoprogrammazione

Multiprogrammazione

20%

40%

33%

67%

33%

67%

33%

67%

30 min

15 min

6 job/h

1 2 job/h

18 min

10 min

279

280

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

100 %

CPU

CPU

M em oria

M em oria

Disco

Disco

Term inale

Terminale

Stam pante

Stampante

0%
Storia del job

S toria del job


10

15
Minuti

20

25
Tempo
'lem po

( a ) M o n o p ro g ra m in a z io n c
F ig u ra 8 .6

(b ) M u ltip ro g ra m m a z io n e

Isto g ram m i di u tiliz z o .

I sistemi operativi multiprogrammati sono discretamente sofisticati se paragonati ai siste


mi a programma singolo, o monoprogrammati. I job pronti per lcsccuzionc devono es
sere mantenuti nella memoria centrale, il che richiede una forma di gestione della me
moria. Inoltre, se parecchi job sono pronti per !esecuzione, il processore deve decidere
quale mandare in esecuzione, il chc richiede algoritmi di schedulazione. Questi concetti
saranno discussi pi avanti nel capitolo.
Sistemi a condivisione di tempo

Con luso della multiprogrammazione, le elaborazioni batch possono essere abbastanza ef


ficienti. Tuttavia spesso auspicabile fornire all utente la possibilit di interagire diretta
mente con il calcolatore e per alcuni job, quali lclaborazione delle transazioni, !interatti
vit c essenziale.
Oggi, i requisiti di elaborazione interattiva possono essere, e molte volte lo sono,
soddisfatti dai microcomputer dedicati. Tale opzione non era disponibile negli anni
Sessanta, quando i calcolatori erano grandi e costosi. Allora venne sviluppata la condivi
sione di tempo [timesharing).
La multiprogrammazione, che consente al processore di gestire pi job nello stesso
istante, pu anche essere usata per gestire job interattivi. In questultimo caso, si parla di tec
nica a condivisionc di tempo, in quanto il tempo di processore viene ripartito tra pi uten
ti. In questi sistemi, gli utenti accedono al calcolatore attraverso terminali, c il sistema ope
rativo alternativamente dedica allesecuzione di ciascun programma utente un breve periodo

8.2 Schedulazione

Multiprogrammazione batch/Condivisione di tempo._______________

Tabella 8.3

M u ltip rogram m azione batch_______ C o n d ivision e d i tem po


Obicttivo principale

Massimizzare luso del processore

M inim izzare il tempo di risposta

Fonte di direttive al siseema operacivo

Com andi del linguaggio di


controllo del job forniti con il job

Com andi da terminale

di elaborazione. Dunque, se ci sono n utenti, ciascuno di essi vedr mediamente solo Mn


della velocit effettiva del calcolatore, senza contare gli ovei'head del sistema operativo. Dati
i tempi di reazione umana relativamente lenti, il tempo di risposta di un sistema ben pro
gettato dovrebbe essere comparabile a quello di un calcolatore dedicato.
Sia la multiprogrammazione batch sia quella a condivisionc di tempo utilizzano la
multiprogrammazione. Le differenze fondamentali sono elencate nella Tabella 8.3.

8.2

Schedulazione____________________________________

Il fondamento della multiprogrammazione la schedulazione. Di fatto esamineremo quat


tro tipi di schedulazione (Tabella 8.4), ma prima introduciamo il concetto di processo.
Qiiesto termine fu usato per la prima volta dai progettisti del sistema operativo Multics ne
gli anni Sessanta. Si tratta in qualche modo di un termine pi generale rispetto a job. Tra
le molte definizioni possibili, ricordiamo:
un programma in esecuzione
lo spirito animato di un programma
quellentit alla quale viene assegnato un processore.
Questo concetto dovrebbe diventare pi chiaro nel prosieguo.

Schedulazione a lungo termine


Lo schedulatorc (scheduler) a lungo termine determina quali programmi siano disponibi
li per lelaborazione. Controlla, dunque, il grado di multiprogrammazione, cio il nume
ro di processi in memoria. Ogni programma pronto per 1elaborazione diventa un proces
so e viene immesso in una coda dello schedulatorc a breve termine. In alcuni sistemi, un
processo appena creato assume una condizione detta swapped-out, e viene aggiunto alla
coda dello schedulatorc a medio termine.
Tabella 8.4

Tipi di schedulazione.

Schedulazione a lu ngo term ine

Decide di aggiungere un processo a quelli da eseguire.

Schedulazione a m edio term ine

Decide di aggiungere un nuovo processo in memoria centrale.

Schedulazione a breve term ine

Decide quale processo disponibile sar eseguito dal processore.

Schedulazione d i 1 / 0

Decide quale richiesta di I/O di un processo verr soddisfatta.

282

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Nei sistemi batch (o quanto meno nella porzione batch dei sistemi operativi generi
ci) i job appena sottoposti vengono registrati su disco e mantenuti in una coda di batch.
Lo scheduler a lungo termine crea processi dalla coda non appena possibile. In questo so
no coinvolte due decisioni. Infatti lo scheduler deve decidere se il sistema operativo pu
accettare nuovi processi e quali job della coda di batch trasformare in processi. I critcri
adottati possono includere la priorit, il tempo di esecuzione previsto c i requisiti di I/O.
Per i programmi interattivi in un sistema a condivisione di tempo, quando un uten
te tenta di connettersi al sistma si genera una richiesta di processo. Gli utenti time-sha
ring non vengono semplicemente accodati e tenuti in attesa fino a quando il sistema li pu
accettare. Piuttosto, il sistema operativo accetta richieste di connessione fino a quando il
sistema diventa saturo, c ulteriori richieste ricevono un messaggio chc indica la saturazio
ne del sistema e invita lutente a riprovare pi tardi.

Schedulazione a medio termine


La schedulazione a medio termine fa parte delle funzioni di swapping descritte nel Paragrafo
8.3. Di solito, la decisione di caricare in memoria (swap-in) un processo o di rimuoverlo
(swap-out) prender in considerazione i requisiti di memoria.

Schedulazione a breve termine


Lo scheduler ad alto livello viene eseguito in modo relativamente poco frequente e deci
de se ammettere o meno un nuovo processo, e quale. Lo scheduler a breve termine, noto
anche come dispatcher, viene eseguito di frequente c determina quale sia il successivo job
da eseguire.
Stati del processo
Per comprendere il modo di operare dello scheduler a breve termine dobbiamo conside
rare il concetto di stato del processo. Durante il tempo di vita di un processo, il suo stato
cambier un certo numero di volte. Si usa il termine stato in quanto denota 1esistenza di
determinate informazioni che indicano lo stato in quell istantc. Come minimo, un processo
ha cinque possibili stati (Figura 8.7).

Avviene
un evento

Figura 8.7

/ A ttesa
di un evento

M o dello di processo a cin q u e stati.

8.2 Schedulazione

Figura 8.8

Blocco di controllo del processo.

New: un programma viene accettato dallo scheduler ad alto livello ma non anco

ra pronto per Icsecuzione. Sar il sistema operativo a inizializzarc i processi, metten


doli nello stato ready.
Ready: il processo pronto per essere eseguito, e in attesa del processore.
Running: il processo in esecuzione.
Waiting: il processo sospeso dallesecuzione in attesa di alcune risorse di sistema,

quali /.
Halted: il processo c terminato c scompare dal sistema operativo.

Per ciascun processo, il sistema operativo deve mantenere alcune informazioni di stato e
altre informazioni necessarie per lesecuzione. Ogni processo descritto da un blocco di con
trollo del processo (Figura 8.8), che tipicamente contiene i seguenti dati.
Identificatore: ciascun processo corrente presenta un identificatore univoco.
Stato: lo stato attuale del processo.
Priorit: il livello di priorit.
Program counter: lindirizzo della successiva istruzione da eseguire.
Puntatori alla memoria: le locazioni iniziali e finali del processo nella memoria.

283

284

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Dati di contesto: i dati presenti nei registri del processore mentre il processo in ese

cuzione (saranno discussi nella terza parte). Per ora, sufficiente dire che questi da
ti rappresentano il contesto del processo. Questi dati pi il program counter sono
salvati quando il processo abbandona lo stato ready e sono recuperati dal processo
re per riprenderne 1esecuzione.
Informazioni di stato di I/O: includono richieste eccezionali di I/O, i dispositivi

di I/O (ad esempio i drive di nastro) assegnati al processo, la lista di file assegnati al
processo c cos via.
Informazioni amministrative: possono includere la quantit di tempo di proces

sore utilizzata, i limiti temporali, i numeri di account e cos via.


Qiiando lo scheduler accetta un nuovo job o una richiesta utente per lesecuzione, crea un
blocco di controllo del processo (inizialmente vuoto) c pone il processo associato nello sta
to new. Il sistema compila adeguatamente il blocco di controllo del processo, e lo pone nel
lo stato ready.
Tecniche di schedulazione
Per comprendere come il sistema operativo gestisca la schedulazione dei job in memoria,
iniziamo a considerare il semplice esempio della Figura 8.9 che mostra una certa partizio
ne della memoria centrale. Il nucleo del sistema operativo ovviamente sempre residente.
Inoltre, ci sono alcuni processi attivi, inclusi A c B1a ciascuno dei quali c stata allocata una
porzione di memoria.
Nellistante iniziale il processo A c in esecuzione. Il processore sta eseguendo istru
zioni appartenenti al programma contenuto nella partizione di memoria di A. In un istan
te di tempo successivo, il processore conclude lesecuzione delle istruzioni di A e comin
cia a eseguire le istruzioni dellarea del sistema operativo. Ci avverr per una delle seguenti
tre ragioni.
1. Il processo A invia una chiamata di servizio (ad esempio, una richiesta di I/O) al si
stema operativo. Lcsccuzione di A sospesa fino a quando tale chiamata viene sod
disfatta dal sistema operativo.
2. Il processo A provoca un interrupt. Si tratta di un segnale hardware destinato al pro
cessore. Quando questo viene rilevato, il processore smette di eseguire A c trasferi
sce il controllo al gestore dellinterrupt nel sistema operativo. Linterrupt pu essere
causato da svariati eventi relativi ad A. Un esempio lui errore, quale il tentativo di
eseguire unistruzione privilegiata. Un altro esempio dato dal timeout; per evitare
che qualche processo monopolizzi il processore, questi assegnato a turno ai processi
per un breve periodo di tempo.
3. Linterrupt provocato da un evento esterno al processo A. Un esempio c il comple
tamento di unoperazione di I/O.
In ogni caso, il risultato il seguente. Il processore salva i dati di contesto e il program coun
ter di A nel blocco di controllo del processo A e inizia ad eseguire istruzioni del sistema
operativo chc svolgono certe funzioni, come ad esempio linizio di unoperazione di I/O.
Poi la parte del sistema operativo relativa allo schedulater a breve termine decide quale sia
il successivo processo da eseguire. In questo esempio, viene scelto B. Il sistema operativo

8.2 Schedulazione

Sistema operativo

S is t e m a O p e r a t iv ^ ^ | ^

Sistema operativo

C PU

Gestore di interrupt

I Gestore di servizio I
jSchcdulatore
I (cstore di interrupt |

Gestore di interrupt

In esecu zione'

A
In a tte sa

In a tte s a

Gestore di servizio
Schedulatorc

Gestore di servizio
Schedulatore

\\ I //

CPU

/
B

B
P ro nto

P ro nto

K
In esecu zio n e'

\\ I //

C PU

^/|\\^
A ltre p a rtiz io n i

Figura 8.9

A ltre p a rtiz io n i

A ltre p a rtiz io n i

Esempio di schedulazione.

istruisce il processore a ripristinare i dati di contesto di B e procede con lesecuzione di B


da dove era stata lasciata.
Questo semplice esempio evidenzia il funzionamento di base dello scheduler a bre
ve termine. La Figura 8.10 mostra i principali elementi del sistema operativo coinvolti nel
la multiprogrammazione e nella schedulazione dei processi. Il sistema riceve il controllo
del processore per eseguire la routine di interrupt o di gestione della chiamata di servizio.
Una volta che Tinterrupt o la chiamata di servizio sono stati gestiti, il sistema invoca
lo scheduler a breve termine per selezionare un processo per lesecuzione.
Per svolgere il proprio lavoro, il sistema operativo utilizza delle code, cio semplice
mente la lista dattesa di processi che aspettano qualche risorsa. La coda a lungo termine
una lista dei job che attendono luso del sistema. Non appena le condizioni lo permet
tono, lo scheduler ad alto livello alloca memoria c trasforma in processo uno degli elementi
in attesa. La coda a breve termine c costituita dai processi ready. Ciascuno dei quali po
trebbe essere il prossimo a usare il processore. La scelta affidata allo scheduler a breve ter
mine. Generalmente, si usa un algoritmo round-robin, che considera un processo dopo
laltro, a rotazione, ma si possono anche usare livelli di priorit. Infine, c una coda di I/O
per ogni dispositivo di I/O. Pi processi possono richiedere luso dello stesso dispositivo
di I/O. Tutti i processi in attesa di usare un dispositivo sono incolonnati nella sua coda.

285

286

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

C hiam ata
di servizio
dal processo

Interrupt
dal processo
Interrupt
d allI/O

Coda
Coda
a lungo a breve
term ine termine

Codice del gestore


di interrupt

_--- ---------------------------

Code
di I/O

Codice dello
schedulatore
a breve termine

Trasferim ento di controllo al processo


Figura 8.10

Elementi chiave di un sistema operativo multiprogrammato.

La Figura 8.11 suggerisce come i processi progrediscano nel calcolatore sotto il controllo
del sistema operativo. Ogni richiesta di processo (job batch, o interattivo) c posta nella co
da a lungo termine. Non appena le risorse sono disponibili, una richiesta di processo di
venta un processo che viene dichiarato ready e immesso nella coda a breve termine. Il pro
cessore alterna Icscciizione di istruzioni di sistema allcsccuzione dei processi utente.
Mentre ha il controllo, il sistema operativo decide quale sar il successivo processo della
coda a breve termine ad essere eseguito. Appena possibile il sistema operativo indirizza il
processore sul processo prescelto.
Come gi detto, un processo in esecuzione pu essere sospeso per varie ragioni. Se vie
ne sospeso per una richiesta di I/O da parte del processo stesso, viene posizionato nel
lopportuna coda di I/O. Se viene sospeso da un timeout o perch il sistema operativo de
ve svolgere compiti urgenti, allora viene posto nello stato ready e collocato nella coda a
breve termine.
Infine, ricordiamo che il sistema operativo gestisce anche le code di I/O. Al comple
tamento di unoperazione di I/O, il sistema operativo rimuove il processo appena soddi
sfatto dalla coda di I/O c lo pone nella coda a breve termine. Seleziona poi un altro pro
cesso in attesa (se ne esiste qualcuno) c segnala al dispositivo di I/O di soddisfare la
richiesta del processo.

8.3 Gestione della memoria

Figura 8.11

8.3

Rappresentazione delle code di schedulazione del processore.

Gestione della memoria

In un sistema monoprogrammato, la memoria centrale divisa in due parti: una per il si


stema operativo (monitor residente) e una per il programma in esecuzione. In un sistema
multiprogrammato, la porzione utente di memoria suddivisa per ospitare pi proces
si. Il compito di suddividerla viene eseguito dinamicamente dal sistema operativo, ed e no
to come gestione della memoria.
Unefficacc gestione della memoria fondamentale nei sistemi multiprogrammati. Se
in memoria sono presenti solo pochi processi, allora per la maggior parte del tempo tutti
i processi saranno in attesa di I/O e il processore rimarr inattivo. Dunque, la memoria de
ve essere allocata in modo efficiente per collocare in memoria il maggior numero di pro
cessi possibile.

Swapping
Riferendosi ancora una volta alla Figura 8.11, abbiamo discusso tre tipi di code: la coda a
lungo termine per le richieste di nuovi processi, la coda a breve termine dei processi pron
ti a usare il processore, c le varie code di I/O per i processi non pronti. Ricordiamo chc la
ragione di questo elaborato meccanismo risiede nel fatto che le attivit di I/O sono mol-

287

288

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

to lente e dunque il processore di un sistema monoprogrammato rimane inattivo per la


maggior parte del tempo.
Ma la disposizione della Figura 8.11 non risolve interamente il problema. vero chc,
in questo caso, la memoria contiene un maggior numero di processi e che il processore pu
operare su un altro processo quando un processo in attesa. Ma il processore talmente
pi veloce delll/O chc molte volte tutti i processi in memoria sono in attesa di I/O.
Quindi, anche nella multiprogrammazione, un processore potrebbe rimanere inattivo per
la maggior parte del tempo.
Chc fare? Si potrebbe estendere la memoria centrale per ospitare ancora pi proces
si; ma questo approccio presenta due difetti. Primo, la memoria ancora costosa. Secondo,
la richiesta di memoria dei processi cresciuta tanto rapidamente quanto la diminuzione
dei costi della memoria. Dunque, memorie pi ampie hanno prodotto processi pi gran
di, non un numero maggiore di processi.
Unaltra soluzione lo swapping (Figura 8.12). Abbiamo una coda a lungo termine
di richieste di processo, tipicamente memorizzate su disco, chc vengono accettate una al
la volta non appena diventa disponibile dello spazio. 1 processi completati vengono rimossi
dalla memoria centrale. Ora si presenter la situazione in cui nessuno dei processi in meM emoria centrale

Disco

Sistem a
operativo
Coda a
lungo termine
*

(a) Schedulazione del job


Disco

(b) Swapping
Figura 8.12

Uso d e llo sw apping.

"

Job e sessioni
utente completati

8.3 Gestione della memoria

moria ready (ad esempio, sono tutti in attesa di unoperazione di I/O). Piuttosto che ri
manere inattivo, il processore trasferisce su disco uno di questi processi ponendolo in una
coda intermedia destinata a contenere i processi temporaneamente espulsi dalla memoria.
Poi, il sistema operativo provvede a portare in memoria un altro processo proveniente dal
la coda intermedia, oppure onora la richiesta di un nuovo processo dalla coda a lungo ter
mine. Lesecuzione quindi continua con il processo appena arrivato.
Lo swapping rappresenta, comunque, unoperazione di I/O, e quindi esiste il rischio
di peggiorare la situazione piuttosto chc di migliorarla, ma poich /O del disco c gene
ralmente quello pi veloce nel sistema (in confronto a un nastro o a una stampante), di nor
ma lo swapping migliorer le prestazioni. Uno schema pi sofisticato, che coinvolge la me
moria virtuale, migliora le prestazioni rispetto a un semplice swapping. Questargomento
sar trattato tra breve. Ma prima dobbiamo preparare il campo spiegando il partizionamento e la paginazione.

Partizione della memoria


Lo schema pi semplice per la gestione della memoria disponibile utilizzare pa'tizioni a
dimensionefssa, come mostrato nella Figura 8.13. Si noti che la dimensione delle partizioni
fissa, ma non necessariamente uguale per tutte. Quando un processo c portato in me
moria, viene posto nella partizione pi piccola in grado di contenerlo.
Anche con luso di partizioni di diversa dimensione fissa, si avr spreco di memoria.
Nella maggior parte dei casi, un processo non richiede esattamente la quantit di memo
ria fornita dalla partizione. Ad esempio, un processo che richiede 3 Mbyte di memoria sa
rebbe posto nella partizione da 4 Mbyte della Figura 8.13b, il chc comporterebbe la per
dita di 1 Mbyte, spazio che potrebbe essere utilizzato da un altro processo.
Un approccio pi efficiente luso di partizioni a dimensione variabile. Ai processi por
tati in memoria viene allocata esattamente la quantit di memoria richiesta.
Esempio 8.2 La Figura 8.14 mostra un esempio relativo a una memoria di 64 MB.
Allinizio la memoria principale vuota, fatta eccezione per il sistema operativo (a).
Vengono poi caricati tre processi a partire da dove il sistema operativo termina e occupando
esattamente lo spazio richiesto da ciascun processo (b, c, d). Dopo queste operazioni nel
la parte finale della memoria resta uno spazio troppo piccolo per un quarto processo. In
un certo istante, nessuno dei processi in memoria ready. Il sistema operativo scarica il pro
cesso 2 (e) lasciando spazio sufficiente per caricare un nuovo processo, il 4 (f ). Essendo que
stultimo pi piccolo rispetto al processo 2, si viene a creare un ulteriore piccolo spazio vuo
to. In seguito, si giunge al punto in cui nessuno dei processi in memoria centrale c read)7,
ma il processo 2, nello stato ready-suspend, disponibile. Poich non ce spazio a sufficienza
in memoria per il processo 2, il sistema operativo scarica il processo 1 (g) e carica di nuo
vo il processo 2 (h).

Lesempio mostra che il metodo inizia bene, ma alla fine porta a una situazione nella qua
le ci sono moltissime piccole lacune in memoria. Con il passare del tempo, la memoria si

289

290

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

S is te m a o p erativ o
SM

S iste m a o p erativ o
8M
2 M

8 M

4M
6 M

8M
8M
8M

8M
8 M

12 M

8M

8M
16 M
8 M

(a ) P artiz io n i di u g u a l d im en sio n e
Figura 8.13

(b) P a rtiz io n i d i v a rie d im ensio n i

Esempio di partizione fissa di una memoria da 64 Mbyte.

fa sempre pi frammentata e il suo utilizzo cala. Una tecnica per fronteggiare questo pro
blema la com pattazione: Di tanto in tanto, il sistema operativo trasla i processi in me
moria per collocare tutta la memoria libera in un unico blocco. QtLesta procedura consu
ma tempo e costituisce uno spreco nelluso del processore.
Prima di considerare i modi per trattare i difetti della partizione della memoria, dob
biamo chiarire le questioni rimaste in sospeso. Se il lettore considera per un istante Ia

8.3 Gestione della memoria

Sistema
operativo

Sistema
operativo
20M

Processo 1

20M

Processo 1

20M

14M

Processo 2

14M

P rocesso!

} 56M
V 36M

22M

Processo 3 y i sm
}-4M

(a)

(b )

(C)

(d)

Sistema
operativo

Sistema
operativo

Sistema
operativo

Sistema
operativo

Processo 1

20M

14M

Processo 3 18M

Processo 1

20M

Processo 4

8M

Processo 4 ]- SM

6M

- 6M

Processo 3 >- 18M

j- 4M
(e)
Figura 8.14

20M

Processo 3 * 18M

14M

Processo 4

Prwesso 3

4M

f 4M
(f)

Processo 2

(g)

(h)

Effetti del partizionamento dinamico.

Figura 8.14, vedr quanto sia bassa la probabilit che un processo venga caricato ogni vol
ta nella stessa posizione di memoria. Inoltre, la compattazione, trasla i processi allinterno
della memoria centrale. I processi consistono di dati e istruzioni che conterranno indiriz
zi di due tipi:
indirizzi di dati
indirizzi di istruzioni, utilizzati per i salti.
Qiiesti indirizzi non sono fissi, ma cambiano ogni volta che un processo viene caricato. Per
risolvere questo problema, si opera una distinzione tra indirizzi logici e fisici.

291

292

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Un indirizzo logico c espresso come locazione relativa rispetto allinizio del pro
gramma. Le istruzioni allinterno del programma contengono solo indirizzi logici. Un in
dirizzo fisico rappresenta uneffettiva locazione nella memoria centrale. Quando il pro
cessore esegue un programma, converte automaticamente gli indirizzi logici in fisici
sommando a ogni indirizzo logico lattuale locazione di partenza del processo, detta indi
rizzo base (base address). Si tratta di un altro esempio di caratteristica hardware del pro
cessore progettata per rispettare i requisiti del sistema operativo. Lesatta natura di tale ca
ratteristica dipende dalla strategia di gestione della memoria adottata. Vedremo svariati
esempi pi avanti nel capitolo.

Paginazione
Sia le partizioni a dimensione fissa sia quelle a dimensione variabile utilizzano la memoria
in modo inefficiente. Si supponga, comunque, che la memoria sia suddivisa in piccoli
blocchi di uguale dimensione e che anche i processi siano divisi in parti della stessa di
mensione. Allora le porzioni di programma, dette pagine {pages), potrebbero essere asse
gnate ai blocchi di memoria, detti frame. Dunque, lo spazio sprecato per ciascun proces
so al pi una frazione dellultima pagina.
La Figura 8.15 mostra un esempio di paginazione. In un dato istante, alcuni frame di
memoria sono usati e altri sono liberi. La lista dei frame liberi nota al sistema operativo. Il

Elenco dei fram e liberi


13
14
15
18

Elenco dei fram e liberi


M emoria
centrale

20

M emoria
centrale

20

Processo A
Pagina 0
Pagina 1
Pagina 2
Pagina 3

In uso

Processo A
Pagina 0
Pagina 1
Pagina 2
Pagina 3

P agina 0
di A

14

P agina 1
di A

15

P agina 2
di A

16 In uso

In uso

17 In uso

T abella delle
pagine di A
In uso

13

18
13
14
15

18

19 In uso

20
21

(a ) P rim a
Figura 8 .1 5

A llo c a zio n e dei frame lib eri.

P agina 3
di A

(b) Dopo

8.3 Gestione della memoria

processo A, memorizzato su disco, consiste di quattro pagine. Qiiando giunge il momento


di caricarlo, il sistema operativo trova quattro frame liberi e vi carica le quattro pagine di A.
Si supponga ora, come nellesempio, di non disporre di un numero sufficiente di frame
contigui disponibili a contenere il processo. Questa situazione impedisce al sistema opera
tivo di caricare A? La risposta negativa, perch ancora una volta possiamo usare il concet
to di indirizzo logico. Un semplice indirizzo base non sar pi sufficiente. Infatti, per ciascun
processo, il sistema operativo costruisce una tabella delle pagine. Airinterno del program
ma, ciascun indirizz logico consiste di un numero di pagina e di un indirizzo relativo al
linterno della pagina. Ricordiamo che, nella partizione della memoria, un indirizzo logico
rappresenta la posizione di una parola rispetto allinizio del programma; poi il processore
a trasformarla in un indirizzo fisico. Anche nella paginazione, la traduzione di un indirizzo
da logico a fisico operata dallhardware del processore. Questo deve sapere come accedere
alla tabella delle pagine del processo corrente. Dato un indirizzo logico (numero di pagina,
indirizzo relativo), il processore utilizza la tabella delle pagine per produrre un indirizzo fi
sico (numero di frame, indirizzo relativo). Nella Figura 8.16 viene mostrato un esempio.
Questapproccio risolve i problemi precedentemente citati. La memoria centrale di
visa in molti piccoli frame di uguale dimensione. Ciascun processo viene a sua volta divi
so in pagine della dimensione dei frame: processi pi piccoli richiederanno meno pagine,
Memoria centrale

Indirizzo relativo
airintern o
della pagina

Indirizzo
logico

13

Indirizzo relativo
alFinterno
del frame
Numero
di frame

Pagina 1
d iA

14

In d irizzo ^
fisico

Pagina 2
d iA

15

16

18

17

13
14
15
Tabella delle pagine del processo A
Figura 8.16

In d irizzi logici e fisic i.

Pagina O
18
di A

293

294

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

processi pi grandi ne richiederanno un numero maggiore. Quando un processo porta


to in memoria, le sue pagine vengono caricate nei frame disponibili e la tabella delle pagi
ne viene configurata.

Memoria virtuale
Paginazione a richiesta
Con luso della paginazione vengono a esistere sistemi multiprogrammati realmente effi
cienti. Inoltre, la semplice strategia di suddividere un processo in pagine porta allo sviluppo
di un altro concetto importante: la memoria virtuale.
Per comprendere questa tecnica, dobbiamo raffinare lo schema appena trattato. Nella
paginazione a richiesta, le pagine vengono caricate solo quando necessario, cio a ri
chiesta.
Consideriamo un processo di grandi dimensioni consistente di un lungo program
ma e una gran quantit di dati. Per un breve lasso di tempo, lesecuzione pu rimanere con
finata a una piccola sezione del programma (ad esempio, a una subroutine) c magari pos
sono essere utilizzate solo ima o due strutture di dati. Questo il principio di localit,
introdotto nel !Appendice 4A. Sarebbe uno spreco caricare dozzine di pagine per un pro
cesso di cui ne saranno usate solo alcune prima chc il programma venga sospeso. Caricando
solo poche pagine, si utilizza in modo pi efficiente la memoria. Quindi, se il programma
salta a unistruzione o fa riferimento ai dati di una pagina non in memoria, scatta un erro
re di pagina o page fault chc chiede al sistema operativo di caricare la pagina voluta.
Cos, a ogni istante, la memoria contiene solo poche pagine di ciascun processo e di
conseguenza si possono mantenere in memoria pi processi. Inoltre, si risparmia tempo
poich le pagine non utilizzate non vengono continuamente caricate e scaricate dalla me
moria. Tuttavia, il sistema operativo deve essere intelligente nellapplicazionc di questo
schema. Dato che quando viene caricata una pagina occorre estromettere unaltra, pu ca
pitare di dover immediatamente ricaricare una pagina chc c stata appena scaricata. Una ec
cessiva reiterazione di questo fenomeno conduce a una condizione nota come thrashing,
in cui il processore trascorre la maggior parte del suo tempo scambiando pagine tra me
moria c disco anzich eseguendo istruzioni. Le tecniche per evitare il thrashing furono una
delle principali aree di ricerca negli anni Settanta e portarono a complicati ma efficienti
algoritmi. Sostanzialmente, il sistema operativo cerca di indovinare, basandosi sulla storia
recente, quali pagine verranno con maggior probabilit richieste nellimmediato futuro.

Page R eplacem ent A lgorithm Sim ulato rs

La problematica generale della sostituzione delle pagine va oltre i nostri scopi. Una pos
sibile tecnica lalgoritmo LRU, presentato nel Capitolo 4 per la sostituzione nella cache.
In pratica c difficile implementare un algoritmo LRU per la memoria virtuale. Esistono ap
procci alternativi che tentano di approssimare le prestazioni raggiunte con LRU.
Con la paginazione a richiesta, non necessario caricare un intero processo in me
moria. Fatto questo che comporta una rilevante conseguenza: il processo pu avere una di

8.3 Gestione della memoria

mensionesuperiore all'intera memoria centrale. In questo modo, stata rimossa una delle prin
cipali restrizioni della programmazione. Senza la paginazione a richiesta, il programmatore
deve prestare estrema attenzione alla quantit di memoria disponibile. Sc il programma che
sta scrivendo troppo grande, allora deve trovare il modo di strutturarlo in parti che pos
sano essere caricate una per volta. Con la paginazione a richiesta questo compito lascia
to al sistema operativo e al !hardware. Per quanto riguarda il programmatore, la memoria
a sua disposizione ha la dimensione del disco.
Poich i processi sono eseguiti solo nella memoria centrale, questa viene anche det
ta memoria reale. Ma programmatori e utenti percepiscono una memoria molto pi am
pia, pari a quella allocabile su disco. Quest ultima viene dunque chiamata memoria vir
tuale. La memoria virtuale consente una multiprogrammazione molto efficace e solleva
lutente dai vincoli troppo restrittivi della memoria centrale.
Struttura della tabella delle pagine
Il meccanismo basilare per leggere una parola di memoria implica la traduzione di un in
dirizzo virtuale (o logico), costituito da numero di pagina e spiazzamento (offset), in un in
dirizzo fisico, costituito da numero di frame e spiazzamento. Tale traduzione utilizza la ta
bella delle pagine. Dato chc la lunghezza di questa tabella varia al variare della dimensione
del processo, per poter essere consultata, non pu risiedere nei registri ma si deve trovare
nella memoria centrale. La Figura 8.16 suggerisce unimplementazione hardware di que
sto schema. Quando un particolare processo in esecuzione, lindirizzo di partenza della
sua tabella delle pagine contenuto in un apposito registro. Il numero di pagina delFindirizzo virtuale serve da indice nella tabella per trovare il numero di frame corrispondente.
0$1 viene poi combinato con la parte relativa allo spiazzamento dcllindirizzo vir
tuale al fine di produrre lindirizzo reale desiderato.
Nella maggior parte dei sistemi esiste una tabella delle pagine per ciascun processo.
Ma ogni processo pu occupare vaste parti di memoria virtuale. Ad esempio, nellarchitettura VAX, ogni processo pu occupare fino a 231 = 2 Gbyte di memoria virtuale. Usando
pagine da 29 = 512 byte, la tabella delle pagine di ciascun processo pu richiedere I 22righe.
Chiaramente, la quantit di memoria dedicata alle sole tabelle delle pagine non pu esse
re smisuratamente alta. Per superare questo problema, la maggior parte degli schemi di me
moria virtuale memorizza le tabelle delle pagine nella memoria virtuale anzich in quella
reale. Vale a dire che le tabelle delle pagine sono soggette alla paginazione proprio come
tutte le altre pagine. Quando un processo in esecuzione, quantomeno una parte della sua
tabella delle pagine deve trovarsi in memoria centrale, inclusa la riga che punta alla pagi
na attualmente in esecuzione. Per organizzare grandi tabelle di pagine anche possibile uti
lizzare uno schema a due livelli con un elenco delle pagine (page directory ) nel quale cia
scun elemento punta a una tabella delle pagine. Dunque, se la lunghezza dellelenco X e
la massima lunghezza di una tabella delle pagine Y, allora un processo pu consistere al
massimo di X x T pagine. Tipicamente, la lunghezza massima di una tabella delle pagine
non pu superare quella di una pagina. Vedremo un esempio di questo approccio a due li
velli quando, pi avanti nel capitolo, prenderemo in considerazione il Pentium II.
Un approccio alternativo all uso delle tabelle delle pagine a uno o due livelli consiste
nelladozione di una struttura di tabella delle pagine invertita (Figura 8.17). Alcune varianti

295

296

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Indirizzo virtuale
n bit

di memoria fisica)
Figura 8.17

Struttura di una tabella delle pagine invertita.

di questo approccio sono utilizzate su PowerPC, UltraSPARC e sullarchitettura IA-64.


Anche unimplemcntazione di Mach OS su RT-PC utilizza questa tecnica.
Con questo metodo, la porzione di un indirizzo virtuale dedicata al numero di pa
gina viene mappata in una tabella hash utilizzando una semplice funzione di hashingr La
tabella contiene un puntatore alla tabella invertita delle pagine, chc a sua volta contiene i
campi della tabella delle pagine.
In questa struttura si ha una riga della tabella invertita delle pagine per ciascun fra
me di pagina di memoria reale anzich per ogni pagina virtuale. Qiicste tabelle occupano
quindi una porzione fissa della memoria reale, indipendentemente dal numero di proces
si o di pagine virtuali supportate. Essendo possibile mappare pi di un indirizzo virtuale
nello stesso campo della tabella hash, per gestire !overflow viene utilizzata una tecnica di

2 U na funzione bash m appa i num eri da 0 a M nei num eri da 0 a Ni con M >N. Loucput della funzione hash usa
to com e indice nella tabella hash. Poich ingressi diversi possono corrispondere alla stessa uscita, un elemento in
ingresso pu essere assegnato a una locazione gi occupata. In questo caso, il nuovo elemento deve raggiungere unal
tra locazione d ella tabella. T ipicam ente, il nuovo elem ento posto nel prim o spazio vuoto successivo e, per con
catenare i cam pi, viene fornito un puntatore che parte dalla locazione originale.

8.3 G estionedellam em oria

297

concatenazione che consente, in genere, di ottenere liste piuttosto corte, costituite da uno
o due clementi. La struttura della tabella delle pagine viene chiamata invertita perch in
dicizza le voci della tabella in base al numero di frame e non al numero di pagina virtuale.
Translation lookaside buffer
In linea di principio, ogni riferimento alla memoria virtuale pu causare due accessi alla me
moria fisica: uno per andare a leggere lelemento della tabella delle pagine c uno per anda
re a prendere il dato desiderato. Perci, un semplice schema di memoria virtuale avrebbe
leffetto di raddoppiare il tempo di accesso alla memoria. Per evitare questo problema, la
maggior parte degli schemi di memoria virtuale fa uso di una speciale cache per i valori del
la tabella delle pagine, solitamente chiamata translation lookaside buffer (TLB). Questa ca
che funziona nello stesso modo della cache di memoria e contiene gli clementi della tabella
delle pagine, usati pi di recente. La Figura 8.18 rappresenta un diagramma di flusso che
mostra luso del TLB. Per il principio di localit, la maggior parte dei riferimenti alla me
moria virtuale avverr verso locazioni di pagine usate recentemente. Di conseguenza, la
maggior parte dei riferimenti alla memoria virtuale riguarder elementi di tabelle delle pa
gine presenti nella cache. Studi sul TLB del VAX hanno mostrato chc questo schema pu
migliorare in modo significativo le prestazioni [CLAR85, SATY81].
Si noti chc il meccanismo della memoria virtuale deve interagire con il sistema di ca
che (non la cache TLB bens quella della memoria centrale), come mostrato nella Figura
8.19. Un indirizzo virtuale sar generalmente nella forma: numero di pagina, spiazzamen
to. Per prima cosa, il sistema di memoria consulta il TLB per controllare se sia presente il
valore corrispondcntc della tabella delle pagine. Se cos , viene generato lindirizzo reale
(fisico) combinando il numero del frame con lo spiazzamento. In caso contrario, si acce
de alla tabella delle pagine. Una volta generato lindirizzo reale, nella forma di unetichet
ta e di un riferimento si consulta la cache per vedere se presente il blocco contenente quel
la parola (si veda la Figiua 4.5). In caso affermativo, il blocco viene restituito al processore;
altrimenti, la parola viene recuperata dalla memoria centrale.
Il
lettore dovrebbe essere in grado di apprezzare la complessit dellhardware che rea
lizza gli accessi alla memoria. La traduzione di un indirizzo virtuale in un indirizzo reale
implica un riferimento alla tabella delle pagine, che si pu trovare nel TLB, nella memo
ria centrale o su disco. La parola referenziata pu essere nella cache, nella memoria centrale
0 su disco. In questultimo caso, la pagina che contiene la parola deve essere caricata nella
memoria centrale e lindirizzo del suo blocco deve essere caricato nella cache. Inoltre, bi
sogna aggiornare la tabella delle pagine del processo.

Segmentazione
Un altro modo di suddividere la memoria indirizzabile noto come segmentazione. Mentre
la paginazione risulta trasparente al programmatore, la segmentazione solitamente visi
bile al programmatore e costituisce un modo conveniente per organizzare i programmi e
1dati, e per associare gli attributi di privilegio e protezione alle istruzioni e ai dati.
La segmentazione permette al programmatore di vedere la memoria come un insie
me di segmenti o spazi di indirizzamento multipli. I segmenti possono avere varie dimen
sioni, addirittura dinamiche. In genere, il programmatore o il sistema operativo scom-

298

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Il p r o g r a m m a chiede laccesso a una pagina

Koutine per la gestione


del page fault

k
Figura 8.18

O perazione di paginazione e Translation Lookaside Buffer (TLB).

8.3 Gcstioncdellamem oria

O perazioni di TLB

:igura 8.19

Operazioni di cache e Translation Lookaside Buffer.

pongono i programmi e i dati in segmenti. A ciascun segmento possono essere assegnati


iiritti di accesso e di uso. Gli indirizzi di memoria sono espressi da un numero di segmento
: da uno spiazzamento.
Qiiesta organizzazione offre al programmatore i seguenti vantaggi.
1. Sempl ifica lagestione di strutture dati dinamiche. Qiialora ilprogrammatore non co
nosca in anticipo quanto diventer grande una struttura dati, non sar costretto a ti
rare a indovinare! Alla struttura verr assegnato un proprio segmento, e il sistema ope
rativo lo espander o restringer come richiesto.
2. Permette la modifica e la ricompilazione indipendente dei programmi, senza dover
ripetere il linking. Ancora una volta, questo realizzabile usando segmenti multipli.
3. Si presta alla condivisione della memoria tra processi: un programmatore pu allo
care un programma di utilit o una tabella di dati in un segmento, che pu essere ac
cessibile agli altri processi.
4. Favorisce la protezione: poich un segmento pu contenere un insieme ben definito
di programmi o dati, il programmatore (o lamministratore di sistema) pu assegna
re privilegi in modo opportuno.

299

300

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Tali vantaggi non sono disponibili con la paginazione, chc non visibile al programma
tore. D altro canto, abbiamo visto che la paginazione fornisce unefficiente forma di ge
stione della memoria. Per combinare i vantaggi, alcuni sistemi sono equipaggiati con
hardware c software di sistema operativo in grado di fornire una tecnica che combina le due
le strategie.

8.4

Gestione della memoria


nel processore Pentium

Fin dall'introduzione dellarchitettura a 32 bit, i microprocessori hanno sviluppato sche


mi sofisticati di gestione della memoria, basati sullesperienza nel campo dei sistemi pi
grandi. E in molti casi, le versioni dei microprocessori sono addirittura superiori. Poich
tali schemi sono stati sviluppati dai produttori di microprocessori e possono essere sfrut
tati da vari sistemi operativi, essi tendono a essere di uso generale. Un esempio rappresen
tativo dato dal Pentium II. Lhardware di gestione della memoria di questo processore
essenzialmente lo stesso usato nei processori Intel 80386 e 80486, con alcuni raffinamenti.

Spazio degli indirizzi


Il Pentium II include hardware perla segmentazione e per la paginazione. Entrambi i mec
canismi possono essere disabilitati, consentendo allutente di scegliere tra quattro diverse
visioni della memoria.

M e m o ria n o n segmentata c non paginata: lindirizzo virtuale coincide con quel

lo fisico. Qiiesto c utile, ad esempio, in applicazioni di semplici controllori ad alte


prestazioni.

M e m o ria n o n segmentata c paginata: la memoria viene vista come uno spazio di

indirizzamento lineare paginato. La protezione della memoria basata sulla pagina


zione. Qiicsto c favorito da determinati sistemi operativi (ad esempio, il Berkeley
U N IX ).

M e m o ria segmentata e n on paginata: la memoria c vista come una collezione di

spazi di indirizzamento logici. Rispetto alla paginazione questo approccio offre il van
taggio di garantire la protezione fino al livello del singolo byte. Inoltre, a differenza
della paginazione, garantisce che la tabella di traduzione richiesta (la tabella di seg
menti) sia nel chip quando il segmento in memoria. Dunque, la memoria segmen
tata c non paginata presenta tempi di accesso prevedibili.
M e m o ria segmentata e paginata: la segmentazione definisce partizioni logiche di

memoria ad accesso controllato, mentre la paginazione serve a gestire lallocazione


di memoria allinterno delle partizioni. Qiicsta visione favorita da sistemi operati
vi come lo U N I X System V.

8.4 Gestione della memoria nel processore Pentium

Segmentazione
Quando si usa lasegmentazione, ciascun indirizzo virtuale (che nella documentazione del
Pentium II chiamato indirizzo logico) consiste in un riferimento di 16 bit al segmento e
in uno spiazzamento di 32 bit. Due bit del riferimento al segmento riguardano il mecca
nismo di protezione, e gli altri specificano il segmento. Dunque, con la memoria non seg
mentata, la memoria virtuale dellutente di 232 = 4 Gbytc, mentre con la memoria seg
mentata di 246 = 64 terabyte (Tbyte). Lo spazio di indirizzamento fisico adotta un
indirizzo a 32 bit per un massimo di 4 Gbytc.
In realt, la quantit di memoria virtuale pu essere maggiore di 64 Tbyte. Infatti lin
terpretazione da parte del processore degli indirizzi virtuali dipende da quale processo sia
attualmente attivo. Lo spazio di indirizzamento virtuale viene diviso in due parti: una
met (8K segmenti da 4 Gbytc) c globale, condivisa da tutti i processi, e la parte restante
locale e distinta per ciascun processo.
Associate a ciascun segmento ci sono due forme di protezione: il livello di privilegio
e lattributo daccesso. Esistono quattro livelli di privilegio, dal pi protetto (livello 0) al me
no protetto (livello 3). Il livello di privilegio associato a un segmento di dati rappresenta la
sua classificazione (<classification); il livello di privilegio associato a un segmento di pro
gramma la sua autorizzazione (clearance). Un programma in esecuzione pu aver accesso
solo ai segmenti di dati chc abbiano un livello di autorizzazione inferiore (maggiore privi
legio) o uguale (con identici privilegi) rispetto al livello di privilegio del segmento di dati.
Lhardwarc non fissa luso dei livelli di privilegio che invece dipende dalla progetta
zione e dallimplcmcntazionc del sistema operativo. Lintenzione era che il livello 1 fosse
usato per la maggior parte del sistema operativo, e il livello 0 per la sua piccola porzione
dedicata alla gestione della memoria, alla protezione e al controllo degli accessi. Gli altri
due livelli erano pensati per le applicazioni. In molti sistemi, le applicazioni risiederanno
al livello 3, lasciando il livello 2 inutilizzato. Per questultimo, sono buone candidate quel
le applicazioni specializzate chc devono essere protette poich implementano esse stesse i
propri meccanismi in di sicurezza. Alcuni esempi sono i sistemi di gestione dei database, i
sistemi di automazione dufficio e gli ambienti di ingegneria del software.
Oltre a regolare laccesso ai segmenti di dati, il meccanismo di privilegio limita luso di
determinate istruzioni. Alcune istruzioni, come quelle che trattano i registri di gestione del
la memoria, possono essere eseguite solo al livello 0. Le istruzioni di I/O possono essere ese
guite solo fino a un certo livello (tipicamente il livello 1), designato dal sistema operativo.
Lattributo dacccsso di un segmento dati specifica se siano permessi accessi in lettu
ra-scrittura o in sola lettura. Per i segmenti di programma, tale attributo specifica accessi
di lettura-esecuzione o di sola lettura. Il meccanismo di traduzione di indirizzi per la seg
mentazione fa corrispondere un indirizzo virtuale a quello che vien detto un indirizzo li
neare (Figura 8.20b). Un indirizzo virtuale consiste di uno spiazzamento da 32 bit e un se
lettore di segmento da 16 bit (Figura 8.20a), che comprende i seguenti campi.

Indicatore di tabella (T I ): indica se per la traduzione debba essere usata la tabella


globale dei segmenti o una tabella locale.

N u m e r o di segmento: rappresenta il numero del segmento, chc serve da indice nel

la tabella dei segmenti.

Livello di privilegio richiesto ( R P L ) : livello di privilegio richiesto per un dato ac

cesso.

302

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

/l 5

3 /2 /1
T

Indice

0 /

KPL

I
/

Tl
= Indicatore di tabella
R PL = Livello di privilegio del richiedente
(a) Selettore di segmento

/ 31

22 /2 1

12 / 1 1

Elenco

Tabella

Spiazzam ento
/

(b) Indirizzo lineare

/ l i / l l / / / 9
B a se 31...24

D
(i /
B

! 6 / 5 / 1 4 1 3 / 12/11

Limite del
V segmento P D P L
L
I9 ...1 6

Base 15...0

AVL
Base
D/B
DPL

=
=
=
=

8/7

Tipo

Base 23...16

Lim ite del segm ento 15...0

Disponibile per luso da parte del software di sistema


Indirizzo base del segmento
Ampiezza dell operazione di default
Ampiezza del privilegio del descrittore

G
Limite
P
Tipo
S

(11 = riservato

= Granularit
= Limite del segmento
= Presenza del segmento
= Tipo di segmento
= Tipo di descrittore

(c) Descrittore di segmento (elemento della tabella dei segmenti)

/31

12 /il
Indirizzo del fram e di pagina

31...12

/ 7 / 0 / 5 / 4 / 3 / 2 / 1 / 0 /':
P
S

AVL

A V L = Disponibile per luso da parte dei programmatori di sistema


PS
= Dimensione della pagina
A
= Acceduto
P C D = Disabilitazione della cache

P P
A C W U
D T S

SS

K
W

P W T - Wriie-through
US
= Utente/supervisore
RW
= Lettura/scrittura
P
= Presente

(d ) Elem ento dell elenco delle pagine

12 /il

A
Indirizzo del fram e di pagina 3 1...12

AVL

D = sporco
(e) Elem ento della tabella delle pagine

Figura 8 .2 0

Formati di gestione della memoria nel Pentium.

/ 5 / 4 / 3 / 2 / 1 / 0/

Lp

P
A C W U K P
D T S VV

8.4 Gestione della memoria nel processore Pentium

Lc linee della cabella dei segmenti consistono di 6 4 bit, come mostrato nella Figura 8.20c.
I campi sono definiti nella Tabella 8.5.

Tabella

8.5

Parametri della gestione della memoria nel Pentium II.

____________________ _

Descrittori di segmento (elementi della tabella dei s e g m e n t i ) ___________________


Base
Definisce lindirizzo iniziale del segmento nello spazio dindirizzamento lineare da 4 Gbytc.
Bit D / B
In un segmento di codice il bit D e indica se operandi e indirizzamenti sono a 16 o a 32 bit.
Livello di privilegio del descrittore (DPI-)
Specifica il livello di privilegio del segmento referenziato dal descrittore di segmento.
Bit di granularit (G)
Indica se il campo limite espresso in unit da 1 byte o da 4 Kbyte.
Limite
Definisce la dimensione del segmento. A seconda del bit di granularit il processore interpreta il campo limite in
unir da 1 byte (fino a un limite nella dimensione del segmento di 1 Mbyte) o in unit da 4 Kbyte (per una massi
ma dimensione di segmento di 4 Gbyte).
BitS
Determina se un segmento di sistema oppure di codice o dati.
Bit di segmento presente (P)
Usato nei sistemi non paginati. Indica se il segmento presente in memoria centrale. Nei sistemi paginati sempre I.
Tipo
Indica i tipi di segmenti c gli attributi daccesso.
Llementi dell elenco delle pagine e tabelle delle pagine___________________________
Bit di accesso (A)
posto a 1 dal processore in entrambi i livelli delle tabelle delle pagine quando avviene ima lettura o una scrittura
nella pagina corrispondente.
Dirty bit (D)
posto a 1 dal processore alla prima scrittura nella pagina corrispondente.
Indirizzo di (rame
Se I1fornisce lindirizzo fisico della pagina in memoria. Poich i frame sono allineati su confini da 4 K (cio i 12
bit meno significativi sono 0) le linee della tabella contengono solo i 20 bit pi significativi. In un elenco di pagine,
lindirizzo quello della tabella delle pagine.
Bit di disabilitazionc della cache delle pagine (P C D )
Indica se i dati provenienti dalla pagina possono essere messi in cache.
Bit di dimensione delle pagine (PS)
Indica se la dimensione delle pagine di 4 Kbyte o di 4 Mbyte.
Bit di write-through di pagina ( P W T )
Indica se per i dati nella corrispondente pagina sar adottata ima politica di caching write-through o write-back.
Bit di presenza (P)
Indica se la tabella delle pagine o la pagina sia in memoria centrale.
Bit di lettura-scrittura (R W )
Per le pagine a livello utente, indica se la pagina consente accesso in sola lettura; per i programmi a livello utente se
in lettura-scrittura.
Bit utente/supervisore (US)
Indica se la pagina disponibile solo per il sistema operativo (livello supervisore) o anche per le applicazioni (livel
lo utente).

303

304

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Paginazione
La segmentazione una caratteristica opzionale e pu essere disabilitata. Quando in
uso, gli indirizzi utilizzati nei programmi sono virtuali e vengono convertiti in indirizzi li
neari, come appena descritto. Viceversa, quando non si usa la segmentazione, i program
mi utilizzano indirizzi lineari. In entrambi i casi, il passo successivo convertire Tindirizzo lineare in un indirizzo fisico a 32 bit.
Per comprendere la struttura di un indirizzo lineare, necessario sapere chc il mec
canismo di paginazione del Pentium II implementa una ricerca in una tabella a due livel
li. Il primo livello un elenco di pagine, che contiene fino a 1024 clementi. Ci suddivide
lo spazio lineare di memoria da 4 Gbyte in 1024 gruppi di pagine, ciascuna con la propria
tabella di pagine e lunga 4 Mbyte. Ogni tabella di pagina contiene fino a 1024 elementi;
ogni elemento corrisponde a una singola pagina da 4 Kbyte. La gestione della memoria pu
usare un elenco di pagine per tutti i processi, un elenco di pagine per ciascun processo o
una qualche combinazione delle due alternative. Lelenco di pagine per il programma cor
rente si trova sempre nella memoria centrale. Le tabelle delle pagine possono stare nella me
moria virtuale.
Anche il Pentium II fa uso di un translation lookaside buffer, che pu contenere 32 ele
menti della tabella delle pagine. Quando 1elenco delle pagine subisce una modifica, il buf
ferviene azzerato. La Figiua 8.21 illustra la combinazione dei meccanismi di segmentazione
e di paginazione. I meccanismi del translation lookaside buffer c della memoria cache non
sono mostrati.

I
Indirizzo logico

I Segm ento |spiay./ament| I


________ Indirizzo lineare___________

-----T

C M

Elenco | Pagina \Spiazzam en to]

I
I

I
I
I
_____________________ L
I

I
I
I

Tabella dei
segmenti

I
I
I
I

S e g m e n t a /i o n e

Elenco

Tabella

delle pagine

delle pagine

Paginazione

Figura 8.21

Meccanismi di traduzione degli indirizzi per la memoria del Pentium.

8.5 Gestione della memoria nel processore ARM

Infine, il Pentium II include unestensione non presente sull80386 e sull80486, met


tendo a disposizione due dimensioni di pagina. Se il bit PSE {pagesize extension) nel regi
stro di controllo 4 posto a 1, allora lunit di paginazione consente ai programmatori di
sistema di definire la dimensione di pagina: 4 Kbyte o 4 Mbyte.
Qtiando si usano pagine da 4 Mbyte, la ricerca nella tabella delle pagine ha un solo
livello. Qiiando Fhardware accede allelenco delle pagine, trova bit PS posto a 1 (Figura
8.20d). In questo caso, i bit dal 9 al 21 vengono ignorati e quelli dal 22 al 31 definiscono
lindirizzo di base per una pagina da 4 Mbyte di memoria. Dunque, si ha una singola ta
bella delle pagine.
Luso di pagine da 4 Mbyte riduce i requisiti per la memorizzazione della gestione del
la memoria con memorie centrali grandi. Usando pagine da 4 Kbyte, una memoria cen
trale di 4 Gbytc piena richiede circa 4 Mbyte di memoria solo per le tabelle delle pagine.
Con pagine da 4 Mbyte, una tabella singola, di 4 Kbyte, c sufficiente per la gestione della
memoria pagi nata.

8.5

Gestione della memoria nel processore ARM

A R M offre unarchitettura di memoria virtuale versatile adattabile alle esigenze dei pro
gettisti di sistemi embedded.

Organizzazione della memoria


La Figiua 8.22 fornisce una visione di insieme dellhardware di gestione della memoria in
A R M . Il dispositivo di traduzione della memoria virtuale utilizza uno o due livelli di ta
belle per la traduzione da indirizzi virtuali a indirizzi fisici, come sar spiegato in seguito.
Il buffer T L B (translation lookaside buffer) c una cachc di voci della tabella delle pagine re
centi. Sc una voce c disponibile nel buffer T L B lindirizzo fisico per unoperazione di let
tura o scrittura mandato alla memoria principale direttamente dal TLB. Come spiega
to nel Capitolo 4, i dati vengono scambiati tra il processore c la memoria principale
attraverso la cache. Se si utilizza unorganizzazione logica della cachc (Figura 4.7a) il pro
cessore A R M , in caso di miss, passa lindirizzo alla cache ma anche al TLB. Sc si utilizza
unorganizzazione fisica della cache (Figura 4.7b) tocca al T L B passare lindirizzo fisico al
la cachc.
Le voci della tabella di traduzione includono anche i bit di controllo di accesso, che
determinano se un dato processo pu accedere a una data porzione di memoria. Se laccesso
viene negato, il dispositivo di controllo di accesso invia un segnale di insuccesso al pro
cessore A R M .

Traduzione degli indirizzi di memoria virtuale


Il processore A R M supporta laccesso alla memoria basato su sezioni o su pagine:

Supersezioni (opzionale): consistono in blocchi di memoria principale da 16 M B

Sezioni: consistono in blocchi di memoria principale da I M B

305

306

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

i Unit di gestione della m em oria ( M M U )

Figura 8.22

II sistema di memoria ARM.

Pagine grandi: consistono in blocchi di memoria principale da 64 KB

Pagine piccole: consistono in blocchi di memoria principale da 4 KB

Il supporto di sezioni e supersezioni permette di indirizzare tuia grande porzione di me


moria utilizzando ununica vocc nel TLB. Meccanismi aggiuntivi di controllo di accesso
vengono estesi dalle pagine piccole a sottopagine di I K B e dalle pagine grandi a sottopagine di 16 KB. La tabella di traduzione presente nella memoria principale ha due livelli:

Tabella di prim o livello: mantiene le traduzioni di sezioni e sottosezioni e i punta

tori alla tabella di secondo livello

Tabella di secondo livello: mantiene le traduzioni di pagine piccole e grandi

Lunit di gestione della memoria ( M M U ) traduce indirizzi virtuali generati dal proces
sore in indirizzi fsici per laccesso alla memoria principale; inoltre, ricava e controlla i per
messi di accesso. La traduzione viene effettuata in seguito a un miss di T L B e inizia da una
fetch di primo livello. Un indirizzamento a sezione richiede soltanto fetch di primo livel
lo, mentre un indirizzamento a pagine richiede anche fetch di secondo livello.
La Figura 8.23 mostra il processo di traduzione di indirizzi di secondo livello per pa
gine piccole. presente una tabella delle pagine di livello 1 (LI) con 4K entry di 32 bit.
Ogni entry di LI punta a una tabella delle pagine di livello 2 (L2) con 255 entry di 32 bit.
Ogni entry di L2 punta a una pagina di 4 K B nella memoria principale. Lindirizzo virtuale
di 32 bit interpretato come segue. 1 12 bit pi significativi sono un indice nella tabella
LI. I successivi 8 bit sono un indice nella tabella L2 appropriata. 1 12 bit meno significati
vi indicano un byte nella pagina appropriata della memoria centrale. Per le pagine grandi
viene utilizzata una procedura di lookup a due pagine simile a questa. Per le sezioni e le su
persezioni richiesta la ricerca nella sola tabella di pagina LI.

8.5 Gestione della memoria nel processore ARM

Indirizzo virtuale
31

19

II

T a b e lla delle p ag ine di livello I ( L I )


M e m o r i a centrale

4095

Ta bella delle p ag ine di livello 2 ( L 2 )

-- -

2 55

\*
U PTbascaddr

IT

, ..

page base addr 1

----- -- --*'

Figura 8 .2 3

Traduzione di indirizzi di memoria virtuale per pagine piccole in ARM.

Formati di gestione della memoria


Per meglio capire lo schema di gestione della memoria di A R M consideriamo i formati chia
ve, illustrati nella Figura 8.24.1 bit di controllo nella figura sono descritti nella Tabella 8.6.
Per la tabella LI, ogni entry la descrizione di come indirizzato Tintervallo da I M B
di indirizzi virtuali associato. Ogni entry pu avere uno dei seguenti formati:
Bit[ 1 :0] = 0 0: Lindirizzo virtuale associato non mappato; i tentativi di accesso a esso

generano un errore di traduzione.


Bit[l:0] = 01 : Lentry fornisce lindirizzo fisico di una tabella delle pagine L2 che spe
cifica come !intervallo di indirizzi virtuali associato indirizzato.
Bit[l:0] = 01 e bit 19 = 0: Lentry c un descrittore di sezione per lindirizzo virtuale
associato.
Bit[ 1 :0] = O l e bit 1 9 = 1 : Lentry un descrittore di supersezione per lindirizzo virtuale

associato.

Le entry con bit [1:0] = 11 sono riservate.

307

308

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

31

24 23

2 0 19

14

Tabella

IO 9

Base dell'indirizzo di tabella di pagina

delle pagine

S
B
Z

Base
S
deliindirizzo B
Z
[35:321

Base d eirin dirizzo di sezione

Sezione

Supersezione

12 II

IG N

Fault

B a s e dei!'indirizzo
di superazione

n
G

II
CJ

AP

D o m in io

Dom inio

SBZ

IEX

AP

TEX

AP

P dellindirizzo

AP

Base

139:36]

X
N

1 0
0

(a) Form a ti alternativi di descrittori di p rim o livello

31

16 15 14

12 II

10 9

ICrN

Fault

B ase dell'indirizzo di pagina piccola

Pagina piccola

Base dell indirizzo di pagina grande

Pagina grande

X
N

TEX

II
G

A l
X

AP
X

TEX

x
N

SBZ

(b) F orm a ti alternativi di descrittori di se condo livello

31

24 23

2 0 19

Supersezione

Sezione

Pagina piccola

Pagina grande

(c) F orm a ti di indirizzi di m e m o r ia virtuale

Figura 8.24

Formati di gestione della memoria in ARM v6.

8.5 Gestione della memoria nel processore ARM

Tabella 8.6

Parametri ARM di gestione di memoria.

BitAccess Permission (A P ), Bit Access Permission Extension (A P X )


Questi bit controllano laccesso alla corrispondente regione di memoria. Se si accede a unarea di memoria senza i
permessi richiesti viene sollevato un Permission Fault.
Bit Butterable (B)
Determina insieme ai bit T E X come utilizzato il buffer di scrittura per la memoria cacheable.
Bit Cacheable (C)
Determina se la corrispondente regione di memoria pu essere indirizzata attraverso la cache.
Dominio
Collezione di aree di memoria. Il controllo di accesso pu essere effettuato sulla base del dominio.
Bit not Global (nG)
Determina se la traduzione deve essere marcata come globale (0) o specifica del processo (1).
Bit Shared (S)
Determina se la traduzione per memoria non condivisa (0) o condivisa (1).
SB Z
Deve essere zero.
Bit Type Extension (T E X )
Qiiesti bit, insieme ai bit B e C 1controllano gli accessi alle cache, specificano come viene utilizzato il buffer di
scrittura e specificano se la regione di memoria pu essere condivisa e deve quindi essere mantenuta coerente.
Bit Execute Never ( X N )
Determina se la regione di memoria eseguibile (0) o non eseguibile ( 1).

Per le memorie strutturate in pagine richiesto un accesso con tabella delle pagine su due
livelli. I bit [31:10] dellentry della pagina LI contengono un puntatore alla tabella delle
pagine L2. Per le pagine piccole la entry L2 contiene un puntatore di 20 bit alla base delInidirizzo di una pagina di 4 KB nella memoria centrale.
Per le pagine grandi la struttura pi complessa. Come per gli indirizzi virtuali del
lepagine piccole, un indirizzo virtuale di una pagina grande include un indice di 12 bit nel
la tabella di livello imo e un indice di 8 bit nella tabella L2. Per le pagine di 64 K B la por
zione dellindirizzo virtuale relativa allindice di pagina deve essere di 16 bit. Una
sovrapposizione tra il campo dellindice di pagina e ilcampo dellindice della tabella L2 per
mette di far stare tutti questi bit in un formato a 32 bit. A R M realizza questa sovrapposi
zione richiedendo chc ogni entry di tabella di pagina della tabella L2 che supporta le pa
gine grandi sia replicata 16 volte. Infatti, se tutte leentry fanno riferimento a pagine grandi
la dimensione della tabella delle pagine L2 viene ridotta da 256 a 16 entry. Tuttavia, dato
chc una pagina L2 pu contenere pagine piccole e pagine grandi, c necessario replicare le
entry per le pagine grandi.
Per le memorie strutturate in sezioni o supersezioni c richiesto un accesso con tabel
la delle pagine su un livello. Per le sezioni i bit [31:20] dellentry LI contengono un pun
tatore di 12 bit alla base di una sezione da I M B nella memoria principale.
Per le supersezioni i bit [31:24] dellentry LI contengono un puntatore di 8 bit alla
base di una sezione di 16 M B nella memoria principale. Come per le pagine grandi, ri
chiesta una replica delle entry della tabella delle pagine. Nel caso delle supersezioni la por
zione dellindirizzo virtuale relativa allindice di pagina si sovrappone a 4 bit della porzio-

309

310

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

nc dcUmdirizzo virtuale relativa allindice di supersezionc. Qiiindi nella tabella delle pa


gine LI ci devono essere 16 entry identiche.
Lintervallo dello spazio degli indirizzi fsici pu essere espanso fino a 8 bit di indi
rizzo (bit [23:20] e [8:5]). H numero di bit aggiuntivi dipende daHimplementazione.
Qiiesti bit possono essere interpretati come uncstcnsione della memoria fisica di un fat
tore 28 = 256. La memoria fisica pu quindi essere di fatto 256 volte pi grande dello spa
zio di memoria disponibile per ogni processo.

Controllo dell'accesso
I bit AP di controllo dellaccesso in ogni entry controllano laccesso di un dato processo a
una regione di memoria. Unarea di memoria pu essere marcata come non accessibile, ac
cessibile in sola lettura, o in lettiua c scrittiua. Inoltre Iarea di memoria pu essere designata
per soli accessi privilegiati, riservata al sistema operativo e non disponibile per le applica
zioni.
A R M utilizza anche il concetto di dominio, una collezione di sezioni e/o pagine con
permessi particolari di accesso. Larchitettura A R M prevede 16 domini. Limpiego di do
mini permette a pi processori di utilizzare la stessa tabella di traduzione e contempora
neamente mantenere alcune protezioni gli uni dagli altri.
Ogni entry di tabella delle pagine e ogni entry T L B contengono un campo che spe
cifica a quale dominio appartiene un entry. Un campo di 2 bit nel registro Domain Access
Control controlla laccesso a ogni dominio. Ogni campo permette di abilitare o disabili
tare molto rapidamente laccesso a un intero dominio in modo che intere aree di memo
ria possano essere trasferite dentro e fuori la memoria virtuale in maniera molto efficien
te. Ci sono due tipi di accesso al dominio:

Client: utenti dei domini (che eseguono programmi e accedono ai dati) che devo
no osservare i permessi di accesso delle singole sezioni e/o pagine che compongono
il dominio

M anager: controllano il comportamento del dominio (le pagine c le sezioni correnti

nel dominio c laccesso al dominio) ed evitano i permessi di accesso perle entry in ta


le dominio
Un programma pu essere un client di certi domini, un manager di altri e non avere accesso
ai domini rimanenti. Ci permette una protezione molto flessibile della memoria per pro
grammi che accedono a diverse risorse di memoria.

8.6

Letture e siti web consigliati

[STAL09] tratta in dettaglio gli argomenti di questo capitolo.


STAL09 W . Stallings, Operating Systems, Internals and Design Principles, sesta
edizione, Upper Saddle River (NJ), Prentice Hall, 2001.

8.7 Parole chiave, domande di revisione e problemi

Siti web consigliati:


Operating System Resource Center: un utile collezione di documenti e articoli sui

sistemi operativi
A C M Special Interest G r o u p on Operating Systems: informazioni sulle pubbli

cazioni c le conferenze SIG OPS

I E E E Technical Com m ittee o n Operating Systems and Applications: include

una newsletter e collegamenti ad altri siti.

8.7

Parole chiave, domande di revisione e


problemi
____
f i

descrittore del processo


gestione della memoria
ind irizzo fisico
ind irizzo logico
interrupt
istruzioni privilegiate
kernel
linguaggio di controllo
del job (JCL)
memoria reale
memoria virtuale
monitor residente
multiprogram mazione
multitasking

nucleo
paginazione
paginazione a richiesta
partizione
processo
protezione della
memoria
schedulazione a breve
termine
schedulazione a lungo
termine
schedulazione a medio
termine
segmentazione

sistema batch
sistema operativo
interattivo
sistema operativo (OS)
sistemi a condivisione di
tempo
stato del processo
swapping
tabella delle pagine
thrashing
translation lookaside
buffer (TLB)
utility

Domande di revisione
8.1 Che cose un sistema operativo?
8.2 Elencate c fornite una descrizione sintetica dei servizi fondamentali di un sistema
operativo.
8.3 Elencate c fornite una descrizione sintetica dei principali tipi di schedulazione di un
sistema operativo.
8.4 Qiial c la differenza tra un processo e un programma?
8.5 Qual lo scopo dello swapping?

311

312

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

8.6 Se un processo pu essere dinamicamente assegnato a varie locazioni nella memo


ria centrale, qual limplicazione del meccanismo di indirizzamento?
8.7 Mentre un processo in esecuzione, necessario chc tutte le sue pagine si trovino
nella memoria centrale?
8.8 Lc pagine di un processo in memoria centrale devono essere contigue?
8.9 necessario che le pagine di un processo in memoria centrale siano in ordine se
quenziale?
8.10 Qiial la funzione del translation lookaside buffer?

Problemi
8.1 Supponete di disporre di un calcolatore multiprogrammato nel quale i job presen
tano identiche caratteristiche. In un periodo di elaborazione, T, di un job, la met
del tempo viene trascorsa per / e Ialtra met in attivit del processore. Ogni job
va in esecuzione per un totale di N periodi. Assumete lutilizzo di una semplice
priorit round-robin, c chc le operazioni di I /O si possano sovrapporre alle opera
zioni del processore. Definite le seguenti quantit:
turnaround time = il tempo effettivo per completare un job
throughput = il numero medio di job completati nel periodo di tempo T
utilizzo del processore = la percentuale di tempo in cui il processore attivo
(non in attesa).
Calcolate queste quantit per 1, 2 e 4 job simultanei, assumendo che il periodo T
sia distribuito in ciascuno dei seguenti modi:
a. I /O per la prima met, processore per la seconda met;

b. I /O per il primo e il quarto quarto di tempo, processore nel secondo e nel terzo
quarto.
8.2 Un programma I/O-bound, se eseguito da solo, trascorre pi tempo in attesa
dellI /O che usando il processore. Un programma processor-bound c lopposto.
Supponete che un algoritmo di schedulazione a breve termine favorisca i program
mi che hanno usato poco tempo di processore nel recente passato. Spiegate perch
questo algoritmo favorisce i programmi I /O -bound senza negare in modo perma
nente il tempo di processore ai programmi processor-bound.
8.3 Un programma calcola le somme per colonne
ri

CI =

T a
XmmU

ij

J= 1

di una matrice di dimensione 100 per 100. Assumete chc il calcolatore adotti la
paginazione a richiesta con pagine di 1000 parole, c chc la quantit di memoria cen
trale riservata ai dati sia di 5 blocchi. Riscontrate qualche differenza nella frequen

8.7 Parole chiave, domande di revisione e problemi

za dei page fault a seconda che A sia memorizzata per righe o per colonne? Fornite
una spiegazione.
8.4 Considerate uno schema a partizioni fisse con partizioni di 216 byte c con una me
moria principale di 224 byte. Viene mantenuta una tabella dei processi chc include
un puntatore a una partizione per ogni processo residente. Quanti bit deve avere il
puntatore?
8.5 Considerate uno schema a partizioni variabili. Mostrate chc, in media, il numero di
lacune la met del numero di segmenti.
8.6 Supponete che la tabella delle pagine di un processo in esecuzione su un processo
re sia del tipo illustrato nello schema seguente.
B it d i valid it

B it di riferim ento

B it d i m odifica

N um ero di

N um ero di fram e
d i pagina

pagina virtu a le

Tutti i numeri sono decimali, tutto numerato a partire da zero, e tutti gli indiriz
zi si riferiscono a byte in memoria. Le pagine sono di 1024 byte.

a. Descrivete esattamente come, in generale, un indirizzo virtuale generato dalla


C P U c tradotto in un indirizzo fisico della memoria centrale.

b. A quale indirizzo fisico, se esiste, corrisponde ciascuno dei seguenti indirizzi vir
tuali? (Non cercate di trattare il page fault, nel caso capitasse.)
(i) 1052
(ii) 2221
(iii) 5499
8.7 Spiegate perch la dimensione di pagina in un sistema di memoria virtuale non do
vrebbe essere n troppo piccola n troppo grande.
8.8 Un processo accede a 5 pagine A, B, C, D ed E, nel seguente ordine:
A; B; C; D ; A; B; E; A ; B; C ; D ; E
Assumete che lalgoritmo di sostituzione sia first-in-first-out e trovate il numero di
pagine trasferite durante questa sequenza di riferimenti iniziando con una memoria
principale vuota con tre frame di pagina. Ripetete !esercizio per 4 frame di pagina.
8.9 Nel corso di unesecuzione su un calcolatore dotato di memoria virtuale, si incon
tra la seguente sequenza di numeri di pagina:
342647132635123

313

314

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

Assumete di adottare una politica di sostituzione delle pagine least recently used.
Tracciate un grafico della percentuale di successi di pagina (la Frazione di riferi
menti a pagine presenti nella memoria centrale) in funzione della capacit n delle
pagine della memoria centrale, con 1 < n < 8. Considerate la memoria centrale ini
zialmente vuota.
8.10 Nel V A X , le tabelle delle pagine utente sono allocate a indirizzi virtuali nello spa
zio di sistema. In cosa consiste ilvantaggio di avere le tabelle delle pagine utente nel
la memoria virtuale anzich in quella centrale? E qual uno svantaggio?
8.11 Supponete che il comando
for

(i = 1; i <= n; i++)
a[i] = b[i] + c[i];

sia eseguito in una memoria con pagine di 1000 parole. Sia n = 1000. Utilizzando
una macchina che ha ima gamma completa di istruzioni da registro a registro e che
utilizza registri indice, scrivete un programma ipotetico per implementare il co
mando precedente. Mostrate poi la sequenza di riferimenti alle pagine durante Iesecuzione.
8.12 Larchitettura IBM System/370 usa una struttura di memoria a due livelli e li chia
ma segmenti e pagine, anche se questa segmentazione non ha molte delle caratteri
stiche descritte in questo capitolo. Nellarchitettura base 370 la dimensione di pa
gina pu essere di 2 o 4 KB e la dimensione di segmento fissata a 64 K B o a 1 MB.
Nelle architetture 370/XA e 370/ESA la dimensione di pagina c di 4 K B e la di
mensione di segmento di 1 MB. Quali vantaggi della segmentazione mancano in
questo schema? Qual il vantaggio della segmentazione per larchitettura 370?
8.13 Considerate un sistema di elaborazione dotato di segmentazione paginata. Qiiando
un segmento si trova in memoria, vengono sprecate alcune parole nellultima pagi
na. Inoltre, con una dimensione di segmento s e una dimensione di paginap , ci so
no?.//? elementi nella tabella delle pagine. Pi piccola la dimensione di pagina, mi
nore e la perdita nellultima pagina del segmento, ma risulta pi grande la tabella
delle pagine. Qiialc dimensione di pagina minimizza Xoverhead totale?
8.14 Un calcolatore ha una cachc, una memoria centrale c un disco usato per la memo
ria virtuale. Se la parola cui si fa riferimento c nella cachc, ci vogliono 20 ns per lac
cesso. Sc in memoria centrale ma non nella cache, sono necessari 60 ns per cari
carla nella cachc. Sc la parola non c in memoria centrale, sono richiesti 12 ms per
recuperarla dal disco c 60 ns per copiarla nella cache. La frequenza di successo del
la cachc c 0,9 c la frequenza di successo in memoria centrale 0,6. Qiial il tempo
medio per laccesso a una parola?
8.15 Supponete che un programma sia diviso in 4 segmenti uguali c chc il sistema co
struisca una tavola di descrizione delle pagine di 8 campi per ogni segmento. Il si
stema sfrutta dunque una combinazione di segmentazione c paginazione.
Supponete, inoltre, che la pagina abbia una dimensione di 2 Kbyte.
a.

Q ual la dim ensione massima di ogni segmento?

8.7 Parole chiave, domande di revisione e problemi

b.

Qiial il massimo spazio di indirizzi logici per il programma?

c. Supponete che il programma acceda a un elemento nella locazione di memoria


00021A BC. Qiial il formato dclTindirizzo logico chc il programma crea per es
so? Qual il massimo spazio di indirizzamento fisico per il sistema?
8.16 Considerate un microprocessore in grado di accedere a un massimo di 2-2 byte di
memoria centrale fisica. Esso implementa uno spazio di indirizzamento logico seg
mentato della dimensione massima di 23J byte. Ogni istruzione contiene Tintero in
dirizzo composto da due parti. Vengono usate unit di gestione della memoria
esterna, M M U (.Memory managment unit), il cui schema di gestione assegna ai seg
menti blocchi contigui di memoria fisica della dimensione di 222 byte. Lindirizzo
fisico di partenza di un segmento sempre divisibile per 1024. Mostrate in detta
glio linterconnessione del meccanismo che converte gli indirizzi logici in fisici uti
lizzando il numero appropriato di M M U . Indicate, inoltre, la struttura interna del
le M M U (assumendo che ciascuna M M U contenga una cache di descrizione dei
segmenti a direct mapped da 128 elementi) e come vengono selezionate.
8.17 Considerate uno spazio di indirizzi paginato (composto da 32 pagine da 2 Kbyte),
in uno spazio di memoria fisica da 1 Mbyte.
a. Qual il formato dellindirizzo logico del processore?
1>. Quali sono la lunghezza e la larghezza della tabella delle pagine (ignorando i bit
dei diritti daccesso)?
c. Qiial leffetto di un dimezzamento dello spazio di memoria fisica sulla tabella
delle pagine?
8.18 Nel sistema operativo dei mainframe IBM, TOS/390, uno dei principali moduli
del kernel ilSystem Resource Manager (SRM ). Questo modulo e responsabile delTallocazionc delle risorse nello spazio degli indirizzi (processi). Il modulo SRlvl d
allO S/390 un grado di sofisticazione unico tra i sistemi operativi. Nessun altro si
stema operativo per mainframe, e sicuramente nessun altro tipo di sistema operati
vo, pu eguagliare le caratteristiche di SRM . Il concetto di risorsa include il pro
cessore, la memoria reale e i canali di I/O . S R M accumula statistiche relative
allutilizzo di processore c di canale, oltre a varie strutture dati chiave. Il suo com
pito di offrire prestazioni ottimali basate sul monitoraggio e Tanalisi delle presta
zioni. Linstallazione preimposta diversi obiettivi di prestazioni; ci serve da guida
per TSRM tchc modifica dinamicamente linstallazione e le caratteristiche di pre
stazione dei job basandosi sull utilizzo del sistema. S R M fornisce anche rapporti chc
permettono alloperatore di raffinare la configurazione e la scelta dei parametri per
migliorare il servizio.
Questo problema riguarda un esempio dellattivit di SRM . La memoria reale
divisa in blocchi di uguali dimensioni chiamati frame, chc possono essere anche mi
gliaia. Ogni frame pu sostenere un blocco di memoria virtuale, chiamato pagina.
SRxM riceve il controllo circa 20 volte al secondo c ispeziona ogni singolo frame. Se
la pagina non ha avuto riferimenti o non c stata cambiata, un contatore viene in
crementato dii. S R M calcola poi la media di questi numeri e determina il numero

315

316

Sistema di elaborazione Capitolo 8 - Supporto ai sistemi operativi

medio di secondi durante i quali il frame non stato modificato. Qiialc pu essere
lo scopo di questo procedimento e quale azione S R M deve intraprendere?
8.19 Per ognuno dei formati di indirizzo virtuale A R M mostrati nella Figura 8.24 mo
strate il formato di indirizzo fisico.
8.20 Disegnate una figura simile alla Figura 8.23 per la traduzione di memoria virtuale
di A R M nel caso in cui la memoria centrale sia divisa in sezioni.

CPU

Argomenti della terza parte


Fino a questo punto, abbiamo visto la C P U essenzialmente come una scatola nera e ne
abbiamo considerato linterazione con le periferiche e la memoria. La terza parte esamina
la struttiua interna e la funzione della C PU . Lunit centrale di elaborazione consiste di
ununit di controllo, di registri, di ununit aritmetico-logica, di ununit di esecuzione del
le istruzioni c delle interconnessioni tra questi componenti. Vengono trattati gli argo
menti della progettazione delle istruzioni e i tipi di dati. Qiiesta parte considera anche i
problemi di organizzazione, quali il pipelining.

Percorso della terza parte


Capitolo 9 - Aritmetica del calcolatore
Il Capitolo 9 esamina le funzionalit dcllA L U e si concentra sulla rappresentazione dei nu
meri e sulle tecniche per implementare le operazioni aritmetiche. Generalmente, il pro
cessore supporta due tipi di aritmetica: quella intera, o a virgola fssa, e quella a virgola m o
bile. In entrambi i casi, il capitolo affronta prima la rappresentazione dei numeri c poi
considera le operazioni aritmetiche. In particolare, trattato in dettaglio lo standard in vir
gola mobile IEEE 754.

Captolo 10 - Linguaggi macchina: caratteristiche e funzioni


Dal punto di vista del programmatore, il modo migliore per comprendere come opera un
processore imparare le istruzioni macchina chc questo esegue. Il complesso argomento
della progettazione del linguaggio macchina occupa i Capitoli 10 c 11. Il primo si con
centra sugli aspetti funzionali della progettazione delle istruzioni esaminando i tipi di fun
zione chc vengono specificati dalle istruzioni del calcolatore, e analizzando in modo par
ticolare i tipi degli operandi (che specificano i dati su cui operare) e delle operazioni (che
specificano le azioni da eseguire) comuni nei linguaggi macchina. Infine, viene brevemen
te spiegata la relazione tra le istruzioni del processore e il linguaggio asscmblativo.

Capitolo 11 - Linguaggi macchina: modi di indirizzamento e formati


Mentre il Capitolo 10 pu essere visto come una trattazione della semantica del linguag
gio macchina, il successivo si concentra maggiormente sulla sintassi. In modo particolare,
2 Capitolo 11 considera come gli indirizzi di memoria vengono specificati e i formati ge
nerali delle istruzioni del calcolatore.

Capitolo 12 - Struttura e funzione della CPU


Il Capitolo 12 dedicato alla trattazione della struttura interna e della funzione del pro
cessore. In particolare descrive luso di registri come memoria interna della C P U , c quin
di raccoglie tutto il materiale finora trattato per fornire una panoramica della struttura e
della funzione della C P U . Viene, inoltre, affrontata lorganizzazione generale, e discussa
lorganizzazione del banco dei registri. Le restanti parti del capitolo descrivono il funzio
namento del processore nellesecuzione del linguaggio macchina. Ulteriore argomento
trattato il ciclo istruzione, al fine di mostrare la funzione e la relazione tra le fasi di fetch,
di indirettezza, di esecuzione e di interrupt. Infine, viene esplorato in dettaglio luso del pi
pelining per migliorare le prestazioni.

Capitolo 13 - Processori RISC


Ci chc resta della terza parte analizza in maggior dettaglio le tendenze nella progettazio
ne delle C P U . Il Capitolo 13 descrive lapproccio associato al concetto di Reduced
Instruction Set Computers (RISC), chc rappresenta una delle innovazioni pi significative
nellorganizzazione e nellarchitettura dei calcolatori degli ultimi anni. Larchitettura RISC
diverge notevolmente dalla tendenza storica nellarchitettura dei processori. Unanalisi di
questapproccio prta alla luce molti argomenti importanti nellorganizzazione c nellar
chitettura dei calcolatori. Il capitolo esamina le motivazioni delluso della progettazione
R ISC e poi analizza in dettaglio la progettazione c larchitettura delle C P U RISC; infine
paragona lapproccio R ISC con quello dei Complex Instruction Set Computers (CISC).

Capitolo 14 - Parallelismo a livello di istruzioni e processori superscalari


Questo capitolo esamina uninnovazione progettuale ancor pi recente e ugualmente im
portante: il processore superscalare, una tecnologia chc pu essere adottata su ogni pro
cessore, ma che si adegua particolarmente bene allarchitettura RISC. Il capitolo conside
ra anche il problema generale del parallelismo a livello di istruzioni.

Capitolo 9

Aritmetica del calcolatore

Punti chiave

Laricmctica del calcolatore si occupa di rappresentare i numeri cd eseguire gli al


goritmi per le operazioni di base. Ci vale per laritmetica intera come per quella
a virgola mobile.

I numeri in virgola mobile sono espressi come numeri (i significando) moltiplica


ti per una costante (la base) elevati a una potenza intera (I csponeiite). Laritmetica
in virgola mobile consente di rappresentare numeri molto grandi e numeri mol
to piccoli.

La maggior parte dei processori implementa lo standard IEEE 754 chc definisce
un formato a 32 bit e uno a 64.

320

CF5U Capitolo 9 - Aritmetica del calcolatore

niziamo lesame del processore con una panoramica dellunit aritmetico-logica (ALU)
per rivolgerci poi allaritmetica del calcolatore. I circuiti logici chc costituiscono lA L U
sono descritti nel Capitolo 10.
Laritmetica digitale tratta due tipi di numeri molto differenti: gli interi e i numeri in
virgola mobile. In entrambi i casi, la rappresentazione scelta un argomento cruciale del
la progettazione ed c quindi affrontata per prima, seguita poi dalla trattazione delle ope
razioni aritmetiche.

9.1

L/unit aritmetico-logica

Questa unit la parte del calcolatore che esegue effettivamente le operazioni aritmetiche
e logiche sui dati. Tutti gli altri clementi dei sistemi di elaborazione hanno lo scopo fon
damentale di portare i dati allinterno dellALU, affinch questa li elabori, c di restituire i
risultati in output. In un certo senso, quando consideriamo ItA L U abbiamo raggiunto il nu
cleo o lessenza del calcolatore.
LALU, al pari di tutti i componenti del calcolatore, basata sulluso di semplici di
spositivi digitali in grado di memorizzare cifre binarie c di eseguire semplici operazioni
booleane.
La Figura 9.1 indica, in termini generali, linterconnessione dellA L U con il resto del
processore. LA L U legge i dati da registri e scrive il risultato in un registro. I registri sono
circuiti di memoria temporanea allinterno del processore e sono collegati allAJLU trami
te semplici connessioni (Figura 2.3). LALU, come risultato di unoperazione, pu anche
impostare deiflag. Ad esempio, il flag di overflow viene posto a 1 se il risultato di un cal
colo supera la lunghezza del registro nel quale deve essere memorizzato. I valori dei flagven
gono anche memorizzati in opportuni registri. Lunit di controllo fornisce segnali che con
trollano le operazioni dellA L U e il flusso dei dati in entrata c in uscita dallALU.

.
Unit di controllo

F|ag

ALU
Registri

/: '*

. ' '
.

. :

..............

I
Figura 9.1

Ingressi e uscite della A LU .

:
:

v. < t

.....

.:

Registri

9.2 Rappresenlazionedcgliintcri

9.2

Rappresentazione degli interi

Nell'aritmetica binaria i numeri possono essere rappresentati usando esclusivamente le ci


fre O c 1, il segno meno e la virgola. Un esempio:
1101,0101, == " 13,3125,
Tuttavia, il segno meno e la virgola non possono essere usati per la memorizzazione.
Quindi, per rappresentare i numeri, dovremo usare solo le cifre binarie (0 e 1). Se ci limi
tiamo agli interi non negativi, la rappresentazione c diretta.
Una stringa da 8 bit pu rappresentare i numeri chc vanno da 0 a
00000000 =

00000001 =

00101001 =
10000000 =
11111111=
s e *

41
128
255

In generale, se una sequenza da ?i bit a } _ ~ aQ interpretata come un numero natu


raleA , il suo valore
n 1
A = X 2V
/= 0

Rappresentazione in modulo e segno


Esistono varie convenzioni per rappresentare i numeri interi, c tutte trattano il bit pi si
gnificativo (solitamente quello pi a sinistra) comc bit di segno. Sc il bit di segno c 1 il nu
mero negativo, altrimenti positivo o nullo.
La forma pi semplice di rappresentazione chc adotta un bit di segno detta in mo
dulo e segno. In una parola da n bit, gli -1 bit pi a destra contengono il modulo del
numero.
+ 18 = 00010010
- 18 = 10010010
Il caso generale pu essere espresso comc segue:

y , 2la{

scan _ , = 0

/= U
Modulo e segno,

(9.1)

A =
n 2

/= 0

1.

sea I = I

321

322

CPU Capitolo 9 - Aritmetica del calcolatore

Tabella 9.1

Caratteristiche della rappresentazione e dell'aritmetica in complemento a due.

Intervallo

da 2" 1a 2 "- 1 1

Rappresentazioni dello zero

Una

Negazione

Si esegue il complemento bit a bit del numero positivo corrisponden

Estensione del segno

Si aggiungono nuovi bit a sinistra uguali al bit di segno originale.

Regola di overflow

La somma di due numeri con lo stesso segno genera overflow se e solo


se il risultato ha segno opposto.

Regola di sottrazione

Per sottrarre B da A , si somma ad A lopposto di R.

te e si somma 1 al risultato considerandolo un intero senza segno.

Qiicsca rappresentazione presenta alcuni svantaggi. Uno di questi che per eseguire cor
rettamente somme e sottrazioni occorre considerare i segni dei due numeri e iloro moduli.
La questione viene successivamente chiarita nel Paragrafo 9.3. Un altro svantaggio sta nel
lesistenza di due rappresentazioni dello 0:
00000000 = 0 = 1000 = 10000000
Questo aspetto alquanto problematico, dato chc diventa leggermente pi difficoltoso
controllare lo 0 (unoperazione eseguita di frequente sui calcolatori). A causa di questi
svantaggi, la rappresentazione in modulo e segno e raramente utilizzata. Al contrario, lo
schema pi comune la rappresentazione in complemento a due.1

Rappresentazione in complemento a due


Anche in questo caso il bit pi significativo indica il segno, ma questa rappresentazione (de
cisamente la pi comune) differisce dalla precedente nel modo di interpretare gli altri bit.
La Tabella 9.1 sottolinea le caratteristiche chiave della rappresentazione e dcllaritmetica
in complemento a due.
Mentre la maggior parte delle trattazioni si concentra sulle regole per produrre nu
meri negativi, senza dimostrazioni formali, la nostra si basa su [DATT93], che suggerisce
chc la rappresentazione in complemento a due si comprende meglio definendola in termini
di somma pesata di bit. Qiiesto approccio ha il vantaggio di diradare i dubbi sul fatto che
le regole delle operazioni aritmetiche possano non funzionare in alcuni casi particolari.
Sia un intero a n bit, in complemento a due. Se A positivo, allora il bit di segno,
an V zero. 1 restanti bit rappresentano il modulo del numero, cos come nella rappresen
tazione in modulo e segno:
n-2

2a.
per A > 0
/= 0
Il numero zero trattato come positivo e presenta un bit di segno 0 e un modulo costituito
da soli 0. Notiamo che gli interi positivi rappresentabili con n bit vanno da 0 (tutti i bit poA

1 Nella letceracLira anglosassone si usano varie locuzioni, tra cui Uvos complement o 2s complement con e senza lapo
strofo (per esempio, IEEEStd 100-1992, JheNew IF.EE Standard Dictionary ofElectrical and Electronics Terms.

9.2 Rappresentazione degli interi

Tabella 9 .2

323

Rappresentazioni di interi di 4 bit.

Rappresentazione
decimale

Rappresentazione
in modulo c segno

Rappresentazione

Rappresentazione
polarizzata

in complemento a due

+ 8

___

___

1111

+7

Olii

Olii

Ilio

+6

0110

0110

1101

+5

0101

0101

1100

+4

0100

0100

1011

+3

0011

0011

1010

+2

0010

0010

1001

+ 1

0001

0001

1000

+0

0000

0000

0111

-0

1000

-1

1001

1111

0110
0101

-2

1010

Ilio

-3

1011

1101

0100

-4

1100

1100

0011
0010

-5

1101

1011

-6
_7

Ilio

1010

0001

1111

1001

0000

-8

1000

sti a 0.) a 2* 1- 1 (tutti i bit di modulo posti a 1). Qualsiasi numero maggiore richiede
rebbe pi bit.
Ora, per i numeri negativi, il bit di segno, an_ v Lino. I restanti bit possono assume
re 2 " " 1valori. Pertanto, gli interi negativi che possono essere rappresentati con n bit van
no da -1 a -2n~l. La rappresentazione in complemento a due associa il seguente valore a
stringhe di n bit:

Complcmcntoaduc

j+

^jT 2 'a.
(9.2)
/'=O
Nel caso dei numeri positivi, ^ 1= Oe laddendo -2 " 1an_ j si annulla. Pertanto, la for
mula (9.2) definisce la rappresentazione in complemento a due sia per i numeri positivi sia
per quelli negativi.
La Tabella 9.2 confronta la rappresentazione in modulo c segno c quella in comple
mento a due per interi a 4 bit.
Unimmagine utile della natura della rappresentazione in complemento a due un re
golo binario, nel quale il valore allestrcma destra c 1 (2) c ogni posizione successiva ver
so sinistra ha valore doppio, fino alla posizione pi a sinistra che negata. Come si pu ve
dere nella Figura 9.2a, il numero pi piccolo rappresentabile in complemento a due
-2"
la presenza di un bit (non di segno) con valore 1, aggiunge una quantit positiva al
numero. Inoltre, chiaro chc nella posizione pi a sinistra i numeri negativi devono avere
1 e quelli positivi 0. Quindi, il maggior numero positivo 2" 1- 1, rappresentato con una
stringa con uno 0 seguito da tutti 1.
*
Il resto della Figura 9.2 mostra luso del regolo per convertire da complemento a due
a decimale e viceversa.
A 2 ~ [a fj

324

CPU Capitolo 9 - Aritmetica del calcolatore

....

' -1 2 8 I 64

32
.

16

..

(a) Regolo in complemento a 2 a otto posizioni


-128

64

32

,6

I 0

(b) Conversione del numero binario 10000011 in decimale


-128

1
-1 2 0 = -1 2 8

64

32

16

1 1

<
0

+8

(c) Conversione del numero decimale - 120 in binario

Figura 9 .2

Uso del regolo binario per la conversione tra numerazione in complemento a 2 e


numerazione decim ale.

Conversione tra stringhe di diversa lunghezza


Talvolta si desidera trasformare un intero rappresentato con n bit nello stesso intero rap
presentato per con m bit, con rn > n. Nella notazione in modulo e segno, ci ottenuto
spostando il bit di segno nella nuova posizione pi a sinistra e riempiendo con 0 le posi
zioni intermedie.
+
+
-

18
18
18
18

=
=
=
m

00010010
0000000000010010
10010010
1000000000010010

(modulo e segno, 8 bit)


(modulo e segno, 16 bit)
(modulo e segno, 8 bit)
(modulo e segno, 16 bit)

Questo metodo non funziona per i numeri interi negativi in complemento a due in cui, in
vece, bisogna replicare il bit di segno fino a raggiungere la nuova posizione. Qiiesto pro
cedimento viene detto estensione del segno.
+18

00010010

+ 18 =

0000000000010010

18 =

11101110

32.658 =

1000000001101110

(complemento a due, 8 bit)


(complemento a due. 16 bit)

(complemento a due, 8 bit)

- 18 ~ 18

(complemento a due, 16 bit)

11101110

(complemento a due, 8 bit)

111111111*1101110

(complemento a due; 8 bit)

9.2 Rappresentazione degli interi

Per comprendere perche questa regola funzioni, si consideri una stringa di n bit an an_2...
U1a0 da interpretare come un interoA in complemento a due, di modo chc ilsuo valore sia:
n

-2 n~ la n

A =

.+
I

Y
/

H a.i

/= 0
Se ^ un numero positivo, la regola chiaramente funziona. Ora, sia A un numero negati
vo di cui vogliamo costruire una rappresentazione a m bit, con m > n. Allora
m 2

A = - 2 m ~ 'a m I. +

Y
/ j 2 a.i
/= 0

I due valori devono essere uguali. Quindi:


n 2

m 2
I

Si
-

II
Ss*

_2 w - I

i= 0

/= 0

m 2

- 2m~ l +

Ta./ =

2 "_ 1

Ta / =

2 "~ 1

i= n 1
m
2 - i +

/ = //-1
m 2

2'
+

/ = // - 1

II

N>
JfcT

m 2

/= n-1

) am ~ 2

...

Ii

/= 0

m 2

an - 2

/- 0

Ta = 1 +

ho

n 2

1+

i n 1

Nel passaggio dalla prima alla seconda espressione, richiediamo che gli - 1 bit meno si
gnificativi non cambino tra le due rappresentazioni. Passiamo poi dalla successiva all'ulti
ma espressione, che verificata solo se tutti i bit nelle posizioni da n - 1 a m - 2 sono po
sti a 1. Perci, la regola di estensione del segno funziona.

Rappresentazione in virgola fissa


Infine, ricordiamo chc le rappresentazioni trattate in questo paragrafo vengono qualche
volta dette in virgola fissa. Questo perch la virgola fissa c si assume chc si trovi a destra
della cifra meno significativa.

325

326

CPU Capitolo 9 - Aritmetica del calcolatore

9.3

Aritmetica intera

IJ paragrafo esamina le comuni operazioni aritmetiche su numeri in complemento a due.

Opposto
Nella rappresentazione in modulo e segno, per formare lopposto di un intero sufficien
te invertire il bit di segno. Nella notazione in complemento a due, lopposto di un intero
ottenuto secondo le seguenti regole.
1. Si esegue il complemento bit a bit della stringa (incluso il bit di segno).
2. Si tratta il risultato come un intero binario senza segno, dopo avergli sommato 1.
Qiiesto procedimento detto operazione di complemento a due.
+ 18

00010010 (complanen. a due)

complemento bit a bit

11101101 +

Come prevedibile, la negazione della negazione e il numero stesso:

18

complemento bit a bit

11101110 (complemento a due)

00010(H)! +

00010010 = + 18
Per dimostrare lavalidit delloperazione appena descritta, interpretiamo una sequenza A di
n bit an l... a0 come un intero in complemento a due, in modo che il suo valore sia
n 2
A =

- 2 - la n

.+
I

Y
/

T aI

/= 0
Formiamo ora il complemento bit a bit della stringa afj _ l a ~ ~ a() e aggiungiamo 1.
Infine, interpretiamo la stringa risultante come un intero in complemento a due, B , in mo
do chc il suo valore sia

., .1 +

1+
/= 0

9.3 Aritmetica intera

327

Ora, vogliamo chc A = -Byovvero A + B = 0. Si mostra facilmente chc questo vero:


In 2
A + B = - {an _ , + ^

)2
-1 + 1 +

W = O

= - 2"~ 1 + I +

2'(*. + J.)
I

ln ~ 2 \

X 2I
\/ = I

= - 2n ~ l + I + ( 2 " " 1 - 1)

= - 2 " 1 + 2,;_ 1 = 0
La precedente esposizione assume che possiamo dapprima trattare il complemento bit a
bit di A comc un intero senza segno allo scopo di sommare 1, c poi trattare il risultato co
me un intero in complemento a due. Si devono trattare due casi particolari. Dapprima, si
consideri A = 0. In tal caso, per una rappresentazione a 8 bit,
0
complemento bit a bit

0000()000 (complemento a due)


=

11111111 +
1=
100000000 = 0
-

Si ha un riporto al di fuori della posizione di bit pi significativa, che viene ignorato. Il ri


sultato e chc la negazione di 0 sia ancora 0, comc dovrebbe essere.
Il secondo caso speciale e pi problematico. Se consideriamo la negazione della strin
ga formata da un bit 1 seguito da# - 1 bit 0, otteniamo lo stesso numero. Ad esempio, per
parole da 8 bit,
128
complemento bit a bit

10000000 \complemento a due)


Olllllll +

'

10000000 = - 128

Una tale anomalia inevitabile. Il numero di stringhe da n bit c 2", un numero pari. Noi
desideriamo rappresentare interi positivi, negativi e nulli. Se si rappresenta lo stesso numero
di interi positivi e negativi (modulo e segno), allora esistono due rappresentazioni per lo 0.
Se c una sola rappresentazione dello 0 (complemento a due), allora ci deve essere un nu
mero differente di numeri positivi e negativi rappresentabili. Nel caso del complemento a
due, con n bit, il valore -2" rappresentabile, ma +2" non lo .

328

CPU Capitolo 9 - Aritmetica del calcolatore

1001 + - 7
0101 = 5
1110 = -2
(a)

(- 7)+ (+5 )

0011 + 3
0 10 0 = 4
0111 = 7
(c)

(+ 3)+ (+4 )

0101 + 5
0 10 0 = 4
1001 = O v e r f l o w
(e) (+ 5)+ (+4 )

Figura 9.3

11 0 0 + -4
0100 = 4
ioooo = 0
(b)

(-4 )+ ( + 4 )

11 0 0 + -4
1 1 1 1 = -1
| 1 0 1 1 = -5
(d)

(-4 )+ ( - 1 )

10 0 1 + -7
10 1 0 = - 6
IjOOll = O v e r f l o w
(f) (-7 )+( -6)

Somma in complemento a 2.

Somma e sottrazione
La somma in complemento a due e descritta nella Figura 9.3.1 primi quattro esempi mo
strano operazioni chc hanno successo. Se il risultato delloperazione positivo, si ottiene
un numero positivo in notazione binaria naturale. Se il risultato delloperazione negati
vo, si ricava un numero negativo in complemento a due. Si noti che, in alcuni casi, un bit
di riporto (evidenziato in grigio) supera la fine della parola c viene ignorato.
In ogni somma, il risultato potrebbe essere maggiore di quello contcnibile nella di
mensione della parola da usare. Qpesta condizione detta overflow, e quando si verifica
deve essere segnalata dallA L U per impedire qualsiasi tentativo di utilizzare il risultato. Per
rilevare lovcrflow si usa la seguente regola:
Regola di overflow: se si sommano due numeri dello stesso segno, allora si ha overflow se
e solo se il risultato ha segno opposto.
Lc Figure 9.3e e 9.3f mostrano esempi di overflow. La sottrazione viene facilmente gesti
ta con la seguente regola:
1 e p ' M I
8
V ,m *
Regola di sottrazione: per sottrarre un numero (sottraendo) da un altro (minuendo), si
considera l'opposto del sottraendo e lo si somma al minuendo.
Pertanto, si ottiene la sottrazione utilizzando laddizione, come mostrato nella Figura 9.4.
Somma c sottrazione in complemento a due hanno unutile interpretazione geome
trica [BENFi92l, mostrata nella Figura 9.5. Si noti chc un numero e il suo opposto si tro
vano sulla stessa riga tratteggiata. Il cerchio nella parte alta di ciascuno dei due grafici vie
ne prodotto selezionando il segmento appropriato della linea dei numeri e congiungendo

9.3 Aritmetica intera

0101 =
5
+ 1 1 1 0 = -2
lOOll =
3

0010 =
2
+ 1 0 0 1 = -7
1011 = -5
(a)

(b )

M = 2 = 0010
S = I = 0111
-S =
1001

M = 5 = 0 10 1
S = 2 = 0010
-S=
1110
0101 = 5
+0010 = 2
0111 = 7

1 01 1 = -5
+ 1 1 1 0 = -2
| 1 0 0 1 = -7
(d )

(C ) M = -5 = 1011
S =
2 = 00 10
-S =
1110

M =
5 = 0 10 1
S = -2 = 1110
-S =
0 01 0
1 0 1 0 = -6
+ 1 1 0 0 = -4
||0 H O = O v e r f l o w

0111 = 7
+0111 = 7
1110 = O v e r f l o w
(e)

Figura 9.4

(f)

M =
7 = 01 11
S = -7 = 1001
-S =
0111

M = -6 = 1010
S =
4 = 0100
-S =
1 10 0

Sottrazione in complemento a 2 (M - S).

S o m m a di

S ottrazione

pa

pr

0100

S o m m a di

S ottrazione

di

110 . . .

100.

H 9

In-*1
(a ) N u m e r i di 4 bit

Figura 9.5

( b ) N u m e r i di

n bit

Rappresentazione geometrica degli interi in complemento a 2.

329

330

CPU Capitolo 9 - Aritmetica del calcolatore

SW = seleziona la somma o la sottrazione


Figura 9.6

Diagramma a blocchi per la somma c la sottrazione (hardware).

i suoi punti terminali. Notate chc quando i numeri sono disposti su un cerchio il comple
mento a due di un numero c quello che gli sta di fronte. Partendo da un qualsiasi numero
sul cerchio possiamo sommare un numero positivo k (o sottrarre un negativo k) a quel nu
mero spostandoci di k posizioni in senso orario e possiamo sottrarre un numero positivo
k (o sommare un negativo k) da quel numero muovendoci di k posizioni in senso antiora
rio. Se unoperazione aritmetica porta oltre il punto dove i terminali si congiungono, il ri
sultato ottenuto non c corretto (overflow).

La Figura 9.6 suggerisce la struttura hardware necessaria per effettuare addizione e sottra
zione. Lelemento centrale c il sommatore binario, al quale vengono forniti gli addendi e
produce una somma e un segnale di overflow. Il sommatore binario tratta i due numeri co
me interi senza segno. Per la somma, i due numeri provengono da due registri, A e B. Il ri
sultato pu essere memorizzato in imo di questi registri o in un terzo. Lindicazione di over
flow viene posta in un flag. Per la sottrazione, il sottraendo (registro B) viene modificato e

9.3 Aritmetica intera

1011
XllOl

Fattore(Il)
Moltiplicatore (13)

1011

0000

1011
1011

10001111
Figura 9.7

* Prodotti parziali

Prodotto (143)

M oltiplicazione di interi senza segno.

il sommatore legge il suo complemento a due. Notate che la Figura 9.6 mostra soltanto il
percorso dei dati. Sono necessari dei segnali di controllo per decidere se utilizzare o me
no il complemento, a seconda del tipo di operazione (addizione o sottrazione).

Moltiplicazione
Rispetto alla somma c alla sottrazione, la moltiplicazione e unoperazione complessa, sia
se eseguita dallhardware sia dal software. Lo scopo di questo sottoparagrafo fornire al
lettore unidea del tipico approccio scelto. Iniziamo con il problema pi semplice: molti
plicare due numeri in rappresentazione binaria naturale. Vedremo poi una delle tecniche
pi utilizzate per il caso della rappresentazione in complemento a due.

Interi senza segno


La Figura 9.7 mostra come effettuare con carta e penna la moltiplicazione di interi senza
segno. Si possono fare alcune importanti osservazioni.
1. La moltiplicazione implica la generazione di prodotti parziali, uno per ciascuna ci
fra nel moltiplicatore. Tali prodotti vengono poi sommati per generare il prodotto
finale.
2. E semplice definire i prodotti parziali: quando il bit moltiplicatore 0, il prodotto
parziale 0; quando moltiplicatore c 1, il prodotto parziale il moltiplicando.
3. Il prodotto totale si ottiene sommando i prodotti parziali. Per questa operazione,
ogni prodotto parziale successivo traslato di una posizione a sinistra rispetto a quel
lo precedente.
4. La moltiplicazione di due interi binari di ?i bit produce un risultato di In bit (ad esem
pio, I l X l l = 1001).
Rispetto allapproccio manuale, si possono escogitare parecchi accorgimenti per rendere
pi efficiente loperazione. Innanzitutto, si possono sommare di volta in volta i prodotti
parziali piuttosto che aspettare la fine. Ci elimina la necessit di memorizzare iprodotti
parziali. Si pu anche risparmiare tempo sulla generazione dei prodotti parziali. Per ogni
bit 1 del moltiplicatore richiesta una somma e una traslazione; ma per i bit 0 sufficien
te la traslazione.
La Figura 9.8a mostra una possibile implementazione che adotta queste misure. Il
moltiplicatore e il moltiplicando sono caricati in due registri (Q_e M ). E richiesto anche

331

332

CPU Capitolo 9 - Aritmetica del calcolatore

Moltiplicando
M,

Mf

C
0

A
0000

M
1011

V a l o r i iniziali

0
0

1011
0101

1101
Ilio

1011
1011

Somma
Shift

0010

1111

1011

Shift

0
0

1101
0110

1111
1111

1011
1011

Somma 7
Shift

Terzo
Te
c iclo
i

1
0

0001
1000

1111
1111

1011
1011

Somma
Shift

Quarto
ciclo

1101

Primo
ciclo
Secondo

B i ci
3

(b) Esempio tratto dalla Figura 9.7 (prodotto in A , Q )

Figura 9 .8

M oltiplicazione binaria intera (hardware).

un terzo registro, A, inizialmente posto a 0. Esiste poi un registro C a un bit, inizializzato


a 0, chc contiene il riporto della somma.
Viene ora descritto il modo di operare del moltiplicatore. 1bit del moltiplicatore ven
gono letti uno alla volta. Se Qo c 1, allora il moltiplicando viene sommato al registro A e
il risultato viene memorizzato nel registro A, con il bit C usato per lovcrflow. Poi tutti i
bit dei registri C, A c Qvengono traslati verso destra di un bit, di modo che il bit C vada
in A ., A 0 vada in Q ff-I, e Q i)vada perso. Se Qq c 0, allora non si esegue alcuna addizione,
ma solo una traslazione. Questo processo ripetuto per ciascun bit del moltiplicatore ori
ginario. Il prodotto risultante, lungo In bit, e contenuto nei registri A e Q l

9.3 Aritmetica intera

Figura 9.9

Diagramma di flusso per la moltiplicazione binaria senza segno.

La Figura 9.9 mostra il diagramma di flusso dellopcrazione e la Figura 9.8b riporta un


esempio. Si noti che quando il bit moltiplicatore 0 non ce somma.

Moltiplicazione in complemento a due


Abbiamo visto che la somma e la sottrazione possono essere eseguite sui numeri in com
plemento a due trattandoli come interi senza segno. Si consideri loperazione
1001 +
0011 =
1100
Sc questi numeri vengono considerati interi senza segno, allora sommando 9 (1001) e 3
(0011) si ottiene 12 (1100). Considerando interi in complemento a due, sommiamo -7
( 1001 ) a 3 (0011) per ottenere -4(1100).
Sfortunatamente, questo semplice schema non funziona per la moltiplicazione. Per
accorgersene, si consideri ancora la Figura 9.7. Moltiplichiamo 11 (1011) per 13(1101) per
ottenere 143 (10001111). Sc interpretiamo tali numeri in complemento a due, abbiamo

333

334

CPU Capitolo 9 - Aritmetica del calcolatore

1001
X 1 1 01

1011x1x2
1 0 1 1 X 0 X 21
1 0 1 1 X I X 22
1 0 1 1 X I X 23

00001011

00000000
00101100
01011000
10001111

Figura 9 .1 0

M oltiplicazione di due interi da 4 bit senza segno.

chc -5 (1011) per -3 (1101) uguale a -113 (10001111). Qiiesto esempio dimostra che
la moltiplicazione diretta non funziona se i due fattori sono negativi. In effetti, lo schema
non funziona se anche un solo fattore negativo. Per giustificare tale affermazione dob
biamo tornare alla Figura 9.7 e spiegare le operazioni effettuate sulle potenze di 2.
Ricordiamo chc ogni numero binario senza segno pu essere espresso comc somma di po
tenze di 2. Qiiindi,
1101 = I X 23 + I X I 2 + 0 X 2' + I x 2
= 23 + 22 + 2
Inoltre, il prodotto di un numero binario per 2n si ottiene effettuando uno shift di n posi
zioni a sinistra di quel numero. La Figura 9 . 10 ripropone dunque quanto fatto nella Figura
9.7, rendendo espliciti i prodotti parziali. La sola differenza che la Figura 9.10 evidenzia
il fatto che i prodotti parziali devono essere visti come numeri di In bit generati dal mol
tiplicando di n bit.
Il moltiplicando di 4 bit, 1011, viene quindi memorizzato come intero senza segno
nella parola di 8 bit 00001011. Ogni prodotto parziale (tranne 2) consiste in uno shift a
sinistra di questo numero, con riempimento mediante zeri delle posizioni a destra rimaste
libere (ad esempio, uno shift: a sinistra di due posizioni produce il valore 00101100).
Possiamo ora verificare che questa moltiplicazione non funziona se il moltiplicando
negativo. Il problema che il contributo del fattore negativo nei prodotti parziali deve
essere un numero negativo espresso su 2n bit; i bit di segno dei prodotti parziali devono
essere allineati. Ci dimostrato nella Figura 9.11, che illustra la moltiplicazione di 1001
per 0011. Se tali fattori vengono trattati comc numeri senza segno, la moltiplicazione vie
ne effettuata in modo semplice e restituisce 9 X 3 = 27. Tuttavia, se 1001 viene interpreta
to come un numero in complemento a due avente valore decimale -7, allora ogni prodotto

1001
XO O l l
00001001
00010010
00011011

(a) Interi senza segno

Figura 9.1 1

.::

(9)
1001

X 0011
(3)
1001 X 2 i S \ 11111001
1001 X 2? V ' 11110010
(27)
11101011

. . -,

(-7)

Si:
(3)
-(-7) X 2 = (-7)
(-7) X 21 = (-14)

(-21)

(b) Numeri in complemento a due

Confronto tra una m oltiplicazione di interi senza segno e numeri in


complemento a due.

9.3 Aritmetica intera

parziale deve essere un numero negativo in complemento a due di 2n (8) bit, come mo
strato nella Figura 9.1 lb. Notate che loperazione viene realizzata riempiendo la parte a si
nistra di ogni prodotto parziale con bit a 1.
La moltiplicazione immediata non funziona nemmeno nel caso in cui il moltiplica
tore e negativo, perche i bit del moltiplicatore non corrispondono pi agli shift o alle mol
tiplicazioni chc devono essere effettuate. Ad esempio, il numero decimale -3 espresso su
4 bit viene scritto come 1101 in complemento a due. Se prendessimo semplicemente i pro
dotti parziali basati sulle posizioni di ogni bit otterremmo la seguente corrispondenza:
1101 < >- (I

23 + I X I 1 + 0 X 21+ I X 2) = - ( 23 + 22 + 2)

In realt, quello che vogliamo il valore -(21 + 2). E chiaro quindi che un tale moltipli
catore non pu essere usato direttamente nella maniera descritta in precedenza.
Un modo corretto di eseguire la moltiplicazione sarebbe convertire i fattori in nu
meri positivi, eseguire la moltiplicazione e poi calcolare lopposto quando i fattori hanno
segno diverso. Gli implementatori hanno invece preferito usare tecniche che non richie
dono questa trasformazione finale. Una delle pi comuni e lalgoritmo di Booth, che pre
senta anche il vantaggio di rendere pi veloce la moltiplicazione.
Questo algoritmo (illustrato nella Figura 9.12) pu essere descritto come segue.
Moltiplicatore e moltiplicando sono posti rispettivamente nei registri Q^e M . Esiste an
che un registro da un bit posizionato logicamente alla destra del bit meno significativo del
registro Q_e chiamato Q _ r II risultato della moltiplicazione comparir nei registri A e Q^
concatenati. A e Q_j sono inizializzati a 0. Come prima, vengono letti i bit del moltipli
catore uno per volta. Ora, quando un bit viene esaminato, si prende in considerazione an
che il bit alla sua destra. Sc i due bit sono identici, tutti i bit dei registri A, Q^e Q ^ 1ven
gono traslati a destra di 1 bit. Sc i due bit sono diversi, il moltiplicando viene sommato o
sottratto dal registro A 1a seconda del fatto chc i due bit siano 01 oppure 10. Dopo laddi
zione o sottrazione, avviene la traslazione verso destra. In entrambi i casi, il bit pi a sini
stra di A, detto A w_j, copiato in A w 2 c rimane anche in A n y Ci richiede di conservare
il segno del numero in A e Q 1Poichc preserva il bit di segno, tale tecnica viene detta tra
slazione aritmetica (arithmeticshift).
La Figura 9.13 mostra i passi chc lalgoritmo di Booth esegue nella moltiplicazione
di 7 per 3. Iii modo pi compatto, la stessa operazione mostrata nella Figura 9.14a. La par
te rimanente della figura fornisce altri esempi. Per valutare !efficienza dellalgoritmo si no
ti che porzioni consecutive di bit uguali vengono trattate con una sola addizione o sot
trazione.
Ma per quali ragioni lalgoritmo di Booth funziona? Si consideri dapprima il caso di
un moltiplicatore positivo. In particolare, si consideri un moltiplicatore che consista in un
blocco di bit 1 circondati da bit 0, ad esempio, 00011110. Come sappiamo, la moltiplica
zione si pu ottenere sommando in modo appropriato copie traslate del moltiplicando:
M X (00011110) = M X (2 + 23 + 22 + 2J)
= M X (16 + 8 + 4 + 2)
= M X 30

335

336

C PU Capitolo 9 - Aritm etica del calcolatore

I A f - O ^ Q ., f- 0
M

Q <- Moltiplicatore

Fattore

Contatore

= 10

= 01

Shift aritmetico
A destra: A , Q ,
Contatore

Figura 9 .1 2

Algoritmo di Booth per la m oltiplicazione in complemento a 2.

Figura 9.13

Contatore - I

0000

Q
0011

Q-I
0

0111

Valori

1001
1100

0011
1001

0
1

0111
0111

A <- A
Shift

Ilio

0100

0111

Shift

Secondo
ciclo

0101
0010

0100
1010

1
0

0111
0111

A < A
Shift

Terzo
ciclo

0001

0101

0111

Shift

Quarto
ciclo

Esem pio d ell'alg o ritm o di Booth (7 x 3).

7
3

P
Pri
rim o

eie
iclo

9.3 Aritmetica intera

OlllX

0111X

0011=

1101=

(0 )

11111001
0000000
000111
00010101

1-0
1-1
0-1
(2 1 )

11111001
0000111
111001
11101011

( a ) 7 x 3 = 21

(b) 7 X - 3 =-21

1001X

1001X

0011=

1101=

(0 )

00000111
0000000
111001
11101011

1-0
1-1
0-1
(- 21)

00000111
1111001
000111
00010101

(c)-7 X 3 = -21

Figura 9.14

(0 )
1-0
0-1
1-0
(- 2 1 )

(0 )
1-0
0-1
1-0
(2 1 )

(d) -7 X -3 = 21

Esempi d'uso dell'algoritmo di Booth.

Il numero di rali operazioni pu essere ridotto a due se osserviamo chc


2 |-2n ~1 +

+ 2n ~ K 2 + 1 2/; -K

(9 3)

: y:-.:'

M X (00011110) = M X (25 + 2l)


= M X (32
= M X 30
Cos otteniamo il prodotto tramite una somma c una sottrazione del moltiplicando.
M X (01111010) = M X (26 + 25 + 24 4- 23 + 21)
= M X (2~ - 23 + 22 - 2)
Lalgoritmo di Booth si conforma a questo schema eseguendo una sottrazione quando in
contra il bit 1 del doppietto c una somma quando incontra il bit 0 del doppietto 01.
Per mostrare chc lo schema funziona anche con moltiplicatori negativi, c necessario
osservare quanto segue. SiaXun numero negativo in complemento a due:
Rappresentazione di X = { Xxa _2x . y x \x q}
Il valore di X dato dalla formula:
X = -2n-1 + (xn _ 2 X 2" -2) + (xn _ j X 2 n-3) + ... + (X1 X 21) + (*0 X 2)

(9.4)

Il bit pi a sinistra di X e 1, dato che X c negativo. Si assuma chc lo 0 pi a sinistra sia nel
la posizione -esima. Quindi, X c della forma
Rappresentazione di X = {111 ... IOat^i_ xk_2 x ix q

(9.5)

337

338

CPU Capitolo 9 - Aritmetica del calcolatore

e il suo valore
X = -2n~1 + 2n~2 + ... + 2* +1 + (xk_ l X 2k~l) + ... + (*0 X 2)

(9.6)

Dalla formula (9.3) possiamo dire che


2 2 + 2-3 + ... + 2 ^ = 2 ^ - 2 * +1
e ridisponendo i termini si ha,
-2n -1 + 2*-2 + 2n -3 + ... + 2k+1 = -2k+1

(9.7)

Sostituendo la formula (9.7) nella (9.6), abbiamo


X = -2*+l+ (xk_ , X 2k~l) +... + (xq X 2)

(9.8)

Ora, possiamo tornare allalgoritmo di Booth. Ricordando la rappresentazione diXdella


formula (9.5), chiaro che tutti i bit da^0 fino allo 0 pi a sinistravengono gestiti corrcttamcntc, perch producono tutti i termini dellespressione (9.8) tranne (-2* +1) e quindi
sono nella forma corretta. Quando lalgoritmo ha scandito lo 0 pi a sinistra c incontra il
successivo 1 (2 ), avviene una transizione I-0 e ha luogo una sottrazione che genera il ter
mine rimanente dell espressione (9.8).
Consideriamo ad esempio la moltiplicazione di un valore per -6. Nella rap
presentazione in complemento a due, con 8 bit, il numero decimale -6 viene
scritto come 111111010. Dalla relazione (9.4) otteniamo !uguaglianza
-6 = 27 + Z6 4* 25 4- 24 4-23 4 21.
chc il lettore pu immediatamente verificare. Vale quindi,
M X (11111010) = M X (~27 4-26 4- 25 + 24 4 23 + 21)
Grazie alla relazione (9.7) abbiamo
M X (11111010) = M X (~~23 4-2*)
Come facile verificare, questo ancora il prodotto M
quanto visto,
M

(11111010) = M

(-6). Infine, per

(- 23 4- 22 - 21)

'

Possiamo notare chc lalgoritmo di Booth rispetta questo schema. Esso esegue una sot
trazione quando incontra il primo 1 ( 1- 0), una somma quando incontra (01) c infine
unaltra sottrazione quando incontra il primo 1 del successivo blocco di 1. Perci, lalgo
ritmo di Booth esegue meno addizioni e sottrazioni dellalgoritmo diretto.

9.3 Aritmetica intera

0 0 0 0 1 1 0 1

Divisore

1011/10010011

<-

Quoziente
Dividendo

ioni
Resti parziali

001111

1011
100
Figura 9.15

Resto

Esempio di divisione intera senza segno.

Divisione
La divisione pi complessa della moltiplicazione ma basata sugli stessi principi gene
rali. La base dellalgoritmo lapproccio carta e matita, e loperazione implica traslazioni,
somme e sottrazioni ripetute.
La Figura 9.15 mostra un esempio di divisione tra numeri naturali. istruttivo de
scrivere il processo in dettaglio. Per prima cosa, i bit del dividendo vengono esaminati da
sinistra verso destra, finch linsieme di bit esaminati rappresenta un numero maggiore o
uguale al divisore; ci si riferisce a questa situazione dicendo che il divisore in grado di di
videre il numero. Fino a quando capita questo evento, vengono posti degli 0 nel quozien
te da sinistra verso destra. Poi, si pone nel quoziente un 1 e il divisore sottratto dal divi
dendo parziale. 11 risultato viene detto resto parziale. Da questo punto in avanti, la
divisione segue un percorso ciclico. A ogni ciclo, i bit addizionati dal dividendo vengono
accodati al resto parziale fino a quando il risultato maggiore o uguale al divisore. Come
prima, per produrre un nuovo resto parziale a questo numero si sottrae il divisore. Il pro
cesso continua per tutti i bit del dividendo.
La Figura 9.16 mostra un algoritmo che corrisponde al processo di divisione ora de
scritto. Il divisore viene posto nel registro M , il dividendo nel registro Q 1A ogni passo, i
registri A e Qvengono traslati assieme verso sinistra di I bit. M viene sottratto da A per
determinare se A divida il resto parziale.2 Se ci avviene, allora Q i) prende un bit 1.
Altrimenti, Q ijprende uno O e M deve essere risommato ad A per ripristinare il preceden
te valore. Il contatore viene poi decrementato, e il processo continua per n passi. Alla fine,
il quoziente si trova nel registro Q e il resto nel registro A.
QLiesto processo pu, con qualche difficolt, essere esteso ai numeri negativi.
Forniamo qui un approccio per i numeri in complemento a due (alcuni esempi sono mo
strati nella Figura 9.17).
Lalgoritmo assume che il divisore V t il dividendo D siano positivi e che \V\ <| Z)|.
Se \V\ = \D\, allora il quozienteQ b uguale a 1 e il resto R uguale a 0. Se |V\ > \D\, allora
Q jz O e R = D .

2Si tratta di una sottrazione tra interi senza segno. U n risultato che richiede il riporto del bit pi significativo un
risultato negativo.

339

340

CPU Capitolo 9 - Aritmetica del calcolatore

Figura 9.16

Diagramma di flusso della divisione intera senza segno.

Lalgoritmo pu essere riassunto come segue.


1. Caricare il divisore nel registro M c il dividendo nei registri A e Q 1II dividendo de
ve essere espresso in complemento a due su 2n bit. Quindi, per esempio, i bit 0 111 di
ventano 00000111, e 1001 diventa 11111001.
2. Traslare A, Q a sinistra di 1 bit.
3. Sc M c A hanno lo stesso segno, eseguire A < A - M ; altrimenti A < A + M
4. La precedente operazione ha successo se il segno di A non cambia con loperazione.
a. Se loperazione ha successo o A = 0, allora Q t) < 1.
b. Se loperazione non ha successo e A 0, allora Q i) < 0 e si ripristina il preceden
te valore di A.
5. Ripetere i passi dal 2 al 4 tante volte quanti sono i bit in Q 1

9.4 Rappresentazione in virgola mobile

A
OOOO
000 0
1101
1101
000 0
0001
1101
Ilio
0001
0011
1101
000 0
0001
1101
Ilio
0001

Q
0111

Valpre iniziale

Ilio

Ilio

Shift
Utilizza il complemento a 2 di 0011 per la sottrazione
Sottrai
Ripristina, imposta Q 0 = 0

1100

Shift

11 0 0

Sottrai
Ripristina, imposta Q 0 == 0

1000

Shift

1001

Sottrai, imposta Q 0 = 1

0010

Shift

0010

Sottrai
Ripristina, imposta Q n = 0

Esempio di divisione in complemento a due con ripristino (7/3).

Figura 9 .1 7

Il resto si trova in A. Se divisore e dividendo hanno lo stesso segno, allora il quoziente si


trova in Qj altrimenti, il quoziente corretto il complemento a due di Q1
Consideriamo il seguente esempio di divisione intera con tutte le possibili combi
nazioni di segni di D e di V:
D = 7
D = 7
D = -7
D = -7

V= 3
V=- I
V= 3
V =- 3

=>
=>
=>
=>

=2

R= 1

O = -I

^ = -I
/ = -1

R=I

Il lettore noter dalla Figura 9.17 chc (-7)/(3) c (7)/(-3) producono resti diversi.
Osserviamo chc i moduli di^ c d R non vengono influenzati dai segni c chc i segni di 0 ed
R sono facilmente ricavabili da quelli di D e V Pi precisamente, Sign(R) = sign (D ) e
sign() = sign( D ) X sign(V). Un modo per calcolare la divisione in complemento a 2
dunque quello di convcrtirc gli operandi in valori senza segno c, alla fine, calcolare il se
gno tramite il complemento. Qiicsto metodo utilizzato ncllalgoritmo di ripristino
[PARHO0].

9.4

Rappresentazione in virgola mobile

Principi
Con la notazione in virgola fissa c possibile rappresentare un intervallo di numeri interi cen
trato sullo 0. Assmncndo un punto radice, questo formato consente anche di rappresen
tare numeri frazionari.
I
limiti di questo approccio risiedono ncHimpossibilit di rappresentare numeri mol
to grandi e frazioni molto piccole. Inoltre, la parte decimale del quoziente in una divisio
ne potrebbe andare persa.

342

CPU Capitolo 9 - Aritmetica del calcolatore

Nella notazione decimale, questa limitazione viene aggirata utilizzando la notazio


ne scientifica. Pertanto, 976.000.000.000.000 pu essere rappresentato comc 9,76 X IO14e
0,0000000000000976 come 9,76 XlO l4. In effetti, abbiamo traslato lavirgola decimale in
una locazione conveniente e usato lapotenza di 10 per tenerne traccia. Ci consente di rap
presentare numeri molto grandi e molto piccoli usando solo poche cifre.
Analogamente un numero binario pu essere rappresentato nella forma
S X B+E
Questo numero pu essere memorizzato in una stringa suddivisa in tre campi:
segno (pi o meno)
significando S
esponente E
La base B implicita e non necessario memorizzarla. In genere, si assume chc la virgola
si trovi alla destra del bit pi a sinistra (pi significativo), del significando. In altre parole,
ce un bit a sinistra della virgola.
La Figura 9.18a mostra un tipico formato in virgola mobile a 32 bit. Il bit pi a sini
stra contiene il segno del numero (0 = positivo; 1 = negativo). Il valore dcllesponcnte si
trova nei successivi 8 bit. La codifica usata viene detta rappresentazione polarizzata
(ibiased representation). Un valore fisso, detto polarizzazione (bias), viene sottratto dal cam
po per ottenere il vero valore dellesponente. In genere, la polarizzazione vale 2k~l - 1, do
ve k il numero di bit nellesponente binario. In questo caso, il campo da 8 bit contiene i
numeri che vanno da 0 a 255. Con ima polarizzazione di 127, i veri valori dellesponente
vanno da -127 a + 128.
La Tabella 9.2 a inizio capitolo mostra la rappresentazione polarizzata per gli interi
a 4 bit. Si noti che quando i bit di una rappresentazione polarizzata vengono trattati co
me interi senza segno, il modulo dei numeri non cambia. Per esempio, sia nelle rappresen-

Segno del significando


M --- 8 bit

-*

.23 bit

Ne
(a) Formalo

1.1010001
-1.1010001
1.1010001

-1. 1010001

X
X

2 10100
= 0
2 10100
=
1
2-10100
= 0
2-10100
= 1

10010011
10010011
01101011
01101011

10100010000000000000000
10100010000000000000000
10100010000000000000000
10100010000000000000000

(b) Esempi

Figura 9.18

Tipico formato in virgola mobile a 32 bit.

1.6328125
=
= - 1.6328125
=
1.6328125
= - 1.6328125

X
X
X
X

2 20
2 20
22^
2-2

9.4 Rappresentazione in virgola mobile

razioni polarizzate sia in quelle senza segno, il pi grande numero esprimibile 1111 e il
pi piccolo 0000. Ci non c vero nelle rappresentazioni in modulo c segno o in comple
mento a due. Un vantaggio della rappresentazione polarizzate che, nei confronti, i nu
meri in virgola mobile non negativi possono essere trattati come interi.
Lultima parte della parola (in questo caso 23 bit) il significando, detto anche
mantissa.3 Ogni numero in virgola mobile pu essere espresso in molti modi.
.
*;:. ..
Le seguenti scritture sono equivalenti, e il significando c espresso in forma binaria:

. :
.
yv..
.

- .
:
>
:"
O J l O X 23

'
v

:
y

,
:

.
110 X I 1
0,0110 X 26
Per semplificare le operazioni sui numeri in virgola mobile, viene in genere richiesta la lo
ro normalizzazione. In un numero normalizzato, la cifra pi significativa del significan
do diversa da 0. Nella rappresentazione binaria pertanto, i numeri normalizzati hanno il
bit pi significativo del significando uguale a 1. Come detto, la convenzione che ci sia Lm
bit a sinistra del punto radice. QLiindi, un numero normalizzato diverso da 0 ha la forma
l , b b b ... b X

2E

dove b 0 oppure 1. Poich il bit pi significativo sempre 1, non necessario memoriz


zarlo, ma implicito. Pertanto, il campo da 23 bit memorizza un significando da 24 bit con
un valore nellintervallo aperto a destra [1,2). Un numero non normalizzato pu essere
normalizzato traslando il punto radice a destra del bit pi a sinistra posto ale modificando
di conseguenzaIesponcntc.
La Figura 9.18b fornisce degli esempi di numeri in questo formato. Si notino le ca
ratteristiche:
il segno dato dal primo bit della parola
il primo bit del significando effettivo c sempre 1 e non deve essere scritto nel corri
spettivo campo
si somma il valore 127 al vero esponente da memorizzare nel campo esponente
la base 2
Con questa rappresentazione, la Figura 9.19 indica i numeri rappresentabili con 32 bit. In
complemento a due, si possono rappresentare gli interi che vanno da -231 a 2A - 1, per un
totale di 232 numeri diversi. Con il formato in virgola mobile dcHescmpio della Figura 9.18,
sono possibili i seguenti intervalli:
numeri negativi da -(2 - 2~23) X 2128a -2"12
numeri positivi da 2 12 a (2 - 2"23) X 2128

3 II termine mantissa, utilizzato a volte al posto di significando, considerato obsoleto. Il termine mantissa anche
utilizzato per indicare la parte decimale di un logaritmo e per questa ragione meglio evitarlo in questo contesto.

343

344

CPU Capitolo 9 - Aritmetica del calcolatore

Interi rappresentabili

Asse
- degli
interi
(a) Interi in complemento a 2

Underflow
negativo
Overflow
negativo

Numeri negativi
rappresentabili

Underflow
positivo

Numeri positivi
rappresentabili

Overflow
positivo

(b) Numeri in virgola mobile

Figura

9 .1 9

Numeri esprimibili nei formati a

32

bit.

Lc cinque regioni non incluse in questi intervalli sono:


i numeri negativi minori di -(2 - 2 23)

2128, che costituiscono overflow negativo

i numeri negativi maggiori di -2~12 ] che costituiscono underflow negativo


lo zero
i numeri positivi minori di 2~12 , che costituiscono underflow positivo
i numeri positivi maggiori di (2 - 2~23) X 2128, che costituiscono overflow positivo.
Qiicsta rappresentazione non prevede un valore di 0. Tuttavia, come vedremo, le effettive
rappresentazioni in virgola mobile includono uno speciale schema di bit per designarlo. Gli
overflow si verificano quando il risultato di unoperazione aritmetica ha un modulo mag
giore di quello esprimibile con un esponente di 128 (ad esempio, 2120X 2100= 2220), gli un
derflow quando il modulo troppo piccolo (ad esempio, 2-12X 2-1(K) = 2"220). Lunderflow
e un problema meno critico poich il risultato pu essere generalmente approssimato a 0.
E importante notare che non stiamo rappresentando un maggior numero di nume
ri. Il numero di valori distinti rappresentabili con la notazione in virgola mobile a 32 bit e
ancora 232. Abbiamo semplicemente spalmato questi numeri in due intervalli, uno positi
vo e uno negativo. In pratica, la maggior parte dei numeri in virgola mobile chc si deside
ra utilizzare c rappresentata solo per approssimazione. Tuttavia, per interi di piccole di
mensioni, la rappresentazione esatta.
Inoltre, si noti che i numeri rappresentati nella notazione in virgola mobile non so
no equidistanti tra loro, come invece avviene per i numeri in virgola fissa. I possibili valo
ri si addensano in prossimit dellorigine e si diradano allontanandosene, comc mostrato
nella Figura 9.20. Qpesto il compromesso dellaritmetica in virgola mobile: molti calco
li producono risultati chc non sono esatti e devono essere arrotondati al valore pi vicino
che la notazione pu rappresentare.

9.4 Rappresentazione in virgola mobile

Figura 9.20

In

4n

Densit dei numeri in virgola mobile.

Il formato mostrato nella Figura 9.18 evidenzia un compromesso tra intervallo e precisione.
Lcsempio mostra 8 bit dedicati allesponente e 23 al significando. Se incrementiamo il nu
mero di bit nellcsponente, espandiamo lintervallo di numeri esprimibili. Ma, poich il nu
mero di valori esprimibili c fisso, abbiamo ridotto la densit di questi numeri e quindi la
precisione. Il solo modo per incrementare sia lintervallo sia la precisione utilizzare pi
bit. Pertanto, la maggior parte dei calcolatori offre, quanto meno, numeri in precisione sin
gola e in precisione doppia. Generalmente, il formato a precisione singola richiede 32 bit,
mentre quello in precisione doppia 64 bit.
Esiste, pertanto, un compromesso tra il numero di bit nellesponente e numero di bit
nel significando. M a la situazione e ancora pi complicata. La base dellesponente non
necessariamente 2. Larchitettura IB M S/390, ad esempio, usa la base 16 [ANDE67b]. Il
formato comprende mi esponente a 7 bit e un significando a 24 bit.
Nel formato IBM a base 16,
0,11010001 X 2 mi0 = 0,11010001 X 6m
e Iesponente memorizzato 5 anzich 20.
Il vantaggio di usare un esponente pi grande chc con lo stesso numero di bit di espo
nente si pu rappresentare un intervallo pi ampio. Ma, ripetiamo, non abbiamo aumen
tato il numero di valori rappresentabili. Pertanto, a parit di formato, una base maggiore
fornisce un intervallo pi ampio al costo di una minore precisione.

Standard IEEE per la rappresentazione in virgola mobile


La pi importante rappresentazione in virgola mobile c quella definita nello standard IEEE
754 [IEEE85], sviluppato per facilitare la portabilit dei programmi c per incoraggiare lo
sviluppo di programmi sofisticati dal punto di vista numerico. Lo standard stato ampia
mente adottato ed e usato virtualmente in tutti i moderni processori e coprocessori arit
metici. Questo standard definisce un formato a 32 bit e un formato doppio a 64 (Figura
9.21), rispettivamente con esponenti da 8 e 11 bit. La base c 2. Inoltre, sono definiti due for
mati estesi, singolo e doppio, i cui dettagli dipendono daHimplemcntazione. I formati
estesi includono bit aggiuntivi nellesponente (intervallo esteso) e nel significando (preci
sione estesa). I formati estesi devono essere usati per i calcoli intermedi. Grazie alla loro pre
cisione supcriore, essi diminuiscono la possibilit di un risultato finale contaminato da ec
cessivi errori di arrotondamento: con il loro intervallo pi ampio, essi diminuiscono anche
la possibilit di un overflow intermedio (che causerebbe la terminazione del calcolo) il cui
risultato sarebbe stato rappresentabile in un formato di base. Una motivazione aggiuntiva
per il formato singolo esteso c chc racchiude alcuni benefici del formato doppio senza in
correre nella penalit di tempo associata solitamente a una precisione pi alta. La Tabella
9.3 riassume le caratteristiche dei quattro formati.

345

346

CPU Capitolo 9 - Aritmetica del calcolatore

Bit di se g n o

Bit

.23 Bit
T

Ne

Frazione

(a) Formato singolo

Bit di segno

11 Bit
77ato

......

.52 Bit

1
.......

.....

Frazione

..........

.......-............11

IN

(b) Formato doppio

Figura 9.2 1

Formati IEEE 7 54.

Non tutte le combinazioni di bit nei formati IEEE sono interpretate nel solito modo; in
fatti alcune sono usate per rappresentare particolari valori. La Tabella 9.4 indica ivalori as
segnati ad alcune configurazioni. I valori estremi per lesponente, costituiti da tutti 0 (0) e
tutti 1 (255 in formato singolo, 2047 in formato doppio) definiscono valori speciali. Sono
rappresentate le seguenti classi di numeri.
Per esponenti nellintervallo da 1 a 254 in formato singolo e da 1 a 2046 in formato
doppio, vengono rappresentati numeri normalizzati non nulli in virgola mobile.
Lesponente polarizzato, e varia tra -126 e + 127 nel formato singolo e tra -1022 e
+ 1023 in quello doppio. Un numero normalizzato richiedere un bit 1 a sinistra del
punto binario; questo bit implicito, costituendo un significando effettivo a 24 o a
53 bit (che nello standard detto frazione).

Tabella 9 .3

Parametri del formato IEEE 7 54.


Formato

Parametro

Precisione
singola

Precisione
singola estesa

Precisione
doppia

32

> 43

64

>79

>11

2:15

Polarizzazione

127

Non specificato

1023

Non specificato

Esponente massimo

127

>1023

1023

>16383

Esponente minimo

-12 6

<- 1022

-1022

< - 16382

IO "38, IO+38

Non specificato

10 308 JO +308

Non specificato

Ampiezza del significando (bit)4

23

> 31

52

> 63

Numero di esponenti

254

Non specificato

2046

Non specificato

Ampiezza della parola (bit)


Ampiezza dellesponente (bit)

Intervallo numerico (base 10)

Numero di frazioni
Numero di valori
* Escluso il bit implicito

Precisione
doppia estesa

223

Non specificato

252

Non specificato

1,98 X 231

Non specificato

1,99 X I 6

Non specificato

9.5 Aritmetica in virgola mobile

Tabella 9.4

Interpretazione dei numeri in virgola mobile nello standard IEEE 754.


Precisione doppia

Precisione singola
Segno

Esponente
polarizzato

Frazione

Valore

Segno

Esponente
polarizzato

Frazione

Valore

Zero negativo

- o

-0

Pi infinito

255 (tutti 1)

00

2047 (tutti 1)

OO

Meno infinito

255 (tutti 1)

oc

2047 (tutti 1)

oc

Ool

255 (tutti 1)

NaN

0 ol

2047 (tutti 1)

NaN

NaN acceso

Ool

255 (tutti 1)

NaN

Ool

NaN

Positivo
normalizzato

0 < e < 255

V 127 (li)

0 < e < 2047

0 < e < 2047

NaN spento

tJ :
O
4-

Zero positivo

2 1023

non nullo
Negativo
normalizzato

<

e < 255

2C-,Z7 (l.f)

non nullo
Positivo
denormalizzato
Negativo
denormalizzato

0
0

(1.0
_2 - 1 02 3

(li)
2^-1022

f =Jt 0
f#0

2c-,26(0.f)

_ 2 c- 1 2 6 ( 0 .f )

0
1

f# 0

(o.f)
_2<

1022

(o.f)

Un esponente 0 con una frazione di 0 rappresenta lo zero /positivo o negativo, a se


conda del bit di segno). Come detto, utile poter rappresentare lo 0 con un valore
esatto.
Un esponente di tutti 1 con una frazione di 0 rappresenta linfinito positivo o nega
tivo, a seconda del bit di segno. utile avere anche una rappresentazione dellinfini
to. Ci lascia aHutcnte la decisione se trattare lovcrflow come condizione di errore
o riportare il valore infinito e procedere nellcsccuzione del programma.
Un esponente 0 con una frazione non nulla rappresenta un numero denormalizzato.
In questo caso, ilbit a sinistra del punto binario 0 e il vero esponente -126 o -1022.
Il numero risulta positivo o negativo a seconda del bit di segno.
Un esponente di tutti 1 con una frazione non nulla ha il valore simbolico NaN, che
significa N o t a Num ber, e viene usato per segnalare condizioni di errore.
Il significato dei numeri denormalizzati e del NaN trattato nel Paragrafo 9.5.

9.5

Aritmetica in virgola mobile

La Tabella 9.5 riassume le operazioni di base dell aritmetica in virgola mobile. Per laddi
zione e la sottrazione c necessario assicurarsi chc entrambi gli operandi abbiano lo stesso
esponente. QiLesto pu richiedere la traslazione del punto radice in uno degli operandi per
ottenere lallineamento. La moltiplicazione e la divisione sono pi dirette.

347

348

CPU Capitolo 9 - Aritmetica del calcolatore

Tabella 9,5

Numeri e operazioni aritmetiche in virgola mobile.

N u m eri in virgola mobile_________

Operazioni aritmetiche

X = X X B x*

X + Y = (x
X - Y =

Y = Ys X B Y*

s x b

**- y* + r f) X

y>

(X s X Bx*- - Ys) X B r'

X X Y = { X s X Y s) X B x* +Y*

Esempi:
X = 0,3 X IO2 = 30
r = 0,2 X IO3 = 200
X + Y = (0,3

IO2 3 + 0,2)

IO3 = 0,23

X - Y = (0,3

IO2' 3 - 0,2)

IO3 = (-0,17)

X X Y = (0.3

0,2)

IO2^ 3 = 0,06

X + Y = (0,3 - 0,2)

IO2" 3 = 1,5

IO3 = 230
X

IO3 = -170

IO5 = 6000
IO-1 = 0,15

Unopcrazionc in virgola mobile pu produrre una delle seguenti eccezioni.

O v e r flo v dell esponente: un esponente positivo eccede il massimo valore possibi

le per gli esponenti.


U nderflow dell esponente: un esponente negativo minore del minimo valore pos
sibile per gli espon