What's new in CPUs since the 80s and how does it affect programmers? (2016)(danluu.com)
danluu.com
What's new in CPUs since the 80s and how does it affect programmers? (2016)
https://danluu.com/new-cpu-features/
6 comments
Not all eight bit, but 32 bit was really more of a nineties thing.
The first 386 PC didn't come out until 1987, but hardly anyone had them until about 1990. The 68k was a hybrid 16/32 bit processor, and the IIgs didn't come out until 1987 and hardly anyone bought one.
If you were to go into someone's home or office in 1989 and see how many bits their computer had, it was overwhelmingly likely to have been 8 or 16.
The first 386 PC didn't come out until 1987, but hardly anyone had them until about 1990. The 68k was a hybrid 16/32 bit processor, and the IIgs didn't come out until 1987 and hardly anyone bought one.
If you were to go into someone's home or office in 1989 and see how many bits their computer had, it was overwhelmingly likely to have been 8 or 16.
Superscalar is an idealized notion of concurrent instructions per clock, almost MISD. Even the Pentium doesn’t really work like that, where one pipe isn’t fully capable, but it still has OOE, so it’s nothing like the Computer Architecture books with nice two or more concurrent instructions per cycle. In the real-world with OOE, reservation stations, register renaming, retiring and related technologies, it’s hard to say what runs when, but that the scheduler tries to keep execution units as busy as possible given the window of incoming instructions and their branches. There are broadly: 0) single-pipeline, sequential processors and 1) OOE ones with any number of execution units.
Also related: hyperthreading takes idle excution units of a core and makes two virtual processor threads out of them that compete for execution unit scheduling. Slightly faster multiprocessing performance with possibly slightly slower single thread performance.
Also related: hyperthreading takes idle excution units of a core and makes two virtual processor threads out of them that compete for execution unit scheduling. Slightly faster multiprocessing performance with possibly slightly slower single thread performance.
I think the biggest change is that as long as I follow a set of best practices, I never have to worry about performance. It's always good enough. I can spin up 5 docker containers with a copy of my program running in each, on my 4 year old laptop, and performance is still not an issue.
Adrian Colyer had recommended this in one of his posts.
I didn't see superscalar mentioned. But I saw some close synonyms; so I'm good.
However, I didn't see μop caches. The x86 tax is pretty small in 2017 and it was pretty expensive in the 80s leaving the door open for RISC. That's definitely missing.