Informatica Generale Marzia Buscemi buscemi@di.unipi.it 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) dddd
Struttura di un calcolatore 5 RAM (memoria centrale) 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
Il processore: struttura base M e m o r i a c n t l Operazione Bus controllo PC Esegui M A R IR Unità di controllo Bus indirizzo Registro/i coinvolti M D R R0 Esito ALU R1 Bus dati R2 ... Registri generali R16 Processore clock
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
Instruction fetch Indirizzo della istruzione memoria Bus controllo 40 Operazione 40 PC Esegui 111..01 40 41 001..01 M A R IR Parte controllo Bus indirizzo Registro/i coinvolti M D R R0 Esito ALU R1 Bus dati R2 ... Registri generali R16 Processore codifica
Instruction fetch 2 Indirizzo della istruzione memoria Leggi! 42 PC Operazione Leggi! 42 PC Esegui 111..01 40 41 001..01 IR Parte controllo 40 Bus indirizzo Registro/i coinvolti MAR M D R R0 Esito ALU R1 Bus dati R2 ... Registri generali R16 Processore codifica
Instruction fetch 3 memoria 42 PC 111..01 40 41 001..01 Operazione 42 PC 111..01 40 41 001..01 Esegui 111..01 001..01 IR Parte controllo Bus indirizzo Registro/i coinvolti MAR R0 Esito ALU R1 Bus dati R2 MDR ... Registri generali R16 Processore
Immediate operand fetch: MOVE 1, R0 Indirizzo della istruzione memoria Operazione Leggi! 44 PC Esegui 111..01 40 41 001..01 IR Parte controllo 42 000..00 42 43 000..01 Bus indirizzo Registro/i coinvolti MAR M D R R0 Esito ALU R1 Bus dati R2 ... Registri generali R16 Processore codifica
Immediate operand fetch: MOVE 1, R0 2 memoria Operazione 44 PC 111..01 40 41 001..01 Esegui 111..01 001..01 IR Parte controllo 000..00 42 43 000..01 Bus indirizzo Registro/i coinvolti MAR 000..00 000..01 Esito ALU R1 Bus dati R2 MDR ... Registri generali R16 Processore
Memory store: STORE R1, R0 1 memoria 44 PC 111..01 40 41 001..01 Operazione 44 PC 111..01 40 41 001..01 Esegui 111..01 001..01 IR Parte controllo 000..00 42 43 000..01 Bus indirizzo Registro/i coinvolti MAR 44 45 R0 44 Esito ALU R1 000..00 000..01 Bus dati R2 MDR ... Registri generali R16 Processore
Memory store: STORE R1, R0 2 memoria 44 PC 111..01 40 41 001..01 Operazione 44 PC 111..01 40 41 001..01 Esegui 111..01 001..01 IR Parte controllo 000..00 42 43 000..01 Bus indirizzo Registro/i coinvolti MAR 44 45 000..00 R0 44 Esito 000..01 ALU 000..00 000..01 Bus dati R2 R1 MDR ... Registri generali R16 Processore
Pipelining Ogni istruzione può essere decomposta in varie fasi; es. ADD 1, R0: 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.
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
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
Architettura CISC un processore CISC ha un numero scarso di registri generali (una decina) e una unità di controllo microprogrammata. registro istruzioni CU tradizionale circuiti logici sequenziali clock registro istruzioni unità di decodifica unità di decodifica circuiti di generazione indirizzi clock memoria decoder CU microprogrammata NB. Linguaggio macchina più vicino a linguaggi di alto livello (salti condizionali)
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
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)
Prestazioni dei processori Dipendono da diversi fattori insieme delle istruzioni: istruzioni più semplici richiedono basso numero di cicli di clock dimensione dei registri: determinano il parallelismo della CPU, cioè la dimensione delle word (da 16 a 64 bit) numero di registri: maggior numero implica meno accessi alla memoria scalarità: numero di fasi sovrapponibili (più istruzioni per cicli di clock) 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).
Processore 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