2 Unità centrale CPU Controllo Unità Aritmetico logica Un calcolatore digitale è composto da CPU, memorie e dispositivi di input/output. Dispositivi di ingresso\uscita Registri Memoria Principale Unità Disco Display bus 3 Central Processing Unit Descrizione Organizzazione Funzionamento 4 La CPU e’ il “cervello” del calcolatore e il suo compito è quello di eseguire i programmi, residenti nella memoria, leggendo ed eseguendo le loro istruzioni. I componenti sono collegati tra loro attraverso dei bus. 5 Un bus, che è un gruppo di fili tra loro paralleli, ha il compito di trasportare segnali di controllo, dati e indirizzi. Il Bus puo’ essere esterno alla CPU e ha lo scopo di permettere la comunicazione tra la memoria e i dispositivi di I\O. 6 A+B Registri A B A B L’organizzazione interna di una CPU è caratterizzata dal data path, che è costituito da una serie di componenti, tra i quali l’ALU, i registri, e molti bus di comunicazione. Registro ALU dell’ingresso Bus di ingresso dell’ALU ALU A+B Registro di uscita dell’ALU l 7 Arithmetic Logic Unit L’ALU esegue dei calcoli matematici sui dati e poi memorizza il risultato in un registro in uscita. I dati hanno due possibilità di percorsi: registro-memoria i dati vengono trasportati dal registro di uscita alle memoria e/o viceversa; 8 La memoria della CPU, che è ad alta velocità, viene utilizzata per memorizzare temporaneamente istruzioni e dati più frequentemente acceduti. 9 Il funzionamento della CPU si basa su una sequenza di operazioni, che insieme prendono il nome di fetch-decode-execute: 1 prelievo delle istruzioni dalla memoria, e immissione di queste nel registro delle istruzioni; Caricamento del nuovo program counter 2 dterminazione del tipo di istrizzone 3 ricerca operandi ed esegui l’istruzione. 10 L’hardware e’ l’insieme degli elementi costitutivi di un elaboratore Il software serve per utilizzare il calcolatore. Il software suddivide le istruzioni in piccole porzioni che esegue in modo più semplice attraverso un interprete, mentre l’hardware le esegue direttamente. 11 Durante gli anni 70’ dello scorso secolo il mercato dei calcolatori era in pieno sviluppo e aumentava sempre di più la richiesta di calcolatori a basso costo. Lo sviluppo di software eliminava i limiti di costo inerenti alla esecuzione di istruzioni complesse. 12 Ci sono dei principi di progettazione chiamati principi di progettazione RISC, che gli architetti delle CPU possono seguire. Tra i più importanti troviamo: 13 Tutte le istruzioni comuni vengono eseguite direttamente dall’hardware e non vengono interpretate da microcodice, per cui il sistema e’ più veloce. Mentre per i calcolatori che implementano istruction set CISC le istruzioni vengono scomposte in miscroistruzioni anche se questo passaggio rallenta la macchina. 14 I calcolatori moderni cercano di iniziare piu’ istruzioni possibili al secondo. Il parallelismo svolge quindi un ruolo fondamentale nel miglioramento delle prestazioni perché inviare una grossa quantità di istruzioni lente a intervalli brevi e’ possibile solo se istruzioni multiple si possono eseguire contemporaneamente. 15 Una limitazione della velocita’ con la quale vengono mandate in esecuzione le istruzioni e’ dovuta alla decodifica delle istruzioni. Per eliminare questo problema bisogna usare istruzioni con struttura regolare, di lunghezza fissa, con un numero limitato di campi e con formati molto simili. 16 La maggior parte delle operazioni di load e store trasferiscono dati tra la memoria e i registri. Queste operazioni di trasferimento sono piu’ lente e quindi talvolta si sovrappongono con le altre istruzioni; 17 Poiche’ l’accesso alla memoria e’ molto lento e’ necessario disporre di molti registri, almeno 32, in modo che un’istruzione, una volta letta, possa essere conservata in un registro fin quando non e’ piu’ necessaria. 18 Un modo per accelerare il funzionamento dei chip e’ aumentare la velocità del clock e i ricercatori utilizzano il parallelismo, nel tentativo di eseguire due o piu’ operazioni contemporaneamente per ottenere maggiori prestazioni con la frequenza di clock a disposizione. 19 Per eseguire piu’ istruzioni parallelamente si usava un prefetch buffer, che le prelevava invece di aspettare la lettura completa della memoria. Quindi il processo si divideva in due parti: lettura della memoria e esecuzione. Stadio di lettura delle istruzioni Stadio di decodifica delle istruzioni Stadio di lettura degli operandi Stadio di esecuzione delle istruzioni Stadio di scrittura 20 Registri +lente Da 32KB a alcuni MB Cache +capacita`di memorizzazione Memoria principale Da 16MB a decine di GB Dischi magnetici Nastri Memorizzazione permanente Dischi ottici Memorizzazione di archivi Da alcuni GB a decine di TB 21 Storicamente la capacita’ di accesso ai dati da parte delle CPU e’ sempre stata limitata dalla velocita’ di I/O della memoria. In realta`non si tratta di un problema tecnologico, ma economico; gli ingegneri sono in grado di costruire memorie veloci come le CPU, ma il costo complessivo del sistema sarebbe molto elevato. . 22 La validita’ di questo metodo dipende dalla quantità` di parole che si trovano nella cache. Statisticamente i programmi non accedono alla memoria a caso: se La CPU richiede un dato della memoria di indirizzo A, e` assai probabile che l`accesso seguente si troverà` nelle vicinanze di A. CPU cache Memoria principale bus Configurazione comune di CPU, cache e memoria 23 La memoria e`quella parte del calcolatore dove vengono immagazzinati i programmi e i dati. Alcuni ricercatori del settore usano il termine store (magazzino) o storage (immagazzinamento) invece di memoria, anche se il termine storage solitamente si riferisce alla memorizzazione su disco.