3 ms·
I don't want to dismiss hyper-threading as trite — it's not, especially in implementation, but it is pretty obvious. Prior to 1994 the CPU-memory speed delta w
by code_biologist 4y ago
I don't want to dismiss hyper-threading as trite — it's not, especially in implementation, but it is pretty obvious.
Prior to 1994 the CPU-memory speed delta wasn't so bad that you needed to cover for stalled execution units constantly. Looking at the core clock vs FSB of 1994 Intel chips is a great throwback! [1] Then CPU speed exploded relative to memory, as was probably anticipated by forward looking CPU architects in 1994.
With slow memory there are a few obvious changes you make to the degree you need to cover for load stalls: 1) OoO execution 2) data prefetching 3) find other computation (that likely has its own memory stalls) to interleave. On the thread level is a pretty obvious grain to interleave work, if deeply non-trivial to actually implement.
Performance oriented programmers have always had to think about memory access patterns. Not new since the 80s to need to be friendly to your architecture there.
[1] https://en.wikipedia.org/wiki/Pentium#Pentium https://en.wikipedia.org/wiki/Pentium#Pentium