hardwareondersteuning voor gebruik ILP (vervolg)

advertisement
Geavanceerde pipelining
en parallellisme op het
niveau van instructies
(ILP: Instruction Level
Parallellism)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 1
Overzicht

statisch schedulen (compiler)
pipeline scheduling en lusontrolling
 afhankelijkheden
 parallellisme op lus-niveau


dynamisch schedulen
dynamic scheduling met scorebord
 dynamic scheduling met algoritme van Tomasulo


dynamisch voorspellen van sprongen

multiple issue
algemene kenmerken
 compilerondersteuning voor gebruik ILP
 hardwareondersteuning voor gebruik ILP

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 2
inleiding



Pipeline CPI = ideale pipeline CPI + structurele stalls
+ RAW stalls + WAR stalls
+ WAW stalls + control stalls
de factoren zijn niet onafhankelijk van elkaar: we zullen zien
dat verminderen van RAW stalls en control stalls het aantal
WAR stalls en WAW stalls kan verhogen
vermindering van CPI tot minder dan 1: starten van
meerdere instructies in parallel (multiple issue)
superscalaire processoren
 VLIW


2 grote technieken komen aan bod in dit hoofdstuk:
technieken om impact data en control hazards te verminderen
 technieken om meer parallellisme uit een processor te halen

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 3
pipeline scheduling en lusontrolling

parallellisme binnen 1 basisblok is klein:
gemiddeld maar 6 à 7 instructies tussen twee sprongen
 en deze instructies hangen vaak van elkaar af
 oplossing: parallellisme tussen iteraties van 1 lus uitbuiten:
loop-level parallellism
 vb:
for (i=1; i<=1000; i=i+1)
x[i] = x[i] + s
 de berekeningen van twee opeenvolgende iteraties zijn
onafhankelijk van elkaar
 methodes:
– statisch (door compiler) of dynamisch (door hardware)
ontrollen van een lus
– vectorinstructies (zie later bij parallelle architecturen)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 4
pipeline scheduling en lusontrolling (vervolg)


vermijden van stalls: de afhankelijke instructies ver van
elkaar verwijderen
gebruikte latencies in de volgende voorbeelden
FP ALU op voor ander FP ALU op
 FP ALU op voor STORE
 LOAD double voor FP ALU op
3
2
1


niet-geoptimiseerde DLX code voor ons voorbeeld, met
telkens aangegeven welke klokcycli gebruikt worden
L:
Yolande Berbers
LD
ADDD
SD
SUBI
BNEZ
F0, 0(R1)
F4, F0, F2
0(R1), F4
R1, R1, 8
R1, L
1+2
3+4+5
6
7
8+9
Structuur en Organisatie van Computersystemen: deel 2
slide 5
pipeline scheduling en lusontrolling (vervolg)

eerste verbetering: herschikken van deze code
L:
LD
ADDD
SUBI
BNEZ
SD
F0, 0(R1)
F4, F0, F2
R1, R1, 8
R1, L
8(R1), F4
1+2
3
4
5
6
verbetering: van 9 naar 6
merk op: niet enkel herschikken maar ook aanpassen (SD werd
gewijzigd)
merk nog op: het eigenlijke werk in de lus (LD, ADD, SD) kost
3 klokcycli, de rest is lusoverhead en een stall
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 6
pipeline scheduling en lusontrolling (vervolg)

volgende methode: lusontrolling
L:
LD
ADDD
SD
LD
ADDD
SD
LD
ADDD
SD
LD
ADDD
SD
SUBI
BNEZ
F0, 0(R1)
F4, F0, F2
0(R1), F4
F0, -8(R1)
F4, F0, F2
-8(R1), F4
F0, -16(R1)
F4, F0, F2
-16(R1), F4
F0, -24(R1)
F4, F0, F2
-24(R1), F4
R1, R1, 32
R1, L
1+2
3+4+5
6
7+8
9+10+11
12
13+14
15+16+17
18
19+20
21+22+23
24
25
26+27
lusoverhead werd 3 maal weggewerkt, gebruikt meer registers
gemiddeld: 6.8 klokcycli per lus
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 7
pipeline scheduling en lusontrolling (vervolg)

volgende verbetering: lusontrolling en herschikken
L:
LD
LD
LD
LD
ADDD
ADDD
ADDD
ADDD
SD
SD
SD
SUBI
BNEZ
SD
F0, 0(R1)
F6, -8(R1)
F10, -16(R1)
F14, -24(R1)
F4, F0, F2
F8, F6, F2
F12, F10, F2
F16, F14, F2
0(R1), F4
-8(R1), F8
-16(R1), F12
R1, R1, 32
R1, L
0(R1), F16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
gemiddeld: 3.5 klokcycli per lus (vergelijk met vroeger 6)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 8
pipeline scheduling en lusontrolling (vervolg)

lus-ontrolling vergroot hoeveelheid code tussen 2
sprongen, zodat beter kan gescheduled worden
compiler moet ontdekken dat iteraties van een lus
onafhankelijk zijn
 vaak moeten instructies aangepast worden (bv de SD omdat
die na de SUBI verplaatst werd)
 gebruik van veel verschillende registers maakt de instructies
onafhankelijker
 lusboekhouding moet aangepast worden
 in ons geval zijn de LDs en SDs uit de verschillende iteraties
onafhankelijk (dit is niet altijd zo)
 onafhankelijke instructies kunnen her-ordend worden en zijn
parallel (en omgekeerd)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 9
pipeline scheduling en lusontrolling (vervolg)


compiler heeft analyse nodig van afhankelijkheden
tussen instructies:
dit is het onderwerp van de volgende slides
vaak kent men statisch het aantal iteraties niet
hoe ontrollen ?
schrijf 2 lussen, 1 niet-ontrolde gevolgd door een ontrolde (bv 4
maal)
 dynamisch bereken je hoeveel keer je eerst de niet-ontrolde
moet doorlopen om een heel aantal ontrolde over te houden
 vb:
 stel iteratie 18 maal
 eerst 2 maal niet ontrolde
 daarna 4 maal de ontrolde (geeft 16 maal de iteratie)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 10
afhankelijkheden

data-afhankelijkheid: instr j is data-afhankelijk van instr i
indien i een resultaat produceert gebruikt in j
 indien j data-afhankelijk is van instr k, en k data-afhankelijk is
van instr i


hoe invloed verminderen
afhankelijkheid behouden maar hazard vermijden door anders
te schedulen
 afhankelijkheid wegwerken door analyse van code
 vb op volgende slide toont data-afhankelijkheden
 deze werden weggewerkt in ons eerder voorbeeld door de
SUBI instructies weg te laten en de berekeningen van R1
door de compiler te laten doen

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 11
afhankelijkheden (vervolg)

voorbeeld van data-afhankelijkheden
L:
LD
F0, 0(R1)
ADDD
F4, F0, F2
SD
0(R1), F4
SUBI
R1, R1, #8
LD
F0, -8(R1)
ADDD
F4, F0, F2
SD
-8(R1), F4
SUBI
R1, R1, #8
LD
F0, -8(R1)
ADDD
F4, F0, F2
SD
-8(R1), F4
SUBI
R1, R1, #8
……..
BNEZ
Yolande Berbers
R1, L
Structuur en Organisatie van Computersystemen: deel 2
slide 12
afhankelijkheden (vervolg)

