Informatica Generale Marzia Buscemi [email protected] Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta elettronica Pagina web del corso: http://www.di.unipi.it/~buscemi/IG07.htm (sommario delle lezioni in fondo alla pagina) 1 Struttura di un calcolatore RAM (memoria centrale) 5 Processore bus Linee dati, indirizzi e controllo Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O schermo dischi mouse modem 2 Il processore: struttura base M e m o r i a c e n t r a l e PC Bus controllo Bus indirizzo Bus dati Operazione M A R Esegui IR Unità di controllo Registro/i coinvolti M D R R0 R1 R2 ... R16 ALU Registri generali clock Esito Processore 3 Interazione con la CPU: esempi Supponiamo di avere una CPU con parallelismo a 16 bit, cioè tutte le operazioni di lettura/scrittura in memoria riguardano parole (word) composte da 2 byte. Vedremo tre esempi: instruction fetch: il codice operativo dell’istruzione viene copiato dalla memoria principale in IR immediate operand fetch: il dato che segue in memoria il codice operativo viene copiato (es. istruzione “MOVE 1,R0”) memory store: un dato contenuto in un registro viene scritto in memoria all’indirizzo contenuto in un altro registro 4 Instruction fetch Indirizzo della istruzione memoria Bus controllo 40 40 111..01 41 001..01 Bus indirizzo Bus dati M A R PC Esegui IR Parte controllo Registro/i coinvolti M D R R0 R1 R2 ... R16 codifica Operazione ALU Registri generali Esito Processore 5 Instruction fetch 2 Indirizzo della istruzione memoria Leggi! 42 40 111..01 Operazione PC Esegui IR 41 001..01 Parte controllo 40 Bus indirizzo Bus dati MAR M D R Registro/i coinvolti R0 R1 R2 ... R16 codifica ALU Registri generali Esito Processore 6 Instruction fetch 3 memoria 42 40 111..01 PC 111..01 001..01 41 001..01 Bus indirizzo MAR Bus dati MDR Operazione Esegui IR Parte controllo Registro/i coinvolti R0 R1 R2 ... R16 ALU Registri generali Esito Processore 7 Immediate operand fetch: MOVE 1, R0 Indirizzo della istruzione memoria Leggi! 44 40 111..01 41 001..01 42 000..00 Bus 43 000..01 indirizzo Bus dati PC Esegui IR Parte controllo 42 MAR M D R Registro/i coinvolti R0 R1 R2 ... R16 codifica Operazione ALU Registri generali Esito Processore 8 Immediate operand fetch: MOVE 1, R0 2 memoria 44 40 111..01 PC 111..01 001..01 41 001..01 Operazione Esegui IR Parte controllo 42 000..00 Bus 43 000..01 indirizzo MAR Registro/i coinvolti 000..00 000..01 Bus dati MDR R1 R2 ... R16 Registri generali ALU Esito Processore 9 Memory store: STORE R1, R0 1 memoria 44 40 111..01 PC 111..01 001..01 41 001..01 Operazione Esegui IR Parte controllo 42 000..00 Bus 43 000..01 indirizzo Registro/i coinvolti MAR 44 R0 45 Bus dati 44 R1 000..00 000..01 R2 MDR ... Registri R16 generali ALU Esito Processore 10 Memory store: STORE R1, R0 memoria 44 40 111..01 Operazione PC 111..01 001..01 41 001..01 2 Esegui IR Parte controllo 42 000..00 Bus 43 000..01 indirizzo Registro/i coinvolti MAR 44 000..00 R0 45 000..01 Bus dati MDR 44 000..00 000..01 R2 ... Registri R16 generali ALU Esito Processore 11 Pipelining Ogni istruzione può essere decomposta in varie fasi; es. ADD 1, R0: 1. 2. 3. 4. 5. instruction fetch instruction decode operand fetch execute operand store Eseguire queste fasi sequenzialmente è inefficiente ll processore esegue fasi diverse di più istruzioni contemporaneamente organizzando ALU e CU come in una catena di montaggio (pipeline) Es. decodifica di un’istruzione I1, lettura dalla memoria dell’istruzione I2, lettura dati che saranno necessari per I1. 12 Pipelining 2 Problema: per le istruzioni di salto condizionato la CPU non può sapere a priori se dovrà eseguire il salto prima di aver eseguito le istruzioni precedenti ( ritardi ). Possibile soluzione usata dai compilatori: riempire le fasi immediatamente successive al salto con istruzioni che non dipendono dal test (delayed load) Es. a := b + c if b < c if b < c a := b + c then S1 then S1 13 Architetture di CPU Ci sono due tipi di architetture CISC (complex instruction set computer) CU e istruzioni più complesse pochi registri RISC (reduced instruction set computer) set di istruzioni elementari molti registri 14 Architettura CISC un processore CISC ha un numero scarso di registri generali (una decina) e una unità di controllo microprogrammata. registro istruzioni registro istruzioni clock circuiti logici sequenziali CU tradizionale unità di decodifica unità di decodifica clock circuiti di generazione indirizzi memoria decoder CU microprogrammata NB. Linguaggio macchina più vicino a linguaggi di alto livello (salti condizionali) 15 Architettura RISC caratteristiche: istruzioni più semplici e uso di molti registri obiettivo: avere solo istruzioni semplici (logico-aritmetiche) che possano essere eseguite in un solo ciclo di clock le istruzioni hanno tutte un formato fisso e l’operazione di decodifica è realizzata da una semplice tabella l’unità di controllo è organizzata come una pipeline (catena di montaggio) i registri generici vanno da centinaia a migliaia e sono organizzati in file 16 CISC vs RISC CISC RISC istruzioni complesse (più cicli) istruzioni semplici (un ciclo) qualsiasi istruzione può referenziare la memoria sono le istr. LOAD e STORE referenziano la memoria no pipeline pipeline spinte istruzioni interpretate dal microprogramma istruzioni eseguite dall’HW istruzioni a formato variabile istruzioni a formato fisso pochi registri molti registri (organizzati in file) 17 Prestazioni dei processori Dipendono da diversi fattori 1. insieme delle istruzioni: istruzioni più semplici richiedono basso numero di cicli di clock 2. dimensione dei registri: determinano il parallelismo della CPU, cioè la dimensione delle word (da 16 a 64 bit) 3. numero di registri: maggior numero implica meno accessi alla memoria 4. scalarità: numero di fasi sovrapponibili (più istruzioni per cicli di clock) 5. frequenza di clock: velocità con cui si susseguono i cicli di macchina (quindi velocità di esecuzione delle istruzioni). Dipende dalla velocità di propagazione dei segnali elettrici (GHz). 18 Processore Intel Pentium Intel Pentium: architettura CISC superscalare possiede 2 pipeline, una per tutte le istruzioni, una per quelle più semplici può eseguire due istruzioni per ciclo di clock parole da 64 bit (doppia quantità di informazione che può essere caricata) branch prediction 19