> My question is why does the branch predictor matter as far as functional
> correctness?
>If it was wrong 100% of the time wouldn't that just make O3
> slow?
The problem isnt with branch prediction being wrong functionally, its
that there are assert statements that break execution from updating
the history table.

So wrong branch prediction = hit assert statement = break program execution.

Particularly, the assert "Assertion 'pred_hist.front().seqNum ==
squashed_sn'" is the culprit here inside of the squash function in
bpred_unit_impl.hh...

Hmmm, Steve's response about the decode got me thinking about the
possible problem overnight. Maybe it's OK to commit the branch history
for an unconditional branch in decode and that's what is trying to be
accomplished there. Maybe a flag isn't set right in the MIPS branch
instructions or something that's just breaking that? I'll take a
closer look...

> Also, why do you change inst->readNextNPC() to inst->readNextPC()
> in iew_impl.hh? Aren't you going to then print the same value twice?
Well, I'm trying to fix error'd DPRINT statements here.

In the DPRINT, it says "NPC", but it's printing out the NNPC which was
confusing to me. So maybe the message should say "NNPC" or just say
"redirecting fetch to"? Reading those in an ISA-slot-dependent fashion
is hard, so we strive to make the debug message make sense regardless
of MIPS, SPARC, ALPHA, or whatever.



-- 
----------
Korey L Sewell
Graduate Student - PhD Candidate
Computer Science & Engineering
University of Michigan
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to