Sunday, October 08, 2006

My third computer: The Bendix G-20

In 1962, during my second summer internship at Bendix Computer Division, in addition to my regular assignment [1], I was given the opportunity to spend my spare cycles writing a Bendix G-20 program for something that interested my boss. [2] Since I didn't work with it for long, my memories of the G-20 are less vivid than for some other computers. [3] Mainly what I remember are some of the differences from the Bendix G-15.

The G-15 was a physically small and relatively inexpensive ($50K) first-generation computer, using vacuum tubes for its logic circuitry, and a magnetic drum for its primary memory. At the time, the G-20 could hardly have been more different: It was a physically large and relatively expensive ($500K) second-generation computer, using transistorized logic [4] and magnetic core memory. Its instruction set architecture was closer to Intercom than to the G-15's ISA. It was a classic example of the second system effect.

Memory: It seemed big and fast to me. A minimum of 4K, and a maximum of 32K, 32-bit words (16-128KB), compared with 2K 29-bit words on the G-15. The memory was random access, and any location could be loaded or stored in just 8 microseconds (us). Each memory word also had a single parity bit for error-checking.

Arithmetic: All floating point, with a 42-bit mantissa and an 18-bit (octal) exponent. (There was provision for loading and storing single words in scaled fixed point.) Operations were 42-bit-parallel, rather than bit-serial. Excluding memory access time, addition took 13 us, multiplication took 56 us, and division took 98 us.

Instructions: Straightforward single-address instructions with a single floating-point accumulator. 7-bit operation code, 6-bit index register field, 15-bit base address, 2-bit mode, and 2 flags.

Addressing: Single 15-bit linear address space [5]. There were four addressing modes, which I believe were
  • Immediate: The operand was the value of the address field.
  • Direct: The operand was the value whose location was given by the address field.
  • Indirect: The operand was the value whose location was given by the value whose location was given by the address field.
  • Doubly indirect: The operand was the value whose location was given by the value whose location was given by the value whose location was given by the address field.
Indexing: 63 index registers, the most I can recall on any machine I've used. [6] However, index registers were stored in main memory, locations 1-63. This meant that indexing an instruction added 8 us to its execution time. However, there was a convenient instruction to get the value of an index register, increment it, compare it to a limit, and store the new value back--all in one 8 us memory cycle.

Operand assembly: It would have been a waste to use the 42-bit accumulator and its floating point operations to do address calculations--and inefficient to save and restore the accumulator to do so. The G-20 had a separate operand assembly register (OA) for address calculations, something I've not seen in any other machine architecture. Addressing proceeded as above, except that the contents of OA were added to the 15-bit base address from the instruction before any indexing or indirection was done. There was a special class of instructions that did not affect the accumulator, but left their results in OA, instead. Normal instructions cleared OA before the next instruction.

Interrupts: There was a fairly conventional interrupt system, that could be triggered by internal conditions (e.g., memory parity errors) or external conditions (e.g., completion of I/O). There was a mask register that determined which interrupts were enabled. Occurrence of an interrupt caused an instruction (normally a branch) in the interrupt vector to be executed.

Breakpoints: The G-15 reserved one bit in instructions for breakpoints. The G-20 reserved two bits in every word for flags that could be used to generate breakpoints. There were six bits in the mask register, that determined whether the presence of bit 31 or bit 30 would trigger an interrupt when the location was accessed to execute an instruction, to load a value, or to store a value.

Staff: For 24-hour operation, Bendix recommended a staff of 35: 3 supervisors, 5 analysts, 10 programmers, 12 coders, 1 clerk, 3 operators, and an input-output operator.

Software: There was a symbolic assembler, SNAP, the first I had ever used. RAM meant that the programmer no longer had to specify carefully where each instruction and variable was stored. An operating system and an Algol compiler were being prepared, but not ready for use that summer.

Some experienced Bendix programmers grumbled that the G-20 was "no fun" to program, because the hardware had taken over all the interesting work, like indexing and floating point. This was a fairly natural reaction to a machine making hard-earned skills obsolete.

The Bendix G-20 is probably best-known today as Carnegie's first mainframe computer, which became the core of their G-21 system.

[Other Sources]

[1] Writing the Bendix G-15 CPM/PERT program.
[2] The Quine-McCluskey algorithm for simplifying Boolean functions; the program handled functions of up to 15 variables, storing intermediate results on magnetic tape.
[3] I would love to be able to download files from the Charles Babbage Institute.
[4] About 5K transistors.
[5] Virtual memory was still in the future in 1962, at least for American computers.
[6] As happens so often with an "infinite" resource, I managed to specify more than 63 index registers in my first program.


Comment by Anonymous Anonymous:

What's the difference between "programmer" and "coder"?

11:09 AM  
Comment by Blogger Jim Horning:

@ Anonymous:

This terminology was taken directly from a contemporary report. I don't recall that the people I worked with at the time made this distinction, but it could be that those who worked in higher-level languages, such as Algol, were considered programmers, and those who worked in assembly language were considered coders.

Any other old-timers out there who can shed light on this?

11:22 AM  

Post a Comment

<< The Way It Was home