This is an early attempt at microarchitecture documentation for the CPU in the Apple M1, inspired by and building on the amazing work of Andreas Abel, Andrei Frumusanu, @Veedrac, Travis Downs, Henry Wong and Agner Fog. This documentation is my best effort, but it is based on black-box reverse engineering, and there are definitely mistakes. No warranty of any kind (and not just as a legal technicality). To make it easier to verify the information and/or identify such errors, entries in the instruction tables link to the experiments and results (~35k tables of counter values).
Amazing work, but the fact this kind of work is even needed illustrates just how anti-consumer these new Macs really are.
Thom, I’m not seeing how this points to how anti-consumer the Macs are. IF this truly is just mapping out the micro-architecture, not the instruction set, then the logical instructions still achieve the same results regardless of how they’re implemented. It would still be ARM instructions at a high level and could still be effectively programmed the same way.
Put another way: the ARM instructions are the interface and the micro-architecture is how those instructions get implemented. There’s various ways each instruction could be implemented, as long as the same inputs lead to the same outputs in each case. Perhaps you have an add instruction that uses normal adder digital circuits. Or maybe you have a pre-computed table of addition results & the inputs just map to the output — faster, but takes up more chip real estate. The logical add instruction is the same either way, but the way it is carried out differs.
The way it gets carried out is quite possibly company proprietary in order to give them an advantage over competitors. To say it is anti-consumer, then, would be to argue that EVERY chip manufacturer should be required to completely open source their micro-architectures in order to be consumer friendly. By that logic, EVERY company should do the same whether we’re talking about hardware, software, automotive, medical, etc, etc.
As a developer, I may be curious about the micro-architecture of a chip, but I don’t really NEED to know it to effectively code up a piece of software. The differences would only matter if (1) there’s side effects of one implementation that others don’t have — arguably a bug or (2) something nefarious in the implementation — like it siphons the data & uploads it to the manufacturer. #1 could lead to problems like with the Pentium FDIV issue decades ago. #2 would take a fair bit of work to siphon as it could be a large amount of data and the data would only be useful in certain states (e.g., I’d need to know to siphon the decrypted version of some data instead of just its encrypted form).
While I have my concerns about Big Tech, I’m really not sure how this fits as anti-consumer.