Calcolatori Elettroni (5 crediti) R. Beraldi a.a. 2003/2004 Informazione generali sul corso • • • Obiettivo del corso: – Conoscenza del funzionamento di un calcolatore elettronico Verifica – Prova scritta (4-5 domande) + orale Libri di testo – Tanenbaum, “Architettura dei computer un approccio strutturato”, IV edizione, UTET Libreria – Cioffi-Jorno-Villani - “Il processore PD32”, MASSON • Sito del corso – http://www.dis.uniroma1.it/~beraldi/didattica.html • Materiale integrativo – Trasparenze del corso, disponibili sul sito del corso Calcolatori Elettronici, Beraldi, aa 03/04 Programma del corso • Introduzione • Struttura di un calcolatore • Rappresentazione numerica e codici • Il livello logico digitale • Il processore PD-32 Calcolatori Elettronici, Beraldi, aa 03/04 Introduzione Calcolatore elettronico: i punti di vista… • Utente finale del calcolatore • Programmatore – Utilizza i programmi (o applicazioni), ex: word processor.. – Scrive le applicazioni per il calcolatore • Singolo, gruppo Calcolatori Elettronici, Beraldi, aa 03/04 Introduzione Calcolatore elettronico: i punti di vista… • Utente finale del calcolatore – Utilizza i programmi (o applicazioni), ex: word processor.. • Programmatore – Scrive le applicazioni per il calcolatore • Singolo, gruppo • Gestore del calcolatore (sistemista) – Ha il compito di far funzionare correttamente il calcolatore • Installare sw, ottimizzazione prestazioni, aggiornamenti, backup dati,.. – A seconda delle dimensione del calcolatore può coincidere con l’utente finale o con un gruppo di persone.. • Progettista – • Progetta nuovi calcolatori Il teorico – Studia a livello astratto le proprietà del “calcolo” • Esistenza e complessità di algoritmi (programmi) per risolvere un problema Calcolatori Elettronici, Beraldi, aa 03/04 Introduzione Hardware e Software • Hardware (HW) – L’insieme dei componenti elettronici di un calcolatore • Circuititi elettronici (Memoria, dispositivi I/O, collegamenti fisici,..) • Software (SW) – Insieme di programmi eseguibili da un calcolatore – Software di base (sistema operativo) • • • • – Windows (98, NT,2K,..) MAC OS Unix / Linux … Applicazioni utente • Microsoft Office.. – sw per lo sviluppo di applicazioni • Compilatori, ambienti integrati di sviluppo (IDE) • HW e SW sono logicamente equivalenti Calcolatori Elettronici, Beraldi, aa 03/04 Introduzione Gamma dei sistemi di calcolo • Sistemi “ embedded ” • PDA (Personal Digital Assistant) – Sistemi di calcolcolo incorporati in altri sistemi (ex: automobili,..) – Agenda elettronica • Personal Computer, PC – Automazione d’ufficio • Stazioni di lavoro (Workstation ,WS) – Progettazione Assistita dal Computer (CAD) • Server – Applicazioni usate da molti utenti, ex web server • Mainframe – Sistemi per la gestione del sistema informativo di una organizzazione (es:banca) • Supercalcolatore – Previsione del tempo • Reti di Workstation (NOW) – Aumento della potenza di calcolo mediante il collegamento di PC o WS mediante rete ad alta velocità Calcolatori Elettronici, Beraldi, aa 03/04 Introduzione Esempio d’impiego di calcolatori • Posta elettronica Server Applicazione Client di posta Calcolatori Elettronici, Beraldi, aa 03/04 Server Client Breve storia del calcolo automatico Gli antenati (1642-1944) • Prima macchina da calcolo: Pascalina, costruita da B.Pascal(1623-1662) • Progetto della prima macchina programmabile, la macchina analitica, da parte di C. Babbage nel 1834 – basata su dischi meccanici combinatori in movimento per effettuare operazioni di addizione – Programmazione delle operazioni con memorizzazione dei risultati intermedi – Uso di schede perforate per ingresso dati, già impiegate per “la programmazione” dei telai da Jaquard – Prima attività di programmazione da parte di Ada Lovelace (nome dato ad un linguaggio di programmazione attuale, ADA) • Primi tentativi d’impiego di dispositivi elettromeccanici (relè) per lavorare su grandezze binarie, calcolatore Z1 (Stibbitz,1937 - Zuse) • Aiken progetta e porta a termine Mark I (1944) – Primo calcolatore “general purpose” Calcolatori Elettronici, Beraldi, aa 03/04 Breve storia del calcolo automatico Prima generazione – valvole termoioniche (1945-1955) • COLOSSUS – Calcolatore Special-purpose impiegato per la decodifica di messaggi in codice durante la II guerra mondiale – Partecipazione di A. Turing – Primo calcolatore digitale al mondo (funzionante già nel 1943) • ENIAC (Electronic Numerical Integrator and Calculator) • IAS : Primo calcolatore con programma memorizzato (1952) – primo calcolatore elettronico programmabile, realizzato da Eckert e Mauchly (Moore School della Pennsylvania University) – Pensata per calcoli balistici durante la II guerra mondiale – 18.000 tubi a vuoto, 30 tonnellate, forma da U, 1900 somme al secondo – Programmabile mediante collegamento di cavi esterni – Esistenza resa nota alla fine della guerra (1946) – John v. Neumann (“architettura di von Neumann”) Calcolatori Elettronici, Beraldi, aa 03/04 Breve storia del calcolo automatico La macchina di von Neumann Memoria (dati e programmi) Unità logica aritmetica con registro accumulatore Unità di controllo Dispositivo ingresso Dispositivo di uscita Esempio di programma Load (INPUT) //Copia il contenuto dell’input nell’accumulatore Add B //Somma il contenuto dell’accumulatore con il contenuto di B, risultato //nell’accumulatore Store (OUTPUT) //Copia l’accumulatore in uscita Calcolatori Elettronici, Beraldi, aa 03/04 Breve storia del calcolo automatico Seconda generazione • Seconda generazione (1955-1965), basata sui transistor – TX-0 / TX-2 macchine sperimentali – Nasce la DEC, Digital Equipment Corporation • PDP-1 (simile al TX-0) • PDP-8 Primo minicomputer, annunciato nel 1965 – Usa un bus (unico) per collegare tutte le parti – 50.000 esemplari venduti – Nasce la CDC, Control Data Corporation • Supercomputer (Cray-1) Calcolatori Elettronici, Beraldi, aa 03/04 Breve storia del calcolo automatico Terza generazione • Terza generazione (1965-1980), circuiti integrati – – IBM S/360 prima “famiglia” di calcolatori • Immesso sul mercato nel 1964 • Idea nuova: Compatibilità fra elementi della famiglia Intel 4004 (1971) • Primo microprocessore Calcolatori Elettronici, Beraldi, aa 03/04 Breve storia del calcolo automatico Quarta generazione –integrazione a larga scala (VLSI) • 1980: Inizia la diffusione dei Personal Computer (PC) • Progressiva riduzione dell’importanza dei centri di calcolo (CED), unico luogo in cui sono gestiti e calcolatori • IBM diffuse il progetto dei processori dando luogo alla creazione di “cloni” del PC IBM • Altre ditte in campo (Apple, Amiga, Atari,..) • La diffusione del PC si accompagna al successo del Sistema Operativo Windows derivato dal SO OS/2 simile a quello legato ai PC Apple Calcolatori Elettronici, Beraldi, aa 03/04 Alcune foto PDP-8 (1965) ENIAC- (1946) primo minicalcolatore primo calcolatore moderno Ampiamente diffuso Calcolatori Elettronici, Beraldi, aa 03/04 COLOSSUS Usato per decifrare i messaggi dei tedeschi Sembra il primo vero computer Calcolatori Elettronici, Beraldi, aa 03/04 Personal Computer CRAY-1 (1974) PDA primo supercalcolatore vettoriale Calcolatori Elettronici, Beraldi, aa 03/04 Calcolatore elettronico oggi… • Sistema elettronico digitale programmabile – Sistema • Parti (o componenti) che interagiscono in modo organico fra loro – Elettronico digitale • Sfrutta componenti elettronici digitali (porte logiche) • In particolare lavora su grandezze binarie (bit) che possono cioè assumere due soli valori, indicati convenzionalmente con 0 e 1 – Programmabile • Il comportamento del sistema è flessibile e specificato mediante un programma, ossia un insieme di ordini • Si fonda sull’ Architettura di von Neumann – Altre architetture (ex: calcolatori paralleli, multiprocessore, .. sono possibili man non trattate nel corso) Calcolatori Elettronici, Beraldi, aa 03/04 La nozione di macchina … • Per studiare l’architettura di un calcolatore è conveniente introdurre la nozione astratta di macchina • Essa è un’entità in grado di eseguire istruzioni appartenenti ad un insieme, detto set istruzioni o linguaggio – Una macchina può essere fisica o virtuale – Spesso si usa il termine livello è per indicare una macchina • Macchina ⇔ Linguaggio • Una macchina è composta da un insieme di risorse che sono controllare e gestite dalle istruzioni – Il significato di ogni istruzione è dato facendo riferimento alle risorse • Ammettiamo di aver definito un linguaggio L1, come realizzare la macchina che esegue le istruzioni di L1? Calcolatori Elettronici, Beraldi, aa 03/04 L’hw come supporto all’esecuzione • Possiamo considerare l’insieme di componenti elettronici (porte logiche, elementi di memoria) come una macchina (macchina fisica,o di livello 0, M0) dotata concettualmente di un linguaggio L0, costruita per eseguire materialmente tutte le istruzioni di L1 – In realtà il linguaggio L0, che controlla le risorse di M0 è solo concettuale poiché il comportamento di M0 è “scritto” nei circuiti elettronici • Se P è un programma scritto in L1, tale macchina esamina una istruzione di P per volta e la esegue (è un interprete di L1 realizzato in hw) – Ogni istruzione in L1 corrisponde ad una sequenza di istruzioni in L0, ossia una serie di attività dei circuiti elettronici P Macchina fisica Calcolatori Elettronici, Beraldi, aa 03/04 “Interprete” di L1 che esegue le istruzioni di L1 L’hw come supporto all’esecuzione • Da un punto di vista astratto è conveniente pensare di avere a disposizione una macchina virtuale M1, composta da opportune risorse, programmabile mediante il linguaggio L1 • La macchina M1 è gerarchicamente superiore ad M0, nel senso che è essa è più astratta (anche se non di molto) di M0 M1,L1 M0,L0 Calcolatori Elettronici, Beraldi, aa 03/04 Il livello 1 microarchitettura • Le risorse principali di tale livello sono • Registri (in grado di memorizzare gruppi di bit, ex: 16-32 bit) • ALU (Unità Aritmetica Logica) • Data-path (connessioni per il trasferimento dei dati) • A questo livello esiste un programma (microprogramma) per il controllo del data-path. Il programma è un interprete del linguaggio di livello 2 – Nota: in alcune architetture tale interprete sw non esiste ed il data-path è controllato direttamente dall’hw Calcolatori Elettronici, Beraldi, aa 03/04 Realizzazione di una macchina virtuale Interpretazione • E’ possibile ora scrivere un programma in L1 che sia un interprete di un altro linguaggio L2 • In questo modo “realizzo” la macchina virtuale M2 Programma scritto in L2 P M2,L2 M2 Interpretazione Interprete di L2 scritto in L1 M1,L1 Esecuzione via hw Macchina fisica M0,L0 Calcolatori Elettronici, Beraldi, aa 03/04 Interpretazione • equivalenti • ∈ L2 σ(IST)={i1,..,im} ij ∈ L1 In generale ad una istruzione IST corrisponde una sequenza di istruzioni Dato un programma in L2, l’interprete esamina la prima istruzione del programma ed esegue la sequenza equivalente, poi esamina la seconda istruzione e cosi via.. Istruzione macchina µI µI µI Istruzione L2 … µI Sequenza equivalente σ Il livello 2 ISA (Instruction Set Architecture) • Il livello 2 è il livello più basso al quale un utente possa programmare un calcolatore – • Registri, locazioni di memoria, .. In alcuni casi la macchina di livello ISA è realizzata direttamente poggiandosi sull’hw (nelle cosiddette macchine RISC); – • La macchina del livello microarchitettura non è programmabile In altri è ottenuta nel modo descritto, ossia mediante un interprete sw (microprogramma) eseguito dall’hw (macchine CISC) livello ISA livello ISA Interprete Macchina fisica Macchina fisica Realizzazione mediante logica cablata Realizzazione mediante Calcolatori Elettronici, Beraldi, aa 03/04 logica microprogrammata Riepilogo primi tre livelli ISA • Interprete sw o controllo cablato microarchitettura dispositivi logici Calcolatori Elettronici, Beraldi, aa 03/04 CPU Il Sistema operativo (livello 3) • Il Sistema Operativo (SO) consente all’utente di usare l’elaboratore ragionando in termini molto più astratti rispetto ai livelli precedenti • Ad esempio, il SO fornisce l’interfaccia mediante la quale un utente interagisce con l’elaboratore (spesso interfaccia grafica) • – Ad esempio l’utente “ordina all’elaboratore” di fare qualcosa – ..fornisce l’astrazione del file Il sistema operativo viene caricato in memoria all’accensione del calcolatore (fase di bootstrap) e rimane residente in memoria, diventando il gestore delle risorse • E’ un interprete ibrido (alcune istruzioni sono quelle del livello ISA, altre sono realmente interpretate) • Le “istruzioni” nuove del SO si chiamano “system – call” Ad esempio trasferisci un blocco dati dal disco alla memoria Calcolatori Elettronici, Beraldi, aa 03/04 Un esempio “storico” Istruzioni del SO Calcolatori Elettronici, Beraldi, aa 03/04 Sistemi operativi Multitasking (nozioni di base) • E’ una tecnica che consente l’esecuzione “contemporanea” di diversi programmi (task) • Il SO assegna a turno la CPU ai vari task secondo qualche politica (scheduling) • Per esemplificare, ogni task usa la CPU per un tempo fisso ∆t (es: ~ms) e dopo aspetto il proprio turno. Gli utenti che interagisco con i task hanno l’impressione che essi progrediscano in parallelo task task task task Macchina Virtuale dedicata Macchina Virtuale dedicata servizi forniti dal SO Sistema Operativo Hardware ≡ Realizzazione di una macchina virtuale Traduzione • Un altro modo per realizzare una macchina virtuale è mediante la tecnica della traduzione • Se M è la macchina da realizzare, un qualunque programma P scritto i i in L viene eseguito nel seguente modo: i – Ogni istruzione di Pi viene sostituita con la sequenza equivalente in di istruzioni in Li-1 – Il programma risultante da tutte le sostituzioni (traduzione), sia esso Pi , è eseguito da Mi-1 • Impiegato di norma per implementare i livelli 4 e 5 Pi Calcolatori Elettronici, Beraldi, aa 03/04 traduttore Pi-i Livello assembler • E’ una rappresentazione simbolica di uno dei livelli sottostanti • Di norma è la rappresentazione simbolica della macchina ISA – Ogni istruzione è rappresentata simbolicamente (codice assembler), ad esempio ADD A,B – La macchina mette a disposizione delle “macro” (gruppi di istruzioni) e delle pseudo-istruzioni (direttive per l’assemblatore) Programma in codice assembler Assemblatore ADD A,B Programma eseguibile dal Livello ISA 01010101001 Calcolatori Elettronici, Beraldi, aa 03/04 Livello applicativo • E’ il livello “visto” normalmente da chi scrive applicazioni per uno specifico problema (es programmi in java) int i; i=i+2; … Programma in Java bytecode Compilatore Programma eseguibile dall’interprete java (jvm) JVM eseguita da Macchina ISA Calcolatori Elettronici, Beraldi, aa 03/04 Architettura a livelli di un calcolatore Macchina virtuale Mn e linguaggio macchina Ln • Un calcolatore è costituito da varie macchine virtuali • Architettura di un calcolatore è la descrizione delle caratteristiche delle varie macchine virtuali (livelli) Macchina virtuale M1 e linguaggio macchina L1 Macchina fisica MO e linguaggio macchina L0 Calcolatori Elettronici, Beraldi, aa 03/04 Tipica divisione a livelli di un calcoltare • Livello 5: Linguaggi di alto livello – – • • C,C++,Java,.. … Il livello 2: (macchina ISA- Instruction set Architecture) è il più basso livello al quale un utente può programmare la macchina • Livello 1: Le istruzioni di questo livello si chiamano microistruzioni (µI). Il microprogramma (se presente) è un interprete della macchina M2 e controlla il data path • La macchina di livello 0 è composta da elementi fisici (componenti elettronici digitali, detti porte logiche) Calcolatori Elettronici, Beraldi, aa 03/04 Approfondimenti e curiosità • Leggere capito 1 del Tanenbaum Calcolatori Elettronici, Beraldi, aa 03/04