3 ms·
Looks like you know much more than me but let's talk > Mill has nothing to show for it. so far. > Mill has no answer for the unpredictable cache misses And
by throwaway_pdp09 6y ago
Looks like you know much more than me but let's talk
> Mill has nothing to show for it.
so far.
> Mill has no answer for the unpredictable cache misses
And they state so, quite explicitly (and as no architecture can ever, as I said in another comment). so you can hardly criticise them for that.
> Their belt idea is cute and interesting but inconsequential and irrelevant.
It's about avoiding register forwarding, so chopping out a major chunk of very high speed hardware (AIUI).
> but how to keep the ALUs fed with data from the memory hierarchy
No, it depends entirely on the job. If you have tight loops with lots of ILP then you win.
(as for the rest, IDK).
- magicalhippo 6y ago> no architecture can ever But that's the whole point of OOO isn't it? Keep executing stuff down the line while previous instructions are waiting for the cache to get filled.
- throwaway_pdp09 6y agofrom memory (from the hen&pat book) OOO can more-or-less hide the latency of a L2 miss. A total cache miss to main mem is far too many cycles, OOO can't hide that.
- drivebycomment 6y ago> A total cache miss to main mem is far too many cycles, OOO can't hide that. That view is only a very partial understanding of the bigger story, and is missing the key benefit of OOO. The key benefit of OOO and speculative execution is that they allow you to generate multiple outstanding L2/L3 misses in flight. Memory latency is hundreds of cycles, and if you can get one more memory read in flight while there's already one miss, you cut the effective stall time for memory significantly. OOO and speculative execution help not only because they allow the pipeline to run more instructions while being stalled, they help because that extra execution can create multiple outstanding cache misses, effectively reducing the stall cycles due to cache misses.
- monocasa 6y agoAnd they continue executing on the Mill after the load is issued too. The load is specified with a variable delay and you can keep executing as long as you have work that can be done without it. There's been some newer OoO cores that'll speculate on the data contents of the load, but you'd be surprised how little that helps all things considered.