797
William Stallings Architettura e organizzazione dei calcolatori Progetto e prestazioni ottava edizione PEARSON I Prentice I Hall f I

William Stallings.architettura e Organizzazione Dei Calcolatori.progetto e Prestazioni.8TH

Embed Size (px)

DESCRIPTION

calcolatori elettronici

Citation preview

  • William Stallings

    Architettura e organizzazione

    dei calcolatoriProgetto e prestazioni

    ottava edizione

    PEARSON IPrentice I

    Hall fI

  • Sommario

    Prefazione all'edizione italiana

    Prefazione

    N ote sullautore xx

    Capitolo 0 Guida alla lettura

    0.1 P rofilodeltesto 10.2 Percorso per lettori e docenti 20.3 Internet e risorse web 2

    Parte 1 Panoram ica

    Capitolo 1 Introduzione1.1 Organizzazione e architettura1.2 S tru ttu raefunzione 81.3 Parole chiave, dom ande di revisione 14

    Capitolo 2 Evoluzione e prestazioni del calcolatore2.1 Brevestoriadeicalcolatori 162.2 Progettazione in funzione delle prestazioni 362.3 Evoluzione dell architettura Intel x86 432.4 Sistemi embedded e ARM 442.5 Valutazione delle prestazioni 482.6 Letture e siti web consigliati 562.7 Parole chiave, dom ande di revisione e problemi 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 683.2 Funzione del calcolatore 713.3 Strutture di interconnessione 853.4 Interconnessione a bus 873.5 PCI 963.6 Letture e siti web consigliati 1053.7 Parole chiave, domande di revisione e problemi 105 Appendice 3A Diagrammi di temporizzazione 110

    Capitolo 4 Memoria cache4.1 Panoramica dei sistemi di memoria di un calcolatore 1144.2 Principidcllememoriecache 1214.3 Elementi di progettazione delle cache 1234.4 Organizzazione della cache nel Pentium 4 1444.5 Organizzazione della cache di ARM 1474.6 Letture consigliate 1484.7 Parole chiave, domande di revisione e problemi 149 Appendice 4A Caratteristiche delle prestazioni delle memorie a due livelli 156

    Capitolo 5 Memoria interna5.1 Memoria centrale a semiconduttore 1645.2 Correzione degli errori 1735.3 Organizzazione avanzata delle DRAM 1795.4 Lettiure e siti web consigliati 1855.5 Parole chiave, domande di revisione e problemi 186

    Capitolo 6 Memoria esterna6.1 Disco magnetico 1926.2 RAID 2026.3 Memorie ottiche 2126.4 Nastri magnetici 2176.5 Letture e siti web consigliati 2206.6 Parole chiave, domande di revisione e problemi 221

    Capitolo 7 Input/Output7.1 Dispositivi esterni 2267.2 Moduli di I /O 2297.3 I/O da programma 2327.4 I/O interrupt driven 2357.5 Accesso diretto alla memoria 2447.6 Canali e processori di I /O 2507.7 Interfaccia esterna: FireWire e InfiniBand 2517.8 Lettiure e siti web consigliati 2627.9 Parole chiave, domande di revisione e problemi 263

  • Sommario

    Capitolo 8 Supporto ai sistemi operativi8.1 Panoramicadeisistemioperativi 2708.2 Schedulazione 2818.3 Gestione della memoria 2878.4 Gestione della memoria nel processore Pentiiun 3008.5 Gestione della memoria nel processore ARM 3058.6 Letture e siti web consigliati 3108.7 Parole chiave, domande di revisione e problemi 311

    Parte 3 CPU

    Capitolo 9 Aritmetica del calcolatore9.1 Lunit aritmetico-logica 320 9-2 Rappresentazione degli interi 3219.3 Aritmetica intera 3269.4 Rappresentazione in virgola mobile 3419.5 Aritmetica in virgola mobile 3479.6 Letture e siti web consigliati 3569.7 Parole chiave, domande di revisione e problemi 358

    Capitolo 10 Linguaggi macchina: caratteristiche e funzioni10.1 Caratteristiche delle istruzioni macchina 36410.2 T ipi degli operandi 37010.3 Tipi di dato di Intel x86 e ARM 37310.4 T ipidioperazione 37610.5 T ipi di operazioni in Intel x86 e ARM 38910.6 Lcttureconsigliate 39910.7 Parole chiave, domande di revisione e problemi 400 AppendicelOA Pile (stack) 407 AppendicelOB Little-endian, big-endian e bi-endian 413

    Capitolo 11 Linguaggi macchina: modi ai indirizzamento e formati

    11.1 Indirizzamento 41811.2 M odi di indirizzamento di x86 e ARM 42411.3 Formati delle istruzioni 43011.4 Formati delle istruzioni di x86 e di ARM 43911.5 Linguaggioassembly 44411.6 Letture consigliate 44611.7 Parole chiave, domande di revisione e problemi 446

  • X Sommario

    Capitolo 12 Struttura e funzione del processore12.1 Organizzazione del processore 45212.2 Organizzazione dei registri 45412.3 Ciclo esecutivo delle istruzioni 45912.4 Pipeliningdelleistruzioni 46312.5 La famiglia di processori Intel x86 48312.6 II processore ARM 49112.7 Letture raccomandate 49812.8 Parole chiave, domande di revisione e problemi 499

    , Capitolo 13 ProcessoriRISC13.1 Carattcristichcdeiresecuzionedelleistruzioni 50713.2 Uso di un ampio banco di registri 51113.3 Compilatori ottimizzanti 51713.4 ArchitctturaRISC 51813.5 PipeliningRISC 52313.6 MIPS R4000 52913.7 SPARC 53613.8 Controversia tra RISC e CISC 54213.9 Lctturcraccomandatc 543

    13.10 Parole chiave, domande di revisione e problemi 544

    Capitolo 14 Parallelismo a livello di istruzioni e processori superscalari

    14.1 Panoramica 55014.2 Problemi di progettazione 55514.3 Pentiiun 4 56314.4 ARM Cortex-A8 57014.5 Letture raccomandate 57914.6 Parole chiave, domande di revisione e problemi 580

    Parte 4 Unit di controllo

    Capitolo 15 Operazioni dell'unit di controllo15.1 Micro-operazioni 59015.2 Controllo del processore 59615.3 Implementazionecablata 60615.4 Letture raccomandate 61015.5 Parole chiave, domande di revisione e problemi 611

    Capitolo 16 Controllo microprogrammato16.1 C onccttidibase 61416.2 Serializzazione delle microistruzioni 62316.3 Esecuzione delle microistruzioni 62816.4 T I 8800 64016.5 Letture raccomandate 65016.6 Parole chiave, domande di revisione e problemi 651

  • Parte 5 Organizzazione parallela________________________________

    Sommario

    Capitolo 17 Elaborazione parallela17.1 Organizzazione multiprocessore 65617.2 Mulciproccssori simmetrici 65917.3 Coerenza delle cache e protocollo MESI 66617.4 M ultithreadingechipmidtiprocessorc 67217.5 Cluster 68017.6 Accesso non uniforme alla memoria 68717.7 * Elaborazionevettorialc 69117.8 Letture raccomandate 70417.9 Parole chiave, domande di revisione e problemi 705

    Capitolo 18 Calcolatorimulticore18.1 Prestazioni hardware 71418.2 Prestazioni software 71918.3 Organizzazionimulticore 72418.4 Organizzazione multicore Intel x86 72618.5 A R M llM P C ore 72918.6 Letture e siti web consigliati 73418.7 Parole chiave, domande di revisione e problemi 735

    Appendice A Progetti per l'insegnamento dell'organizzazione e dell'architettura dei calcolatori

    A .l Simidazioni interattive 738A.2 Progetti di ricerca 738A.3 Progetti di simulazione 738A.4 Progetti in linguaggio Assembly 740A.5 Assegnazione di letture e resoconti 741A.6 Esercizi di scrittura 741A.7 Raccolta di test 742

    Appendice B Linguaggio Assembly e argomenti correlatiB.l LinguaggioAssembly 744 B.2 Assemblatori 754 B.3 Caricamento e collegamento 757 B.4 Letture raccomandate e siti web 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 libro di William Stallings sulle architetture dei calcolatori merita un commento particolare.

    La prima osservazione riguarda la meritoria scelta di ARM come architettura di riferimento per le macchine RISC. Con 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 Iemblema dei cosiddetti sistemi embedded (almeno per quanto riguarda le applicazioni commerciali). A differenza dei calcolatori che abbiamo sulla nostra scrivania, questi processori sono letteralmente immersi in sistemi digitali pi ampi e la loro attivit dedicata ai sistemi di cui fanno parte. Naturalmente i pi recenti modelli A RM sono allineati con le scelte architetturali pi avanzate come ad esempio lorganizzazione multi-core.

    D altro canto, lanalogo riferimento CISC costituito dalla nuova famiglia multi-co- re Intel.

    U n altra piccola, ma im portan te novit di questa edizione linserim ento di un Appendice che tratta gli assemblatori. Assembler e loader sono lanello di congiunzione tra lambiente di sviluppo e quello esecutivo. M olto spesso, purtroppo, gli studenti non colgono appieno la differenza tra questi due mondi. Ecco dunque che largomento merita particolare attenzione.

    Ancora dal punto di vista didattico, va detto che il libro uno strum ento prezioso vuoi per il docente, vuoi per lo studente. Gli argomenti sono, come sempre, organizzati molto 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 conoscenze.

    Prof. Ottavio M . DAntona Dipartimento di Informatica e Comunicazione

    Universit degli Studi di Milano

  • Prefazione

    ObiettiviI contenuti di questo libro vertono sulla struttura e la funzione dei calcolatori, allo scopo di presentare, nel modo pi chiaro ed esauriente, la natura e le caratteristiche dei m oderni sistemi di elaborazione.

    Questo obicttivo rappresenta per molti 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 decine di milioni di dollari. E questa estrema variet si presenta non solo nei costi, ma anche nelle dimensioni, nelle prestazioni e nelle applicazioni. In secondo luogo, i continui c repentini cambiamenti che da sempre caratterizzano la tecnologia non accennano ad arrestarsi. Trasformazioni che riguardano tutti gli aspetti dellinformatica, a partire dalla tecnologia dei circuiti integrati fino ad arrivare al sempre pi frequente uso di tecniche di organizzazione parallela.

    Nonostante la variet e la mutevolezza della materia, alcuni concetti fondamentali trovano coerente applicazione in ogni campo. Lapplicazione di tali concetti dipende dallo stato attuale della tecnologia e dagli obiettivi di rapporto tra costi e prestazioni, stabiliti dal progettista. Lintento del libro e quello di fornire unesauriente trattazione dei fondam enti di organizzazione e architettura degli elaboratori in relazione alle odierne problematiche di progettazione.

    Il sottotitolo suggerisce il tema e !approccio scelti. sempre stato im portante progettare sistemi informatici per ottenere alte prestazioni; ma mai come ora tale vincolo stato cos fondamentale e difficile da soddisfare. Stanno crescendo rapidamente tu tte le principali 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 calcolatori diventa sempre pi un gioco in cui si apportano modifiche alla struttura e alla funzione di una specifica area per compensare un calo di prestazioni in unaltra area. Avremo modo di apprezzare come questa sfida venga affrontata in numerose scelte progettuali.

    Un calcolatore, come ogni sistema, consiste di un insieme di componenti interconnessi tra loro. Il sistema meglio caratterizzato in termini di struttura (il modo 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 meglio descritto scomponendolo a sua volta nei suoi principali sottocomponenti e descrivendo struttura e funzione di questi ultimi. Per chiarezza e comprensibilit, lorganizzazione 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 microprogrammazio- nc chc viene tradizionalmente utilizzata prevede che i componenti principali siano la memoria di controllo, i circuiti di scquenzializzazione delle microistruzioni e i registri. Al giorno doggi la microprogrammazione riveste un ruolo minore, pur rimanendo un importante 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 minimo la possibilit che il lettore perda lorientamento, fornendo nel contempo maggiori stimoli rispetto a un approccio bottom- uP-

    In tutta la trattazione, gli aspetti dei sistemi sono visti sia nellottica dellarchitettura (gli attributi di un sistema visibili al programmatore in linguaggio macchina) sia delPor- ganizzazione (le unit operative e le loro interconnessioni che realizzano Parchitettura).

    Esempi di sistemaQiiesto testo si propone di introdurre il lettore ai principi della progettazione e alle tematiche implcmentative dei principali sistemi operativi. Per questo motivo una trattazione 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 non- embedded. Gli x86 sono fondamentalmente processori CISC (complex instruction set computer) con alcune caratteristiche RISC (reduced instruction set computer). I membri 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 parte dei principi di programmazione dellarchitettura dei computer.

    ARM, probabilmente il processore embedded pi diffuso, utilizzato nei telefoni cellulari, iPod, apparecchiature di sensori remoti e in molti altri casi. ARM essenzialmente un sistema RISC. Anche i membri pi recenti della famiglia ARM adottano principi di progettazione superscalare e supportano configurazioni a processore multiplo.

    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 testoIl 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 numerose 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 testoIl testo concepito sia per lambito 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 supportoCollegandosi alla nostra pagina del catalogo on-line http ://h p e .p ea rso n .it/s ta llin g s , studenti e docenti potranno scaricare gratuitamente TAppendice C che contiene gli elementi di base dcllclcttronica digitale. Le porte logiche elementari (AND, OR, N O T ,...) e i pi semplici circuiti combinatori e sequenziali sono gli atomi e le molecole del tessuto con cui realizzato Thardware di tutti i sistemi di elaborazione delTinformazione.

    I docenti che adottano il testo avranno accesso ai seguenti supporti didattici (in lingua inglese) :

    Solutions Manual: soluzioni alle domande di revisione e ai problemi di ogni capitolo.

    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 ttp ://w w w .p e a rso n h ig h e re d .co m /sta llin g s/

    e seguire le procedure di registrazione.

  • xviii Prefazione

    Servizi Internet per insegnanti e studentiEsiste 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 pagina web ha indirizzo:h ttp ://w illiam sta llin g s.co m /C O A /C O A 8e .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 verranno individuati errori di stampa o di altra natura, verr pubblicata unerrata corrige sul sito:W illia m S ta llin g s .co m

    E inoltre a ttivo il sito per gli studenti di inform atica: http://w w w .W illiam Stallings.com /StudentSupport.htm l

    Simulazioni interattiveUna novit di questa edizione sono le simulazioni interattive, che costituiscono un efficace strumento di comprensione per le complesse caratteristiche di progettazione di un moderno calcolatore. Per illustrare le funzioni chiave e gli algoritmi dellorganizzazione dei calcolatori 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 attraverso il seguente percorso:h ttp ://w w w .W illiam S ta llin g s .co m /C O A /A n im atio n /L in ks .h tm l

    Novit dell'ottava edizioneNei quattro anni intercorsi dalla pubblicazione della precedente edizione di questo libro linformatica ha assistito a innovazioni continue. In questa nuova edizione cerchiamo di cogliere tali cambiamenti mantenendo nel contempo una trattazione vasta ed esauriente dellintero 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 conseguenza, in molti punti lesposizione diventata pi chiara e concisa e le immagini sono state 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 approssimativamente la stessa organizzazione dei capitoli, anche se la maggior parte del materiale stata rivista e sono stati apportati numerosi ampliamenti.

    Ecco alcuni tra i pi significativi.

    Simulazione interattiva. La simulazione fornisce un efficace strumento per comprendere i complessi meccanismi di un moderno elaboratore. Lottava edizione contiene 20 strumenti di simulazione interattiva, basati sul Web, che coprono argomen

  • Prefazione xix

    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 disponibilit 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 embedded e della loro progettazione specifica. Larchitettura ARM viene utilizzata come esempio.

    Processori multicore. Questa edizione si occupa di quello che al momento il nuovo 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 ampiamente rivisto, aggiornato e ampliato per offrire una pi completa copertura tecnica 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 benchmark e unanalisi della legge di Amdahl.

    Linguaggio Assembly. Una nuova appendice (Appendice B) si occupa del linguaggio Assembly e degli assemblatori.

    DDR-SDRAM. La DDR, in particolare DDR2 e DDR3, diventata la tecnologia dominante della memoria centrale per i desktop e per i server. La tecnologia DDR viene illustrata nel Capitolo 5.

    Nastro LTO. LTO (linear tape open) diventato il formato super tape pi venduto ed ampiamente utilizzato per sistemi di elaboratori grandi e piccoli, specialmente per il backup. Qiiesto argomento viene trattato nel Capitolo 6.

    RingraziamentiQuesta nuova edizione ha beneficiato della revisione di molte persone che hanno generosamente messo a disposizione il proprio tempo e la propria esperienza. Un primo ringraziamento va a quanti hanno rivisto il manoscritto, completamente o in larga misura: Azad Azadmancsh (University o f Nebraska-Omaha), 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 dettagliate di singoli capitoli: Tim Mensch, Balbir Singh, Michael Spratte (Hewlett-Packard), Frai^ois-Xavier Peretmere, John Levine, Jeff Kenton, Glen Herrmannsfeldt, 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 materiale concernente ARM.

  • 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 of Alaska hanno contribuito allelaborazione degli esercizi. Aswin Sreedhar della University of 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 of Wisconsin e James Stine della Lehigh University hanno preparato gli esercizi SimpleScalar del manuale per i docenti. Todd ha anche scritto la guida per lutente di SimpleScalar.

    Grazie ad Adrian Pullin del Liverpool Hope University College, che si occupato delle 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 architetture dei calcolatori e delle reti digitali. Ha scritto 17 libri sullargomento, che salgono a 42 contando riedizioni e revisioni. I suoi lavori sono apparsi in numerose pubblicazioni del TACM e della IEEE, tra cui Proceedings o f the IEEE e A CM Computing Reviews.

    Per dieci volte ha ricevuto il premio per il miglior libro di testo di informatica da parte della Text and Academic Authors Association.

    Da pi di trentanni nel settore, William Stallings e collaboratore, responsabile tecnico e direttore di molte aziende ad alta tecnologia. Ha progettato e implementato suite di protocollo basate su T C P/IP e su OSI per vari calcolatori e sistemi operativi, dai microcomputer 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 ttp ://w w w .W illia m S ta llin g s .c o m /S tu d e n tS u p p o rt .h tm l

    Questo sito fornisce documenti e link relativi ad argomenti di interesse generale per studenti di informatica (e professionisti). E inoltre redattore della rivista Cryptologia, dedicata a tutti gli aspetti della crittologia.

    William Stallings ha conseguito il Ph.D. in informatica presso il M IT e il B.S. in ingegneria elettronica presso la Notre Dame University.

  • Capitolo 0

    Guida alla lettura

    Questo 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 panoramica dell organizzazione e dellarchitcttura del calcolatore e riguarda il m odo in cui la progettazione dellelaboratore si evoluta.

    Parte 2: esamina i componenti principali di un calcolatore e le loro interconnessioni, sia reciproche sia con il m ondo esterno. Questa parte include anche una discussione dettagliata della memoria interna ed esterna e d e ll!/O . Infine viene esaminata la relazione 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 sezione inizia con una discussione approfondita dell'aritmetica del calcolatore e prosegue analizzando linsieme di istruzioni (instruction set). La parte restante si occupa della struttura e della funzione del processore, includendo una trattazione degli approcci RISC e superscalari.

    Parte 4: discute la struttura interna dellunit di controllo del processore e luso della microprogrammazionc.

    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 inadeguata. 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 elaboratori: la famiglia Intel x86 e la famiglia ARM [advancedRISC machine). Insieme, questi due sistemi rappresentano gran parte delle tendenze attuali dellarchitettura degli elaboratori- 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 dettagliatamente nel Paragrafo 1.2 un elaboratore pu essere visto come una struttura gerarchica. 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 dettaglio, 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 costruisce il contesto che permette di comprendere perch nella progettazione devono essere prese le decisioni che permettono al processore di supportare il funzionamento complessivo 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 prende in considerazione sistemi con processori multipli, inclusi cluster, computer multipro- cessore 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 lettori a mantenersi aggiornati sugli sviluppi di questa materia.

    Siti web per questo libroPer qu esto lib ro s ta ta p red isp o sta u n a p p o sita pag in a w eb a llind irizzo h ttp ://w w w .W illiam Stallings.com /C O A 8e.htm l.

    All in te rn o del sito w eb sar p resen tata e alloccorrenza aggiornata lerrata corrige. Il le tto re preg a to di segnalare v ia e-m ail ogn i errore risco n tra to . Sempre allind irizzo http ://w w w .W illiam Stallings.com si trova lerrata corrige dei m ici altri libri.

    LAutore anche responsabile del Com puter Science Student Resource Site ( h ttp ://w w w .W illia m S ta llin g s .c o m /S tu d e n tS u p p o rt .h tm l) . Lo scopo di tale sito fornire documenti, informazioni e link utili per studenti di informatica c professionisti.

  • 0.3 Internet e risorse web

    I collegamenti sono organizzati in sei categorie.

    Matematica: include un ripasso della matematica di base, un manuale sintetico sulla 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 tecnici e approntare presentazioni tecniche.

    Risorse di ricerca: collegamenti a importanti raccolte di documenti, rapporti tecnici 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 webAirinterno dei capitoli, nel paragrafo Letture e siti web consigliati, verranno segnalati specifici siti che forniscono informazioni relative agli argomenti del libro. Poich gli indirizzi web tendono a cambiare frequentemente, non sono stati inclusi nel libro, ma sono disponibili 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 ComputerArchitecture Home Page: un esauriente indice di informazioni rilevanti per ricerche nel campo dellarchitettura, inclusi gruppi e progetti, organizzazioni tecniche, letteratura, lavoro e informazioni commerciali.

    CPU Info Center: informazioni su processori specifici, compresi documenti tecnici, informazioni sul prodotto e ultime novit.

    Processor Emporium: raccolta di informazioni interessanti e utili.

    ACM Special Interest Group on Computer Architecture: informazioni su attivit e pubblicazioni del gruppo SIGARCH.

    IEEE Technical Committee 011 Computer Architecture: la newsletter TC AA.

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

  • Capitolo 0 - Guida 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

    ArgomentiLa Parte 1 fornisce basi e contesto degli argomenti affrontati nel libro. Vengono presentati i concetti fondamentali dellorganizzazione e dellarchitetturadel calcolatore.

    PercorsoCapitolo 1 - IntroduzioneU 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 componenti in cooperazione. Ogni componente, a sua volta, pu essere descritto nei termini della propria struttura interna e funzione.

    Capitolo 2 - Evoluzione e prestazioni del calcolatoreLa storia della tecnologia informatica costituisce un interessante percorso per introdurre i concetti basilari di organizzazione e architettura del calcolatore. Inoltre, vengono qui descritte 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 strategie adottate per ottenere prestazioni bilanciate ed efficienti.

  • 8 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 moltiplicazione un problema di progettazione architetturale, mentre un problema di organizzazione decidere se quellistruzione venga implementata da un circuito dedicato o tramite somme ripetute. La decisione in merito pu essere basata sulla previsione della frequenza duso dellistruzione di moltiplicazione, sulla velocit comparata dei due approcci, sul costo c sulla dimensione fisica di ununit di moltiplicazione.

    La distinzione tra architettura e organizzazione c stata ed di fondamentale rilevanza. Molti produttori di calcolatori offrono una famiglia di modelli, tutti caratterizzati dalla stessa architettura ma con differenti organizzazioni. Di conseguenza, i vari modelli presentano prezzi differenti e diverse prestazioni. Inoltre, una particolare architettura pu perdurare per molti anni e caratterizzare un buon numero di modelli, mentre la sua organizzazione cambia al variare della tecnologia. Un esempio importante rappresentato dallarchitettura eYlBM System/370, introdotta per la prima volta nel 1970, che ha caratterizzato 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 veloci senza dover abbandonare il software gi sviluppato. Nel corso degli anni IBM ha introdotto svariati nuovi modelli basati su tecnologie superiori, offrendo allacquirente maggiore velocit, minor costo o entrambe le cose. I modelli pi recenti hanno mantenuto la stessa architettura, in modo 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 compatibilit tra generazioni successive meno stringente. Dunque, esiste una maggiore interazione 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 lattenzione si concentra maggiormente sul primo aspetto. Tuttavia, poich lorganizzazione di un elaboratore deve essere progettata per implementare particolari specifiche architetturali, 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 gerarchico 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 progettazione sia per la loro descrizione. Il progettista ha bisogno, di volta in volta, di trattare con un particolare livello del sistema. Il comportamento a ogni livello dipende solo da una caratterizzazione 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 componenti 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, oppure partire da una visione dinsieme e scomporre il sistema nei suoi sottocomponcnti. Esperienze compiute in molti campi suggeriscono che il metodo top-down il pi chiaro ed efficace [WE1N75].

    Pertanto, in questo libro il sistema rappresentato dal calcolatore sar descritto dal-I alco verso il basso: dai componenti principali di un elaboratore (descrivendone struttura e funzione) via via verso i livelli inferiori della gerarchia. La parte restante del paragrafo fornisce ima succinta panoramica di questo programma.

    FunzioneSia 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 generali, 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 possono 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 elaborazione dati.

    Risulta, inoltre, fondamentale che un calcolatore memorizzi i dati. Anche se lelaboratore sta trattando i dati al volo (ad esempio, i dati entranti vengono elaborati e generano un risultato immediatamente disponibile), il calcolatore deve immagazzinare temporaneamente 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 ugualmente importante, il calcolatore esegue una funzione di memorizzazione a lungo termine. I file di dati vengono immagazzinati nellelaboratore per successivi reperimenti e aggiornamenti.

    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 (device) direttamente 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 isione funzionale del calco latore.

    spositivo detto periferica [peripheral). Quando i dati vengono trasmessi su lunghe distanze, da o verso un dispositivo remoto, il processo viene chiamato comunicazione di dati (data communication) .

    Infine, ci deve essere il controllo di queste tre funzioni. In definitiva, questo controllo viene esercitato da chi determina le istruzioni del calcolatore. Airinterno dellelabora- tore presente ununit di controllo che, in risposta alle istruzioni, ne amministra le risorse c orchestra le prestazioni delle sue parti funzionali.

    A questo livello generale di trattazione, il numero di possibili operazioni che possono 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), semplicemente 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 dallesterno verso la memoria dellelaboratore (scrittura), e viceversa (lettura). Gli ultimi due diagrammi mostrano 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 perazioni del calcolatore.

  • Panoramica Capitolo 1 - Introduzione

    Figura 1.3 II calco latore.

    La precedente discussione pu sembrare eccessivamente generica. certamente possibile, perfino al livello pi alto della struttura del calcolatore, differenziare una variet di funzioni ma, per citare [SIEW82] :

    C e ben poco da fare per adattare un calcolatore al compito da eseguire. Il motivo profondo risiede nella natura assolutamente generale dei calcolatori in cui Tunica forma di specializzazione funzionale avviene al momento della programmazione e non del progetto.

    StrutturaLa Figura 1.3 costituisce la rappresentazione pi semplice possibile di un calcolatore. Lelaboratore interagisce in qualche modo con il proprio ambiente esterno. In generale, tutti i collegamenti con lambiente esterno possono essere classificati come dispositivi periferici 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, memoria 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 componenti.

    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 alcuni problemi di progettazione relativi ai sistemi multiprocessore.

  • 1.2 Struttura e funzione

    'X \ UNITA DI7 Logica di \ CONTROLLO scqucnzializ- ]

    /azione I----_

    /^R egistri ' I di controllo e ^decodificatori

    Memoria di controllo

    Figura 1.4 II calco latore: struttura di livello superiore.

    Tutti questi componenti saranno esaminati in dettaglio nella Parte 2. Tuttavia, per i nostri scopi, loggetto pi interessante, e per certi versi pi complesso, la CPU, i cui principali 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 comune la microprogrammazione. In sostanza, ununit di controllo microprogrammata opera eseguendo microistruzioni che ne definiscono la funzionalit. Con questo approccio la struttura dellunit di controllo (che verr esaminata nella Parte 4) pu essere rappresentata 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 revisione1.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 caratterizzata Hallaumento della velocit del processore, dalla diminuzione delle dimensioni dei componenti e dallaumento della dimensione della memoria e della velocit di I/O .

    Un fattore responsabile del grande incremento di velocit del processore rappresentato dalle minori dimensioni dei suoi componenti. Tuttavia, il vero guadagno in velocit degli ultimi anni deriva dallorganizzazione del processore, con lintenso uso di tecniche di pipelining, di esecuzione parallela e di esecuzione speculativa, che anticipa lesecuzione di istruzioni che potrebbero essere successivamente richieste. Queste tecniche mirano a mantenere il processore impegnato per il maggior tempo possibile.

    Un problema critico nella progettazione dei sistemi di elaborazione il bilanciam 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 sfasamento vengono utilizzate varie tecniche, tra cui cache, bus di memoria pi larghi e chip di memoria pi sofisticati.

  • Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

    Iniziam 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 della 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 ENlACIl Breve storia dei calcolatoriprimo calcolatore elettronico digitale al mondo 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)1 responsabile dello studio della gittata e delle tabelle di tiro delle nuove armi, aveva difficolt nel produrre tali tabelle con precisione e in tempi ragionevoli. Senza le tabelle 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 preparazione delle tabelle per ima singola arma avrebbe occupato una persona per molte ore, perfino 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 applicazioni un calcolatore usando la tecnologia dei tubi a vuoto.

    Nel 1943 lesercito accett la proposta: inizi cos il lavoro su ENIAC. La macchina risultante era enorme: pesava 30 tonnellate, occupava unarea di circa 450 m2, 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.

    ENIAC era una macchina decimale e non binaria, nel senso che i numeri erano rappresentati e manipolati in forma decimale. La sua memoria consisteva di 20 accumulato- ri, 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 necessit di dover procedere a una programmazione manuale, impostando interruttori e connettendo 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 NeumannIl compito di predisporre e modificare i programmi per ENIAC era estremamente tedioso. 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 latore I AS.

    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 porzione 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 contemporaneamente. 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 nuovo elaboratore a programma memorizzato, IAS, presso FInstitute for Advanced Studies di Princeton. Questa macchina, seppure non completata fino al 1952, rappresenta il prototipo di tutti i successivi calcolatori a uso generale.

    La Figura 2.1 mostra la struttura generale dellelaboratore IAS (si confronti con la parte 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 direttamente 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, sottrazione, moltiplicazione e divisione. Dunque, e ragionevole che esso debba contenere organi specializzati proprio per queste operazioni.Tuttavia, si deve osservare che, mentre questo principio sembra ragionevole, il modo specifico di realizzarlo richiede un esame pi minuzioso [...]. In ogni caso, il dispositivo 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 eseguire le operazioni, pu essere effettuato in modo pi efficiente da un organo centrale. Se questo dispositivo deve essereflessibile, cio il pi possibile generico, allora occorre 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) vengano eseguite nellordine corretto. Le prime devono essere in qualche modo memorizzate; 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 complesse (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, CC (che insieme formano C) e M corrispondono ai neuroni 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 mezz i di registrazione esterna del dispositivo: R [...].

    2.7 Quarto. Il dispositivo deve avere organi per trasferire [informazioni] da R alle parti 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 direttamente da C [...].

    2.8 Quinto. Ihdispositivo deve avere organi per i trasferimenti [...] dalle sue parti specifiche 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 pertanto detti macchine di von Neumann. A questo punto, vale quindi la pena descrivere brevemente 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 memoria 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 numeri sono rappresentati in notazione binaria e ogni istruzione un sequenza di bit. I loro formati sono mostrati nella Figura 2.2.1 numeri 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, ciascuna comprendente un codice operativo (opcode) di 8 bit che specifica loperazione da eseguire 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 nella Figura 2.3. Questa figura illustra che sia lunit di controllo sia la ALU contengono circuiti 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 correntemente 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

    Unit aritm etico-logica (ALU)

    U nit di controllo

    Figura 2.3 Struttura esplosa del calcolatore IAS.

    Program counter (PC): contiene lindirizzo della prossima coppia di istruzioni da caricare dalla memoria.

    Accumulator (AC) e multiplier quotient (MQ): 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 significativi 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 successiva 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 Diagram m a di flusso parzia le di un'operazione del calco latore 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 queste operazioni vengono controllate da circuiti elettronici e hanno come effetto luso di linee dati (datapath). Per semplificare lelettronica, viene usato un solo registro per specificare 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 (execute cycle). Il circuito di controllo interpreta il codice operativo ed esegue listruzione, impostando i segnali di controllo appropriati per trasferire i dati o per fare eseguire unoperazione dalla ALU.

  • Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

    Tabella 2.1 Istruzioni IAS.

    Tipodi istruzione

    Codiceoperativo

    Rappresentazionesimbolica

    Descrizione

    Trasferimentodati

    00001010 LOAD M Q . Scrive il contenuto del registro M Q jiellaccuihulatore AC

    00001001 LOAD M Q1M(X) Scrive il contenuto di M (X) in MQ_

    00100001 STORM (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 00001101 JUMP M(X,0:19) Carica listruzione dalla met sinistra di M(X)incondizionato 00001110 JUMP M(X,20:39) Carica listruzione dalla met destra di M(X)

    Saltocondizionato

    00001111 JUM P+M (X,0:19) Se il numero nellaccumulatorc 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)

    Aritmetica 00000101 A D D M (X ) Somma M(X) ad AC; pone il risultato in AC

    00000111 ADD |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 MQj 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 resto 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)

    Modifica di indirizzo

    00010010 STOR M (X ,8:19) Rimpiazza il campo indirizzo sinistro di M(X) con i 12 bit pi a destra di AC

    00010011 STOR M(X,28:39) Rimpiazza il campo indirizzo destro di M(X) con i 12 bit pi a destra di AC

    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 (o viceversa) o tra due registri della ALU.

    Salto incondizionato: normalmente, lunit di controllo esegue istruzioni nell ordine con cui sono registrate in memoria. Tale ordine pu essere cambiato tramite unistruzione 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 considerevole 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 quale delle 21 operazioni debba essere eseguita. I restanti bit indicano quale delle 1000 locazioni 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 elaborati. La moltiplicazione richiede 39 sotto-operazioni, una per ciascun bit, eccetto quella del bit di segno.

    Calcolatori commercialiGli anni Cinquanta videro la nascita dell'industria dei calcolatori, con due societ a dominare 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 commissionata dallUfficio Anagrafe per il Censimento del 1950. La Eckert-Mauehly Computer Corporation divenne parte della divisione 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 nome stesso, UNIVAC era concepito tanto per applicazioni scientifiche quanto commerciali. Il primo documento di descrizione del sistema elencava - come esempi dei compiti eseguibili - calcoli matriciali, problemi statistici, fatturazioni dei premi per le compagnie di assicurazioni e problemi logistici.

    U N IVACII, che presentava una memoria pi ampia c prestazioni pi elevate rispetto a UNIVAC I, fu immesso sul mercato alla fine degli anni Cinquanta, e mostrava caratteristiche diventate tipiche nellindustria dei calcolatori. Innanzitutto, lo sviluppo della tecnologia consente la costruzione di elaboratori sempre pi grandi e potenti. Secondo, i nuovi modelli hanno la propriet della cosiddetta backward compatibility? Questo significa 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 cliente 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 dovuto costituire la sua principale fonte di guadagno. Questa serie evidenzia una significativa 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 primo calcolatore elettronico a programma memorizzato: 701, concepito fondamentalmente 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 transistorLa prima rivoluzione nel mondo dei calcolatori elettronici dovuta alla sostituzione dei tubi a vuoto con i transistor. Il transistor pi piccolo, pi economico, dissipa meno calore delle valvole, e pu essere usato esattamente come le valvole per costruire elaboratori. 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 totalmente funzionanti a transistor furono immessi sul mercato verso la fine degli anni Cinquanta. Ancora una volta, IBM non fu la prima societ a sfruttare la nuova tecnologia. I pionieri furono NCR 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 consueta 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 aritmetico-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, DEC proprio in quell anno produsse il suo primo modello: PDP-1. Qiiesto calcolatore diede inizio al fenomeno dei minicomputer, che sarebbero diventati cos importanti nella terza generazione.

    Tabella 2.2 Generazioni di calco latori.

    Generazione Dateapprossimative

    Tecnologia Velocit caratteristica (operazioni al secondo)

    1 1946-1957 Tubi a vuoto 40.0002 1958-1964 Transistor 200.000

    3 1965-1971 Piccola e media scala di integrazione 1.000.0004 1972-1977 Larga scala di integrazione 10.000.000

    5 1978-1991 Grande scala di integrazione 100.000.0006 1991- Scala ultra-larga di integrazione 1.000.000.000

  • 2.1 Breve storia dei calcolatori

    IBM 7094Dairincroduzione della serie 700 (nel 1952) alla creazione dellultimo esemplare della serie 7000 (nel 1964), questa linea di prodotti IBM sub levoluzione tipica dei prodotti informatici.

    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 modo significativo 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 importante 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 specifico 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 CPU d inizio alloperazione 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 CPU e le segnala il completamento delloperazione. Tale accorgimento solleva la CPU da un considerevole carico di lavoro.

    Unaltra nuova caratteristica il multiplexor, che rappresenta il punto di raccordo per i canali di dati, per la CPU e per la memoria. Il multiplexor governa laccesso alla memoria da parte della CPU e dei canali di dati, permettendo a questi dispositivi di operare indipendentemente.

    La terza generazione: circuiti integratiI 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 discreti: 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 Computer Science Student Resource, allindirizzo: WilliamStallings.com/StudentSupport.htm l.

  • Tabella 2.3 Membri della Serie IBM 700/7000.

    Numero del modello

    Data di prima

    consegna

    Tecnologia della CPU

    Tecnologiadella

    memoria

    Cielomacchina

    ( )

    Dimensione della

    memoria (K)

    Numero di codici operativi

    Numero Virgola Sovrapposi/ioni di registri mobile nellI/O

    indice cablata (canali)

    Sovrapposizioni nel prelievo di istruzioni

    Velocit (comparata

    al 701)

    701 1952 T ubi a vuo to

    Tubielettrostatici

    30 2 - 4 24 0 N o N o N o 1

    704 1955 Tubi a vuoto

    Nuclei 12 4 -3 2 80 3 Si N o N o 2,5

    709 1958 'Tubi a vuoto

    N uclei 12 32 140j 35 Si N o 4

    7090 1960 Transistor Nuclei 2,18 32 169 UJ :

    Si N o 25

    70941 1962 T ransistor Nuclei 2 32 185Si

    7 (precisione doppia)

    Si Si 30

    7 0 9 4 II 1964 T ransistor Nuclei 1,4 32 185Si

    7 (precisione doppia)

    Si Si 50

    26 Panoram

    ica

    Capitolo 2

    - Evoluzione

    e p

    restazioni

    del calcolato

    re

  • 2.1 Breve storia dei calcolatori

    Figura 2.5 Configurazione de ll'IBM 7094.

    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 elaboratori della seconda generazione contenevano circa 10000 transistor, un numero che crebbe fino alle centinaia di migliaia, rendendo sempre pi difficile la produzione di nuove e pi potenti macchine.

    Nel 1958 avvenne la scoperta che rivoluzion lelettronica e che diede inizio allera della microelettronica: linvenzione del circuito integrato. Dopo una breve panoramica su questa tecnologia ci soffermeremo su quelli che sono forse i due pi importanti esemplari della terza generazione, entrambi introdotti ai suoi albori: IBM System/360 c DEC PDP-8.

    MicroelettronicaMicroelettronica significa letteralmente elettronica microscopica. Fin dagli albori dell e- lettronica digitale c dellindustria dei calcolatori ce stata tuia consistente e continua tendenza 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

    Segnale di attivazione

    Uscite Ingressi

    Lettura

    Scrittura

    Celia di memoria (binaria)

    i k i

    (a) Porta logica (b) Cella di memoria

    Figura 2.6 Elementi fondamentali di un calcolatore.

    Gli elementi fondamentali di un calcolatore digitale, come sappiamo, eseguono la memorizzazione, il trasferimento, lelaborazione dei dati e varie funzioni di controllo. I componenti fondamentali sono di due tipi (Figura 2.6): porte logiche [gate) e celle di memoria (memory celt). Una porta (logica) un dispositivo che esegue una semplice funzione booleana o logica, come ad esempio: SEyfE B SONO VERI ALLORA CE VERO (porta AND). Tali dispositivi sono chiamati porte perche controllano il flusso di dati esattamente 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 grandissimo numero di questi dispositivi fondamentali. Possiamo correlare questo discorso alle nostre 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 controllo che la attiva. Quando il segnale di controllo ON, la porta esegue la sua funzione sugli ingressi e produce unuscita. In modo simile, la cella di memoria immagazziner il bit che si trova sul suo ingresso quando il segnale di scrittura e ON e invier sulla sua connessione duscita il bit presente nella cella quando il segnale di lettura 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 pezzi 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 importante, questi transistor possono essere connessi tramite un processo di metallizzazione per formare circuiti.

  • 2.1 Breve storia dei calcolatori

    Figura 2.7 Relazione tra wafer, chip e porta.

    La Figura 2.7 mostra i concetti chiave di un circuito integrato. Un sottile dischetto di silicio, 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 superfici 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 imballato in un alloggiamento di protezione da cui escono i contatti per il collegamento ai dispositivi esterni. Per produrre circuiti pi grandi e complessi possibile interconnettere un certo numero di questi componenti sulla piastra di un circuito stampato.

    Inizialmente, solo poche porte e celle di memoria potevano essere prodotte in modo affidabile e assemblate assieme. QiLesti primi circuiti integrati sono generalmente indicati 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 tecnologiche di maggiore rilievo.5 La figura riflette la famosa legge di Moorc. Gordon Moore, uno dei fondatori di Intel, nel 1965 [MOOR65], 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 veda il documento di ripasso della matematica elementare sul sito Computer Science Student Support, allindirizzo: WilliamStallings.com/StudentSupport.html.

  • Panoramica Capitolo 2 - Evoluzione e prestazioni del calcolatore

    1 miliardo di transistor

    Figura 2 .8 Crescita del numero di transistor nella C PU [B O H R 03].

    potevano essere integrati in un singolo chip stava raddoppiando ogni anno e previde correttamente che questo ritmo di crescita sarebbe continuato nel limmediato futuro. Nella sorpresa generale, Moore incluso, tale ritmo continu anno dopo anno, decennio dopo decennio. 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 vicini, la lunghezza dei percorsi elettrici risulta abbreviata, il che implica un incremento 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 interconnessioni tra i chip.

  • 2.1 Breve storia dei calcolatori

    IBM System/360Fino al 1964, grazie alla sua serie 7000, IBM ebbe una salda presa sul mercato dei calcolatori. In quell anno la societ annunci la nuova famiglia di elaboratori System/360. La notizia, 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 transizione 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 dellarchitet- tura 7000 e produrre un sistema al passo con la nuova tecnologia dei circuiti integrati [PA- DE81, GIFF87].

    La strategia ebbe successo sia da un punto di vista economico sia tecnico. Il 360 rappresent il successo del decennio e consolid IBM nella posizione di produttore dominante, con una quota di mercato superiore al 70 per cento. Con alcune modifiche ed estensioni, larchitettura dei mainframe6 IBM tuttora quella del System/360. Esempi duso di questa architettura possono essere ritrovati in tutto il testo.

    Il System/360 fu la prima famiglia di computer pianificata a livello industriale. La famiglia 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 contraddistinto 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 serie, con la sola differenza dei tempi di esecuzione.

    Il concetto di famiglia di calcolatori compatibili fu innovativo c di enorme successo. Un cliente con richieste modeste e lui budget limitato poteva iniziare con il poco costoso Modello 30. In seguito poteva passare a una macchina pi potente senza sacrificare Tinvestimento nel software gi sviluppato.

    Tabella 2.4 Caratteristiche salienti della fam iglia System/360.

    Caratteristiche M odello 30 Modello 40 M odello 50 Modello 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 1 3,5 10 21 50

    Numero massimo di canali per i dati 3 3 4 6 6

    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 struttura 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 della famiglia molto simile e in molti casi esattamente lo stesso. In tal modo un programma eseguibile su un dispositivo lo sar anche su ogni altro. In alcuni casi, i m odelli 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 verso il basso.

    Sistema operativo. Lo stesso sistema operativo di base c disponibile per tutti i membri della famiglia. In alcuni casi, ai membri di fascia pi alta vengono aggiunte ulteriori 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.

    Dimensione della memoria. La dimensione della memoria centrale cresce al passare 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 aumentare la velocit consiste nellincrcmcntarc la larghezza di banda del bus di memoria (il collegamento tra la memoria centrale e la CPU). Nel Modello 30 poteva essere prelevato dalla memoria 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 impatto sullintero comparto industriale. Molte delle sue caratteristiche sono diventate standard su altri grandi calcolatori.

    DEC PDP-8Nello stesso anno in cui IBM consegn il primo System/360, vi fu un altro esordio di grande importanza: PDP-8. Nellepoca in cui un calcolatore medio richiedeva unintera stanza climatizzata, PDP-8 (soprannominato minicomputer dalla stessa DEC, in omaggio alla creazione della minigonna) era abbastanza piccolo da poter stare su un banco di laboratorio. 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 laboratorio. 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 imprese 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 OEM {original equipment manufacturers, manifattura di prodotti originali).

    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 Brevestoriadeicalcolatori

    Tabella 2.5 Evoluzioni del PDP-8 [VO EL881. ________

    Costo del processore + TassoConsegnato 4K parole di trasferimento Volume

    laprim a di memoria a 12 bit dati dalla memoria (in piedi InnovazioniModello volta (in migliaia di dollari) (parole/ s) cubi) e migliorie

    PDP-8 4/65 16,2 1,26 8,0 Produzione automatica ad avvolgimento di cavo

    PDP-8/5 9/66 8,79 0,08 3,2 Implementazione seriale delle istruzioni

    PD 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 Minor 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 EC1 il PDP-8 stabil il concetto di minicomputer, segnando la strada per unindustria multimiliardaria Esso impose DEC come principale venditore di minicomputer, e, al tempo in cui PDP-8 raggiunse il termine della propria vita utile, DEC 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 (vedi 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 generazioniLa 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 circuiti integrati. Con lintroduzio