Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4
has over 5000 pages![0] https://www.intel.com/content/www/us/en/developer/articles/t...
It's because they were originally 3 volumes. volume 2 is the ASM reference, 3 is the "how to do things" reference (System programming guide). Volume 1 is more of a general reference so maybe that's why it didn't grow so much.
I do miss working directly with small, simple (relatively), cheap chips. I don't miss dealing directly with the low level bus protocols though. I still have stress nightmares about diagnosing can bus and i2c bus problems with an oscilloscope. Like in the stress dream I'll either forget some important details about the protocol and not understand what is going on at all, or I will remember everything in perfect detail but be unable to speak and explain what's wrong to the other person who's there working on the issue.
There's no way in hell people can make sense of 19 billion separate concepts. Likely what's going on in the chip is just repeated patterns designed to make a very simple machine operate really really quickly.
But of course I'm not denying the complexity. But the 19 billion implication here is a bit too much. It's likely just as complex as say linux.
You are right about human designed chips. If you use something like simulated evolution or backpropagation or some other techniques from machine learning or mathematical optimization, you can get machines with billions of parts but not necessarily any clear pattern nor repetition.
The human brain might be an example of such a mechanism.
We've done it artificially as well with machine learning and genetic algorithms.
The amount of concepts in the neural network of an LLM is too large for us to fully understand.
At best we can only hope to understand these things as a sort of curve fitting optimization problem.
But you see how this is far from true understanding. It's like removing the WiFi module from a PC and you lose WiFi, therefore you know the WiFi module does WiFi stuff but in the end this action contributes nothing towards cohesive understanding of the PC.
And even then:
1) There's parts of the manual which are brief summaries, written with the assumption you're already familiar with the larger standards they interface with. The SDIO and USBOTG sections of the reference manual come to mind in particular, not to mention all the external manuals it takes to describe the ARM Cortex-M architecture.
2) That's a fairly simple microcontroller. (Given the page count, it sounds like you're working with STM32F401.) The STM32H7 series reference manual is 3500+ pages.
you should do some coding closer to the chip
some bitshifting, some bit level manipulation
you dont have to be good at assembly, just do a hello world and make a mental visualization of the registers being hit
look up the OPCODES in your specific chipset , make some code to hit that specifically
make a process that does it as fast as possible and benchmark it, do it faster or slower on a different chipset, or a resource constrained environment
it makes it all really easy to follow and visualize
I dont think you need to write a driver for that map
Sufficiently advanced technology is indistinguishable from magic.
I love using the money analogy for this:
"If you earned $1 every single second, that's $60 per minute, $3,600 per hour, $86,400 per day. More than most people make in a year!
Assuming no tax or expenditure whatsoever, it would take only 11 days to become a millionaire at that salary.
It would take over 31 _years_ to become a billionaire.
And that's only a mere $1 billion, some people are worth _hundreds_ of billions."
Also I don't really have an idea, but I wouldn't be surprised, if a very significant part of transistor budget has been spent on SRAM or something similar, which is not very fascinating.
i tried to read an Espressif ESP32 manual, blew my fucking mind on how complex it is relative to how cheap it is.
The GameBoy CPU is simple and easy to understand, sure, but modern ones are built upon the same basic principles, it's just that they run at much higher clock speeds and add lots and lots of parts (caches, pipelining, speculative execution, register renaming, multiple ALUs, SIMD ...) to execute as many instructions per clock cycle as possible. Also virtual memory support — MMU, TLB, all that stuff.
For the other side, if you want to build a CPU out of logic gates, there was a web-based game where you did exactly that. I don't remember the URL, sorry.
That’s not true for any post 1995 desktop CPU.
They just adhere to that model and pretend that that’s all they’re doing but in reality there’s layers of supercomputers inside the CPU: micro-op cache, branch predictor, reorder buffer, rename buffer.
They extract hidden parallelism out of the code, run it in blazing fast multiple instructions per clock cycle (!), and pretend that nothing out of the order happened.
CPUs are extremely complex and extremely smart. They can have errors in their implementation where the unseen branches that it executed can be accessed by some processes, etc. But there’s nothing dumb about CPUs. They are made of a million man-hours of engineering.
What's the difference between a logic gate and when my index and thumb have a static charge jump between them? About a couple trillion dollars of research.
That seems to me a highly reductive point of view. The whole is always more than the sum of its parts.
This is the one I played some time ago: https://nandgame.com/
I've been reading datasheets a lot at work. The datasheet for an STM32F4 is 149 pages long. The technical manual is over 800 pages long. That puts it into perspective a little bit better for me. I might spend days or weeks writing a driver for some little few pages of that datasheet. It's a dense 800 pages. Those manuals indicate just a fraction of the complexity that lies inside of the device -- they describe features that I can use, not even how those features are implemented or made. And that's for a tiny chip that costs a couple dollars.
A billion is a tough number to understand, but I recommend reading a datasheet of a chip sometime. It will put into perspective how much complexity there is in just a few millions of transistors.
I sometimes have to take a moment, because I remember descriptions of alien technology from sci-fi books. Complexity, opaqueness, power. Chips.