Post on 15-Feb-2020
Processore
Presentazione a livelli del calcolatore:dopo porte logiche, circuiti base e memorie,esaminiamo il:
Processore (CPU - Central Processing Unit): cuoredel calcolatore, l’unità che esegue le istruzionimacchina (cap. 2 e 4).
Nel seguito le altre componenti del calcolatore: bus,I/O, memoria di massa.
(Architettura degli Elaboratori) Processore 1 / 81
Struttura schematica di uncalcolatore
Central processing unit (CPU)
Control unit
Arithmetic logical unit
(ALU)
Registers
Main memory Disk Printer
Bus
I/O devices
… …
(Architettura degli Elaboratori) Processore 2 / 81
Il processore (CPU)Compito del processore: eseguire il ciclofetch-decode-execute;
• fetch: preleva un’istruzione dalla memoriaistruzione macchina;
• decode: determina il tipo di istruzione e i suoiargomenti;
• execute: esegui l’istruzione:recupera gli argomenti, esegui un operazione,memorizza i risultati;
• ripete il ciclo.
(Architettura degli Elaboratori) Processore 3 / 81
Componenti processore:Data Path
A + B
A + B
A
A
B
B
Registers
ALU input register
ALU output register
ALU
ALU input bus
(Architettura degli Elaboratori) Processore 4 / 81
Data Path
Formata da:
• una serie di registri (memorie),• un’unità aritmetica e logica (ALU),• dei bus di collegamento.
Può eseguire micro-operazioni.
(Architettura degli Elaboratori) Processore 5 / 81
Micro-operazione
L’operazione eseguibile dal data path in un singolociclo di clock.
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 medianteuna o più micro-operazioni.
(Architettura degli Elaboratori) Processore 6 / 81
Unità di controlloIl funzionamento del data path viene regolato,mediante segnali, dall’unità di controllo.Circuito sequenziale che regola il funzionamento delprocessore.
• Esamina l’istruzione corrente, contenutaInstruction Register (IR).
• Invia segnali di lettura e scrittura ai registri.• Invia segnali di controllo alla ALU.• Gestisce la comunicazione con la memoria
principale.
(Architettura degli Elaboratori) Processore 7 / 81
Realizzazione
Due alternative:• cablata: si realizza un circuito sequenziale
classico;• micro-programmata: il controllo è un piccolo
calcolatore capace di eseguire unmicro-programma.
(Architettura degli Elaboratori) Processore 8 / 81
Dicotomia: cablata -programmata
Le stessa funzionalità possono essere implementatemediante:• hardware (logica cablata): più complicata e
costosa da realizzare, ma offre prestazionimigliori;
• software (logica programmata): più semplice eflessibile, ma più lenta.
Diversi esempi di questa dicotomia: le istruzionigrafiche, l’elaborazione dei segnali, . . .
(Architettura degli Elaboratori) Processore 9 / 81
Un po’ di storiaI primi processori: poche istruzioni, logica cablata.
Anni 50:• prime unità di controllo micro-programmato,
permette la costruzione di calcolatori economicima con un ricco insieme di istruzioni.
• calcolatori con maggiori presazioni usano lalogica cablata.
• Si costruiscono calcolatori molto diversi perprestazioni e costi con lo stesso insieme diistruzioni. (IBM 360)
(Architettura degli Elaboratori) Processore 10 / 81
Anni 70Le potenzialità della micro-programmazione vengosfruttate 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) Processore 11 / 81
Anni 80, processori 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
I primi RISC
Reduced Instruction Set Computer• 801 (IBM),• CPU-RISC (Patterson - Berkley)⇒ Sparc,• MIPS (Hennesey - Stanford),• Alpha (Digital), PowerPC (Motorola, IBM), ARM,
(Architettura degli Elaboratori) Processore 13 / 81
Anni 90, diatriba: RISC –CISC
Complex Instruction Set Computer.
• Tutti i processori di nuova concezione sonoRISC.
• Ma i processori usati nei PC: architettura Intelx86, (IA-32), sono CISC.
• Motivi: compatibilità con il software preesistente,non si vogliono riscrivere i programmi (il codice).
(Architettura degli Elaboratori) Processore 14 / 81
AttualmenteLa contrapposizione RISC – CISC è più sfumata.
• La legge di Moore ha portato alla creazione diprocessori RISC con insiemi di istruzionisempre più ampi.
• Il processori CISC (IA-32) usano al loro internoun 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
RISC – CISC
• In linea di principio, i processori RISC sonopreferibili,
• le architetture CISC hanno uno svantaggio del(20-30%),
• per i processori x86, lo svantaggio ècompensato dalle economie di scala (vengonoprodotti in gran numero).
(Architettura degli Elaboratori) Processore 16 / 81
I processori nel libro ditesto
Per illustrare con maggior dettaglio il funzionamentodei processori,si mostra un esempio concreto di progettazione diun processore.Più precisamente: si mostra come costruireprocessore (Mic)che eseguire istruzioni del Java bytecode:si realizza la Java Virtual Machine (JVM)Approccio per esempi e bottom-up: primadescrizione delle componenti, poi quadro di insieme.
(Architettura degli Elaboratori) Processore 17 / 81
I processori nel libro ditesto
• Pro: un esempio pratico, consistente con ilresto.
• Contro: presentazione lunga, molti dettaglitecnici, difficile comprensione, linguaggiomacchina 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 siacompleto, autosufficiente e non sovrabbondante(molti più argomenti di quelli presentati alezione).
(Architettura degli Elaboratori) Processore 18 / 81
Premessa: i compilatoriUn programma ad alto livello (Java, C, C++,Scheme, Pascal, . . . ) deve essere tradotto inlinguaggio macchina (istruzioni eseguibili dalcalcolatore).
Due alternative:• compilatore: programma traduttore, dal
programma sorgente genere un programmamacchina equivalente.
• interprete: programma interprete, legge ilprogramma sorgente e lo esegue direttamente(non genera codice intermedio).
(Architettura degli Elaboratori) Processore 19 / 81
Java
Java si propone come il linguaggio per leapplicazioni 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 inmaniera efficiente.
(Architettura degli Elaboratori) Processore 20 / 81
Java Virtual Machine, JVMSoluzione:• 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 Javabytecode,macchina virtuale: implementata, via software,su diverse piattaforme (processore, sistemaoperativo),livello Java bytecode
(Architettura degli Elaboratori) Processore 21 / 81
Java bytecodeProgrammi Java compilati in Java bytecode,eseguibile da ogni calcolatore mediante laJava 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) Processore 22 / 81
Processori Mic (1,2,3,4)
Implementazione hardware, cablata (non virtuale oprogrammata) della JVM.Mic è un processore capace di eseguire unsottoinsieme del Java bytecode.Progetto didattico, non esistono implementazioni.
Esistono delle vere implementazioni, de• picoJava (Sun Microsystems),• ARM926EJ-S, (architettura ARM estesa con il
Java bytecode),
(Architettura degli Elaboratori) Processore 23 / 81
Java bytecodeSimili, 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).
Per semplicità, i processori Mic implementano unpiccolo sottoinsieme del Java bytecode.
(Architettura degli Elaboratori) Processore 24 / 81
Il modello di memoria
Memoria standard processori, monolitica, unostesso 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
Il modello di memoria
(Architettura degli Elaboratori) Processore 26 / 81
Stack delle variabili
• Usato per gestire le chiamate di procedura(metodi).
• Ogni procedura ha le sue variabili, spazio dimemoria.
• Questi spazi gestiti come una pila.Ad ogni chiamata di procedura si alloca unospazio.Spazio recuperato quando la procedura termina.
(Architettura degli Elaboratori) Processore 27 / 81
Stack degli operandi
• JVM non è una macchina a registri (come quasitutti i processori).Le operazioni aritmetiche logiche non fannoriferimento ai registri interni, ma ad uno:
• Stack degli operandi. Pila su cui:• 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) Processore 28 / 81
I-Java bytecode• Operazioni aritmetiche e logiche: IADD, IAND,
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 flussodell’esecuzione:GOTO, IFEQ os, IFLT os, IF_ICMEQ os,Chiamate di metodi: INVOKEVIRTUAL d,IRETURN,
• Altro: NOP, WIDE(Architettura degli Elaboratori) Processore 29 / 81
Il processore Mic-1
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 realizzatamediante una sequenza di micro-istruzioni,
• sequenza composta da diverse parti:fetch-decode-execute.
(Architettura degli Elaboratori) Processore 30 / 81
Mic-1: data path
(Architettura degli Elaboratori) Processore 31 / 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 32 / 81
Unità aritmetica-logica(ALU)
MIC1 usa una semplice ALU:• implementa poche operazioni: AND, OR, NOT,
somma, sottrazione, incremento, decremento 1,opposto.
• Operazioni eseguite bit per bit (locali): ALUscomposta in unità elementari, ciascunaoperante su una coppia di bit.
• segnali di controllo: selezionano l’operazione dasvolgere, abilitano o meno gli ingressi,forniscono il riporto per le cifre menosignificative.
(Architettura degli Elaboratori) Processore 33 / 81
ALU da un bit
AINVA
ENAB
Logical unit Carry in
AB
B
Enable lines
F0
F1
Decoder
Output
Sum
Carry out
Full adder
A + B
ENB
(Architettura degli Elaboratori) Processore 34 / 81
ALU da 8-32 bit
ALU completa formata da un sequenza di ALU a 1bit
Carry in
Carry out
1-bit ALU
F0F1
A7 B7
O7
1-bit ALU
A6 B6
O6
1-bit ALU
A5 B5
O5
1-bit ALU
A4 B4
O4
1-bit ALU
A3 B3
O3
1-bit ALU
A2 B2
O2
1-bit ALU
A1 B1
O1
1-bit ALU INC
A0 B0
O0
Mic 1 contiene una ALU a 32 bit.
(Architettura degli Elaboratori) Processore 35 / 81
Funzione calcolabili dallaALU
Oltre alle ovvie:
• A + B + 1, somma con Carry in = 1• 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• −A, somma con ENB = 0, INVA = 1,
Carry in = 1
(Architettura degli Elaboratori) Processore 36 / 81
Registri (specializzati)• MAR: Memory Address Register,
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 37 / 81
Esempio diimplementazione
L’istruzione IADD viene realizzata dalla sequenza dimicro-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.
(Architettura degli Elaboratori) Processore 38 / 81
Circuito di controllo
Micro-programmato. Formata da memoria ROM(contiene il micro-codice), 2 registri, un multiplexer.
• semplice sia il circuito che la progettazione• relativamente lento
Micro-istruzioni di 36 bit• in parte segnali di controllo,• in parte determinano la prossima
micro-istruzione,
(Architettura degli Elaboratori) Processore 39 / 81
Circuito di controllo
H
Shifter
ALU
2
N
B bus
6
ALU control
Control signals
Memory control signals (rd, wr, fetch)
Enable onto B bus
Write C bus to register
Z
C bus
SP
LV
CPP
TOS
OPC
PC
MDR
MAR
MBR
9
O
512 × 36-Bit control store for holding
the microprogram
3
8
4-to-16 Decoder
2
9
4
MPC
MIRAddr J ALU C M B
1-bit flip–flop
High bit
JMPC
JAMN/JAMZ
(Architettura degli Elaboratori) Processore 40 / 81
Circuito di controllo:Control store
(Architettura degli Elaboratori) Processore 41 / 81
Circuito di controlloInvia:• 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 poterimplementare i salti condizionati).
(Architettura degli Elaboratori) Processore 42 / 81
Prestazioni
MIC-1, processore (relativamente) completo mainefficiente (molto più semplice dei processoriattuali).
Prestazioni: computazione eseguibile nell’unita ditempo.
(Architettura degli Elaboratori) Processore 43 / 81
Miglioramento delleprestazioni
Due metodi:• Utilizzare istruzioni macchina più potenti, e
flessibili.Esempi:• Processori Intel x86: 8086 (1978) – 80286 – 386
(1985) – MMX — 3DNow — x86-64 (2000) — AVX;• ARM: ARMv1 — . . . — ARMv8;• MIPS: R2000 — R3000 — R4000;• IJVM→ JVM.
• Eseguire più istruzione nell’unità di tempo
(Architettura degli Elaboratori) Processore 44 / 81
Più istruzioni al secondo
Il funzionamento della CPU scandito da un clock,• diminuire il numero di micro-istruzioni (cicli di
clock) necessari per eseguire un’istruzionemacchina;aumentare la computazione svolta nel ciclo diclock:
• ridurre il ciclo di clock.
(Architettura degli Elaboratori) Processore 45 / 81
Più computazione per ciclodi clock
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)
(Architettura degli Elaboratori) Processore 46 / 81
Secondo progetto MIC-2
H
Shifter
ALUN
B bus
C bus
6ALU control
Control signals
Memory control registers
Enable onto B bus
Write C bus to register
To and from main memory
Z
MBR2
SP
LV
CPP
TOS
PC
MDR
MAR
MBR
OPC
Instruction fetch unit (IFU)
A bus
(Architettura degli Elaboratori) Processore 47 / 81
Ridurre il ciclo di clockSegnale di clock abilita la scrittura dei registri.Periodo di clock dato dalla somma dei ritardi.
Cycle 1 starts here
Shifter output stable
Registers loaded instantaneously from C bus and memory on rising edge of clock
Set up signals to drive data path
ALU and shifter
Drive H and B bus
Propagation from shifter to registers
∆w ∆x ∆y ∆z
Clock cycle 1 Clock cycle 2
MPC available here
New MPC used to load MIR with next microinstruction here
(Architettura degli Elaboratori) Processore 48 / 81
Ridurre il ciclo di clock
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 ditransistor impiegati).
(Architettura degli Elaboratori) Processore 49 / 81
Architettura più veloceVelocizzare il data-path:
• circuito di controllo cablato,• ALU e circuiti combinatori più veloci, (un intero
settore di ricerca):l’ALU presentata nel testo particolarmenteinefficiente.
• esecuzione parallela, spezzare l’esecuzionedella micro-operazione in più stadi: la tecnicadella pipeline
(Architettura degli Elaboratori) Processore 50 / 81
Terzo progetto: Mic-3
H
A latchC latch B latch
Shifter
ALUN
B bus
C bus
6ALU control
Control signals
Memory control registers
Enable onto B bus
Write C bus to register
To and from main memory
Z
MBR2
SP
LV
CPP
TOS
PC
MDR
MAR
MBR1
OPC
Instruction fetch unit (IFU)
A bus
(Architettura degli Elaboratori) Processore 51 / 81
Mic-3 – Pipeline
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
(Architettura degli Elaboratori) Processore 52 / 81
Pipeline – Paragoni
Possibile paragone preso dalla vita comune, unalavanderia:vestiti da lavare micro-operazionilavaggio acquisire i dati di ingressoasciugatura calcolo del risultatostiratura memorizzazione del risultato
Le varie fasi di lavoro sono portata avanti in parallelo.
(Architettura degli Elaboratori) Processore 53 / 81
La pipeline, secondoparagone.
La catena di montaggio:il lavoro viene scomposto in fasi, ognuna eseguita daun dispositivo specifico,si svolgono le diverse fasi, su componenti diverse, inparallelo.
In un processore si parallelizza l’esecuzione dellemicro-operazioni, (ciclo di clock);si migliora la banda passante ma non i tempi dirisposta.
Tecnica utilizzata in tutti i processori. In ambito Intel:dal 486 in poi (1989).
(Architettura degli Elaboratori) Processore 54 / 81
Esempio di scomposizione:
(a)
(b)
S1:
S2:
S3:
S4:
S5:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4 5 6 7 8 9
Time
…
S1 S2 S3 S4 S5
Instruction fetch unit
Instruction decode
unit
Operand fetch unit
Instruction execution
unit
Write back unit
(Architettura degli Elaboratori) Processore 55 / 81
Altro esempio:
1
IFU
2
Decoder
3
Queue
4
Operands
5
Exec
6
Write back
7
Memory
Processori diversi usano scomposizioni, strutturedella pipeline, diverse.Lunghezza tipica di una pipeline: 7–14 stadi.Caso limite Pentium IV: 20 stadi di pipeline (guerradei GHz).
(Architettura degli Elaboratori) Processore 56 / 81
Processori superscalari
Aumentano ulteriormente il parallelismo:si migliora il rapporto istruzioni
cicli di clock ,
Iniziano contemporaneamente l’esecuzione di piùistruzioni: più pipeline operanti in parallelo.
S1 S2 S3 S4 S5
Instruction fetch unit
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
Processori superscalari
• I primi stadi (singoli) prelevano più istruzionidalla memoria, e le decodificano.
• Le istruzioni smistate su stadi successivimultipli.
• Spesso, uno stadio finale singolo che termina, inordine, le istruzioni.
(Architettura degli Elaboratori) Processore 58 / 81
Esempio: processoreSPARC
Pipeline specializzate.Integer pipeline
Fetch Decode Group
Execute Cache
Register
Write
Floating-point/graphics pipeline
N1 N2
N3
X1 X2 X3
Attualmente processori con 4-15 pipeline, decine dimicro-istruzione in contemporanea.
(Architettura degli Elaboratori) Processore 59 / 81
Problemi del parallelismo
Processori superscalari possono, potenzialmente,eseguire decine di istruzioni contemporaneamente.
Due fenomeni impediscono un completosfruttamento del parallelismo.
• Dipendenza tra istruzioni.• Istruzioni di salto.
(Architettura degli Elaboratori) Processore 60 / 81
Dipendenza tra istruzioni:In un programma le istruzioni sono stato pensate peressere eseguite in ordine.Un’esecuzione parallela, senza controlli, può portarea risultati scorretti. Tre casi:• RAW Read After Write:R0 = R1R2 = R0 + 1
• WAR Write After Read:R1 = R0 +1R0 = R2
• WAW Write After Write:R0 = R1R0 = R2 + 1(Architettura degli Elaboratori) Processore 61 / 81
Dipendenza tra istruzioniLe dipendenze vengono rilevate mediante unatabella delle dipendenze (scoreboard):memoria interna al processore che contaper ogni registro,le operazioni, di lettura e scrittura, in sospeso suquel registro.
Le istruzioni dipendenti devono essere sospese:
decadimento delle prestazioni, eseguiamo menooperazioni di quelle teoricamente possibili.Si creano bolle, zone inattive, nella pipeline.
(Architettura degli Elaboratori) Processore 62 / 81
Gestire la dipendenza traistruzioni
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 passoverso processori multicore.
(Architettura degli Elaboratori) Processore 63 / 81
Istruzioni di saltocondizionato
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 alcuneistruzioni:esecuzione annullata se la previsione si rivelaerrata.Assicura buone prestazioni.
(Architettura degli Elaboratori) Processore 64 / 81
Tecniche per la predizionedi salto
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 ilcomportamento passato di alcune istruzioni disalto, poche istruzioni, pochi bit),
In un programma numerose istruzioni di salto: unabuona predizione di salto è fondamentale per leprestazioni.
(Architettura degli Elaboratori) Processore 65 / 81
Esecuzione Speculativa:nel caso di salto condizionato,non si tenta la predizione masi eseguono entrambe le possibili continuazioni delprogramma.
Pur di alimentare il processore, si eseguono anchealcune 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) Processore 66 / 81
Esecuzione Speculativaevensum = 0;
oddsum = 0;
i = 0;
while (i < limit) {
k = i * i * i;k = i * i * i;
if ((i/2) * 2) == 0)
evensum = evensum + k;
else
oddsum = oddsum + k;
}(a) (b)
evensum = 0;
oddsum = 0;
i = 0;
while (i < limit)
if ((i/2) * 2) = = 0)
T F
evensum = evensum + k; oddsum = oddsum + k;
i = i + 1;i = i + 1;
i >= limit
(Architettura degli Elaboratori) Processore 67 / 81
La memoria principaletroppo lenta
La differenza di velocità tra processore e memoria èaumenta col tempo.
L’accesso in memoria operazione costosa:il processore deve attendere il datoper più di una decina di cicli di clock.
Memoria Cache: memoria piccola e veloce:contiene i dati utilizzati più frequentemente.
(Architettura degli Elaboratori) Processore 68 / 81
La memoria 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.
(Architettura degli Elaboratori) Processore 69 / 81
Cache a più livelliAumenta il divario di velocità tra CPU RAM;per evitare cache miss troppe costose, un secondolivello di cache:• più ampio• tecnologia meno costosa• più lento• contiene un sovrainsieme della memoria di
primo livelloSpesso sono presenti 3 livelli di cache.
Esempio - Sandy Bridge: livello 1: 32KB; livello 2:256KB, livello 3: 1–20MB;
(Architettura degli Elaboratori) Processore 70 / 81
Split cache
cache divisa in due parti: dati e istruzioni• normalmente cache L1 (di primo livello)• permette di parallelizzare l’accesso in memoria
• l’IFU accede alle istruzioni• l’unità Dispatch/Execute accede ai dati
(Architettura degli Elaboratori) Processore 71 / 81
Esempio di configurazione
Processor board
CPU package CPU chip
Keyboard controller
Graphics controller
Disk controller
Main memory (DRAM)
L1-I L1-D
Unified L2 cache
Unified L3 cache
Split L1 instruction and data caches Board-level cache (SRAM)
(Architettura degli Elaboratori) Processore 72 / 81
Valutazione delleprestazioni
Le velocità di un calcolatore con processoresuperscalare dipende fortemente da quanto vienesfruttato 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 tramite test.
(Architettura degli Elaboratori) Processore 73 / 81
CPU Corei-7, Architett.Sandy-Bridge
• 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
Extensions);(Architettura degli Elaboratori) Processore 74 / 81
Architettura Sandy Bridge
(Architettura degli Elaboratori) Processore 75 / 81
Sandy Bridge, pipeline
(Architettura degli Elaboratori) Processore 76 / 81
Sandy bridge, chip
(Architettura degli Elaboratori) Processore 77 / 81
Architettura Cortex A9
• Progettata ARM ltd, realizzata da varicostruttori;
• core che viene integrato in SoC (System onChip), (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 78 / 81
Architettura Cortex A9
(Architettura degli Elaboratori) Processore 79 / 81
Architettura Cortex A9
(Architettura degli Elaboratori) Processore 80 / 81
Architettura Cortex A9
(Architettura degli Elaboratori) Processore 81 / 81