CPU Central Processing Unit 1
Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2
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, indipendentemente dal tipo di dato o istruzione contenuto Le istruzioni vengono eseguite in modo sequenziale Il linguaggio per cui la CPU si comporta da esecutore è detto linguaggio macchina. Le istruzioni scritte in linguaggio macchina sono piuttosto rudimentali Il concetto di tipo di dato è quasi assente Il numero di operandi è limitato (in genere non più di due) Il numero di operazioni previste è ridotto Struttura istruzione codice operativo dest src1 src2 Linguaggio assemblatore add R01 R02 R03 Linguaggio macchina 000000 00000 100000 00001 00010 00011 3
Ciclo Fetch-Decode-Execute Fetch Decode Execute 4
Componenti della CPU Data path (o percorso dei dati) E' la parte che si occupa dell effettiva elaborazione dei dati Comprende dispositivi diversi Una o più unità aritmetico-logiche, dette ALU (Arithmetic Logic Unit) Alcune unità di memorizzazione temporanea, i registri, memoria ad alta velocità usata per risultati temporanei e informazioni di controllo (il valore massimo memorizzabile in un registro è determinato dalle dimensioni del registro) Unità di controllo Coordina le operazioni di tutto il processore (anche quelle del data path) Regola il flusso dei dati e indica quali registri debbano essere collegati agli ingressi e all uscita dell ALU Invia all ALU il codice dell operazione da eseguire Riceve indicazioni sull esito dell operazione appena eseguita dall ALU e gestisce opportunamente queste informazioni Comprende alcuni registri di uso specifico Program Counter (PC) qual è l istruzione successiva Instruction Register (IR) istruzione in corso d esecuzione 5
Data Path Registri R00 R01 R02 R03 X X + Y Y Registri ingresso ALU X add esito Registro uscita ALU A L U X + Y Y 6
PSW Bus indirizzi Data path Unità di controllo Bus dati CPU Bus controllo Unità di Controllo IR PC Memoria 7
CPU In grado di eseguire solo istruzioni codificate in linguaggio macchina Ciclo Fetch - Decode - Execute Prendi l istruzione corrente dalla memoria (quella individuata dal contenuto del PC) e mettila nell IR (Instruction Register), contemporaneamente incrementa il Program Counter (PC) in modo che contenga l indirizzo dell istruzione successiva (fetch) Determina il tipo di istruzione da eseguire (decode) Se l istruzione usa dei dati presenti in memoria, determinane la posizione Carica la parola, se necessario, in un registro della CPU Esegui l istruzione (execute) Torna al primo punto e inizia a eseguire l istruzione successiva 8
Tre Tipologie di Istruzioni Istruzioni aritmetico-logiche (Elaborazione dati) Somma, Sottrazione, Divisione, And, Or, Xor, Maggiore, Minore, Uguale, Minore o uguale, Controllo del flusso delle istruzioni Sequenza Selezione semplice, a due vie, a n vie, Ciclo a condizione iniziale, ciclo a condizione finale, Trasferimento di informazione Trasferimento dati e istruzioni tra CPU e memoria Trasferimento dati e istruzioni tra CPU e dispositivi di ingresso/ uscita (attraverso le relative interfacce) 9
Tipologie di Istruzioni Architettura di riferimento: load/store Le operazioni aritmetico-logiche possono essere eseguite solo su dati che siano già stati caricati nei registri Le operazioni di caricamento dei dati dalla memoria nei registri (load) e di archiviazione dei risultati dai registri nella memoria (store) devono essere previste esplicitamente Un processore in architettura load/store dovrà quindi essere in grado di eseguire le seguenti categorie di istruzioni: Istruzioni aritmetico-logiche (Elaborazione dati) Somma, Sottrazione, Divisione, And, Or, Xor, Maggiore, Minore, Uguale, Minore o uguale, Controllo del flusso delle istruzioni Sequenza Salto condizionato o non condizionato (per realizzare selezioni e cicli) Trasferimento di informazione Trasferimento dati e istruzioni tra CPU e memoria Trasferimento dati e istruzioni tra CPU e dispositivi di ingresso/uscita (attraverso le relative interfacce) 10
Esempi di Istruzioni 11
Istruzioni Aritmetico-Logiche Un istruzione aritmetico-logica, ad esempio add RZ, RX, RY viene eseguita in quattro passi L istruzione viene prelevata dalla memoria e scritta nell IR mentre il PC viene incrementato (si tratta della fase di fetch già descritta in precedenza) Viene letto il contenuto dei due registri RX e RY (in pratica l unità di controllo attiva i collegamenti tra i registri RX e RY, individuati dal contenuto dell IR, e i registri di ingresso all ALU e provvede a effettuare il trasferimento dei dati) La ALU opera sui dati letti dal banco dei registri, eseguendo l operazione indicata dal codice compreso nell istruzione (l unità di controllo attiva il collegamento di un pezzo dell IR con l ingresso di controllo dell ALU) Il risultato calcolato dall ALU viene scritto nel registro RZ (anche il registro destinazione viene individuato a partire dal contenuto dell IR) 12
Istruzioni di Trasferimento Un istruzione di trasferimento, ad esempio lw RY, RX, base viene eseguita in cinque passi L istruzione viene prelevata dalla memoria e scritta nell IR mentre il PC viene incrementato Viene letto il contenuto del registro RX La ALU opera sui dati letti dal banco dei registri e sulla base scritta nell IR Il risultato calcolato dall ALU viene utilizzato come indirizzo per la memoria dati Il dato proveniente dalla memoria viene scritto nel registro RY 13
Istruzioni di Controllo Un istruzione di trasferimento, ad esempio beq RX, RY, target salto, viene eseguita in quattro passi L istruzione viene prelevata dalla memoria e scritta nell IR mentre il PC viene incrementato Viene letto il contenuto dei due registri RX e RY La ALU opera sui dati letti dal banco dei registri, eseguendo l operazione indicata dal codice compreso nell istruzione (nel caso dell esempio si tratta di una sottrazione, per verificare poi se il risultato è uguale o diverso da zero); contemporaneamente il contenuto del PC viene sommato al valore del salto per calcolare l eventuale destinazione del salto L esito dell operazione viene utilizzato per decidere quale valore debba essere memorizzato nel PC 14
Unità Funzionali Richieste 15
Durata Indicativa 16
Esempio Esecuzione di una successione di quattro istruzioni per il caricamento di due dati dalla memoria nei registri R01 e R02, la loro somma e la registrazione in memoria del risultato 17
Architettura di una CPU Obiettivo: definire l architettura complessiva di un processore Metodo: partiamo dai componenti che servono per completare l esecuzione delle diverse fasi di ciascuna istruzione Ipotesi semplificativa: assumiamo di avere a disposizione due memorie distinte, una per le istruzioni e una per i dati 18
Fetch Fase di fetch Prelievo istruzione corrente (da PC) Caricamento nell IR Incremento PC Elementi necessari I due registri (PC e IR) Memoria per le istruzioni Sommatore (per incrementare il PC senza l intervento dell ALU) 19
Istruzioni Aritmetico-Logiche Sequenza Lettura di due registri (a meno che uno dei due operandi non sia diretto) Esecuzione di un operazione che coinvolge l ALU Scrittura del risultato in un registro Elementi necessari Registri Ogni lettura richiede un ingresso (il numero del registro) e un uscita (il valore letto) Una scrittura richiede due ingressi (il numero del registro e il valore da scriverci) Servono quindi quattro ingressi (due per la lettura di due registri sorgenti e due per la scrittura) e due uscite (per le due letture) ALU Unità di controllo Indica all ALU quale operazione eseguire Indica ai registri quando leggere/scrivere i dati Attiva le opportune linee di collegamento 20
Trasferimento Dati da Memoria (load) Sequenza Legge un registro perché contiene parte dell indirizzo Usa l ALU per calcolare l indirizzo effettivo della cella di memoria cui si vuole accedere Manda il risultato alla memoria dati Legge dalla memoria dati il valore da scrivere nei registri Elementi Registri Lettura per calcolare l indirizzo Scrittura per salvare il dato trasferito ALU Calcola l indirizzo effettivo Memoria dati Unità di controllo 21
Trasferimento Dati da Memoria (store) Sequenza Legge due registri (uno contiene parte dell indirizzo l altro il dato da scrivere in memoria) Usa l ALU per calcolare l indirizzo effettivo della cella di memoria cui si vuole accedere Manda il risultato alla memoria dati insieme al dato da scrivere Elementi Registri Lettura per calcolare l indirizzo Lettura del dato da trasferire ALU Calcola l indirizzo effettivo Memoria dati Unità di controllo 22
Salti Salti condizionati Calcolo dell indirizzo di destinazione del salto Valutazione della condizione (per capire se saltare o no) Elementi necessari Sommatore aggiuntivo Registri solo in lettura (il risultato non deve essere salvato ma solo esaminato per valutare l esito dell operazione) ALU Unità di controllo Salti non condizionati Sostituire una parte del PC con alcuni dei bit contenuti nell IR Elementi necessari nulla in più 23
Datapath 24
Migliorare le Prestazioni della CPU Frequenza di clock Parallelismo 25
Aumentare la Frequenza di Clock La frequenza di clock Influenza direttamente il tempo di ciclo del data path e quindi le prestazioni di un calcolatore E' limitata dalla tecnologia disponibile 26
Migliorare il Parallelismo Il parallelismo permette di migliorare le prestazioni senza modificare la frequenza di clock Due forme di parallelismo Parallelismo a livello delle istruzioni Architetture pipeline o architetture superscalari Parallelismo a livello di processori Array computer, multiprocessori o multicomputer 27
Architettura Pipeline Organizzazione della CPU come una catena di montaggio La CPU viene suddivisa in stadi, ognuno dedicato all esecuzione di un compito specifico L esecuzione di un istruzione richiede il passaggio attraverso (tutti o quasi tutti) gli stadi della pipeline In un determinato istante, ogni stadio esegue la parte di sua competenza di una istruzione In un determinato istante, esistono diverse istruzioni contemporaneamente in esecuzione, una per ogni stadio 28
Esempio di Pipeline Pipeline in cinque stadi S1 [MI] lettura istruzioni dalla memoria, caricamento IR e incremento PC S2 [LR] lettura dai registri degli operandi richiesti S3 [AL] esecuzione delle operazioni aritmeticologiche necessarie S4 [MD] accesso alla memoria dati (per lettura/load o scrittura/store) S5 [SR] scrittura nei registri dei risultati Stadio 1 Stadio 2 Stadio 3 Stadio 4 Stadio 5 Memoria Istruzioni (MI) Lettura Registri (LR) ALU Memoria Dati (MD) Scrittura Registri (SR) 10 ns 5 ns (AL) 10 ns 10 ns 5 ns 29
Con e Senza Pipeline Esempio a ds Senza pipeline T = 145 Con pipeline T = 80 Rapporto 145/80 = 1.81 Con 1M istruzioni Senza pipeline T 30ms Con pipeline T = 10ms+40ns Rapporto 30/10.00004 = 2.99998 30
Prestazioni di una Pipeline Il tempo di esecuzione (latenza) della singola istruzione non diminuisce, anzi aumenta Il tempo di attraversamento (latenza) della pipeline corrisponde al numero degli stadi (N) moltiplicato per il tempo di ciclo (T) Il tempo di ciclo è limitato dallo stadio più lento! Aumenta il numero di istruzioni completate nell unità di tempo (throughput) Si completa un istruzione a ogni ciclo di clock L incremento di throughput è quasi proporzionale al numero degli stadi! 31
Esecuzione in Pipeline Stadi Stadio 5 (SR) Stadio 4 (MD) Stadio 3 (AL) Stadio 2 (LR) Stadio 1 (MI) Istruzione 1 Istruzione 2 10 ns Istruzione 3 20 ns Istruzione 4 30 ns Istruzione 5 40 ns Istruzione 6 50 ns 60 ns Tempo 32
Esecuzione in Pipeline Stadi Stadio 5 (SR) Istruzione 1 Istruzione 2 Istruzione 1 Istruzione 2 Istruzione 3 Istruzione 1 Istruzione 2 Istruzione 3 Istruzione 4 Istruzione 1 Istruzione 2 Istruzione 3 Istruzione 4 Istruzione 5 Istruzione 2 Istruzione 3 Istruzione 4 Istruzione 5 Istruzione 6 Stadio 4 (MD) Stadio 3 (AL) Stadio 2 (LR) Stadio 1 (MI) Istruzione 1 10 ns 20 ns 30 ns 40 ns 50 ns 60 ns Tempo 33
Esecuzione in Pipeline S1 S2 S3 S4 S5 tempo t1 Istr. 1 t2 Istr. 2 Istr. 1 t3 Istr. 3 Istr. 2 Istr. 1 t4 Istr. 4 Istr. 3 Istr. 2 Istr. 1 t5 Istr. 5 Istr. 4 Istr. 3 Istr. 2 Istr. 1 t6 Istr. 6 Istr. 5 Istr. 4 Istr. 3 Istr. 2 34
Esecuzione in Pipeline Stadi Stadio 5 (SR) Istr. N 4 Istr. N 3 Istr. N 2 Istr. N 1 Istr. N Istr. N+1 Stadio 4 (MD) Istr. N 3 Istr. N 2 Istr. N 1 Istr. N Istr. N+1 Istr. N+2 Stadio 3 (AL) Istr. N 2 Istr. N 1 Istr. N Istr. N+1 Istr. N+2 Istr. N+3 Stadio 2 (LR) Istr. N 1 Istr. N Istr. N+1 Istr. N+2 Istr. N+3 Istr. N+4 Stadio 1 (MI) Istr. N Istr. N+1 Istr. N+2 Istr. N+3 Istr. N+4 Istr. N+5 t1 t2 t3 t4 t5 t6 Tempo In ogni istante ci sono 5 istruzioni in esecuzione 35