作者jovidream (跟着心情走)
看板NKFUST-CCE90
标题Re: [求救] 还是simplescalar = ="
时间Tue Dec 16 22:20:20 2008
※ 引述《MaxHaru (懂得放手..才能王道)》之铭言:
: 好不容易,
: 总算把数据run出来了
: 但是,下一个问题来了
: 要怎麽把文字档(我存成.txt)里的资料用excel画成"指令位址对时间"
: 座标图咧?
: 我目前run了mibench里面其中9个程式(其中有3个不知道怎麽run @@a)
: 每个程式有一个profile
: 每个profile里面最多有10000笔资料
: 资料格式如下:
: ++ 1 [xor: 0x7fff8009] {1} @ 0x00400140: lw r16,0(r29)
: ++ 2 [xor: 0x6ffe8019] {3} @ 0x00400148: lui r28,0x1001
: ++ 3 [xor: 0x6fff20f9] {4} @ 0x00400150: addiu r28,r28,-24336
: ++ 4 [xor: 0x1000a0cd] {5} @ 0x00400158: addiu r17,r29,4
: ++ 5 [xor: 0x6fff20f5] {6} @ 0x00400160: addiu r3,r17,4
: ++ 6 [xor: 0x6fff20e1] {7} @ 0x00400168: sll r2,r16,2
: ++ 7 [xor: 0x6fff20f5] {8} @ 0x00400170: addu r3,r3,r2
: ++ 8 [xor: 0x1000a009] {9} @ 0x00400178: addu r18,r0,r3
: ===== ===========
: 时间 指令位址
: 难不成要我一个一个key吗??
: key完我也升天了 冏rz
: 版上的强者,快来救救我吧>"<
: PS:如果不用excel,那还有什麽东西可以用咧,教教我吧>"<
服了你了...你说得时间是指1->2->3...像这样的指令顺序...
还是指令执行的时间..如 (1)0.02s (2)0.1s...
如果是指令顺序...你可以去loop 去print出来
struct RUU_station {
/* inst info */
md_inst_t IR; /* instruction bits */
enum md_opcode op; /* decoded instruction opcode */
md_addr_t PC, next_PC, pred_PC; /* inst PC, next PC, predicted PC */
int in_LSQ; /* non-zero if op is in LSQ */
int ea_comp; /* non-zero if op is an addr comp */
int recover_inst; /* start of mis-speculation? */
int stack_recover_idx; /* non-speculative TOS for RSB pred */
struct bpred_update_t dir_update; /* bpred direction update info */
int spec_mode; /* non-zero if issued in spec_mode */
md_addr_t addr; /* effective address for ld/st's */
INST_TAG_TYPE tag; /* RUU slot tag, increment to
squash operation */
INST_SEQ_TYPE seq; /* instruction sequence, used to
sort the ready list and tag inst */
unsigned int ptrace_seq; /* pipetrace sequence number */
/* instruction status */
int queued; /* operands ready and queued */
int issued; /* operation is/was executing */
int completed; /* operation has completed execution */
这是他的RUU data structure...
你如果想知道它执行啥指令...可以看md_inst_t IR
你如果想看是在哪个PC执行的...就...看PC罗...
/* dump the contents of the RUU */
static void
ruu_dumpent(struct RUU_station *rs, /* ptr to RUU station */
int index, /* entry index */
/* output stream */
int header) /* print header? */
{
这段可以把整个RUU都printf出来...
只是...不要轻易尝试...
零八曾经跑mp3 codec跑了20G的text file还停不下来...
你想知道怎麽printf...去trace这个function吧
在sim_outorder.c最後有一个
for (;;)
{
....
略
....
}
这是他的cycle loop...
也就是跑一次是一个cycle...
以上...有问题再问吧...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.73.47.234
1F:→ jovidream:对了...我的记忆回来了..我记得dump可以用trace的方式 12/16 22:23
2F:→ jovidream:在command line window下指令...一次执行一个cycle 12/16 22:23
3F:→ jovidream:或是指定个数的cycle 12/16 22:23