I think that AMD Developer Guides & Manuals [1] are very good resources for x86_64 System Programming (better than Intel Manuals). They are better explained and focus on x86_64 arch.
I would highly recommend AMD's developer manual. It's a lot more written for actual reading rather than a pure tech manual with super thick language like Intel's is.
I second the Intel reference manuals - they've been extremely useful on multiple occasions and have been great at helping me understand the x86 processors better.
One resource I found myself consulting over and over again was the Intel Architecture Software Development manuals (https://software.intel.com/en-us/articles/intel-sdm). They're huge and obviously a bit dry, but they had about 90% of what I needed to know about x86 memory architecture and interrupts.
I included some other resources I consulted in the README. The OSDev wiki (http://wiki.osdev.org/Main_Page) is also good, although I found some of it to be dated or incorrect.
Good luck on developing your OS. Even though I'm not finished, it's been an extraordinarily valuable and educational process.
At glance there is a lot of legacy stuff so I'd look at anything related to GCN, Sea Islands and Southern Islands. Evergreen, R600-800 etc are legacy VLIW ISA as far as I know.
Note that here are multiple versions of this document -- that's because there's a specific one to each AMD CPU Family...
Opinion: This manual is amazingly, amazingly detailed and highly, highly recommended for any current or future OS Writer or OS Student, with respect to AMD CPU's...
Aside from what has already been suggested, you could consider reading selected chapters of Intel's programmer manual. I personally read through the whole thing once (well, skimmed some parts).
From my experience, Intel's x86 manual is better and easier to read than AMD's. It's a free download.
I focus on x86 but I would say 75% of the knowledge is transferable to other architectures. 25% is weird x86 stuff that you aren't likely to find anywhere else.
Before the internet, Intel used to distribute these manuals in hard-copy for free. One just had to drop by your local Intel sales office to pick up a copy. A good solid foot of shelf-space.
These manuals used to be so much easier to read back in the 486/Pentium era. One could almost build a complete mental model of how a 486 worked, and how to manually optimize code to best effect by avoiding processor stalls.
Since then, intel processors have accumulated an extraordinary amount of cruft, so it becomes much harder to develop a complete mental model. Compilers have also gotten a lot more clever as well, in order to deal with the added complexity of SIMD instruction sets.
For those of us who started with the 8086 Architecture manuals, each generation of processors added additional features which one learned by occasionally revisiting the architecture manuals for new processors.
Coming to the Architecture manuals without having the foundation of previous Architecture manuals as a basis must be a daunting task. But I'm sure there's rich material there anyway.
> This series of five manuals describes everything you need to know about optimizing code for x86 and x86-64 family microprocessors, including optimization advices for C++ and assembly language, details about the microarchitecture and instruction timings of most Intel, AMD and VIA processors, and details about different compilers and calling conventions.
> Operating systems covered: DOS, Windows, Linux, BSD, Mac OS X Intel based, 32 and 64 bits.
[1]: http://developer.amd.com/resources/documentation-articles/de...
reply