INFORMATICA (modulo di Calcolatori Elettronici) Ing. Giuseppe Coldani e-mail: [email protected] [email protected] orario delle lezioni: martedì 8.30-12.30 orario di ricevimento: su appuntamento Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 1 Calendario delle lezioni e degli esami • Periodi di lezione 1) 29/2 ÷ 23/3 2) 4/4 ÷ 16/4 3) 21/4 ÷ 1/6 • Prova intermedia 18/4 ÷ 20/4 • Sessione d’esame 2 appelli nel periodo 13/6 – 30/7 1 appello nel periodo 22/8 – 17/9 2 appelli a gennaio/febbraio 2017 Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 2 Esame (1) • Prova scritta di valutazione di argomenti teorici • Prova di programmazione Prove degli appelli d’esame Prova scritta di teoria + prova di programmazione nel linguaggio MIPS2000. L’esame viene superato se è stata conseguita una valutazione sufficiente in entrambe le prove. In caso di esito non sufficiente, anche in una sola prova, il candidato dovrà ripetere l’intero esame. E’ prevista una prova orale facoltativa con due finalità differenti: 1. nel caso in cui la prova scritta di teoria e la prova di programmazione siano sufficienti, per permettere la modifica della valutazione globale risultante; 2. nel caso in cui una delle due prove suddette sia valutata insufficiente, ma almeno 8/15, per raggiungere una valutazione sufficiente. Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 3 Esame (2) Prove in itinere 1a prova: argomenti trattati nel corso delle lezioni dei periodi 1 e 2 2a prova: argomenti trattati nel periodo 3 + prova di programmazione nel linguaggio MIPS2000, da sostenere negli appelli della sessione estiva. L’accesso a questa prova è vincolato dal superamento della prima prova in itinere. La valutazione globale è la media pesata delle tre prove sostenute, con il vincolo che tutte siano sufficienti. Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 4 Esame (3) Prove in itinere (2) In caso di esito non sufficiente nella seconda prova in itinere, il candidato può ripetere la prova suddetta nell’ultimo appello della sessione di luglio. In caso di esito non sufficiente nella prima prova in itinere, il candidato dovrà sostenere l’esame intero nelle rimanenti sessioni. La valutazione conseguita nelle prove in itinere cessa la sua validità al termine della sessione di luglio. Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 5 Materiale didattico (1) • Testi consigliati: David A. Patterson, John L. Hennessy, Computer Organization & Design. The hardware/software interface (third edition) Morgan Kaufmann Publishers. David A. Patterson, John L. Hennessy, Struttura e progetto dei calcolatori. L’interfaccia hardware-software seconda edizione Zanichelli condotta sulla terza edizione americana Zanichelli, 2006, Bologna. Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 6 Materiale didattico (2) • Testi consultabili: David A. Patterson, John L. Hennessy, Computer Organization & Design. The hardware/software interface (second edition) Morgan Kaufmann Publishers. David A. Patterson, John L. Hennessy, Struttura, organizzazione e progetto dei calcolatori Jackson libri, 1999, Milano. • Documentazione varia è reperibile ai siti: http://www.elsevierdirect.com/index.jsp http://www.unibg.it Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 7 Argomenti del corso •1. Architettura dei calcolatori •2. Architettura di una CPU •3. Linguaggio assemblativo •4. L’aritmetica dei calcolatori •5. L’ambiente di sviluppo dei progetti Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 8 Architettura di un computer Application Operating System Compiler Firmware Instr. Set Proc. I/O system Instruction Set Datapath & Control Digital Design Circuit Design Layout Diversi livelli di astrazione Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 9 Rappresentazione delle istruzioni Linguaggio ad alto livello (HLL) temp = v[k]; v[k] = v[k+1]; Compilatore v[k+1] = temp; lw $15, lw $16, sw $16, sw $15, Linguaggio Assembly Assemblatore Linguaggio Macchina 0000 1010 1100 0101 1001 1111 0110 1000 1100 0101 1010 0000 0($2) 4($2) 0($2) 4($2) 0110 1000 1111 1001 1010 0000 0101 1100 1111 1001 1000 0110 0101 1100 0000 1010 1000 0110 1001 1111 Interpretazione macchina Segnali di controllo ° ° Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 10 Struttura del software (1) • I linguaggi HLL permettono – progettazione in linguaggio ~ a quello naturale – una maggior concisione rispetto al linguaggio macchina – indipendenza dal calcolatore • Riutilizzo routine frequentemente impiegate • Un programma separato che supervisiona l’utilizzo della macchina da parte dei programmi utente sistema operativo • Software di sistema= insieme di programmi che forniscono servizi (Sistema Operativo, compilatori, assemblatori) • Software applicativo=programmi utente o mirati all’utente (editors, spreadsheet) librerie di subroutine Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 11 Struttura del software (2) Sw applicativo SOFTWARE Software appl. Software sistema HW Word Sw sistema Compilatori Memoria virtuale Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 Sist. Op. File System Assembl. I/O drivers 12 Architettura del Set di Istruzioni Un importante livello di astrazione – interfaccia fra hardware e software di basso livello – standardizza il formato delle istruzioni e i pattern di bit a livello di linguaggio macchina – vantaggi: differenti implementazioni della stessa architettura – svantaggi: talora impossibilità di avvalersi di innovazioni tecnologiche Architetture moderne di set di istruzioni – Digital Alpha (v1, v3) – HP PA-RISC (v1.1, v2.0) – Sun Sparc (v8, v9) – SGI MIPS (MIPS I, II, III, IV, V) – Intel (8086,80286,80386, 80486, Pentium, MMX, ...) Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 1992-97 1986-96 1987-95 1986-96 1978-96 13 Di cosa ci occuperemo •Le istruzioni: il linguaggio dei calcolatori •L’aritmetica dei calcolatori •Il processore: unità aritmetica ed unità di controllo •Assemblatori, linker ed il simulatore SPIM •Fondamenti sulla progettazione di reti logiche •Realizzazione dell’unità di controllo Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 14 Architettura della macchina di Von Neumann Unità di ingresso Programmi e dati Memoria Unità di uscita ALU Risultati Unità di controllo CPU Unità centrale Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 15 Unità Centrale A D ALU D S S B B U U S S D controllo A T MAR B U A Unità di R E C O N T R O L CPU MBR Memoria ROM MBR MAR Memoria RAM S Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 16 Microprocessori e Bus • I microprocessori sono dispositivi elettronici che implementano in un unico circuito integrato le funzioni di una intera CPU. I microprocessori attuali hanno bus dati a 8, 16, 32, 64 bit. • Il bus dati (data bus) esprime la capacità di elaborazione del processore (quanti bit possono essere elaborati in parallelo) • Il bus indirizzi (address bus) esprime la capacità di memorizzazione del processore (2m celle di memoria, se m è il numero dei bit del bus) • La capacità di indirizzamento indica il numero di celle diverse cui si può accedere: 210 Byte = 1024 byte = 1 KByte 220 Byte = 1048576 byte = 1 Mbyte 230 Byte = 1073741824 byte = 1 GByte Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 17 Un Esempio • Variazione nella precisione di misura di 1 Kg. in un sistema di pesatura basato su microprocessori con diversa dimensione del bus dati Numero di bit bus dati 4 8 16 Dati rappresentabili 24=16 28= 256 216= 65536 Precisione relativa 6.25% ~3.9 ‰ ~0.015‰ Precisione max. 62.5 gr ~3.9 gr ~0.015 gr Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 18 Osservazioni • I microprocessori a 8 bit di dato hanno tipicamente bus indirizzi a 16 bit con capacità di indirizzamento di 64 KB • I microprocessori a 16 bit di dato hanno tipicamente bus indirizzi a 20-24 bit con capacità di indirizzamento di 1-16 MB • I microprocessori a 64 bit di dato hanno bus indirizzi a 64 bit con capacità di indirizzamento fino a circa 1019 byte • I microprocessori Single Chip riuniscono in un unico circuito integrato più di uno dei blocchi costituenti un microcalcolatore (eventualmente tutti). Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 19 Architettura di una CPU BUS DATI ESTERNO BUS DATI INTERNO ACC SP PC R R F …. e g g L e 0 N A G ALU C D I O E N N C S T O T. R. D. R E BUS INDIRIZZI INTERNO BUS IND. ESTERNO Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 G. 20 Ciclo di esecuzione di un’istruzione •FETCH (prelevamento dell’istruzione) •DECODIFICA •ESECUZIONE La memoria (ROM e RAM) contiene il programma e i dati sui quali opera la CPU. Il Program Counter (PC) contiene l’indirizzo della cella di memoria con la prossima istruzione da eseguire. FORMATO DELLE ISTRUZIONI Codice Operativo Campo che caratterizza le varie istruzioni Operando 1 Operando 2 Gli operandi possono essere 0, 1, 2 Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 21 Sequenza di operazioni elementari per l’esecuzione di ogni singola istruzione •FETCH: vengono letti i campi che costituiscono l’istruzione: 1) (PC)→MAR 2) ((MAR)) →MBR; (PC)+1 →PC 3) (MBR) →IR I passi 1, 2, 3 permettono di caricare in IR (instruction register) il codice operativo (OPCode) dell’istruzione corrente. Passi analoghi permettono di caricare in opportuni registri della CPU gli operandi presenti nell’istruzione. In tal caso, nel passo 3 la destinazione del dato proveniente dalla memoria non è più IR, ma opportuni registri. •DECODE: viene identificata l’istruzione corrente sulla base dell’OPCode •EXECUTE: è diversa a seconda del tipo di istruzione. In pratica consiste nell’inviare comandi e dati alle unità interessate. •MAR= Memory Address Register; MBR: Memory Buffer Register •Notazione: (X) →Y significa: “Il contenuto del registro X viene trasferito nel registro Y Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 22 Formato delle istruzioni • • • • • Le istruzioni sono codificate da stringhe di bit. Una volta caricata nell’IR, un’istruzione deve essere decodificata ed eseguita. A tal scopo l’unità di controllo deve conoscere: codice operativo sorgente: dati su cui operare destinatario: dove porre il risultato e, se sorgente e destinazione sono in memoria, la modalità di indirizzamento Codice Operativo Sorgente Destinazione Mod. indirizzamento Esempio 1: Somma tra il contenuto del registro R2 e il contenuto dell’accumulatore. Il risultato va nell’accumulatore FORMATO codice operativo FETCH come in precedenza ESECUZIONE (R2)+(ACC)→ACC Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 23 Esempio di esecuzione di istruzioni complete Esempio 2: somma tra il contenuto della cella di memoria il cui indirizzo è specificato nell’istruzione ed il contenuto dell’accumulatore; il risultato va nell’accumulatore •FORMATO: codice operativo+operando •FETCH: 1) (PC)→MAR 2) ((MAR)) →MBR; (PC)+1 →PC 3) (MBR) →IR 4) (PC)→MAR 5) ((MAR)) →MBR; (PC)+1 →PC 6) (MBR) →Rn •EXECUTE: 1) (Rn) →MAR 2) ((MAR)) →MBR 3) (MBR) →Rn 4) (Rn)+(ACC) →ACC Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 24 Esempio di esecuzione di istruzioni complete Esempio 3: saltare all’istruzione che è memorizzata nella cella il cui indirizzo è specificato all’interno dell’istruzione corrente •FORMATO: codice operativo+operando •FETCH: 1) (PC)→MAR 2) ((MAR)) →MBR; (PC)+1 →PC 3) (MBR) →IR 4) (PC)→MAR 5) ((MAR)) →MBR; (PC)+1 →PC 6) (MBR) →Rn •EXECUTE: 1) (Rn) →PC Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016 25