News Functional 16-bit CPU built and runs in Excel, 3Hz processor includes 128KB of RAM, 16-color display, and a custom assembly language

I’m well versed in Excel formulas and I’ve written a ton of assembly language code back in the day, so I can understand perfectly what he’s doing… but for the life of me, I can’t understand why. Just because something can be done doesn’t mean there is any point in doing it. Seems to me the whole point of this exercise was to sell ads on YouTube. And then Tom’s Hardware writes about it in order to sell ads too. Is this all people do these days, just devise new ways of selling ads?
 
I’m well versed in Excel formulas and I’ve written a ton of assembly language code back in the day, so I can understand perfectly what he’s doing… but for the life of me, I can’t understand why. Just because something can be done doesn’t mean there is any point in doing it. Seems to me the whole point of this exercise was to sell ads on YouTube. And then Tom’s Hardware writes about it in order to sell ads too. Is this all people do these days, just devise new ways of selling ads?
I think they did it mainly for two reasons: for educational purposes and simply because they found it cool/fun. Some people, like me, do appreciate exercising possibilities even if it has no benefit or practical use-case whatsoever. They might also find it intrinsically rewarding to be the first person that proves that this can be done (I know I would). I certainly would've done it if I was knowledgeable in Excel and assembly language and had a ton of free time to kill.
 
And we're running out of things to play Doom on.
I think they did it mainly for two reasons: for educational purposes and simply because they found it cool/fun. Some people, like me, do appreciate exercising possibilities even if it has no benefit or practical use-case whatsoever. They might also find it intrinsically rewarding to be the first person that proves that this can be done (I know I would). I certainly would've done it if I was knowledgeable in Excel and assembly language and had a ton of free time to kill.
 
I’m well versed in Excel formulas and I’ve written a ton of assembly language code back in the day, so I can understand perfectly what he’s doing… but for the life of me, I can’t understand why. Just because something can be done doesn’t mean there is any point in doing it. Seems to me the whole point of this exercise was to sell ads on YouTube. And then Tom’s Hardware writes about it in order to sell ads too. Is this all people do these days, just devise new ways of selling ads?
It is increasingly the purpose of the internet, porn and adverts and yes the reason for porn is adverts. It is adverts all the way down.
 
I’m well versed in Excel formulas and I’ve written a ton of assembly language code back in the day, so I can understand perfectly what he’s doing… but for the life of me, I can’t understand why. Just because something can be done doesn’t mean there is any point in doing it. Seems to me the whole point of this exercise was to sell ads on YouTube. And then Tom’s Hardware writes about it in order to sell ads too. Is this all people do these days, just devise new ways of selling ads?

It's actually worthy anyone going into uarch as a career.

Software simulation of new architectures are becoming vitally important in the race to detect critical errata and performance before they go into silicon. In fact it's done every day on subsystems.

When companies like AMD and NVIDIA take a stab at performance uplifts, they generally are including efficiency uplifts from using new lib blocks and simulating the outcome. Before it was reactive. (Polaris/vega -> RDNA (vast majority of issue pipeline under utilized), bulldozer-> zen (pipeline too deep with poor branch prediction)). Things like look ahead buffers, out of order execution, cache, and branch prediction is just more software written as physical dedicated circuits inside silicon.

Reactive: let's build a chip and then see it run on real world data to see its weaknesses.

Proactive: let's software simulate a chip with real world data to see its weaknesses.

Until recently this could only be done on a small functional block analysis. Thus you couldn't use entire ASICs in the analysis. This made accurate simulations more difficult. Ie: what's my time delay looking like when 60% of my mult-add vector cores are busy sending data through the bus. Do I have to add a signalling delay due to trace length? Is hitting the cache line or LHB/OOE too many times going to cause issues? AI seems to be solving some of these simulated workloads.

Could you use X3D cache for ryzen 8000 APUs? Or would a dedicated stacked memory chip be better for the iGPU? (Btw: I have the answer for that.)
 
  • Like
Reactions: folem
It's actually worthy anyone going into uarch as a career.
You say that so authoritatively. Are you speaking as a current or former CPU architect?

Software simulation of new architectures are becoming vitally important in the race to detect critical errata and performance before they go into silicon. In fact it's done every day on subsystems.
Certainly not by using MS Excel as the simulation platform.

When companies like AMD and NVIDIA take a stab at performance uplifts, they generally are including efficiency uplifts from using new lib blocks and simulating the outcome. Before it was reactive. (Polaris/vega -> RDNA (vast majority of issue pipeline under utilized),
That wasn't due to lack of simulation, but rather that GCN was optimized for compute workloads. With RDNA/CDNA, they split their GPU architectures, so each could be optimized for its respective workload.

bulldozer-> zen (pipeline too deep with poor branch prediction)).
I'm sure the Bulldozer fiasco wasn't simply due to lack of simulation.

Things like look ahead buffers, out of order execution, cache, and branch prediction is just more software written as physical dedicated circuits inside silicon.
Hardware design languages have been around for 30 - 40 years.

Reactive: let's build a chip and then see it run on real world data to see its weaknesses.

