Institut für Technische Informatik und Kommunikationsnetze
back to EXPO overview


A Tool for Design Space Exploration of Network Processor Architectures (V2.0)



With the EXPO-tool we would like to explore the design space of network processor architectures on the system-level. Network processors are specialised devices for processing packet streams and usually consist of multiple processing units such as CPU cores, micro-engines, and dedicated hardware for compute intensive tasks such as header parsing, table look-up or encryption/decryption.

The problem we would like to solve can be stated as follows. We want to know what kind of hardware resources have to be put together to form a "good" network processor. The workload for the network processor consists of several packet streams, which have to be processed on the processor according to the task graph shown in the next figure. Additionally, we would like to figure out how the optimal mapping of the tasks to these resources looks like under different load scenarios. Objective values are the throughput for the different load scenarios and the total cost of the allocated resources. The total memory needed for an implementation serves as a problem contraint.

A Taskgraph

To learn more about the models and the evaluation method the EXPO-tool is based on, please have a look at this paper:


   author = {L. Thiele and S. Chakraborty and M. Gries and S. K{\"u}nzli},
   title = {A Framework for Evaluating Design Tradeoffs in Packet Processing Architectures},
   booktitle = {Proc. 39th Design Automation Conference (DAC)},
   pages = {880--885},
   year = 2002,
   location = {New Orleans, LA, USA},
   publisher = {ACM Press}


Download & Installation Guide

To install the EXPO-tool, you just have to download and unpack the binaries for your target platform. The versions for Windows, Linux and Solaris contain the JRE 1.4.1. If you don't need any Java Runtime Environment (e. g. because you have already installed a version of java >= 1.3.1), you can download the corresponding version without JRE. The installation of the EXPO-tool doesn't affect your system at all. All files needed to run the tool are unpacked to a seperate folder. To uninstall the tool, you will just have to delete that folder and all its content.

Windows (incl. JRE 1.4.1) [zip](12.5 MB)
Linux (incl. JRE 1.4.1) [tar.gz] (24.0 MB)
Solaris (incl. JRE 1.4.1) [tar.gz] (19.0 MB)
Windows (no JRE) [zip] (2.5 MB)
Linux (no JRE) [tar.gz] (2.5 MB)
Solaris (no JRE) [tar.gz] (2.5 MB)

Once you have unpacked the archive, you should have obtained a folder called expo_win, expo_linux, or expo_solaris (dependent on the OS) containing these files and directories:

./JRE/Directory which contains the Java Runtime Environment (only if available in the release)
./libs/Directory which contains Batik libraries used by EXPO
expo.jarJAR-file containing EXPO-tool itself
expo_param.txtFile containing the main parameters for the EXPO-tool.
expo.propertiesFile containing parameters used by EXPO
LICENSE File containing licenses for EXPO, Batik, and PtPlot
spec_TwoObjectives.txtFile containing a problem specification with two objectives. Copy this file to spec.txt and adjust dim-parameter in PISA_cfg file to run this example.
spec_ThreeObjectives.txtFile containing a problem specification with three objectives. Copy this file to spec.txt and adjust dim-parameter in PISA_cfg file to run this example.
spec_FourObjectives.txtFile containing a problem specification with four objectives. Copy this file to spec.txt and adjust dim-parameter in PISA_cfg file to run this example.
expo Script used to run the EXPO-tool. For Windows-Version, the script is called expo.bat.
./doc/ Directory which contains tool documentation (this file)

Additionally, you will find a file called PISA_cfg which contains the configuration of the PISA-compliant search algorithm. It is used by both the EXPO-tool and the search algorithm.

The last thing to do before testing the installation is to make sure that the number of dimensions specified in the PISA-specific parameter file PISA_cfg, which is in the parent directory of your expo_linux/ directory, matches the number of objectives in your problem specification file. (The value after the dim parameter in the file PISA_cfg has to match the number of objectives of the problem specification.) If you change the name or the position of the PISA_cfg file to a value different to the default, you will have to adapt the startup-script of the EXPO-tool as well as of the search algorithm.

To test your installation you can run the startup-script for your platform. You can start the tool as follows:

./expo expo_param.txt ../PISA_ 0.2

Here, ./expo runs the Java Virtual Machine with the classpath set to CLASSPATH, expo_param.txt stands for the name of the main properties file, ../PISA_ is the prefix of all the files used for communication with the search algorithm, 0.2 is the polling interval of the algorithm in seconds to check for communication updates.

For a quick start of the tool, you can just run the ./runEXPO script. For the Windows edition, the quick start script is named runEXPO.bat.


User's Guide

To start your copy of the EXPO-tool, just run the startup-script provided with the parameters described above. The script is called expo.bat, expo dependent on the platform. After startup, there will be a window like the one shown in the following figure.


In the center panel, you can identify 3 tabs, the "control", "population" and "implementation" tab. On the control panel, the main part is the log panel on which the tool writes it's log messages. Additionally, there are two buttons, a "Run/Pause" button, which is used to start and pause the communication with the selector algorithm, and a "Reset" button, which resets both the selector algorithm and the EXPO-tool. On the top right corner, you can specify after how many generations the optimization process should stop. If you change this value, please press the "Enter" for confirmation. If you specify this value to be 0, the process will run for an infinite number of generations.

The next panel is the "population"-panel:

population panel

On this panel, you can see two text fields and two buttons. If you press the "text population" button, an editor window is opened and the population file is shown. Every line of the file stands for an individual in the population with its ID as a first value, and its fitness values as the remaining values on the line. If you press the "plot population" value, the two text fields are evaluated and the population is shown in a graphical representation as in the next figure. In the text fields you can specify weights for the different objectives to be displayed. In the default setting, on the x-axis we display the cost and on the y-axis the weighted sum of the throughput of the individuals.
If you check the "update plot" checkbox, the population plot will be updated for every new generation of network processor implementations.

population plot

If you click with your mouse on one of the red bullets, which represents an architecture, its ID is shown.

population with ID

The last panel is the "implementation" panel:

If you want to have a closer look at a specific implementation, you can enter its ID into the first text field and press the "text implementation" button for a textual description for the implementation. For a graphical representation of an implementation you can press on the "show implementation" button. If you use a JRE as new as version 1.4.1, you can have a look at an implementation by clicking with the right mouse button on the individial in the population plot. Finally, if you click on the "draw arrival/service curves" button, all the initial and final arrival curves for all the flow processed by the implementation are shown as well as all the initial and remaining service curves of all the allocated resources of the implementation.

Here, you can see a sample of such an implementation:

sample implementation

On the menu bar on top, you can see buttons to save the picture shown in either SVG, PNG, or JPG-format. On the right in the menu bar you can see all the different scenarios for which you want to optimize your network processor. In the graphic, the actual implementation is shown just for one scenario. Therefore, if you want to see a different scenario, you can do so by just clicking on the appropriate button. On the graphics itself, you first can see for which scenario it is shown, then the maximum scaling factor by which you can scale the arriving data flow, and the accumulated memory needed. The figure shows you all the allocated resources and their utilization. Below for all flows existing in the scenario, we give the priority of the flow (the smaller the number the higher the priority), and the accumulated waiting time for a packet of the flow in a queue. The tasks that have to be performed for a flow are written below the resource they are mapped to. In the picture given above, the task "LinkTx" for the flow "NRTForward" is mapped to the "PowerPC" resource in this scenario.



In this section, we describe the different parameters you can specify in the expo_param.txt file in the main directory. It contains

You will have to edit the expo_param.txt file, if you want to change any of the parameters the EXPO-tool is using. If, for example, you would like to change the use of the GUI, you will have to set the value for gui to 1 instead of 0.

In the following, an example for a expo_param.txt is given.
gui 1
specification spec_ThreeObjectives.txt
parameters expo
seed 1055

guiIf 0, no GUI will be shown. If 1, normal operation.
Name and path of file containing the problem specification.
parameters Name and path of the file containing the parameters for the EXPO tool described in the next section.
seed Seed for the random number generator.


In this section, we describe the different parameters you can specify in the expo.properties file in the expo/ directory. The expo.properties file is organised as a Java properties file, which consists of key-value pairs. The following keys exist (please have a look at the actual expo.properties file, to see how to assign a value to a key)

You will have to edit the expo.properties file, if you want to change any of the parameters the EXPO-tool is using. If, for example, you would like to change the probability for a mutation, you will have to set the PROB_MUTATION to the new probability.

DEBUG_PRINTif 0, then no debug print out will appear
name and path of file containing the system log
POLLING_INTERVAL polling interval for checking the input files for mutation and crossover in msec. This value will be overwritten with the command line parameter
INITIAL_POPULATION_FILE_NAME name of file to which the initial population is written
CONFIG_FILE_NAME suffix of the config file
ARCHIVE_FILE_NAME suffix of file containing the population archive
COMMUNICATION_FILE_NAME suffix of file containing the state of the communication
SELECTOR_INPUT_FILE_NAME suffix of file containing the variation input
VARIATOR_OUTPUT_FILE_NAME suffix of file containing the variation output
ACTUAL_POPULATION_FILE_NAME suffix of file containing the population
EXECUTABLE_EDITOR texteditor for viewing files
MAXIMUM_ACHIEVED_SCALING_FACTORlargest scaling factor achieved in the problem instance
MAXIMUM_ACHIEVED_TOTAL_COSTmaximal total cost of resources that can be achieved for a problem instance
MINIMAL_COST_FOR_RESOURCEminimal cost for one resource unit
LOWER_SCALElowest scaling factor
UPPER_SCALE largest scaling factor
PRECISION_SCALEprecision of scaling factor
PROB_ZERO_ALLOCATION probability that a resource isn't allocated
PROB_MUTATION_ALLOCATION probability that a mutation of a gene affects the resource allocation
PROB_MUTATION_BINDING probability that a mutation of a gene affects the binding
PROB_MUTATION probability that a mutation of a gene is performed
PROB_CROSSOVER probability that a crossover of two genes is performed at all
PROB_CROSSOVER_ALLOCATION probability that the crossover affects the allocation of resources
PROB_CROSSOVER_BINDING probability that the crossover affects the binding of tasks to resources
MAX_GENERATIONS maximum number of generations

last changes on 5. 10. 2005 by Simon Künzli
Valid CSS! Valid XHTML 1.0!