Surprisingly, there are only six distinct concepts used to design computers, apart from technology advances, that reappear in many guises over and over again:
Locality – spatial & temporal, e.g. caches
Prediction – no state change, e.g. branch prediction
Speculation – state change, e.g. prefetching
Indirection, e.g. virtualization
Parallelism, e.g. pipelining, OoO, vectors
Specialization, e.g. GPUs, accelerators