Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Alessandro Pellegrini
a.pellegrini@ing.uniroma2.it
Instruction Set Architecture (ISA)
3
Architettura di von Neumann rivisitata
4
I registri
5
I registri
6
Il modello di memoria
• La memoria è un nastro molto lungo, diviso in celle (modello di
memoria piatta)
• Ciascuna cella è identificata da un numero intero (indirizzo)
• Ogni gella ha una dimensione prefissata (un byte, tipicamente
composto da 8 bit)
• Una “testina virtuale” si muove sul nastro per leggere o scrivere dati
da/sulle celle (può essere effettuata solo una delle due operazioni alla
volta)
• Una cella viene necessariamente scritta nella sua interezza
7
Trasferimento dati: il BUS
8
Il processore z64: architettura di alto livello
9
Processamento delle istruzioni
10
Modelli di esecuzione
• Modello uniciclo
• Un’istruzione viene eseguita in un solo colpo di clock
• Il periodo di clock deve essere tarato per garantire che tutta la rete si
stabilizzi
• È necessario prevedere componenti hardware dedicate perché non è
possibile la condivisione delle componenti
• Ad esempio, se devo eseguire due somme differenti per eseguire
un’istruzione, avrò bisogno di due ALU
• Modello multiciclo
• Un’istruzione è eseguita in più colpi di clock
• Le componenti possono essere riutilizzate tra un ciclo ed il successivo 11
Ciclo istruzione, ciclo macchina, stato macchina
12
Semplice esempio di esecuzione di un’istruzione
• La semantica dell’istruzione è:
13
Semplice esempio di esecuzione di un’istruzione
15
Interconnessione tra registri
• Interconnessione diretta
• Semplice da implementare
• Difficoltà se è necessario interconnettere più registri tra loro
16
Interconnessione tra registri
• Vantaggi:
• semplice da implementare
• possibilità di trasferire più dati contemporaneamente
• Svantaggi:
• costo eccessivo dei multiplexer e delle linee di interconnessione
17
Interconnessione tramite BUS interno
18
Interconnessione tramite BUS interno
•
19
Instruction Pointer
20
Instruction Register
22
Esecuzione di un’istruzione
26
Interazione con la memoria
27
Interazione con la memoria
28
Interconnessione tra registri e circuiti di calcolo
• Le operazioni sono
realizzate dalla ALU e
dallo Shifter
• Questi devono poter
ricevere gli input dai
registri
• Si potrebbe usare un
insieme di multiplexer
• Problemi:
• costoso
• lettura/scrittura
sullo stesso registro
29
Interconnessione tra registri e circuiti di calcolo
30
Banco dei registri
•
31
Registro FLAGS
• ALU e Shifter sono reti iterative che emettono dei bit di stato
• Tale informazione deve essere memorizzata da qualche parte
• Si utilizza il registro fondamentale FLAGS
32
Registro FLAGS
35
Formato istruzioni macchina
36
Il campo Opcode
37
Il campo Mode
38
Il campo Mode
39
Modalità di indirizzamento in memoria
40
Il campo SIB (Scala, Indice, Base)
41
Codifica dei registri fisici
42
Registri virtuali
43
Registri virtuali
44
Registri virtuali: architettura rivisitata
.
.
.
45
Implementazione della modalità di indirizzamento
46
Lettura del registro MAR
47
Il campo R/M
49
Alcune istruzioni assembly
10 A0 00 03 00 00 00 00
51
Traduzione istruzioni assembly in linguaggio macchina
20 04 00 02 0A 00 00 00
52
Traduzione istruzioni assembly in linguaggio macchina
21 0D 80 02 AA AA 00 00 02 00 00 00 00 00 00 00
53
Traduzione istruzioni assembly in linguaggio macchina
10 F8 E1 60 CD AB 00 00
54
Memory Endianness: Ordine dei byte
55
Effetti della Little-Endianness
56
Effetti della Little-Endianness
58
Little-Endianness
59
Le istruzioni dello z64
Imm8
61
Lo Stack di programma
63
Classe 1: Istruzioni di movimento dei dati
64
popf: come supportarne l’esecuzione
• È necessario
permettere la
scrittura esplicita
del registro FLAGS
• Occorre quindi
aggiungere un
collegamento verso
il data bus interno
65
Estensioni del segno
67
Classe 2: Istruzioni logico/aritmetiche (2)
68
Aritmetica a precisione arbitraria
70
Classe 4: Manipolazione dei bit di FLAGS
71
Classe 5: Controllo del flusso di programma
72
Classe 6: Controllo condizionale del flusso
73
Architettura finale della PU
74