Giter VIP home page Giter VIP logo

ramulator-nvmain's Introduction

ramulator-NVMain

An Architectural Level Main Memory Simulator for 
Emerging Non-Volatile Memories

======================================================

#Sections

1. Overview
2. Building ramulator-NVMain
Trace Simulation
3. Running ramulator-NVMain
4. Configuring ramulator-NVMain
5. Hacking ramulator-NVMain
6. README Changelog

  1. Overview

    ramulator-NVMain is a cycle accurate main memory simulator designed to simulate emerging non-volatile memories at the architectural level. Since the current status of non-volatile memory is unknown and this is a research tool, flexability is provided to implement different variations of memory controllers, interconnects, organizations, etc. Ramulator as our processor, in CPU trace-driven mode. CPU traces are collected using a Pintool. To model the stacked and the off-chip DRAM memory we have integrated a detailed main memory simulator - NVMain. We use NVMain to obtain Latency and hit rate results of the DRAM cache subsystem. We feed NVMain with DRAM command traces obtained from our simulations using Ramulator.

    Thanks for trying ramulator-NVMain!


  1. Building ramulator-NVMain

    ramulator-NVMain can be build as a standalone executable to run trace-based simulations.

    Trace Simulation

    The trace simulation can be build using scons:

    $ scons --build-type=[release|debug]

    Compiling with scons will automatically set the compile flags needed for trace-based simulation. You can use --build-type=debug to add debugging symbol, or release for -03 optimization.


  1. Running ramulator-NVMain

    NVMain can be run on the command line with trace-based simulation via:

    ./nvmain CONFIG_FILE TRACE_FILE

    eg. cd ramulator-NVMain scons ./nvmain.fast Tests/Configs/LO.config ../Trace/403.gcc

    The CONFIG_FILE is the path to the configuration file for the memory system being simulated. The TRACE_FILE is the path to the trace file with the memory requests to simulate. Cycles is optional and specifies the max number of cycles to simulate. By default the entire trace file is simulated.


  1. Configuring ramulator-NVMain

    ramulator-NVMain can be configured using the configuration files. Several example configuration files can be found in the Config/ folder in the ramulator-NVMain trunk.


  1. Hacking ramulator-NVMain

    As mentioned in the overview, ramulator-NVMain is meant to be flexible. Writing your own interconnect, memory controller, endurance model, address translator, etc. Can be done by creating a new C++ file with your new class.

    Each unit has a Factory class which selects the class to used based on the configuration file input. You can create a class by looking at one of the example classes in each folder:

    MemControl - Custom Memory Controllers FaultModels - Custom hard-fault models Decoders - Custom address translators Endurance - Custom Endurance models Interconnect - Custom Interconnects Prefetchers - Custom prefetchers SimInterface - Simulator interface used to gather useful statistics from the CPU simulator such as instructions executed, cache miss rates, etc. traceReader - Custom trace file readers

    When adding a class, make sure to update the factory class to #include your class header and to initialize your class if the configuration is set to your class' name.


9/08/2016 - Created first README

ramulator-nvmain's People

Contributors

chenpai avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.