Script for Laboratory: Designing embedded ASIPs - CES
Script for Laboratory: Designing embedded ASIPs - CES
Script for Laboratory: Designing embedded ASIPs - CES
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
9 Custom instruction identification<br />
The concept of instruction set extension in processor is a challenging and<br />
highly prospective research area- both in academia and industry. Instruction<br />
set extension in processor design plat<strong>for</strong>m mainly depends on detecting cluster<br />
of operations. In our lab we try to find these custom instructions to a limited extend.<br />
There are lots of state-of-the art ways to identify these custom instructions.<br />
None of these ways proved to be that efficient to identify custom instructions<br />
automatically. Currently we are not using any automatic tool to identify<br />
custom instructions. Our main goal in this lab is to use a group of promising<br />
custom instructions that can be extracted manually with human ef<strong>for</strong>t. But to<br />
aid the manual ef<strong>for</strong>t <strong>for</strong> finding custom instructions a number of tools are used<br />
<strong>for</strong> profiling as well as to analyze the Control Flow Graph (CFG) and Data<br />
Flow Graph (DFG). In this tutorial the concept of custom instructions and the<br />
possibility of different custom instructions are described. The use of profiling<br />
tools is also described within the scope of this tutorial.<br />
9.1 What is a custom instruction<br />
The cluster of in<strong>for</strong>mation, when implemented as a single instruction, should maximize some<br />
metric and finally improve the per<strong>for</strong>mance. Such cluster of operations, <strong>for</strong>ming a single<br />
instruction is generally called a custom instruction.<br />
Identification of custom instructions mostly depends on application domains. Analysis of<br />
applications reveals different classes of custom instructions. Generally, four classes of custom<br />
instructions can be found in different application domains. The classes are<br />
• SIMD Instruction<br />
• Zero-Overhead loop Instructions<br />
• Memory Instructions<br />
• Composite Instructions<br />
Figure 9-1 shows a very simple custom instruction from a C-Code segment. Now the very<br />
important question is when and which custom instruction needs to be added as a new<br />
instruction in the template instruction set. We take a very simplistic assumption in our<br />
experiment. The instruction which has been executed most of the time in the application and<br />
basically increases the per<strong>for</strong>mance in terms of cycle count without or with a very little<br />
penalty of increased latency and reduces the energy consumption significantly but might have<br />
considerable amount of area increase are chosen as custom instructions. So the bottom line to<br />
choose a new instruction can be summarized as follows considering our lab:<br />
- 84 -