My second computer: The Bendix G-15
After I wrote my first few programs for Intercom 1000, the other students frequenting the DPL made it very clear that Real Programmers wrote machine code [1, 2]. By this, they meant instructions for the hardware that ran the Intercom interpreters, the Bendix G-15D computer. [3, 4]
The G-15's instruction set architecture was almost the antithesis of Intercom 1000's ISA. It was the reduced instruction set approach taken to an extreme [5]. "2.5 address" instructions. ("The modified type of two-address code is unusual and difficult to classify.") Two-bit operation codes. No index registers. No floating point. I/O in hexadecimal. All the reference material a working programmer needed condensed on two sides of a 3" x 6" Reference Card [6].
There were three basic reasons to write machine code:
1) Speed. Peak instruction rate was 1,800 instructions per second (or up to 3,600 fixed point additions), compared to Intercom's peak of 30 IPS. Of course, these peak rates were only achieved under very special circumstances, but a good programmer could obtain a substantial speedup in machine code.
2) Space. An Intercom interpreter occupied about half the G-15's 63,307 bits (just under 8 KB) of program-addressable memory. Programmers wanted all of it.
3) Difficulty. The difference between the results achieved by good programmers and great programmers was dramatic, and mediocre programmers couldn't hack machine code at all. None of this "learn it in four hours" nonsense. Any program you can write, I can improve.
The G-15's primary designer was Prof. Harry Huskey, who had just returned from a sabbatical in England, where he worked on the Pilot Ace with Alan Turing. The G-15 embodies a lot of Turing's ideas. Brian Randell and I found it has some remarkable similarities to the Deuce computer, another Ace successor.
There were lots of interesting facets to G-15 programming that I will comment on in separate posts. Here I will summarize some of the basic properties of the hardware.
The G-15 was a remarkably physically small computer, perhaps the smallest commercially available electronic digital computer of its time. It was usually described as "refrigerator sized," with a basic system comprising a 3' x 3' x 5' cabinet [7], plus a modified IBM electric typewriter for input/output. It weighed 1,500 pounds and drew 3 KW of power. [8] This small size was a consequence of the simplicity of its logic (implemented with 450 vacuum tubes plus 3,000 germanium diodes [9]) and its use of a small magnetic drum [10] (rather than, e.g., mercury delay lines) for its memory.
In addition to its ISA, a significant contributor to the G-15's hardware simplicity was its use of bit-serial two's-complement arithmetic. Instead of adding numbers a word (28 bits plus sign), or a decimal digit, at a time, it operated on them one bit at a time, combining single bits from two sources with a possible carry bit, immediately writing the result bit to the destination and setting the carry bit for the next "bit time" [11]. Computation speed required a high bit rate, and the G-15 operated with a fast-for-the-time 105 KHz clock. The time units programmers thought in were the word time, 275 microseconds, and the drum cycle time, 29 milliseconds.
An unusual feature was that the buffered input/output system operated concurrently with computation. A program could place up to 108 words in the buffer, start I/O, and resume computation, later testing or waiting for ready if it needed to determine completion or to initiate another I/O operation. In addition to typewriter I/O at up to 10 hexadecimal characters [12] per second, the basic system was equipped with a 500 cps photoelectric paper tape reader and a 17 cps paper tape punch.
What we would today call the memory hierarchy consisted of a single one-word accumulator, three double-precision registers (which naturally required two word times to access, and were also used for multiplication and division), a cache of four four-word lines, a main memory of twenty 108-word lines, and paper tape as the backing store.
Optional peripherals included adaptors for magnetic tape drives [13], card readers and punches, faster paper tape readers, graphical plotters, and, perhaps most unusually, a digital differential analyzer, which provided hardware support for numerical solution of differential equations, with 54 integrators and 54 constant multipliers.
About 400 G-15s were eventually manufactured and sold. Significantly fewer than IBM 650s, but enough to make it one of the most widespread computers of the early 1960s. Due to its broader distribution, some people consider it stronger claiment than the IBM 610 for the title of "the first commercially viable personal computer."
[Other Sources]
Notes:
[1] The term microcode was not yet widely used.
[2] With exceptions for quick-and-dirty programs, and programs that were floating-point intensive.
[3] We always called it the G-15, but there had been an early version that was labeled G-15A.
[4] See Ed Thelen's site for much historical information, and particularly his scanned-in Ballistic Research Laboraties Report No. 1115 on Domestic Electronic Digital Computers, March 1961, for quite a lot of interesting historical information. The Computer History Museum has an earlier BRL report, no. 971, December 1955, with a section on the G-15. The BRL reports are the source for a lot of the information I give about the G-15, but since the information for the later report was collected from users, rather than manufacturers, it is neither authoritative nor entirely consistent. Where there are discrepancies, I have tended to use the figures that correspond most closely with my memories.
[5] Although the terms RISC and CISC had not yet been coined.
[6] But advanced programmers could and did study the logic diagrams of the hardware to take advantage of unintended features.
[7] Home refrigerators have gotten larger as computers have gotten smaller.
[8] It was air-cooled and did not officially require air conditioning. However, the DPL had an exhaust vent (like those above many kitchen ranges) to suck hot air outside, and also had what was probably the only window air conditioner on the PUC campus.
[9] Compare to the contemporary (and comparably powerful) IBM 650 with 2,000 tubes and 5,000 diodes. And to the 230 million transistors in a recent Pentium D chip.
[10] Possibly reflecting its delay-line heritage, data was read and rewritten on each drum revolution, rather than being stored permanently, as in modern magnetic disks.
[11] Efficient carry propagation required that numbers be stored and read least significant bit first.
[12] The six non-decimal digits were u, v, w, x, y, and z. To this day, I find it easier to recall the underlying bit pattern for, say, x, than for D.
[13] A real improvement over paper tape as backing store. Not dramatically faster to read, but much faster to write, and it could be rewritten, and didn't have to be moved by hand from punch to reader.
The G-15's instruction set architecture was almost the antithesis of Intercom 1000's ISA. It was the reduced instruction set approach taken to an extreme [5]. "2.5 address" instructions. ("The modified type of two-address code is unusual and difficult to classify.") Two-bit operation codes. No index registers. No floating point. I/O in hexadecimal. All the reference material a working programmer needed condensed on two sides of a 3" x 6" Reference Card [6].
There were three basic reasons to write machine code:
1) Speed. Peak instruction rate was 1,800 instructions per second (or up to 3,600 fixed point additions), compared to Intercom's peak of 30 IPS. Of course, these peak rates were only achieved under very special circumstances, but a good programmer could obtain a substantial speedup in machine code.
2) Space. An Intercom interpreter occupied about half the G-15's 63,307 bits (just under 8 KB) of program-addressable memory. Programmers wanted all of it.
3) Difficulty. The difference between the results achieved by good programmers and great programmers was dramatic, and mediocre programmers couldn't hack machine code at all. None of this "learn it in four hours" nonsense. Any program you can write, I can improve.
The G-15's primary designer was Prof. Harry Huskey, who had just returned from a sabbatical in England, where he worked on the Pilot Ace with Alan Turing. The G-15 embodies a lot of Turing's ideas. Brian Randell and I found it has some remarkable similarities to the Deuce computer, another Ace successor.
There were lots of interesting facets to G-15 programming that I will comment on in separate posts. Here I will summarize some of the basic properties of the hardware.
The G-15 was a remarkably physically small computer, perhaps the smallest commercially available electronic digital computer of its time. It was usually described as "refrigerator sized," with a basic system comprising a 3' x 3' x 5' cabinet [7], plus a modified IBM electric typewriter for input/output. It weighed 1,500 pounds and drew 3 KW of power. [8] This small size was a consequence of the simplicity of its logic (implemented with 450 vacuum tubes plus 3,000 germanium diodes [9]) and its use of a small magnetic drum [10] (rather than, e.g., mercury delay lines) for its memory.
In addition to its ISA, a significant contributor to the G-15's hardware simplicity was its use of bit-serial two's-complement arithmetic. Instead of adding numbers a word (28 bits plus sign), or a decimal digit, at a time, it operated on them one bit at a time, combining single bits from two sources with a possible carry bit, immediately writing the result bit to the destination and setting the carry bit for the next "bit time" [11]. Computation speed required a high bit rate, and the G-15 operated with a fast-for-the-time 105 KHz clock. The time units programmers thought in were the word time, 275 microseconds, and the drum cycle time, 29 milliseconds.
An unusual feature was that the buffered input/output system operated concurrently with computation. A program could place up to 108 words in the buffer, start I/O, and resume computation, later testing or waiting for ready if it needed to determine completion or to initiate another I/O operation. In addition to typewriter I/O at up to 10 hexadecimal characters [12] per second, the basic system was equipped with a 500 cps photoelectric paper tape reader and a 17 cps paper tape punch.
What we would today call the memory hierarchy consisted of a single one-word accumulator, three double-precision registers (which naturally required two word times to access, and were also used for multiplication and division), a cache of four four-word lines, a main memory of twenty 108-word lines, and paper tape as the backing store.
Optional peripherals included adaptors for magnetic tape drives [13], card readers and punches, faster paper tape readers, graphical plotters, and, perhaps most unusually, a digital differential analyzer, which provided hardware support for numerical solution of differential equations, with 54 integrators and 54 constant multipliers.
About 400 G-15s were eventually manufactured and sold. Significantly fewer than IBM 650s, but enough to make it one of the most widespread computers of the early 1960s. Due to its broader distribution, some people consider it stronger claiment than the IBM 610 for the title of "the first commercially viable personal computer."
Notes:
[1] The term microcode was not yet widely used.
[2] With exceptions for quick-and-dirty programs, and programs that were floating-point intensive.
[3] We always called it the G-15, but there had been an early version that was labeled G-15A.
[4] See Ed Thelen's site for much historical information, and particularly his scanned-in Ballistic Research Laboraties Report No. 1115 on Domestic Electronic Digital Computers, March 1961, for quite a lot of interesting historical information. The Computer History Museum has an earlier BRL report, no. 971, December 1955, with a section on the G-15. The BRL reports are the source for a lot of the information I give about the G-15, but since the information for the later report was collected from users, rather than manufacturers, it is neither authoritative nor entirely consistent. Where there are discrepancies, I have tended to use the figures that correspond most closely with my memories.
[5] Although the terms RISC and CISC had not yet been coined.
[6] But advanced programmers could and did study the logic diagrams of the hardware to take advantage of unintended features.
[7] Home refrigerators have gotten larger as computers have gotten smaller.
[8] It was air-cooled and did not officially require air conditioning. However, the DPL had an exhaust vent (like those above many kitchen ranges) to suck hot air outside, and also had what was probably the only window air conditioner on the PUC campus.
[9] Compare to the contemporary (and comparably powerful) IBM 650 with 2,000 tubes and 5,000 diodes. And to the 230 million transistors in a recent Pentium D chip.
[10] Possibly reflecting its delay-line heritage, data was read and rewritten on each drum revolution, rather than being stored permanently, as in modern magnetic disks.
[11] Efficient carry propagation required that numbers be stored and read least significant bit first.
[12] The six non-decimal digits were u, v, w, x, y, and z. To this day, I find it easier to recall the underlying bit pattern for, say, x, than for D.
[13] A real improvement over paper tape as backing store. Not dramatically faster to read, but much faster to write, and it could be rewritten, and didn't have to be moved by hand from punch to reader.