Microprocessor Design (2017)
en.wikibooks.org
en.wikibooks.org
> [...] students in computer science or computer or electrical engineering who are in the third or fourth years of an undergraduate degree > [...] The reader should have prior knowledge in Digital Circuits and possibly some background in Semiconductors [...]
But all the above is pure speculation.
Why?
We should really be aiming towards NUMA, many-core processors with high-speed message passing between cores, and a programming model which suits development over that kind of architecture (eg, the Actor model).
Two areas that have not been remotely explored are asynchronous design and massively parallel (think Connection Machine). In both cases, the compilers and tools were not up to the task, but perhaps we're ready to give both another try.
One of the major problems with developing alternative highly-parallel architectures is that most algorithms, particularly as they are written in source code today, simply aren't parallelizable. There's only so much ILP that can be extracted, and data parallelism isn't achievable without very heavy annotation of source code. Getting high data parallelism (as GPGPU does) is sometimes possible with algorithmic rewrites, but you're talking about rewriting several portions of your code to make that happen. That's the reason NVidia is successful--they've got an offload model, so you only need to rewrite the kernels that need parallelism, and they've got the proprietary lock-in on CUDA since no one wants to rewrite that code several times. But even then, there are classes of code that can't be run on GPGPUs very well because you just don't have the necessary data parallelism.
It's honestly criminal how little attention async gets.
But absolutely disagree on massively parallel processors. What do you think your GPUs, TPUs/DPUs not to mention Tilera types are?
CM was massively parallel: 64,000 general purpose processors. I don't think we adequately explored its attributes. I bet we could make a decent emulation of a CM and its support tools now.
A moderate number of people can grasp the imperative "do this then that" model, which CPUs strive so hard to maintain the appearance of despite speculative and out-of-order execution. Fewer people are comfortable with "functional" style programming. Other paradigms are relegated to corners. Multithreaded programming is still a bit of a black art.
Graphics programming only manages parallelism because there's an implicit huge map of "do this to every pixel" around everything. The actual shader programming language .. is imperative, because that's what people understand.
The progression is more interesting than that: it's Datapoint 2200 -> 8008 -> 8080 -> x86. The Datapoint 2200 was a "programmable terminal" (really a desktop computer) that had a CPU made from TTL chips. They got Intel to make a MOS version of the processor, which was the 8008. (TI made a MOS processor for them too, beating Intel with the forgotten TMC 1795.) Because the Datapoint 2200 used serial shift-register memory, it needed to be little endian, and that's why the x86 is little endian.
Also, the marketing names make 8008 sound like an 8-bit version of the 4004, but they are really unrelated. The 4004, for instance, wasn't even von Neumann.
If anything, with a few shining examples, I've been totally underwhelmed by FOSS.
The city of Munich tried to switch to Linux. They just announced the plan to switch back to Windows - presumably they were underwhelmed too.
Switching to GNU/Linux triggers similar problem: different GUI, still Windows at home, IT has to re-learn everything… Oh, and drivers. These aren't GNU/Linux's fault, but they still tend to underwhelm users.
I, mean, seriously: ever tried to have your grandma use LibreOffice? The number one problem won't come from bugs. It won't even come from its inability to read such and such Microsoft Word document. It will come from her inability to "save as .doc" or "save as .pdf" so other people can read the document (and even if she could, it's still a hassle). Network effects are not LibreOffice's fault, but they still tend to underwhelm users.
Because we all profit from it and there is little market incentive to back them. The government funds museums, mathematics and a lot of other things for less reasons compared to FOSS.
> The city of Munich tried to switch to Linux.
They did switch to a GNU/Linux system. It is hard to be different when everybody around you isn't. There were interoperability issues with other bodies. This is one more reason why the government needs to step in to not only fund FOSS but to legally require open formats. Also, FOSS needs to be taught in schools.
I can't believe the amount of time I've wasted on Linux just trying to get my sound card to work, or a printer. Or I could just buy Windows.
FOSS has a lot of "me too" and "reinvent the wheel" as well, to the point of distraction. At this point I think it's borderline useless outside of compilers and scientific computing.
Also, I really wouldn't waste children's time on FOSS. "Here's how to spend a week on Stack Overflow fixing your printer" is not a core subject.
Collectively we do, just like we do from mathematics or museums. Also, imagine what the FOSS ecosystem could be if the underlying technologies where funded by governments around the world.
> I can't believe the amount of time I've wasted on Linux just trying to get my sound card to work, or a printer.
First, if these issues exist, then that is one more reason to fund it. Second, when did you try a modern distribution the last time? It has been a long time since I had problems like that. Usually, when I buy hardware and it doesn't work with free driver I send it back because it's non-functional in my eyes. It's very rare that I need to do that.
> Also, I really wouldn't waste children's time on FOSS. "Here's how to spend a week on Stack Overflow fixing your printer" is not a core subject.
Cleary, the hypothetical printer issue is not what should be tought. Good upstream support is the manufacturer problem, and regulation for labels of driver support would help a lot.
What should be thought are not specific programs but programming and the value of FOSS. Maybe, a few selected and curated and sufficiently funded FOSS programs can be presented to show how common problems could be solved.
> with a few shining examples, I've been totally underwhelmed by FOSS.
I suspect you think that most software is desktop software? This would be wrong.
The overwhelming majority of commercial software made is custom. Much of it is already Free (as well as bloody expensive), and the rest could be without changing anything to the underlying business models.
At the same time, the majority of commercial software used is proprietary. Because while Microsoft Word is only one piece of software, it is multiplied by the number of its users.
As a user, of course you'll find that almost all the software you would pay for is proprietary. But that's just availability bias: you miss all the software that has only one customer, and there is a lot of it.
If you are to develop a CPU with an ISA level security proof, you need a homogenous system.
Something like a simplest MCU with few registers and hardwired instructions, no pipeline or OOOE, and flat memory that can be 100% mathematically verificated.
https://www.cs.bris.ac.uk/~dave/transputer.html
UPDATE: T800 had 250K transistors, Skylake has 1-2 billion, so you could fit around 4K-8K T800s on the same kind of die.
The thing that is approaching it the most is a smartcard CPU. Flat X-i-P rom, cacheless, embedded mram or fram, <100 instructions, full register state determinism.
...
> We need heterogeneous systems.
The first seems to be a call for fewer, the second for more architectures. Which is it?
If this bug is really present in all chips since 1995, then where have all these people been for the last 22 years? If they're so competent about CPU design, why haven't we seen literally tens of Intel competitor startups pop up and succeed?
It's only natural that you get some articles like these posted. For many of us, we've read a few details about the bugs raised this week and thought to ourselves — "man, CPUs are so complicated, how do they even managed to make them work at all?"
An article like this helps to answer some of the questions for those of us interested in finding out more.
Hardware is a long and tedious process. CPU design is an extra level of difficult on top.
In my field, it is routine to hire people in late 40s/50s to make CPUs. I'm in my late 20s, and viewed as a weird specimen. In my career I've made a armv8 CPU and now work RV64.
It takes a couple of years to get a guy from uni into working shape. And that's just to teach him how to do 1-2 tasks in his field. If verification, this usually is coverage specification and test writing. Combine this with a cpu project duration average of 5ish years and it's quickly evident that you won't beat someone with a startup.
In my office today, in a team of 10, no one, other than me is under 40.
Yes, FPGA's exist but they are not even relevant when you are talking about the skillset/engineering discipline to make the FPGA itself and actually producing the physical thing.
ARM-based startups have conquered 95% of the smartphone market and significant chunks of TV's, set-top boxes, cars, tablets, etc since 1995, totaling at about 15 billion ARM-based chips a year (compared to Intel's 500ish million / year). That's pretty successful, right?
The specific chips I know of have ARM cores in them.
https://en.wikipedia.org/wiki/Intel_i860
I'd also look at the market of the time. Itanium was in the tech press everywhere. HP-RISC and Alpha were abandoned. MIPS moved into the low-power market. Resources for SPARC and POWER seem to have been cut. Everyone making the top-level decisions was convinced that Itanium and a sufficiently smart compiler were the solution (hint: the halting problem prevents general static analysis as Turing discovered in the 1930s).
Everyone that is, except AMD and Intel. AMD had no alternatives, so they pulled the x64 rabbit out of their hat. Meanwhile, Intel hadn't slowed down their x86 work. When Itanium fell through (like history indicated it would), Intel was out some R&D and some marketing, but had effectively killed off all their RISC competition (it took a decade or more to catch up). Intel then proceeded to Monopolize AMD almost out of existence (and only paid a couple billion in return for their hundreds of billions in profit).
It all works out way too conveniently for Intel.