Professional Documents
Culture Documents
Architecture du TMS320C6000
Vue densemble
Objectifs du chapitre
.M
L unit . M effectue les multiplications
en hardware
.M
.M
. .L
. MPY .M a1, x1, prod
.
ADD .L Y, prod, Y
A15
32--bits
32
. .L
. MPY .M A0, A1, A3
.
ADD .L A4, A3, A4
A15
32--bits
32
. .L
. MPY .M A0, A1, A3
.
ADD .L A4, A3, A4
A15
32--bits
32
. .L
.
.
A15
32--bits
32
Unit Load .D
Register File A Q: Comment peut
peut--on charger
A0 a1 les oprandes dans les
A1 x1 registres?
registres?
A2
A3 prod .M
Y
A: Les oprandes sont chargs
dans les registres en les
. chargeant partir de la
. .L mmoire l'aide de lunit
.
.D .
A15
.D
32--bits
32
Mmoire Data
Unit Load .D
Register File A
Il convient de noter ce stade
A0 a1 que la seule faon d'accder
A1 x1 la mmoire est dans lunit
A2 .D
D..
A3 prod .M
Y
. .L
.
.
A15
.D
32--bits
32
Data Memory
Instruction de chargement
Register File A Q: Quelle instruction (s) peut
A0 a1 tre utilise pour le
A1 x1 chargement des oprandes
A2 de la mmoire aux
prod .M registres?
A3
Y
. .L
.
.
A15
.D
32--bits
32
Data Memory
Instructions Load (LDB, LDH,LDW,LDDW)
Register File A Q: Quelle instruction (s) peut
A0 a1 tre utilise pour le
A1 x1 chargement des oprandes
A2 de la mmoire aux
prod .M registres?
A3
Y
A: Les instructions Load.
. .L
.
.
A15
.D
32--bits
32
Data Memory
Utilisation des Instructions Load
Avant d'utiliser l'unit de Data address
charge, il faut savoir que ce 00000000
processeur est adressable par
octet, ce qui signifie que 00000002
chaque octet est reprsent 00000004
par une adresse unique unique.. 00000006
00000008
De plus, les adresses sont 32
32--
bits..
bits
FFFFFFFF
16--bits
16
Utilisation des Instructions Load
La syntaxe de l'instruction de Data address
chargement est
est:: 00000000
a1
LD *Rn,Rm
*Rn,Rm x1 00000002
o:
o: 00000004
Rn est un registre qui contient prod 00000006
l'adresse de l'oprande Y 00000008
charger
et
Rm est le registre de
destination..
destination
FFFFFFFF
16--bits
16
Utilisation des Instructions Load
La syntaxe de l'instruction de Data address
chargement est
est:: 00000000
a1
x1 00000002
LD *Rn,Rm
*Rn,Rm
00000004
FFFFFFFF
16--bits
16
Utilisation des Instructions Load
La syntaxe de l'instruction de Data address
chargement est
est:: 00000000
a1
x1 00000002
LD *Rn,Rm
00000004
La rponse est que, cela dpend prod 00000006
de l'instruction que vous Y 00000008
choisissez::
choisissez
LDB:: loads one byte (8-bit)
LDB
LDH
LDH:: loads half word (16
16--bit)
LDW
LDW:: loads a word (32
32--bit)
LDDW
LDDW:: loads a double word (64
64--bit) FFFFFFFF
16--bits
16
Utilisation des Instructions Load
La syntaxe de l'instruction de Data address
chargement est
est:: 0xA 0xB 00000000
0xC 0xD 00000002
LD *Rn,Rm
0x2 0x1 00000004
0x4 0x3 00000006
Question::
Question
0x6 0x5 00000008
Si les donnes ne sont accessibles 0x8 0x7
que par l'instruction de
chargement et l'unit .D, comment
peut--on charger le registre de
peut
pointeur de Rn en premier lieu?
FFFFFFFF
16--bits
16
Chargement du Pointeur Rn
u Linstruction MVKL va permettre un
dplacement dune constante 16-
16 -bit dans le
registre comme montr dessous:
MVKL .? a, A5
(a est une constante ou tiquette)
u Combien de bits reprsentent une adresse
complte?
complte?
32 bits
u Alors pourquoi linstruction ne permet pas un
dplacement de 32-
32 -bit?
Toutes les instructions sont sur 32-
32-bit (voir
instruction opcode
opcode).
).
Chargement du Pointeur Rn
u Utiliser toujours MVKL puis MVKH, les
exemples suivants:
Example 1
A5 = 0x87654321
Example 2
Data Memory
Crer une boucle
Jusqu'ici, nous avons
seulement mis en MVKL pt1, A5
uvre la SdP pour MVKH pt1, A5
une seule ronde, i.e. MVKL pt2, A6
MVKH pt2, A6
Y= a1 * x1
LDH .D *A5, A0
LDH .D *A6, A1
Donc, nous allons MPY .M A0, A1, A3
crer une boucle afin ADD .L A4, A3, A4
que nous puissions
mettre en uvre la
SdP pour N Taps
Taps..
Crer une boucle
Jusqu'ici, nous avons
seulement mis en
uvre la SdP pour
une seule ronde, i.e.
Avec les processeurs
Y= a1 * x1 C6000: absence
d'instructions spcifiques
tels que la rptition de
Donc, nous allons bloc. La boucle est cre en
utilisant l'instruction B.
crer une boucle afin
que nous puissions
mettre en uvre la
SdP pour N Taps
Taps..
What are the steps for creating a loop
1. Create a label to branch to.
Data Memory
Which unit is used by the B
Register File A instruction?
MVKL .S pt1, A5
MVKH .S pt1, A5
A0 a .S MVKL .S pt2, A6
A1 x
MVKH .S pt2, A6
A2
prod .M
A3 .M
Y loop LDH .D *A5, A0
. LDH .D *A6, A1
. .L
. .L MPY .M A0, A1, A3
ADD .L A4, A3, A4
.D B .S loop
A15 .D
32--bits
32
Data Memory
3. Create a loop counter.
MVKL .S pt1, A5
Register File A
MVKH .S pt1, A5
A0 a .S MVKL .S pt2, A6
A1 x
MVKH .S pt2, A6
A2 MVKL .S count, B0
prod .M
A3 .M
Y loop LDH .D *A5, A0
. LDH .D *A6, A1
. .L
. .L MPY .M A0, A1, A3
ADD .L A4, A3, A4
.D B .S loop
A15 .D
32--bits
32
B registers will be introduced later
Data Memory
4. Decrement the loopMVKL
counter
.S pt1, A5
Register File A
MVKH .S pt1, A5
A0 a .S MVKL .S pt2, A6
A1 x
MVKH .S pt2, A6
A2 MVKL .S count, B0
prod .M
A3 .M
Y loop LDH .D *A5, A0
. LDH .D *A6, A1
. .L
. .L MPY .M A0, A1, A3
ADD .L A4, A3, A4
.D SUB .S B0, 1, B0
A15 .D
B .S loop
32--bits
32
Data Memory
5. Make the branch conditional based
u What is the syntaxon the instruction
for making
value in the loop counter
conditional?
[condition
condition]] Instruction Label
e.g.
[B1] B loop
Data Memory
More on the Branch Instruction (1)
u With this processor all the instructions are
encoded in a 32-
32-bit.
u Therefore the label must have a dynamic range
of less than 32-
32-bit as the instruction B has to be
coded.
32--bit
32
32--bit
32
5-bit register
B code
u Case 2: B .S2
.S2 register
u Absolute branch.
u Operates on .S2 ONLY!
Testing the code
MVKL .S2 pt1, A5
MVKH .S2 pt1, A5
MVKL .S2 pt2, A6
MVKH .S2 pt2, A6
This code performs the following MVKL .S2 count, B0
operations:
loop LDH .D *A5, A0
a0*x0 + a0*x0 + a0*x0 + + a0*x0 LDH .D *A6, A1
MPY .M A0, A1, A3
However, we would like to perform: ADD .L A4, A3, A4
a0*x0 + a1*x1 + a2*x2 + + aN*xN SUB .S B0, 1, B0
[B0] B .S loop
Modifying the pointers
MVKL .S2 pt1, A5
MVKH .S2 pt1, A5
MVKL .S2 pt2, A6
MVKH .S2 pt2, A6
MVKL .S2 count, B0