les 9 gepijplijnde micro architecturen n.
Download
Skip this Video
Download Presentation
Les 9: Gepijplijnde micro-architecturen

Loading in 2 Seconds...

play fullscreen
1 / 62

Les 9: Gepijplijnde micro-architecturen - PowerPoint PPT Presentation


  • 60 Views
  • Uploaded on

Les 9: Gepijplijnde micro-architecturen. The maximum speedup that can be expected from parallel algorithms is limited by the proportion of parts that must be computed sequentially - Amdahl's Law. Inhoud. Sequentiële gepijplijnde machine Parallelle gepijplijnde machine Hazards

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Les 9: Gepijplijnde micro-architecturen' - shiloh


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
les 9 gepijplijnde micro architecturen

Les 9: Gepijplijnde micro-architecturen

The maximum speedup that can be expected from parallel algorithms is limited by the proportion of parts that must be computed sequentially - Amdahl's Law

inhoud
Inhoud
  • Sequentiële gepijplijnde machine
  • Parallelle gepijplijnde machine
  • Hazards
    • Structurele hazards
    • Controlehazards
    • Datahazards
  • Andere microarchitecturen
samenvatting controlesignalen
Samenvatting controlesignalen

Mar=0 MemR=1 IRW=1 S1=0 S2=1

Alu=plus PCSrc=1 Cond=0, PCW=1

IF

S1=0 S2=2 Alu=add

ID

S1=2

S2=0

Alu=add

S1=2

S2=2

Alu=add

S1=2 S2=2 Alu=add

PCSrc=0

PCW=1

Cond=0

S1=1 S2=0

Alu=cmpge

PCSrc=0

PCW=1 Cond=1

EX

Mar=1

MemW=1

Mar=1

MemR=1

MEM

C=1 RegW=1

C=0

RegW=1

WB

meer cycli per instructiemachine
Meer-cycli-per-instructiemachine

ra

0

PC

IR

Register-

bestand

geheugen

rb

A

R

S1

rd

decoder

B

LMDR

Din

4

PCSrc

offset

Alu

S2

PCW

Mar

MemR

RegW

MemW

IRW

C

cond

Controle-eenheid

slide5

IF

ID

EX

MEM

WB

0

PC

4

Cmp

+

Data

geheugen

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

PC

MemW

MemR

offset

Alu

S2

RegW

w2

w1

w3

Controle-eenheid

w4

w0

controle van de pijplijnregisters
Controle van de pijplijnregisters

w0

w1

w2

w3

w4

IF 0 1 0 0 0

ID 0 0 1 0 0

EX 0 0 0 1 0

MEM 0 0 0 0 1

WB 1 0 0 0 0

controletabel
Controletabel

MEM

WB

EX

S2

Alu

MemW

Res

RegW

S1

MemR

PC

Cmp

add 1 0 001 xxx 0 0 1 0 1

addi 1 1 001 xxx 0 0 1 0 1

load 1 1 001 xxx 0 1 0 0 1

store 1 1 001 xxx 1 0 x 0 0

jump 0 1 001 111 0 0 1 1 0

brge 0 1 001 110 0 0 1 1 0

slide8

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

Controle-

eenheid

soorten instructies
Soorten instructies
  • ALU-instructies add r1, r2, r3

addi r1,19, r3

  • load/store load r1, 0x100(r2)

store r1,0x100(r2)

  • controletransfer jump 0x10(pc)

brge r1, 0x10(pc)

slide10

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

Controle-

eenheid

add r1,r2,r3

slide11

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

Controle-

eenheid

addi r1,19,r3

slide12

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

Controle-

eenheid

load r1, 0x100(r2)

slide13

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

Controle-

eenheid

store r1, 0x100(r2)

slide14

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

Controle-

eenheid

jump 0x10(pc)

slide15

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

Controle-

eenheid

brge r1,0x10(pc)

sequenti le pijplijncyclus
Sequentiële pijplijncyclus

t

F

D

E

M

W

i1

i2

F

D

IF

ID

EX

MEM

WB

i1

i2

