A while ago I told a colleague at work that I build a custom CPU in my free time. His first question was – how come I still have free time? Considering our type of work, this was the most obvious first question to ask – currently I can only spendfew hours each weekend to work on this project, and this is the primary reason why things have been so slow. But this is not the point here. He also asked me how I know how to build a CPU, not being an engineer. In my case, I got part of the knowledge from Internet resources (see my links page) but mostly from a couple of good and well known books. I have gathered quite a nice bookshelf since I started the project. Below is my recommended reading to get started with computer homebrewing.
M. Morris Mano, Charles Kime. Logic and Computer Design Fundamentals (4th Edition). Prentice Hall, 2007
It is a very good textbook on digital electronics and computer design. Needless to say, when I started reading it, I did not know what a multiplexer or priority encoder was. The book starts from simple concepts (basic logic gates) and continues through more advanced devices and designs to full chapters about CPU design, memory management, I/O and alike. Highly recommended item – thorough reading gave my project a real jump-start.
David A. Patterson, John L. Hennessy. Computer Organization and Design (4th Edition). Morgan Kaufmann, 2008
Mano/Kime book is more about logic design and applies these concepts to computer design. This book is mostly about computer design andassumes you already have some background in digital electronics. Still, it was a very good reading, although I skipped some chapters which I considered less relevant for my study (or I knew the subject from Mano/Kime).
Albert P. Malvino, Jerald A. Brown. Digital Computer Electronics (3rd edition). Career Education, 1992
I bought it used from Amazon when I was already designing my CPU and probably that’s because I never got to read it in its entirety (I only reviewed some chapters). However, it is valued by other homebrew computer freaks.
Stan Gibilisco. Teach Yourself Electricity and Electronics (4th Edition). McGraw-Hill/TAB Electronics, 2006
This may be a first reading on electronics for a wannabe electrical engineer like myself. It covers electrical phenomena and basic circuit theory in simple, understandable manner and is intended for people with little or zero knowledge of the subject (again, like myself). It is not really a college textbook but I consider it very valuable.
Paul Horowitz, Winfield Hill. The Art of Electronics (2nd Edition). Cambridge University Press, 1989
Not so recent, but excellent position on general electronics (analog and digital) for ordinary mortals. This 1125-page beauty is a brilliant reference for college students, self students and engineers. Extremely comprehensive, but it reads like a novel. My personal favorite. I bought it used on Amazon in excellent condition – it is worth every penny.
David R. Hanson, Christopher W. Fraser. A Retargetable C Compiler: Design and Implementation. Addison-Wesley Professional, 1995
Reading this one is still on my TODO list. When I finally complete construction, I will need to think about a C compiler. The most obvious solution that comes to my mind is to retarget a retargetable compiler, like LCC. LCC is free, it has been retargeted to multiple platforms, and it has a book.
Andrew S. Tanenbaum, Albert S. Woodhull. Operating Systems Design and Implementation (3rd Edition). Prentice Hall, 2006
It is yet another book on my task list, still sitting on the shelf for future reading. I think this one requires no recommendation – it plays in its own league. Better known as ‘The MINIX book’ it introduces the reader into the world of operating systems, particularly MINIX – an open source, educational Unix clone. If I ever get to the point when I decide to port a real-time, multi-user OS to my CPU, MINIX will most probably be the way to go.