On Wed, 19 Dec 2012, Arthur Perais wrote:

Hi all,

Correct me if I am wrong, but as I understand the code, for a store instruction, the D-Cache is only accessed when the store writes back, that is when it is at the head of the LSQ and has been committed and a port is available. Now, if there is a miss in the L1 (and possibly the L2), we have to suffer all the miss latency, then do the write back. However, the effective address of the store is computed at execute, meaning that we should be able to probe the cache at execute to bring the line if it is not there. If it is, then we only have to wait for the store to commit and write back.

I agree that the SQ is not on the critical path since stores are already committed so they are not blocking other instructions. That is only when the SQ has free entries. When it is full, hiding some of the miss latency allows the store to writeback faster and release its slot in the SQ faster. I grant you that this may not impact performance that much, however I am trying to find a quick and dirty way to implement it to find out. For now, I am simply issuing a HW Prefetch Request to the memory hierarchy at execute on behalf of the store instruction. It appears to do the trick and to preserve correctness. Yet, I am clearly no expert with the way memory works in gem5 so if this sounds like something really stupid to do, please let me know. I guess the "right" solution would be to create a new request type and insert code to handle it in the proper places.

Seems fine to me. Coherence permissions can be obtained speculatively, with out affecting correctness.


I also have another question which is x86-related. In O3, the needsTSO variable of the LSQ is set only when the ISA is x86. As I understand it, it forbids more than one store to be written back every cycle. Yet, if two ports are available at any given cycle, why not write two? They will still be written in-order...won't they?


It is not necessary that they would written in the same order. The memory system is free to re-order them. This means that some other core may observe the stores being carried out in the opposite order, violating TSO.

--
Nilay
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to