Microprocessors
Last weekend I started reading a book I found in the lab titled “Microprocessors” by Rodnay Zaks. I picked it up sort of randomly to have something to flip-through during reading time. However, after reading the introduction I was excited by the premise of the book:
“Microprocessors, and other LSI chips, have made system design so simple that no significant scientific or electronic training is required.”
I’ve studied these topics for most of my life, but this time I’m comprehending the microcomputer at a much more elementary level. I was familiar with the abstract idea of things like the accumulator, program counter, stack pointer, etc. but reading this book, at this point in my life, is giving me a “signals-level” understanding of how these things actually work. The closest I had come before was writing assembly language programs out of necessity for 8-bit Commodore and Apple computers. This gave me the experience of working with sub-CPU constructs like opcodes and registers, but I didn’t really have to understand them to get work done. I was still strictly in the world of software (even if I sometimes needed a schematic to understand exactly what my software was doing). What I’m getting from this book is something entirely different. The first few chapters dive into the low-level operations inside the CPU, and how these internal components directly relate to the signals which appear on the CPU’s pins. It’s important to understand that this book was written in a time when microprocessors (and personal computers in general) were an embryonic technology. This perspective conveys the information as not doctrine, but as something that is evolving. It’s also coming from a place where the CPU has only just proven itself as a practical product, so the book doesn’t start at the CPU, the CPU is the destination, the current “state of the art”, and the book is not ashamed to discuss the CPU’s humble origins (and related design failures) as essentially a desktop calculator part. I’ll pause for a moment to note that even way back then (1979), Intel processors were making design compromises to preserve backward compatibility, with a calculator chip. Equipped with this more intimate understanding of the microcomputer, reading this book has reinvigorated my desire to build one of my own design. Today there is a lot of discussion of building computers, but few of them take an approach that is literally from the “chips up”, and those that do usually involve a lot of “system on a chip” business. I’m not criticizing this per se (in fact, it makes a lot of sense), but to me there is something very romantic about designing a and building a computer from something as primitive as these early processors, or perhaps even designing the processor itself. Until about half-way through the book I was getting really excited about the idea of designing & building my own computer using what I’ve learned so far. I might still do this, but after reading the rest of the book and learning about how, from their very origin microprocessors have a legacy of compromise, I’ve lost a lot of enthusiasm for working with them. The whole experience has reinvigorated my interest in high-performance computer architectures, and drove me to take another look at my Parallella board. I’ll be writing about the results of that adventure in the near future.