CORSO BASE DI “TECNICO RIPARATORE HARDWARE” “CPU” Docente: Dott. Ing. Antonio Pagano DEFINIZIONE L'unità di elaborazione centrale o CPU è una tipologia di processore digitale general purpose la quale si contraddistingue per sovraintendere tutte le funzionalità del computer digitale basato sull'architettura di von Neumann o sull'architettura Harvard. In particolare l'unità di elaborazione centrale è una tipologia di processore estremamente diffusa in quanto i moderni computer general purpose normalmente sono digitali e basati sull'architettura di von Neumann. Il compito della CPU è quello di eseguire le istruzioni di un programma presente in memoria. Durante l'esecuzione del programma la CPU legge o scrive dati in memoria. Il risultato dell'esecuzione dipende dal dato su cui si opera e dallo stato interno in cui la CPU stessa si trova, e può mantenere la traccia delle operazioni passate. Attualmente la CPU è implementata come microprocessore. STRUTTURA 1/3 Una generica CPU contiene: un'unità di controllo (anche nota con l'acronimo "CU") che legge dalla memoria le istruzioni, se occorre legge anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un registro della CPU. un'unità aritmetica e logica (anche nota con l'acronimo "ALU") che si occupa di eseguire le operazioni logiche e aritmetiche; dei registri, speciali locazioni di memoria interne alla CPU, molto veloci, a cui è possibile accedere molto più rapidamente che alla memoria: il valore complessivo di tutti i registri della CPU costituisce lo stato in cui essa si trova attualmente. STRUTTURA 2/3 Due registri sempre presenti sono: il registro IP (Instruction Pointer) o PC (Program Counter), che contiene l'indirizzo in memoria della prossima istruzione da eseguire; il registro dei flag: questo registro non contiene valori numerici convenzionali, ma è piuttosto un insieme di bit, detti appunto flag, che segnalano stati particolari della CPU e alcune informazioni sul risultato dell'ultima operazione eseguita. I flag più importanti sono: Flag di stato; Flag di controllo. STRUTTURA 3/3 Una generica CPU deve eseguire i suoi compiti sincronizzandoli con il resto del sistema sistema:: perciò è dotata, oltre a quanto sopra elencato, anche di uno o più bus interni che si occupano di collegare registri, ALU, unità di controllo e memoria: memoria: inoltre all'unità di controllo interna della CPU fanno capo una serie di segnali elettrici esterni che si occupano di tenere la CPU al corrente dello stato del resto del sistema e di agire su di esso esso.. Il tipo e il numero di segnali esterni gestiti possono variare ma alcuni, come il RESET RESET,, le linee di IRQ e il CLOCK sono sempre presenti presenti.. Una CPU è un circuito digitale sincrono:: vale a dire che il suo stato cambia ogni volta che riceve un sincrono impulso da un segnale di sincronismo detto clock, che ne determina di conseguenza la velocità operativa, detta velocità di clock clock:: quindi il tempo di esecuzione di una istruzione si misura in cicli di clock, cioè in quanti impulsi di clock sono necessari perché la CPU la completi completi.. SET DI ISTRUZIONI MACCHINA 1/2 Le istruzioni di una CPU (instruction set) sono semplicemente dei numeri, detti opcode o codici operativi: in base al loro valore l'unità di controllo intraprende delle azioni predefinite, come per esempio leggere la successiva locazione di memoria per caricare un dato, oppure attivare la ALU per eseguire un calcolo, oppure scrivere il contenuto di un registro in una certa locazione di memoria o in un altro registro, oppure una combinazione di queste. Per una persona, stendere programmi scrivendo direttamente gli opcode è estremamente noioso e prono all'errore. Per questo motivo si utilizza l'assembly, che associa un simbolo mnemonico ad ogni istruzione della CPU e introduce una sintassi che permette di esprimere i vari metodi di indirizzamento in modo più intuitivo. SET DI ISTRUZIONI MACCHINA 2/2 Una caratteristica importante dell'insieme (set) delle istruzioni di una CPU è la sua ortogonalità ortogonalità:: vale a dire, il fatto che ogni istruzione che usi i registri possa usarli tutti indifferentemente (tranne quelli "speciali" come l'IP) e che nessun registro sia in qualche modo privilegiato rispetto agli altri perché su di esso si possono compiere operazioni particolari particolari:: è stato dimostrato che un set di istruzioni ortogonali, a parità di tempo di esecuzione delle istruzioni e di numero dei registri, è più efficiente di uno non ortogonale ortogonale.. FAMIGLIE DI CPU 1/2 In base all'organizzazione della memoria si possono distinguere le seguenti due famiglie di CPU: con architettura di von Neumann, in cui i dati e le istruzioni risiedono nella stessa memoria. Questa architettura è la più comune, perché è molto semplice e flessibile. FAMIGLIE DI CPU 2/2 con architettura Harvard, in cui i dati e le istruzioni risiedono in due memorie separate. Questa architettura può garantire prestazioni migliori poiché le due memorie possono lavorare in parallelo riducendo le alee strutturali, ma è ovviamente molto più complessa da gestire. È tipicamente utilizzata nei DSP. ARCHITETTURA CISC 1/2 Quando i transistor disponibili su un solo chip erano pochi e i calcolatori venivano spesso programmati in assembly, era naturale sfruttarli in modo tale da avere CPU con istruzioni potenti, evolute e complesse: più queste erano vicine alle istruzioni dei linguaggi di programmazione ad alto livello più il computer sarebbe stato facile da programmare, e i programmi avrebbero occupato poco spazio in memoria (anch'essa poca e preziosa). Le CPU progettate secondo questo approccio sono dette CISC ed avevano unità di controllo complesse capaci di sfruttare al meglio pochi registri e i cui programmi erano di dimensioni relativamente piccole. CISC è l'acronimo di Complex Instruction Set Computer: tipicamente un processore di questo tipo implementa un numero relativamente scarso (una decina) di registri di uso generale. ha una unità di controllo microprogrammata: la logica del programma è memorizzata in una ARCHITETTURA CISC 2/2 Ha una unità di controllo microprogrammata: la logica del programma è memorizzata in una memoria veloce situata nella parte di controllo, invece di essere espressa tramite una rete combinatoria. Il set di istruzioni associato a CPU di tipo CISC è molto esteso e composto in genere di alcune centinaia di codici operativi diversi che svolgono funzioni anche molto complesse, fra cui sono caratteristici i trasferimenti memoria-memoria, assenti nei RISC; le istruzioni hanno lunghezza variabile e possono presentarsi in formati diversi, e sono necessari due o più (a volte molti di più) cicli di clock per completare una istruzione; è possibile specificare la posizione dei dati necessari alle istruzioni usando molti metodi di indirizzamento diversi. Il ridotto numero di registri interni obbliga questi processori a scrivere in memoria ogni volta che si verifica una chiamata di funzione, che si verifica un context switch o che viene salvato un registro nello stack. ARCHITETTURA RISC 1/2 A cavallo fra gli anni '70 e gli '80 la situazione però cambiò rapidamente: la RAM divenne più economica e comparvero i primi compilatori moderni, ottimizzanti, in grado di generare linguaggio macchina molto efficiente: per questo si iniziò a pensare ad un nuovo modo di progettare le CPU, prendendo in esame la possibilità di usare i transistor disponibili per avere invece molti registri e un set di istruzioni elementare, molto ridotto, che delegasse al compilatore il lavoro di tradurre le istruzioni complesse in serie di istruzioni più semplici, permettendo così di avere unità di controllo particolarmente semplici e veloci. Attualmente la distinzione fra queste due classi di architetture è venuta in gran parte meno: il numero di transistor disponibili su un solo chip è aumentato tanto da poter gestire molti registri ed anche set di istruzioni complesse. ARCHITETTURA RISC 2/2 RISC (Reduced Instruction Set Computer). Il tipico set di istruzioni RISC è molto piccolo, circa sessanta/settanta istruzioni molto elementari (logiche, aritmetiche e istruzioni di trasferimento memoria-registro e registro-registro): hanno tutte lo stesso formato e la stessa lunghezza, e molte vengono eseguite in un solo ciclo di clock. I processori RISC posseggono una unità di controllo semplice e a bassa latenza, riservando invece molto spazio per i registri interni: una CPU RISC ha di solito da un minimo di un centinaio ad alcune migliaia di registri interni generici, organizzati in un file di registri. Il fatto di avere un formato unico di istruzione permette di strutturare l'unità di controllo come una pipeline, cioè una catena di montaggio a più stadi: questa innovazione ha il grosso vantaggio di ridurre il critical path interno alla CPU e consente ai RISC di raggiungere frequenze di clock più alte rispetto agli analoghi CISC. IL MICROPROCESSORE In elettronica, un microprocessore (abbreviazione "µP") è un processore interamente contenuto in un circuito integrato. Attualmente la tendenza è di inserire anche più processori nel medesimo circuito integrato. In particolare, da una decina d'anni, la tendenza è di inserire, nel medesimo circuito integrato, molteplici CPU tutte identiche ("multicore"). Solo da qualche anno inoltre è in atto la tendenza ad inserire, nel medesimo circuito integrato, oltre che molteplici CPU, anche una GPU. Il microprocessore è attualmente l'implementazione fisica della CPU più comune, utilizzato dalla quasi totalità dei computer e in altri dispositivi digitali (come ad esempio telefoni cellulari, stampanti, scanner). Può essere in grado di leggere, elaborare e scrivere informazioni in una memoria o verso altri dispositivi digitali. Microprocessori Per approfondimenti si rimanda al seguente link: http://it.wikipedia.org/wiki/Microprocessore Grazie