This README briefly describes what Heo is and how to setup & run Heo.
Copyright (c) 2010-2019 by Min Cai (min.cai.china@bjut.edu.cn)
This program is free software, licensed under the MIT license.
Heo is a cycle-accurate multicore architectural simulator.
Heo is written in Go.
-
Heo facilitates interface-based hierarchical object orientation to improve code readability and extensibility.
-
Heo provides functional architectural simulation of:
- Program loading for statically-linked MIPS32 ELF executables (both Little Endian and Big Endian are supported);
- Functional execution of common integer and floating-point instructions of MIPS32 ISA;
- Emulation of common POSIX system calls;
- Execution of Pthreads based multithreaded programs.
-
Heo provides cycle-accurate microarchitectural simulation of:
- Separate pipeline structures such as the reorder buffer, separate integer and floating point physical register files;
- Explicit register renaming based on the merged architectural and rename register file model;
- Single-threaded superscalar out-of-order execution, multithreaded SMT and CMP execution model;
- Multi-level inclusive cache hierarchy with the directory-based MESI coherence protocol;
- Simple cycle-accurate DRAM controller model;
- Various kinds of static and dynamic branch predictors, checkpointing-based pipeline recovery on branch misprediction (with bugs).
-
Heo supports the following unclassified simulation features:
- Support measurement of instructions, pipeline structures and the memory hierarchy;
- Support generation of instruction traces;
- Support both execution-driven and trace-driven NoC subsystem simulation;
- Support seamless switching between functional simulation and performance simulation mode;
- Support the thread based data prefetching scheme: classification of good, bad and ugly prefetch requests.
-
Heo provides the following common infrastructure:
- Scheduling and dispatching framework for modeling synchronous (cycle accurate) and asynchronous activities;
- Easy configuration and statistics reporting of the simulated architectures, workloads and simulations.
-
Heo currently supports correct execution of all the Olden benchmark suite except incorrect output from "health", plus some of CPU2006 benchmarks. Other benchmarks are being tested.
-
Support CPU2006, PARSEC and Rodinia.
-
Support CPU-GPU heterogeneous multicore architectures.
-
Support CPU frequency control (multiple clock domain).
-
Support DRAM-NVM hybrid memory systems.
-
Support Command line options and component properties.
-
Support multiple hardware prefetchers.
-
Support application of machine learning algorithms in architectural components.
-
sudo apt-get install python3-pip python3-tk
-
pip3 install --upgrade pip
-
pip3 install matplotlib pandas seaborn objectpath
Heo has been developed and tested on 64-bit MacOS 10.15 Beta with go 1.12.5.
For developing and running Heo, make sure that:
-
You have the latest versions of Linux distributions or Mac OS installed;
-
You have the latest versions of Golang compiler installed.
git clone https://github.com/mcai/heo
- As is always true for open source software, the existing Heo code are good examples for demonstrating its usage and power.
Please report bugs and send suggestions to:
Min Cai (min.cai.china@bjut.edu.cn)
Faculty of Information Technology, Beijing University of Technology, Beijing, China