The Origins of this Blog
Where did our modern standard computer architecture come from?
Nothing bursts into being fully developed. We always start from a small improvement over what we have now, and it takes time to find our way to a new version that changes everything.
For me, it started with the stack.
Steve Gibson, the host of the Security Now podcast, was doing a series on how computers work. As he explained the stack, and subroutines, he mentioned that the early machines (like the PDP-8 he used) had no stack, and therefore no built-in way to use subroutines. As I recall, he mentioned that programmers had to create their own code to implement a stack in software, and since there was no “JMP” or “JSR” instruction, they had to directly modify the program counter to change the flow of the program.
This caught my interest. First, how did you implement subroutines in a scheme like that? I understand how to build a stack; that’s a common task in programming courses. But I’d never had to build my own system for creating and using subroutines. I wanted to know more about this. What was it like to program a computer before these features existed?
Second, when did the stack appear? That is, what was the first computer to include a stack in its design and hardware?
Third, features like a hardware stack were things that I viewed as so obvious that these questions had never occurred to me. So a larger question was: when and how did the features we’ve all come to just assume all computers will have come to be?
And that is the goal of this blog. To find how the modern computer architecture evolved, and to find the blind alleys, mistakes, and bad ideas that were followed before someone found the “right” way to implement it.
To be honest, I haven’t really figured out the limits of this project. I have a rough time period to explore. Not so far back that a “program” consisted of wires connected via a plugboard (like ENIAC). Not so far forward that many computers shared these features. At a guess, I’d say mid-1950’s to mid 1960’s. It’ll do for a start, but those dates may widen or narrow as I learn more about this history.
And I haven’t quite decided on what list of features comprise what I’ve called the “modern computer architecture”. In 1945, computer archi- tecture looked like this:
At that time, all those boxes were physically distinct parts of the computer. And each had been implemented in a variety of ways. While the audio delay line was a common form of memory, at least one experimental computer used (I’m not kidding) a Slinky(TM) to store about 1,000 bits of information.
So, a lot has changed. But somewhere, over time, we’ve converged into a more or less standard model of what a “computer” is. The path to that is what I’m interested in learning about.
This blog is where I’m going to record my findings. If you have a comment, or feel I’ve made a mistake about something, use the email address listed to share that with me. If you can include references to source material, I’d like that even better. I’m going to list mine, if only so I can find them again.
How often I post will depend on how busy I am IRL. And how the research has gone. I’ve bought a few (old) books covering this era, but that doesn’t mean I’ve had time to read them all the way through. I have had success in the past by taking a question, using that to guide my learning, but not keeping too narrow a view of the path to the goal. The question keeps me moving forward, but I meander side to side or even divert into a sort of “side quest” as way to keep my learning general enough to cover the whole subject.
Thanks for reading!
The.Weaver (at) WovenMemories.net.