i1

i2

Pijplijn: fetch

i1

Pijplijn: decode

i1

Pijplijn: execute

Pijplijn: memory

i1

Pijplijn: writeback

inhoud1
Inhoud
  • Sequentiële gepijplijnde machine
  • Parallelle gepijplijnde machine
  • Hazards
    • Structurele hazards
    • Controlehazards
    • Datahazards
  • Andere microarchitecturen
parallelle pijplijncyclus
Parallelle pijplijncyclus

t

i1

i2

i3

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

i3

i2

IF

ID

EX

MEM

WB

i1

i3

i2

i1

i3

i2

i1

i3

i2

i1

i3

i2

i1

slide19

IF

ID

EX

MEM

WB

0

PC

4

+

Data

geheugen

PC

instructie-

geheugen

ra

Register-

bestand

rb

0

S1

rd

decoder

Res

Din

MemW

MemR

offset

Alu

RegW

S2

Cmp

CPI: 5 → 1

IPC: 0,2 → 1

Controle-

eenheid

slide20

EX

0

0

PC

WB

MEM

4

+

PC

Cmp

Data

geheugen

ID

instructie-

geheugen

ra

Register-

bestand

rb

S1

rd

decoder

Res

Din

IF

MemW

MemR

offset

Alu

RegW

S2

Controle-

eenheid

gepijplijnde architectuur
Gepijplijnde architectuur

Fetch

Decode

Execute

Memory

Write

back

data

0

cond

4

smdr

Data in

pc

pc1

+

mar

Adres

lmdr

Reg.

file

A

res1

res2

B

alu

inst.

IR

IR1

IR2

IR3

ST1

ST2

ST3

inhoud2
Inhoud
  • Sequentiële gepijplijnde machine
  • Parallelle gepijplijnde machine
  • Hazards
    • Structurele hazards
    • Controlehazards
    • Datahazards
  • Andere microarchitecturen
pijplijnhazards
Pijplijnhazards
  • Hazards zijn afwijkingen van de standaard sequentiële interpretatie van de programmatekst
  • Ze worden veroorzaakt door de overlappende uitvoering van instructies die na elkaar komen
pijplijnhazards1
Pijplijnhazards
  • structurele hazards: soms wensen twee instructies in verschillende trappen dezelfde hardware te gebruiken.
  • controlehazards: instructies worden blind opgehaald en partieel uitgevoerd: soms is nog niet gekend welke instructie moet opgehaald worden.
  • datahazards: een object wordt gebruikt door overlappende instructies. Soms is de gewenste waarde nog niet beschikbaar.
structurele hazard
Structurele hazard

t

ldw

ldw

brge

add

addi

stw

F

D

E

M

W

Opl: ontdubbelen

hardware,

extra poorten

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

Pijplijnhazards: structureel

inhoud3
Inhoud
  • Sequentiële gepijplijnde machine
  • Parallelle gepijplijnde machine
  • Hazards
    • Structurele hazards
    • Controlehazards
    • Datahazards
  • Andere microarchitecturen
controlehazard
Controlehazard

in vlucht

t

ldw

ldw

brge

add

addi

stw

F

D

E

M

W

Controle

hazard

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

Pijplijnhazards: controle

controlehazards oplossingen
Controlehazards: oplossingen
  • Instructies in uitvoering vervangen door NOPs “pijplijnbellen” indien de sprong blijkt genomen te moeten worden
  • Instructies gewoon verder laten uitvoeren (vertraagde controletransfer)
  • Sprongen ‘voorspellen’
controlehazards stopzetten uitvoering pijplijnbellen
Controlehazards: stopzetten uitvoering  pijplijnbellen

in vlucht

t

ldw

ldw

brge

add

addi

stw

F

D

E

M

W

Controle

hazard

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

slide30

EX

0

PC

WB

0

MEM

4

+

PC

Cmp

Data

geheugen

ID

instructie-

geheugen

ra

0

Register-

bestand

rb

S1

rd

decoder

Res

Din

IF

MemW

MemR

offset

Alu

RegW

S2

