
In addition to thoroughly updating every aspect of the text to reflect the most current computing technology, the third edition uses standard 32-bit MIPS 32 as the primary teaching ISA; presents the assembler-to-HLL translations in both C and Java; highlights the latest developments in architecture in Real Stuff sections: Intel IA-32, Power PC 604, Googles PC cluster, Pentium P4, SPEC CPU2000 benchmark suite for processors, SPEC Web99 benchmark for web servers, EEMBC benchmark for embedded systems, AMD Opteron memory hierarchy, AMD vs. 1A-64.
Personally I actually haven't read too many books on optimizations, I just absorbed information over years one thing at a time, but something like Computer Organization and Design is a pretty good intro to the low-level picture. If you want to drown in extremely dense technical topics that will give you a lot of jumping off points to search, read Agner Fog's microarchicture optimization guide (https://www.agner.org/optimize/). It won't tell you what LLVM is doing, but it'll tell you why it's doing it. Fair warning, it's dense and pretty dry.
Then it depends how interested you are in doing low-level nonsense. If you spend a lot of time writing performance oriented systems code, you'll come to use profiling tools that show you the assembly. If you stare at it long enough, you sometimes start to question why the compiler wrote it this way. And you're naturally led as you try to optimize your code to wonder how LLVM is coming up with this ASM that it spits out and why it sometimes gets it wrong.
There's nothing magical or that requires innate talent. You can learn all of this very naturally if you work close to the metal and take the time to question how the abstraction layer below you actually works. If you keep doing this, you eventually find out it's not that deep, it's just a lot of stuff accumulated over time, but none of it particularly difficult or inaccessible.
Finding the inevitable bugs in the formal model is left as an exercise to the reader (three bugs where the axiomatic/operational models disagree are already known).
If you want a more gentle introduction, the Computer Organization and Design book is pretty nice.
Some readers may be familiar with Computer Architecture: A Quantitative Approach, popularly known as Hennessy and Patterson. (This book in turn is often called Patterson and Hennessy.) Our motivation in writing the earlier book was to describe the principles of computer architecture using solid engineering fundamentals and quantitative cost/performance tradeoffs. We used an approach that combined examples and measurements, based on commercial systems, to create realistic design experiences. Our goal was to demonstrate that computer architecture could be learned using quantitative methodologies instead of a descriptive approach. It was intended for the serious computing professional who wanted a detailed understanding of computers.
A majority of the readers for this book do not plan to become computer architects. The performance and energy efficiency of future software systems will be dramatically affected, however, by how well software designers understand the basic hardware techniques at work in a system. Thus, compiler writers, operating system designers, database programmers, and most other software engineers need a firm grounding in the principles presented in this book. Similarly, hardware designers must understand clearly the effects of their work on software applications.
Thus, we knew that this book had to be much more than a subset of the material in Computer Architecture, and the material was extensively revised to match the different audience. We were so happy with the result that the subsequent editions of Computer Architecture were revised to remove most of the introductory material; hence, there is much less overlap today than with the first editions of both books.
Multiflow still has some relevant ideas [2]
Programming on Parallel Machines: GPU, Multicore, Clusters and More. Gives you a look at some of the issues [3]
SPIRV-VM is a virtual machine for executing SPIR-V shaders [4]
NyuziRaster: Optimizing Rasterizer Performance and Energy in the Nyuzi Open Source GPU [5]
Ocelot is a modular dynamic compilation framework for heterogeneous systems, providing various backend targets for CUDA programs and analysis modules for the PTX virtual instruction set. [6]
glslang is the Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
[1]: https://www.goodreads.com/book/show/83895.Computer_Organizat...
[2]: https://en.wikipedia.org/wiki/Multiflow
[3]: http://heather.cs.ucdavis.edu/parprocbook
[4]: https://github.com/dfranx/SPIRV-VM
[5]: https://www.cs.binghamton.edu/~millerti/nyuziraster.pdf
Learning how to program FPGAs (in verilog, etc.) is also a nice way for software people to start getting into hardware.