Presentation is loading. Please wait.

Presentation is loading. Please wait.

IXP C Programming Language

Similar presentations


Presentation on theme: "IXP C Programming Language"— Presentation transcript:

1 IXP C Programming Language
Yaxuan Qi NSLab, Tsinghua Dec 29, 2005 (NSLab Confidential)

2 Overview A C language implementation for IXP that provides standard, sequential C semantics. Extensions to support IXP architecture Hides multithreading of IXPs. Compiler makes full use of these features for high performance. Hides most of the low-level hardware resources: Hardware resources that provide specific acceleration functions are accessed through the intrinsic library.

3 Packet Processing Stage
Programming model related PPS definition: pps pps_name(void) { } Pipe data type: pipe pipe_id;

4 Packet Processing Stage
A PPS can be partitioned onto one or more MEs Determined by the compiler based on a performance specification and code size considerations. Mapping to MEs can take several forms: multi-processing, context pipelining or a combination of the two. Compiler is responsible for all communication and synchronization within a PPS

5 Sample Application Rx PPS Processing PPS Tx PPS Logical View
Packet Rx process CSIX Tx Logical View Physical View Processing PPS Rx PPS Tx PPS ... ME2 Scratch Scratch ME0 ME1 NN ME14 ME15 NN 2-way Context Pipelining 8-way Multithreading 2-way Context Pipelining 8-way Multithreading N-way Multiprocessing 8-way Multithreading

6 Critical Path Path annotation
Specified as a statement with the following syntax __path(path_id); Used to identify a critical path through the PPS loop body Programmer selects certain points as belonging to a critical path, compiler infers what other points lie on the critical path

7 We can limit the cycles for this path
Critical Path We can limit the cycles for this path

8 LOOP Count Loop count directive
Specified by the directive __loopcount(n) where n is an integer constant that specifies the number of times an inner loop is executed Used by the compiler to estimate the contribution of a loop to the length of a critical path Syntax is as follows: for __loopcount(n) { } while __loopcount (n) { } do __loopcount (n) { }

9 LOOP Count

10 Performance Specification

11 Experiments IXP2xxx Packet Processing Stages SPI4 Packet Rx Packet Tx
Ethernet Decap Range Matching IPv4 Forwarding Queue Managing Packet Tx Scheduling SPI4 CSIX Packet Processing Stages of the Packet Classification Application. Packet classification algorithms are running in Rage Matching PPS.

12 Experiments Simulation Result: Linear Search
Performance Evaluation of Linear Search Algorithm. Each incoming packet just matches the default rule, so that the worst-case performance is obtained. Deterministic worst-case bound: O(N).

13 Experiments Simulation Result: HSM
Performance Evaluation of HSM Algorithm. Deterministic worst-case bound: O(logN).

14 Experiments Simulation Result: HiCuts (worst-case path)
Performance Evaluation of HiCuts Algorithm. Non-deterministic worst-case bound. 1k rules often need a 10-level decision tree.

15 Experiments Simulation Result: HiCuts (worst-case path)
And what’s more, in the worst-case, it often needs up to 10 times of linear searches after tracing down the decision tree.

16 Thanks (NSLab Confidential)


Download ppt "IXP C Programming Language"

Similar presentations


Ads by Google