x86: Add microop for fence
Review Request #898 - Created Nov. 1, 2011 and submitted
| Information | |
|---|---|
| Nilay Vaish | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
x86: Add microop for fence This patch adds a new microop for memory barrier. The microop itself does nothing, but since it is marked as a memory barrier, the O3 CPU should flush all the pending loads and stores before the fence to the memory system.
Posted (Nov. 1, 2011, 4:18 p.m.)
The placement of the mfence microops looks fine, and the implementation of the microop is probably correct. There are some things to fix, but the substance of this change looks good. As always x86 and o3 are both pretty tricky, so please test carefully once you fixed the issues.
-
src/arch/x86/isa/microops/fenceop.isa (Diff revision 1) -
If you make this its own file, you should probably use the copyright used for most of the files and assign it to an appropriate organization. I don't think we really have any specific association with HP any more. I would suggest putting this in the specop.isa file. That's for one off, special microops, and I think this fits into that category pretty solidly.
-
src/arch/x86/isa/microops/fenceop.isa (Diff revision 1) -
You should be able to use BasicExecute, BasicDecode, etc., from arch/x86/isa/formats/basic.isa. Since this microop does literally nothing, it shouldn't have any unusual requirements other than setting flags appropriately. You should be able to do that using all or mostly just the Basic templates.
-
src/arch/x86/isa/microops/fenceop.isa (Diff revision 1) -
From here down is the only part that you really need to add to specop.isa
Review request changed
Updated (Nov. 2, 2011, 2:49 a.m.)
