[Herewith an appearance by a guest author, name of John Fowler; explanation
in the coda at the end].
I attended the IBM 360 40yr Anniversary at the Computer History Museum in Mountainview, California. I'm on their mailing list and went there for the sole purpose of finding out: what the heck were they thinking with the use of 24 bit addressing in base registers that were 32 bits wide?
I’m going to date myself here, but during a formative stage of my life I was obsessed with IBM 360 assembly language programming (I had access to a 370/155). One of the things you did was to declare a base register (usually R12) with the USING directive into which you loaded a program offset pointer (usually your start address, unless your program was big). The contents of this base register was added to the relative location of memory addresses for load, stores, and branches to yield the true machine location. The base register was a really common cause of crashes — like, if you corrupted it by using an instruction with register 11 that used adjacent registers then you were toast the next time you did a load/store or branch to a memory relative point.
As if that wasn’t bad enough for some reason only 24 bits of the register were used for the base addressing. The other 8 bits you could use for whatever — which, since register space was valuable and the register-register instructions the most efficient, everybody did. In spades. So I along with everyone else would use those 8 bits for flags and whatnot. Which increased the risks exponentially, since if you dorked up your Insert Character (IC) or Exclusive Or (XR) code to twiddle these bits you killed your address offset. Endless hours were spent debugging these problems, as they manifest themselves by either branching to a very bad place (pretty easy to figure out), or by doing a load/store to a very bad place (often, a total bitch to find).
So I get this invitation to hear the original engineers speak on the IBM 360 project and decide to go, because by god I’m going to find out who invented that silly 24 bit scheme. I wasn’t successful, none of the IBM engineers I cornered could explain it, except to chuckle, and I didn’t get close to the big cheeses. But I learned a bunch of other interesting things, which really explained my fascination with the IBM 360, a system that completely revolutionized the computing industry and whose impact is felt to this very day.
The short form of the story is that in the latter 50s IBM was getting their clocks cleaned by a host of people like Honeywell. They ended up cancelling 8 different product lines and spending $5 billion dollars (1960 dollars!) gambling on the System/360 in a complete bet-the-ranch move. The project manager named a relatively young but bright engineer named Fred Brooks Jr as the architectural lead, they announced in 1964, struggled in 1965, and then completely transformed computing.
Fred Brooks Jr really coined the notion of a computer architecture that spans a product line and has contributions too long to reasonably list. He also is the author of The Mythical Man Month, which after 30+ years still stands as an excellent piece of work. He was the best speaker of the group, really really sharp.
Ok, let me touch on some of the cool things about the 360, all of which were new at the time, and all of which we take for granted today.
Compatibility: this was the first time there was a computer product line that offered compatability for software all the way across from the smallest to the largest. This was a huge effort, a new idea, and the speakers singled this out as a huge factor in the success of the product. Apparently, binary code compiled in 1965 will run on the zSeries mainframes today. Yikes!
8-bit Bytes: I’m not sure if this where the term “byte” was formed, but prior to this computers were more commonly 6 bits. The 360 team started with 6 bits, and then changed to 8 bits during design. This had huge cascading effects through all of computing that exist today in design of systems, software, and I/O.
Standard I/O: the 360 introduced documented hardware and software interfaces for I/O (channels) such that you had all sorts of flexibility in terms of how you attached devices to the system. Also, this permitted independant development of devices by both other IBM groups and by outside companies.
Emulator: IBM had other products, such as the 70x0 family. They came up with the idea of an emulator which allowed you to run the software compiled for the 70x0 family on the 360, greatly reducing customer issues. New idea, up until now people routinely re-wrote software for different computers.
Microcode: IBM introduced the idea of field reprogrammability of the hardware.
Software: the operating system was full of innovations such as device independant I/O, an entirely new concept. But they also put together telecommunications software with 6 high level languages — completely unheard of at the time, giving a huge capability to the system. Plus, it was reliable.
At the end of all this — the combination of computer architecture and software created such a compelling design that it influenced basically everything after it; from a business standpoint it revolutionized travel management, finance, science, and just about every vertical segment. Today, you can’t help but look at any computer that you use and see roots in the System/360.
One interesting side topic that Fred jumped into was what he called the Disaster of Success. What he said was that the unbelievable success of the System/360 caused IBM to completely miss the minicomputer revolution. Sound familiar?
They gave out green cards to every attendee. If you know what I’m talking about, you know how symbolically important this is. I still have mine from a long time ago. I grabbed a bunch more.
Anyway, I also highly recommend a visit to the Computer History Museum. You can see an incredible array of hardware and get it explained by very knowledgable docents. PDP-whatever, ETA-10, CDC-1600, Gandalf,... the list goes on and on. It’s fascinating. They do have a 360 there in pristine condition. The load address switches are not set properly — they should be either set to 280, which is conventionally the first tape drive, or 140, the first disk. If you haven’t ever had the opportunity to sit at that big console and press the blue IPL button and see the registers light ... you just haven’t lived.....
Guest Author? · Fowler, btw, is the guy who hired me into Sun. What happened was, there are a lot of internal blogs here, and when this thing got published on John’s, lots of people said “hey, you need an external blog for that kind of stuff.” Starting now, I’m going to, now and again, fish good stuff off the internal blogs and publish it here.