Version 1.0, 4/10/02
Page 14 of 17 RESOURCE UTILIZATION AND HEADROOM ANALYSIS
This section details system resource utilization, including per-microengine resources such as
registers and microstore instructions; as well as shared resources such as Scratchpad RAM,
SRAM, and DRAM. The memory utilization is shown using the default system memory map as
shipped.3 One of the ATM utilities, config_print(), prints out the Scratchpad RAM, SRAM, and
DRAM address maps to show the memory map in detail. Almost all of the data structure sizes in
these memories are configurable.
Microengine Register and Microstore Headroom
Register utilization is measured by using the free_register_test() macro to soak up all available
registers. This is an iterative process – the macro either prints out how many registers it
successfully allocated, or the assembler quits because it failed to allocate the requested registers.
In this analysis this macro is applied at the global level, so the result is worst-case. It is generally
possible to allocate more registers if their scope does not overlap the deepest scope in the design.
Microengine
Available
General
Purpose
Registers
Available
SRAM
Transfer
Registers
Available
SDRAM
Transfer
Registers
Available
Threads
Available
Microstore
Instructions
Configuration 1 – IXP1240 1xOC-12, 8xEthernet
ATM Receive 2 0 5 0 1514
IP Route 11 4 0 0 1677
1 0 0 0 1363 Ethernet Receive
(2 microengines) 1 0 0 0 1363
ATM Transmit 12 3 2 1 1728
Ethernet Transmit 5 0 6 0 1235
Configuration 2 – IXP1240 4xOC-3, 8xEthernet
ATM Receive 12 0 6 0 1724
IP Route 11 4 0 0 1677
1 0 0 0 1348 Ethernet Receive
(2 microengines) 1 0 0 0 1348
ATM Transmit 8 1 2 0 1716
Ethernet Transmit 5 0 6 0 1235
Configuration 3 – IXP1200 2xOC-3, 4xEthernet
ATM Receive
& IP Route 9 0 0 0 1403
Ethernet Receive 1 0 0 0 1370
CRC Check 12 3 2 0 1811
CRC Generate 16 0 2 0 1847
ATM Transmit 8 1 4 2 1805
Ethernet Transmit 5 0 6 0 1235
Figure 12 – Microengine register and microstore headroom
3 So that a single version of the ATM utilities in the foreign model DLL and the vxWorks utilities could
handle any configuration, all three port configurations (IXP1240 1xOC12, IXP1240 4xOC3, and IXP1200
2xOC3) use the same memory map.