naam-afhankelijkheid: twee instructies gebruiken
hetzelfde register (of geheugenlocatie), maar geen
gegevens worden doorgegeven tussen de instructies
anti-afhankelijkheid:
 output-afhankelijkheid:


komt overeen met een WAR
komt overeen met een WAW
voorbeeld van naam-afhankelijkheid
L:
LD
F0, 0(R1)
ADDD
F4, F0, F2
SD
0(R1), F4
SUBI
R1, R1, #8
LD
F0, -8(R1)
ADDD
Yolande Berbers
F4, F0, F2
SD
-8(R1), F4
SUBI
R1, R1, #8
Structuur en Organisatie van Computersystemen: deel 2
slide 13
afhankelijkheden (vervolg)

hoe naam-afhankelijkheid vermijden
verschillende registers (of geheugenlocaties) gebruiken
 is eenvoudiger voor registers
 kan statisch of dynamisch gebeuren


voorbeeld van vermijden van naam-afhankelijkheid
L:
LD
F0, 0(R1)
ADDD
F4, F0, F2
SD
0(R1), F4
SUBI
R1, R1, #8
LD
F6, -8(R1)
ADDD
Yolande Berbers
F8, F6, F2
SD
-8(R1), F6
SUBI
R1, R1, #8
Structuur en Organisatie van Computersystemen: deel 2
slide 14
afhankelijkheden (vervolg)

controle-afhankelijkheid: instructies hangen af van
sprongen
instructies die na een sprong staan kunnen niet zomaar
verhuisd worden naar vóór de sprong
 instructies die vóór een sprong staan kunnen niet zomaar
verhuisd worden naar na de sprong
 volgende slide toont de controle-afhankelijkheden zodat
eenvoudige herordening niet mogelijk is


hoe invloed verminderen
wegwerken van sprongen zoals in lus-ontrolling voorbeeld
 zie later

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 15
afhankelijkheden (vervolg)

voorbeeld van controle-afhankelijkheden
L:
LD
F0, 0(R1)
ADDD
F4, F0, F2
SD
0(R1), F4
SUBI
R1, R1, #8
BNEZ
R1, exit
LD
F6, -8(R1)
ADDD
F8, F6, F2
SD
-8(R1), F8
SUBI
R1, R1, #8
BNEZ
R1, exit
……..
BNEZ
exit:
Yolande Berbers
R1, L
……...
Structuur en Organisatie van Computersystemen: deel 2
slide 16
parallellisme op lus-niveau

in het gebruikte voorbeeld voor lus-ontrolling: de
iteraties waren volledig onafhankelijk van elkaar
for (i=1; i <= 1000; i++)
x[i] = x[i] + s;

in het volgend voorbeeld gebruikt S1 een variabele (B[i])
die in de vorige iteratie in S2 een nieuwe waarde
gekregen had
for (i=1; i <= 100; i=i+1) {
A[i] = A[i] + B[i];
B[i+1] = C[i] + D[i];
}
Yolande Berbers
/* S1 */
/* S2 */
Structuur en Organisatie van Computersystemen: deel 2
slide 17
parallellisme op lus-niveau (vervolg)

door analyse kan deze afhankelijkheid weggewerkt
worden
for (i=1; i <= 100; i=i+1) {
A[i] = A[i] + B[i];
B[i+1] = C[i] + D[i];
}
/* S1 */
/* S2 */
wordt
A[1] = A[1] + B[1];
for (i=1; i <= 99; i=i+1) {
B[i+1] = C[i] + D[i];
A[i+1] = A[i+1] + B[i+1];
}
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 18
dynamisch schedulen



= dynamisch (tijdens de uitvoering) de volgorde van de
instructies die uitgevoerd worden bepalen
normaal voegt de hardware stalls in als een data-afh.
optreedt die niet kan worden opgelost door forwarding
vb: geen reden om derde instructie te doen wachten
DIVD F0, F2, F4
ADDD F10, F0, F8
SUBD F12, F8, F14

voordeel van dynamisch schedulen
indien compiler de data-afhankelijkheid niet kan detecteren
 indien code voor andere pipeline geoptimiseerd is
 vereenvoudigt de compiler


nadeel: nogal ingewikkelde hardware nodig
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 19
dynamisch schedulen (vervolg)

principe:
issue: decoderen en testen op structurele hazards
 lezen van operanden: hiermee wordt gewacht tot er geen
data hazards meer zijn
 de instructies gaan in volgorde door de issue stage
 maar ze kunnen elkaar voorbijsteken in de volgende stage
 WAR wordt mogelijk

DIVD F0, F2, F4
ADDD F10, F0, F8
SUBD F8, F8, F14

2 methodes
met scorebord (CDC, 1964)
 Tomasulo-algoritme (IBM, 1967)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 20
dynamic scheduling met scorebord

doel: 1 instructie uitvoeren per klok cyclus
indien een stall nodig is voor een instructie: proberen een
andere instructie uit te voeren die niet afhankelijk is
 van een actieve instructie (een instructie in uitvoering)
 of van een instructie die tegengehouden werd door een stall
 meerdere instructies kunnen in de EX stage zijn door
 meerdere functionele eenheden
 ge-pipelinede instructies
 combinatie van deze twee
 in deze bespreking veronderstellen we meerdere functionele
eenheden (maakt geen wezenlijk verschil): 2 mult, 1 adder, 1
divider, 1 integer unit (zie fig. 4.3)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 21
dynamic scheduling met scorebord (vervolg)

taak scorebord
opbouw van data-afhankelijkheden tussen instructies
 vervangt de stage van issue van een instructie
 scorebord bepaalt wanneer een instructie zijn operanden kan
lezen en aan de uitvoering kan beginnen
 scorebord controleert wanneer een instructie zijn resultaat kan
wegschrijven

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 22
dynamic scheduling met scorebord (vervolg)

model met 4 stappen (ipv 5 stages van pipeline)




issue
 test op structurele hazards (is de nodige functionele eenheid
vrij) en op WAW hazards (gaat geen actieve instr. zijn resultaat
schrijven in hetzelfde register)
 indien probleem: stall en geen verdere instr. fetch
lezen van operanden
 test op RAW hazards (bij actieve en wachtende instr.)
 indien probleem: instructie wordt bijgehouden
uitvoering
 na uitvoering wordt scorebord verwittigd
wegschrijven van resultaat
 test op WAR hazards (moet oude waarde van register nog
gelezen worden in een eerdere instructie)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 23
dynamic scheduling met scorebord (vervolg)

eigenschappen van scorebord
maakt geen gebruik van forwarding (maar geen wacht stage
voor geh)
 structurele hazards: bussen van registers naar functionele
eenheden (nodig in stap 2 en 4)
 drie delen (zie fig. 4.4)
 instructie status: houdt bij in welke stap elke instructie zit
 status van functionele eenheden (9 velden):
– bezet status, uitgevoerde operatie
– resultaat- en bronoperanden registernummers
– functionele eenheden die deze bronoperanden eventueel
nog moeten uitrekenen (RAW)
– vlaggen die aangeven of bronregisters klaar staan
 per resultaatregister: functionele eenheid die hierin gaat
schrijven

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 24
dynamic scheduling met scorebord (vervolg)


vb van WAR: DIVD en ADD (ivm F6) in figuur 4.5 en 4.6
beperkingen van de methode met scorebord
hoeveelheid parallellisme aanwezig in de code
 grootte van het scorebord
