Les 9 gepijplijnde micro architecturen
Download
1 / 62

Les 9: Gepijplijnde micro-architecturen - PowerPoint PPT Presentation


  • 59 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


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


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


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)


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


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


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)


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)


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)


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


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


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


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


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.



ad