|
|
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.

To learn more about the models and the evaluation method the EXPO-tool is based on, please have a look at this paper:
Bibtex:
@InProceedings{TCGK_DAC02,
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}
}
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.jar | JAR-file containing EXPO-tool itself |
expo_param.txt | File containing the main parameters for the EXPO-tool. |
expo.properties | File containing parameters used by EXPO |
LICENSE |
File containing licenses for EXPO, Batik, and PtPlot |
spec_TwoObjectives.txt | File 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.txt | File 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.txt | File 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.
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:
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.
If you click with your mouse on one of the red bullets, which represents an architecture, its ID is shown.
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:

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
gui | If 0, no GUI will be shown. If 1, normal operation. |
specification |
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_PRINT | if 0, then no debug print out will appear |
LOG_FILE_PATHLOG_FILE_NAME |
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_FACTOR | largest scaling factor achieved in the problem instance |
MAXIMUM_ACHIEVED_TOTAL_COST | maximal total cost of resources that can be achieved for a problem instance |
MINIMAL_COST_FOR_RESOURCE | minimal cost for one resource unit |
LOWER_SCALE | lowest scaling factor |
UPPER_SCALE |
largest scaling factor |
PRECISION_SCALE | precision 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
|
|