Macchina di Riferimento: argomenti Architettura MIPS

Transcript

Macchina di Riferimento: argomenti Architettura MIPS
Macchina di Riferimento: argomenti
L'architettura di una macchina MIPS
Organizzazione della memoria
I registri della CPU
L'esecuzione dei programmi
Il ciclo fetch-execute
Il simulatore SPIM
1
Architettura MIPS
Obiettivo del corso: linguaggio assembly dell’architettura MIPS
Architettura MIPS appartiene alla famiglia delle architetture
RISC (Reduced Instruction Set Computer) sviluppate dal 1980 in
poi
Esempi: Sun Sparc, HP PA-RISC, IBM Power PC, DEC Alpha
Principali obiettivi delle architetture RISC:
Semplificare la progettazione dell’hardware e del compilatore
Massimizzare le prestazioni
Minimizzare i costi
2
1
Architetture RISC
Caratteristiche principali:
Istruzioni eseguite direttamente dall'hardware.
Massimizzare la frequenza di esecuzione delle istruzioni
Istruzioni facili da decodificare
“poche”, poco “varie”, tutte di uguale lunghezza
Accesso alla memoria solo attraverso istruzioni dedicate di
caricamento/memorizzazione (load/store)
Gli operandi di un'istruzione devono sempre risiedere nei
registri del processore.
3
Architettura
4
2
Architettura di riferimento
BUS (dati, indirizzi, segnali di controllo)
Microprocessor (CPU)
I\O driver
I\O driver
Monitor
CD
Registers
Memory
ALU
5
Architettura MIPS
Componenti del processore MIPS
32 registri di tipo general-purpose
ciascuno di dimensione 32 bits
numerosi registri special-purpose
PC (program counter)
HI, LO (risultato di moltiplicazione/divisione )
altri registri accessibili solo dall' hardware
Arithmetic Logic Unit (ALU)
esegue calcoli aritmetici con i registri
6
3
MIPS: i registri
Registri general-purpose
possono essere usati in qualunque modo dal programma
è convenzione assegnare un certo tipo di utilizzo ad alcuni
registri general-purpose
aderire alle convenzioni è importante, rende possibile
l'interazione con programmi scritti da altri
7
MIPS: i registri
Registri general-purpose (GPR)
sono prefissati con il simbolo $
sono numerati da $0 a $31
hanno anche nomi basati sul tipo di utilizzo (convenzione)
$0 ↔ $zero
$4 ↔ $a0
$8 ↔ $t0
$29 ↔ $sp
i nomi sono utilizzati nei programmi assembly per
migliorarne la leggibilità, la comprensione
8
4
Architettura MIPS: i registri
Nome
Numero
Utilizzo
$zero
0
costante 0
$at
1
riservato all’assembler
$v0 - $v1
2-3
Valutazione espressione
$a0 - $a3
4-7
argomento 0-1-2-3
$t0 - $t7
8-15
temp.neo non preservato
$s0 - $s7
16-23
temporaneo preservato
$t8 - $t9
24-25
temp.neo non preservato
$k0 - $k1
26-27
$gp
28
riservato per l’ OS kernel
pointer to global area
$sp
29
stack pointer
$fp
30
frame pointer
$ra
31
return address (funzioni)
9
Architettura MIPS: i registri
I registri speciali LO e HI
registri speciali non prefissati con il simbolo $
contengono il risultato di precedenti istruzioni di
moltiplicazione o divisione
sono previste istruzioni per spostare il contenuto dei registri
LO e HI nei registri di tipo GPR
Esistono 32 registri per le operazioni floating point (virgola
mobile) indicati come :
$f0, …, $f31
Per le operazioni in doppia precisione si usano i registri
contigui:
$f0, $f2, $f4, …
10
5
Moltiplicazione/divisione
Registers
ALU 64 bit
HI
LO
11
Architettura MIPS: i registri
Il registro speciale PC (program counter)
contiene l'indirizzo dell'istruzione attualmente in esecuzione
(istruzione corrente)
per cambiare l'istruzione eseguita, cambiare il valore di PC
ha effetto dopo il completamento dell'istruzione corrente
di norma viene aggiornato implicitamente con l'indirizzo
dell'istruzione successiva
le istruzione di branch e jump modificano esplicitamente
il registro PC
Registro IR (Instruction register)
memorizza l’istruzione che il processore sta eseguendo
12
6
MIPS: ciclo fetch-execute
Le istruzioni di un programma sono eseguite dall'hardware MIPS
in un ciclo fetch-execute
preleva
(fetch)
preleva (fetch)
l'istruzione
l'istruzione dalla
dalla
memoria
memoria (la
(la parola
parola
riferita
riferita da
da PC)
PC)
decodifica
decodifica l'istruzione
l'istruzione ee
ne
determina
ne determina ilil tipo
tipo
esegue
esegue l'istruzione
l'istruzione
PC
PC <<- PC
PC ++ 44 (bytes)
(bytes)
13
Architettura MIPS : memoria
memoria
gli indirizzi sono formati da 32 bits
spazio indirizzabile da 0x00000000 a 0xFFFFFFFF
uno spazio indirizzabile di circa 4 giga bytes
i programmi possono accedere alla memoria con le istruzioni
load/store, appositamente previste dall'architettura MIPS
load (copia) un valore dalla memoria ad un registro GPR
store (copia) un valore da un registro GPR alla memoria
1, 2 o 4 bytes in alla volta
le istruzioni logico/aritmetiche non possono accedere alla
memoria (architettura LOAD/STORE)
14
7
Architettura MIPS: la memoria
0xFFFFFFFF
0x7FFFFFFF
Reserved for OS
Stack segment
Heap
Data segment
0x10000000
Text segment
0x00400000
0x00000000
Reserved for OS
15
$sp
7fff ffff
$gp
1000 8000
Architettura MIPS: la memoria
hex
Text segment
inizia all'indirizzo di memoria 0x00400000
Stack
Dynamic data
hex
1000 0000
hex
0040 0000
hex
Static data
Text
pc
Reserved
0
contiene il codice del programma utente
16
8
$sp
7fff ffff
$gp
1000 8000
Architettura MIPS: la memoria
hex
Stack
Data segment (segmento dati)
inizia all'indirizzo di memoria 0x10000000
Dynamic data
cresce verso lo stack (indirizzi crescenti)
suddiviso in:
pc
hex
1000 0000
hex
0040 0000
hex
Static data
Text
Reserved
0
dati statici del programma: dati la cui dimensione è
conosciuta al momento della compilazione e il cui intervallo
di vita coincide con l’esecuzione del programma.
Ad esempio
„
variabili globali
„
costanti di tipo string
dati dinamici: contiene dati ai quali lo spazio è allocato
dinamicamente al momento dell'esecuzione del programma
su richiesta del programma stesso.
17
$sp
7fff ffff
$gp
1000 8000
Architettura MIPS : la memoria
Stack segment
inizia all'indirizzo di memoria 0x7FFFFFFF
hex
Stack
Dynamic data
hex
1000 0000
hex
0040 0000
hex
Static data
Text
pc
Reserved
0
cresce espandendosi in basso verso il data segment
contiene lo stack del sistema
usato come memoria temporanea
variabili locali di funzioni
argomenti di funzione
indirizzi di ritorno
registri salvati
18
9
$sp
7fff ffff
$gp
1000 8000
Architettura MIPS : la memoria
Stack
hex
Dynamic data
System heap
hex
1000 0000
hex
0040 0000
hex
Static data
Text
pc
area compresa tra il data segment e lo stack segment
Reserved
0
è vuoto al inizio dell'esecuzione del programma
la memoria richiesta dinamicamente dal programma in
esecuzione è prelevata dall' heap e assegnata al programma
la memoria rilasciata dal programma ritorna all' heap
19
Bus di sistema
Permette la comunicazione tra le diverse unità del calcolatore ed è
generalmente composto da tre parti:
Bus dati, comprende le linee per trasferire dati e istruzioni
da/verso la memoria. In generale, la dimensione del bus dati è
tale da garantire il trasferimento contemporaneo di una o più
parole di memoria;
Bus indirizzi, su cui la CPU provvede a trasmettere l'indirizzo di
memoria da cui prelevare il dato nel caso di lettura dalla
memoria, oppure in cui depositarlo nel caso di scrittura nella
memoria;
Bus di controllo, dove transitano le informazioni ausiliarie per la
corretta definizione delle operazioni da compiere (per esempio
l'indicazione che si vuole effettuare una lettura piuttosto che
una scrittura) e per la sincronizzazione tra CPU e memoria.
20
10
Il simulatore SPIM
Esiste un ottimo simulatore dell'architettura MIPS (R2000)
gratuito
per diverse piattaforme (Unix, MS Windows, Macintosh)
facile da usare
dispone di interfaccia grafica
21
11