Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!rutgers!rochester!PT!k.gp.cs.cmu.edu!lindsay From: lindsay@k.gp.cs.cmu.edu (Donald Lindsay) Newsgroups: comp.arch Subject: The 360 was a design landmark (long) Message-ID: <1193@k.gp.cs.cmu.edu> Date: Sun, 23-Aug-87 23:17:46 EDT Article-I.D.: k.1193 Posted: Sun Aug 23 23:17:46 1987 Date-Received: Mon, 24-Aug-87 04:18:10 EDT References: <855@tjalk.cs.vu.nl> <2683@hoptoad.uucp> <916@haddock.ISC.COM> <1035@bsu-cs.UUCP> <26312@sun.uucp> <1044@bsu-cs.UUCP> Organization: Carnegie-Mellon University, CS/RI Lines: 67 THe discussion to date is typified by the uninformed statement: >Yes, I did mean 12-bit offsets, and they can be a nuisance and not an >insuperable problem, and may (or may not) have made sense given the >design contraints of the day. The 360 quite simply made everything that came before, obsolete. It had an unthinkably big address space ( I was there: I didn't think it). It had a genuine interrupt structure - look at the CDC 6600, whose PPUs couldn't get the big guy's attention. It had byte addressability. It had the most orthogonal instruction set to date. It had general registers, without silly special-casing all over the place. It didn't have silly holes in its instruction repertoire ( unlike a machine I won't name, that didn't have subtract, or two's complement, so you did A-B as load B, one's complement,increment,add A I kid you not). It had two sizes of floating point. It was the first family: before that, switching CPUs *always* meant switching instruction sets, and switching disks, and even printers, and cables. The 360 family offered printers (etc) that attached to all (well, sometimes, most) of the family. A breathtaking concept ! I could go on. It was not unflawed, but by comparison, the competiton had leprosy. The mistakes are well known, and have not been mentioned by this group. One mistake was in the floating format. It was field-updated, free. Another mistake was the floating roundoff (nibble, not bit). Gene Amdahl hoped to reduce hardware complexity, but mostly made it hard to determine the arithmetic error of various computations. Another mistake was in not introducing limit registers, or some other primitive variant of virtual memory. (Univac had limit registers.) They thought of it at the time, and decided that they were already stretching the company to the breaking point. (They were designing all the family members, and all the other components, at once.) Well, hindsight is so 20-20. Another mistake was in not having a conditional branch instruction that was PC-relative. I don't happen to know if competitors had this at that time. If not, then IBM should have retrofitted it when the idea did come up. The reason: bad code density vs. more recent machines. This single change would have made 15%-25% difference to certain popular applications. Another mistake was that when you loaded an address, the top 8 bits weren't cleared. I don't know if this was a feature or an oversight (at the time). When the architecture was about 16 years old, it became a serious problem. That's a long time. ASCII was a bad choice because all of their customers had committment to other codes. (By committent, I mean card readers and sorters: terminals hadn't been invented.) The fact that ASCII was mentioned in the Priniciples of Operation manual, showed their progressiveness. (THEY owned the card equipment market.) As for stacks: you can simulate them just fine. I refer doubters to the RISC literature, which proposes simple machines, where you simulate what you want. In fact, the 360 is something of a RISC machine by latter standards. As for 12 bit offsets: this was an innovation that increased code density. The idea was that you didn't have to deal in full-size addresses: when fewer bits would do, you could use 12 ! You don't have to use them (unlike the 8086's 64K segments). The VAX carried this same idea further. To reiterate, it changed the world, for the better. Be kind. -- Don lindsay@k.gp.cs.cmu.edu CMU Computer Science