The new ARM Edition of Computer Organization and Design features a subset of the ARMv8-A architecture, which is used to present the fundamentals of hardware technologies, assembly language, computer arithmetic, pipelining, memory hierarchies, and I/O.
With the post-PC era now upon us, Computer Organization and Design moves forward to explore this generational change with examples, exercises, and material highlighting the emergence of mobile computing and the Cloud. Updated content featuring tablet computers, Cloud infrastructure, and the ARM (mobile computing devices) and x86 (cloud computing) architectures is included.
An online companion Web site provides links to a free version of the DS-5 Community Edition (a free professional quality tool chain developed by ARM), as well as additional advanced content for further study, appendices, glossary, references, and recommended reading.
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.
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.
I recommend also watching these videos throughout the course
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.
Solid textbook, written by very smart people, but has a few shortcomings as a learning device. - Many of the problems have not been ported from the 64-bit version (RV64) to the 32-bit version (RV32) of RISC-V in the 2nd edition, leading to awkward questions that use some of the 10 instructions not introduced in the 2nd edition that are eliminated by the switch - It's clear there's still some way to go in separating this book from its more advanced sibling, "Computer Architecture: A Quantitative Approach." A lot of material in the appendices seems to have been copied and pasted without a second thought. - As others mention, there are lots of typos. The most frustrating ones are in exercises and examples that confuse the reader or make results very weird. You'd need to use an answer key to spot some of the typos. - In the said answer key for the book, definitions are not always consistent. For instance, in the chapter 4 exercises, different questions seem to define "number of NOPs as a percentage of cycles" as a function either of the number of cycles (which I think is the expected definition, counting BOTH instructions and NOPs) or as a function only of the number of instructions.
The authors made the great decision to write this book around the 7 great ideas in computer architecture introduced in chapter 1, and to always remember performance implications in exercises and examples. I would rate it 5 stars if only the editor did a better job.
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.