Monday, August 25, 2014

Computer Architecture - How To?

Some time ago I remember asking a more senior team member: how does one learn about how hardware operates on the low level? I was answered that this could be learned only from practice.
While I don't think that this is a completely invalid approach - since practical experience is always more valuable than a raw theory - I was searching for some theoretical basis I could get before diving into practice. I think I have something now what I can recommend.
Firstly, there is this course on hardware architecture, which is really good:
Beware though, it is a grad-level course, so the level is really very demanding. You should know what are caches, associativity, memory hierarchy etc. They recommend the following book:
I really recommend you start reading it from appendix, which serves a sort of a primer. The book is also very up-to-date, even more than the course itself.
The second book recommended ( provides a lot of low-level details on reservation stations/register renaming, very in-depth on a pair of particular architectures, and a comprehensive description of branch prediction algorithms. Despite it has been just republished, it is a bit outdated (e.g., Intel P6 microarchitecture is used as example), so it is really up to you to buy or to pass.
I hope this has been helpful, and as previously, feel free to comment and discuss.


  1. This comment has been removed by a blog administrator.

    1. Thanks, Nick!
      Throughout the course the author refers often to electronic concepts, such as gates and multiplexers, so I guess this one would be a good primer

    2. Sorry, I've accidentally deleted the original comment :(
      It was: "And for the laymen/beginners, there's a really, really well-written book about architecture, considered a geek's "classic" by coders and non-coders alike: "Code" by Charles Petzold "