(venster = aantal instructies dat bekeken kan worden)
 het aantal en het type van de functionele eenheden
(bepaalt de structurele hazards)
 het aantal WAR en WAW hazards

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 25
dynamic scheduling: alg. van Tomasulo

karakteristieken
combineert elementen van scorebord met herbenoeming van
registers
 hierdoor worden de WAR en WAW hazards vermeden
 in deze bespreking veronderstellen we meerdere functionele
eenheden
 herbenoeming van registers door reservatiestations
 per functionele eenheid is er een reservatiestation
 hierin worden de operanden gebufferd zodra beschikbaar
 wachtende instructies verwijzen naar de functionele
eenheden die de bronoperanden zullen leveren
 bij WAW wordt enkel de laatste echt in het register
geschreven

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 26
dynamic scheduling: alg. van Tomasulo (vervolg)

verder verschil met scorebord

reservatiestations bepalen wanneer een instructie kan beginnen
uit te voeren: beslissingen gebeuren hier gedistribueerd, en bij
scorebord centraal door scorebord

resultaten gaan direct van reservatiestations naar functionele
eenheid (en niet via registers) via CDB (common data bus)
zie fig. 4.8
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 27
dynamic scheduling: alg. van Tomasulo (vervolg)

model met 3 stappen (ipv 5 stages van pipeline en 4 bij
scorebord)

issue: nieuwe instructie in een reservatiestation plaatsen indien
er plaats vrij is (anders geeft dit een structurele hazard en dus
een stall)

uitvoering indien operanden beschikbaar zijn; anders kijken
voor operanden op CDB

wegschrijven van resultaat via CDB naar register en
reservatiestations waar die resultaten nodig zijn
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 28
dynamic scheduling: alg. van Tomasulo (vervolg)

belangrijke verschillen met scorebord
geen expliciete check op WAW en WAR hazards (deze worden
overbodig door de herbenoeming van registers)
 CDB doet een broadcast van resultaten, men wacht niet op de
registers
 de logica om hazards te detecteren is gedistribueerd (geen
bottleneck zoals bij het scorebord)
 belangrijk indien 2 instructies wachten op zelfde resultaat
 bij scorebord is er een conflict rond het gebruik van de
registers, dus starten de twee instructies niet tegelijk
 bij Tomasulo kunnen de twee instructies tegelijk starten
 loads en stores worden ook als functionele eenheden
beschouwd

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 29
dynamic scheduling: alg. van Tomasulo (vervolg)

structuur van de reservatiestation: 6 velden
bezet status, uitgevoerde operatie
 waarde van de 2 operanden, indien reeds beschikbaar
 indien een operand niet beschikbaar is wordt bijgehouden van
welke functionele eenheid deze moet komen


aanpassing aan registerfile



elk registers heeft een veld met het reservatiestation waar de
huidige waarde wordt berekend
vb van WAR: DIVD en ADD (ivm F6) in fig 4.9 & 4.10
groot voordeel tov scorebord: dynamische lus-ontrolling
(zie volgende slide)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 30
Tomasulo: ontrollen van lussen

voorbeeld van een lus met oplossen van WAW en WAR
L:





LD
MULTD
SD
SUBI
BNEZ
F0, 0(R1)
F4, F0, F2
0(R1), F4
R1, R1, 8
R1, L
veronderstel dat de sprongen genomen worden
de lus wordt dynamisch ontrold door de hardware
de reservatiestations zorgen voor extra registers, en lossen WAW
(2 LD) en WAR (LD na MULT) hazards op
fig 4.12 geeft de initiële situatie aan
test bij elke load (iets wat voor de compiler vaak moeilijk is
vanwege het gebruik van pointers)
 een load mag enkel gestart worden als het adres niet in het
reservatiestation van de store staat
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 31
Tomasulo (vervolg)

grootste nadeel van Tomasulo
grote hoeveelheid hardware nodig om dit te implementeren
 veel heel snelle associatieve geheugens
 complexe controle logica
 mogelijke bottleneck: CDB


grootste voordeel van Tomasulo
het kan heel effectief gebruikt worden in een architectuur die
weinig registers biedt (bv Intel)
 in zulke architectuur heeft de compiler niet veel ruimte om
aan registerherbenoeming te doen
 compilers kunnen niet-numerieke code vaak moeilijk statisch
schedulen

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 32
dynamisch voorspellen van sprongen

doel: het vermijden van control hazards

belangrijker wanneer meer instructies tegelijk gestart worden

blijft anders altijd een limiterende factor (wet van Amdahl)

we bespreken hier een aantal voorspellingsschema’s
met telkens een grotere complexiteit

engels: branch prediction
= voorspelling van voorwaardelijke sprongen
= voorspelling van vertakking
maar ik noem het hier vaak sprongvoorspelling
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 33
dynamisch voorspellen van sprongen (vervolg)

waarom kan men voorspellen ?

grootste gedeelte van uitvoeringstijd zit in lussen


elke instructie: veel kansen dat ook eerder uitgevoerd
spronginstructie

niet op toeval gebaseerd

vroeger gedrag is goede indicatie voor volgend gedrag
– meer dan 90% juiste voorspelling in meeste toepassingen

informatie over sprongen

kan bijgehouden worden

gebruikt bij volgend voorkomen van zelfde sprong
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 34
voorbeelden van voorspelbare sprongen

lus
teller = 100
1
BEGIN:
1
: inhoud van lus
.
teller = teller - 1
.
spring naar BEGIN indien teller > 0
1
99 keer
0
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 35
voorbeelden van voorspelbare sprongen

testen op fouten, op speciale gevallen
address = (int *) malloc(sizeof(int));
if (address == NULL)
error("memory full");
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 36
voorbeelden van voorspelbare sprongen

herbruikbare code
de & operatie is sneller dan de deling indien b macht van 2 is
 in dit voorbeeld is b een vaste waarde

int modulo(int a,int b) {
if ((b & (b -1))==0)
return(a & (b -1));
return(a % b);
}
#include "ma_librairie.h"
#define HASH_INDEX(v) modulo(v,MAXSIZE)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 37
voorbeelden van voorspelbare sprongen

gegevens zijn vaak niet toevallig (random)

kijken of tabel vol is: in het begin nooit, aan het einde altijd
string_code=getc(input);
while ((character=getc(input)) != (unsigned)EOF) {
index=find_match(string_code,character);
if (code_value[index] != -1)
string_code=code_value[index];
else {
if (next_code <= MAX_CODE) {
code_value[index]=next_code++;
prefix_code[index]=string_code;
append_character[index]=character;
}
output_code(output,string_code);
string_code=character;
}
}
Yolande Berbers
heel bekend
compressiealgorithme
LZW
(Lempel-ZivWelch)
Structuur en Organisatie van Computersystemen: deel 2
slide 38
voorbeelden van voorspelbare sprongen

vooringenomen betekend niet on-nuttig

de kans dat a[i] > max in de N-de interatie is 1/(N+1) en gaat
naar 0 bij hele grote N
max = a[0];
for (i=1;i<100000;i++)
if (a[i] > max)
max = a[i];
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 39
dynamisch voorspellen van sprongen (vervolg)

sprongvoorspellingsbuffer of spronggeschiedenistabel

(Engels: branch-prediction buffer of branch history table BHT)

klein geheugen geïndexeerd via laag adresgedeelte van de
spronginstructie

bevat 1 bit die aangeeft of sprong laatst genomen werd

