Updates gem5 readme.
This commit is contained in:
@@ -1,62 +1,21 @@
|
|||||||
## DRAMSys with gem5
|
## DRAMSys with gem5
|
||||||
|
|
||||||
Install gem5 by following the instructions on the [gem5 wiki](http://gem5.org/Documentation#Getting_Started).
|
Install gem5 by following the instructions in the [gem5 documentation](http://learning.gem5.org/book/part1/index.html). In order to allow a coupling without getting errors we recommend to use **commit a470ef5**. Optionally, use the scripts from [gem5.TnT] to install gem5, build it, get some benchmark programs and learn more about gem5.
|
||||||
Optionally, use the scripts from [gem5.TnT] to install gem5, build it, get some benchmark programs and learn more about gem5.
|
|
||||||
|
|
||||||
In order to understand the SystemC coupling with gem5 it is recommended to
|
In order to understand the SystemC coupling with gem5 it is recommended to read the documentation in the gem5 repository *util/tlm/README* and [1].
|
||||||
read the documentation in the gem5 repository *util/tlm/README* and [1].
|
|
||||||
|
|
||||||
The main steps for building gem5 and libgem5 follow:
|
The main steps for building gem5 and libgem5 follow:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
scons build/ARM/gem5.opt
|
scons build/ARM/gem5.opt
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
scons --with-cxx-config --without-python --without-tcmalloc build/ARM/libgem5_opt.so
|
scons --with-cxx-config --without-python --without-tcmalloc build/ARM/libgem5_opt.so
|
||||||
```
|
```
|
||||||
|
|
||||||
For MacOS:
|
In order to use gem5 with DRAMSys export the `GEM5` environment variable (gem5 root directory) and add the path of the library to `LD_LIBRARY_PATH`, then rerun CMake and rebuild the DRAMSys project.
|
||||||
|
|
||||||
```bash
|
Before you can run gem5 with DRAMSys it is mandatory to run gem5 first without DRAMSys and generate a configuration file *config.ini*, which will be the value of the second parameter passed to DRAMSys_gem5.
|
||||||
scons --with-cxx-config --without-python --without-tcmalloc build/ARM/libgem5_opt.dylib
|
|
||||||
```
|
|
||||||
|
|
||||||
In order to use gem5 with DRAMSys set the **GEM5** environment variable to the
|
### DRAMSys with gem5 Traffic Generator
|
||||||
path to gem5, for example in the *QtCreator under Projects > Build
|
|
||||||
& Run > Build Environment*:
|
|
||||||
|
|
||||||
```
|
|
||||||
GEM5=/path/to/gem5/
|
|
||||||
```
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```
|
|
||||||
GEM5=$HOME/gem5_tnt/gem5
|
|
||||||
```
|
|
||||||
|
|
||||||
Optionally, export environment variables in your **~/.bashrc** file or
|
|
||||||
equivalent and open a new terminal:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# In this example gem5 is located at $HOME/gem5_tnt/gem5.
|
|
||||||
export GEM5=$HOME/gem5_tnt/gem5
|
|
||||||
|
|
||||||
# Add the folder containing libgem5_opt.so to the list where libraries should
|
|
||||||
# be searched for.
|
|
||||||
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GEM5}/build/ARM
|
|
||||||
```
|
|
||||||
|
|
||||||
The project file [DRAMSys.pro](DRAMSys/DRAMSys.pro) checks whether the
|
|
||||||
environment variable **GEM5** is defined or not and configures automatically
|
|
||||||
the corresponding build target **gem5** for QtCreator.
|
|
||||||
|
|
||||||
In order to run gem5 with DRAMSys it is mandatory to run gem5 first without
|
|
||||||
DRAMSys and generate a configuration file **config.ini** which will be the
|
|
||||||
value of the second parameter passed to DRAMSys_gem5.
|
|
||||||
|
|
||||||
### DRAMSys with gem5 traffic generator
|
|
||||||
|
|
||||||
In the following we will run a simple example with a gem5 traffic generator:
|
In the following we will run a simple example with a gem5 traffic generator:
|
||||||
|
|
||||||
@@ -78,12 +37,10 @@ Base System Architecture:
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
As mentioned before we first need to create a config.ini
|
As mentioned before we first need to create a *config.ini* that represents the gem5 configuration. We do so by starting gem5 with the desired python configuration script.
|
||||||
that represents the gem5 configuration. We do so by starting gem5 with the
|
|
||||||
desired python configuration script.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd gem5/utils/tlm/
|
cd gem5/util/tlm/
|
||||||
../../build/ARM/gem5.opt conf/tlm_slave.py
|
../../build/ARM/gem5.opt conf/tlm_slave.py
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -92,16 +49,10 @@ cd gem5/utils/tlm/
|
|||||||
"fatal: Can't find port handler type 'tlm_slave'"
|
"fatal: Can't find port handler type 'tlm_slave'"
|
||||||
```
|
```
|
||||||
|
|
||||||
The configuration file config.ini will be stored in the **m5out** directory.
|
The configuration file *config.ini* will be stored in the *m5out* directory. Copy this configuration file to the building directory of DRAMSys where the
|
||||||
Copy this configuration file to the building directory of DRAMSys where the
|
executable *DRAMSys_gem5* is located (*DRAMSys/build/gem5*).
|
||||||
executable **DRAMSys_gem5** is located:
|
|
||||||
|
|
||||||
```
|
Also the traffic generatior configuration file (*conf/tgen.cfg*) must be stored in a conf directory of this building directory (*DRAMSys/build/gem5/conf*).
|
||||||
dram.sys/build-DRAMSys-Desktop_Qt_5_7_0_clang_64bit-Debug/gem5
|
|
||||||
```
|
|
||||||
|
|
||||||
Also the traffic generatior configuration file (conf/tgen.cfg) must be stored
|
|
||||||
in a conf directory of this building directory.
|
|
||||||
|
|
||||||
Then the simulation can be started with:
|
Then the simulation can be started with:
|
||||||
|
|
||||||
@@ -109,11 +60,9 @@ Then the simulation can be started with:
|
|||||||
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-example.json config.ini 1
|
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-example.json config.ini 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Let the simulation run for some seconds and then stop it with **CTRL-C**.
|
Let the simulation run for some seconds and then stop it with **CTRL-C**. Observe the output of the simulation in the Trace Analyzer. The trace database can be found in *DRAMSys/build/gem5*.
|
||||||
Observe the output of the simulation in the trace analyzer. The trace database
|
|
||||||
can be found inside the gem5 directory in the building directory.
|
|
||||||
|
|
||||||
### Gem5 SE mode and DRAMSys
|
### gem5 SE mode and DRAMSys
|
||||||
|
|
||||||
All essential files for some functional examples are provided.
|
All essential files for some functional examples are provided.
|
||||||
|
|
||||||
@@ -135,13 +84,9 @@ Execute applications:
|
|||||||
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-gem5-se.json ../../DRAMSys/gem5/gem5_se/Bubblesort/config.ini 1
|
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-gem5-se.json ../../DRAMSys/gem5/gem5_se/Bubblesort/config.ini 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Wait some minutes for the application to finish.
|
Wait some minutes for the application to finish. The hello application binary was copied from gem5 repository. Other applications were obtained with [gem5.TnT].
|
||||||
|
|
||||||
The hello application binary was copied from gem5 repository.
|
Command template for generating *.ini* configuration files follows:
|
||||||
|
|
||||||
Other applications were obtained with [gem5.TnT].
|
|
||||||
|
|
||||||
Command template for generating **.ini** configuration files follows:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
build/ARM/gem5.opt configs/example/se.py \
|
build/ARM/gem5.opt configs/example/se.py \
|
||||||
@@ -155,10 +100,9 @@ An overview of the architcture being simulated is presented below:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Note**: this is a gem5 generated file, therefore DRAMSys is omitted. DRAMSys is
|
**Note**: This is a gem5 generated file, therefore DRAMSys is omitted. DRAMSys is directly connected as an external TLM slave.
|
||||||
direct connected as external tlm slave.
|
|
||||||
|
|
||||||
**Note**: workaround in se.py required:
|
**Note**: Workaround in se.py required:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
...
|
...
|
||||||
@@ -168,25 +112,18 @@ MemConfig.config_mem(options, system)
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
A convenience script to execute several applications automatically
|
A convenience script to execute several applications automatically [run.sh](DRAMSys/gem5/gem5_se/run.sh) is provided. Take a look and learn from it.
|
||||||
[**run.sh**](DRAMSys/gem5/gem5_se/run.sh) is provided . Take a look and learn
|
|
||||||
from it.
|
|
||||||
|
|
||||||
### [PARSEC] FS Mode
|
### [PARSEC] FS Mode
|
||||||
|
|
||||||
Full system simulation files for ARM available in [DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB](DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB).
|
Full system simulation files for ARM are available in [DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB](DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB). Choose the benchmark in [parsec_arm_minor_2c_8GB.rcS](DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB/parsec_arm_minor_2c_8GB.rcS) and edit the paths in [config.ini](DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB/config.ini).
|
||||||
|
|
||||||
Choose the benchmark in [parsec_arm_minor_2c_8GB.rcS](DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB/parsec_arm_minor_2c_8GB.rcS).
|
All files required to build DRAMSys_gem5 and execute the simulation (gem5 library, benchmarks, disk image, etc.) can be obtained with [gem5.TnT].
|
||||||
|
|
||||||
Edit the paths in [config.ini](DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB/config.ini).
|
Start a simulation, e.g.:
|
||||||
|
|
||||||
All files required to build DRAMSys_gem5 and execute the simulation (gem5
|
|
||||||
library, benchmarks, disk image, etc.) can be obtained with [gem5.TnT].
|
|
||||||
|
|
||||||
Start a simulation. Example:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
dram.sys/build/gem5$ ./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/rgrsim-gem5-fs.json ../../DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB/config.ini 1
|
DRAMSys/build/gem5$ ./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/rgrsim-gem5-fs.json ../../DRAMSys/gem5/gem5_fs/parsec_arm_minor_2c_8GB/config.ini 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Optionally, open another terminal or tab and connect to gem5.
|
Optionally, open another terminal or tab and connect to gem5.
|
||||||
@@ -195,7 +132,7 @@ Optionally, open another terminal or tab and connect to gem5.
|
|||||||
$ telnet localhost 3456
|
$ telnet localhost 3456
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: the port may vary, gem5 prints it during initialization. Example:
|
Note: The port may vary, gem5 prints it during initialization. Example:
|
||||||
|
|
||||||
```
|
```
|
||||||
system.terminal: Listening for connections on port 3456
|
system.terminal: Listening for connections on port 3456
|
||||||
@@ -204,12 +141,7 @@ system.terminal: Listening for connections on port 3456
|
|||||||
### [PARSEC] SE Mode
|
### [PARSEC] SE Mode
|
||||||
|
|
||||||
|
|
||||||
Binaries and gem5 SE configuration files for ARM available in [DRAMSys/gem5/gem5_se/parsec-arm](DRAMSys/gem5/gem5_se/parsec-arm).
|
Binaries and gem5 SE configuration files for ARM available in [DRAMSys/gem5/gem5_se/parsec-arm](DRAMSys/gem5/gem5_se/parsec-arm). Use [gem5.TnT] to download parsec: Go to your *gem5.TnT* folder. Then go to *arch/arm* folder. Execute the script *build-parsec-serial.sh*.
|
||||||
|
|
||||||
Use [gem5.TnT] to download parsec. Example:
|
|
||||||
|
|
||||||
Go to your **gem5.TnT** folder. Then go to **arch/arm** folder. Execute the
|
|
||||||
script *build-parsec-serial.sh*.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gem5.TnT/arch/arm$ ./build-parsec-serial.sh
|
gem5.TnT/arch/arm$ ./build-parsec-serial.sh
|
||||||
@@ -308,7 +240,7 @@ executable=../../DRAMSys/gem5/gem5_se/parsec-arm/blackscholes/blackscholes
|
|||||||
Start a simulation. Example:
|
Start a simulation. Example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
dram.sys/build/gem5$ ./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/rgrsim-gem5-se.json ../../DRAMSys/gem5/gem5_se/parsec-arm/config.ini 1
|
DRAMSys/build/gem5$ ./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/rgrsim-gem5-se.json ../../DRAMSys/gem5/gem5_se/parsec-arm/config.ini 1
|
||||||
```
|
```
|
||||||
|
|
||||||
### Boot Linux with gem5 and DRAMSys
|
### Boot Linux with gem5 and DRAMSys
|
||||||
@@ -327,9 +259,9 @@ build/ARM/gem5.opt configs/example/fs.py \
|
|||||||
--disk-image=linux-aarch32-ael.img
|
--disk-image=linux-aarch32-ael.img
|
||||||
```
|
```
|
||||||
|
|
||||||
The config.ini should be copied again to the DRAMSys_gem5 build folder.
|
The *config.ini* should be copied again to the DRAMSys_gem5 build folder.
|
||||||
|
|
||||||
The simconfig should be changed in order to support storage and address offsets:
|
The *simconfig* should be changed in order to support storage and address offsets:
|
||||||
|
|
||||||
``` json
|
``` json
|
||||||
{
|
{
|
||||||
@@ -341,11 +273,9 @@ The simconfig should be changed in order to support storage and address offsets:
|
|||||||
"EnableWindowing": false,
|
"EnableWindowing": false,
|
||||||
"ErrorCSVFile": "",
|
"ErrorCSVFile": "",
|
||||||
"ErrorChipSeed": 42,
|
"ErrorChipSeed": 42,
|
||||||
"NumberOfDevicesOnDIMM": 8,
|
|
||||||
"NumberOfMemChannels": 1,
|
|
||||||
"PowerAnalysis": false,
|
"PowerAnalysis": false,
|
||||||
"SimulationName": "ddr3",
|
"SimulationName": "ddr3",
|
||||||
"SimulationProgressBar": true,
|
"SimulationProgressBar": false,
|
||||||
"ThermalSimulation": false,
|
"ThermalSimulation": false,
|
||||||
"WindowSize": 1000,
|
"WindowSize": 1000,
|
||||||
|
|
||||||
@@ -356,13 +286,13 @@ The simconfig should be changed in order to support storage and address offsets:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Then start DRAMSys_gem5 with the following command:
|
Then start *DRAMSys_gem5* with the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-example.json config.ini 1
|
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-example.json config.ini 1
|
||||||
```
|
```
|
||||||
|
|
||||||
For further sophisticated address mappings or scenarios checkout the file DRAMSys/gem5/main.cpp
|
For further sophisticated address mappings or scenarios checkout the file *DRAMSys/gem5/main.cpp*.
|
||||||
|
|
||||||
#### Boot Linux with gem5 and DRAMSys Example
|
#### Boot Linux with gem5 and DRAMSys Example
|
||||||
|
|
||||||
@@ -386,24 +316,19 @@ Open a new terminal and connect to gem5:
|
|||||||
telnet localhost 3456
|
telnet localhost 3456
|
||||||
```
|
```
|
||||||
|
|
||||||
Wait some minutes for the Linux boot process to complete then login. Username is
|
Wait some minutes for the Linux boot process to complete then login. Username is **root**, no password required.
|
||||||
**root** no password required.
|
|
||||||
|
|
||||||
|
|
||||||
### DRAMSys with gem5 Elastic Traces
|
### DRAMSys with gem5 Elastic Traces
|
||||||
|
|
||||||
For understanding elastic traces and their generation, study the [gem5
|
To understand elastic traces and their generation, study the [gem5 wiki](https://www.gem5.org/documentation/general_docs/cpu_models/TraceCPU) and the paper [2]. Some predefined configs are stored [here](DRAMSys/gem5/configs) and the related
|
||||||
wiki](http://gem5.org/TraceCPU) and the paper [2].
|
python files are stored [here](DRAMSys/gem5/examples). This is an example for running an elastic trace:
|
||||||
Some predefined configs are stored [here](DRAMSys/gem5/configs) and the related
|
|
||||||
python files are stored [here](DRAMSys/gem5/examples).
|
|
||||||
|
|
||||||
This is an example for running an elastic trace:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-example.json ../../DRAMSys/gem5/configs/singleElasticTraceReplay.ini 1
|
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-example.json ../../DRAMSys/gem5/configs/singleElasticTraceReplay.ini 1
|
||||||
```
|
```
|
||||||
|
|
||||||
An overview of the architcture being simulated is presented below:
|
An overview of the architecture being simulated is presented below:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -425,109 +350,13 @@ An overview of the architcture being simulated is presented below:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
For more spophisticated setups, even with l2 caches the proper ini file should be created.
|
For more sophisticated setups, even with L2 caches the proper *.ini* file should be created.
|
||||||
If you need help please contact Matthias Jung.
|
|
||||||
|
|
||||||
### DRAMSys + GEM5 Log Collector Scripts
|
### DRAMSys + gem5 x86
|
||||||
|
|
||||||
Users can profit of running multiple **DRAMSys + gem5** simulations
|
Make sure you have built *gem5/build/X86/libgem5_opt.so*. Add the path of the library to `LD_LIBRARY_PATH` and remove the path of the ARM library.
|
||||||
automatically with [gem5ilva.sh] for **gem5 syscall emulation (SE) mode** and
|
|
||||||
[gem5ilva_fs.sh] for **gem5 full system (FS) mode**.
|
|
||||||
|
|
||||||
Normally you will have to push your changes before running the scripts. This
|
Change the architecture in the [CMake file](DRAMSys/gem5/CMakeLists.txt) to *X86*, rerun CMake and rebuild the project. Test with a hello world application for X86:
|
||||||
approach makes it easier to track back what exactly was tested by the scripts.
|
|
||||||
|
|
||||||
The scripts provide variables that tell **git** where to get the source
|
|
||||||
code from (repository URL), user name to be used (your git account),
|
|
||||||
**branch** to checkout (your working branch), etc. They are:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Git info.
|
|
||||||
git_user="$USER"
|
|
||||||
git_branch="master"
|
|
||||||
git_url="git.eit.uni-kl.de:ems/astdm/dram.sys.git"
|
|
||||||
git_url_https="git.eit.uni-kl.de/ems/astdm/dram.sys.git"
|
|
||||||
```
|
|
||||||
|
|
||||||
The default values of the variables presented above assume that your git
|
|
||||||
account uses the same name as your user name in your PC. If that is not the
|
|
||||||
case, replace the value of the **git_user** variable with your git account
|
|
||||||
name. Similarly, replace the value of the variable **git_branch** with your
|
|
||||||
working branch name. There (in your working branch) you can push your changes
|
|
||||||
and/or new files before executing the scripts.
|
|
||||||
|
|
||||||
Open the script in QtCreator or another text editor of your choice and set the
|
|
||||||
variables with values that fit your needs.
|
|
||||||
|
|
||||||
Nevertheless, for some cases, you may want to have gem5 essential files out of
|
|
||||||
the main repository (usually because they are too big to be added to the
|
|
||||||
repository).
|
|
||||||
|
|
||||||
For those cases uncomment and properly set the variable
|
|
||||||
**external_inifile_path** in [gem5ilva_fs.sh].
|
|
||||||
|
|
||||||
This allows you to use a gem5 **config.ini** file external to the repository.
|
|
||||||
Note, however, that in this case it is up to you to keep track of your
|
|
||||||
simulation setup.
|
|
||||||
|
|
||||||
**Hint:**
|
|
||||||
[gem5.TnT] provides convenience scripts
|
|
||||||
to create gem5 disk images with benchmarking programs embedded.
|
|
||||||
|
|
||||||
|
|
||||||
### Coverage Check
|
|
||||||
|
|
||||||
Coverage check is enabled by default and can be disabled with an environment
|
|
||||||
variable.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
export COVERAGE=true
|
|
||||||
```
|
|
||||||
|
|
||||||
### DRAMSys + GEM5 x86
|
|
||||||
|
|
||||||
Make sure you have built **gem5/build/X86/libgem5_opt.so**. If you build with
|
|
||||||
[gem5.TnT] you can check if the library exists as follows.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ ls $HOME/gem5_tnt/gem5/build/X86/libgem5_opt.so
|
|
||||||
```
|
|
||||||
|
|
||||||
Change your ~/.bashrc.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# In this example gem5 is located at $HOME/gem5_tnt/gem5.
|
|
||||||
export GEM5=$HOME/gem5_tnt/gem5
|
|
||||||
|
|
||||||
# Add the folder containing libgem5_opt.so to the list where libraries should
|
|
||||||
# be searched for.
|
|
||||||
#export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GEM5}/build/ARM
|
|
||||||
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GEM5}/build/X86
|
|
||||||
```
|
|
||||||
|
|
||||||
After that close QtCreator and all terminals.
|
|
||||||
|
|
||||||
Open a new terminal.
|
|
||||||
|
|
||||||
Change the architecture in [DRAMSys/gem5/gem5.pro](DRAMSys/gem5/gem5.pro).
|
|
||||||
|
|
||||||
```
|
|
||||||
gem5_arch = 'X86'
|
|
||||||
```
|
|
||||||
|
|
||||||
Delete the file **DRAMSys/DRAMSys.pro.user** from the repository.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ rm DRAMSys/DRAMSys.pro.user
|
|
||||||
```
|
|
||||||
|
|
||||||
Open a new QtCreator.
|
|
||||||
|
|
||||||
Build DRAMSys as usual.
|
|
||||||
|
|
||||||
After building, go the the folder where *DRAMSys_gem5* is located.
|
|
||||||
|
|
||||||
Test with a hello world application for X86.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-gem5-se.json ../../DRAMSys/gem5/gem5_se/hello-x86/config.ini 1
|
./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/ddr3-gem5-se.json ../../DRAMSys/gem5/gem5_se/hello-x86/config.ini 1
|
||||||
@@ -641,21 +470,16 @@ Examples:
|
|||||||
|
|
||||||
Check the folder [DRAMSys/gem5/gem5_se/MiBench](DRAMSys/gem5/gem5_se/MiBench) for all applications and configuration files.
|
Check the folder [DRAMSys/gem5/gem5_se/MiBench](DRAMSys/gem5/gem5_se/MiBench) for all applications and configuration files.
|
||||||
|
|
||||||
### More AARCH64 Apps
|
### More AArch64 Apps
|
||||||
|
|
||||||
Full system simulation files for ARM available in [DRAMSys/gem5/gem5_fs/arm64](DRAMSys/gem5/gem5_fs/arm64).
|
Full system simulation files for ARM available in [DRAMSys/gem5/gem5_fs/arm64](DRAMSys/gem5/gem5_fs/arm64). You can edit [arm64.rcS](DRAMSys/gem5/gem5_fs/arm64/arm64.rcS) to start an application and call *m5 exit* when it finishes.
|
||||||
|
|
||||||
You can edit [arm64.rcS](DRAMSys/gem5/gem5_fs/arm64/arm64.rcS) to start an application and call *m5 exit* when it finishes.
|
Edit the paths in [config.ini](DRAMSys/gem5/gem5_fs/arm64/config.ini). All files required to build DRAMSys_gem5 and execute the simulation (gem5 library, benchmarks, disk image, etc.) can be obtained with [gem5.TnT].
|
||||||
|
|
||||||
Edit the paths in [config.ini](DRAMSys/gem5/gem5_fs/arm64/config.ini).
|
|
||||||
|
|
||||||
All files required to build DRAMSys_gem5 and execute the simulation (gem5
|
|
||||||
library, benchmarks, disk image, etc.) can be obtained with [gem5.TnT].
|
|
||||||
|
|
||||||
Start a simulation. Example:
|
Start a simulation. Example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
dram.sys/build/gem5$ ./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/rgrsim-gem5-fs.json ../../DRAMSys/gem5/gem5_fs/arm64/config.ini 1
|
DRAMSys/build/gem5$ ./DRAMSys_gem5 ../../DRAMSys/library/resources/simulations/rgrsim-gem5-fs.json ../../DRAMSys/gem5/gem5_fs/arm64/config.ini 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Optionally, open another terminal or tab and connect to gem5.
|
Optionally, open another terminal or tab and connect to gem5.
|
||||||
@@ -664,7 +488,7 @@ Optionally, open another terminal or tab and connect to gem5.
|
|||||||
$ telnet localhost 3456
|
$ telnet localhost 3456
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: the port may vary, gem5 prints it during initialization. Example:
|
Note: The port may vary, gem5 prints it during initialization. Example:
|
||||||
|
|
||||||
```
|
```
|
||||||
system.terminal: Listening for connections on port 3456
|
system.terminal: Listening for connections on port 3456
|
||||||
@@ -677,11 +501,5 @@ C. Menard, M. Jung, J. Castrillon, N. Wehn. IEEE International Conference on Emb
|
|||||||
R. Jagtap, S. Diestelhorst, A. Hansson, M. Jung, N. Wehn, IEEE International Conference on Embedded Computer Systems Architectures Modeling and Simulation (SAMOS), 2016, Samos Island, Greece.
|
R. Jagtap, S. Diestelhorst, A. Hansson, M. Jung, N. Wehn, IEEE International Conference on Embedded Computer Systems Architectures Modeling and Simulation (SAMOS), 2016, Samos Island, Greece.
|
||||||
|
|
||||||
[gem5.TnT]: https://github.com/tukl-msd/gem5.TnT
|
[gem5.TnT]: https://github.com/tukl-msd/gem5.TnT
|
||||||
[gem5ilva.sh]: DRAMSys/library/resources/scripts/DRAMSylva/gem5ilva.sh
|
|
||||||
[gem5ilva_fs.sh]: DRAMSys/library/resources/scripts/DRAMSylva/gem5ilva_fs.sh
|
|
||||||
[Elwetritsch]: https://elwe.rhrk.uni-kl.de/
|
|
||||||
[DRAMSylva.sh]: DRAMSys/library/resources/scripts/DRAMSylva/DRAMSylva.sh
|
|
||||||
[DRAMSylva folder]: DRAMSys/library/resources/scripts/DRAMSylva
|
|
||||||
[configs_json]: DRAMSys/library/resources/scripts/DRAMSylva/configs_json
|
|
||||||
[MiBench]: http://vhosts.eecs.umich.edu/mibench/
|
[MiBench]: http://vhosts.eecs.umich.edu/mibench/
|
||||||
[PARSEC]: http://parsec.cs.princeton.edu/
|
[PARSEC]: http://parsec.cs.princeton.edu/
|
||||||
11
README.md
11
README.md
@@ -360,12 +360,9 @@ An example follows.
|
|||||||
- PowerDownTimeout (unsigned int)
|
- PowerDownTimeout (unsigned int)
|
||||||
- currently unused
|
- currently unused
|
||||||
|
|
||||||
### DRAMSys with Thermal Simulation
|
## DRAMSys with Thermal Simulation
|
||||||
|
|
||||||
The thermal simulation is performed by a **3D-ICE** [8] server accessed
|
The thermal simulation is performed by a **3D-ICE** [8] server accessed through the network. Therefore users interested in thermal simulation during their DRAMSys simulations need to make sure they have a 3D-ICE server up and running before starting. For more information about 3D-ICE visit the [official website](https://www.epfl.ch/labs/esl/open-source-software-projects/3d-ice/).
|
||||||
through the network. Therefore users interested in thermal simulation during
|
|
||||||
their DRAMSys simulations need to make sure they have a 3D-ICE server up and
|
|
||||||
running before starting. For more information about 3D-ICE visit the [official website](https://www.epfl.ch/labs/esl/open-source-software-projects/3d-ice/).
|
|
||||||
|
|
||||||
#### Installing 3D-ICE
|
#### Installing 3D-ICE
|
||||||
|
|
||||||
@@ -459,6 +456,10 @@ $ cd DRAMSys/build/simulator/
|
|||||||
$ ./DRAMSys ../../DRAMSys/library/resources/simulations/wideio-thermal.json
|
$ ./DRAMSys ../../DRAMSys/library/resources/simulations/wideio-thermal.json
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## DRAMSys with gem5
|
||||||
|
|
||||||
|
Further information about the usage of DRAMSys with gem5 can be found [here](DRAMSys/gem5/README.md).
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
[1] TLM Modelling of 3D Stacked Wide I/O DRAM Subsystems, A Virtual Platform for Memory Controller Design Space Exploration
|
[1] TLM Modelling of 3D Stacked Wide I/O DRAM Subsystems, A Virtual Platform for Memory Controller Design Space Exploration
|
||||||
|
|||||||
Reference in New Issue
Block a user