The IBM 704 is a large digital mainframe computer introduced by IBM in 1954. It was the first mass-produced computer with hardware for floating-point arithmetic. The IBM 704 Manual of operation states: The type 704 Electronic Data-Processing Machine is a large-scale, high-speed electronic calculator controlled by an internally stored program of the single address type.
The 704 at that time was thus regarded as "pretty much the only computer that could handle complex math". The 704 was a significant improvement over the earlier IBM 701 in terms of architecture and implementation. Like the 701, the 704 uses vacuum-tube logic circuitry, but increased the instruction size from 18 bits to 36 bits, the same as the memory's word size. Changes from the 701 include the use of magnetic-core memory instead of Williams tubes, floating-point arithmetic instructions, 15-bit addressing and the addition of three index registers. To support these new features, the instructions were expanded to use the full 36-bit word. The new instruction set, which is not compatible with the 701, became the base for the "scientific architecture" subclass of the IBM 700/7000 series computers.
The 704 can execute up to 12,000 floating-point additions per second. IBM produced 123 type 704 systems between 1955 and 1960.
Landmarks
The programming languages FORTRAN and LISP were first developed for the 704, as was the SAP assembler—Symbolic Assembly Program, later distributed by SHARE as SHARE Assembly Program.
MUSIC, the first computer music program, was developed on the IBM 704 by Max Mathews.
In 1962, physicist John Larry Kelly, Jr. created one of the most famous moments in the history of Bell Labs by using an IBM 704 computer to synthesize speech. Kelly's voice recorder synthesizer vocoder recreated the song Daisy Bell, with musical accompaniment from Max Mathews. Arthur C. Clarke was coincidentally visiting friend and colleague John Pierce at the Bell Labs Murray Hill facility at the time of this speech synthesis demonstration, and Clarke was so impressed that six years later he used it in the climactic scene of his novel and screenplay for 2001: A Space Odyssey, where the HAL 9000 computer sings the same song. (Bell Laboratories later released a recording, on ten inch 78-RPM records, of speech and music created this way. It was apparently made with an IBM 7090, the solid-state successor to the 704.)
Edward O. Thorp, a math instructor at MIT, used the IBM 704 as a research tool to investigate the probabilities of winning while developing his blackjack gaming theory. He used FORTRAN to formulate the equations of his research model.
The IBM 704 at the MIT Computation Center was used as the official tracker for the Smithsonian Astrophysical Observatory Operation Moonwatch in the fall of 1957. IBM provided four staff scientists to aid Smithsonian Astrophysical Observatory scientists and mathematicians in the calculation of satellite orbits: Dr. Giampiero Rossoni, Dr. John Greenstadt, Thomas Apple and Richard Hatch.
The IBM 704 was used for flight dynamics analyses of the NRL's Vanguard rockets.
The Los Alamos Scientific Laboratory (LASL) developed an early monitor named SLAM to enable batch processing.
Registers
The IBM 704 has a 38-bit accumulator, a 36-bit multiplier/quotient register, and three 15-bit index registers. The contents of the index registers are subtracted from the base address, so the index registers are also called "decrement registers". All three index registers can participate in an instruction: the 3-bit tag field in the instruction is a bit map specifying which of the registers participate in the operation. However, when more than one index register is selected, then their contents are bit-wise ORed – not added – together before the decrement takes place. This behavior persisted in later scientific-architecture machines (such as the IBM 709 and IBM 7090) until the IBM 7094. The IBM 7094, introduced in 1962, increased the number of index registers to seven and only selected one at a time; the "or" behavior remains available in a compatibility mode of the IBM 7094.
Instruction and data formats
There are two instruction formats, referred to as "Type A" and "Type B". Most instructions were of type B.