15.01.2013 Views

designfeature DSP assembly language - EDN

designfeature DSP assembly language - EDN

designfeature DSP assembly language - EDN

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>designfeature</strong> <strong>DSP</strong> <strong>assembly</strong> <strong>language</strong><br />

cle-accurate, instructionlevel<br />

simulator lets you simulate<br />

your application in real<br />

time. Also, the Visual<strong>DSP</strong><br />

tool features a well-defined<br />

application programming<br />

interface (API). Third-party<br />

products, runtime operating<br />

systems, emulators, HLL<br />

compilers, and multiprocessor<br />

hardware can interface<br />

seamlessly with Visual<strong>DSP</strong><br />

and thereby simplify tool integration.Visual<strong>DSP</strong><br />

follows<br />

the COM API format. Two<br />

API tools, Target Wizard and<br />

API Tester, are also available.<br />

You can find links to third<br />

parties that support Analog’s<br />

<strong>DSP</strong> product lines at www.<br />

analog.com/support/3rd_<br />

party/third_party.html.<br />

Texas Instruments TMS-<br />

320C6x <strong>DSP</strong> features two<br />

datapaths—each with 16 32-bit registers—shared<br />

by eight functional units.<br />

The C6x is a very-long-instructionword<br />

(VLIW) processor; a composite<br />

instruction (line), formed by concatenating<br />

n short instructions, controls its<br />

functional units. In the C6x, the short<br />

instructions are 32 bits wide, and the<br />

line consists of a maximum of eight<br />

32-bit instructions. Therefore,<br />

the C6x packs instructions to avoid inefficient<br />

use of program memory.<br />

FOR MORE INFORMATION...<br />

Instruction packing may result in<br />

alignment restrictions between lines and<br />

the physical-memory organization. In<br />

the C6x, the program is organized as<br />

eight instruction lines, or fetch packets.<br />

You may divide each fetch packet into<br />

groups of instructions or “execute packets,”which<br />

are issued in parallel. The C6x<br />

is restricted because the execute packet<br />

must be within an eight-word boundary.<br />

Every fetch packet must start with an execute<br />

packet. This stipulation implies that<br />

For information on products such as those discussed in this article, circle the appropriate numbers<br />

on the Information Retrieval Service card or use <strong>EDN</strong>’s InfoAccess service. When you contact<br />

any of the following manufacturers directly, please let them know you read about their products<br />

in <strong>EDN</strong>.<br />

Analog Devices<br />

Norwood, MA<br />

1-781-329-4700<br />

fax 1-781-326-8703<br />

www.analog.com/dsp/<br />

Circle No. 301<br />

<strong>DSP</strong>ecialists GmbH<br />

Berlin, Germany<br />

+49 30 467 805 60<br />

fax +49 30 467 805 99<br />

www.<strong>DSP</strong>ecialists.de<br />

Circle No. 302<br />

Texas Instruments<br />

Dallas, TX<br />

1-972-644-5580<br />

fax 1-972-480-7800<br />

www.ti.com<br />

Circle No. 303<br />

ZSP Corp<br />

Santa Clara, CA<br />

1-408-450-6207<br />

fax 1-408-986-1687<br />

www.zsp.com<br />

Circle No. 304<br />

The Code Composer IDE features the Assembly Optimizer tool. Using the<br />

Assembly Optimizer, you can write conventional-looking C6000 <strong>assembly</strong><br />

code without bothering with parallel instructions, instruction latencies, or<br />

register usage. The Assembly Optimizer then schedules the instructions,<br />

taking into account the C6000’s parallel architecture.<br />

SUPER CIRCLE NUMBER<br />

For more information on the<br />

products available from all of<br />

the vendors listed in this box,<br />

circle one number on the reader<br />

service card. Circle No. 305<br />

you must pad fetch packets<br />

that do not end with an execute<br />

packet with no-op-<br />

Figure 3<br />

eration instructions. Furthermore,<br />

the need to track<br />

various functional units in a<br />

VLIW architecture can rapidly<br />

overwhelm a <strong>DSP</strong> programmer.<br />

To help application developers,<br />

TI has introduced the<br />

concept of “linear” <strong>assembly</strong><br />

<strong>language</strong>. Linear <strong>assembly</strong> <strong>language</strong><br />

allows you to write <strong>assembly</strong><br />

<strong>language</strong> without regard<br />

to registers and pipeline<br />

behavior, significantly easing<br />

the task of writing low-level<br />

code. An Assembly Optimizer,<br />

which performs many compilerlike<br />

optimizations, processes<br />

linear <strong>assembly</strong> by assigning<br />

registers and scheduling<br />

the instructions, effectively<br />

handling all the “hard” problems<br />

associated with writing code for a<br />

pipelined processor (Figure 3).<br />

TI claims that the C6000 compiler offers<br />

an average improvement in execution<br />

speed; it is three times faster than<br />

state-of-the-art fixed-point <strong>DSP</strong> C compilers.<br />

The C compiler accepts ANSI C<br />

source code and produces efficient C6000<br />

<strong>assembly</strong>-<strong>language</strong> source code, performing<br />

a variety of optimizations to improve<br />

the efficiency of the compiled code.<br />

The compiler incorporates four levels of<br />

state-of-the-art generic and target-specific<br />

optimizations. The level of optimizations<br />

is selectable.<br />

Optimizations include those features<br />

specific to the TMS320C6201 processor,<br />

such as software pipelining, if conversion/predicated<br />

execution, memory-address<br />

cloning, memory-address-dependence<br />

elimination, branch optimizations/control-flow<br />

simplification, alias<br />

disambiguation, copy propagation, common<br />

subexpression elimination, redundant<br />

assignment elimination, loop-induction-variable<br />

optimizations/strength<br />

reduction, loop rotation, loop invariant<br />

code motion, inline expansion of function<br />

calls, register tracking/targeting, and<br />

cost-based register allocation. For more<br />

information, visit TI’s <strong>DSP</strong> third-party<br />

Web site (www.ti.com/sc/docs/dsps/<br />

develop/3party.htm).<br />

Even with all these development tools,<br />

108 edn | January 21, 1999 www.ednmag.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!