Jump to content

IBM 704

From Alfawiki
IBM 704
Company typeComputer system
IndustryComputing
PredecessorIBM 701
Founded1954
FounderJohn Backus, Gene Amdahl
SuccessorIBM 7090
ProductsDigital mainframe computer

The IBM 704 is a substantial digital mainframe computer introduced by IBM in 1954. Engineered by John Backus and Gene Amdahl, it was the first widely manufactured computer to incorporate hardware support for floating-point arithmetic. According to the IBM 704 Manual of operation:

The IBM 704 Electronic Data-Processing Machine is a large-scale, high-speed electronic calculator governed by an internally stored program of the single address type.

During its era, the 704 was considered the premier system for executing intricate mathematical computations. It marked a major architectural leap beyond the earlier IBM 701, doubling instruction length from 18 to 36 bits to align with the memory word size. Notable enhancements included replacing the Williams tube memory with magnetic-core memory, adding floating-point arithmetic instructions, extending addressing capability to 15 bits, and incorporating three index registers. These innovations resulted in a new instruction set incompatible with the 701 but laying the foundation for the "scientific architecture" subgroup within the IBM 700/7000 series.

Capable of performing up to 12,000 floating-point additions per second, IBM manufactured 123 units between 1955 and 1960, primarily targeting scientific and engineering sectors that required rapid computational performance.

Landmarks

The IBM 704 was the original platform for developing programming languages such as FORTRAN and LISP, as well as the SAP assembler—Symbolic Assembly Program, which was later disseminated by SHARE under the name SHARE Assembly Program.

Max Mathews created MUSIC, recognized as the first computer-generated music program, on this machine.

In 1962, Bell Labs physicist John Larry Kelly, Jr. utilized an IBM 704 to synthesize speech, famously reproducing the song Daisy Bell accompanied musically by Max Mathews. This achievement inspired Arthur C. Clarke to feature speech synthesis in his novel and screenplay for 2001: A Space Odyssey, where the HAL 9000 computer sings the same tune. Bell Laboratories subsequently released recordings of speech and music generated through this technique, reportedly employing the IBM 7090, which succeeded the 704 with solid-state technology.

Edward O. Thorp, a mathematics instructor at MIT, leveraged the IBM 704 as a research instrument to develop his blackjack strategy theory, using FORTRAN to construct probabilistic models.

At MIT’s Computation Center, the IBM 704 acted as the official computational device for Smithsonian Astrophysical Observatory’s Operation Moonwatch in 1957. IBM assigned four scientific staff members to assist with satellite orbit computations. The machine also supported Frank Rosenblatt’s development of the Perceptron program at Cornell Aeronautical Laboratory in that same year.

The IBM 704 was employed for flight dynamics calculations related to the U.S. Naval Research Laboratory's Vanguard rocket program.

Los Alamos Scientific Laboratory developed an early resident monitor called SLAM on this system to facilitate batch processing.

Registers

IBM 704 registers
37 36 35 ... 31 ... 23 ... 15 14 ... 07 ... 00 (bit position)
Data registers
AC Accumulator
  MQ Multiplier/Quotient
  SI Sense Indicator
Index registers
  XR1 Index 1
  XR2 Index 2
  XR3 Index 3
Program counter
  PC Program Counter

The IBM 704 incorporated a 38-bit accumulator, a multiplier/quotient register measuring 36 bits, and three separate 15-bit index registers. These index registers—also known as "decrement registers"—function by subtracting their contents from a base address. Instructions include a 3-bit tag field allowing multiple index registers to be selected simultaneously; however, their values are combined using bitwise OR rather than addition before performing decrement operations. This architecture influenced later IBM scientific computers such as the IBM 709 and IBM 7090. When IBM introduced the IBM 7094 in 1962, it featured seven index registers but permitted selection of only one at a time while preserving OR-based behavior for backward compatibility.

Instruction and data formats

The system utilizes two distinct instruction formats: "Type A" and "Type B," with the majority of instructions classified as type B.

Type A instructions are composed of a 3-bit prefix (instruction code), a 15-bit decrement segment, a 3-bit tag portion, and a 15-bit address section. These instructions facilitate conditional branching based on index registers identified by the tag field, with some operations subtracting the decrement value from these registers. Due to design limitations, only six type A instructions were implemented; among them, the STR instruction (code 101) was first introduced on the IBM 709.

In contrast, Type B instructions consist of a 12-bit instruction code—where bits 2 and 3 are zero—a 2-bit flag, four unused bits, a 3-bit tag, and a 15-bit address field.

Regarding data representation, formats include:

  • Binary fixed-point numbers using sign/magnitude notation.
  • Single-precision floating-point numbers that contain a sign bit, an 8-bit exponent encoded in excess-128 form, and a 27-bit fraction.
  • Alphanumeric characters generally encoded in 6-bit BCD, packed six characters per word.

The instruction set partitions data words into prefix, decrement, tag, and address fields, with specific instructions designed to modify individual fields without altering others—although the IBM 704 lacked a Store Tag instruction.

A notable historical point is that the initial Lisp implementation used the address and decrement fields to represent linked list elements. This approach inspired the primitive functions named car and cdr, derived directly from these field names.

Memory and peripherals

The IBM 704 accommodates control for various peripherals: one 711 Punched Card Reader, one 716 Alphabetic Printer, one 721 Punched Card Recorder, five 727 Magnetic Tape Units managed by a single 753 Tape Control Unit, one 733 Magnetic Drum Reader/Recorder, and one 737 Magnetic Core Storage Unit. The entire system has an approximate weight of .

Its operator console is equipped with 36 control switches or buttons alongside 36 data-input switches—each corresponding to a bit in the register—enabling direct binary manipulation of registers. The current register state is displayed via neon lamps. Input was predominantly through punched cards, while output was mainly routed to printers.

An optional feature was the IBM 740 Cathode Ray Tube Output Recorder, which provided a 21-inch vector display with phosphor persistence suited for human observation, complemented by a smaller display with rapid phosphor decay intended for photographic capture.

The 737 Magnetic Core Storage Unit served as the system's RAM, offering storage capacity of 4,096 words at 36 bits each (approximately 18 KB). The five IBM 727 Magnetic Tape Units provided extensive storage capabilities exceeding five million characters per reel when using the standard six-bit character encoding.

Reliability

Compared to its predecessor, the IBM 701, which had an average failure interval of about half an hour, the IBM 704 demonstrated significantly improved reliability. Nonetheless, as it relied on vacuum tube technology, its dependability remained limited by contemporary standards; failures typically occurred roughly every eight hours—comparable to the performance of the Manchester Mark 1 from 1949. This reliability constraint affected early Fortran compilers by limiting the size of compilations that could be completed without interruption due to system faults.

See also

Further reading

External links