-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathREADME
136 lines (109 loc) · 4.64 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
129
130
131
132
133
134
135
136
RELEASE NOTES FOR NICTA MODIFIED VERSION 4.2
========================================
This version of Chronos has been modified by NICTA (now Data61) to support the
ARM architecture, and the iMX.31 processor in particular based on SimpleScalar/ARM. Please refer to the
documentation of our WCET tools for how to use Chronos as part of that
toolchain.
RELEASE NOTES FOR PROTOTYPE VERSION 4.1
=========================================
This is a prototype release of Chronos with scope-aware data cache analysis.
Currently, it only supports scope-aware analysis of L1 data cache. Some
features (e.g. infeasible path detection, branch prediction, out-of-order
pipeline analysis) are disabled (check the sample processor.opt file
included in the package).
This prototype requires manually inline all procedures for successful
data address analysis (see adpcm benchmark included). For triangular loop,
you need to create file <binary file name>.econ and set extra loop conditions
to help Chronos recognize them:
Contrainst format: <type> L1_id L2_id k
type = "eql" : L1's loop bound <= L2's iteration + k
(check the bsort100 benchmark included in the package)
We look forward to your suggestions. Feel free to contact us at
([email protected] or [email protected]) to give
your valuable comments.
RELEASE NOTES FOR VERSION 4.0
==============================
Chronos has been extended with a level 2 unified cache modeling. Additionally
chronos can also support a level 2 instruction cache and/or a level 1 data
cache. Two sample processor configuration files are included in the package
which are not analyzable previously by Chronos:
--- processor.opt (with a level 2 instruction cache and a level 1 data cache)
--- processor1.opt (with a level 2 unified cache)
Currently, these extensions are supported only through the command line.
==> A note about the memory manager
Level 2 unified cache analysis reqquires many cache analysis and therefore
also consumes a significant amount of memory. The current memory manager
is implemented under a flag "MEM_FREE" which is enabled in the Makefile.
Enabling this flag mostly free up all memories not used any more (garbage).
For a faster analysis but with more memory consumptions, users may consider
removing this flag from the "Makefile".
We look forward for your suggestions. Feel free to contact us
([email protected]) to give your valuable comments.
QUICK START
===========
1. to formulate an ILP problem:
- command:
$ est <benchmark>
- example:
$ est ../benchmarks/matsum/matsum
- input files:
* <benchmark>
* <benchmark>.cons
- output files:
* <benchmark>.lp
2. to generate CFG file:
- command:
$ est -run CFG <benchmark>
- example:
$ est -run CFG ../benchmarks/matsum/matsum
- input files:
* <benchmark>
- output files:
* <benchmark>.cfg
3. to dump processor configurations (pipeline, branch prediction, cache)
- command:
$ est -run OPT <output_file>
- example:
$ est -run OPT processor.opt
- input files: NONE
- output files:
* <output_file>
4. to invoke the ILP solver
- command:
$ solve <benchmark>.lp
- example:
$ solve ../benchmarks/matsum/matsum.lp
- input files:
* <benchmark>.ilp
- output files:
* wcet_result
ESTIMTATE WITH NON-DEFAULT PROCESSOR OPTIONS
============================================
1. with a configuration file:
- command:
$ est -config <opt_file> <benchmark>
- example:
$ est -config processor.opt ../benchmarks/matsum/matsum
2. with commond-line options: consistent with SimpleScalar sim-outorder options
- example:
$ est -bpred perfect -cache:il1 none ../benchmarks/matsum/matsum
(estimate assuming perfect branch prediction and no instruction cache)
processor options file example (the content in processor.opt)
==============================================================
# instruction fetch queue size (in insts)
-fetch:ifqsize 4
# branch predictor type {nottaken|taken|perfect|bimod|2lev|comb}
#-bpred perfect
-bpred 2lev
# bimodal predictor config (<table size>)
-bpred:bimod 4
# 2-level predictor config (<l1size> <l2size> <hist_size> <xor>)
-bpred:2lev 1 4 2 0
# combining predictor config (<meta_table_size>)
-bpred:comb 4
# register update unit (RUU) size
-ruu:size 8
# l1 inst cache config, i.e., {<config>|dl1|dl2|none}
-cache:il1 il1:16:64:1:l
# memory access latency (<first_chunk> <inter_chunk>)
-mem:lat 10 2