Overview of IXP2400 Architecture

Reviews
Shared by: larryp
Stats
views:
30
rating:
not rated
reviews:
0
posted:
11/4/2008
language:
pages:
0
Overview of IXP2400 Architecture • Intel 2nd generation network processor • designed for network processing – goal to optimize for fast path, and accommodate slow path – programmable – fast deployment of new services, upgrades, protocols… • needs external control processor IXP2400 chip highlights • 8 microEngines (uE) – RISC 600MHz processors with instruction sets targeting networking-related operations – for fast path • XScale core – standard embedded CPU (ARM family) running Linux – slow path • Media and Switch Fabric (MSF) Interface – to Rx/Tx packets from physical layer and/or switch fabric, i.e. main data path interface – separate 32b Rx and Tx busses @ up to 125MHx w/ 8kB buffers • various configs up to 4Gpbs (ours 3x1GbEthernet) – connects to external devices and is configurable for different bus protocols • DRAM controller – for packet storage (up to 2GB, but access slow ~300 cycles, 64bit wide) • SRAM controller – store packet queues, lookup tables…, ~150 cycles, 32bit) • Scratchpad memory (16k) – on chip, for parameters, communication b/w uEs… • PCI bus (64bit/66MHz) – connect to “host” – external control processor, or other PCIcompliant devices (e.g, chain IXPs together) • Other units – Hash, control registers, other peripherals (timers, interrupt controller…), perf. monitors… 72 IXP2400 MEv2 1 MEv2 2 Rbuf 64 @ 128B * DDRAM PCI 64b (64b) 66 MHz Intel® XScale™ Core 32K IC 32K DC G A S K E T MEv2 4 MEv2 3 Tbuf 64 @ 128B S P I 3 or C S I X 32b 32b MEv2 5 MEv2 6 Hash 64/48/128 Scratch 16KB QDR SRAM 1 E/D Q 18 18 QDR SRAM 2 E/D Q 18 18 MEv2 8 MEv2 7 CSRs -Fast_wr -UART -Timers -GPIO -BootROM/Slow Port * John Morgan presentation at IXA University Summit04 Microengine MEv2 • control store – for instructions… 4k 40bit instruction per uE • 8 hardware supported threads – hide memory access – separate register sets (PC) – fast ctx switch • registers – 256 GPR (32/thd), 512 Xfer (4x16/thd – [D|S]x[R|W]), 128 NN (16/thd) – addressing context relative or absolute (GPRs) – local memory 640x32bits • CAM – 16 entry cache MicroEngine v2 S-Push D-Push From Next Neighbor Bus Bus * Local Memory 640 words 128 GPR 128 GPR 128 Next Neighbor 128 D Xfer In 128 S Xfer In Control Store 4K/8K Instructions LM Addr 1 LM Addr 0 2 per CTX B_op Prev B A_op Prev A P-Random # A_Operand B_Operand CAM TAGs 0-15 Lock 0-15 CRC Unit CRC remain Other Local CSRs Timers Timestamp Multiply Find first bit Add, shift, logical ALU_Out 32-bit Execution Data Path Status and LRU Logic (6-bit) Status Entry# To Next Neighbor 128 D Xfer Out 128 S Xfer Out D-Pull Bus S-Pull Bus IPC • messaging via circular queues (rings) – scratch/SRAM operations for ring management • signaling – 15 signals per context – context can poll a signal explicitly – use to guard critical sections Media / Fabric Receive Logic: 6 Thread moves data * 5 AutoPush Status to Thread 7 Thread pushes ID onto Freelist Rbuf 64/128 Elements 128/64B each Status Word Per element Bit vector Rbuf Freelist Thread Freelist 1 4 Create Status Receive State Machine Get Free element # 3 Assign thread # Media Switch Fabric Idle bucket Discarded if idle packet 2 Data Arrives SPI-4.2 Frame Unit Pkt ctrl Pkt payload a Pkt ctrl Cell payload Pkt ctrl Pkt payload b buffer Port A Port B Media Device ATM Cell packet ILAB setup www.cercs.gatech.edu/projects/npg/ilab/ hardware manual: /net/hp31/ixpdev/sdk3 or 4.0/Docs/IXP2400/ software tools: …/Tools/… our IXP2400 Boards: Radisys ENP-2611 /net/hp31/ixpdev/CD-Images/ IXA_Education_Wkstn3.1/Docs… Programming model receive f1 f1..fn f1..n f1..n fn xmit receive xmit receive f1 f2..fn f2..n xmit issues: size of fi, cyclecount for fi, state across packets at fi, state for a packet across all fis Microengine Programming Model ** Microblock Infrastructure Library Micro block Micro block Micro block Utility Library Protocol Library Hardware Abstraction Library ** Ibar Bishara’s presentation at IXA Summit 04 Microengine Programming Model Microblock Infrastructure Library Microblock Group Dispatch Loop Source Micro block Micro block Micro block Sink ** Protocol Library Utility Library Hardware Abstraction Library • Hardware abstraction – OS-like functionality – APIs for memory manipulations (sram, scratch, dram…), buffer/queue management, MSF access… • Protocol library – header field extraction, validation, update for popular protocols (ipv4, Ethernet…) • Utility library – functions for hash table, CAM accesses, threads API… • Infrastructure library – set up application specific packet meta data, pipeline parameters… • Software framework – – – – …/opt-links/ixp/IXA_3.1/ … /dataplane-library, … microblocks-library EDU_Wkstn … sample_application – Radisys stuff SDK_Tools/ src/librabry or me-tools Programming the IXPs • Rely on tools (Windows) – Software Development Kit – Development Workbench + Simulator (Transactor) • cycle accurate simulation (or so) • traffic generator • build DLLs to implement interaction with special components – e.g., custom protocols, interactions with XScale or host… – Architecture Development Tool • initial design and analysis • /net/hp31/ixpdev/exports-sdk4.0/SDK/nassaupr8_noncrypto.zip Program in • microC (familiar, portable), or • microcode (efficient, best use of platform features) or • mix of both Build and run code with • workbench tools (hardware mode) or • microcode assembler and linker on ilab and XScale command line utilities on ilab-ixp – ssh ilabn -> telnet ilabn-ixp1 -> load, start, stop, sram… Dispatch Loop Structure in Microcode // include files #include “dispatch.uc” #include “dl_system.uc” #include “IPv4_Fwd.uc” #include “l2_encap.uc” #include “l2_classify.uc” Init#: // The following code is // executed once DL_Source_Init [] IPv4_Fwd_Init [] L2_Classify_Init [] L2_Encap_Init [] DL_Sink_Init [] // The following loop runs for ** // every packet loop#: // Get a packet from the Scratch // Ring DL_Source [] // Perform Layer-2 Classification // on the packet L2_Classify [] // call the IP forwarding block IPv4_Fwd [] // Perform Layer-2 Encapsulation L2_Encap [] // pass the packet to next // Microengine DL_Sink [] BR [ loop# ] IXA Software Framework External Processors Control Plane Protocol Stacks Control Plane PDK XScale™ Core Programming Model Core Components OSSL Core Component Infrastructure Library Resource Manager Library ** Microengine Programming Model Microblock Infrastructure Library Micro block Micro block Micro block Utility Library Protocol Library Hardware Abstraction Library

Related docs
IXP2400 Intel Corporation network processor
Views: 46  |  Downloads: 3
Architecture Overview
Views: 3  |  Downloads: 2
Overview of the GENI Architecture
Views: 5  |  Downloads: 3
Introduction Architecture Overview
Views: 22  |  Downloads: 3
uPortal architecture overview
Views: 0  |  Downloads: 0
ARCHITECTURE
Views: 27  |  Downloads: 4
THE CAPE INSTITUTE FOR ARCHITECTURE
Views: 0  |  Downloads: 0
SCHOOL OF ARCHITECTURE
Views: 10  |  Downloads: 0
premium docs
Other docs by larryp