L`insieme delle istruzioni (6) Alcune note conclusive

L’insieme delle istruzioni (6)
Architetture dei Calcolatori
(lettere A-I)
Alcune note conclusive
• I due principi dell’architettura a programma memorizzato
– Uso di istruzioni indistinguibili dai dati
– Uso di memoria modificabile per il programma
• Conseguenze
– Lo stesso calcolatore può essere utilizzato
• Da persone diverse
• In contesti diversi
• Queste scelte progettuali hanno influenzato in modo
determinante il successo dei calcolatori
– Oltre allo sviluppo tecnologico
Architetture dei Calcolatori 2004/05
Valeria Cardellini
1
1
I quattro principi guida per i
progettisti del set di istruzioni MIPS
• Semplicità e regolarità sono strettamente correlate
– Stessa dimensione delle istruzioni
– Operazioni aritmetiche solo su tre registri
– Campi dei registri nello stesso posto in diversi formati
• Minori le dimensioni, maggiore la velocità
– Numero limitato di registri del processore
• Un buon progetto richiede compromessi
– Esempio: possibilità di specificare costanti di grandi
dimensioni mantenendo la dimensione fissa delle istruzioni
• Rendere più veloce il caso più frequente
– Indirizzamento relativo al PC per i salti condizionati
– Rendere veloci le istruzioni frequenti (indirizzamento
immediato per costanti)
Architetture dei Calcolatori 2004/05
Valeria Cardellini
2
Classificazione delle architetture
dei calcolatori
• Classificazione basata sul modello di esecuzione
– Sulla modalità con cui il processore accede e manipola gli
operandi dell’istruzione
– Modelli possibili: a stack, con accumulatore, con insieme di registri
di uso generale (modelli registro-memoria e registro-registro)
Architetture dei Calcolatori 2004/05
Valeria Cardellini
3
2
Classificazione delle architetture
dei calcolatori (2)
• Operandi impliciti o espliciti
– Nell’architettura a stack: operandi impliciti sul top dello stack
– Nell’architettura con accumulatore: un operando è
implicitamente l’accumulatore, l’altro è in memoria
– Nelle architetture a registri general-purpose: operandi solo
espliciti (registri o locazioni di memoria)
• Architettura con accumulatore usata fino agli anni
sessanta
• I modelli di esecuzione prevalenti sono quelli registromemoria e registro-registro
Architetture dei Calcolatori 2004/05
Valeria Cardellini
4
Classificazione delle architetture
dei calcolatori (3)
• Esempio: sequenza di codice per C=A+B
– Assumiamo che le variabili A, B e C siano in memoria e che
le variabili A e B non debbano essere modificate
Stack
Accumulatore
Registro-memoria
Registro-registro
Push A
Load A
Load R1, A
Load R1, A
Push B
Add B
Add R3, R1, B
Load R2, B
Add
Store C
Store R3, C
Add R3, R1, R2
Pop C
Architetture dei Calcolatori 2004/05
Valeria Cardellini
Store R3, C
5
3
Classificazione delle architetture
dell’insieme di istruzioni
• Due approcci opposti per la definizione dell’insieme
delle istruzioni
– Architetture RISC (Reduced Instruction Set Computer)
– Architetture CISC (Complex Instruction Set Computer)
• Influenza sulle prestazioni del calcolatore di:
–
–
–
–
Numero di istruzioni nell’insieme delle istruzioni
Potenzialità delle singole istruzioni
Formato delle istruzioni
Codifica delle istruzioni
Architetture dei Calcolatori 2004/05
Valeria Cardellini
6
Architetture di tipo RISC
• Ispirate al principio di eseguire in maniera semplice le
istruzioni più frequenti
– Le operazioni complesse vengono scomposte in una serie di
istruzioni più semplici
• Caratterizzate da semplicità delle istruzioni e limitato
numero di istruzioni che costituiscono l’insieme delle
istruzioni
–
–
–
–
–
Stessa dimensione delle istruzioni (più semplice la decodifica)
Il campo del codice operativo occupa uno spazio predefinito
Numero limitato di formati delle istruzioni
Il codice operativo identifica in modo univoco il formato
Nei vari formati, i campi che identificano uguali entità
occupano la stessa posizione
• Esempi
– PowerPC
– MIPS
Architetture dei Calcolatori 2004/05
Valeria Cardellini
7
4
Architetture di tipo CISC
• Caratterizzate da elevata complessità delle istruzioni
eseguibili ed elevato numero di istruzioni che
costituiscono l’insieme delle istruzioni
– Istruzioni di differente dimensione
– Il campo del codice di operazione non occupa
necessariamente uno spazio predefinito
– Numero molto ampio di formati delle istruzioni
– Nei vari formati, i campi che identificano uguali entità possono
occupare differenti posizioni
• Obiettivo: minimizzare la lunghezza del codice e quindi
l’occupazione di memoria
• Esempi
– Le istruzioni di IA-32 possono essere lunghe da 1 a 17 byte
– Le istruzioni del VAX possono essere lunghe da 1 a 54 byte
Architetture dei Calcolatori 2004/05
Valeria Cardellini
8
Architetture di tipo CISC (2)
• In generale: relazioni possibili tra dimensione della
parola di memoria e dimensione delle istruzioni
• Dimensione variabile delle istruzioni a seconda della
modalità di ogni operando
– Complessità di gestione della fase di prelievo dell’istruzione
dalla memoria: a priori non è nota la lunghezza
dell’istruzione da caricare
• Elevata complessità del processore (ossia
dell’hardware relativo)
– In termini degli elementi che lo compongono, con la
conseguenza di rallentare il tempo di esecuzione delle
operazioni
Architetture dei Calcolatori 2004/05
Valeria Cardellini
9
5
Registri di IA-32
• EAX, EBX, ECX, EDX: registri GPR a
32, 16 o 8 bit:
– EAX: accumulatore
– EBX: puntatore a memoria (base)
– ECX: contatore cicli
– EDX: estende EAX a 64 bit nelle
divisioni e moltiplicazioni
• ESP: Stack Pointer, puntatore alla cima
dello stack
• EBP: Base Pointer, puntatore entro lo
stack
• ESI, EDI: registri indice di uso generico
•CS, …, GS: registri di segmento,
puntatori ai segmenti di memoria in uso
• EIP: Instruction Pointer (Intel PC)
Architetture dei Calcolatori 2004/05
Valeria Cardellini
• EFLAGS: Program Status Word,
registro di stato
10
Tipi di istruzione per IA-32
• Istruzioni aritmetiche, logiche e di trasferimento dati a due
operandi
– Nelle istruzioni logico-aritmetiche un operando è sorgente e
destinazione
– Nelle istruzioni logico-aritmetiche un operando può essere in
memoria
Operando sorgente/destinazione Secondo operando sorgente
Registro
Registro
Registro
Immediato
Registro
Memoria
Memoria
Registro
Memoria
Immediato
• Inoltre, istruzioni di controllo del flusso ed istruzioni sulle
stringhe
Architetture dei Calcolatori 2004/05
Valeria Cardellini
11
6
Formato delle istruzioni di IA-32
• La codifica delle istruzioni è complessa, con molti formati
• La lunghezza delle istruzioni è molto variabile (da 1 fino a
17 byte)
• OPCODE è l’unico campo obbligatorio (lunghezza minima
1 byte), tutti gli altri campi sono opzionali
• MODE stabilisce la modalità di indirizzamento
• L’indirizzo di memoria è l’offset di un segmento, dipende
dall’opcode, dai registri usati e dal prefisso
Architetture dei Calcolatori 2004/05
Valeria Cardellini
12
Digital Signal Processing (DSP)
• Principali caratteristiche dei processori per DSP
• Due modi di indirizzamento peculiari
– Indirizzamento circolare (o modulo)
• Uso di buffer circolari per gestire il flusso continuo di dati
– Indirizzamento bit reverse
• Specifico per Fast Fourier Transform (FFT)
• Tipo di dati a virgola fissa
• Nessuna gestione delle eccezioni in caso di overflow
(requisiti real-time stringenti)
– Il risultato viene settato al massimo numero rappresentabile
(aritmetica con saturazione)
• Istruzioni di tipo multiply-accumulate specifiche per il
prodotto scalare
Architetture dei Calcolatori 2004/05
Valeria Cardellini
13
7