Skip to content

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

License

Notifications You must be signed in to change notification settings

CMU-SAFARI/Pythia-HDL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 - write2bera@gmail.com

Acknowledgements

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages