Sei sulla pagina 1di 11

CALCOLATORI ELETTRONICI

A cura di Luca Orr

Lezione n.19

Processori RISC e CISC

CALCOLATORI ELETTRONICI
A cura di Luca Orr

Processori RISC e Superscalari


Motivazioni che hanno portato alla realizzazione di queste architetture
Sommario:
Confronto tra le architetture CISC e RISC
Prestazioni

Architetture CISC E RISC


Tradizionalmente sono stati seguiti due approcci alla progettazione di unUnit di
Controllo (UC), cio della parte della CPU che controlla il movimento dei dati.
Logica cablata (tramite circuiti sequenziali)
Logica microprogrammata (tramite microistruzioni)

Evoluzione
In origine venne usata la logica cablata Hard Wired (non modificabile). Era un
metodo molto rigido, perch veniva fatta a livello di progetto fisico con connessioni
vere e proprie. La microprogrammazione si afferm negli anni 60 come approccio
ordinato alla progettazione (in termini di metodo di progettazione).
Lapproccio tramite microprogrammazione offre il vantaggio di una maggiore
flessibilit:
Il progettista pu intervenire fino allultimo sul microprogramma, anche
sostituendo o modificando le istruzioni.
Facilit nella realizzazione di istruzioni di macchina complesse e potenti
Tutto ci port allo sviluppo di calcolatori che avevano istruzioni molto complesse,
in pratica operazioni che coinvolgevano molti trasferimenti ed elaborazioni dati.
Questa categoria di macchine stata successivamente nominata CISC (Complex
Instruction Set Computers). Un esempio di macchina con un set distruzioni
complesso e il 68000.

Motivazioni per i CISC


Negli anni 60 ci fu il problema della software craising (crisi del software), ossia la
costruzione del software aveva costi molto elevati. I motivi principali che hanno
portato allo sviluppo dei processori CISC sono essenzialmente tre:
1. Riduzione del gap tra linguaggio macchina e linguaggio di programmazione. Il
gap inteso in termini di numero di istruzioni. Questo significa che con
2

CALCOLATORI ELETTRONICI
A cura di Luca Orr

lapproccio CISC, dato un programma scritto in linguaggio dalto livello, si


produce un minor numero distruzioni macchina rispetto allapproccio RISC,
riducendo cos il tempo desecuzione del programma.
2. Programmi compatti: le istruzioni erano in grado di eseguire pi operazioni.
Questo forniva un vantaggio economico in quanto la memoria era cara negli
anni 60.
3. La memoria centrale era pi lenta della memoria di controllo. Si cercava allora
di portare in memoria di controllo i programmi, perch questa memoria era pi
veloce.
Tuttavia, ci si accorse che queste istruzioni portavano ad un elevato numero medio di
cicli di clock nella memoria di controllo (ci volevano molte microistruzioni per poter
eseguire unistruzione complessa). Questo era causa di lentezza. Inoltre i profili
desecuzione mostravano che l80% delle istruzioni eseguite corrispondeva al solo
20% del repertorio distruzioni. In pratica venivano eseguite solo le istruzioni pi
semplici, STORE, CALL, ADD e qualche altra.
Altri punti a svantaggio dellapproccio CISC erano inoltre i seguenti:
La RAM diveniva sempre pi veloce
Veniva introdotta la memoria CACHE
Quindi non cera pi necessit di eseguire il programma nella memoria di controllo.
Si pensarono allora nuovi criteri tra cui:
Ottimizzare quel 20%, cio il repertorio delle istruzioni pi semplici, perch fa
l80% del lavoro. Questo significa:
rinunciare alle istruzioni pi complesse che sappiamo richiedono pi cicli di
clock
contare sulla velocit della cache
Si pens allora la seguente strategia:
creare un repertorio distruzioni semplificato
o istruzioni tutte della stessa dimensione
o pochi formati in modo da facilitare la decodifica anche con la logica
cablata. Questo port al ritorno della logica cablata che era stata
soppiantata dalla microprogrammazione.
o decodifica ordinata
Contare sul compilatore
o Per utilizzare in modo ottimo le operazioni di macchina
o Qualunque sia la complessit del linguaggio di programmazione dalto
livello
Nacquero cos, sulla base di quelle osservazioni le architetture RISC

CALCOLATORI ELETTRONICI
A cura di Luca Orr

RISC
Lapproccio RISC prevede luso di istruzioni molto semplici, quindi sono necessarie
pi istruzioni RISC per risolvere un dato problema. Dallaltra parte per queste
istruzioni possono essere realizzate in logica cablata, consentendo di raggiungere alte
velocit desecuzione. Le architetture RISC hanno un elevato numero di registri di
CPU. In questo modo una variabile pu rimanere in un registro per lungo tempo e
quindi essere riutilizzata in futuro con maggiore velocit (accesso alla CPU pi
veloce). Solo quando tutti i registri sono occupati, allora la variabile inutilizzata
potrebbe essere esclusa dal registro. Con i RISC, le operazioni di manipolazione
avvengono solo tra registri di CPU. Lidea era quella di eliminare le operazioni di
manipolazione tra memoria e CPU ottenendo una minimizzazione del traffico con la
memoria. Quindi le uniche operazioni che richiedono laccesso alla memoria sono
solo LOAD e STORE.
Un esempio di processore RISC il POWER PC.
Vediamo il formato di unistruzione del POWER PC.
Le istruzioni sono tutte a 32 bit. Il codice operativo ha una lunghezza fissa
(tipicamente 6 bit). I formati sono 3 o
4.
Registri: 3 campi operandi

