Ask HN: Possible to know everything in a computer system, like in old days?
There was a similar topic on HN about trying to know everything in a modern computer system, like in old days with those simple CPUs and simple devices .. But now even an OS developer can't become expert in every components due to the complexity of modern computer systems. I am wondering is there any effort that tries to help people get there? OS development and source code explanation tutorials are very good examples, but most of them are really really old and focused on basic functionality..
7 comments
[ 3.1 ms ] story [ 24.8 ms ] threadI may be under qualified to say this, but I believe pretty strongly that the number of people that truly understand everything that happens when they use a computer is tending towards zero. This is partially the fault of rising hardware complexity, but more fundamentally your Intel/AMD CPU, your SSD etc is not open source. It is unlikely then that you will be able to understand exactly what your computer is doing when you execute an instruction, because Intel will not tell you how it works, only that it does. You could of course reverse engineer the chips, but I do not believe that anybody has.
There are a number of places you can go to learn more about how modern systems work, I will list the fruitful resources I have used below.
- wiki.osdev.org/Main_Page
This wiki has a lot of valuable information, if you have not already found it.
- www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html?iid=tech_vt_tech+64-32_manuals
The Intel manuals describe how the CPU frontend functions, but does not explain how this functionality is implemented on the backend. The problem here is volume. The combined volumes weigh in at over 3300 pages.
- scholar.google.com
- Wikipedia
I hope this has been helpful - good luck!
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/
I have also done a small amount of FPGA work which is more towards the hardware level, bypassing a CPU altogether.
I can think of no better way to grok the underlying hardware. Write a simple assembler. Next, begin writing an OS.
"The site contains all the software tools and project materials necessary to build a general-purpose computer system from the ground up. We also provide a set of lectures designed to support a typical course on the subject."
For a slightly more common architecture (although hopefully we are entering an FPGA-enabled golden age), try Harris & Harris's "Digital design and computer architecture". It covers the MIPS designs (using both SystemVerilog and VHDL simultaneously) in H&P's "Computer organization and design", but in a more compact and systematic way (omitting H&P's broad but shallow coverage of advanced topics).
Obviously , the trick is that we have a computer defined by the emulation software and not by real hardware, so it allow to make some short-cuts and simplifier some stuff that in a physical computer will be more problematic.