The IBM 709 was an early computer system introduced by IBM in August 1958. It was an improved version of the IBM 704 and the second member of the IBM 700/7000 series of scientific computers. The improvements included overlapped input/output, indirect addressing, and three "convert" instructions which provided support for decimal arithmetic, leading zero suppression, and several other operations. The 709 had 32,768 words of 36-bit memory and could execute 42,000 add or subtract instructions per second. It could multiply two 36-bit integers at a rate of 5000 per second.
An optional hardware emulator executed legacy IBM 704 programs on the IBM 709. This was the first commercially available emulator prior to 1960. Registers and most 704 instructions were emulated in 709 hardware. Complex 704 instructions such as floating point trap and input-output routines were emulated in 709 software.
The FORTRAN Assembly Program was first introduced for the 709.
The IBM 709 had a 38 bit accumulator, a 36 bit multiplier quotient register, and three 15 bit index registers whose contents were subtracted from the base address instead of being added to it. Addition could be performed using two's complement arithmetic and instructions were provided for this purpose. All three index registers could participate in an instruction: the 3 bit tag field in the instruction was a bit map specifying which of the registers would participate in the operation, however if more than one index register was specified, their contents were combined by a logical or operation, not addition.p. 12
Instruction and data formats
Type A instructions had, in sequence, a three bit prefix (instruction code), a 15 bit decrement field, a 3 bit tag field, and a 15 bit address field. They were conditional jump operations based on the values in the decrement registers specified in the tag field. Some also subtracted the decrement field from the contents of the index registers. The implementation required that the second two bits of the instruction code be non-zero, giving a total of six possible type A instructions. One (STR, instruction code binary 101) was not implemented until the IBM 709.
Type B instructions had, in sequence, a 12 bit instruction code (with the second and third bits set to 0 to distinguish them from type A instructions), a two bit flag field, four unused bits, a 3 bit tag field, and a 15 bit address field.
Types C, D and E were used for specialized instructions.
- Fixed point numbers were stored in binary sign/magnitude format.
- Single precision floating point numbers had a magnitude sign, an 8-bit excess-128 exponent and a 29 bit mantissa
- Alphanumeric characters were 6-bit BCD, packed six to a word.
The instruction set implicitly subdivided the data format into the same fields as type A instructions: prefix, decrement, tag and address. Instructions existed to modify each of these fields in a data word without changing the remainder of the word.
The primary improvements of the 709 over the previous 704 involved more magnetic core memory and apparently the first use of independent I/O channels. Whereas I/O on 704 was a programmed function of the central processor - data words were transferred to or from the I/O register, one at a time, using a "copy" instruction - the 709 came with the IBM-766 Data Synchronizer, which provided two independently "programmed" I/O channels. Up to three Data Synchronizers could be attached to a 709, each able to control up to 20 tape drives and a card-reader/punch/printer set. This allowed six times as many I/O devices on 709, and allowed I/O to proceed on multiple devices while program execution continued in parallel.
The IBM-738 Magnetic Core Storage used on 709 was also a milestone of hybrid technology. Although the core array drivers were all vacuum tube, the read sense amplifiers were a very early use of transistors in computing.
- 709 Data Processing System IBM history
- IBM 709 Data Processing System BRL report, with photos
- IBM 709 page at Columbia University, with photos.