-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathREADME
128 lines (87 loc) · 4.4 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
CasHMC: A Cycle-accurate Simulator for Hybrid Memory Cube
version CasHMC v1.3 - 2017.07.10
1. Developer
Dong-Ik Jeon
Ki-Seok Chung
Hanyang University
estwings57 [at] gmail [dot] com
2. About CasHMC
CasHMC provides a cycle-by-cycle simulation of every module in HMC, and
generates analysis results including a bandwidth graph and statistical data.
It supports HMC unique features, such as the high speed serial link,
the packet-based interface, and the vault-based DRAM structure. Since CasHMC
simulates all HMC modules at a cycle-accurate level, it is capable of deriving
precise simulation results and analyses.
Furthemore, CasHMC is implemented in C++ as a single wrapped object that
includes a HMC controller, communication links, and the HMC memory.
Instantiating this single wrapped object facilitates simultaneous simulation
in parallel with other simulators that generate memory access patterns
such as a processor simulator or a memory trace generator.
3. CasHMC version info
v1.0 (2016.05.07 released)
- Released the 1st CasHMC
- Modeling HMC architecture and packet-based interface
v1.1 (2016.07.21 released)
- Support 'atomic commands' refered to HMC specification 2.1 (arithmetic, bitwise, boolean, comparison)
for more information, check Transaction.h (TransactionType) or RunSim.cpp (line 86)
v1.2 (2016.09.27 released)
- Modify vault mapping (CrossbarSwitch) of the packet bigger than the maximum block size
- Support a new link priority scheme (buffer-aware scheme)
- Add one cycle delay for an atomic command operation in VaultController class (atomicOperLeft)
- Minor revision (few mistakes)
v1.3 (2017.07.10 released)
- Integrated with gem5 simulator
* Configure parameters loading at the runtime (parameters in ConfigSim.ini and ConfigDRAM.ini files)
* Static and dynamic library compilation by Makefile
- Link power consumption simulation is added (configured by link power parameter in ConfigSim.ini file)
- Support various link power managements
* QUIESCE_SLEEP : on the basis of the tQUIESCE that is the time interval to enter link lowe power mode
* MSHR : the number of active links is decided by the number of the allocated MSHR
* LINK_MONITOR : the number of active links is decided by the derived downstream and upstream link bandwidth
* AUTONOMOUS : MSHR and LINK_MONITOR together
- Minor revision
4. Getting CasHMC
CasHMC is available on github.
https://github.com/estwings57/CasHMC
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 CasHMC source files
trace : The example of trace files (The files are extracted from SPEC CPU2006 benchmarks)
6. Building CasHMC
To build an optimized CasHMC
$ make
7. Running CasHMC
> 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
$ ./CasHMC -c 100000 -t random -u 0.1 -r 60
> The example of trace file mode
$ ./CasHMC -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("ConfigSim.ini", "ConfigDRAM.ini");
...
TransactionType tranType = DATA_READ;
uint64_t physicalAddress = 0x0123456789abcdef;
unsigned dataSize = 32;
Transaction *newTran = new Transaction(tranType, addr, dataSize, casHMCWrapper);
casHMCWrapper->ReceiveTran(newTran);
...
> Integration with gem5 simulator
There is a script file [CasHMC/integration/gem5/integ_CasHMC-gem5.sh] for integrating CasHMC and gem5
Copy this script file to gem5 root directory and then run the script
(gem5 download : $ hg clone http://repo.gem5.org/gem5)
$ cp -a CasHMC/integration/gem5/integ_CasHMC-gem5.sh $GEM5_DIR
$ source $GEM5_DIR/integ_CasHMC-gem5.sh
8. Special thanks to
HyeJin Choi,
Kyeong-Bin Park