Ask HN: Understanding basic computer architecture via emulation?
I have a very basic understanding of how computers work. I’m a full stack developer but didn’t do a CS degree.
I want to have a deeper understanding of CPUs, GPUs, how it all connects.
I want to learn by building chip emulators in Go
What’s a good resource/s to get started?
5 comments
[ 3.9 ms ] story [ 64.4 ms ] thread[1] https://nandgame.com/
[2] https://www.nand2tetris.org/
My recommendation is to move to playing around with microcontrollers and writing stuff in C for them, compiling it to assembly and understanding what each instruction does.
Past that, there is the whole "how to write an OS" which is a fairly complicated topic. You can skip that as you are never gonna really be in that area unless you are working on consumer facing product that needs some ABI.
You can go straight to using ghidra to decompile linux executables, and understanding things like elf files, dynamic linking and so on.
Learning how to program FPGAs (in verilog, etc.) is also a nice way for software people to start getting into hardware.
If you enjoy what you're doing, but want to learn about more modern CPUs and modern GPUs, you can progress towards more recent systems. The sixth generation systems (Dreamcast, PS2, Gamecube, Xbox) are comparable to modern architectures, but with a lot less horsepower.
The NESdev Wiki is a good source of information [1] to get started.
[1] https://www.nesdev.org/wiki/Nesdev_Wiki