What is a LSQ?
Load-Store Queue - used to solve dependency issues in memory accesses
What is the structure of an LSQ?
It is similar to a ROB and replaces RSes for Loads and Stores. Entries are placed in program order. Each entry has:
What is Store-to-Load Forwarding?
If we try to load something that has already been stored in the queue, we just pull that value, we don’t go to memory
What do we do if we have a load, but there are pending stores in the queue?
Get the address from memory anyways! But, when the store(s) return, it must check all the loads after it in the queue
How do we remove items from the LSQ?
On commit!