Unless you're trying to squeeze every last ounce of performance out of a fixed system (e.g. say you're reprogramming the firmware for Voyager I and II), writing software to only work for a specific piece of hardware is generally a bad idea. Yeah, it's nice and interesting to know how Sandy Bridge's branch prediction or reordering buffer works, but if your code is depending on that, then you're signing yourself up for software maintenance nightmare.
As for where to learn about CPUs, go with textbooks. Go with Hennessy & Patterson. That edition is from 2011. I graduated more than a decade ago and have the 2nd edition, which talks alot about MIPS architecture. I don't know if this latest edition has recent updates. However, as my professor like to say, most of the ideas of speeding up CPUs have been invented in the 60s. It's just that fabrication technology has improved enough in recent times that allow those ideas to actually be implementable. The more recent trends are all for low power savings, clock scaling, turning on and off parts of the processor when it is not in use, so a lot of micromanaging of all the different parts of the CPU.
Wikipedia has lots of details too, but you have to know the terms to search to find the articles. Here's a few terms off the top of my head that might help you get started: Branch Prediction, mis-prediction penalty, instruction bubbles, Cache, Memory Subsystem, TLB, Register Renaming, Reorder Buffer, ALUs, execution units. Vector processors vs. Scalar processors, Super-scalar processors. SIMD (single instruction multiple data), data hazards, instruction prefetching, simultaneous multithreading (SMT) aka hyperthreading, IO virtualization.
While I can't recall all the courses I have to take before I graduate (I'm on co-op right now for the next five months), one of them is simply titled Computer Architecture.
I ordered Computer Organization and Design yesterday, but instead of the second book, I ordered this Computer Architecture: http://www.amazon.com/gp/product/012383872X/ref=oh_details_o00_s00_i00
The second one you linked looks very good though :/. What do you think between these two?
Agree with Patterson & Hennesy and they also by chance wrote the graduate textbook as well:
Googling around, it seems that book is also available in Chinese as well. You can have them purchase that with the English version too so they can read at the same time and get the necessary vocabulary in English.
https://www.amazon.com/Computer-Architecture-Quantitative-John-Hennessy/dp/012383872X
And this Coursera Course is pretty good.
https://www.udacity.com/course/high-performance-computer-architecture--ud007
https://www.amazon.co.uk/Computer-Architecture-Quantitative-Approach-Kaufmann/dp/012383872X
If you’re into GPUs keep your eye out for the architecture whitepapers put out by Nvidia and AMD:
https://www.amd.com/system/files/documents/rdna-whitepaper.pdf
Just because people use other words most of the time doesn't mean one word doesn't cover the other.
Storage is memory.
If you read Hennessy & Patterson (and you should) a big feature of the book is the Memory hierarchy which includes mass storage. It even includes off-line storage.
My usual CS book recommendation is Foundations of Computer Science, but if you do not yet know a lot about programming, most of the material is going to be out of your reach.
Also, CS is mathy, if you're interested in learning how computers work under the hood, you want to look into computer engineering books, like Hennessy and Patterson
Computer Architecture: A Quantitative Approach
This is THE classic textbook on CPU design. It was written by John Hennessy the creator of MIPS CPU who went to Stanford and David Patterson the creater of the SPARC CPU from Berkeley. I've probably talked to 50 engineers over the years and everyone used the same book. I interviewed new grads last year and they are still using the same book.
https://en.wikipedia.org/wiki/John_L._Hennessy
https://en.wikipedia.org/wiki/David_Patterson_%28computer_scientist%29
This is the current 5th edition.
http://www.amazon.com/Computer-Architecture-Fifth-Quantitative-Approach/dp/012383872X/
I used the 2nd edition back in 1997. You can get it for 1 penny used. Considering that 3 of the students I interviewed last year did the exact same 3 projects I did 18 years before I'm not sure that you need the new edition!
http://www.amazon.com/Computer-Architecture-Quantitative-Approach-Second/dp/1558603298/
There are other books on analog circuits, logic design, layout etc. I linked to a very basic intro to layout book elsewhere in the thread.
The sophomore level intro to digital logic design class used this book. This explains AND / OR gates and flip flops which are the foundation of any CPU, GPU, ASIC.
http://www.amazon.com/Contemporary-Logic-Design-Randy-Katz/dp/0201308576/
If you want a good book, check out Computer Architecture: A Quantitative Approach by Patterson and Hennessy and Computer Organization and Design by the same authors. Both very good books on learning about the history of computing and how the systems work.
Both were core books for 3 of my classes from Sophomore to Senior year.
Check out DLX, from the guys who wrote the book on computer architecture. Very clean, easy to implement, and there are tools out there to use or compare against.
Huh they made a completely different text as well. Perhaps you mean this one by Hennessy and Patterson... http://www.amazon.com/Computer-Architecture-Fifth-Edition-Quantitative/dp/012383872X/ref=pd_bxgy_b_text_y
Yep I'm getting this one.