o3cpu: lsq: Fix TSO implementation
Review Request #2183 - Created March 5, 2014 and submitted - Latest diff uploaded
| 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.
