You'll have to do some digging. 

The registers are mapped flatly
(int registers, fp registers, misc registers). You're probable getting
one of the latter. 

Ali 

On Thu, 15 Sep 2011 15:30:33 -0400, Edward
Kim  wrote:  

In case of cpu->readIntReg(renamed_reg), the following
error messages are displayed and abnormally stopped.

m5.opt:
build/ALPHA_SE/cpu/o3/regfile.hh:90: uint64_t
PhysRegFile::readIntReg(PhysRegIndex) [with Impl = O3CPUImpl]: Assertion
`reg_idx < numPhysicalIntRegs' failed.
 Program aborted at cycle
1393000
Aborted

In case of cpu->readIntReg(src_idx), I see incorrect
value like 0x2f2f2f2f2f2f2f2f. The value is never changed regardless of
execution of different instructions. 

 Ed

On Thu, Sep 15, 2011 at 2:58
PM, Ali Saidi  wrote:

Something like cpu->readIntReg(renamed_reg);


Ali 

On Thu, 15 Sep 2011 14:44:59 -0400, Edward Kim  wrote:   

Hi

I
want to look into the register value when register is ready in rename
stage.
What can I do for it?
Specifically, I want to check the register
value at line number 1022 in file src/cpu/o3/rename_impl.hh.

Thanks,

Ed

file src/cpu/o3/rename_impl.hh

 973 template 974 inline
void
 975 DefaultRename::renameSrcRegs(DynInstPtr &inst, ThreadID tid)


 976 {
 977 assert(renameMap[tid] != 0);
 978
 979 unsigned
num_src_regs = inst->numSrcRegs();
 980
 981 // Get the architectual
register numbers from the source and
 982 // destination operands, and
redirect them to the right register.
 983 // Will need to mark
dependencies though.
 984 for (int src_idx = 0; src_idx < num_src_regs;
src_idx++) {
 985 RegIndex src_reg = inst->srcRegIdx(src_idx);
 .......

.......
 1006 inst->flattenSrcReg(src_idx, flat_src_reg);
 1007
 1008 //
Look up the source registers to get the phys. register they've
 1009 //
been renamed to, and set the sources to those registers.
 1010
PhysRegIndex renamed_reg = renameMap[tid]->lookup(flat_src_reg);
 1011

1012 DPRINTF(Rename, "[tid:%u]: Looking up arch reg %i, got "
 1013
"physical reg %i.n", tid, (int)flat_src_reg,
 1014 (int)renamed_reg);

1015
 1016 inst->renameSrcReg(src_idx, renamed_reg);
 1017
 1018 // See
if the register is ready or not.
 1019 if
(scoreboard->getReg(renamed_reg) == true) {
 1020 DPRINTF(Rename,
"[tid:%u]: Register %d is ready.n",
 1021 tid, renamed_reg);
 1022 /*
================== looking into the register value here
================= */
 1023 inst->markSrcRegReady(src_idx);
 1024 } else
{
 1025 DPRINTF(Rename, "[tid:%u]: Register %d is not ready.n",
 1026
tid, renamed_reg);
 1027
}

_______________________________________________
 gem5-users mailing
list
[email protected]
[3]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [4]




Links:
------
[1] mailto:[email protected]
[2]
mailto:[email protected]
[3] mailto:[email protected]
[4]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to