Corso di Laurea in Informatica
Architettura degli elaboratori
a.a. 2014-15
La macchina programmata
Instruction Set Architecture (1)
Schema base di esecuzione
Istruzioni macchina
Outline
• Componenti di un computer (“big picture”)
• Tre aspetti:
•
•
•
Cosa fa (“Istruction Set Architecture”, ISA)
Come si programma (Assembly language)
Come è fatto (circuiti e Datapath)
• Esecuzione di una istruzione
•
•
Schema di principio MOLTO semplificato (ma generale!)
Esempio: somma tra registri
• Esecuzione di un programma memorizzato
•
Ciclo elementare fetch/execute)
• Formato delle istruzioni
•
Esempio: istruzioni MIPS R-type
• Rappresentazione simbolica (Assembly)
•
Catena programmativa (cenni)
• Simulatori (emulatori): SPIM e MARS
A.A 2014 -15
ISA (1)
2
“The big picture”
Periferiche
Computer
Memory
Processor
Control
ALU
A.A 2014 -15
Input
Datapath
Output
ISA (1)
• Memorie di
massa
(“Storage”)
• Tastiera
• Mouse
• Touch screen
• Monitor
• Interfacce di
rete
• Sensori
• Attuatori
• ....
3
Processor: istruzione elementare su registri
Istruzione da eseguire
(codificata come insieme di bit)
(esempio):
R1 + R2 -> R3
Processor (CPU, Central Processing Unit)
Current instruction
Decodifica istruzione
Segnali di controllo
ai circuiti
Elaborazione
dei dati
Registers
R0
R1
R2
R3
Control Unit
Arithmetic
Logic
Unit
Rn
Flussi
dei dati
A.A 2014 -15
ISA (1)
4
Commenti sulla slide precedente
• E’ uno schema di principio ultra-semplificato …
• …ma cattura gli aspetti fondamentali del comportamento di un
processore (“Von Neumann Machine”)
• La sequenza delle operazioni è puramente logica
• A livello ISA “si vedono” Registri e Memoria (vedi seguito)
• Molte implementazioni possibili
• Hardware: circuiti combinatori e sequenziali
•
•
•
•
•
Vedere lezioni future su circuiti, Datapath etc.
Circuiti pilotati dal clock
Tempo di esecuzione di una istruzione: “almeno” un ciclo di clock
Frequenza del clock: ≈ 1 GHz = 109 Hz
Ragionare sugli ordini di grandezza dei tempi!!!
• Software: interprete (e.g. SPIM, Java virtual machine…)
• Memoria: un insieme di “celle”
•
Che contengono bit...
•
interpretabili in modi diversi (Dati o istruzioni)
A.A 2014 -15
ISA (1)
5
Da dove arrivano le istruzioni? (Fetch/execute)
Indirizzo in memoria
della prossima istruzione
da eseguire
Incremento PC
per puntare alla
istruzione successiva
Memory Address
Processor
Memory
Program Counter
00100111101111011111111111100000
10101111101111110000000000010100
10101111101001000000000000100000
10101111101001010000000000100100
10101111101000000000000000011000
10101111101000000000000000011100
10001111101011100000000000011100
10001111101110000000000000011000
00000001110011100000000000011001
00100101110010000000000000000001
00101001000000010000000001100101
10101111101010000000000000011100
00000000000000000111100000010010
00000011000011111100100000100001
00010100001000001111111111110111
10101111101110010000000000011000
00111100000001000001000000000000
10001111101001010000000000011000
00001100000100000000000011101100
00100100100001000000010000110000
10001111101111110000000000010100
00100111101111010000000000100000
00000011111000000000000000001000
00000000000000000001000000100001
Le istruzioni stanno in memoria
“una dopo l’altra”
(di solito…)
Current instruction
Control
Registers
Esecuzione istruzione
(vedi slide precedente)
ALU
Memory Content
Bisogna aspettare un po’
A.A 2014 -15
ISA (1)
6
Commenti:
• Registri di CPU:
•
•
•
•
•
dentro il processore
pochi (p. es. 32)
veloci (coincide con il clock)
costosi
NB: questi sono quelli che si chiamano di solito “Registri”
• Memoria
•
•
•
•
grande (p. es. 1GB = 1000000000 byte
(relativamente) lenta (alcuni cicli di clock)
mediamente costosa
NB: anche la memoria è un insieme di registri, chiamati di solito “celle” o
“locazioni”
• Memoria di massa (“Storage”)
•
•
•
•
•
E’ una periferica
molto grande (da 100 GigaB a TeraByte)
lenta (Millisecondi)
poco costosa
persistente
A.A 2014 -15
ISA (1)
7
Filosofie di progetto della CPU
• RISC (Reduced Instruction Set Computing)
•
•
•
•
•
Poche istruzioni semplici
Struttura circuitalmente semplice
Esecuzione veloce di una singola istruzione
Occorrono più istruzioni per fare cose anche semplici
Esempio: MIPS, ARM, PowerPC…
• CISC (Complex Instruction Set Computing
•
•
•
•
•
Istruzioni complesse
Struttura circuitalmente complicata
Esecuzione più lenta di una singola istruzione
Occorrono meno istruzioni
Esempio: Intel x86 e tutti I derivati (Pentium etc.)
• Nel seguito del corso: MIPS (come esempio!)
•
SPIM = simulatore sw di MIPS
•
MARS = simulatore sw di MIPS
• versioni per diversi sistemi (Windows, Mac, Linux)
A.A 2014 -15
•
Scritto in Java (portabile su diversi sistemi)
ISA (1)
8
Architettura MIPS e linguaggio macchina
•
•
•
•
•
•
•
•
RISC: semplice, uniforme e facile (?) da capire
32 registri di 32 bit
Istruzioni di 32 bit
Quali operazioni devono essere rappresentate dalle istruzioni?
Manipolazioni di dati solo sui registri
Trasferimento di dati tra memoria e registri
Alterazione del flusso di controllo (“salti”)
Problema architetturale:
•
•
come esprimere tutti I tipi di operazioni in 32 bit…
…mantenendo il più possibile omogenea la struttura delle istruzioni?
• Tre formati delle istruzioni
•
•
•
•
R-type
I-type
J-type
Attenzione: I tre formati non coincidono esattamente con le tre tipologie di
operazioni
A.A 2014 -15
ISA (1)
9
Istruzione R-Type
quello che si vuole fare (in italiano)
numeri decimali (per comodità)
“somma i contenuti del registro 8 e del registro 9 e metti il risultato nel registro 10”
rs
op
(operation code)
tipo operazione
000000
6 bits
rd
rt
primo
registro
sorgente
secondo
registro
sorgente
funct
shamt
registro
destinazione
shift
variante della
operazione
00000
100000
5 bits
6 bits
01000
01001
01010
5 bits
5 bits
5 bits
I bit che sono in memoria e sono trasferiti a UC
00000001000010010101000000100000
L’Unità di Controllo “sa” come interpretare
i singoli campi
0000 0001 0000 1001 0101 0000 0010 0000
gli stessi spacchettati in quartetti
(il computer “non lo sa”)
0x
1
0
A.A 2014 -15
9
5
0
2
0
rappresentazione esadecimale
utile (ahimè) per gli umani
ISA (1)
10
Formato simbolico (assembly)
• Un formato un po’ più comodo
• “linguaggio sorgente” (un programma è un testo)
• add $10, $8, $9
•
•
•
codici operativi simbolici
nomi simbolici di registri ($xxx)
nomi simbolici di variabili (che diventeranno indirizzi)
• (attenzione all’ordine degli operandi…)
• usato da chi programma
• qualcuno (eg un programma assemblatore) traduce da sorgente
a eseguibile
• quello che viene caricato in memoria ed eseguito è sempre
l’eseguibile (codice macchina)
• Il simulatore si occupa anche di queste cose, ma non facciamo
confusione fra linguaggio sorgente e linguaggio macchina!!!
A.A 2014 -15
ISA (1)
11
Scarica

Slides_14-15_ISA1_FT_V2 - e