Intel IXA SDK ACE Programming Framework - Department of ...
Intel IXA SDK ACE Programming Framework - Department of ...
Intel IXA SDK ACE Programming Framework - Department of ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Micro<strong>ACE</strong> Support Services<br />
l<br />
l<br />
An <strong>ACE</strong> classifies incoming packets according to rules and protocol definitions<br />
that you write in NCL. For more information, see Chapter 9, “Classifying Packets<br />
Using NCL.”<br />
<strong>ACE</strong>s and other objects communicate using a remote procedure call mechanism<br />
called a crosscall. You define the interfaces for the crosscalls in <strong>IXA</strong> IDL. For more<br />
information, see Chapter 11, “Communication Within an Application.”<br />
Error Handling<br />
Most API functions return an error token, which is a value <strong>of</strong> type ix_error. An error<br />
token <strong>of</strong> zero indicates that the function was successful. When a call is unsuccessful,<br />
it returns a non-zero token that is associated with a descriptive string giving information<br />
about the failure.<br />
The ASL defines a set <strong>of</strong> functions for retrieving the messages associated with error<br />
tokens, and a set <strong>of</strong> macros that provide additional context information for errors. It<br />
also provides functions you can use to add your own uniquely numbered error codes<br />
to provide information about failed operations in your own functions.<br />
l<br />
l<br />
The error handling functions and macros are describe in Chapter 4, “The ASL<br />
Core Support Package API,” <strong>of</strong> the <strong>IXA</strong> <strong>SDK</strong> Reference.<br />
The predefined error codes are listed and described in Appendix A, “<strong>IXA</strong> API<br />
Error Codes,” <strong>of</strong> the <strong>IXA</strong> <strong>SDK</strong> Reference.<br />
Micro<strong>ACE</strong> Support Services<br />
Conventional <strong>ACE</strong>s run on a general-purpose processor. To achieve higher performance,<br />
<strong>ACE</strong>s can use other special-purpose processors for acceleration. An <strong>ACE</strong> that<br />
<strong>of</strong>floads fast-path processing to an IXP1200 microengine is known as a micro<strong>ACE</strong>.<br />
A micro<strong>ACE</strong> combines a core component, a complete <strong>ACE</strong> that runs on the core<br />
processor, with a microblock.<br />
1. Write the microblock in microcode, the assembler language for the IXP1200<br />
microengines.<br />
2. Combine several microblocks with a dispatch loop, also in microcode, that defines<br />
a packet processing pipeline for a microblock group.<br />
3. Compile the microblocks and dispatch loop into a single-object image (a .u<strong>of</strong> file)<br />
that runs on a single microengine.<br />
To write and compile microcode, use the IXP1200 Microengine Development Environment.<br />
The IXP1200 microcode documentation is accessible from the following<br />
directory:<br />
C:IXP1200\documentation\IXP1200 Documentation<br />
Micro<strong>ACE</strong>s and their managing programs communicate with the microengines<br />
using the Resource Manager. The Resource Manager is system s<strong>of</strong>tware that runs in the<br />
core processor kernel. It does resource allocation for memory that is shared by the<br />
core processor and the microengines, and also handles packet demultiplexing and<br />
other system-level microengine management problems.<br />
24 Elements <strong>of</strong> an Application<br />
Revision 3.3, August 2001