-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmct
executable file
·70 lines (60 loc) · 2.3 KB
/
mct
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
#!/usr/bin/env python
import csv
import sys
#with open(sys.argv[1]) as mct:
mct = sys.stdin
try:
reader = csv.reader(mct, delimiter=",", quotechar='"')
hits =[[ 0 for ii in range(0,8)] for jj in range(0,8) ]
misses =[[ 0 for ii in range(0,8)] for jj in range(0,8) ]
banks =[[ -1 for ii in range(0,8)] for jj in range(0,8) ]
t_refresh =[[ 0 for ii in range(0,8)] for jj in range(0,8) ]
just_refreshed =[[ False for ii in range(0,8)] for jj in range(0,8) ]
prev_time = -1
for line in reader:
time = int(line[1])
rank = int(line[6])
bank = int(line[8])
row = int(line[10])
column = int(line[12])
if (prev_time > time):
# print " NEW FLEXPOINT "
banks =[[ -1 for ii in range(0,8)] for jj in range(0,8) ]
t_refresh =[[ 0 for ii in range(0,8)] for jj in range(0,8) ]
just_refreshed =[[ False for ii in range(0,8)] for jj in range(0,8) ]
# print rank,bank
if line[2] == " [REF]":
t_refresh[rank][bank] = int(time)
just_refreshed[rank][bank] = True
# print "did refresh of",rank,bank,"at time",time
elif just_refreshed[rank][bank]:
# print "cycles since last refresh of",rank,bank,"is",int(time)-t_refresh[rank][bank]," (time:",time,")"
just_refreshed[rank][bank] = False
if line[2] == " [ACT]":
if banks[rank][bank] == row:
hits[rank][bank] += 1
# print rank,bank,"HIT",row,column
else:
misses[rank][bank] += 1
# print rank,bank,"miss",row,column
banks[rank][bank] = row
prev_time = time
print " Hit Count"
for rank in hits: print rank
print " Miss Count"
for rank in misses: print rank
print
print "Hit rate for 8x ranks, 8x banks:"
hit = 0
tot = 0
for rank in range(0,8):
for bank in range(0,8):
print format(hits[rank][bank]*100./(1+misses[rank][bank]+hits[rank][bank]),'.1f'),"% ",
if (hits[rank][bank] > 0 and hits[rank][bank] > 0):
hit = hit + hits[rank][bank]
tot = tot + misses[rank][bank]+hits[rank][bank]
print
print "OVERALL, ",hit*1.0/tot
except IndexError:
print rank,bank
print just_refreshed