0

Controle-

eenheid

controlehazard vertraagde controletransfer
Controlehazard: vertraagde controletransfer

in vlucht

t

ldw

ldw

brge

add

addi

stw

F

D

E

M

W

Controle

hazard

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

controlehazards
Controlehazards

addi r0,10,r1

br 100

addi r1,1,r1

muli r1,3,r1

….

100: stw r1,0x0100(r0)

Zonder vertraagde

sprong (klassiek)

addi r0,10,r1

br 100

nop

nop

stw r1,0x0100(r0)

Met vertraagde

sprong

addi r0,10,r1

br 100

addi r1,1,r1

muli r1,3,r1

stw r1,0x0100(r0)

TRACE

slide33

PC

+

EX

WB

0

MEM

0

4

Cmp

+

Data

geheugen

ID

instructie-

geheugen

ra

0

Register-

bestand

rb

rd

decoder

Res

Din

IF

MemW

MemR

offset

Alu

RegW

PC

S2

Controle-

eenheid

vertraagde sprong
Vertraagde sprong

add r1,r1,1

jump next

nop

next: or r2, r1, r0

jump next

add r1,r1,1

next: or r2, r1, r0

vertraagde sprong1
Vertraagde sprong

add r1,r1,1

jump next

nop

next: or r2, r1, r0

add r1, r1, 1

jump next2

or r2, r1, r0

next: or r2, r1, r0

next2:

vertraagde sprong sparc
Vertraagde Sprong / Sparc

cmp r1, 1

breq next

nop

next: mov 2, r1

cmp r1, 1

breq,a next2

mov 2, r1

next: mov 2, r1

next2:

procedure oproep
Procedure-oproep

int vijfvoud(int n)

{

if (n > 0)

return n * 5;

else

return 0;

}

int g;

main()

{

g = vijfvoud(6);

}

vijfvoud:

jmpf lr2,positief

sll gr96,lr2,2

jmpi lr0

const gr96,0

positief:

jmpi lr0

add gr96,gr96,lr2

call lr0,vijfvoud

const lr2,6

const gr97,g

consth gr97,g

store gr96,gr97

sprongvoorspelling
Sprongvoorspelling

BP

PC

+

EX

WB

MEM

0

4

Cmp

+

Data

geheugen

ID

instructie-

geheugen

ra

0

Register-

bestand

rb

rd

decoder

Res

Din

IF

MemW

MemR

offset

Alu

RegW

PC

S2

Controle-

eenheid

sprongvoorspellers
Sprongvoorspellers
  • Branch Target Buffer
  • Statische voorspellers
    • Niet-genomen
    • Backward taken/forward not taken
  • Dynamische voorspellers
    • 1-bit voorspeller
    • 2-bit voorspeller
    • Lokaal
    • Globaal
branch target buffer
Branch Target Buffer

PC

adres sprong

bestemming

+ RAS

voorspelling

voorspel niet genomen
Voorspel niet-genomen

loop: cmp r1,r2

jne einde

… lus …

jump loop

einde:

branch backward taken forward not taken
Branch backward taken/forward not taken

cmp r1,0

jle einde

loop: … lus …

cmp r1,r2

jne loop

einde:

eenvoudige dynamische voorspeller
Eenvoudige dynamische voorspeller

sprongtabel

1

0

0

1

1

1

1

0

laagste bits

PC

voorspel genomen

sprongtabel aanpassen

als uitkomst gekend

1=genomen

0=niet genomen

2 bit dynamische voorspeller
2-bit dynamischevoorspeller

sprongtabel

voorspel genomen

11

01

00

10

10

11

11

00

11

10

laagste bits

PC

01

00

voorspel

niet-genomen

1=genomen

0=niet-genomen

genomen

niet-genomen

lokale dynamische voorspeller
Lokale dynamische voorspeller

geschiedenistabel

sprongtabel

11010101

01111111

00000000

10101010

10001000

11111111

11111111

00000000

00

01

00

10

..

11

..

11

laagste bits

PC

voorspel

genomen

1=genomen

