You are on page 1of 33

Paquet de Fetch et dExcution

Base sur la structure VLIW (Very Long Instruction Word)


Instruction : 4 octets = 32 bits
PE : Paquet Excutable : groupe dinstructions excutables en //
pendant un seul cycle.
PF : Paquet Fetch form de 8 instructions.
1PF peut contenir 1 PE (si toutes les 8 instructions en //)
ou 8 PE (pas dinstructions en // ).
Le LSB dune instruction (p-bit) indique si la prochaine
instruction appartient au mme PE (si 1) ou non (si 0).

Paquet de Fetch et dExcution


Exemple 1 :
Instruction A
Instruction B
Instruction C
Instruction D
Instruction E
Instruction F
Instruction G
Instruction H

Un PF avec 3 PEs le LSB (p-bit) de chaque inst :


31

0 31

1
A

0 31

0
B

0 31

1
C

0 31

1
D

0 31

0
E

0 31

0 31

1
F

1
G

0
H

Paquet de Fetch et dExcution


Exemple 2 :

Paquet de Fetch et dExcution


Exemple 3 :

Exemple 4 :

Pipeline
PG

PS

PW

Fetch

PR

DP

DC

Decode

E1

E2

E3

E4

E5

E6

Execute

tapes dextraction du Programme


(fetch, PF)

PG
Gnration
dadresse
Dans le CPU

PS
Transmission de
ladresse
( la mmoire)

PW
Attente accs
mmoire

PR
Rception et lecture
du PF
(au CPU)

Pipeline
tape du dcodage
dinstruction (D)

DP
Rpartition des
instructions dun PF sous
forme de PE

Jusqu 6 cycles et tout


dpend de
linstruction !!
E1
courtes inst (ADD,
SUB, AND, OR,
XOR, etc)

DC
Dcodage des PEs

tape dexcution
(E)

E2
Instruction MPY

E3; E4
Slots de
retard

E5
Chargement
des valeurs
dans un
registre

E6
Branchement

Etage rserve pour les instructions longues


6

Pipeline
Considrons les 3 exemples suivants :
Srie

1 cycle
2 cycles

MVK

.S1

MVK

.S1

ADD

.L1

ADD

.L1

MPY

5 cycles

Parallle partielle

Parallle totale

MVK

.S1

MVK

.S2

.S1

ADD

.L1

||

||

ADD

.L2

.S2

||

MPY

.M1

||

||

.M1

MPY

MPY

.M1

.M1

||

LDW

.D1

.D1

||

LDB

.D2

MVK
MVK

ADD

.L1

||
LDW

ADD

.L2

||
LDB

MPY
||

.M1

Pipeline
1er exemple : Excution en srie

MVK

.S1

MVK

.S1

ADD

.L1
PG

ADD

.L1

MPY
.M1
MPY
.M1
LDW
.D1
LDB
.D1

Cycle = 1
Program Fetch
PS
MVK
ADD
MVK
ADD
MPY
MPY
LDW
LDB

PW

PR

Decode
DP

DC

Execute
E1

E2

E3

Done
E4

E5

E6

Pipeline
Cycle = 2
MVK
MVK

.S1
.S1

ADD

PG
.L1

ADD

.L1

Program Fetch
PS

MVK

MPY
FP2

.M1
MPY
.M1
LDW
.D1
LDB
.D1
9

PW

ADD
MVK
ADD
MPY
MPY
LDW
LDB

PR

Decode
DP

DC

Execute
E1

E2

E3

Done
E4

E5

E6

Pipeline
MVK

.S1

MVK

.S1

ADD

PG
.L1

ADD

.L1

MPY
.M1
MPY
.M1
LDW
.D1
LDB
.D1
10

Cycle = 3
Program Fetch
PS

PW

PR
MVK

FP3

FP2

ADD
MVK
ADD
MPY
MPY
LDW
LDB

Decode
DP

DC

Execute
E1

E2

E3

Done
E4

E5

E6

Pipeline

MVK

.S1

MVK

.S1

ADD

.L1
PG

ADD

.L1

MPY
.M1
MPY
.M1
LDW
.D1
LDB
.D1

11

Cycle = 4
Program Fetch
PS

PW

PR

Decode
DP

MVK
ADD
MVK
ADD
MPY
MPY
LDW
LDB

DC

Execute
E1

E2

E3

Done
E4

E5

E6

Pipeline
Un seul PE par cycle entre dans le pipeline en arrivant ltape
DC (Decode) :

MVK

.S1

MVK

.S1

ADD

.L1

ADD

.L1

Cycle = 5
PF
PF

MPY
.M1
MPY
.M1
LDW
.D1
LDB
.D1

12

PF2

Execute

Decode
DP
MVK
MVK
ADD
ADD
MPY
MPY
LDW
LDB

DC

E1

E2

E3

Done
E4

E5

E6

Pipeline

Cycle = 6

PF

Decode

Execute

PFDPDCE1E2E3E4E5E6

PF2

13

MVK
ADD
ADD
MPY
MPY
LDW
LDB

+
MVK

Done

Pipeline
Cycle = 7

PF

Decode

Execute

PFDPDCE1E2E3E4E5E6

PF2

14

MVK
ADD
ADD
MPY
MPY
LDW
LDB

MVK

Done

Pipeline
Cycle = 8

PF

Execute

Decode

PFDPDCE1E2E3E4E5E6

Done

MVK

MVK

PF2

15

ADD
ADD
MPY
MPY
LDW
LDB

Pipeline

Cycle = 9

PF

Execute

Decode

PFDPDCE1E2E3E4E5E6

Done

MVK

PF2

16

ADD
ADD
MPY
MPY
LDW
LDB

MVK

Mmoire interne
Program
Cache
(L1P)

Internal
Core

RAM or
Cache
(L2)

EMIF

Data
Cache
(L1D)

L1

Level 2

Level 3
17

Mmoire interne
CPU cherche
une donne

La donne
dans L1 ?

Oui
Envoyer la
donne vers
Core

Non

La donne
dans L2 ?

Non

Copier la donne
de la mmoire
externe vers L2

Oui

Copier la donne
de L2 vers L1

18

Mmoire cache L1
L1P
(16ko)

DSP
C64

L1D
(16ko)

L1P : Le C6x contient une mmoire cache programme de 32 bits de bus


dadresses et de 256 bits (bus de donnes).
Not que : 1 PF = 8 instructions = 8 * 32 bits = 256 bits
L1D : Le C64x contient une mmoire cache de donnes de 64 bits (bus
de donnes) et de 32 bits (bus dadresses).
Remarque : Le C62x et le C67x contiennent 32 bits de bus de donnes.

19

Jeu dinstructions
Arithmtique
ADD(U)
ADD2
ADD4
SUB(U)
SUB2
SUB4

Nb de
cycles
dexcutio
n

20

Addition entire 32/40 bits signe (non signe)


2 additions entires 16 bits
4 additions entires 8 bits
Soustraction entire 32/40 bits signe (non signe)
2 soustractions entires 16 bits
4 soustractions entires 8 bits

Jeu dinstructions
Arithmtique
ADD(U)
ADD2
ADD4
SUB(U)
SUB2
SUB4

Nb de
cycles
dexcutio
n

21

Addition entire 32/40 bits signe (non signe)


2 additions entires 16 bits
4 additions entires 8 bits
Soustraction entire 32/40 bits signe (non signe)
2 soustractions entires 16 bits
4 soustractions entires 8 bits

Jeu dinstructions
Multiplication entires
MPY
MPYH
MPYLH
MPYHL
MPYU4
MPYSU4
MPYUS4

Nb de
cycles
dexcutio
n

22

16 LSB signs x 16 LSB signs => 32 bits


16 MSB signs x 16 MSB signs => 32 bits
16 LSB signs x 16 MSB signs => 32 bits
16 MSB signs x 16 LSB signs => 32 bits
4 Multiplication 8bits par 8 bits, non sign
4 Multiplication 8bits sign par 8 bits non sign
4 Multiplication 8bits non sign par 8 bits sign

Jeu dinstructions
Multiplication entires
MPY
MPYH
MPYLH
MPYHL
MPYU4
MPYSU4
MPYUS4

Nb de
cycles
dexcutio
n

23

16 LSB signs x 16 LSB signs => 32 bits


16 MSB signs x 16 MSB signs => 32 bits
16 LSB signs x 16 MSB signs => 32 bits
16 MSB signs x 16 LSB signs => 32 bits
4 Multiplication 8bits par 8 bits, non sign
4 Multiplication 8bits sign par 8 bits non sign
4 Multiplication 8bits non sign par 8 bits sign

Jeu dinstructions
5
1

Accs mmoire
LD(B/H/W/DW)(U)
ST(B/H/W/DW)(U)

1
1
1

Affectation
MV
MVK
MVKH

24

Chargement (octet, demi mot, mot,2 mots) sign (non sign)


Stockage (octet, demi mot, mot, 2 mots) sign (non sign)
Transfre dun registre vers un autre registre
Transfre une constante 16 bits LSB signe vers un registre
Transfre une constante 16 bits MSB signe vers le MSB
dun registre

Dcalage
SHL
SHR2
SSHL
SHLMB
SHRMB

Dcalage gauche 32/40 bits


Dcalage droit 16 bits sign
Dcalage gauche 32/40 bits avec saturation
Dcalage gauche et arrangement en octet
Dcalage droit et arrangement en octet

Branchement
B

Branchement conditionnel

Nb de
cycles
dexcutio
n

Jeu dinstructions et units


.L
ABS
ABS2
ADD(U)
ADD2
ADD4
AND
MVK
OR
SHLMB
SHRMB
SUB(U)
SUB2
SUB4
XOR

25

.M
MPY
MPYSU4
MPYUS4
MPYU4

.S
ADD2
AND
B
MVK
MVKH
OR
SHL
SHLMB
SHR2
SHRMB
SUB2
XOR

.D
ADD(U)
ADD2
AND
LDB
LDDW
MVK
OR
STH
STDW
SUB(U)
SUB2
XOR
...

Modes dadressages
Ladressage le plus utilis est le mode linaire
indirect.
Supposant que R est un registre dadresse :
*R : Le registre R pointe sur une adresse mmoire.
*R++(d) : Le registre R contient une adresse mmoire en
plus il y aura une post-incrmentation c..d aprs une lecture
R va sauto incrmenter par une valeur (d) qui est 1 par
dfaut.
*++R(d) : Mme chose que le cas prcdent mais
maintenant une pr-incrmentation.
26

*+R(d) : Ladresse est pr-incrmente de tel sorte que

Syntaxe des instructions


Add / Soustraction / Multiplication :
ADD .L1 A3, A7, A8

; A3 + A7 A8

Si le rsultat est stock dans B8, on choisie lunit .L2

SUB .S1

A1, 1, A2

2 instructions en parallle :
MPY .M2 A7, B7, B6
|| MPYH .M2 A7, B7, A6

; A1 1 A2
; LSB(A7) * LSB(B7) B6
; MSB(A7) * MSB(B7) A6

M1
Le choix de lunit de traitement (1 ou 2) dpend de la
destination.
27

Syntaxe des instructions


Load / Store :
LDH .D2 *B2++, B7 ;
LDH .D1 *A2++, A7 ;

Charger (B2) B7, Incrmenter B2


Charger (A2) A7, Incrmenter A2

LDH : chargement de 16 bits (H: half word).


LDW : chargement de 32 bits (W: word).

STW .D1

A1, *+A4[20] ;

Store A1 (A4) offset par 20


stock 32 bits de A1 dans une mmoire dont ladresse est spcifie
par A4 dcal par 20 mots (32 bits) c..d. 80 octets.
Not que le continu de A4 ne va pas changer aprs le stockage
puisque
une seule + est utilise.

28

Syntaxe des instructions


Branchement / Move :
Move 16 LSBs de 0x20 A1
MVK .S1
0x20, A1;
Loop: MVK .S1 0x10, A4 ; Move 16 LSBs de 0x10 A4
MVKH .S1 0x15, A4 Move 16 de 0x15 16 MSBsA4
;

SUB
[A1] B
NOP
STW

29

Dcrmenter A1

.S1
.S2
5;
.D1

A1, 1, A1;
Loop ;
A3, *A7 ;

Branchement Loop si A10


5 instructions de No-operation
Stocker A3 dans (A7)

Contraintes
Contrainte chemin crois :
Le code suivant est valide :
ADD .L1x
A1, B1, A0
|| MPY .M2x A2, B2, B3
Le code suivant nest pas valide :
ADD .L1x
A1, B1, A0
|| MPY .M1x A2, B2, B3

M2
x

30

Contraintes
Contrainte stockage/chargement :
Les registres adresses utiliss doivent tre du mme chemin que
lunit .D :
Le code suivant est valide :
LDW .D1
*A1, A2
|| LDW .D2
*B1, B2
Le code suivant nest pas valide :
LDW .D1
*A1, A2
|| LDW .D2
*A3, B2

*B
3

31

Contraintes
Le chargement et le stockage en parallle ne peuvent pas tre du
mme chemin de registres (les registres A et les registres B) :

Le code suivant est valide :


LDW .D1
*A0, B1
|| STW .D2
A1, *B2
Le code suivant est valide :
LDW .D1
*A0, B1
|| LDW .D2
*B2, A1
Le code suivant nest pas valide :
LDW .D1 *A0, A1
|| STW .D2
A2 ,*B2

32

FIN Chapitre

33

You might also like