Giter VIP home page Giter VIP logo

cmu-safari / pythia-hdl Goto Github PK

View Code? Open in Web Editor NEW
11.0 6.0 3.0 771 KB

Implementation of Pythia: A Customizable Hardware Prefetching Framework Using Online Reinforcement Learning in Chisel HDL. To know more, please read the paper that appeared in MICRO 2021 by Bera et al. (https://arxiv.org/pdf/2109.12021.pdf).

Home Page: https://arxiv.org/pdf/2109.12021.pdf

License: MIT License

Scala 100.00%
prefetcher hdl scala chisel chisel3 firrtl firrtl-circuit reinforcement-learning machine-learning

pythia-hdl's Introduction

Logo

A Customizable Hardware Prefetching Framework Using Online Reinforcement Learning

Chisel Implementation

GitHub GitHub release Build DOI

Table of Contents
  1. What is Pythia?
  2. Setup
  3. Run
  4. Citation
  5. License
  6. Contact
  7. Acknowledgements

What is Pythia?

Pythia is a hardware-realizable, light-weight data prefetcher that uses reinforcement learning to generate accurate, timely, and system-aware prefetch requests.

Pythia formulates hardware prefeteching as a reinforcement learning task. For every demand request, Pythia observes multiple different types of program context information to take a prefetch decision. For every prefetch decision, Pythia receives a numerical reward that evaluates prefetch quality under the current memory bandwidth utilization. Pythia uses this reward to reinforce the correlation between program context information and prefetch decision to generate highly accurate, timely, and system-aware prefetch requests in the future.

Pythia is implemented in ChampSim simulator. The code can be found here:

Pythia GitHub release

Setup

To setup Chisel3 in local machine, please follow the setup instructions

Run

To run/test a module, use the following command:

sbt -v "test:runMain pythia.Launcher <Module name>"
sbt -v "test:runMain pythia.Launcher MasterModule"

The supported modules are:

Module Name Description
IndexGen Generates a plane index from PC+Offset or Delta path feature. Implements Robert Jenkin's 32-bit hash function.
Plane Implements a plane construct.
Vault Implements a vault construct. Essentially a group of 3 planes.
MaxN Given 3 sets of <id,value> pairs, this module returns the max value and the id with max value.
QVCompare Sums up three partial Q-values (each read from individual planes) and returns the max of two overall Q-values.
MasterModule The high-level module that implements Pythia in its entirity.

Citation

If you use this framework, please cite the following paper:

@inproceedings{bera2021,
  author = {Bera, Rahul and Kanellopoulos, Konstantinos and Nori, Anant V. and Shahroodi, Taha and Subramoney, Sreenivas and Mutlu, Onur},
  title = {{Pythia: A Customizable Hardware Prefetching Framework Using Online Reinforcement Learning}},
  booktitle = {Proceedings of the 54th Annual IEEE/ACM International Symposium on Microarchitecture},
  year = {2021}
}

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Rahul Bera - [email protected]

Acknowledgements

We acklowledge support from SAFARI Research Group's industrial partners.

pythia-hdl's People

Contributors

actions-user avatar rahulbera avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  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.