Abhishek,
You are quite right regarding store-store, but note that the function
does not only check store-load ordering.
As far as I understand, the function checks if younger loads to the same
address have issued when an older store executes (store-load ordering),
as well as if younger loads to the same address that got invalidated in
the cache have issued when an older /load/ executes (load-load ordering
*to the same address*). The variable needsTSO (true in x86, false
otherwise) changes what is considered a violation and what is not.
Basically, if needsTSO is set, then enforcing full load-load ordering is
required and handled in checkSnoop(). If it is not set, then load-load
ordering to the same address only is required, and this is enforced in
checkViolations() if a younger inflight load to the same address was
touched by a snoop request in checkSnoop().
Best,
Arthur Perais.
Le 29/03/2016 15:41, Abhishek Rajgadia a écrit :
In the checkViolations() function in lsq_unit_impl.hh , it is
mentioned in a comment that it checks if load/store incorrectly passed
a store. Does it really check if store incorrectly passed a store?
Since it checks the LoadQueue, isn't it checking only for loads
incorrectly passing a store?
--
Regards,
Abhishek Rajgadia
Electrical Engineering,
IIT Bombay
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
--
Arthur Perais
INRIA Bretagne Atlantique
Bâtiment 12E, Bureau E303, Campus de Beaulieu
35042 Rennes, France
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users