Étude du pipeline pour le TMS320C64x - Cours DSP, Slides of Microprocessors

Digital Signal Processor how it works

Typology: Slides

2019/2020

Uploaded on 06/22/2020

firas-madanina
firas-madanina 🇹🇳

5 documents

1 / 30

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Plan 125
Ihsen Benhnia Digital Signal Processor
Chapitre III : Étude du pipeline
pour le TMS320C64x
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e

Partial preview of the text

Download Étude du pipeline pour le TMS320C64x - Cours DSP and more Slides Microprocessors in PDF only on Docsity!

Plan 125

Ihsen Benhnia Digital Signal Processor

Chapitre III : Étude du pipeline

pour le TMS320C64x

TMS320C6xxx

Cours 2 128

Unités fonctionnelles

Deux chemins de données : A et B

Chaque chemin contient 4 unités de traitement :

(.M) : Utilisée pour les opérations de Multiplication

(.L) : Utilisée pour les opération logique et arithmétique

(.S) : Utilisée pour les Branchement et manipulation binaire

(.D) : Utilisée pour Chargement et stockage des données

64 registres de 32 bits (A0 à A31) et (B0 à B31)

2 chemins croisés (1x et 2x) ( cross path )

.L1 .S1 .M1 .D1 .L2 .S2 .M2 .D

Registre A0 à A31 Registre B0 à B

Chemin de données A Chemin de données B

Chemin croisé

ISECS 2006-2007 Cours DSP Chapitre 3^129

Registres

Registres A 0 , A 1 , A 2 , B 0 , B 1 et B 2 peuvent êtres utilisés comme des registres à condition.

Registres A 4 à A 7 et B 4 à B 7 : pointeur pour le mode d’adressage circulaire.

Registres A 0 à A 9 et B 0 à B 9 : registre temporaire.

Registre A 10 à A 31 et B 10 à B 31 : mémorisés et puis restaurés à chaque appel à un sous programme.

On peut former 32 registres de 40 ou 64 bits en utilisant les paires de registres A 0 :A 1 , A 2 :A 3 , ……et B 30 :B 31.

Il existe d’autres registres de contrôles, d’interruptions, de modes, etc.

Cours 1 131

3 étages de pipeline :

 Fetch : 4 sous-étages

 Decode : 2 sous-étages

 Execute : au maximum 6 sous-étages

Le LSB d’une instruction ( p-bit ) indique si la prochaine

instruction appartient au même PE (si 1 ) ou non (si 0 ).

Paquet de Fetch et d’Exécution

Cours 2 132

Étage \ temps t1 t2 t3 t4 t5 t6 t7 t8 t Fetch F1 F2 F3 F4 F5 F6 … … … Decode D1 D2 D3 D4 D5 D6 … … Execute E1 E2 E3 E4 E5 E6 …

Étage \ temps t1 t2 t3 t4 t5 t6 t7 t8 t Fetch F1 F2 F Decode D1 D2 D Execute E1 E2 E

Exécution avec pipeline

Exécution séquentielle

Pipeline

 Instructions segmentées en étages.

 Exécution entrelacée de plusieurs instructions.

 Augmentation de la fréquence d'horloge.

Cours 2 134

Jusqu’à 6 cycles et tout dépend de l’instruction !!

DP Répartition des instructions d’un PF sous forme de PE

DC Décodage des PEs

E courtes inst (ADD, SUB, AND, OR, XOR, etc…)

E Instruction MPY

E3; E Slots de retard

E Branchement

E Chargement des valeurs dans un registre

Etages réservées pour les instructions longues

Étape d’exécution (E)

Étape du décodage d’instruction (D)

Pipeline

135

Operations Parallèles

Le format de base d'un Paquet Fetch (constitués de 8 instructions) est indiqué ci-

dessous:

31 0 p Instruction A

31 0 p Instruction B

31 0 p Instruction C

31 0 p Instruction D

31 0 p Instruction E

31 0 p Instruction F

31 0 p Instruction G

31 0 p Instruction H

Les frontières des Paquets Fetch sont déterminés par le bit « p » de chaque

instruction:

 si le bit “ p ” de l’instruction i est égale 1, alors l’instruction i+1 sera exécuté en

parallèle avec l’instruction i ,

 si le bit “ p ” de l’instruction i est égale 0, alors l’instruction i+1 sera exécuté dans le

cycle qui suit l’instruction i.

 le dernier p-bit dans le Paquet Fetch est toujours à 0.

137

Spécification des groupes d’instructions

exécutables en parallèle

  • Les lignes de code qui sont précédés par deux barres verticales, | |, seront

exécutés en parallèle avec l’instruction précédente.

  • Exemple: InstructionA || InstructionB || InstructionC InstructionD InstructionE || InstructionF InstructionG || InstructionH

Instruction A

1

31 0 1

31 0 0

31 0 0

31 0 1

31 0 0

31 0 1

31 0 0

31 0

Instruction B Instruction C Instruction D Instruction E Instruction F Instruction G Instruction H

Cours 1 138

Spécification des groupes d’instructions

exécutables en parallèle

Exemple d’un paquet fetch contenant 3 paquets exécutables

Cours 2 140

Exécution en série ( 1 er^ exemple)

Une seule INSTRUCTION par cycle entre dans le pipeline en arrivant à l’étape DC ( Decode ) :

Pipeline

Cycle = 5

PF DP DC E1 E2 E3 E4 E5 E

PF (^) Decode Execute Done

B MVK ADD ADD MPY MPY LDW LDB

PF

B .S MVK .S ADD .L ADD .L MPY .M MPY .M LDW .D LDB .D

Cours 2 141

Cycle = 6

PF DP DC E1 E2 E3 E4 E5 E

PF (^) Decode Execute Done

B MVK

+ + + + + +

ADD ADD MPY MPY LDW LDB

PF

Pipeline

Cours 2 143

Cycle = 6

PF DP DC E1 E2 E3 E4 E5 E

PF (^) Decode Execute Done

B MVK

+ + + + + + +

ADD ADD MPY MPY LDW LDB

Paquets d’exécution

Exécution en parallèle partielle ( 2 ème^ exemple)

Comment écrire des instructions en //?

On utilise le symbole “ || ” :

B .S

|| MVK .S
|| MVK .S

ADD .L

|| ADD .L
|| ADD .L
|| MPY .M

MPY .M || LDW .D

|| LDB .D
|| LDB .D

PF

Pipeline

Cours 2 144

Cycle = 7

PF DP DC E1 E2 E3 E4 E5 E

PF (^) Decode Execute Done

B MVK

+ + + + +

ADD ADD MPY MPY LDW LDB

Paquets d’exécution (^) PF

Pipeline