HARDWARE 1.4a: (Processore) Bibliografia Curtin, Foley, Sen, Morin “Informatica di base”, Mc Graw Hill Sciuto, Buonanno, Mari, “ Introduzione ai sistemi informatici“, Mc Graw Hill 23 nov 2011 Questi lucidi 2 Architettura di von Neuman CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus L’unità centrale di elaborazione (CPU) La CPU, o unità centrale di elaborazione o Processore, è un circuito integrato (Chip), costituito da una piccola piastra di silicio Sulla superficie della CPU sono presenti milioni di piccoli interruttori elettronici miniaturizzati, di tipo acceso/spento, i transistor, e altri componenti elettronici Il primo processore a larga diffusione, l’Intel 4004 (1971), conteneva circa 2.300 transistor 23 nov 2011 4 Il primo processore montato sul primo PC di larga diffusione, i8088 conteneva circa 29.000 transistor Il Core 2 (2006) ne contiene oltre 291.000.000 Un Quad-core circa 2.4 miliardi. L’unità centrale di elaborazione (CPU) La CPU è il “cervello” del calcolatore e il suo compito è quello di eseguire i programmi, residenti nella memoria, leggendo ed eseguendo le loro istruzioni. L’elaborazione avviene in accordo a sequenze di istruzioni (istruzioni macchina), scritte in un linguaggio di programmazione speciale, chiamato linguaggio macchina. 23 nov 2011 Struttura istruzione 5 codice operativo dest src1 src2 Linguaggio assemblatore add R01 R02 Linguaggio macchina 000000 00000 100000 00001 00010 00011 R03 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. Ciclo Fetch–Decode–Execute Fetch (Lettura) Decode Execute Esecuzione di Programmi RAM N M CPU Esecuzione di Programmi: fetch RAM N leggi prossima istruzione CPU 10110110 … 11001001 M “somma 2 al valore della cella M” Esecuzione di Programmi: decodifica RAM CPU 10110110 N … 11001001 leggi dati M 11001001 Esecuzione di Programmi: esecuzione RAM N CPU 10110110 … esegui calcoli 11001001 M 11001001 11001011 +2= Esecuzione di Programmi: scrittura RAM CPU 10110110 N … 11001001 M scrivi risultato 11001001 11001011 Esecuzione di Programmi: iterazione RAM N leggi prossima istruzione CPU 11000111 … 10101101 M Struttura e componenti della CPU Unità di controllo (Control Unit). ALU (Unità Aritmetico-Logica) Clock Registri Unità di controllo Memoria Centrale o Periferiche Clock BUS Registro Registro Registro ALU 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): legge i dati contenuti all'interno dei registri generali, esegue le operazioni e memorizza il risultato in uno dei registri generali alcune unità di memorizzazione temporanea, i registri, memoria ad alta velocità usata per risultati temporanei e informazioni di controllo. 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 Il valore massimo memorizzabile in un registro è determinato dalle dimensioni del registro Registri di memoria della CPU I registri della CPU sono un tipo di memoria ad alta velocità (2, 4, 8 byte) che viene utilizzata per memorizzare temporaneamente istruzioni e dati più frequentemente acceduti. Ospitano le informazioni necessarie per eseguire l’istruzione corrente In numero molto limitato (10, 20, 64) si dividono in registri speciali e generali PSW Bus indirizzi Data path Unità di controllo Bus dati CPU Bus controllo Unità di controllo IR PC Memoria I Registri speciali Il Program Counter (PC) contiene l’indirizzo in memoria centrale della prossima istruzione da eseguire. All’inizio dell’esecuzione di un programma viene caricato con l’indirizzo della prima istruzione di quel programma. Ad ogni istruzione eseguita il PC viene modificato per contenere l’indirizzo della istruzione successiva. I Registri speciali L’Instruction Register (IR) contiene l’istruzione correntemente in esecuzione la CPU legge l’istruzione contenuta nell’instruction register e la esegue IL Registro di stato (PSW) descrive lo stato corrente della esecuzione segnala eventuali errori (ad es.: overflow) Unità di controllo Sovrintende alla corretta esecuzione dei programmi e coordina il lavoro degli altri componenti hardware e le attività dell’intero computer L’unità di controllo del processore esegue una istruzione svolgendo le seguenti tre operazioni di base Fetch (lettura) Decode (decodifica) Execute (esecuzione) Un programma è eseguito reiterando il ciclo fetchdecode-execute (ciclo macchina) per eseguire ordinatamente le sue istruzioni Ciclo Fetch – Decode - Execute 1. 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) 2. Determina il tipo di istruzione da eseguire (decode) 3. Se l’istruzione usa dei dati presenti in memoria, determinane la posizione; 4. Carica la parola, se necessario, in un registro della CPU; 5. Esegui l’istruzione (execute) 6. Torna al punto 1 e inizia a eseguire l’istruzione successiva. Struttura della CPU I Registri speciali Registro Indirizzi Memoria (MAR) contiene l’indirizzo della cella da cui leggere o in cui scrivere un dato Registro dati Memoria (MDR) contiene il dato letto dalla memoria o da scrivere in memoria 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) debbono 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) Controllo del flusso delle istruzioni Trasferimento di informazione 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) Esempi di istruzioni Istruzione Significato Categoria R01,R02,R03 R01 ← R02 + R03 aritmetico-logica addi R01,R02,421 R01 ← R02 + 421 aritmetico-logica lw R01,R02,421 R01 ← M[R02 + 421] trasferimento sw R01,R02,421 M[R02 + 421] ← R01 trasferimento beq R01,R02,–421 se (R01 == R02) vai a PC–421 j 84210 vai a 84210 add salto (condizionato) salto (non condizionato) Istruzioni aritmetico-logiche Un’istruzione aritmetico-logica, ad add RZ,RX,RY, viene eseguita in quattro passi: esempio 1. 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); 2. 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); 3. 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); 4. il risultato calcolato dall’ALU viene scritto nel registro RZ (anche il registro destinazione viene individuato a partire dal contenuto dell’IR). Istruzioni di trasferimento Un’istruzione di trasferimento, ad esempio lw RY,RX,base, viene eseguita in cinque passi: 1. l’istruzione viene prelevata dalla memoria e scritta nell’IR mentre il PC viene incrementato; 2. viene letto il contenuto del registro RX; 3. la ALU opera sui dati letti dal banco dei registri e sulla base scritta nell’IR; 4. il risultato calcolato dall’ALU viene utilizzato come indirizzo per la memoria dati; 5. il dato proveniente dalla memoria viene scritto nel registro RY. Istruzioni di controllo Un’istruzione di trasferimento, ad esempio beq RX,RY,salto, viene eseguita in quattro passi: 1. l’istruzione viene prelevata dalla memoria e scritta nell’IR mentre il PC viene incrementato; 2. viene letto il contenuto dei due registri RX e RY; 3. 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; 4. l’esito dell’operazione viene utilizzato per decidere quale valore debba essere memorizzato nel PC. Clock La CPU ha un orologio interno, detto clock, che emette con regolarità un determinato numero di impulsi ogni secondo, come una specie di metronomo che scandisce le operazioni all’interno di tutti i circuiti elettronici del calcolatore e li sincronizza. La velocità del clock indica il numero di “impulsi” (cicli) che il clock emette in un secondo. La velocità del clock è quel numero che viene normalmente associato ad ogni processore (es.: processore da 2 Giga) La velocità del clock si misura in Hertz. 1 hertz (Hz) = 1 ciclo al secondo 1 megahertz (MHz) = 1 milione di cicli al secondo 1 gigahertz (GHz) = 1 miliardo di cicli al secondo Istruzioni del Processore Inoltre, un’istruzione del processore è generalmente composta da più operazioni elementari che accedono in momenti successivi alle risorse del computer Quasi mai la singola istruzione del processore è eseguita in un solo ciclo di clock. Ad esempio, per effettuare la somma di due numeri Bisogna leggere il primo addendo Bisogna leggere il secondo addendo Bisogna eseguire la somma 23 nov 2011 Bisogna memorizzare la somma 32 E potrebbe darsi che alcune di queste mini-operazioni richiedano più cicli di clock per essere completate. Ogni “parte” di un’istruzione viene eseguita in corrispondenza ad un impulso di clock Dimensione della parola E’ il numero di bit che un processore tratta simultaneamente. Corrisponde a quanti bit possono essere trasferiti simultaneamente tra processore e memoria. Corrisponde alla dimensione della singola cella di memoria RAM 23 nov 2011 Corrisponde alla dimensione dei registri della CPU. 33 Inizialmente la dimensione della parola era di 8 bit, cioè di 1 byte. Da allora si è cominciato a misurare la dimensione della memoria in byte. Attualmente la dimensione di parola varia da 32 a 64 bits, in base al tipo di processore e di architettura hardware. Istruzioni del processore Le istruzioni del processore sono il suo VOCABOLARIO: quanto più esso è povero tante più parole saranno necessarie per descrivere un concetto, 23 nov 2011 ma tanto più esse saranno “corte” e quindi veloci da eseguire, in quanto richiedono pochi impulsi di clock per essere completate. 34 La potenza di elaborazione di un processore è data dal numero di istruzioni eseguite in un secondo (MIPS – milioni di istruzioni al secondo, MFLOPS – milioni di istruzioni in virgola mobile al secondo) Coprocessori Nei moderni computer la CPU è “coadiuvata” da altri processori “specializzati” nel trattamento di particolari tipologie di dati (ad esempio immagini sul monitor o suoni). 23 nov 2011 Un Coprocessore è un processore “dedicato” che, sotto il controllo della CPU e del Sistema Operativo svolge elaborazioni specialistiche che richiederebbero alla CPU un notevole dispendio di tempo • Processore sulla scheda video • Processore sulla scheda audio 35 Multiprocessori E’ possibile, inoltre, dotare un computer di più processori che “collaborano” all’esecuzione di un programma. Ad esempio possono essere disposti più processori come in una catena di montaggio (pipeline) 23 nov 2011 Oppure più processori possono lavorare contemporaneamente su parti diverse di uno stesso dato (nelle previsioni del tempo, ad esempio, ogni processore può dedicarsi ad una specifica zona geografica) 36 Microprocessori incorporati I microprocessori si trovano anche in Automobili Telefoni Termostati Schede telefoniche 23 nov 2011 Carte di credito 37 Compatibilità Cosa accade ai programmi quando si cambia il processore del computer (perché, magari, si sostituisce il computer)? La compatibilità è garantita, di norma, verso l’alto Un programma che gira su un processore di un produttore funziona sui modelli più recenti prodotti dalla stessa azienda 23 nov 2011 Il viceversa non è sempre vero Non è garantita la compatibilità tra processori di aziende diverse, a meno che essa non sia esplicitamente dichiarata. Ad esempio c’è un ottimo livello di compatibilità tra processori AMD e Intel 38 CISC e RISC CISC = Complex Instruction Set Chip (300-400) RISC = Reduced Instruction Set Chip (100-200) Un processore CISC rispetto ad un processore RISC presenta molte più istruzioni che vengono eseguite tramite più operazioni elementari che richiedono più cicli di clock per essere completate 23 nov 2011 E che quindi sono più lente delle corrispondenti operazioni RISC 39 D’altro canto, le istruzioni di un processore CISC che non sono presenti in un processore RISC vengono da questo simulate tramite più istruzioni ciò comporta tempi maggiori nei processori RISC, in media, ma solo per tali istruzioni da simulare, rispetto alle corrispondenti operazioni CISC CISC e RISC I processori RISC sono mediamente più veloci dei CISC su quasi tutte le applicazioni. 23 nov 2011 I processori RISC non sono adatti per elaborazioni “complesse”, ad esempio quelle sui dati multimediali 40 Attualmente la differenza tra CISC e RISC si sta riducendo Benchmark Batterie di test usate per confrontare le velocità dei computer. Non sono mai valori assoluti. Ma sono rapportati ad un insieme di programmi (che compongono tali batterie). Un computer può risultare più veloce di un altro relativamente ad un programma ma meno veloce relativamente ad un altro. 23 nov 2011 Due grandi tipologie di programmi: CPU-consuming (usano molto la CPU). E tra queste: Integer-computing (calcoli su numeri interi o su pochi numeri) Floating-point computing (lavorano su numeri reali e molto grossi) I/O-consuming (usano molto le periferiche di I/O). 41 I Registri speciali Registro Indirizzi Memoria (MAR) contiene l’indirizzo della cella da cui leggere o in cui scrivere un dato Registro dati Memoria (MDR) contiene il dato letto dalla memoria o da scrivere in memoria