Introduzione all rchitettura dei Calcolatori Elettronici aurizio Palesi aurizio Palesi 1 Sistema di Elaborazione Un Sistema di Elaborazione (SE) è una acchina () capace di eseguire Programmi (P) scritti in un opportuno Linguaggio (L) ondo Esterno Dati P(L) L aurizio Palesi 2 1
Sistema di Elaborazione Sistema di di Elaborazione acchina Programma Linguaggio entità attiva entità passiva aurizio Palesi 3 odello Funzionale vs. ealizzativo odello Funzionale La macchina è un puro esecutore delle istruzioni del proprio linguaggio Due macchine dotate dello stesso linguaggio sono funzionalmente identiche odello ealizzativo Descrive come la macchina è realizzata Due macchine dotate dello stesso linguaggio non è detto che siano identiche da un punto di vista realizzativo aurizio Palesi 4 2
Gerarchie di acchine ondo Esterno Dati P(L2) Traduzione Interpretazione L2 P12(L1) L1 1 2 aurizio Palesi 5 Sistema di Elaborazione Un SE è costituito da una gerarchia di macchine Costruite a partire da una macchina estremamente elementare Il modello realizzativo di un SE è definito da odello funzionale della macchina più elementare che si vuole trattare Dalla descrizione degli interpreti e dei traduttori aurizio Palesi 6 3
Generalizzazione Ln P(n-1)n L2 P(n-1)n L1 1 2 n Prestazioni Prestazioni Trade-off strazione strazione (Semplicità (Semplicità di di programmazione) programmazione) aurizio Palesi 7 Processo acchina che esegue il linguaggio prodotto dai compilatori dei linguaggi di 3G Linguaggio binario ondo Esterno Dati P(C) C Compilatore C L.ggio Binario.na Processo acchina C aurizio Palesi 8 4
Linguaggio Binario Le istruzioni sono codificate in bit Dipende dal SE differenza dei linguaggi di 3G Tuttavia tutti i processi condividono la stessa impostazione generale aurizio Palesi 9 acchina Processo Gli elementi fondamentali che caratterizzano qualsiasi processo sono emoria del processo Programma in esecuzione in memoria Presenza di un registro Program Counter eccanismo di esecuzione Stato del processo Contenuto di memoria + contenuto dei registri Istruzione Codice operativo Operandi aurizio Palesi 10 5
acchina ssembler Si realizza per eliminare la difficoltà di lavorare con il linguaggio binario Linguaggio ssembly Programma assemblatore Linguaggio binario del proc. Processo acchina ssembler aurizio Palesi 11 Esempi di Istruzioni ssembly Categoria 1 somma X, Y ; Y := X + Y neg X ; X := -X copia X, Y ; Y := X Categoria 2 Salta I ; Passa ad eseguire l istruzione I Test X, I ; Se X=0, vai a eseguire l istruzione I Termina ; Termina l esecuzione del programma Categoria 3 Leggi X ; cquisisci un dato dall esterno in X Scrivi X ; Trasmetti il contenuto di X all esterno aurizio Palesi 12 6
Esempio di Programma ssembly oltiplicazione per somme ripetute X: ISEV Y: ISEV Z: ISEV ZEO: ISEV 0 NUNO: ISEV -1 leggi leggyi copia Ciclo: test somma somma salta Fine: scrivi termina X Y ZEO, Z X, Fine Y, Z NUNO, X Ciclo aurizio Palesi 13 Z Codifica del Programma in Linguaggio Binario X: ISEV 0 **** ****** ****** Y: ISEV 1 **** ****** ****** Z: ISEV 2 **** ****** ****** ZEO: ISEV 0 3 0000 000000 000000 NUNO: ISEV -1 4 1000 000000 000001 leggi X 5 1111 000000 ****** leggyi Y 6 1111 000001 ****** copia ZEO, Z 7 1000 000011 000010 Ciclo:test X, Fine 8 1010 000000 001100 somma Y, Z 9 0110 000001 000010 somma NUNO, X 10 0110 000100 000000 salta Ciclo 11 1001 001000 ****** Fine: scrivi Z 12 0111 000010 ****** termina 13 1011 ****** ****** aurizio Palesi 14 7
acchina ssembler lcune differenze tra Linguaggio Binario e Linguaggio ssembly I codici operativi binari sono sostituiti da codici simbolici Presenza di direttive non rispondendi a istruzioni in linguaggio binario Si possono usare simboli (labels) al posto di indirizzi binari aurizio Palesi 15 acchina Hardware La macchina sopra la quale viene realizzato il processo è la acchina Hardware Il Linguaggio della macchina HW è il linguaggio binario Il programma che realizza la macchina processo sopra la macchina HW si chiama Sistema Operativo Il SO è in grado di realizzare molte macchine processo sulla macchina HW aurizio Palesi 16 8
Il Sistema Operativo Prog.1 Prog.2 Prog.N Proc. 1 Proc. 2 Pproc. N Sistema Operativo Linguaggio acchina acchina Hardware aurizio Palesi 17 Caratteristiche Fondamentali Capacità di eseguire sequenze di istruzioni memorizzate Calcolatore = Unità di Elaborazione + Unità di Controllo 1. Preleva le istruzioni dalla memoria 2. Interpreta i codici di istruzione 3. Effettua le azioni che questi prevedono Programma = Insieme organizzato di istruzioni aurizio Palesi 18 9
Vista Funzionale di un Calcolatore mbiente Traserimento Controllo Elaborazione emorizzazione aurizio Palesi 19 Componenti di un Calcolatore Calcolatore Processore Dispositivi Unità di controllo emoria Ingresso Tastiera ouse Unità operativa Uscita onitor Stampante Unità di elaborazione e controllo o Central Processing Unit (CPU) Contiene le istruzioni da eseguire e i dati su cui operare Insieme di dispositivi che consentono la comunicazione con e da il mondo esterno aurizio Palesi 20 10
Organizzazione Generale CPU emoria Bus di sistema Ingresso Uscita aurizio Palesi 21 Bus e aster-slave Il bus è una linea a cui sono contemporaneamente connesse le unità del calcolatore e che consente il trasferimento di dati tra tali unità Problema: contesa su un mezzo condiviso! Soluzione: CPU = master, periferiche = slave aurizio Palesi 22 11
Bus e aster-slave - Pregi Semplicità: 1 sola linea di connessione # di dispositivi Estendibilità: nuovi dispositivi possono essere aggiunti tramite un interfaccia al bus senza influenzare l HW preesistente Standardizzabilità: definizione di normative che consentono a periferiche di costruttori diversi di interagire correttamente aurizio Palesi 23 Bus e aster-slave - Difetti Lentezza: l uso in mutua esclusione del bus inibisce almeno parzialmente la parallelizzazione delle operazioni di trasferimento di dati tra dispositivi Limitata capacità: al crescere del numero di dispositivi la presenza di una sola linea comporta un limite alla capacità di trasferire dati Sovraccarico della CPU: l unità centrale viene coinvolta in tutte le operazioni di trasferimento di dati aurizio Palesi 24 12
Lo Schema di iferimento Interfaccia I/O I/O Interfaccia I/O I/O Interfaccia I/O I/O emoria centrale centrale CPU CPU Bus dati Bus indirizzi Bus di controllo aurizio Palesi 25 Tipi di Bus Bus dati: utilizzato per trasferire dati (es. fra memoria e CPU, fra CPU e interfacce di I/O) Bus indirizzi: che identifica la posizione delle celle di memoria un cui la CPU va a scrivere o leggere Bus di controllo: in cui transitano i segnali di controllo che consentono di selezionare le unità coinvolte in un trasferimento dati (sorgente e destinazione), di definire la direzione dello scambio (scrittura o lettura) aurizio Palesi 26 13
rchitettura di Von Neumann Burks, Goldstein e Von Neumann sono stati i primi a proporre che il codice del programma potesse essere memorizzato nella stessa memoria dei dati Indirizzi CPU Dati Controllo emoria emoria indifferenziata per dati o istruzioni Solo l'interpretazione da parte di CPU stabilisce se una data configurazione di bit è da riguardarsi come un dato o come un'istruzione aurizio Palesi 27 Collo di Bottiglia Von Neumann L organizzazione di Von Neumann è quella più popolare Consente al processore di manipolare i programmi in modo più semplice Svantaggi La limitata larghezza di banda della memoria ha un impatto negativo sulla velocità di esecuzione dell applicazione Questo fenomeno è noto come Von Neumann bottleneck aurizio Palesi 28 14
rchitettura Harward ltre organizzazioni memorizzano dati e programmi in memorie diverse Indirizzi Indirizzi emoria Istruzioni Dati Controllo CPU Dati Controllo emoria Dati E principalmente utilizzata nei processori ad alte prestazioni e nelle architetture dedicate per applicazioni di elaborazione digitale dei segnali (DSP) aurizio Palesi 29 Organizzazione Tipica (bus oriented) CPU Unità di di Controllo Unità ritmetica Logica Dispositivi di I/O egistri emoria Centrale Terminale Unità a disco Stampante BUS aurizio Palesi 30 15
Tre Tipologie di Istruzioni Istruzioni ritmetico Logiche (Elaborazione dati) Somma, sottrazione, divisione, nd, Or, Xor, aggiore, minore, uguale, maggiore uguale, Controllo del flusso delle istruzioni Sequenza Selezione Ciclo a condizione iniziale, a condizione finale, Trasferimento di informazione Trasferimento dati e istruzioni tra CPU e memoria Trasferimento dati e istruzioni tra CPU e dispositivi di I/O aurizio Palesi 31 Elementi di una CPU Unità di controllo Legge le istruzioni dalla memoria e ne determina il tipo Unità aritmetico-logica Esegue le operazioni necessarie per eseguire le istruzioni egistri emoria ad alta velocità usata per risultati temporanei Determina il parallelismo della CPU Esistono registri generici e registri specifici Program Counter (PC) Instruction egister (I) aurizio Palesi 32 16
Struttura del data path + B egistri B B egistri di ingresso all LU BB LU Bus di ingresso all LU di uscita dell LU + B aurizio Palesi 33 aurizio Palesi 34 17
L Esecutore Un calcolatore basato sull architettura di Von Neumann esegue un programma sulla base dei seguenti principi Dati e istruzioni sono memorizzati in una memoria unica che permette sia la scrittura che la lettura I contenuti della memoria sono indirizzati in base alla loro posizione Le istruzioni vengono eseguite in modo sequenziale aurizio Palesi 35 Linguaggio acchina e ssembly Linguaggio macchina udimentale Il concetto di tipo di dato è quasi assente Il numero di operandi è limitato Il numero di operazioni previste è ridotto Struttura di una istruzione della CPU codice operativo op1 op2 Specifica analoga alla codifica in assembly SO eg1 eg2 Codifica in un ipotetico linguaggio macchina 10000011 001 010 aurizio Palesi 36 18
aurizio Palesi 37 Esecuzione delle Istruzioni Ciclo Fetch-Decode-Execute 1. Prendi l istruzione corrente dalla memoria e mettila nel registro istruzioni (I) [Fetch] 2. Incrementa il program counter (PC) in modo che contenga l indirizzo dell istruzione successiva 3. Determina il tipo dell istruzione corrente [Decodifica] 4. Se l istruzione usa una parola in memoria determina dove si trova 5. Carica la parola, se necessario, in un registro della CPU 6. Esegui l istruzione [Execute] 7. Torna al punto 1. aurizio Palesi 38 19
Struttura Semplificata di una CPU Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 39 Esempio: Lettura dalla emoria Fase di Fetch (1 di 2) Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 40 20
Esempio: Lettura dalla emoria Fase di Fetch (2 di 2) Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 41 Esempio: Lettura dalla emoria Decodifica Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 42 21
Esempio: Lettura dalla emoria Esecuzione (1 di 2) Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 43 Esempio: Lettura dalla emoria Esecuzione (2 di 2) Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 44 22
Esempio: Somma tra due registri Fetch (come prima) Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 45 Esempio: Somma tra due registri Decodifica Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 46 23
Esempio: Somma tra due registri Esecuzione Bus Controllo Leggi Scrivi PC Unità di controllo emoria centrale centrale o periferiche Indirizzo Bus Indirizzi Dato Bus Dati D I... PSW LU stato Esegui Operazione Unità centrale aurizio Palesi 47 Struttura di una CPU Dati in ingresso Unità Operativa (datapath) CPU Dati in uscita clock comandi condizioni Istruzione Unità di di Controllo Comandi aurizio Palesi 48 24
Fetch-Esecuzione Fetch Prelievo e decodifica dell istruzione Comune a tutte le istruzioni Esecuzione Esecuzione delle azioni previste dal codice di operazione Diversa da istruzione a istruzione Inizio esecuzione La prossima istruzione viene letta dalla memoria e decodificata Fetch Execute Viene svolta l operazione prevista dal codice operativo dell istruzione stessa Fine esecuzione aurizio Palesi 49 Il Programma Programma = Sequenza di istruzioni Le istruzioni sono in memoria a indirizzi contigui Occorre un registro per memorizzare l indirizzo della prossima istruzione da eseguire Usualmente denominato Program Counter (PC) termine dell esecuzione di un istruzione, PC deve puntare alla prossima istruzione Le istruzioni sono a lunghezza fissa (stesso # di bytes) PC è incrementato di una quantità pari a tale numero Le istruzioni hanno lunghezza variabile PC deve essere incrementato di volta in volta della dimensione in byte dell istruzione appena eseguita Le istruzioni di salto hanno l effetto di aggiornare il PC con l indirizzo di destinazione del salto aurizio Palesi 50 25
Elementi Fondamentali di una CPU CPU UC DTPTH 1 Logica di controllo Comandi Condizioni n L U Indirizzi EOI I PC D Dati I/O Controllo aurizio Palesi 51 egistri di CPU I: Usato per contenere l'istruzione in corso di esecuzione Caricato in fase di fetch appresenta l'ingresso che determina le azioni svolte durante la fase di esecuzione PC: Tiene traccia dell'esecuzione del programma Contiene l indirizzo di memoria in cui è memorizzata la prossima istruzione da eseguire : contiene l'indirizzo della locazione di memoria da leggere o scrivere La dimensione di determina l'ampiezza dello spazio di memoria fisica Dalla fine degli anni '80 vengono prodotti microprocessori con bus indirizzi a 32 bit D: attraverso il quale viene scambiata l'informazione tra la memoria e la CPU Tradizionalmente la dimensione di D dà la misura del grado di parallelismo della macchina (8, 16, 32, 64 bit) 0, 1,...n: egistri di uso generale aurizio Palesi 52 26
Diagramma a Stati della Fase di Fetch Fetch PC PC D D [] I I D D Ogni stato ha durata di un periodo di clock, eccetto il secondo il quale può richiedere più cicli a causa della latenza della memoria Decodifica del del codice operativo ed ed incremento del del PC PC Fase di Execute aurizio Palesi 53 Fase di Execute (1 bus) DD DD 3, 3, 1, 1, 2 2 1 2 3 BUS BUS 1; Temp1 BUS BUS 2; Temp2 Temp1+BUS BUS Temp2; 3 BUS Temp1 L U Temp2 1 bilitazione dell uscita 1 e caricamento di Temp1 2 bilitazione dell uscita di 2, asserzione del comando DD all LU e abilitazione dell ingresso Temp2 3 bilitazione dell uscita Temp2 e dell Ingresso di 3 aurizio Palesi 54 27
Fase di Execute (3 bus) BUS BBUS CBUS DD DD 3, 3, 1, 1, 2 2 1 2 3 BUS 1; BBUS 2; 3 BUS+BBUS L U aurizio Palesi 55 Fase di Execute (2 bus) BUS BBUS DD DD 3, 3, 1, 1, 2 2 1 SCL 1 SCL 2 2 BUS 2; BUS; BBUS 1; B BBUS 3 is +B SCS 2 SCS L SCS is BBUS is; 3 BBUS B SCS B U SC OP Nota: E l Unità di Controllo che ha il compito di pilotare i segnali di abilitazione SCL e SCS SCL 2 aurizio Palesi 56 28
Controllo + Datapath PCWriteCond PCWrite IorD emead emwrite IWrite em2eg Unità di Controllo PCSource TargetWrite LUop LUSel LUSelB egwrite egdest P C U X Ind Lettura Lettura Dati E Ind Lettura Scrittura Dati E G I S T U X U X eg. Let. 1 eg. Let. 2 eg. F Scrittura I ScritturaL Dati E Let. E Dati1 G Est. Segno Let. Dati2 U X U X Shift S.2 bit L U Zero is. Shift S.2 bit T G E T U X aurizio Palesi 57 L Unità di Controllo ealizzazione Cablata ealizzazione icroprogrammata aurizio Palesi 58 29
Unità di Controllo ealizzazione Cablata Unità di Controllo ete Combinatoria Ingressi U s c i t e Unità Operativa di Stato Stato Prossimo Condizioni Cod.Op. eg.istruzione aurizio Palesi 59 Unità di Controllo ealizzazione Cablata Progettazione Seguendo il classico flusso di sintesi di una rete sequenziale Ingressi: I, Stato Uscite: comandi, stato prossimo Uso di O Ingressi (indirizzi alla O): I, stato di UO, stato di UC Uscite: comandi, ingressi di eccitazione dei FF di stato isura della complessità di UC #stati #ingressi #uscite aurizio Palesi 60 30
Unità di Controllo ealizzazione icroprogrammata Unità di Controllo emoria di icroprogramma Unità Operativa + µpc Selezione Indirizzo Condizioni Cod.Op. eg.istruzione aurizio Palesi 61 Unità di Controllo ealizzazione icroprogrammata Tecnica affermatasi negli anni 70 UC è una sorta di calcolatore nel calcolatore La memoria di controllo contiene le microistruzioni µpc: contatore di microprogramma Contiene l indirizzo della prossima microistruzione ll inizio della fase di fetch µpc contiene l indirizzo (I0) del tratto di microprogramma corrispondente al fetch lla fine della fase di fetch µpc viene aggiornato con il contenuto (o ad una opportuna decodifica) di I in modo da puntare alla microroutine che effettua le azioni richieste dalla particolare istruzione l termine, µpc viene di nuovo caricato con (I0) aurizio Palesi 62 31
Unità di Controllo Cablata vs. icroprogrammata Fino a fine anni 60: logica cablata (PDP8, HP 2116) nni 70: microprogrammazione (VX, Z80, 8086, 68000) epertorio di istruzioni molto esteso e variato: CISC Il VX 11/789 (Digital) e il 370/168 (IB) avevano oltre 400.000 bit di memoria di controllo Dagli anni 80 si è tornati alla logica cablata ffermazione delle macchine ISC Istruttivo è esaminare l evoluzione dell architettura Intel: da CISC a (praticamente) ISC aurizio Palesi 63 CISC CISC: Complex Instruction Set Computing Un repertorio di istruzioni esteso è preferibile perché: Istruzioni potenti semplificano la programmazione iduce il gap tra linguaggio di macchina e linguaggio di alto livello L uso efficiente della memoria (all epoca era costosa) era la preoccupazione principale: eglio avere codici compatti Essendo (allora) la memoria di controllo molto più veloce della memoria centrale, portare funzionalità nella prima avrebbe migliorato le prestazioni della macchina aurizio Palesi 64 32
ISC emorie olto più veloci delle precedenti a nuclei Cache iducono ulteriormente i tempi di esecuzione Comportamento dei programmi L'80% delle istruzioni eseguite corrispondeva al solo 20% del repertorio Conviene investire nella riduzione dei tempi di esecuzione di quel 20%, anziché aggiungere raffinate istruzioni, quasi mai usate, ma responsabili dell'allungamento del tempo di ciclo di macchina Conviene costruire processori molto veloci, necessariamente con repertori semplici, e contare sull ottimizzazione del compilatore ISC: educed Instruction Set Computing aurizio Palesi 65 ISC - Criteri di Progettazione Le istruzioni devono essere semplici Se l'introduzione di una operazione di macchina fa crescere del 10% il periodo di clock, allora essa deve produrre una riduzione di almeno un 10% del numero totale di cicli eseguiti Con memorie attuali Non c'è vantaggio a spostare le funzionalità a livello di microcodice Ciò ha solo l'effetto di rendere più difficoltose modifiche e cambiamenti olto meglio modificare una libreria di sistema che modificare una memoria di controllo aurizio Palesi 66 33
ISC - Criteri di Progettazione Tutte le istruzioni occupano lo stesso spazio di memoria (una parola) istretto numero di formati L'interpretazione del codice avviene attraverso un semplice decodificatore (una rete ND-O) La codifica ordinata consente accorgimenti per velocizzare l'esecuzione (pipeline), difficilmente applicabili a repertori di istruzioni complesse La semplificazione del repertorio tende a far aumentare la dimensione del codice Non è un problema, vista la tendenza alla riduzione dei costi e all'aumento della densità delle memorie Dal punto di vista della velocità i guadagni che si ottengono nel semplificare le istruzioni sono superiori all'effetto negativo del maggior numero di istruzioni per programma aurizio Palesi 67 Capacità di emoria (D singolo chip) size 1000000000 100000000 10000000 1000000 100000 10000 1000 1970 1975 1980 1985 1990 1995 2000 Year Single Chip D Year Size Cyc. Time 1980 64 Kb 250 ns 1983 256 Kb 220 ns 1986 1 b 190 ns 1989 4 b 165 ns 1992 16 b 145 ns 1996 64 b 120 ns 1999 256 b 100 ns 2002 1 Gb 80 ns Incremento 1,4 per anno 4000X dal 1980 aurizio Palesi 68 34
ISC - Criteri di Progettazione Conclusioni Progetto di un architettura che preveda solo operazioni tra registri (non registro/memoria o memoria/memoria) e operazioni di lettura/scrittura in memoria molto semplici con poche modalità di indirizzamento rchitetture Load/Store Il compilatore deve fare il miglior uso possibile dei registri e tenere il più possibile le variabili nei registri CPU con elevato numero di registri aurizio Palesi 69 35