SPRAB89A September 2011 – March 2014
The TMS320C6000, familiarly C6000 or C6x, is a family of 32-bit VLIW Digital Signal Processors from Texas Instruments. The family includes both fixed-point (integer) and floating-point devices. The architecture is capable of issuing up to 8 32-bit instructions per cycle for a high level of parallelism. Table 1-1 lists the members of the C6000 family covered by this ABI.
ISA | Data Format | Description |
---|---|---|
C62x | Fixed-point | Original ISA |
C64x | Fixed-point | C62x with additional instructions and registers |
C64x+ | Fixed-point | Additional instructions and compact instruction encoding |
C67x | Floating-point | Original floating-point ISA |
C67x+ | Floating-point | C67x with additional instructions and registers |
C6740 | Fixed/float | Union of C64x+ and C67x+ plus additional instructions |
C6600 | Fixed/float | C6740 with 128-bit data path plus additional instructions |
Most family members are backwards compatible; that is, newer CPUs can correctly execute object code built for older devices. Specific cases are specified under the Tag_ISA build attribute in Section 17.3.
C6000 devices are byte-addressable. Memory can be configured as big-endian or little-endian. Most devices have no general memory-management unit so CPU addresses refer to actual physical memory locations (no virtual memory).
The pipeline of the C6000 is unprotected. That is, when the CPU reads the destination of a previously-issued computation which is still in the pipeline and has not yet been written, the read will obtain the old value rather than stalling to wait for the new one. The implication is that the programmer (or compiler) must manage pipeline latencies and schedule operations so as to obtain the correct result. Operations with multi-cycle latencies include loads (4 cycles), branches (5 cycles), and certain multiplies (2 cycles).
The C6000 has a minimum of 32 general-purpose registers, designated A0-A15 and B0-B15. Members of the C64 family extend this to 64 registers: A0-A31 and B0-B31. Two of these registers are assigned by convention for use with addressing and linkage under the ABI. B15 is designated as the Stack Pointer, usually denoted as SP; and B14 is designated as the Data Page Pointer, denoted as DP. The DP is used as a base address for the data segment, providing a means for both position independence and efficient access to (near) data.