Skip to content

Processing-in Memory Architecture for Multiply-Accumulate Operations with Hybrid Memory Cube

License

Notifications You must be signed in to change notification settings

m1chaelyeung/HMC-MAC

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HMC-MAC: Processing-in Memory Architecture for Multiply-Accumulate Operations with Hybrid Memory Cube
version HMC-MAC v1.0 - 2017.02.14

1. Developer

  Dong-Ik Jeon
  Ki-Seok Chung
  Hanyang University
  estwings57 [at] gmail [dot] com


2. About HMC-MAC

  A novel PIM architecture called HMC-MAC that implements the MAC operation
  in the HMC is proposed. The proposed HMC-MAC architecture can closely follow 
  the conventional HMC structure only with slight modification of the HMC atomic 
  operation logic. This HMC-MAC simulator is based on the existing HMC simulatior, 
  called CasHMC. CasHMC provides a cycle-by-cycle simulation of every module in HMC, 
  and generates analysis results including a bandwidth graph and statistical data.
  (CasHMC source code is available at https://github.com/estwings57/CasHMC)
  HMC-MAC simulator is a good example of how to utilize the CasHMC simulator.
  
  All modified source code from CasHMC is distinguished by HMC_MAC ifdef state.
  HMC-MAC has six new instructions with a combination of the data size and the data type.
  All new instructions can be checked in 'RunSim.cpp' file (line 119 to line 128)


3. HMC-MAC version info

  v1.0 (2017.02.14 released)
   - Released the 1st HMC-MAC
   - A PIM architecture that implements the MAC operation in the HMC


4. Getting HMC-MAC

  HMC-MAC is available on github.
  https://github.com/estwings57/HMC-MAC


5. Folder directory

  graph : Gnuplot script file and a graph data file after a simulation run is over
  result : Log files after a simulation run is over
  sources : All HMC-MAC source files
  trace : The example of trace files (The files are extracted from SPEC CPU2006 benchmarks)


6. Building HMC-MAC

  To build an optimized HMC-MAC

  $ make


7. Running HMC-MAC

  > Command line arguments
  
  -c (--cycle)   : The number of CPU cycles to be simulated
  -t (--trace)   : Trace type ('random' or 'file')
  -u (--util)    : Requests frequency (0 = no requests, 1 = as fast as possible) [Default 0.1]
  -r (--rwratio) : (%) The percentage of reads in request stream [Default 80]
  -f (--file)    : Trace file name
  -h (--help)    : Simulation option help
  
  > The example of trace generator mode
 
  $ ./HMC-MAC -c 100000 -t random -u 0.1 -r 60
  
  > The example of trace file mode
  
  $ ./HMC-MAC -c 100000 -t file -f ./trace/SPEC_CPU2006_example/mase_trace_bzip2_base.alpha.v0.trc
  
  > The example of CasHMCWrapper object instantiating
  
  In a source file
  
    #include "CasHMCWrapper.h“
    #include "Transaction.h"
    ...

      CasHMCWrapper *casHMCWrapper = new CasHMCWrapper();
      ...

      TransactionType tranType = DATA_READ;
      uint64_t physicalAddress = 0x0123456789abcdef;
      unsigned dataSize = 32;
      Transaction *newTran = new Transaction(tranType, addr, dataSize, casHMCWrapper);
      casHMCWrapper->ReceiveTran(newTran);
      ...

About

Processing-in Memory Architecture for Multiply-Accumulate Operations with Hybrid Memory Cube

Resources

License

Stars

Watchers

Forks

Packages

No packages published