21.01.2013 Views

Lecture Notes in Computer Science 4917

Lecture Notes in Computer Science 4917

Lecture Notes in Computer Science 4917

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

150 T.T. Hahn et al.<br />

sense of the predicate. The dst, src2, and src1 fields encode operands. The x-bit<br />

encodes whether src2 is read from the opposite cluster’s register file. The op field<br />

encodes the operation and functional unit. The s-bit specifies the cluster that<br />

the <strong>in</strong>struction executes on.<br />

3 C64+ Compact Instructions<br />

The C64+ core has new <strong>in</strong>struction encod<strong>in</strong>gs that (1) reduce program size, (2)<br />

allow b<strong>in</strong>ary compatibility with older object files, (3) and do not require the<br />

processor to switch modes to access the new <strong>in</strong>structions encod<strong>in</strong>gs. In addition,<br />

the exist<strong>in</strong>g C/C++ compiler exploits these new <strong>in</strong>struction encod<strong>in</strong>gs without<br />

extensive modification.<br />

3.1 Compact 16-bit Instructions<br />

A 16-bit <strong>in</strong>struction set was developed <strong>in</strong> which each 16-bit <strong>in</strong>struction is a compact<br />

version of an exist<strong>in</strong>g 32-bit <strong>in</strong>struction. All exist<strong>in</strong>g control, data path, and<br />

functional unit logic beyond the decode stage rema<strong>in</strong>s unchanged with respect<br />

to the 16-bit <strong>in</strong>structions. The 16-bit and 32-bit <strong>in</strong>structions can be mixed.<br />

The ability to mix 32- and 16-bit <strong>in</strong>structions has several advantages. First, an<br />

explicit <strong>in</strong>struction to switch between <strong>in</strong>struction sets is unnecessary, elim<strong>in</strong>at<strong>in</strong>g<br />

the associated performance and code size penalty. Second, algorithms that need<br />

more complex and expressive 32-bit <strong>in</strong>structions can still realize code size sav<strong>in</strong>gs<br />

s<strong>in</strong>ce many of the <strong>in</strong>structions can be 16-bit. F<strong>in</strong>ally, the ability to mix 32and<br />

16-bit <strong>in</strong>structions <strong>in</strong> the C64+ architecture frees the compiler from the<br />

complexities associated with a processsor mode.<br />

The 16-bit <strong>in</strong>structions selected are frequently occurr<strong>in</strong>g 32-bit <strong>in</strong>structions<br />

that perform operations such as addition, subtraction, multiplication, shift, load,<br />

and store. By necessity, the 16-bit <strong>in</strong>structions have reduced functionality. For<br />

example, immediate fields are smaller, there is a reduced set of available registers,<br />

the <strong>in</strong>structions may only operate on one functional unit per cluster, and some<br />

standard arithmetic and logic <strong>in</strong>structions may only have two operands <strong>in</strong>stead<br />

of three (one source register is the same as the dest<strong>in</strong>ation register). All 16-bit<br />

<strong>in</strong>structions do not have a condition operand and execute unconditionally except<br />

for certa<strong>in</strong> branch <strong>in</strong>structions.<br />

The selection and makeup of 16-bit <strong>in</strong>structions was developed by rapidly<br />

prototyp<strong>in</strong>g the exist<strong>in</strong>g compiler, compil<strong>in</strong>g many different DSP applications,<br />

and exam<strong>in</strong><strong>in</strong>g the subsequent performance and code size. In this way, we were<br />

able to compare and ref<strong>in</strong>e many different versions of the 16-bit <strong>in</strong>struction<br />

set. Due to design requirements of a high performance VLIW architecture,<br />

the C6x 32-bit <strong>in</strong>structions must be kept on a 32-bit boundary. Therefore,<br />

the 16-bit <strong>in</strong>structions occur <strong>in</strong> pairs <strong>in</strong> order to honor the 32-bit <strong>in</strong>struction<br />

alignment.

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

Saved successfully!

Ooh no, something went wrong!