Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
IBM 704
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Vacuum-tube computer system (1954)}} [[File:IBM Electronic Data Processing Machine - GPN-2000-001881.jpg|thumb|280px|An IBM 704 computer at [[National Advisory Committee for Aeronautics|NACA]] in 1957]] [[Image:IBM_704_mainframe.gif|right|thumb|280px|An IBM 704 computer, with [[IBM 727]] tape drives and [[IBM 780]] CRT display]] [[File:Unità centrale - Museo scienza tecnologia Milano D1260 foto.jpg|thumb|280px|IBM 704 at the [[Museo Nazionale Scienza e Tecnologia Leonardo da Vinci]], Milan]] The '''IBM 704''' is the model name of a large [[digital computer|digital]] [[mainframe computer]] introduced by [[IBM]] in 1954. Designed by [[John Backus]] and [[Gene Amdahl]], it was the first mass-produced computer with hardware for [[floating-point arithmetic]].<ref>{{Cite web |date=February 2001 |title=The IBM 704 |url=https://www.columbia.edu/cu/computinghistory/704.html |access-date=September 20, 2024 |website=columbia.edu |publisher=[[Columbia University]]}}</ref><ref name="IBM Archives">{{cite web |url= http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP704.html |archive-url= https://web.archive.org/web/20050114203037/http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP704.html |url-status= dead |archive-date= January 14, 2005 |title= 704 Data Processing System |author=<!--Staff writer(s); no by-line.--> |date= 23 January 2003 |website= IBM Archives – Exhibits – IBM Mainframes – Mainframes reference room – Mainframes product profiles |publisher= IBM |access-date=2016-08-18 }}</ref> The IBM 704 ''Manual of operation'' states:<ref>{{cite web |url= http://bitsavers.org/pdf/ibm/704/24-6661-2_704_Manual_1955.pdf |title= IBM Electronic Data-Processing Machines TYPE 704 |author=<!--Staff writer(s); no by-line.--> |date=1955 |website= IBM 704 Manual of Operation |publisher= International Business Machines Corporation |access-date=2017-12-28 }}</ref> <blockquote> 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. </blockquote> The 704 at that time was thus regarded as "pretty much the only computer that could handle complex math".<ref>{{cite web |url= https://www.theregister.co.uk/2015/02/26/my_aunt_was_a_human_assembler_at_nasa/ |title= Assemblers were once people: My aunt did it for NASA |last1= Pesce |first1= Mark |date= 26 Feb 2015 |website= Software – Developer |publisher= The Register |access-date= 2016-08-18 }}</ref> The 704 was a significant improvement over the earlier [[IBM 701]] in terms of architecture and implementation. Like the 701, the 704 used [[vacuum-tube]] logic circuitry, but increased the instruction size from [[18-bit computing|18 bits]] to [[36-bit computing|36 bits]], the same as the memory's word size. Changes from the 701 include the use of [[magnetic-core memory]] instead of [[Williams tube]]s, floating-point arithmetic instructions, 15-bit addressing and the addition of three [[index register]]s. 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 [[IBM 700/7000 series#Later scientific architecture (704/709/7090/7094)|"scientific architecture" subclass]] of the [[IBM 700/7000 series]] computers. The 704 could execute up to 12,000 floating-point additions per second.<ref name="IBM Archives" /> IBM produced 123 type 704 systems between 1955 and 1960.<ref>{{cite web |url= https://www.ibm.com/ibm/history/history/year_1954.html |title= History of IBM Timeline |author=<!--Staff writer(s); no by-line.--> |date= 23 January 2003 |publisher= IBM |access-date= 2019-07-04 }}</ref> ==Landmarks== The programming languages [[Fortran|FORTRAN]]<ref>{{Cite web |url=http://www.softwarepreservation.org/projects/FORTRAN/ |title=History of FORTRAN and FORTRAN II |website=Software Preservation Group}}</ref> and [[LISP]]<ref>{{Cite web |url=http://www-formal.stanford.edu/jmc/history/lisp/node2.html |title=LISP prehistory – Summer 1956 through Summer 1958 |website=www-formal.stanford.edu}}</ref> were first developed for the 704, as was the SAP assembler—''[[Symbolic Assembly Program]]'', later distributed by [[SHARE (computing)|SHARE]] as ''SHARE Assembly Program''. [[MUSIC-N|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 (film)|2001: A Space Odyssey]]'',<ref name="Arthur C Clarke">{{Cite web |url=http://www.lsi.usp.br/~rbianchi/clarke/ACC.Biography.html |archive-url=https://web.archive.org/web/19971211154551/http://www.lsi.usp.br/~rbianchi/clarke/ACC.Biography.html |url-status=dead |title=Arthur C. Clarke online Biography |archive-date=December 11, 1997}}</ref> where the ''[[HAL 9000]]'' computer sings the same song.<ref name="bell labs hal">{{Cite web |url=http://www.bell-labs.com/news/1997/march/5/2.html|archive-url=https://web.archive.org/web/20140401034716/http://www.bell-labs.com/news/1997/march/5/2.html |url-status=dead |title=Bell Labs: Where "HAL" First Spoke (Bell Labs Speech Synthesis website) |archive-date=April 1, 2014}}</ref> (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 electronics|solid-state]] successor to the 704.){{Citation needed|date=April 2023}} [[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.<ref name="Discovery channel">Discovery channel documentary with interviews by Ed and Vivian Thorp</ref><ref name="MIT the Tech">{{Cite journal |first=Jeff |last=Levinger |url=http://tech.mit.edu/archives/VOL_081/TECH_V081_S0000_P001.pdf |journal=The Tech |publisher=Massachusetts Institute of Technology |title=Math Instructor Programs Computor: Thorpe, 704 Beat Blackjack |volume=81 |issue=1 |page=1 |location=Cambridge, MA |date=February 10, 1961 |access-date=May 8, 2009 |archive-date=July 16, 2015 |archive-url=https://web.archive.org/web/20150716054438/http://tech.mit.edu/archives/VOL_081/TECH_V081_S0000_P001.pdf |url-status=dead }}</ref> 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 machine was also a stepping stone for [[Frank Rosenblatt]]; in 1957 he started something really big. He "invented" a [[Perceptron]] program, on the IBM 704 computer at Cornell Aeronautical Laboratory. The IBM 704 was used for flight dynamics analyses of the [[United States Naval Research Laboratory|NRL]]'s [[Vanguard (rocket)|Vanguard]] rockets. <ref> {{Cite web |url=https://www.scribd.com/document/46133829/The-Vanguard-Satellite-Launching-Vehicle-an-Engineering-Summary |title=Vanguard Satellite Launching Vehicle -- An Engineering Summary}}</ref> The [[Los Alamos Scientific Laboratory]] (LASL) developed an early [[Resident monitor|monitor]] named ''SLAM'' to enable [[batch processing]].<ref>{{cite book |last1=Kaisler |first1=Stephen H. |title=First Generation Mainframes: The IBM 700 Series |date=Nov 2018 |publisher=Cambridge Scholars Publishing |isbn=978-1-5275-0650-3 |page=69 |url=https://books.google.com/books?id=B9l9DwAAQBAJ&pg=PA69 |access-date=Apr 25, 2019}}</ref> ==Registers== {| class="infobox" style="font-size:88%;width:34em;" |+ IBM 704 registers |- | {| style="font-size:88%;width:100%;" |- | style="width:10px; text-align:left" | <sup>3</sup><sub>7</sub> | style="width:10px; text-align:left" | <sup>3</sup><sub>6</sub> | style="width:10px; text-align:left" | <sup>3</sup><sub>5</sub> | style="width:60px; text-align:center"| ... | style="width:10px; text-align:left" | <sup>3</sup><sub>1</sub> | style="width:60px; text-align:center"| ... | style="width:10px; text-align:right" | <sup>2</sup><sub>3</sub> | style="width:60px; text-align:center"| ... | style="width:10px; text-align:center"| <sup>1</sup><sub>5</sub> | style="width:10px; text-align:center"| <sup>1</sup><sub>4</sub> | style="width:60px; text-align:center"| ... | style="width:10px; text-align:center"| <sup>0</sup><sub>7</sub> | style="width:60px; text-align:center"| ... | style="width:10px; text-align:center"| <sup>0</sup><sub>0</sub> | style="width:auto; background:white; color:black" | ''(bit position)'' |- |colspan="15" | '''Data registers''' |- style="background:silver;color:black" | style="text-align:center;" colspan="14"| AC | style="background:white; color:black" | Accumulator |- style="background:silver;color:black" | style="text-align:center;background:white;" colspan="2" | | style="text-align:center;" colspan="12"| MQ | style="background:white; color:black" | Multiplier/Quotient |- style="background:silver;color:black" | style="text-align:center;background:white;" colspan="2" | | style="text-align:center;" colspan="12"| SI | style="background:white; color:black" | Sense Indicator |- |colspan="15" | '''Index registers''' |- style="background:silver;color:black" | style="text-align:center;background:white;" colspan="9" | | style="text-align:center;" colspan="5"| XR1 | style="background:white; color:black" | Index 1 |- style="background:silver;color:black" | style="text-align:center;background:white;" colspan="9" | | style="text-align:center;" colspan="5"| XR2 | style="background:white; color:black" | Index 2 |- style="background:silver;color:black" | style="text-align:center;background:white;" colspan="9" | | style="text-align:center;" colspan="5"| XR3 | style="background:white; color:black" | Index 3 |- |colspan="15" | '''Program counter''' |- style="background:silver;color:black" | style="text-align:center;background:white;" colspan="9"| | style="text-align:center;" colspan="5"| PC | style="background:white; color:black;"| Program Counter |} |} [[File: Circuito di calcolo per il sistema IBM 704 - Museo scienza tecnologia Milano D1207.jpg|thumb|IBM 704 vacuum-tube circuit module]] The IBM 704 had a 38-bit [[Accumulator (computing)|accumulator]], a 36-bit multiplier/quotient register, and three 15-bit [[index register]]s. 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 [[OR gate|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 remained available in a compatibility mode of the IBM 7094.<ref>{{Citation |url=http://bitsavers.trailing-edge.com/pdf/ibm/7094/A22-6703-4_7094_PoO_Oct66.pdf |title=IBM 7094 Principles of Operation |edition=fifth |year=1962 |page=8 |id=A22-6703-4 |publisher=IBM |series=IBM Systems Reference Library }}.</ref> ==Instruction and data formats== There are two instruction formats, referred to as "Type A" and "Type B".<ref>{{Cite web | title=From the IBM 704 to the IBM 7094 | author=John Savard | url=http://www.quadibloc.com/comp/cp0309.htm | access-date=2009-11-15}}</ref> Most instructions were of type B. Type A instructions have, in sequence, a 3-bit ''prefix'' (instruction code), a 15-bit ''decrement'' field, a 3-bit ''tag'' field, and a 15-bit ''address'' field. There are conditional jump operations based on the values in the index registers specified in the ''tag'' field. Some instructions also subtract the ''decrement'' field from the contents of the index registers. The implementation requires 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 have, in sequence, a 12-bit instruction code (with bits 2 and 3 set to 0 to distinguish them from type A instructions), a 2-bit ''flag'' field, four unused bits, a 3-bit ''tag'' field, and a 15-bit ''address'' field. * Fixed-point numbers are stored in binary [[Computer numbering formats|sign/magnitude format]]. * Single-precision [[floating-point]] numbers have a magnitude sign, an 8-bit excess-128 exponent and a 27-bit fraction (no hidden bit). * Alphanumeric characters were usually 6-bit [[Binary-coded decimal#IBM|BCD]], packed six to a word. The instruction set implicitly subdivides the data format into the same fields as type A instructions: prefix, decrement, tag and address. Instructions exist to modify each of these fields in a data word without changing the remainder of the word, though the ''Store Tag'' instruction was not implemented on the IBM 704. The original implementation of [[Lisp (programming language)|Lisp]] uses the ''address'' and ''decrement'' fields to store the head and tail of a [[linked list]] respectively. The primitive functions ''[[CAR and CDR|car]]'' ("contents of the address part of register") and ''[[CAR and CDR|cdr]]'' ("contents of the decrement part of register") were named after these fields.<ref>{{Cite web |title=Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I |first=John |last=McCarthy |url=http://www-formal.stanford.edu/jmc/recursive.html |year=1960 |access-date=2009-02-14 |archive-url=https://web.archive.org/web/20131004215327/http://www-formal.stanford.edu/jmc/recursive.html |archive-date=2013-10-04 |url-status=dead }} p. 28.</ref> ==Memory and peripherals== [[File:1960 Quinten Johnson.png|thumb|Loading punch card into the [[IBM 711]] reader]] Controls are included in the 704 for: one [[IBM 711|711 Punched Card Reader]], one [[IBM 716|716 Alphabetic Printer]], one 721 Punched Card Recorder, five [[IBM 727|727]] Magnetic Tape Units and one 753 Tape Control Unit, one 733 [[Drum memory|Magnetic Drum]] Reader and Recorder, and one 737 Magnetic Core Storage Unit. Total weight was about {{Convert|19466|lb|ST MT|1}}.<ref>{{Cite web |url=http://ed-thelen.org/comp-hist/BRL-i.html#IBM-704 |title=IBM 704 |last=Weik |first=Martin H. |date=March 1961 |website=ed-thelen.org |series=A Third Survey of Domestic Electronic Digital Computing Systems}}</ref><ref>{{Cite web |url=http://ed-thelen.org/comp-hist/BRL-i.html#IBM-704 |title=IBM-704 |last=Weik |first=Martin H. |date=December 1955 |website=ed-thelen.org |series=A Survey of Domestic Electronic Digital Computing Systems}}</ref> The 704 itself came with a control console having 36 assorted control switches or buttons and 36 data-input switches, one for each bit in a register. The control console essentially allows only setting the binary values of the registers with switches and seeing the binary state of the registers displayed in the pattern of many small neon lamps, appearing much like modern LEDs. For human interaction with the computer, programs would be entered on punched cards initially rather than at the console, and human-readable output would be directed to the printer. The [[IBM 740]] Cathode Ray Tube Output Recorder was also available, which is a 21-inch [[vector display]] with a very long [[phosphor]] persistence time of 20 seconds for human viewing, together with a 7-inch display receiving the same signal as the larger display but with a fast-decaying phosphor designed to be photographed with an attached camera.<ref name="IBM Archives 704">{{cite web |title=IBM Archives: 704 Cathode Ray Tube Output Recorder |date=23 January 2003 |url=http://www-03.ibm.com/ibm/history/exhibits/701/701_1415bx40.html |archive-url=https://web.archive.org/web/20050119221435/http://www-03.ibm.com/ibm/history/exhibits/701/701_1415bx40.html |url-status=dead |archive-date=January 19, 2005 |access-date=10 December 2012}}</ref> The 737 Magnetic Core Storage Unit serves as RAM and provides 4,096 36-bit words, the equivalent of 18,432 bytes.<ref name="IBM Archives 737">{{cite web |title=IBM Archives: IBM 737 Magnetic core storage unit |date=23 January 2003 |url=http://www-03.ibm.com/ibm/history/exhibits/701/701_1415bx37.html |archive-url=https://web.archive.org/web/20050119221432/http://www-03.ibm.com/ibm/history/exhibits/701/701_1415bx37.html |url-status=dead |archive-date=January 19, 2005 |access-date=10 December 2012}}</ref> The 727 Magnetic Tape Units store over 5 million 6-bit characters per reel. ==Reliability== The IBM 704 was much more reliable than its predecessor, the IBM 701, which had a mean time between failure of around 30 minutes. Being a vacuum-tube machine, however, the IBM 704 had very poor reliability by today's standards. On average, the machine failed around every 8 hours, comparable to the [[Manchester Mark 1]] in 1949.<ref>{{Cite web |url=https://www.rand.org/content/dam/rand/pubs/papers/2008/P7316.pdf |title=General Motors/North American Monitor for the IBM 704 Computer |last=Patrick |first=Robert L. |archive-url=https://web.archive.org/web/20210831193122/https://www.rand.org/content/dam/rand/pubs/papers/2008/P7316.pdf |archive-date=2021-08-31}}</ref><ref name="Lorenzo"/><ref name=Digital60MM1>{{cite web |title=The Manchester Mark 1 |url=http://www.digital60.org/birth/manchestercomputers/mark1/manchester.html |publisher=University of Manchester |access-date=24 January 2009 |mode=cs2 |url-status=dead |archive-url=https://web.archive.org/web/20081121112547/http://www.digital60.org/birth/manchestercomputers/mark1/manchester.html |archive-date=21 November 2008}}</ref> This limited the program size that the first [[Fortran]] compilers could successfully translate because the machine would fail before a successful compilation of a large program.<ref name="Lorenzo">{{Cite book |title=Abstracting Away the Machine: The History of the FORTRAN Programming Language (FORmula TRANslation) |last=Lorenzo |first=Mark Jones |publisher=Independently published| year=2019 |isbn=978-1082395949}}</ref> ==See also== * [[GM-NAA I/O]] * [[List of vacuum-tube computers]] ==References== {{reflist}} ==Further reading== * Charles J. Bashe, Lyle R. Johnson, John H. Palmer, Emerson W. Pugh, ''IBM's Early Computers'' (MIT Press, Cambridge, 1986) * [[Steven Levy]], ''[[Hackers: Heroes of the Computer Revolution]]'' ==External links== {{commonscat}} *[http://purl.umn.edu/104341 Oral history interview with Gene Amdahl] [[Charles Babbage Institute]], University of Minnesota, Minneapolis. [[Gene Amdahl|Amdahl]] discusses his role in the design of several computers for IBM including the [[IBM 7030 Stretch|STRETCH]], [[IBM 701]], and IBM 704. He discusses his work with [[Nathaniel Rochester (computer scientist)|Nathaniel Rochester]] and IBM's management of the design process for computers. {{IBM vacuum tube computers}} {{Authority control}} {{DEFAULTSORT:Ibm 704}} [[Category:IBM vacuum tube computers|704]] [[Category:IBM 700/7000 series|7 0704]] [[Category:36-bit computers]] [[Category:Computer-related introductions in 1954]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Commonscat
(
edit
)
Template:Convert
(
edit
)
Template:IBM vacuum tube computers
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)