Processore Struttura schematica di un calcolatore Il processore

Processore
Struttura schematica di un
calcolatore
Central processing unit (CPU)
Presentazione a livelli del calcolatore:
dopo porte logiche, circuiti base e memorie,
esaminiamo il:
Control
unit
Processore (CPU - Central Processing Unit): cuore
del calcolatore, l’unità che esegue le istruzioni
macchina (cap. 2 e 4).
Arithmetic
logical unit
(ALU)
I/O devices
Registers
Processore
1 / 81
Main
memory
…
(Architettura degli Elaboratori)
…
Nel seguito le altre componenti del calcolatore: bus,
I/O, memoria di massa.
(Architettura degli Elaboratori)
Il processore (CPU)
A
istruzione macchina;
• decode: determina il tipo di istruzione e i suoi
argomenti;
• execute: esegui l’istruzione:
recupera gli argomenti, esegui un operazione,
memorizza i risultati;
• ripete il ciclo.
B
A
2 / 81
ALU input register
ALU input bus
ALU
A+B
3 / 81
(Architettura degli Elaboratori)
ALU output register
Processore
4 / 81
Micro-operazione
L’operazione eseguibile dal data path in un singolo
ciclo di clock.
Formata da:
Azioni eseguibili da una micro-operazione:
• una singola operazione aritmetica-logica (i cui
argomenti e risultato risiedono nei registri).
• una comunicare con la memoria (richiesta di
lettura o scrittura di una locazione)
Un’istruzione macchina viene eseguita mediante
una o più micro-operazioni.
• una serie di registri (memorie),
• un’unità aritmetica e logica (ALU),
• dei bus di collegamento.
Può eseguire micro-operazioni.
Processore
5 / 81
(Architettura degli Elaboratori)
Unità di controllo
• Esamina l’istruzione corrente, contenuta
Instruction Register (IR).
• Invia segnali di lettura e scrittura ai registri.
• Invia segnali di controllo alla ALU.
• Gestisce la comunicazione con la memoria
principale.
Processore
Processore
6 / 81
Realizzazione
Il funzionamento del data path viene regolato,
mediante segnali, dall’unità di controllo.
Circuito sequenziale che regola il funzionamento del
processore.
(Architettura degli Elaboratori)
Bus
Registers
B
Data Path
(Architettura degli Elaboratori)
Processore
A+B
• fetch: preleva un’istruzione dalla memoria
Processore
Printer
Componenti processore:
Data Path
Compito del processore: eseguire il ciclo
fetch-decode-execute;
(Architettura degli Elaboratori)
Disk
7 / 81
Due alternative:
• cablata: si realizza un circuito sequenziale
classico;
• micro-programmata: il controllo è un piccolo
calcolatore capace di eseguire un
micro-programma.
(Architettura degli Elaboratori)
Processore
8 / 81
Dicotomia: cablata programmata
Un po’ di storia
I primi processori: poche istruzioni, logica cablata.
Le stessa funzionalità possono essere implementate
mediante:
• hardware (logica cablata): più complicata e
costosa da realizzare, ma offre prestazioni
migliori;
• software (logica programmata): più semplice e
flessibile, ma più lenta.
Diversi esempi di questa dicotomia: le istruzioni
grafiche, l’elaborazione dei segnali, . . .
(Architettura degli Elaboratori)
Processore
9 / 81
Anni 70
Processore
(Architettura degli Elaboratori)
Processore
10 / 81
Anni 80, processori RISC
Le potenzialità della micro-programmazione vengo
sfruttate al massimo.
• Linguaggi macchina sempre più sofisticati, vicini
ai linguaggi di programmazione standard.
• Il calcolatore apice di questa filosofia: VAX
(Digital DEC).
• Motivazioni tecnologiche: all’epoca i
control-store (la memoria micro-programma)
sono molti più veloci della memoria principale
(RAM).
(Architettura degli Elaboratori)
Anni 50:
• prime unità di controllo micro-programmato,
permette la costruzione di calcolatori economici
ma con un ricco insieme di istruzioni.
• calcolatori con maggiori presazioni usano la
logica cablata.
• Si costruiscono calcolatori molto diversi per
prestazioni e costi con lo stesso insieme di
istruzioni. (IBM 360)
11 / 81
I primi RISC
Si cambia rotta: poche istruzioni, logica cablata
• le istruzioni complesse non sono così utili
• istruzioni semplici molto più veloci;
• si possono utilizzare controlli cablati;
• la velocità della RAM si avvicina a quella del
control-store
(Architettura degli Elaboratori)
Processore
12 / 81
Anni 90, diatriba: RISC –
CISC
Reduced Instruction Set Computer
• 801 (IBM),
• CPU-RISC (Patterson - Berkley) ⇒ Sparc,
• MIPS (Hennesey - Stanford),
• Alpha (Digital), PowerPC (Motorola, IBM), ARM,
Complex Instruction Set Computer.
• Tutti i processori di nuova concezione sono
RISC.
• Ma i processori usati nei PC: architettura Intel
x86, (IA-32), sono CISC.
• Motivi: compatibilità con il software preesistente,
non si vogliono riscrivere i programmi (il codice).
(Architettura degli Elaboratori)
Processore
13 / 81
(Architettura degli Elaboratori)
Attualmente
Processore
14 / 81
RISC – CISC
La contrapposizione RISC – CISC è più sfumata.
• La legge di Moore ha portato alla creazione di
processori RISC con insiemi di istruzioni
sempre più ampi.
• Il processori CISC (IA-32) usano al loro interno
un cuore RISC,
istruzioni semplici, più comuni: eseguite
direttamente,
• istruzioni più complesse: scomposte in più istruzioni
semplici,
• istruzioni sofisticate: eseguite mediante
micro-programma.
•
(Architettura degli Elaboratori)
Processore
15 / 81
• In linea di principio, i processori RISC sono
preferibili,
• le architetture CISC hanno uno svantaggio del
(20-30%),
• per i processori x86, lo svantaggio è
compensato dalle economie di scala (vengono
prodotti in gran numero).
(Architettura degli Elaboratori)
Processore
16 / 81
I processori nel libro di
testo
I processori nel libro di
testo
Per illustrare con maggior dettaglio il funzionamento
dei processori,
• Pro: un esempio pratico, consistente con il
si mostra un esempio concreto di progettazione di
un processore.
• Contro: presentazione lunga, molti dettagli
Più precisamente: si mostra come costruire
processore (Mic)
che eseguire istruzioni del Java bytecode:
si realizza la Java Virtual Machine (JVM)
Approccio per esempi e bottom-up: prima
descrizione delle componenti, poi quadro di insieme.
(Architettura degli Elaboratori)
Processore
17 / 81
resto.
tecnici, difficile comprensione, linguaggio
macchina non standard.
• A lezione presentazione più superficiale:
descrizione dei principi, pochi dettagli.
Argomenti affrontati in un ordine diverso.
• Problema: meno correlazione col libro di testo,
non esiste un insieme di pagine che sia
completo, autosufficiente e non sovrabbondante
(Architettura degli Elaboratori)
Processore
18 / 81
(molti più argomenti di quelli presentati a
lezione).
Premessa: i compilatori
Java
Un programma ad alto livello (Java, C, C++,
Scheme, Pascal, . . . ) deve essere tradotto in
linguaggio macchina (istruzioni eseguibili dal
calcolatore).
Java si propone come il linguaggio per le
applicazioni in rete.
I programmi Java devono poter migrare nella rete:
• codice compilato non ha questa possibilità, è
specifico ad una particolare architettura
(processore – sistema operativo),
inoltre: problemi di sicurezza;
• il codice sorgente non può essere spostato in
maniera efficiente.
Due alternative:
• compilatore: programma traduttore, dal
programma sorgente genere un programma
macchina equivalente.
• interprete: programma interprete, legge il
programma sorgente e lo esegue direttamente
(non genera codice intermedio).
(Architettura degli Elaboratori)
Processore
19 / 81
(Architettura degli Elaboratori)
Java Virtual Machine, JVM
Processore
21 / 81
Programmi Java compilati in Java bytecode,
eseguibile da ogni calcolatore mediante la
Java Runtime Environment (JRE), composto da:
• JVM (programma interpretare il Java bytecode);
• librerie.
Vantaggi, svantaggi,
• vantaggi: codice universale, compatto, con
meccanismi di protezione;
• svantaggi: minore efficienza rispetto alla
compilazione diretta
(mitigata dai compilatori just-in-time).
(Architettura degli Elaboratori)
Processori Mic (1,2,3,4)
22 / 81
Simili, per molti aspetti, ai linguaggi macchina.
Alcune differenze importanti:
• meccanismi di protezione contro codice
malevolo;
• compatto, istruzioni lunghe un byte (+ un
eventuale argomento di 1-2 byte);
• primitive object-oriented (chiamate dei metodi).
Esistono delle vere implementazioni, de
• picoJava (Sun Microsystems),
• ARM926EJ-S, (architettura ARM estesa con il
Java bytecode),
Processore
Processore
Java bytecode
Implementazione hardware, cablata (non virtuale o
programmata) della JVM.
Mic è un processore capace di eseguire un
sottoinsieme del Java bytecode.
Progetto didattico, non esistono implementazioni.
(Architettura degli Elaboratori)
20 / 81
Java bytecode
Soluzione:
• viene definito un codice intermedio (tra Java e il
linguaggio macchina): Java bytecode,
• viene definita un macchina virtuale la Java
Virtual Machine (JVM),
capace di eseguire programmi scritti in Java
bytecode,
macchina virtuale: implementata, via software,
su diverse piattaforme (processore, sistema
operativo),
livello Java bytecode
(Architettura degli Elaboratori)
Processore
Per semplicità, i processori Mic implementano un
piccolo sottoinsieme del Java bytecode.
23 / 81
(Architettura degli Elaboratori)
Processore
24 / 81
Il modello di memoria
Il modello di memoria
Memoria standard processori, monolitica, uno
stesso spazio per programmi e dati.
Memoria della JVM è divisa in quattro parti.
• area del codice (programmi)
• area delle costanti (dati utilizza dai programmi)
• stack delle variabili locali
• stack degli operandi (dati su cui eseguire
operazioni)
(Architettura degli Elaboratori)
Processore
25 / 81
(Architettura degli Elaboratori)
Stack delle variabili
Processore
26 / 81
Stack degli operandi
• Usato per gestire le chiamate di procedura
• JVM non è una macchina a registri (come quasi
(metodi).
• Ogni procedura ha le sue variabili, spazio di
memoria.
• Questi spazi gestiti come una pila.
Ad ogni chiamata di procedura si alloca uno
spazio.
Spazio recuperato quando la procedura termina.
tutti i processori).
Le operazioni aritmetiche logiche non fanno
riferimento ai registri interni, ma ad uno:
• Stack degli operandi. Pila su cui:
(Architettura degli Elaboratori)
Processore
27 / 81
•
•
inserire o prelevare word, (sequenze di 32 bit)
eseguire operazioni sugli ultimi dati inseriti.
Esempio la JVM valuta l’espressione
(3 + 5) × (4 + 2) in ...
(Architettura degli Elaboratori)
I-Java bytecode
Un semplice processore per il Java bytecode.
Funzionamento:
• ad ogni ciclo di clock il data path può eseguire
semplici operazioni, o spostare dati
(micro-istruzione)
• un’istruzione del Java bytecode viene realizzata
mediante una sequenza di micro-istruzioni,
• sequenza composta da diverse parti:
fetch-decode-execute.
IOR, ISUB, IINC vn con.
• Operazioni trasferimento dati, da e per la
memoria: ILOAD vn, ISTORE vn, LDC_W i,
(DUP, POP, SWAP, BIPUSH b).
• Operazioni per il controllo del flusso
dell’esecuzione:
GOTO, IFEQ os, IFLT os, IF_ICMEQ os,
Chiamate di metodi: INVOKEVIRTUAL d,
IRETURN,
• Altro: NOP, WIDE
Processore
28 / 81
Il processore Mic-1
• Operazioni aritmetiche e logiche: IADD, IAND,
(Architettura degli Elaboratori)
Processore
29 / 81
(Architettura degli Elaboratori)
Mic-1: data path
Processore
30 / 81
Unità aritmetica-logica
(ALU)
Componente di ogni processore,
può eseguire le operazioni aritmetiche e logiche:
• Ingressi:
•
•
due argomenti: 32, 64 bit;
codifica operazione da eseguire.
• Uscite:
• risultato: 32, 64 bit;
• bit di condizione: segno, zero, overflow.
(Architettura degli Elaboratori)
Processore
31 / 81
(Architettura degli Elaboratori)
Processore
32 / 81
Unità aritmetica-logica
(ALU)
ALU da un bit
Logical unit
MIC1 usa una semplice ALU:
• implementa poche operazioni: AND, OR, NOT,
somma, sottrazione, incremento, decremento 1,
opposto.
• Operazioni eseguite bit per bit (locali): ALU
scomposta in unità elementari, ciascuna
operante su una coppia di bit.
• segnali di controllo: selezionano l’operazione da
svolgere, abilitano o meno gli ingressi,
forniscono il riporto per le cifre meno
significative.
(Architettura degli Elaboratori)
Processore
33 / 81
AB
INVA
A
ENA
B
ENB
A+B
Sum
Enable
lines
F0
Full
adder
F1
Decoder
Carry out
(Architettura degli Elaboratori)
Processore
A7 B7
A6 B6
A5 B5
A4 B4
A3 B3
A2 B2
A1 B1
A0 B0
1-bit
ALU
1-bit
ALU
1-bit
ALU
1-bit
ALU
1-bit
ALU
1-bit
ALU
1-bit
ALU
1-bit
ALU
O7
O6
O5
O4
O3
O2
O1
O0
Oltre alle ovvie:
• A + B + 1, somma con Carry in = 1
INC
• A + 1, somma con ENB = 0, Carry in = 1
• B − A, somma con INVA = 1, Carry in = 1
• B − 1, somma con ENA = 0, INVA = 1
Carry
out
• −A, somma con ENB = 0, INVA = 1,
Mic 1 contiene una ALU a 32 bit.
(Architettura degli Elaboratori)
Processore
Carry in = 1
35 / 81
(Architettura degli Elaboratori)
Processore
Registri (specializzati)
•
•
•
•
MDR: Memory Data Register;
comunicazione memoria dati;
PC: Program Counter,
MBR: Memory Bytecode Register;
comunicazione memoria codice;
SP: Stack Pointer, TOS: Top Of Stack;
stack degli operandi;
LV: Local Variable; puntatore stack variabili;
CPP: Constant Pool Pointer; punt. costanti;
OPC, H: registri ausiliari.
(Architettura degli Elaboratori)
Processore
36 / 81
Esempio di
implementazione
• MAR: Memory Address Register,
•
34 / 81
Funzione calcolabili dalla
ALU
ALU completa formata da un sequenza di ALU a 1
bit
Carry
in
Output
B
ALU da 8-32 bit
F1 F0
Carry in
L’istruzione IADD viene realizzata dalla sequenza di
micro-istruzioni:
• Main1: PC = PC + 1; fetch; goto (MBR)
• iadd1: MAR=SP=SP-1; rd
• iadd2: H = TOS
• iadd3: MDR=TOS=MDR+H; wr; goto Main1
Le altre istruzioni implementate in maniera analoga.
37 / 81
(Architettura degli Elaboratori)
Processore
Circuito di controllo
38 / 81
Circuito di controllo
Memory control signals (rd, wr, fetch)
3
4
Micro-programmato. Formata da memoria ROM
(contiene il micro-codice), 2 registri, un multiplexer.
4-to-16
Decoder
MAR
MDR
MPC
O
8
MBR
• semplice sia il circuito che la progettazione
SP
512 × 36-Bit
control store
for holding
the microprogram
9
LV
• relativamente lento
JMPC
CPP
Processore
Addr
J
ALU
C
MIR
M B
TOS
Micro-istruzioni di 36 bit
• in parte segnali di controllo,
• in parte determinano la prossima
micro-istruzione,
(Architettura degli Elaboratori)
9
PC
JAMN/JAMZ
OPC
H
B bus
2
1-bit flip–flop
N
6
ALU
control
High
bit
ALU
Control
signals
Enable
onto
B bus
Z
Shifter
C bus
39 / 81
(Architettura degli Elaboratori)
2
Write
C bus
to register
Processore
40 / 81
Circuito di controllo:
Control store
(Architettura degli Elaboratori)
Processore
Circuito di controllo
Invia:
• ai registri i segnali di lettura e scrittura;
• alla memoria le istruzioni: read, write, fetch;
• alla ALU il codice dell’istruzione da eseguire.
Determina micro-istruzione successiva via:
• MBR (prima micro-istruzione nelle esecuzione
di un istruzione macchina);
• la micro-istruzione corrente (micro-istruzioni
successive);
• in alcuni casi, il primo bit dell’indirizzo
determinato dall’uscita della ALU (per poter
implementare i salti condizionati).
41 / 81
(Architettura degli Elaboratori)
Processore
Prestazioni
42 / 81
Miglioramento delle
prestazioni
Due metodi:
• Utilizzare istruzioni macchina più potenti, e
flessibili.
Esempi:
MIC-1, processore (relativamente) completo ma
inefficiente (molto più semplice dei processori
attuali).
Processori Intel x86: 8086 (1978) – 80286 – 386
(1985) – MMX — 3DNow — x86-64 (2000) — AVX;
• ARM: ARMv1 — . . . — ARMv8;
• MIPS: R2000 — R3000 — R4000;
• IJVM → JVM.
•
Prestazioni: computazione eseguibile nell’unita di
tempo.
• Eseguire più istruzione nell’unità di tempo
(Architettura degli Elaboratori)
Processore
43 / 81
(Architettura degli Elaboratori)
Più istruzioni al secondo
Processore
Aumentare la potenza di calcolo del data path,
micro-istruzioni più potenti.
• ALU con più operazioni,
• più registri disponibili,
• più possibilità di scambio dati (3 bus distinti)
• un’unità separata per il caricamento delle
istruzioni: Instruction Fetch Unit (IFU)
45 / 81
(Architettura degli Elaboratori)
Secondo progetto MIC-2
To
and
from
main
memory
Processore
Ridurre il ciclo di clock
MDR
Registers loaded
instantaneously from
C bus and memory on
rising edge of clock
PC
Instruction
fetch unit
(IFU)
46 / 81
Segnale di clock abilita la scrittura dei registri.
Periodo di clock dato dalla somma dei ritardi.
Memory
control
registers
MAR
44 / 81
Più computazione per ciclo
di clock
Il funzionamento della CPU scandito da un clock,
• diminuire il numero di micro-istruzioni (cicli di
clock) necessari per eseguire un’istruzione
macchina;
aumentare la computazione svolta nel ciclo di
clock:
• ridurre il ciclo di clock.
(Architettura degli Elaboratori)
Processore
Shifter
output
stable
MBR
MBR2
Cycle 1
starts
here
SP
LV
Control signals
Clock cycle 1
Clock cycle 2
CPP
Enable onto B bus
New MPC used to
load MIR with next
microinstruction here
TOS
Write C bus to register
C bus
∆w
OPC
∆x
∆y
∆z
B bus
H
A bus
ALU
control
6
ALU
Set up
signals
to drive
data path
N
Z
Shifter
ALU
and
shifter
Drive H
(Architettura degli Elaboratori)
Processore
47 / 81
(Architettura degli
Elaboratori)
and
Propagation
from shifter
MPC
available
here
Processore
48 / 81
Ridurre il ciclo di clock
Architettura più veloce
Velocizzare il data-path:
• circuito di controllo cablato,
Due modi:
• migliorare la tecnologici nei circuiti integrati:
transistor più veloci,
• migliorare la strutture dei circuiti: realizzare
circuiti con meno ritardi (a parità di tipo di
transistor impiegati).
(Architettura degli Elaboratori)
• ALU e circuiti combinatori più veloci, (un intero
settore di ricerca):
l’ALU presentata nel testo particolarmente
inefficiente.
• esecuzione parallela, spezzare l’esecuzione
della micro-operazione in più stadi: la tecnica
della pipeline
Processore
49 / 81
(Architettura degli Elaboratori)
Processore
Terzo progetto: Mic-3
Mic-3 – Pipeline
Memory
control
registers
MAR
To
and
from
main
memory
50 / 81
MDR
PC
Instruction
fetch unit
(IFU)
Pipeline:
• l’esecuzione della micro-operazione viene divisa
in più stadi
• ogni stadi eseguito più rapidamente
• i diversi stadi eseguiti in contemporanea su più
istruzioni
MBR1
MBR2
SP
LV
Control signals
CPP
Enable onto B bus
TOS
Write C bus to register
OPC
C bus
B bus
H
A bus
C latch
A latch
ALU
control
B latch
6
N
Z
ALU
Shifter
(Architettura degli Elaboratori)
Processore
51 / 81
(Architettura degli Elaboratori)
Pipeline – Paragoni
Processore
53 / 81
La catena di montaggio:
il lavoro viene scomposto in fasi, ognuna eseguita da
un dispositivo specifico,
si svolgono le diverse fasi, su componenti diverse, in
parallelo.
In un processore si parallelizza l’esecuzione delle
micro-operazioni, (ciclo di clock);
si migliora la banda passante ma non i tempi di
risposta.
Tecnica
in tutti Processore
i processori. In ambito Intel:54 / 81
(Architettura degliutilizzata
Elaboratori)
dal 486 in poi (1989).
Esempio di scomposizione:
Altro esempio:
S1
S2
S3
S4
S5
Instruction
fetch
unit
Instruction
decode
unit
Operand
fetch
unit
Instruction
execution
unit
Write
back
unit
(a)
S1:
1
S2:
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
S3:
1
S4:
S5:
1
(Architettura degli Elaboratori)
2
3
2
3
4
5
6
7
1
2
3
4
5
6
1
2
3
4
5
6
7
8
9
4
5
Time
(b)
Processore
52 / 81
La pipeline, secondo
paragone.
Possibile paragone preso dalla vita comune, una
lavanderia:
vestiti da lavare
micro-operazioni
lavaggio
acquisire i dati di ingresso
asciugatura
calcolo del risultato
stiratura
memorizzazione del risultato
Le varie fasi di lavoro sono portata avanti in parallelo.
(Architettura degli Elaboratori)
Processore
1
2
3
4
5
6
7
IFU
Decoder
Queue
Operands
Exec
Write
back
Memory
Processori diversi usano scomposizioni, strutture
della pipeline, diverse.
Lunghezza tipica di una pipeline: 7–14 stadi.
Caso limite Pentium IV: 20 stadi di pipeline (guerra
dei GHz).
…
55 / 81
(Architettura degli Elaboratori)
Processore
56 / 81
Processori superscalari
Processori superscalari
Aumentano ulteriormente il parallelismo:
istruzioni
si migliora il rapporto cicli
di clock ,
• I primi stadi (singoli) prelevano più istruzioni
Iniziano contemporaneamente l’esecuzione di più
istruzioni: più pipeline operanti in parallelo.
S1
Instruction
fetch
unit
S2
S3
S4
S5
Instruction
decode
unit
Operand
fetch
unit
Instruction
execution
unit
Write
back
unit
Instruction
decode
unit
Operand
fetch
unit
Instruction
execution
unit
Write
back
unit
(Architettura degli Elaboratori)
Processore
57 / 81
Esempio: processore
SPARC
Fetch
Decode
N1
N2
Group
N3
Register
X1
Processore
58 / 81
Processori superscalari possono, potenzialmente,
eseguire decine di istruzioni contemporaneamente.
Integer pipeline
Cache
(Architettura degli Elaboratori)
Problemi del parallelismo
Pipeline specializzate.
Execute
dalla memoria, e le decodificano.
• Le istruzioni smistate su stadi successivi
multipli.
• Spesso, uno stadio finale singolo che termina, in
ordine, le istruzioni.
X2
Write
Due fenomeni impediscono un completo
sfruttamento del parallelismo.
• Dipendenza tra istruzioni.
X3
• Istruzioni di salto.
Floating-point/graphics pipeline
Attualmente processori con 4-15 pipeline, decine di
micro-istruzione in contemporanea.
(Architettura degli Elaboratori)
Processore
59 / 81
Dipendenza tra istruzioni:
Gestire la dipendenza tra
istruzioni
60 / 81
Le dipendenze vengono rilevate mediante una
tabella delle dipendenze (scoreboard):
memoria interna al processore che conta
per ogni registro,
le operazioni, di lettura e scrittura, in sospeso su
quel registro.
Le istruzioni dipendenti devono essere sospese:
decadimento delle prestazioni, eseguiamo meno
operazioni di quelle teoricamente possibili.
Si creano bolle, zone inattive, nella pipeline.
(Architettura degli Elaboratori)
Processore
62 / 81
Istruzioni di salto
condizionato
Tecniche per recuperare le prestazioni perse:
• esecuzione fuori ordine: si mandano in
esecuzione le istruzioni non dipendenti;
• registri ombra: si usano copie di registri su cui
memorizzare temporaneamente i dati;
• register renaming: si usano nuovi registri, non
specificati dal codice.
• multi-threading (hyper-threading): si eseguono
più programmi contemporaneamente,
necessario duplicare i registri. Primo passo
verso processori multicore.
Processore
Processore
Dipendenza tra istruzioni
In un programma le istruzioni sono stato pensate per
essere eseguite in ordine.
Un’esecuzione parallela, senza controlli, può portare
a risultati scorretti. Tre casi:
• RAW Read After Write:
R0 = R1
R2 = R0 + 1
• WAR Write After Read:
R1 = R0 +1
R0 = R2
• WAW Write After Write:
R0 = R1
(Architettura degli Elaboratori)
Processore
61 / 81
R0 = R2 + 1
(Architettura degli Elaboratori)
(Architettura degli Elaboratori)
63 / 81
Problematiche per i processori con pipeline:
• il processore impiega alcuni cicli di clock per
valutare la condizione,
• nel frattempo, non sa quali istruzioni eseguire.
Due possibili soluzioni:
• stall non si inizia alcuna istruzione: corretta ma
con decadimento delle prestazioni;
• si fa una predizione di salto: taken, not taken, si
inizia l’esecuzione condizionata di alcune
istruzioni:
esecuzione annullata
se la previsione si rivela 64 / 81
(Architettura degli Elaboratori)
Processore
Tecniche per la predizione
di salto
Esecuzione Speculativa:
Due classi:
• predizione statica, sul codice:
•
•
semplice: si eseguono i salti indietro,
suggerite dal compilatore, programmatore: istruzioni
di salto con suggerimento,
• predizione dinamica, sull’esecuzione:
viene usata una history table (ricorda il
comportamento passato di alcune istruzioni di
salto, poche istruzioni, pochi bit),
In un programma numerose istruzioni di salto: una
buona predizione di salto è fondamentale per le
prestazioni.
(Architettura degli Elaboratori)
Processore
65 / 81
nel caso di salto condizionato,
non si tenta la predizione ma
si eseguono entrambe le possibili continuazioni del
programma.
Pur di alimentare il processore, si eseguono anche
alcune istruzioni che sicuramente verranno scartate.
Problemi:
• l’esecuzione deve essere reversibile: registri
ombra, istruzioni che generano trap,
• evitare l’esecuzione di istruzioni costose:
SPECULATIVE LOAD.
(Architettura degli Elaboratori)
Esecuzione Speculativa
evensum = 0;
evensum = 0;
oddsum = 0;
oddsum = 0;
i = 0;
i >= limit
La differenza di velocità tra processore e memoria è
aumenta col tempo.
while (i < limit)
k = i * i * i;
k = i * i * i;
if ((i/2) * 2) = = 0)
if ((i/2) * 2) == 0)
T
evensum = evensum + k;
L’accesso in memoria operazione costosa:
il processore deve attendere il dato
per più di una decina di cicli di clock.
F
evensum = evensum + k;
else
66 / 81
La memoria principale
troppo lenta
i = 0;
while (i < limit) {
Processore
oddsum = oddsum + k;
oddsum = oddsum + k;
i = i + 1;
i = i + 1;
Memoria Cache: memoria piccola e veloce:
contiene i dati utilizzati più frequentemente.
}
(a)
(b)
(Architettura degli Elaboratori)
Processore
67 / 81
(Architettura degli Elaboratori)
Processore
La memoria cache
68 / 81
Cache a più livelli
Aumenta il divario di velocità tra CPU RAM;
per evitare cache miss troppe costose, un secondo
livello di cache:
• più ampio
• tecnologia meno costosa
• più lento
• contiene un sovrainsieme della memoria di
primo livello
Spesso sono presenti 3 livelli di cache.
Funzionamento:
• prima si cerca il dato in cache (cache hit),
• in caso di fallimento (cache miss): si carica il
dato in cache dalla memoria principale.
Migliori prestazioni solo con numerosi cache hit.
Esempio - Sandy Bridge: livello 1: 32KB; livello 2:
256KB, livello 3: 1–20MB;
(Architettura degli Elaboratori)
Processore
69 / 81
(Architettura degli Elaboratori)
Split cache
l’IFU accede alle istruzioni
l’unità Dispatch/Execute accede ai dati
CPU
package
CPU chip
L1-I
Processor
board
L1-D
Unified
L2
cache
Keyboard
controller
Unified
L3 cache
Graphics
controller
Split L1 instruction and data caches
(Architettura degli Elaboratori)
Processore
70 / 81
Esempio di configurazione
cache divisa in due parti: dati e istruzioni
• normalmente cache L1 (di primo livello)
• permette di parallelizzare l’accesso in memoria
•
•
Processore
71 / 81
(Architettura degli Elaboratori)
Processore
Main
memory
(DRAM)
Disk
controller
Board-level cache (SRAM)
72 / 81
Valutazione delle
prestazioni
CPU Corei-7, Architett.
Sandy-Bridge
Le velocità di un calcolatore con processore
superscalare dipende fortemente da quanto viene
sfruttato il potenziale parallelismo:
• percentuale delle istruzioni non bloccate per
dipendenze,
• percentuale di predizioni di salto corrette,
• percentuale cache hit.
Queste percentuali difficilmente valutabili a tavolino,
dipendono dal tipo di programmi eseguiti.
Una corretta valutazione delle prestazione può
essere
fatto solo tramiteProcessore
test.
(Architettura degli Elaboratori)
73 / 81
Architettura Sandy Bridge
(Architettura degli Elaboratori)
Processore
• multicore, hyper-threading;
• processore CISC con cuore RISC;
• i primi stadi della pipeline traducono codice
CISC in istruzioni RISC,
depositate nella cache L0;
più simile al Pentium II (P6) che al Pentium 4;
risparmio energetico;
predizione di salto sofisticata (algoritmo segreto)
controllore memoria, cache L3 (condivisa) e
processore grafico integrati nello stesso chip;
• nuove istruzioni grafiche AVX (Advanced Vector
(Architettura degli Elaboratori)
Processore
74 / 81
Extensions);
•
•
•
•
•
Sandy Bridge, pipeline
75 / 81
(Architettura degli Elaboratori)
Sandy bridge, chip
Processore
76 / 81
Architettura Cortex A9
• Progettata ARM ltd, realizzata da vari
costruttori;
• core che viene integrato in SoC (System on
Chip), (calcolatori su un singolo chip)
• implemeta istruzione ARMv7
• strutturalmente abbastanza simile al Sandy
Bridge,
• manca lo stadio iniziale di traduzione istruzioni
CISC -> RISC.
(Architettura degli Elaboratori)
Processore
77 / 81
(Architettura degli Elaboratori)
Architettura Cortex A9
(Architettura degli Elaboratori)
Processore
Processore
78 / 81
Architettura Cortex A9
79 / 81
(Architettura degli Elaboratori)
Processore
80 / 81
Architettura Cortex A9
(Architettura degli Elaboratori)
Processore
81 / 81