0=niet genomen

globale dynamische voorspeller
Globale dynamische voorspeller

+

1

sprongtabel

1

Globale-

geschiedenis-

register

0

00

01

00

10

10

11

11

11

1

0

0

1011111111

0

1

voorspel genomen

PC

1=genomen

0=niet genomen

inhoud4
Inhoud
  • Sequentiële gepijplijnde machine
  • Parallelle gepijplijnde machine
  • Hazards
    • Structurele hazards
    • Controlehazards
    • Datahazards
  • Andere microarchitecturen
datahazard
Datahazard

t

ldw r1,

ldw r2,

addi r0,10,r3

add r3,5,r4

addi

sub

F

D

E

M

W

data

hazard

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

Pijplijnhazards: data

datahazards oplossingen
Datahazards oplossingen
  • Instructies ver genoeg uit elkaar zetten
  • Blokkeren pijplijn
  • Forwarding
oplossing datahazards herschikken instructies nops
Oplossing datahazards:herschikken instructies+nops

t

ldw r1,

ldw r2,

addi r0,10,r3

nop

nop

add r3,5,r4

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

oplossing datahazards pijplijnblokkeringen stalls
Oplossing datahazards:pijplijnblokkeringen (stalls)

t

ldw r1,

ldw r2,

addi r0,10,r3

addi r3,5,r4

addi

sub

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

D

D

E

M

W

F

F

F

D

E

M

F

D

E

oplossing datahazards forwarding
Oplossing datahazards:forwarding

t

ldw r1,

ldw r2,

addi r0,10,r3

addi r3,5,r4

addi

sub

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

forwarding
Forwarding

EX

0

0

PC

WB

MEM

4

+

PC

Cmp

Data

geheugen

ID

instructie-

geheugen

ra

Register-

bestand

rb

S1

rd

decoder

Res

Din

IF

MemW

MemR

offset

Alu

RegW

S2

Controle-

eenheid

pijplijnen
Pijplijnen
  • In principe per klokperiode een nieuwe instructie
  • Elke instructie vraagt 5 klokperioden voor uitvoering
  • Vijf instructies tegelijkertijd in verschillende stadia van uitvoering
  • Klokfrequentie hangt af van trapvertraging
  • De klokfrequentie kan verhogen door het aantal trappen sterk te verhogen
  • Aantal instructies/cyclus: <1
prestatiematen
Prestatiematen
  • IPC: instructies per cyclus
  • CPI: cycli per instructie
  • MIPS: miljoen instructies per seconde
  • MFLOPS: miljoen floating point operaties per seconde (ook GFLOPS, TFLOPS)
  • Uitvoeringstijd T=(CPI x instructies)/Freq
inhoud5
Inhoud
  • Sequentiële gepijplijnde machine
  • Parallelle gepijplijnde machine
  • Hazards
    • Structurele hazards
    • Controlehazards
    • Datahazards
  • Andere microarchitecturen
superscalaire architectuur
Superscalaire architectuur

t

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

F

D

E

M

W

soorten afhankelijkheden
Soorten Afhankelijkheden
  • RAW: read after write: afhankelijkheid
  • WAR: write after read: anti-afhankelijkheid
  • WAW: write after write: anti-afhankelijkheid
  • RAR: read after read: geen afhankelijkheid
superscalaire uitvoering
Superscalaire uitvoering

Instructie-venster

Fetch &

Decode

Commit

Commitbreedte

Fetchbreedte

Issuebreedte

E

E

E

E

vliw very long instruction word processors
VLIW: Very Long Instruction Word processors

E

E

F

F

D

D

E

E

WB

WB

E

E

E

E

Elke instructie bevat een aantal operaties die gegarandeerd parallel kunnen uitgevoerd worden (evtl. nop).

epic explicitly parallel instruction computing
EPIC: Explicitly Parallel Instruction Computing

Instruction bundle

Operatie 1

Operatie 2

Operatie 3

Temp

41 bits

41 bits

41 bits

5 bits

Template bepaalt welke instructies er parallel kunnen uitgevoerd worden.