OP

Rd

Ra

Rb

FUN

Campo di operazione di 6 bit


OP

OP

Rd

Ra

Campo usato per distinguere


le varie operazioni

Displ/Imm

Indirizzo lungo

CALCOLATORI ELETTRONICI
A cura di Luca Orr

Lunit di controllo di una macchina CISC di tipo microprogrammato, mentre


lunit di controllo delle macchine RISC realizzata in logica cablata.
Esempio
Istruzioni aritmetiche nel formato RISC
ADD R1,R2,R5; ------------------- R1:=R2+R5
MUL R7,R9,R10;------------------ R7:=R9*R10
SUB R3,R3,R3;-------------------- R3:=R3-R3=0
Queste istruzioni hanno tutte 3 registri di cui due sorgenti (es.R2 e R5 per la ADD e
R9 e R10 per la MUL) ed uno destinazione (R1 per la ADD, R7 per la MUL).
Il RISC esegue unistruzione in un colpo di clock, mentre il CISC richiede pi colpi
di clock per eseguire unistruzione. Si ricorda che lesecuzione di unistruzione
richiede le seguenti fasi:
1. fetch
2. decodifica
3. esecuzione vera e propria (ALU)
4. memorizzazione del risultato in un registro
5. eventuale scrittura in memoria

PRESTAZIONI
Dato un generico programma, ci si chiede quali siano i fattori che influenzano le
prestazioni del sistema.
Questo programma scritto in linguaggio dalto livello e viene poi tradotto in
linguaggio macchina dal compilatore.
Indichiamo con:
N: numero complessivo distruzioni macchina che devono essere eseguite
CPI: numero medio di colpi di clock per istruzione macchina
f=1/T: frequenza di clock, con T periodo di clock
t: tempo impiegato per lesecuzione del programma
Si ottiene che il tempo t per lesecuzione del programma dato dalla seguente
espressione:
t = N CPI T =

N CPI
f

il prodotto N*CPI costituisce il numero di cicli di macchina.


Le prestazioni del sistema saranno tanto migliori tanto pi piccolo t.
5

CALCOLATORI ELETTRONICI
A cura di Luca Orr

t dipende dalla tecnologia, quindi da T, cio dal periodo/frequenza di clock.


Ricordiamo che T dipende dalla capacit dintegrazione e quindi dalla capacit
di costruire circuiti sempre pi piccoli e pi veloci.
N dipende dal compilatore. Se il compilatore scadente N sar alto, se invece
buono N sar basso.
t dipende dallarchitettura perch N, CPI e T dipendono dallarchitettura.
Infatti, se la macchina fatta in modo complesso, probabile che i percorsi tra
un registro e una destinazione del contenuto del registro, siano lunghi e quindi
poich il clock scandisce il funzionamento della macchina necessario che il
clock sia sufficiente a fare quel trasferimento.
CPI dipende solamente dallarchitettura poich il clock dipende dal repertorio
distruzioni e da come fatta la macchina e da quanto complesse sono le
istruzioni.
N dipende anche dallarchitettura perch se il repertorio di macchina consente
con una sola istruzione di fare molte cose allora N sar piccolo. Le macchine
RISC fanno aumentare N, per cercano di ridurre in misura maggiore
linfluenza di T e CPI rispetto a N.

BLOCCHI PER UNA CPU


Vogliamo costruire una macchina che soddisfi un basso CPI.
Vediamo quali sono i registri interessati quando si effettua il prelievo di
unistruzione.
1. PC (Program Counter)
2. IR (Instruction Register)
3. Memoria Istruzione anche se non fa parte della CPU, ma interviene
ugualmente. Stiamo supponendo che la memoria sia divisa in memoria
istruzioni e memoria dati.
Larchitettura del calcolatore sar caratterizzata certamente da una parte che fa il
prelievo dellistruzione. Questa parte composta da un Program Counter (PC) che ci
dice dove prendere la prossima istruzione in memoria. Poi ci sar il Registro
Istruzioni (IR) che quel registro dove si mette listruzione presa dalla memoria per
poi decodificarla. Con le macchine attuali, la CPU legge ormai dalla Cache Memory,
che una memoria piccola ma veloce posta nello stesso circuito integrato della CPU
ed divisa in memoria istruzioni e memoria dati.
Vediamo ora uno schema a blocchi rappresentativo della fase del prelievo di
unistruzione

