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: https://www.coursera.org/course/comparch
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:
http://www.amazon.com/Computer-Architecture-Fifth-Quantitative-Approach/dp/012383872X/
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 (http://www.amazon.com/Modern-Processor-Design-Fundamentals-Superscalar/dp/1478607831/) 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.

3 comments:

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

    ReplyDelete
    Replies
    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

      Delete
    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

      http://www.amazon.com/Code-Developer-Practices-Charles-Petzold-ebook/dp/B00JDMPOK2/ "

      Delete