o3cpu: lsq: Fix TSO implementation
Review Request #2183 - Created March 5, 2014 and submitted
| Information | |
|---|---|
| Marco Elver | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 10149:456195b55e60 --------------------------- o3cpu: lsq: Fix TSO implementation This patch fixes violation of TSO in the O3CPU, as all loads must be ordered with all other loads. In the LQ, if a snoop is observed, all subsequent loads need to be squashed if the system is TSO. Prior to this patch, the following case could be violated: P0 | P1 ; MOV [x],$1 | MOV EAX,[y] ; MOV [y],$1 | MOV EBX,[x] ; exists (1:EAX=1 /\ 1:EBX=0) [is a violation] The problem was found using litmus [http://diy.inria.fr]."
This patch was originally against a much older version of Gem5 (9677:773aae0990ae), where the effect was tested extensively and diy no longer reports violation. This patch was then ported and rebased against the newest Gem5 version, where I only ran quick/se/00.hello/x86/linux/o3-timing. Performance results of parallel workloads will change slightly.
Issue Summary
1
1
0
0
| Description | From | Last Updated | Status |
|---|---|---|---|
| Do you think checking force_squash in this second if() condition will work same as checking needsTSO? If yes, then I ... | Nilay Vaish | March 15, 2014, 12:41 p.m. | Open |
Posted (March 15, 2014, 12:42 p.m.)
-
src/cpu/o3/lsq_unit_impl.hh (Diff revision 1) -
Do you think checking force_squash in this second if() condition will work same as checking needsTSO? If yes, then I would suggest that we check force_squash here.
Review request changed
Updated (March 24, 2014, 5:33 a.m.)
Change Summary:
Applied suggested change.
Description: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+10 -2) |
