This edition is now out of print. Please see Computer Organization and Design, Third edition (ISBN 1558606041) for latest edition with over 40% of the content updated.
The performance of software systems is dramatically affected by how well software designers understand the basic hardware technologies at work in a system. Similarly, hardware designers must understand the far reaching effects their design decisions have on software applications. For readers in either category, this classic introduction to the field provides a deep look into the computer. It demonstrates the relationship between the software and hardware and focuses on the foundational concepts that are the basis for current computer design.
Using a distinctive "learning by evolution" approach the authors present each idea from its first principles, guiding readers through a series of worked examples that incrementally add more complex instructions until they have acquired an understanding of the entire MIPS instruction set and the fundamentals of assembly language. Computer arithmetic, pipelining, and memory hierarchies are treated to the same evolutionary approach with worked examples and incremental drawings supporting each new level of sophistication. The design, performance, and significance of I/O systems is also discussed in depth, and an entire chapter is devoted to the emerging architectures of multiprocessor systems.
* Real Stuff provides relevant, tangible examples of how the concepts from the chapter are implemented in commercially successful products. * Fallacies and Pitfalls share the hard-won lessons of the authors and other designers in industry. * Big Pictures allow the reader to keep major insights in focus while studying the details. * Key terms, all fully defined in an end-of-book glossary, summarize the essential ideas introduced in the chapter.
I remember when I first learn computer architecture in China. The book we used is terribly complicated. I once thought computer architecture as a subject with random things to memorized.
Fortunately, I study this book years later in the US. It goes through the fundamental philosophy of computer architecture design and it gives lots of examples, pictures, and exercises to help you understand the concept.
The book not only talks about simple examples, it also break the real machine down to show how the principles in the book being applied in the real world. I find that very fascinating! I also teach this subject for undergraduate students. By going through the flow of the book, the student are able to understand the fundamental principles of computer architecture.
This textbook was required reading for my Computer Organization and Architecture university course. Sometimes it can be difficult to give a textbook a fair review because, in a typical course, students are rarely required to read the entire book and they may be given reading assignments that are not in sequential order. This means it’s not easy to judge the progression of the material as presented in the textbook from beginning to end.
Such was the case with this textbook. In my class, we skipped around and read different sections from different chapters rather than reading any single chapter all the way through. One thing I was impressed with, given how much we skipped around, was how easy it was to pick up each section we were asked to read. Even if it was a section in the middle of a chapter we hadn’t read from before.
Unlike some textbooks I’ve read, there weren’t any cryptic terms or acronyms that I couldn’t easily find the definition to. Definitions for new terminology were noted in the margins, making it easy to refer back to them if needed. In general, explanations were clear and the examples were good. However, there were quite a few grammatical/spelling errors and there was some awkward phrasing that required rereading in order to understand what the authors were trying to convey. Sometimes they skipped intermediate topics, such as jumping from a single-cycle datapath to a pipelined datapath without covering the multi-cycle datapath which I understand was in previous editions of the book. My university course provided very good supplementary content and I found the concepts easy to understand when presented in that logical progression. I might have struggled more if I had been limited to the book's presentation, but it's hard to say for sure since I wasn't in that position.
I don’t normally comment much on the physical aspect of books I read, but this book was literally falling apart as I read it. School textbooks are the only type of book that I still purchase in a physical format, and this textbook was no exception. I saw a couple reviews on Amazon where reviewers mentioned that their pages fell out, but I needed the textbook and I wanted it in a physical format, so I bought it with the plan to be extra careful with the pages. Sure enough, as soon as I started reading, pages started randomly falling out. I would gingerly turn a page, and sometimes the page would turn and come out of the book. I don’t resell my textbooks, but anybody who does probably wouldn’t be able to resell this one. Maybe that was the goal…
The falling pages became quite a problem for me because I took several business trips while taking this course and I was afraid to travel with the book. I didn’t want to have pages falling out all over the place and getting lost where I would never find them again, and I figured the flimsy book would never survive my laptop bag or my suitcase, so I purchased the e-book version of the textbook to use while traveling. The e-book version had its own issues. There weren’t any page numbers, which could be a problem when I needed to reference specific pages for my class, and the tables and diagrams were very small. I was reading on a 10.5” tablet, with a screen nearly as big as the pages in the physical book, but the size in the e-book was drastically different from the size on the printed page and did not fully utilize the space. I constantly had to zoom in on them so I could read them, which meant I couldn’t see them in context with the text on the page. Perhaps all of this is normal with e-textbooks; I haven’t read enough of textbooks in this format to know. It definitely frustrated me, though. If I could give half stars, I would give this book 3.5 stars.
This is a good textbook, but I would recommend picking it up unless you have a lot of time (or you are studying it in a course). I started reading it because I realized my understanding for processors was ancient and wanted to update it a bit. It does go into the new and fancy stuff, but it definitely helps you get a good overview. After you've finished it, you'll have a good idea how to (conceptually) build a basic computer. Two major caveats: the writing is a bit boring and academical (to be expected out of a textbook) and it will take ages to read it. If you're interest is just casual, you might be better by picking Code by Petzold (although that is quite basic and matches my "ancient" knowledge about processors).
Probably the best textbook I've ever read. Everything is actually explained and the examples aren't overbearing. The content itself can get a bit dry but still very useful. However, the amount of typos is ridiculous.
Quins records quan em vaig haver de llegir aquest llibre per passar les entrevistes al BSC i així poder fer de guia turístic als meus amics. Només per això ja va valdre la pena!
Used this as my textbook for ECE425 - Computer Architecture and thought it explained a lot more than what the professor tried to teach. I would recommend reading this a few times before listening to the professor go over whichever topic you're covering and I'm sure it'll help you.
This used to be the Bible of any Computer Hardware Engineer/VLSI engineer/Complex Semiconductor Device engineer... such as formerly myself. Read this up during the summer break1st year of Masters. Now I am more and yet different than all of that. What a strange, wonderful and surprising 20 years.
This book and CSAPP are both fundamentally about computer architecture, combining both hardware and software perspectives, and discussing how to optimize the system as a whole—just from different ways of thinking.
CSAPP (Computer Systems: A Programmer’s Perspective) approaches the topic from an industrial-age, mechanical mindset, focusing on so-called "systems programming." In contrast, Computer Organization and Design RISC-V uses a data-centric way of thinking more aligned with the information age.
CSAPP opens with the claim: "teaching you how to maximize the performance of your programs." In the industrial age, where people wrote code manually, CSAPP was indeed highly valuable. But in the information age, code is no longer written by humans—it is generated by machines. The competition now is about who can provide better data to the machine. The machine can then generate performance-optimized code directly based on the hardware. When this is compiled into high-level languages, the resulting code is often unintelligible to humans. AlphaGo already demonstrated that under the same rules, the power of big data is immense, and that human reasoning can't match the machine's precision.
Another clear difference is that CSAPP includes many rigorous mathematical derivations—for example, a proof of sign extension in two's complement. But to truly understand two's complement, you first need to understand the concept of complements in general. A formal proof doesn’t help much if you don’t grasp that foundational idea. On the contrary, it is only after understanding complements that one can truly grasp why the proof in CSAPP is presented that way. Computer Organization and Design RISC-V doesn’t offer direct mathematical derivations, but instead uses cleverly concise explanations to convey these ideas. If you understand the short explanation, then you already know how the proof works. If you don’t understand it, that signals you haven’t really grasped the concept of complements.
Of course, neither book directly covers the topic of complements. So before reading either of them, it’s best to start with Code: The Hidden Language of Computer Hardware and Software, since Code discusses the complement systems that most computer science books overlook.
4.0 out of 5 stars Very Informative, But Has Many Editing Problems March 18, 2005
This is a tough book to review. On one hand, it's got an amazing amount of information in it. On the other, it's got a lot of editing problems. It also suffers from a lack of focus on who its audience is. So, splitting the difference, I'm rating this book at 4 stars out of 5.
Regarding the book's audience, it's vital that you pay attention to the chart on page xiii of the Preface. It maps your path through the book based on whether you're a software-type or a hardware-type. Assuming I was so brilliant that I could ignore such trivia, I attempted to plow my way through the whole book. Software-type that I am, I had some tough times in a couple of sections and then utterly failed to understand anything when I hit the core of Chapter 5. If I had paid attention to that chart, I would have known to skip that part of the book. However, even for the material that's within the path laid out for you by that chart, a lot of the work seems to assume knowledge on the part of the reader. For instance:
- Chapter 2 is about the MIPS assembly language. In the exercises, you're supposed to write various code snippets. Many of these snippets assume far more familiarity with writing entire assembly programs than is presented. - The exercises at the end of each chapter are broken into three types: regular, "For More Practice," and "In More Depth." Those last two types require far more knowledge than is presented. It looks like the authors culled them from previous editions and, instead of trashing them, just stuck them on the CD and referenced them. - Exercise 3.9 is annotated as requiring Section 3.2. But, unless you're very familiar with the implementation of MIPS assembly language, there's no way that someone using the material in that section alone could do the problem. - Exercise 3.13 is annotated as requiring Section 3.3. Yet, the question is completely undoable unless you've at least read Appendix B. Of course, Appendix B, itself, is practically indecipherable unless you've had previous experience/knowledge with Logic Design. - Exercises 7.21, 7.22 and 7.38 talk about "the first 1 million references in a trace of gcc." The book contains no definition of what that means. Those questions also mention the cache simulator "dinero" and say, "see the Preface of this book for information on how to obtain them." There's no such information in the Preface or on the CD. The CD does have MipsIt software which includes a cache simulator, but it doesn't seem to work reliably on my XP SP2 system (it also doesn't seem to accept those "traces" as input). That could be operator error, though. Doing a Google search pointed me to max.stanford.edu as a source of the software and traces. But, it seems you have to have a Linux system (or be smarter than me) to use them. - Exercise 7.35 gives a C code snippet and asks you to calculate the expected cache miss rate. There's nothing in the book about calculating expected miss rates from algorithms. Also, the exercise is assigned partially against section 7.4. Section 7.4 covers virtual memory, not caches. - Most of the Chapter 8 exercises are mis-referenced (i.e., they're labeled as being associated with certain sections of the chapter which have nothing to do with the question). Along with the standard problem of assuming knowledge that's not covered in the book, many of them teach new information instead of testing/re-enforcing comprehension of the provided material.
There are many incorrect page number and section number references in the book. This is especially bad in the exercises where it becomes impossible to do certain ones since the code and data they're referencing isn't findable (at least easily). This problem does seem to get better as you get to the later chapters. There are also problems with basic typography. Some examples:
- Exercise 3.29 wants the reader to come up with a non-restoring division algorithm based on the restoring division algorithm in Figure 3.11 on page 185. The figure and page numbers are right, but the text of the question refers to "step 3b" and "restoring the Remainder" that aren't present there. So, there's no way to figure out what the authors are doing or what they want the reader to do in the exercise. - Many of the tables and diagrams in the book use "color" to help indicate something important. Unfortunately, the color used is dark blue. Unless you look very carefully, there's no difference between the regular text/line color (black) and the "emphasized" version. - The text description of Figure 7.31 on page 544 mentions labeled sections that show differences in performance based on cache associativity. The labels are missing. - Exercise 7.45 gives you a C snippet that you're supposed to document. It contains "!!" as an operator. C has no such operator. My guess is it's either a logical AND, "&&", or a logical OR, "||".
Also, the chapters are WAY too long and there are no exercises following the sections. For instance, Chapter 2 is 100 pages long over 20 sections. All the exercises (59 of them) are clumped together in the back of the chapter. The authors note the necessary section numbers with these exercises, but each section needs its own set of exercises immediately following it. This would also alleviate the problem where the authors have the wrong section numbers assigned to exercises. If these exercises were at the end of a section instead of clumped with 60 other exercises at the back of the chapter, they'd stand out more if they didn't belong.
And, finally, the book needs answers to the questions.
As an aside, this book is used in Florida State University's (FSU) CDA 3101: Computer Organization course.
I read this during my downtime of my 2021 summer internship with Progressive Insurance. It was available in their library of resources and I’ll be using it in a course for my senior year this fall. I don’t really feel comfortable writing a real review, since the author obviously knows more than me. But any textbook I can read in my leisure definitely deserves some credit. Interesting read and very useful for someone looking to learn
Architecture opens up the black box of computing and allows us to understand how to make better use of hardware to achieve high performance computing. In some high performance scenarios, without this knowledge, only for the upper operating system or other abstraction of the operation, it is likely to achieve the desired effect, so it is highly recommended to learn this knowledge!
The number of tyops in this would be embarrassing in a first edition, but it's unacceptable in a second edition.
Also, speculative execution attacks (e.g., spectre and meltdown) are only mentioned on half a page at the end. In 2 pages the entire problem could have been addressed in sufficient detail.
Great book for learning how computers work from first principles. The authors clearly break down the pieces of a microprocessor and the natural developments in computer design. I'd recommend getting the latest edition to get coverage of recent developments on TPU and GPUs for ML applications.
This is almost a standard book for computer organization but takes a lot of time per page. This is kind of a prerequisite to read the Computer Architecture: A Quantitative Approach from the same authors.
I understand why this book is the “hallmark” of hardware design textbooks, but I couldn’t help but want to bang my head off the desk during this class.
Otherwise - great book, easy to read and understand
Don't get me wrong, the book had some good things too, like the analogies made with the real world. But it can get tricky if you aren't really into reading and it takes quite a lot of time to finish it, let alone comprehending it thoroughly...
Read this for some introduction into RISCV and to refresh my architecture knowledge. It really delivers on the architecture side but felt that the riscv side was not so strong towards the last chapters.
One of the best university textbooks I held only. Thorough thoughts on performance measure, compilation process mapping of assembly to object code file and memory mapping, instruction set design and operations... Wish I had the time to read the updated version.
Have now taken two courses over this book, one that skimmed lightly and one that went into depth into the topic. Both instances P&H have been a great and reliable resource, with nice examples to help the reader grasp the various ideas presented throughout the material.
This was my course book in Software engineering 4th semester. Every thing in the book was so detailed that most of the time i did't needed my professors help to understand the concepts.
Excellent insight into basic computer architecture and design! Very good for getting a basic understanding and making you ready to work through higher concepts.
I was really enjoying this and using it to supplement my electronics project. But my house poltergeist seems to want it more than I do and the book as now disappeared completely mid read.