
Dealing with computer architecture as well as computer organization and design, this fully updated book provides the basic knowledge necessary to understand the hardware operation of digital computers. Written to aid electrical engineers, computer engineers, and computer scientists, the volume includes: KEY FEATURES: the computer architecture, organization, and design associated with computer hardware - the various digital components used in the organization and design of digital computers - detailed steps that a designer must go through in order to design an elementary basic computer - the organization and architecture of the central processing unit - the organization and architecture of input-output and memory - the concept of multiprocessing - two new chapters on pipeline and vector processing - two sections devoted completely to the reduced instruction set computer (RISC) - and sample worked-out problems to clarify topics.
1) Computer System Architecture (3rd ed.): This book was phenomenal in my life because it taught me exactly where the hardware meets the software. This book helped me to understand exactly how the hardware fetches, decodes and executes the software on a physical electronic circuit. In fact, I liked this book so much that I implemented the theoretical machine described in the book (called Mano Machine by many) on a Xilinx XC9572 PC84 CPLD Trainer kit. I did not make any assembler or compiler for it, so I had to push DIP switches on the kit to load instructions on a RAM (implemented on another kit) to program the CPU and test it.
2) The C Programming Language (2nd ed.) by Brian Kernighan and Dennis Ritchie: This is the first programming language book that I read cover to cover. It was quite formative in my journey of learning to program the computer.
3) Introduction to Analytic Number Theory by Tom M. Apostol: I found this to be a fascinating textbook on analytic number theory. The book begins with simple properties of divisbility but it then soon introduces several new concepts like the Möbius function, Dirichlet product, the prime number theorem, etc. The book exposes various subtle nuances of the Riemann zeta function with great rigour and thoroughness. A complete analytic proof of the prime number theorem is also presented in this book.
4) Concrete Mathematics: A Foundation for Computer Science (2nd ed.) by Ronald Graham, Donald Knuth, and Oren Patashnik: Great collection of problems that are insightful and entertaining.
5) Gödel, Escher, Bach: an Eternal Golden Braid by Douglas Hofstadter: Not exactly a textbook but it is a very intriguing book with a large assortment of interesting concepts related to formal systems, paradoxes, self-reference, isomorphism, meaning of "meaning", etc. all packaged neatly into a single book.
Morris Mano
At the end of the book, you are able to design the entire computer architecture from humble logic gates.
First off, everyone says Hennessey & Patterson and Patterson & Hennessey and while I think those books are worth reading at some point, for me they concentrate on things that I don’t care about (like what the cutting edge is) and gloss over the finer details of actually how the processor works.
I’ve found that Mano’s Computer System Architecture is great for the higher level stuff. I have the 2nd edition from 1982.
I like Hauck and DeHon’s Reconfigurable Computing from 2007 for FPGAs.
I like Hill and Peterson’s Digital Systems: Hardware Organization and Design from 1973 for describing the design programmatically using an RTL, in this case they use an APL derivative rather than the more recent (and horrible) VHDL or Verilog. This is a dense text and I’m still working my way through but it’s super awesome in my opinion.
I’ve been working through the Visual ARM1 animated transistor-level simulator and have made my way to Bryant’s 1984 paper A Switch-Level Model and Simulator for MOS Digital Systems and recursively reading what I need to understand it thoroughly. I have Mead & Conway on the way.
I also have a copy of Sedra & Smith (2nd Edition) for understanding the actual electrical circuits but I rarely reference it.
https://ocw.mit.edu/courses/electrical-engineering-and-compu...
After that, I don't know, read some deep dives into a modern architecture and look up any terms you don't understand.
See https://github.com/susam/mano-cpu for the VHDL source code that implements the Mano Machine. The file report.pdf contains a description of the work which is mostly a gist of the portions of the book relevant to my implementation of the machine and some additional description of my implementation. I did not make any assembler or compiler for it, so I had to push DIP switches on the kit to load instructions on a RAM (implemented on another kit) to program the CPU and test it.
I recommend this book to anybody who wants to understand the basics of how a CPU is implemented in its hardware form.