“Computer Organization and Design” by David Patterson and John Hennessy is an introductory text on this subject for budding computer scientists and computer engineers. The field has been in a state of constant flux in recent times and this book serves as an excellent reference even for professionals, since its authors have kept it up-to-date with all the latest developments. The downside is that such a book becomes dated pretty quickly by its very nature, assuming the field continues its breakneck pace of development even into the near future.
The authors are the designers of two early and successful RISC microprocessor architectures (MIPS and SPARC) and this expertise is demonstrated very well in the book. They do not shy from providing details that other authors might have omitted in an introductory text. The flip side is that the book spends a lot of time on the architecture of a microprocessor and very little on the other aspects of computer architecture and design.
The book primarily uses the MIPS architecture to illustrate the concepts. It also uses the x86 architecture in places to illustrate more complex implementations of the basic ideas. The MIPS instruction set and architecture turns out to be fairly regular and minimal, making it a good example from the real world for teaching, unlike the x86 instruction set and architecture with its overwhelming complexity and idiosyncracies.
The book describes the basics of the MIPS instruction set and then shows how programmes in a high-level language are translated into this instruction set. It describes how instructions are decoded and executed, how arithmetic is implemented, how pipelining works, how caches work, etc. With each chapter, you explore the relevant parts of the MIPS instruction set and architecture. Throughout the book, the authors maintain their “quantitative approach” to this field by showing how to measure various things rather than just describing the concepts.
Quite a bit of the book's material has been moved to a companion CD making it a bit cumbersome to refer to that material, especially since the book makes references to this material throughout. This also means that the book is not as bulky as it would have been without the CD and that the authors have been able to provide more information on the CD than would have otherwise been possible in a regular book. I would have personally preferred the “Computers in the Real World” sections after each chapter on the CD rather than in the book since they are so incongruent to the material described in the book.
The book stands quite tall compared to the other books on this subject and its current popularity is entirely justified. I wish this book was available when I was studying computer science. If you are a practising computer programmer who graduated quite a while ago, you must get this book and go through it to keep up with the advances in modern microprocessors.