CALCOLATORI ELETTRONICI
A cura di Luca Orr

Program
Counter
(PC)
Memoria
Istruzioni
(MI)

Intruction
Register
(IR)

UC

Il PC genera lindirizzo e nellInstruction Register andr il codice dellistruzione.


Ovviamente il Program Counter andr incrementato per selezionare listruzione
successiva da eseguire, oppure andr modificato se c da fare un salto (JUMP X).
Tutta questa fase viene comandata dallUnit di Controllo UC. Dopo questa fase di
prelievo dellistruzione, lUC deve interpretare il contenuto dellInstruction Register.
Inizier quindi la fase di decodifica dellistruzione.

Decodifica dellistruzione
Una volta che listruzione stata prelevata c da decodificarla. Quindi la fase di
decodifica necessita di :
1. un decodificatore
2. Register File
3. IR
Se facciamo lipotesi che le operazioni avvengano solo nei registri sicuro che nella
fase di esecuzione qualche registro verr utilizzato, a meno che listruzione non sia
unistruzione di salto, che sappiamo non tiene conto di nessun registro. Allora in
questa fase si leggeranno i registri e si presentano alla fase successiva i loro
contenuti.

CALCOLATORI ELETTRONICI
A cura di Luca Orr

Decodificatore
IR

RF

Blocco dove stanno i


registri di macchina

La logica di questa parte di decodifica la seguente:


Il contenuto di IR viene decodificato dal decodificatore D, che in pratica lUnit di
Controllo. LUnit di Controllo D genera i segnali di comando verso le varie parti di
cui una verso RF e altri segnali verso destra nella quale risiedono gli stadi successivi.
Ricordiamo che il primo stadio quello di prelievo dellistruzione, il secondo stadio
quello di decodifica, il terzo stadio invece quello di esecuzione.

Esecuzione
Nello stadio di esecuzione c la ALU (Unit Aritmetica Logica).

RF

ALU

UC

Quello che esce dal Register File (RF) arriva alla ALU che fa le operazioni tra gli
operandi di RF. Anche in questo stadio c lUC che da il comando alla ALU
dicendogli: devi fare la moltiplicazione o la somma o la divisione, etc.
Il quarto stadio la fase di accesso alla memoria.
8

CALCOLATORI ELETTRONICI
A cura di Luca Orr

Accesso alla memoria


Unistruzione pu richiedere la lettura o scrittura in memoria. Lo schema a blocchi
rappresentativo di questa fase il seguente:

Memoria
Dati MD

ALU

RF

Esce il risultato

UC

Dalla ALU esce il risultato delloperazione svolta dalla ALU stessa (pu essere anche
il calcolo di un indirizzo di memoria. Il Register File RF il luogo dal quale si
prendono i dati per metterli in memoria oppure il luogo dove finir il dato letto dalla
memoria. Il tutto comandato dallunit di controllo.
Lultima fase uneventuale fase di scrittura registri.

Scrittura registri (fase di Write Back)


Il dato calcolato dalla ALU o letto dalla memoria viene preso e portato in un registro
di destinazione.
MUX
ALU
RF

MD

Operazione di Load

UC

CALCOLATORI ELETTRONICI
A cura di Luca Orr

Se loperazione era per esempio ADD, il risultato in uscita dalla ALU viene messo in
un registro di RF. Se loperazione unoperazione di lettura dalla memoria dati
(MD), il dato verr letto dalla memoria e caricato nel Register File (operazione di
Load). Anche in questa fase lUC effettua il controllo delle varie operazioni, tra cui
ha il compito di asserire la via del Mux, che deve poi alimentare RF, sulla base del
codice doperazione. Ovviamente se un dato deve essere scritto in un registro, lUC
deve far arrivare un clock che memorizzi il dato dentro il registro di destinazione
selezionato.
Complessivamente abbiamo il seguente schema a
blocchi.

MI

PC

IR

RF

UC

ALU

MD

LUnit di Controllo genera tutti i segnali di controllo necessari.


Il Program Counter ci fa leggere la memoria, (presenta lindirizzo alla memoria) nella
quale posta listruzione, che viene poi decodificata dallUC, la quale attiva i segnali
che comandano quello che normalmente il percorso dati. Nel grafico vanno aggiunti
ulteriori percorsi per tener conto di eventuali salti (istruzione di salto) e quindi
modifica del PC.

10

CALCOLATORI ELETTRONICI
A cura di Luca Orr

Pipeline
Le istruzioni vengono eseguite da pi moduli, ognuno dei quali fa una certa
elaborazione.

S1
IF

S2
ID

S3
EX

S4
ME

WB

CK

A regime ( la pipeline piena) ed ad ogni colpo di clock viene eseguita unistruzione.


S1= stadio 1
S4= stadio 4
IF=Instruction Fetch
ID= Decodifica dellistruzione
EX= esecuzione dellistruzione
ME= Lettura in memoria
WB= Write back (scrittura nei registri)

11