Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo sequenze di istruzioni (istruzioni macchina) Il linguaggio in cui si scrivono queste istruzioni viene chiamato linguaggio macchina Il ruolo del processore è quindi quello di eseguire programmi in linguaggio macchina
Componenti di un processore Unità di Controllo Unità Aritmetico- Logica REGISTRI Program Counter (PC) Registro di Stato (PS) Registro Istruzioni (RI) Registro Indirizzi Memoria (RIM) Registri Generali (16 o 64) Registro Dati Memoria (RDM) Registro di Controllo (RC) Bus Interno
L’unità di controllo L’Unità di Controllo (UC) si occupa di coordinare le diverse attività che vengono svolte all’interno del processore Il processore svolge la sua attività in modo ciclico: ad ogni ciclo corrisponde generalmente l’esecuzione di una istruzione macchina Ad ogni ciclo vengono svolte diverse attività controllate e coordinate dalla UC si legge dalla memoria principale la prossima istruzione da eseguire si decodifica l’istruzione letta si esegue l’istruzione
La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock Ad ogni impulso di clock la UC esegue una istruzione macchina La velocità di elaborazione di un processore dipende dalla frequenza del suo clock I processori attuali hanno frequenze di clock dell’ordine di 1-3 GHerz (1-3 miliardi di impulsi al secondo)
Il Processore: i registri Il processore contiene al suo interno un certo numero di registri: unità di memoria estremamente veloci per memorizzare i dati di uso immediato Le dimensioni di un registro sono tipicamente quelle di una parola di memoria (ad esempio 4 o 8 byte)
Esistono due tipi di registri: i registri speciali utilizzati dalla UC per scopi particolari: controllo dell’esecuzione del programma scambio di dati con la memoria centrale i registri generali utilizzati per contenere dati e risultati di operazioni aritmetiche o logiche
I registri speciali PC: program counter, contiene l’indirizzo della prossima istruzione da eseguire RI: registro istruzioni, contiene l’istruzione in esecuzione PS: process state, informazione sullo stato dell’esecuzione e possibili errori RC: registro di controllo, contiene il codice dell’operazione da eseguire
Registri di collegamento con la memoria RDM: registro dati memoria, contiene il dato da trasferire in o dalla cella di memoria in esame RIM: registro indirizzi di memoria, contiene l’indirizzo di memoria della cella (parola) in esame Il registro RDM accede direttamente (senza esaminare altre celle) alla cella il cui indirizzo e’ specificato dal registro RIM
Formato delle instruzioni Codice op. Argomento1 Argomento2 Formato istruzione (esempio) 100 Gli argomenti possono essere indirizzi
Contenuto della memoria principale cod. op.mem. Ind1/Reg1 Ind2/Reg2 1 2 istr. lettura (load)/scrittura (store) in memoria-registri ... cod. op. reg. Reg1 Reg2 istr. per operazione tra due registri ... + -2 00003752 k numero rappr.con segno, esponente e mantissa
Il ciclo di esecuzione di un programma inizio PS:= start PC:= ind. 1a istr. RI:= istr ind. in PC PC:=PC+1 RC:= cod. istr. in RI esegui istruzione fine si no PS = stop?
Esecuzione istruzione RC load store add jump stop ... RIM:= ind. arg. in RI RDM:= cont. ind. in RIM R1:= R1+R2 PC:= ind. arg. in RI PS:= stop
Load 3568 R1 R1 Add R1 R2 R2 Store R1 3568 Jump 1000 44 1000 1001 30 1002 1003 44 3568
Load 3568 R1 R1 Add R1 R2 R2 Store R1 3568 Jump 1000 44 1000 44 1001 30 1002 1003 44 3568
Load 3568 R1 R1 Add R1 R2 R2 Store R1 3568 Jump 1000 44 1000 74 1001 30 1002 1003 44 3568
Load 3568 R1 R1 Add R1 R2 R2 Store R1 3568 Jump 1000 74 1000 74 1001 30 1002 1003 74 3568
Load 3568 R1 R1 Add R1 R2 R2 Store R1 3568 Jump 1000 74 1000 74 1001 30 1002 1003 74 3568
Esecuzione di (Load, 3568,R1) PC = 1000 RC = Load RIM = 1000 RDM = (Load, 3568, R1) RI = (Load, 3568, R1) PC = 1001 RIM = 3568 RDM = 44 R1 = 44 Lettura dell’istruzione all’indirizzo 1000
Esecuzione di (Add, R1,R2) Supponendo che R2 contenga il numero 30 PC = 1001 RC = Load RIM = 1001 RDM = (Add, R1,R2) RI = (Add, R1,R2) PC = 1002 RC = Add Viene attivata la ALU R1 = 44+30 = 74
Esecuzione di (Store, R1, 3568) PC = 1002 RC = Load RIM = 1002 RDM = (Store, R1, 3568) RI = (Store, R1, 3568) PC = 1003 RC = Store RIM = 3568 RDM = 74 Nella locazione 3568 viene scritto il numero 74
Esecuzione di (Jump 1000) PC = 1003 RC = Load RIM = 1003 RDM = (Jump 1000) RI = (Jump 1000) PC = 1004 RC = Jump PC = 1000
L’Unità Aritmetico-Logica L'Unità Aritmetico-Logica (ALU) è costituita da un insieme di circuiti in grado di svolgere le operazioni di tipo aritmetico e logico La ALU legge i dati contenuti all'interno dei registri generali, esegue le operazioni e memorizza il risultato in uno dei registri generali Esempi di operazioni sono: Aritmetiche Logiche (AND, OR, NOT…) Confronti (=, <, >…)
Supporto alla ALU Per operazioni con Floating Point ci puo’ essere accanto alla ALU: Un modulo interno alla CPU per operazioni con i floating point (FPU) Oppure Un processore addizionale specifico chiamato co-processore matematico
Tipi di processori Processori CISC (Complex Instruction Set Computer) il linguaggio macchina ha molte istruzioni piuttosto complesse (piu’ lente da eseguire possono richiedere piu’ cicli di clock) Esempio Pentium, Macintosh 68000 Processori RISC (Reduced Instruction Set Computer) Il linguaggio macchina ha poche istruzioni molto semplici (piu’ veloci da eseguire, eseguite in un unico ciclo di clock) Esempio Macintosh PowerPC