<div><br><div class="gmail_quote"><div dir="auto">On Thu, Jan 4, 2018 at 11:33 PM <<a href="mailto:jamesd@echeque.com">jamesd@echeque.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 1/5/2018 2:38 PM, Bill Frantz wrote:<br>
> I can imagine speculative execution which does not proceed if the needed<br>
> data is not already in the cache.<br>
<br>
Indeed loading stuff into cache on speculative execution increases your<br>
working set, so arguably there are efficiency grounds for not<br>
speculatively hitting the cache.<br>
<br>
If you need to load stuff into cache, your speculative execution is<br>
going to be delayed, does not buy you much.  Worst case, your<br>
speculative execution is delayed by a cache miss, and then turns out to<br>
be wrong, then you take the the correct path - and it has a cache miss<br>
again...</blockquote><div dir="auto"><br></div><div dir="auto">Speculation hides loading cache and that is in part the design win.   First level cache </div><div dir="auto">is crazy fast today and actions there are an order of magnitude quicker than main memory.</div><div dir="auto">Constraining speculation to cached data and instructions is something compilers try to do</div><div dir="auto">With loop optimization including loop unrolling and memory footprints to not trigger cache line sharing and read modify write actions to memory.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"></blockquote></div></div><div dir="ltr">-- <br></div><div class="gmail_signature" data-smartmail="gmail_signature">Tinny keyboard.. Mobile ... I am</div>