Les 9 gepijplijnde micro architecturen
This presentation is the property of its rightful owner.
Sponsored Links
1 / 62

Les 9: Gepijplijnde micro-architecturen PowerPoint PPT Presentation


  • 32 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Les 9: Gepijplijnde micro-architecturen

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


Les 9 gepijplijnde micro architecturen

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

IF01000

ID00100

EX00010

MEM00001

WB10000


Controletabel

Controletabel

MEM

WB

EX

S2

Alu

MemW

Res

RegW

S1

MemR

PC

Cmp

add10001xxx0 01 01

addi 11001xxx00101

load 11001xxx01001

store 11001xxx10x00

jump 0100111100110

brge 0100111000110


Les 9 gepijplijnde micro architecturen

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)

  • controletransferjump 0x10(pc)

    brge r1, 0x10(pc)


Les 9 gepijplijnde micro architecturen

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


Les 9 gepijplijnde micro architecturen

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


Les 9 gepijplijnde micro architecturen

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)


Les 9 gepijplijnde micro architecturen

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)


Les 9 gepijplijnde micro architecturen

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)


Les 9 gepijplijnde micro architecturen

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


Les 9 gepijplijnde micro architecturen

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


Les 9 gepijplijnde micro architecturen

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


Les 9 gepijplijnde micro architecturen

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


Les 9 gepijplijnde micro architecturen

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

constlr2,6

const gr97,g

consthgr97,g

storegr96,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: cmpr1,r2

jne einde

… lus …

jumploop

einde:


Branch backward taken forward not taken

Branch backward taken/forward not taken

cmpr1,0

jle einde

loop: … lus …

cmpr1,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.


Les 9 gepijplijnde micro architecturen

Pauze


  • Login