A piece of material made with silicon that consists of transistors enabling computations to be performed when provided with an electric current and inputs (as of 2019).
Most chips use the Von Neumann architecture, so this is the high level mental model we will use.
Used in some custom chips, can you see the benefits of this? The downsides? We will come back to this.
Gordon Moore, CEO of Intel: "The complexity for minimum component costs has increased at a rate of roughly a factor of two per year."
Heavy debates about it being a self-fulfilling prophecy.
Complex instruction set computer
What trade-offs are we making here?
A tale of new possibilities and evolving constraints
We can cover these in depth another time...
Admittedly a lot to cover! So brief explanations of how they work and analyses of the tradeoffs they make.
Pipelining is a great way to improve clock speeds, why?
All the other techniques essentially exist to help mitigate the effects of pipelining, although it is still an important part of CPU architectures today.
Have on-chip memory for storing data which instructions can refer to.
Modern CPUs can actually use register renaming to have virtual registers.
Reduced instruction set computer
The goal is to instructions simpler, and therefore easier to decode.
The goal is predict which branch the code will take, reducing the changes of a pipeline "flush".
Program Counter (PC) indexes a table of data containing historical information about the execution.
Can't be complex!
Problem: We are limited by the speed of light.
Clock cycles have gone up, memory access latency hasn't changed much.
DRAM Access is 240 cycles!
L1 caches are often separated into separate 'instruction' and 'data' caches. What does this remind you of?
Why not have multiple CPUs on the same chip?
The design of hardware has a *massive* effect on the software that runs on it!
Increased design complexity has massively increased the importance, prevalence and necessity of software abstractions.
Yet, almost paradoxically, complex designs means that subtle changes can have massive effects on functionality and performance!
However, powerful hardware can mitigate the performance impact of application in isolation.
Yet, we are asking our computers to multi-task more-and-more every day! The sum-total can still be quite bad!
Although shallow and brief, hope this gives you an idea about how CPUs can be designed and optimised.
Thank you to Dr. Robert Mullins for his great course on a lot of this material which has still managed to stick in my brain.