Skip to content

Repository files navigation

Octopus

Octopus is a cycle-accurate cache system simulator with flexible interconnect models. It simulates various cache system and interconnect components, including controllers, data arrays, coherence protocols, and arbiters. Octopus enables the user to build reconfigurable simulation infrastructure for multicore processor chip with a high degree of flexibility of controlling system's configuration parameters. Octopus is implemented in C++ using object-oriented programming concepts to support a modular, expansible, configurable, and integrable design.

Citation

If you use this simulator in your work, please consider cite:

Hossam, Mohamed, Salah Hessien, and Mohamed Hassan. "Octopus: a Cycle-Accurate Cache System Simulator." IEEE Computer Architecture Letters (2024). Octopus.

Getting started

  • The simulator is tested on both Linux Ubuntu 18.04.4 LTS and Ubuntu 20.04.01 releases. You may consider using Virtual Machine VM to install Ubuntu on your machine if it is not your primary operating system.
  • $Octopus refers to the top level directory where Octopus resides.
  • Directory $Octopus/src/ contains the source code of the simulator.
  • Directory $Octopus/header/ contains the header files.
  • Directory $Octopus/Protocols_FSM/ contains the CSV files that defines the coherency protocols' finite state machines.
  • Directory $Octopus/configuration/ contains the CSV files that contains the configuratable parameters of the simulation components.

Building Octopus

Octopus uses CMake to manage the build system of the simulator. In order to build Octopus, you need to install the following:

sudo apt update
sudo apt upgrade
sudo apt-get install build-essential cmake

In order to build the simulator, we create a directory $Octopus/build/

mkdir $Octopus/build/
cd $Octopus/build/
cmake ../ .
make

Building for debug will require an extra flag to CMake

cd $Octopus/build/
cmake ../ . --DCMAKE_BUILD_TYPE=Debug
make

Running Octopus

Running the simulator requires to choose a system configuration to run and a workload. In the example, we choose to run MultiCoreSystem with the workload TestBM in $Octopus/BMs/TestBM/. $Octopus should be replaced with the full path of the simulator's directory.

cd $Octopus/build/
./Octopus_Simulator -s MultiCoreSystem -p "workload_path(s)=$Octopus/BMs/TestBM/"

-s is used to specify the configuration, and -p is to overwrite any parameter in the configuration.

The default output reports will be found in $Octopus/BMs/TestBM/newLogger/.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages