Review Board 2.0.15


O3: Tighten memory order violation checking to 16 bytes.

Review Request #520 - Created Feb. 27, 2011 and submitted

Information
Ali Saidi
gem5
Reviewers
Default
ali, gblack, nate, stever
O3: Tighten memory order violation checking to 16 bytes.

The comment in the code suggests that the checking granularity should be 16
bytes, however in reality the shift by 8 is 256 bytes which seems much
larger than required.

   
Review request changed
Updated (March 30, 2011, 1:41 a.m.)
Posted (March 30, 2011, 1:46 a.m.)
I think the updated patch addresses all of your issues Gabe. I tested it with an opt binary and one problem jumped out in x86 for 20.parser an assert: 
m5.opt: build/X86_SE/arch/x86/emulenv.cc:49: void X86ISA::EmulEnv::doModRM(const X86ISA::ExtMachInst&): Assertion `machInst.modRM.mod != 3' failed.

It looks like the assert shouldn't be there and is hit during some miss speculation. 
Posted (March 30, 2011, 2:08 a.m.)
I can't verify 100% that the code in your new function is correct, but I don't see anything obviously wrong. I really like that you consolidated the same code in two places down to the one. There's one issue which is pointed out below.
src/cpu/base_dyn_inst.hh (Diff revision 2)
 
 
This comment is inaccurate. It's really the largest address that's part of the request, which is the effective address plus the size and then minus one. Also, this feels like a temporary variable promoted to too large of a scope and/or permanence. "size" seems like it would be more generally useful, it would be more immediately obvious what it is, and you can go from one to the other easily like you are elsewhere in this change.
  1. I'll change it to size.