Skip to content

masc-ucsc/desesc

Repository files navigation

desesc

Dromajo ESESC

DESESC is an evolution from SESC, but it does not use semantic versioning. The reason is that after each major change (new letter) there is a period of "beta" unstable which is akind of 0.x version in semantic versioning.

Each major release adds a letter:

SESC

MIPS based OoO core with multicore and TLS support

ESESC

Major changes from SESC:

  • QEMU based emulator (MIPS/RISC-V/ARM)
  • Power/thermal
  • Statistical sampling

DESESC:

Major changes from ESESC:

  • Dromajo instead of QEMU
  • Specter Safe OoO model
  • Major rework for modern C++
  • New configuration

Setup

DESESC requires gcc (or clang) versions 10 or newer and bazelisk.

Install bazelisk

Install Bazelisk

Bazelisk is a wrapper around bazel that allows you to use a specific version.

If you do not have system permissions, you can install a local bazelisk

npm install  @bazel/bazelisk
alias bazel=$(pwd)/node_modules/\@bazel/bazelisk/bazelisk.js

You can also install it directly if you have administrative permissions:

macos:

brew install bazelisk.

Linux:

go install github.com/bazelbuild/bazelisk@latest
export PATH=$PATH:$(go env GOPATH)/bin

Arch linux:

pacaur -S bazelisk  # or yay or paru installers

Dhrystone example

To build desesc with debug version (debug/develop)

bazel build -c dbg //main:desesc

To build desesc with release version (long simulations)

bazel build -c dbg //main:desesc

To run the default simulation (dhrystone):

./bazel-bin/main/desesc -c ./conf/desesc.toml

Konata

You may want to use https://github.com/shioyadan/Konata to see the traces generated