enkel interessant indien sprongbeslissing langer duurt dan
berekening van nieuwe PC

soort cache: sprong kan er ook niet in staan (cache miss)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 40
dynamisch voorspellen van sprongen (vervolg)

sprongvoorspellingsbuffer of spronggeschiedenistabel
(vervolg)
het is enkel een hint:
 fetching gebeurt afhankelijk van deze hint
 hint kan fout zijn
 hint kan bedoeld zijn voor een andere sprong
(met zelfde laagste adres)
 sprong wordt vaak 2 maal verkeerd voorspeld: eerste en laatste
keer
 vb: lus wordt 10 maal uitgevoerd
 sprong wordt 2 keer verkeerd voorspeld, dus 80% juist

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 41
dynamisch voorspellen van sprongen (vervolg)

betere methode: gebruikt 2 bits
2-bits voorspellingsschema
methode: hint moet 2 maal fout zijn voordat aangepast
 fig 4.13 toont de 4 mogelijke toestanden
 in ons vb met een lus die 10 maal uitgevoerd wordt: 90% juist is
mogelijk met 2 bits
 voorpellingsjuistheid is variabel (afhankelijk van het
programma)
 groter voor wetenschappelijke programma’s
 kleiner voor integer programma’s

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 42
dynamisch voorspellen van sprongen (vervolg)

sprongadres-buffer
(Engels: branch-target buffer of branch-target cache)
 cache (zie fig. 4.22)
 met voorspelde adres van de instructie na een sprong
 die men kan doorzoeken gebruikmakend van een PC
 bevat eventueel nog voorspellingsbits
 wordt reeds gebruikt in de IF stage (zie fig. 4.23)
 alle instructies (ook niet-sprongen) zoeken de tabel af
 indien een ‘hit’ dan hebben we met een sprong te maken
 variatie: bewaar 1 of enkele instructies ipv adres van instructie
(zie volgende slide)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 43
dynamisch voorspellen van sprongen (vervolg)

sprongadres-buffer: variatie

bewaar 1 of meerdere instructies ipv adres van instructie
 IF is niet meer nodig
– eventueel kan men meer tijd spenderen bij het opzoeken
– dit laat grotere buffers toe
 bij onvoorwaardelijke sprong: sprong kan soms nog
vervangen worden door de nieuwe instructie => men wint
één cycle (zero-cycle unconditional branches)
 kan in sommige gevallen ook voor conditional branches
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 44
dynamisch voorspellen van sprongen (vervolg)

voorspelling van indirecte sprongen
indirecte sprong: adres moet opgehaald worden uit geheugen
 meeste indirecte sprongen zijn het terugkeren uit procedures
 dit kan ook met een branch-target buffer
 maar voorspelling is veel moeilijker
 procedures vanuit veel verschillende plaatsen opgeroepen
 buffer die als een stapel werkt
 indien de grootte van de stapel gelijk is aan de maximale
procedure-oproep-diepte: perfecte voorspelling
 vanaf 8 is het al heel goed

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 45
belang van voorspellingen

90 % juiste voorspellingen
processor van eind jaren 80
 pipeline met 4 stages
 debiet van max 1 instructie per cyclus
 1 instructie op 5 is een spronginstructie
 1 slechte voorspelling elke 50 instructies
 50 volle cycli gevolgd door 3 stalls
 debiet = 50 /(50 + 3) = 0.94, dus 94% van maximaal debiet


nu verandering van terminologie

men spreekt in % foutieve voorspellingen
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 46
belang van voorspellingen

10 % foutieve voorspellingen
huidige processor
 pipeline met 8 stages
– langere pipeline: meer stalls bij slechte voorspelling
 debiet van max 4 instructies per cyclus
– door 4 parallelle pipelines
 1 slechte voorspelling elke 50 instructies
 13 (=50/4) volle cycli gevolgd door 7 stalls
 debiet = 50 /(13 + 7) = 2.5
– maximaal debiet is 4
– 2.5 is 62% van maximaal debiet

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 47
belang van voorspellingen

stel 5 % foutieve voorspellingen
huidige processor
 pipeline met 8 stages
 debiet van max 4 instructies per cyclus
 1 slechte voorspelling elke 100 instructies
 25 volle cycli gevolgd door 7 stalls
 debiet = 100 /(25 + 7) = 3.1, of 78% van maximaal debiet
 van 10% naar 5% gaan geeft een verbetering van 25%
(62% => 78%)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 48
dynamisch voorspellen van sprongen (vervolg)

gecorreleerde voorspellers
(Engels: correlating predictors)
 maken gebruik van informatie over andere sprongen
 voorbeeld:
if (aa==2)
aa=0;
if (bb==2)
bb = 0;
if (aa != bb) { …
 twee soorten
 inter-correlatie: correlatie tussen verschillende sprongen
 auto-correlatie: correlatie tussen zelfde (eerdere) sprong

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 49
meer informatie uitbuiten
Inter-correlatie tussen sprongen
cond1
cond2
cond1 AND cond2
B1: IF cond1 AND cond2 …
0
0
0
B2: IF cond1 …
0
1
0
1
0
0
1
1
1
veronderstel de 4 gevallen even waarschijnlijk
waarschijnlijkheid om B2 onafhankelijk juist te voorspellen: 50%
veronderstel resultaat B1 gekend op moment van B2
als cond1 AND cond2 waar (waarsch 1/4), voorspel cond1 waar
als cond1 AND cond2 vals (waarsch 3/4), voorspel cond1 vals
voorspelling B2 met succes rate van 1/4 + 3/4 * 2/3 = 75 %
100 % succes
66 % succes
opmerking: permuteer B1 en B2, en het is minder goed ...
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 50
meer informatie uitbuiten
auto-correlatie
als laatste 3 richtingen 1 zijn,
voorspel 0, anders voorspel 1
100 % succes
Yolande Berbers
1
1
1
0
1
1
1
0
1
1
1
0
•
•
•
for (i=0; i<100; i++)
for (j=0;j<4;j++)
: inhoud van lus
Structuur en Organisatie van Computersystemen: deel 2
slide 51
van waar komen correlaties ?


Inter-correlaties
 vertakkingen die afhangen van zelfde gegevens
 vertakkingen die afhangen van gegevens waarvan de
waarde afhangt van de gevolgde control flow:
if (a>0) b=0; if (b==0) …
Auto-correlaties
 tests op tellers (zie vorige slide)
 tests op een suite van gegevens die een motief bevatten
 motief van instructies
 als volgende in een lus zit hebben we een motief
a = modulo (x,256) ; b = modulo (y,256); c = modulo(z,5);
...
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 52
voorspeller met 2 geschiedenis-niveaus


eerste geschiedenis-niveau
 globale geschiedenis om inter-correlaties te detecteren
 één schuifregister van N bits voor hele programma
 bevat de genomen richtingen van laatste N vertakkingen
 lokale geschiedenis om auto-correlaties te detecteren
 één schuifregister van N bits voor elke vertakking
 bevat N laatste genomen richtingen van deze vertakking
tweede geschiedenis-niveau
 elke vertakking gebruikt meerdere 2-bit tellers, bewaard in
een PHT (pattern history table)
 gebruik de waarde van de lokale of globale geschiedenis om
een teller te kiezen in de PHT
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 53
globale geschiedenis: voorbeeld
voorbeeld: globale geschiedenis
met 4 bits
B0: FOR i = 1 TO 100 ...
B1: IF cond1 AND cond2 …
B2: IF cond1 …
historiek
B0 B0 B0 B1
B2
1 1
1 1
0 (100 %)
1 (66 %)
Yolande Berbers
0 0
0 1
2 tellers 2 bits om B2 te voorspellen
Structuur en Organisatie van Computersystemen: deel 2
slide 54
lokale geschiedenis: voorbeeld
voorbeeld: lokale geschiedenis
met 3 bits
B1: for (i=0; i<100; i++)
B2:
historiek B2
1
1
0
1
1 0
0 1
1 1
1 1
for (j=0;j<4;j++)
B2
1
1
1
0
(100 %)
(100 %)
(100 %)
(100 %)
4 2-bits tellers om B2 te voorspellen
opmerking: auto-correlaties kunnen soms gedetecteerd worden met een
globale geschiedenis (bv in dit voorbeeld zijn er geen vertakkingen in lus
B2, dus globale geschiedenis met 4 bits werkt ook)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 55
lengte van geschiedenis

hoe langer de geschiedenis, hoe meer correlatie het bevat,
maar:
opwarmtijd verhoogt (probleem bij veel context switchen)
 grootte van PHT vergroot met lengte geschiedenis


globale geschiedenis


in praktijk niet groter dan 14-16 bits
lokale geschiedenis

in praktijk niet groter dan 10-12 bits
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 56
is het doenbaar in hardware ?

het aantal 2-bits tellers groeit niet exponentieel, maar
lineair met de lengte van de geschiedenis


de vertakkingen zijn niet random, de geschiedenis waarden
ook niet
indien geschiedenis lang, geen PHT per vertakking maar
één PHT gedeeld door alle vertakkingen

geeft problemen van interferentie, zie enkele slides verder
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 57
voorspeller met globale geschiedenis
Centaur C6+, UltraSparc-3, AMD K6 ...
PHT
instructieadres
één 2-bits teller
per ingang
hashfunctie
globale geschiedenis
toevoeging aan geschiedenis om volgende
vertakking te kunnen voorspellen
voorspelling 0/1
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 58
voorspeller met globale geschiedenis


als lengte globale geschiedenis nul is: de PHT is en BHT
mogelijk om globale geschiedenis te gebruiken zonder
instructieadres
indien globale geschiedenis lang is (>10 bits), zullen waarden
van globale geschiedenis de vertakkingen differentiëren
 iets minder goed dan gecombineerd met het instructieadres


de globale geschiedenis wordt speculatief aangepast, dit
moet men kunnen teniet doen
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 59
voorbeeld: voorspeller gshare
exclusieve OF tussen instructieadres en globale geschiedenis
B1: IF cond1 AND cond2 …
PHT met 16 ingangen
globale geschiedenis met 1 bit
Adres van B2 = FFF7
richting van B1 = d
B2: IF cond1 …
4 bits laag adres
van B2
0111
d=0
XOR
globale historiek 1 bit
Yolande Berbers
d=1
100 % B2=0
66 % B2=1
d
Structuur en Organisatie van Computersystemen: deel 2
slide 60
voorspeller met lokale geschiedenis
instructieadres
Tabel met
lokale
geschiedenis
lokale geschiedenis
•
•
•
Intel P6 ...
N bits
één of meerdere PHT
met 2N 2-bit tellers
voorspelling
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 61
kwaliteit van de voorspellers

voorspeller met 2 niveaus verminderen het aantal
foutieve voorspellingen met een factor 2 à 3


globale geschiedenis


2 à 5 % foutieve voorspellingen op code algemeen doeleinde
doeltreffend op niet-wetenschappelijke code
lokale geschiedenis

meer doeltreffend op number-crunching code
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 62
Orde van grootte in 1999

BTB
512 ingangen
 associatief per groepen van 4 ingangen


PHT


32 K bits
lengte geschiedenis
globaal : 12 bits
 lokaal : 10 bits


terugkeeradres-stapel (voor procedure oproepen)

diepte 8 / 32
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 63
Probleem van interferenties

de grootte van de PHT is beperkt

2 verschillende vertakkingen kunnen ge-hashed worden
op dezelfde ingang van de PHT: interferentie

analoog probleem als met caches
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 64
« Paradox » van de verjaardag



gegeven een klas met 23 leerlingen
wat is de waarschijnlijkheid dat 2 leerlingen hun verjaardag op
dezelfde dag hebben ?
antwoord: 50 %
wat heel groot is, is het aantal mogelijke koppels:
23  22
 253 koppels
2
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 65
klein voorbeeld
PHT met 256 ingangen
neem 20 ingangen random
herhaal dit meerdere keren :
conflict gemiddeld één keer op 2
en nochtans is er plaats !
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 66
reden van interferenties

start-interferenties
bij eerste keer (of keren) dat men een vertakking tegenkomt
sinds laatste context switch
 bij lange geschiedenis


capaciteit-interferenties
bij kleine PHT
 bij grote applicatie
 bij lange geschiedenis


conflict-interferenties

paradox van de verjaardag
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 67
Simulaties trace-driven
gcc
% foutieve voorspellingen
18
globale geschiedenis 10 bits
16
BHT
14
local
12
gshare
lokale geschiedenis 10 bits,
budget 50 % geschiedenis /
50 % PHT
10
8
6
4
2
0
2k
4k
8k
16k
32k
64k
128k 256k 512k
1M
totale grootte in aantal bits
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 68
gshare: lengte geschiedenis ?
gcc
aantal interferenties
vermeerdert met lengte van
geschiedenis
% foutieve voorspellingen
12
10
8
16k
6
64k
optimale geschiedenis =
compromis correlatie /
interferenties
4
2
0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
globale geschiedenis
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 69
hoe interferenties verminderen ?

vergroten van voorspeller
alsof er meer dagen zijn in een jaar
 vergroten van PHT
 bij lokale geschiedenis: aantal lokale geschiedenissen verhogen


lengte van geschiedenis verminderen


alsof er minder leerlingen zijn in de klas
beter gebruik maken van ruimte
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 70
welke voorspeller kiezen ?

grote applicaties of kleine voorspeller


soort correlatie die het nuttigst is: afhankelijk van applicatie



auto-correlatie: voorspeller met lokale geschiedenis
inter-correlatie: voorspeller met globale geschiedenis
niet alle applicaties zijn even groot


eenvoudige BHT is meest performant
welke lengte geschiedenis kiezen ?
veel context switches ?

eenvoudige BHT is meest performant
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 71
hybride voorspellers
Méta-voorspeller
wat waren de juiste
voorspellingen ?
voorspeller 1
adres en
geschiedenis
voorspeller 2
•
voorspelling
•
•
voorspeller N
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 72
een interessante hybride : BHT/global
globale
geschiedenis
adres
BHT
voorspelling
Yolande Berbers
mp
mp
mp
bp
bp
bp
bp
gsh
XOR
gshare
mp
méta
gsh
BHT
BHT
bp
bp
bp
bp
mp
mp
mp
mp
als de voorspellingen beide juist zijn of
beide verkeerd, verandert de metavoorspeller niet
Structuur en Organisatie van Computersystemen: deel 2
slide 73
gshare vs BHT/global
bij vaste grootte van PHT
gcc
gshare: 64k tellers
% foutieve voorspellingen
12
gshare
10
BHT/global
BHT/global:
8
méta : 16k tellers
6
BHT : 16k tellers
4
gshare: 32k tellers
2
0
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16
globale geschiedenis
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 74
gshare vs BHT/global
bij vaste lengte geschiedenis (10 bits)
gcc
gshare: N tellers
%foutieve voorspellingen
16
gshare
14
BHT/global
12
BHT/global:
10
méta : N/4 tellers
8
BHT : N/4 tellers
6
gshare: N/2 tellers
4
2
0
2k
4k
8k
16k
32k
64k
128k
256k
512k
PHT (aantal 2-bits tellers)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 75
BHT/global: waarom werkt het goed

BHT/global is minder gevoelig aan interferenties dan
gshare
start- en capaciteits-interferenties verminderen door BHT
 conflict-interferenties verminderen door meta-voorspeller


regelen van lengte geschiedenis gemakkelijker


men kan zich een langere geschiedenis veroorloven
beter gedrag bij context switchen, “warmt sneller op”

effect van BHT
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 76
opmerkingen bij BHT/global

gshare is enkel nuttig op enkele vertakkingen


plaats gebruikt door meta-voorspeller wordt
gecompenseerd door beter gebruik ruimte


90 % van de vertakkingen worden juist voorspeld met BHT
paradoxe van de verjaardag
gshare wordt voornamelijk gebruikt bij temporele
localiteit (kleine lussen)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 77
voorspeller van Alpha 21264
een hybride voorspeller lokaal/globaal
adres
1k
globale
geschiedenis
van 12 bits
tabel met lokale
geschiedenissen
Totaal: 29 Kbits
10 bits
1k *3
PHT
lokaal
PHT
globaal
4k*2
Meta
4k*2
voorspelling
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 78
voorspeller met stemming
adres
als een tabel een foutieve
voorspelling maakt, maar na
stemming is het een juiste
voorspelling, dan wordt de
tabel niet aangepast
bij gelijke groottes, zelfde
percentages juiste voorspellingen
dan bij hybride voorspeller
BHT/global
Yolande Berbers
f1
adres
f2
geschiedenis
f3
stemming
Structuur en Organisatie van Computersystemen: deel 2
slide 79
wat blijft er te doen ?

lengte van pipeline zal nog vergroten
nood aan betere sprongvoorspellers
 belangrijkste probleem: interferenties


onderzoekslijnen
2 niveau voorspellers enkel gebruiken voor die vertakkingen
waar correlatie helpt
 alleen « belangrijke » vertakkingen laten meespelen bij globale
geschiedenis
 hulp van compiler

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 80
dynamisch voorspellen van sprongen: conclusie

beperkingen van sprong-voorspellingen:

juistheid van voorspelling
 80-95% volgens boek, is nu hoger
– 1 foutieve voorspelling per 50-100 instructies
– zonder interferentie zou dat zijn: 1 foutieve voorsp per 200-300 instr.

kost bij verkeerde voorspelling
 mogelijkheid tot verlaging van deze kost: instructies
ophalen tegelijk van de 2 paden (genomen sprong en nietgenomen sprong): men begint hiermee momenteel
– geheugen moet twee instructies tegelijk kunnen ophalen
– caches moeten twee poorten hebben
– alternatief: enkele instructies van twee paden bijhouden
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 81
multiple issue


multiple issue = meerdere instructies tegelijk starten:
de CPI kan kleiner dan 1 worden
dit kan op twee manieren
superscalaire processoren
 met statische scheduling
 met dynamische scheduling (gebaseerd op Tomasulo)
 VLIW (very long instruction word):
in elke instructie zit een vast aantal operaties

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 82
multiple issue (vervolg)

superscalaire processoren
variabel aantal instructies worden tegelijk uitgevoerd
(bv momenteel typisch tussen 2 en 8)
 deze instructies moeten onafhankelijk zijn van elkaar en aan
een aantal voorwaarden voldoen
 dynamisch wordt bepaald hoeveel instructies tegelijk kunnen
uitgevoerd worden (in tegenstelling met VLIW)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 83
multiple issue (vervolg)

superscalaire processoren met statische scheduling

vb van superscalaire DLX (fig. 4.26)
 twee instructies tegelijk
– de ene kan zijn: load, store, branch, of integer ALU op
– de andere kan om het even welke FP operatie zijn
 twee instructies vormen paren
– gealigneerd op 64 bit
– eerst integer op, daarna FP op
 als tweede niet kan gestart worden samen met eerste
– volgende klokcyclus wordt tweede heropgehaald samen
met volgende
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 84
multiple issue (vervolg)

superscalaire processoren met statische scheduling (vervolg)
dit voorbeeld is alleen interessant indien er meerdere FP units
zijn die elk zoveel mogelijk gepipelined zijn
 anders vormt de FP-unit toch een bottleneck
 voordeel van integer en FP operaties te scheiden
 ze gebruiken verschillende registers en verschillende
functionele eenheden
– er moet dus niet veel gerepliceerd worden
– opdat FP-loads en FP-stores in parallel kunnen verlopen
met FP-op., moet FP-register-file extra poorten hebben
 dynamisch beslissen of 2 instructies te samen kunnen
gestart worden: zelfde methode als structurele hazards

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 85
multiple issue (vervolg)

superscalaire processoren met statische scheduling (vervolg)
lange hazard: een FP-load gevolgd door een FP-op die het
resultaat van de load gebruikt
 kan niet tegelijk gestart worden
 ook niet volgende cyclus, maar pas daarna
 drie instructies kunnen nu niet nuttig uitgevoerd worden
 zelfde geldt voor branch hazards
 belang van compilers die goed schedulen wordt belangrijker !!
 toepassing op de ontrolde lus uit begin van het hoofdstuk
 om maximaal processor te benutten moet men 5 x ontrollen
(zie figuur 4.27)
 gemiddelde duur van 1 lus: 2.4 (te vergelijken met 3.5 voor
de ontrolde lus voor de gewone DLX pipeline)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 86
multiple issue (vervolg)

superscalaire processoren met dynamische scheduling
kan zowel met scorebord als met Tomasulo
 twee instructies (of meer) in dezelfde klokcyclus gestart
 pipeline van de issue-stage zodat die dubbel zo snel gaat
 ontdubbelen van issue-stage, maar probleem met gelijk
gebruik van sommige elementen
– probleem vooral bij combinatie van FP-load en FP-op.
– queues vervangen reservatiestations voor load en store
– dynamisch wordt op adressen gecheckt (vb een load die
volgt op een nog niet uitgevoerde store naar hetzelfde
adres wordt tegengehouden)
– term: decoupled architecture

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 87
multiple issue (vervolg)

VLIW
in elke instructie zitten een vast aantal operaties
 1 per functionele eenheid
 niet alle operaties zijn gevuld
 het is de compiler die het parallellisme bepaalt wanneer de
instructies opgebouwd worden (dus inherent statisch)
 voordeel: geen complexe hardware nodig die dynamisch kan
bepalen of instructies tegelijk mogen uitvoeren (voordeel wordt
groot bij veel functionele eenheden)
 vb. een VLIW zou kunnen bevatten: 2 int-op., 2 FP-op., 2 gehop. en 1 sprong
 compiler moet geavanceerde scheduling technieken gebruiken
om instructies allemaal nuttig te vullen (bv trace scheduling,
zie verder)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 88
multiple issue (vervolg)

VLIW (vervolg)
nadelen
 code densiteit is lager (gaten die niet nuttig gevuld worden)
 compilatie is voor één bepaalde architectuur
 geen oude code kan nog uitgevoerd worden
 voorbeeld van VLIW instructies: fig. 4.29
 gemiddelde duur van 1 lus: 2.5
 te vergelijken met 3.5 voor de ontrolde lus voor de gewone
DLX pipeline, en 2.4 bij multiple issue met statische
scheduling

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 89
multiple issue: beperkingen

beperkingen van het aanwezige ILP in programma’s


gemiddeld aantal onafhankelijke instructies die nodig zijn =
diepte van de pipeline * aantal functionele eenheden
zeer complexe hardware
dupliceren van de nodige elementen (lineaire kost)
 de geheugenbandbreedte moet volgen
 vanuit de registers
– aantal poorten naar register-file vergroot erg
– kloksnelheid kan erdoor verminderen
 vanuit het hoofdgeheugen
– geheugen volledig met twee poorten (erg duur)
– geheugen in banken verdelen, in parallel aanspreken
– twee maal per cyclus naar het geheugen gaan

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 90
multiple issue: beperkingen (vervolg)

zeer complexe hardware (vervolg)
logica nodig om multiple issue te realiseren
 een extreem: dynamisch gescheduled met scorebord of
Tomasulo
– vraagt zeer veel hardware
 ander extreem: VLIW
– vraagt weinig hardware
 veel huidige processoren ergens in het midden
 superscalaire processoren met statische scheduling
 variaties in soorten instructies die samen kunnen, in aantal
dat tegelijk uitgevoerd worden enz.
 nieuwste processoren
 superscalaire processoren met dynamische scheduling
 DSP processoren: soms VLIW (zie later)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 91
multiple issue: beperkingen (vervolg)

beperkingen eigen aan VLIW
grootte van code
 lussen wordt zwaar ontrold om voldoende ILP te hebben;
dit vergroot al de code
 de niet totaal gevulde instructies zijn verloren ruimten
– oplossing: encoderen van deze instructies
 lock-step uitvoering
 stall van een functionele eenheid zorgt ervoor dat alles
gestopt wordt (o.a. cache miss)
 compatibiliteit van binaire code
 voor elke nieuwe versie van de processor (om de 2 jaar ?)
moet code gehercompileerd worden (of object-code migratie
of emulatie)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 92
compilerondersteuning voor gebruik ILP

drie belangrijke technieken komen hier aan bod
het detecteren en verwijderen van afhankelijkheden
 software pipelining
 trace scheduling

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 93
compilerondersteuning voor gebruik ILP

het detecteren en verwijderen van afhankelijkheden
nodig voor technieken zoals lusontrolling
 sterk bemoeilijkt door gebruik van pointers
 probleem is in het algemeen NP-compleet
 in de praktijk zijn er een aantal veel voorkomende gevallen die
gemakkelijker opgelost kunnen worden


software pipelining
herorganiseren van lussen zodat in elke nieuwe versie van de
lus instructies zitten uit verschillende lussen van
oorspronkelijke versie (zie figuur 4.30)
 zie voorbeeld op volgende slide
 methode: pak een lus, ontrol die een beetje, en combineer
instructies uit verschillende iteraties

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 94
compilerondersteuning voor gebruik ILP (vervolg)

software pipelining: oorspronkelijke lus
L:

LD
ADDD
SD
SUBI
BNEZ
F0, 0(R1)
F4, F0, F2
0(R1), F4
R1, R1, 8
R1, L
ontrolling van deze lus
iter 1
iter 2
iter 3
Yolande Berbers
LD
ADDD
SD
LD
ADDD
SD
LD
ADDD
SD
F0, 0(R1)
F4, F0, F2
0(R1), F4
F0, 0(R1)
F4, F0, F2
0(R1), F4
F0, 0(R1)
F4, F0, F2
0(R1), F4
nieuwe lus
L:
SD
ADDD
LD
SUBI
BNEZ
0(R1), F4
F4, F0, F2
F0, -16(R1)
R1, R1, 8
R1, L
Structuur en Organisatie van Computersystemen: deel 2
slide 95
compilerondersteuning voor gebruik ILP (vervolg)

software pipelining (vervolg)
 nog nodig: opbouw en einde lus moet aangepast worden
 voordeel van software pipelining tov lusontrolling
– hoeveelheid code vergroot niet te erg
 verschil tussen software pipelining en lusontrolling
– doel van lusontrolling
– wegwerken van de lusoverhead
– beter kunnen schedulen van instructies
– doel van software pipelining
– eenmaal pipeline opgezet, processor 100% bezig
houden
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 96
compilerondersteuning voor gebruik ILP (vervolg)

trace scheduling
gaat verder dan lusontrolling
 methode
 voorspelt hoe een sprong (of meerdere elkaar opvolgende
sprongen) zal genomen worden
 verplaatst dan code van na de sprong naar voren zodat een
groter stuk code zonder sprong ontstaat die dan beter kan
gescheduled worden
 als misvoorspeld: verkeerde moet teniet gedaan worden
 verplaatste code mag geen exception veroorzaken
 2 stappen: trace selection en trace compaction
 verplaatsen van code is speculatief: het voert sneller uit alleen
indien men de sprong goed gekozen heeft

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 97
hardwareondersteuning voor gebruik ILP

meerdere methodes met hardware ondersteuning
uitbreiding van instructieset met conditionele instructies
 speculatie
 statische speculatie (compilerspeculatie met hardware hulp)
 dynamische speculatie (hardware gebaseerde speculatie)


conditionele instructies
Engelse termen: conditional or predicated instructions
 idee:
 instructie bevat een conditie die ge-evalueerd wordt samen
met de uitvoering van de instructie
 als de conditie onwaar is wordt de instructie een no-op
 meest gebruikte vorm: conditionele move
 gebruikt bij heel eenvoudige if-then-code

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 98
hardwareondersteuning voor gebruik ILP (vervolg)

conditionele instructies (vervolg)

vb
C-code
if (A=0) { S=T; }
ass.-code
L:
BNEZ
MOV
R1, L
R2, R3
nieuwe code
CMOVZ
R2, R3, R1
(indien R1 0 is dan moet de move uitgevoerd worden)
 wordt gemakkelijk gebruikt voor functies als absolute waarde
 dubbel voordeel:
 minder sprongen (en alle geassocieerde vertragingen)
 stukken code zonder sprongen zijn langer
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 99
hardwareondersteuning voor gebruik ILP (vervolg)

conditionele instructies (vervolg)
wordt gebruikt in combinatie met trace speculation om code te
verplaatsen naar voren
 beperkingen
 ge-annuleerde conditionele instructies nemen toch tijd in
(niet van belang als dit een ongebruikt slot gebruikt in een
superscalaire processor)
 gelimiteerd gebruik als then-gedeelte veel instructies bevat
 gelimiteerd gebruik als if-test een AND of OR bevat
 dit soort instructies kan de oorzaak zijn van een tragere klok
(denk aan RISC-CISC discussie)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 100
hardwareondersteuning voor gebruik ILP (vervolg)

compiler-speculatie met hardwareondersteuning
beperkingen van compilergebaseerde speculatie
 teniet doen van instructies door misvoorspelde sprong
 enkel instructies die geen uitzondering kunnen veroorzaken
mogen verplaatst worden
 3 methoden van hardwareondersteuning voor speculatie
 samenwerking tussen hardware en OS om exceptions te
negeren
 gebruik van status-bits bij resultaatregisters bij uitzondering
 hardware buffers resultaten totdat zeker is dat een instructie
niet speculatief was
 deze 3 methoden worden nu één voor één besproken

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 101
hardwareondersteuning voor gebruik ILP (vervolg)

samenwerking tussen hardware en OS om uitzonderingen te negeren

speculatieve instructies zijn speciaal gemarkeerd
– alle uitzonderingen die een programma niet stoppen
(page fault, interrupts, ...) worden gewoon uitgevoerd
– bij andere uitzondering stopt het programma niet maar
is het resultaat van de speculatieve instructie
waarschijnlijk verkeerd
– indien de speculatieve instructie niet moest
uitgevoerd worden: geen probleem (resultaat toch
niet gebruikt)
– ander geval: programma werkt verder met verkeerd
resultaat
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 102
hardwareondersteuning voor gebruik ILP (vervolg)

samenwerking tussen hardware en OS om uitzonderingen te negeren
(vervolg)


in zulk een schema kan aan de compiler ook gevraagd
worden om een programma te compileren zonder
speculatie, waar de uitzonderingen wel voorkomen
herbenoeming is hier nu vaak een beperking (kan enkel
voor registers, en alleen als er voldoende registers zijn)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 103
hardwareondersteuning voor gebruik ILP (vervolg)

gebruik van status-bits bij resultaatregisters bij uitzondering
 benaming: vergif-bit (poison-bit)
 methode
– elk register heeft een vergif bit
– wanneer een register een resultaat krijgt van een
speculatieve instructie die een uitzondering veroorzaakte
wordt de vergif-bit gezet
– als een register met vergif-bit gezet gebruikt wordt, dan
wordt een uitzondering gegenereerd
 uitzondering treedt weldegelijk op, maar iets later
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 104
hardwareondersteuning voor gebruik ILP (vervolg)

hardware buffers speculatieve resultaten



belangrijkste nadeel van vorige twee methoden:
herbenoeming is vaak een beperking (kan enkel voor
registers, en alleen bij voldoende registers)
oplossing: bufferen door hardware van resultaat van
speculatieve instructies (lijkt op Tomasulo)
Engelse term: boosting
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 105
hardwareondersteuning voor gebruik ILP (vervolg)

hardware buffers speculatieve resultaten (vervolg)

methode
– een boosted instructie wordt speculatief uitgevoerd,
gebaseerd op een (nog niet uitgevoerde) sprong
– het resultaat wordt gebufferd, en eventueel gebruikt
door andere boosted instructies
– na uitvoering sprong
– of boosted instructies worden ‘commit’
– of boosted instructies worden genegeerd
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 106
hardwareondersteuning voor gebruik ILP (vervolg)

hardware-gebaseerde speculatie
combinatie van 3 methodes
 dynamische sprong-voorspelling
 speculatie (om instructies uit te voeren voordat men de
uitkomst van een sprong kent)
 dynamisch schedulen van instructies (opdat instructies
elkaar mogen ‘voorsteken’)
 in essentie is dit een data-flow methode: operaties mogen
uitvoeren van zodra hun operanden gekend zijn

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 107
hardwareondersteuning voor gebruik ILP (vervolg)

hardware-gebaseerde speculatie (vervolg)
voordelen tov compilergebaseerde speculatie
 compilers hebben problemen om afhankelijkheden te
ontdekken bij gebruik van pointers
– hardware-gebaseerde sprongvoorspelling is voor
sommige toepassingen veel beter (integer-toepassingen)
 behoudt een precies uitzonderings-model
 vraagt geen extra code van compiler om speculatie te-niet te
doen bij verkeerde voorspelling
 oude, of niet speciaal hiervoor gecompileerde code, kan
gebruik maken van deze techniek
 nadeel: complex, vraagt veel extra hardware

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 108
hardwareondersteuning voor gebruik ILP (vervolg)

hardware-gebaseerde speculatie (vervolg)
methode die hier besproken wordt: uitbreiding van Tomasulo
 basisgedachte
 splitsen van doorgeven van resultaten naar andere instructie
met het echt beëindigen van de instructie
 wachten tot een instructie commit voordat resultaten echt
weggeschreven worden
 gevolg
 uitvoeren van instructies mag uit volgorde
 committen van instructies moet wel in juiste volgorde
 nodige hardware: reorder buffer (zie volgende slide)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 109
hardwareondersteuning voor gebruik ILP (vervolg)

hardware-gebaseerde speculatie (vervolg)
reorder buffer (vervolg)
 buffer die resultaten bijhoudt tot commit
 zijn extra virtuele registers (operanden hier uitgehaald)
 reorder buffer en vroegere store buffer hebben een
gelijkaardige functie; ze worden nu bij elkaar gevoegd
(samen met load buffer)
 elke ingang heeft drie velden
– type van instructie (sprong, store, of ALU op.)
– bestemmingsveld (registernummer)
– waarde
 reservatie stations blijven bestaan
 organisatie: zie figuur 4.34

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 110
hardwareondersteuning voor gebruik ILP (vervolg)

hardware-gebaseerde speculatie (vervolg)

4 stappen in de uitvoering
 issue
– kan gebeuren als er een vrije plaats is in het goede
reservatiestation en in de reorder buffer
– het nummer in de reorder buffer wordt doorgegeven
aan het reservatie station (voor het resultaat)
 execute
– als beide operanden van een instructie in een reservatie
tabel aanwezig zijn kan de instructie uitgevoerd worden
 write result
– als het resultaat aanwezig is wordt het op de CDB gezet
 commit (zie volgende slide)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 111
hardwareondersteuning voor gebruik ILP (vervolg)

hardware-gebaseerde speculatie (vervolg)

4 stappen in de uitvoering (vervolg)
 commit
– als hoofd van reorder buffer een instructie is waar een
resultaat aanwezig is, wordt deze instructie ge-commit
– resultaat gaat naar register
– ingang in reorder buffer wordt vrijgegeven
– als hoofd van reorder buffer misvoorspelde sprong is,
dan wordt de hele reorder buffer leeggemaakt en begint
men uit te voeren vanaf het juiste adres
– als hoofd van reorder buffer een juist voorspelde sprong
is, dan niets
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 112
hardwareondersteuning voor gebruik ILP (vervolg)

hardware-gebaseerde speculatie (vervolg)
behandelen van exceptions
 wanneer een instructie een exception veroorzaakt wordt dit
bijgehouden in de reorder buffer
 als hoofd van reorder buffer een instructie is die een
uitzondering veroorzaakte: voer de uitzondering uit
 dit geeft preciese exceptions
 voorbeelden: fig. 4.35 en fig. 4.36

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 113
haalbare resultaten

mogelijke kenmerken van de processoren van de jaren
2000 - 2005
tot 64 instructies die tegelijk gestart worden
(zover zijn we nog niet)
 sprong voorspeller met 1K ingangen en een return voorspeller
met 16 ingangen (we zijn al verder)
 register herbenoeming met 64 extra integer en 64 extra FP
registers (ja, dit doen we al)
 fig. 4.47 geeft mogelijk parallellisme aan bij variërend window
op programma (bemerk verschil tussen FP programma's en
integer programma's)


fig. 4.60: “huidige” mogelijkheden (boek is van 1996)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 114
Download