Proactive: let's software simulate a chip with real world data to see its weaknesses.
CPUs designers have been using simulators for decades. In large measure, they're used for testing & debug, before tape-out, but a chip company I worked at, more than 2 decades ago, was already using C models for performance estimation.

Until recently this could only be done on a small functional block analysis. Thus you couldn't use entire ASICs in the analysis.
Source? We did RTL-level simulations of our ASICs. You couldn't run a big workload through them, that way, which is why we also used C models.

Do I have to add a signalling delay due to trace length?
LOL, you don't need an entire chip-level simulation to tell you that you failed to make your timing targets.
 
You say that so authoritatively. Are you speaking as a current or former CPU architect?


Certainly not by using MS Excel as the simulation platform.


That wasn't due to lack of simulation, but rather that GCN was optimized for compute workloads. With RDNA/CDNA, they split their GPU architectures, so each could be optimized for its respective workload.


I'm sure the Bulldozer fiasco wasn't simply due to lack of simulation.


Hardware design languages have been around for 30 - 40 years.


CPUs designers have been using simulators for decades. In large measure, they're used for testing & debug, before tape-out, but a chip company I worked at, more than 2 decades ago, was already using C models for performance estimation.


Source? We did RTL-level simulations of our ASICs. You couldn't run a big workload through them, that way, which is why we also used C models.


LOL, you don't need an entire chip-level simulation to tell you that you failed to make your timing targets.
I worked on satellite boards and ROM programming at Goddard NASA. While the excel program itself was more "that's neat". It shows an understanding of how registers and memory components are shifted around. I'm sure this is 1 issue single thread CPU. (No pipelines/super scaler/cache/OOE etc.). You could do a transistor by transistor simulation of 80286 with about ~186k transistors. Thats an impressive undertaking.

But uArch was always a side hobby of mine taking grad school courses for it. Today I fiddle with AI & IOT devices using arduinos for fun.

Today's chips have become incredibly complicated due to effects like tunneling and additional circuits. While the software to design circuits has been around for YEARS, critical analysis including physics effects are relatively new. This is why you have AI now picking out function block placement.
 
Last edited:
I worked on satellite boards and ROM programming at Goddard NASA.
LOL, I interned at GSFC, back in the 90's.
: )

While the excel program itself was more "that's neat". It shows an understanding of how registers and memory components are shifted around.
I'd be more impressed by people building a CPU core on a FPGA from scratch. I haven't looked at how Excel was used to implement this, but I'd expect to find a lot of aspects which don't have an equivalent in actual hardware.
 
LOL, I interned at GSFC, back in the 90's.
: )


I'd be more impressed by people building a CPU core on a FPGA from scratch. I haven't looked at how Excel was used to implement this, but I'd expect to find a lot of aspects which don't have an equivalent in actual hardware.
Lmao. We probably ran into each other.

Did you hang by the lake and see the giant snapping turtles? They were ugly as $#&@. We called them Sadam and Gamora because they were older than dirt.
 
  • Like
Reactions: bit_user
I’m well versed in Excel formulas and I’ve written a ton of assembly language code back in the day, so I can understand perfectly what he’s doing… but for the life of me, I can’t understand why. Just because something can be done doesn’t mean there is any point in doing it. Seems to me the whole point of this exercise was to sell ads on YouTube. And then Tom’s Hardware writes about it in order to sell ads too. Is this all people do these days, just devise new ways of selling ads?
Very often, the point of an action is in the act itself. Unless required professionally, what is the point of skydiving, playing cards (or Warcraft, for that matter), playing music, etc.? Chances are that his point was to entertain and educate himself while taking us along for the ride, if we so choose. Others find such endeavors to be entertaining and educational as well, as implied by your claim of there being ads to sell. I hope you can find the joy in undertaking and completing a task just for the pleasure of having done so, as I'd imagine you'd once had when you'd decided that programming in assembly was a calling for you.
 
I hope you can find the joy in undertaking and completing a task just for the pleasure of having done so, as I'd imagine you'd once had when you'd decided that programming in assembly was a calling for you.
When I started learning assembly language (which I did with the help of a public library book I checked out and renewed for about 2 months), it was first and foremost to write some optimized graphics subroutines. It was a means to an end, in other words.

Much later, I'd spend 3 years doing it professionally. It was an in-order RISC core, embedded in a specialized ASIC with lots of buggy hardware assist, that meant having to juggle lots of different timing constraints. After that experience, I never wanted to write more than the odd snippet of inline assembly no longer than half a dozen instructions or so. It's a useful skill to know, but manual register allocation and delay-slot filling (thankfully, not something most architectures have to deal with) is really just a chore. There's no joy in it. And when you need to go back and make some changes, having to do it all over again (i.e. scheduling & register allocation), on a tightly-packed piece of code with barely a cycle to spare, is actually the worst.

If you didn't appreciate optimizing compilers before, you sure will after an experience like that. However, knowing assembly language can help you figure out what a compiler is doing and how to coax more performance out of it.

As a programmer, I find it much more gratifying to write beautiful, efficient, and/or generic C or C++. Sure, crafting a gem of an assembly language subroutine can also be quite gratifying, but not having to work in 100% assembler.
 
Last edited:
  • Like
Reactions: EasyListening