From 54519fd51f739c3a37c4ad712b86a353eabbbfec Mon Sep 17 00:00:00 2001 From: Radhika Jagtap Date: Mon, 7 Dec 2015 16:42:16 -0600 Subject: cpu: Support virtual addr in elastic traces This patch adds support to optionally capture the virtual address and asid for load/store instructions in the elastic traces. If they are present in the traces, Trace CPU will set those fields of the request during replay. --- util/decode_inst_dep_trace.py | 11 ++++++----- util/encode_inst_dep_trace.py | 12 ++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) (limited to 'util') diff --git a/util/decode_inst_dep_trace.py b/util/decode_inst_dep_trace.py index 2e7e6381c..6e4030146 100755 --- a/util/decode_inst_dep_trace.py +++ b/util/decode_inst_dep_trace.py @@ -72,12 +72,12 @@ # # The ASCII trace format uses one line per instruction with the format # instruction sequence number, (optional) pc, (optional) weight, type -# (optional) flags, (optional) addr, (optional) size, comp delay, +# (optional) flags, (optional) phys addr, (optional) size, comp delay, # (repeated) order dependencies comma-separated, and (repeated) register # dependencies comma-separated. # # examples: -# seq_num,[pc],[weight,]type,[address,size,flags,]comp_delay:[rob_dep]: +# seq_num,[pc],[weight,]type,[p_addr,size,flags,]comp_delay:[rob_dep]: # [reg_dep] # 1,35652,1,COMP,8500:: # 2,35656,1,COMP,0:,1: @@ -178,9 +178,10 @@ def main(): exit(-1) - # Write to file if it has the optional fields addr, size, flags - if packet.HasField('addr'): - ascii_out.write(',%s' % (packet.addr)) + # Write to file if it has the optional fields physical addr, size, + # flags + if packet.HasField('p_addr'): + ascii_out.write(',%s' % (packet.p_addr)) if packet.HasField('size'): ascii_out.write(',%s' % (packet.size)) if packet.HasField('flags'): diff --git a/util/encode_inst_dep_trace.py b/util/encode_inst_dep_trace.py index 6293fb0ab..e54e82d70 100755 --- a/util/encode_inst_dep_trace.py +++ b/util/encode_inst_dep_trace.py @@ -72,12 +72,12 @@ # # The ASCII trace format uses one line per instruction with the format # instruction sequence number, (optional) pc, (optional) weight, type, -# (optional) flags, (optional) addr, (optional) size, comp delay, +# (optional) flags, (optional) physical addr, (optional) size, comp delay, # (repeated) order dependencies comma-separated, and (repeated) register # dependencies comma-separated. # # examples: -# seq_num,[pc],[weight,]type,[address,size,flags,]comp_delay:[rob_dep]: +# seq_num,[pc],[weight,]type,[p_addr,size,flags,]comp_delay:[rob_dep]: # [reg_dep] # 1,35652,1,COMP,8500:: # 2,35656,1,COMP,0:,1: @@ -167,11 +167,11 @@ def main(): print "Seq. num", dep_record.seq_num, "is of INVALID type" exit(-1) - # If the instruction is a load or store record the addr, size flags - # in addition to recording the computation delay + # If the instruction is a load or store record the physical addr, + # size flags in addition to recording the computation delay if dep_record.type in [DepRecord.LOAD, DepRecord.STORE]: - addr, size, flags, comp_delay = inst_info_list[4:8] - dep_record.addr = long(addr) + p_addr, size, flags, comp_delay = inst_info_list[4:8] + dep_record.p_addr = long(p_addr) dep_record.size = int(size) dep_record.flags = int(flags) dep_record.comp_delay = long(comp_delay) -- cgit v1.2.3