IBM 709

From Wikipedia, the free encyclopedia
Jump to: navigation, search
IBM 709 front panel at the Computer History Museum

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.[1]

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 709 was built using vacuum tubes. IBM introduced a transistorized version of the 709, called the IBM 7090, in November 1959.

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. 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.[2]p. 12

Instruction and data formats[edit]

There were five instruction formats, referred to as Types A, B,C, D and E.[2] Most instructions were of type B.[3]

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.

I/O channel[edit]

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.

See also[edit]


  1. ^ IBM 709 at Columbia University history page
  2. ^ a b IBM 709 Reference Manual, Form A22-6501-0, 1958
  3. ^ John Savard. "From the IBM 704 to the IBM 7094". Retrieved 2009-11-15. 

External links[edit]