> 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
