During my engineering studies days, I studied the book "Computer System Architecture (3rd ed.)" written by M. Morris Mano. 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.<p>See <a href="https://github.com/susam/mano-cpu" rel="nofollow">https://github.com/susam/mano-cpu</a> 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.<p>I recommend this book to anybody who wants to understand the basics of how a CPU is implemented in its hardware form.