Usimm
USIMM: the Utah SImulated Memory Module
Install / Use
/learn @pranith/UsimmREADME
USIMM: the Utah SImulated Memory Module Version 1.3
USIMM is distributed under the CRAPL (see CRAPL-LICENSE.txt
in this directory). In spite of the tongue-in-cheek terms of
the license, we will be supporting the USIMM infrastructure.
The src/utlist.h file was obtained from http://uthash.sourceforge.net
and is subject to the terms of the BSD license.
For questions to the USIMM developers, email usimm@cs.utah.edu
For updates or discussions, email usimm-users@cs.utah.edu,
or visit this blog post: http://utaharch.blogspot.com/2012/02/usimm.html
USIMM was developed by members of the Utah Arch group: Niladrish Chatterjee, Rajeev Balasubramonian, Manjunath Shevgoor, Seth H. Pugsley, Aniruddha N. Udipi, Ali Shafiee, Kshitij Sudan, Manu Awasthi.
We also received traces and suggestions from other JWAC MSC organizers: Zeshan Chishti (Intel), Alaa R. Alameldeen (Intel), Eric Rotenberg (NC State)
Code download: http://www.cs.utah.edu/~rajeev/usimm-v1.3.tar.gz
USIMM Tech Report: http://www.cs.utah.edu/~rajeev/pubs/usimm.pdf
The JWAC MSC website: http://www.cs.utah.edu/~rajeev/jwac12/
GETTING STARTED
If you've reached this far, you've already been able to unzip and untar the distribution with: gunzip usimm-v1.3.tar.gz tar xvf usimm-v1.3.tar
The root directory has the following directories and files: src/ : Code source files bin/ : Houses the usimm executable obj/ : Houses the intermediate object files for the source files input/ : Has the (simulated) system configuration files and input traces output/ : Can store the simulation outputs runsim : A script to execute a few example simulations README.txt: this file! usimm.pdf : The USIMM tech report CRAPL-LICENSE.txt: The CRAPL license.
To get started, cd src/ make clean make
This produces a usimm executable in the bin/ directory. To run the example simulation script, cd .. ./runsim
The simulation should finish in tens of minutes. Use a truncated version of the trace files for shorter tests. To examine the simulation outputs, view output/*
The input/ directory contains the system and DRAM chip configuration files that are read by USIMM. Do not rename this directory or the DRAM chip configuration files. The input/ directory also contains 13 trace files for 10 different benchmarks. Please see Appendix C of the USIMM Tech report for details on these benchmarks.
CODE ORGANIZATION
The src/ directory has the following files:
main.c : Handles the main program loop that retires instructions, fetches new instructions from the input traces, and calls update_memory().
memory_controller.c : Implements update_memory(), a function that checks DRAM timing parameters to determine which commands can issue in this cycle.
scheduler.c : Function provided by the user to select a command for each channel in every memory cycle. The provided default is a simple FCFS algorithm with periodic write drains.
scheduler.h : Header file for the user's scheduler function.
configfile.h : Header file to enable reading input system config files.
memory_controller.h : Header file to enable DRAM timing management.
params.h : Header file for all system parameters.
processor.h : Header file for the ROB structure that controls the processor.
utils.h : A few utility functions.
utlist.h : Utility functions to manage linked lists.
SAMPLE SCHEDULERS
The src/ directory also includes the following example simple schedulers:
scheduler-fcfs.c/h : Basic FCFS, plus a periodic write drain mechanism.
scheduler-close.c/h : Precharges banks during idle cycles soon after a column rd/wr.
