Linear Assembly Considerations
8-49
’C64x Programming Considerations
8.3.1.2
Using .mptr and .mdep With Linear Assembly on the ’C64x
The Assembly Optimizer supports the .mptr and .mdep directives on the
’C64x. These directives allow the programmer to specify the memory access
pattern for loads and stores, as well as which loads and stores are dependent
on each other. Section 6.2, Assembly Optimizer Options and Directives, de-
scribes these directives in detail. This section describes the minor differences
in the behavior of the .mptr directive on ’C64x vs. other C6000 family members.
Most ’C64x implementations will have different memory bank structure than
existing ’C62x implementations in order to support the wider memory ac-
cesses that the ’C64x provides. Refer to the
TMS320C6000 Peripherals Ref-
erence Guide (SPRU190) for specific information on the part that you are us-
ing.
Additionally, the ’C64x’s non-aligned memory accesses do not cause bank
conflicts. This is due to the fact that no other memory access can execute in
parallel with a non-aligned memory access. As a result, the.mptr directive has
no effect on non-aligned load and store instructions.
8.3.2
Avoiding Cross Path Stalls
8.3.2.1
Architectural Considerations
The C6000 CPU components consist of:
-
Two general–purpose register files (A and B)
-
Eight functional units (.L1, .L2, .S1, .S2, .M1, .M2, .D1, and .D2)
-
Two load–from–memory data paths (LD1 and LD2)
-
Two store–to–memory data paths (ST1 and ST2)
-
Two data address paths (DA1 and DA2)
-
Two register file data cross paths (1X and 2X)
8.3.2.2
Register File Cross Paths
The functional unit is where the instructions (ADD, MPY etc.) are executed.
Each functional unit reads directly from and writes directly to the register file
within its own data path. That is, the .L1, .S1, .D1, and .M1 units write to register
file A and the .L2, .S2, .D2, and .M2 units write to register file B.
The register files are also connected to the opposite–side register file’s func-
tional units via the 1X and 2X cross paths. These cross paths allow functional