gem5/ext/mcpat/cacti
Yasuko Eckert 0deef376d9 ext: McPAT interface changes and fixes
This patch includes software engineering changes and some generic bug fixes
Joel Hestness and Yasuko Eckert made to McPAT 0.8. There are still known
issues/concernts we did not have a chance to address in this patch.

High-level changes in this patch include:
 1) Making XML parsing modular and hierarchical:
   - Shift parsing responsibility into the components
   - Read XML in a (mostly) context-free recursive manner so that McPAT input
     files can contain arbitrary component hierarchies
 2) Making power, energy, and area calculations a hierarchical and recursive
    process
   - Components track their subcomponents and recursively call compute
     functions in stages
   - Make C++ object hierarchy reflect inheritance of classes of components
     with similar structures
   - Simplify computeArea() and computeEnergy() functions to eliminate
     successive calls to calculate separate TDP vs. runtime energy
   - Remove Processor component (now unnecessary) and introduce a more abstract
     System component
 3) Standardizing McPAT output across all components
   - Use a single, common data structure for storing and printing McPAT output
   - Recursively call print functions through component hierarchy
 4) For caches, allow splitting data array and tag array reads and writes for
    better accuracy
 5) Improving the usability of CACTI by printing more helpful warning and error
    messages
 6) Minor: Impose more rigorous code style for clarity (more work still to be
    done)
Overall, these changes greatly reduce the amount of replicated code, and they
improve McPAT runtime and decrease memory footprint.
2014-06-03 13:32:59 -07:00
..
arbiter.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
arbiter.h ext: add McPAT source 2014-04-01 12:44:30 -04:00
area.cc ext: add McPAT source 2014-04-01 12:44:30 -04:00
area.h ext: add McPAT source 2014-04-01 12:44:30 -04:00
bank.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
bank.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
basic_circuit.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
basic_circuit.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
batch_tests ext: add McPAT source 2014-04-01 12:44:30 -04:00
cache.cfg ext: add McPAT source 2014-04-01 12:44:30 -04:00
cacti.i ext: add McPAT source 2014-04-01 12:44:30 -04:00
cacti.mk ext: add McPAT source 2014-04-01 12:44:30 -04:00
cacti_interface.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
cacti_interface.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
component.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
component.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
const.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
contention.dat ext: add McPAT source 2014-04-01 12:44:30 -04:00
crossbar.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
crossbar.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
decoder.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
decoder.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
htree2.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
htree2.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
io.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
io.h ext: add McPAT source 2014-04-01 12:44:30 -04:00
main.cc ext: add McPAT source 2014-04-01 12:44:30 -04:00
makefile ext: add McPAT source 2014-04-01 12:44:30 -04:00
mat.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
mat.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
nuca.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
nuca.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
parameter.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
parameter.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
README ext: add McPAT source 2014-04-01 12:44:30 -04:00
router.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
router.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
subarray.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
subarray.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
technology.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
uca.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
uca.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
Ucache.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
Ucache.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
wire.cc ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00
wire.h ext: McPAT interface changes and fixes 2014-06-03 13:32:59 -07:00

-----------------------------------------------------------
          ____    _    ____ _____ ___    __    ____  
         / ___|  / \  / ___|_   _|_ _|  / /_  | ___| 
        | |     / _ \| |     | |  | |  | '_ \ |___ \ 
        | |___ / ___ \ |___  | |  | |  | (_) | ___) |
         \____/_/   \_\____| |_| |___|  \___(_)____/ 


             A Tool to Model Caches/Memories
-----------------------------------------------------------

CACTI is an analytical tool that takes a set of cache/memory para-
meters as input and calculates its access time, power, cycle 
time, and area.
CACTI was originally developed by Dr. Jouppi and Dr. Wilton
in 1993 and since then it has undergone five major 
revisions.

List of features (version 1-6.5):
===============================
The following is the list of features supported by the tool. 

* Power, delay, area, and cycle time model for 
                  direct mapped caches
                  set-associative caches
                  fully associative caches
                  Embedded DRAM memories
                  Commodity DRAM memories
                  
* Support for modeling multi-ported uniform cache access (UCA)
  and multi-banked, multi-ported non-uniform cache access (NUCA).

* Leakage power calculation that also considers the operating
  temperature of the cache.
  
* Router power model.

* Interconnect model with different delay, power, and area 
  properties including low-swing wire model.

* An interface to perform trade-off analysis involving power, delay,
  area, and bandwidth.

* All process specific values used by the tool are obtained
  from ITRS and currently, the tool supports 90nm, 65nm, 45nm, 
  and 32nm technology nodes.

Version 6.5 has a new c++ code base and includes numerous bug fixes.
CACTI 5.3 and 6.0 activate an entire row of mats to read/write a single
block of data. This technique improves reliability at the cost of  
power. CACTI 6.5 activates minimum number of mats just enough to retrieve 
a block to minimize power.

How to use the tool?
====================
Prior versions of CACTI take input parameters such as cache
size and technology node as a set of command line arguments. 
To avoid a long list of command line arguments, 
CACTI 6.5 lets users specify their cache model in a more 
detailed manner by using a config file (cache.cfg).

-> define the cache model using cache.cfg
-> run the "cacti" binary <./cacti -infile cache.cfg>

CACTI6.5 also provides a command line interface similar to earlier versions
of CACTI. The command line interface can be used as

./cacti  cache_size line_size associativity rw_ports excl_read_ports excl_write_ports 
  single_ended_read_ports search_ports banks tech_node output_width specific_tag tag_width
  access_mode cache main_mem obj_func_delay obj_func_dynamic_power obj_func_leakage_power
  obj_func_cycle_time obj_func_area dev_func_delay dev_func_dynamic_power dev_func_leakage_power
  dev_func_area dev_func_cycle_time ed_ed2_none temp wt data_arr_ram_cell_tech_flavor_in
  data_arr_peri_global_tech_flavor_in tag_arr_ram_cell_tech_flavor_in tag_arr_peri_global_tech_flavor_in
  interconnect_projection_type_in wire_inside_mat_type_in wire_outside_mat_type_in
  REPEATERS_IN_HTREE_SEGMENTS_in VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in 
  BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in PAGE_SIZE_BITS_in BURST_LENGTH_in
  INTERNAL_PREFETCH_WIDTH_in force_wiretype wiretype force_config ndwl ndbl nspd ndcm 
  ndsam1 ndsam2 ecc

For complete documentation of the tool, please refer CACTI-5.3 and 6.0
technical reports and the following paper,
"Optimizing NUCA Organizations and Wiring Alternatives for 
Large Caches With CACTI 6.0", that appears in MICRO 2007.

We are still improving the tool and refining the code. If you
have any comments, questions, or suggestions please write to
us.

Naveen Muralimanohar             Jung Ho Ahn        Sheng Li
naveen.muralimanohar@hp.com      gajh@snu.ac.kr     sheng.li@hp.com