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.
Posted (Feb. 27, 2011, 1:41 p.m.)
Should we put an assert in there to make sure no access is bigger than 16 bytes? Also what about unaligned accesses? I think those will be split on cache block boundaries which may be bigger or smaller than 16 bytes. We might have an access that spans from one 16 byte chunk to the next. These aren't really problems with this change, but it might make them easier to hit. I'm assuming this had some effect on the regressions. Did things generally go faster, slower, etc.?
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.
