13.06.2015 Views

Intel IXA SDK ACE Programming Framework - Department of ...

Intel IXA SDK ACE Programming Framework - Department of ...

Intel IXA SDK ACE Programming Framework - Department of ...

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!