
Liveblogging History: February 14, 1946: ENIAC
Wikipedia: ENIAC: ENIAC (/ˈini.æk/ or /ˈɛni.æk/; Electronic Numerical Integrator And Computer) was the first electronic general-purpose computer. It was Turing-complete, digital, and could solve ‘a large class of numerical problems’ through reprogramming. Although ENIAC was designed and primarily used to calculate artillery firing tables for the United States Army’s Ballistic Research Laboratory, its first programs included a study of the feasibility of the thermonuclear weapon. When ENIAC was announced in 1946, it was heralded as a ‘Giant Brain’ by the press. It had a speed on the order of one thousand times faster than that of electro-mechanical machines; this computational power, coupled with general-purpose programmability, excited scientists and industrialists alike. ENIAC’s design and construction was financed by the United States Army, Ordnance Corps, Research and Development Command, led by Major General Gladeon M. Barnes. The construction contract was signed on June 5, 1943; work on the computer began in secret at the University of Pennsylvania’s Moore School of Electrical Engineering[9] the following month, under the code name ‘Project PX’, with John Grist Brainerd as principal investigator. ENIAC was designed by John Mauchly and J. Presper Eckert of the University of Pennsylvania, U.S. The team of design engineers assisting the development included Robert F. Shaw (function tables), Jeffrey Chuan Chu (divider/square-rooter), Thomas Kite Sharpless (master programmer), Frank Mural (master programmer), Arthur Burks (multiplier), Harry Huskey (reader/printer) and Jack Davis (accumulators). In 1946, the researchers resigned from the University of Pennsylvania and formed the Eckert-Mauchly Computer Corporation. ENIAC was a modular computer, composed of individual panels to perform different functions. Twenty of these modules were accumulators, which could not only add and subtract but hold a ten-digit decimal number in memory. Numbers were passed between these units across several general-purpose buses (or trays, as they were called). In order to achieve its high speed, the panels had to send and receive numbers, compute, save the answer and trigger the next operation, all without any moving parts. Key to its versatility was the ability to branch; it could trigger different operations, depending on the sign of a computed result. ENIAC contained 17,468 vacuum tubes, 7200 crystal diodes, 1500 relays, 70,000 resistors, 10,000 capacitors and approximately 5,000,000 hand-soldered joints. It weighed more than 30 short tons (27 t), was roughly 2.4m × 0.9m × 30m (8 × 3 × 100 feet) in size, occupied 167m2 (1800 ft2) and consumed 150 kW of electricity. This power requirement led to the rumor that whenever the computer was switched on, lights in Philadelphia dimmed. Input was possible from an IBM card reader; an IBM card punch was used for output. These cards could be used to produce printed output offline using an IBM accounting machine, such as the IBM 405. ENIAC used ten-position ring counters to store digits; each digit required 36 vacuum tubes, 10 of which were the dual triodes making up the flip-flops of the ring counter. Arithmetic was performed by ‘counting’ pulses with the ring counters and generating carry pulses if the counter ‘wrapped around,’ the idea being to electronically emulate the operation of the digit wheels of a mechanical adding machine. ENIAC had 20 ten-digit signed accumulators, which used ten’s complement representation and could perform 5000 simple addition or subtraction operations between any of them and a source (e.g., another accumulator or a constant transmitter) every second. It was possible to connect several accumulators to run simultaneously, so the peak speed of operation was potentially much higher, due to parallel operation. It was possible to wire the carry of one accumulator into another accumulator to perform double precision arithmetic, but the accumulator carry circuit timing prevented the wiring of 3+ for even higher precision. ENIAC used 4 of the accumulators (controlled by a special multiplier unit) to perform up to 385 multiplication operations/second; 5 of the accumulators were controlled by a special divider/square-rooter unit to perform up to 40 division operations/second or 3 square root operations/second. The other 9 units in ENIAC were the Initiating Unit (started and stopped the machine), the Cycling Unit (used for synchronizing the other units), the Master Programmer (controlled ‘loop’ sequencing), the Reader (controlled an IBM punch-card reader), the Printer (controlled an IBM card punch), the Constant Transmitter and 3 function tables.[clarification needed] The references by Rojas and Hashagen (or Wilkes) give more details about the times for operations, which differ somewhat from those stated above. The basic machine cycle was 200 microseconds (20 cycles of the 100 kHz clock in the cycling unit), or 5,000 cycles per second for operations on the 10-digit numbers. In one of these cycles, ENIAC could write a number to a register, read a number from a register, or add/subtract two numbers. A multiplication of a 10-digit number by a d-digit number (for d up to 10) took d+4 cycles, so a 10- by 10-digit multiplication took 14 cycles, or 2800 microseconds — a rate of 357 per second. If one of the numbers had fewer than 10 digits, the operation was faster. Division and square roots took 13(d+1) cycles, where d is the number of digits in the result (quotient or square root). So a division or square root took up to 143 cycles, or 28,600 microseconds — a rate of 35 per second. (Wilkes 1956:20[10] states that a division with a 10 digit quotient required 6 milliseconds.) If the result had fewer than ten digits, it was obtained faster. ENIAC used common octal-base radio tubes of the day; the decimal accumulators were made of 6SN7 flip-flops, while 6L7’s, 6SJ7's, 6SA7's and 6AC7’s were used in logic functions.[16] Numerous 6L6’s and 6V6’s served as line drivers to drive pulses through cables between rack assemblies. Several tubes burned out almost every day, leaving it nonfunctional about half the time. Special high-reliability tubes were not available until 1948. Most of these failures, however, occurred during the warm-up and cool-down periods, when the tube heaters and cathodes were under the most thermal stress. Engineers reduced ENIAC’s tube failures to the more acceptable rate of one tube every two days. According to a 1989 interview with Eckert, ‘We had a tube fail about every two days and we could locate the problem within 15 minutes.’ In 1954, the longest continuous period of operation without a failure was 116 hours — close to five days. ENIAC could be programmed to perform complex sequences of operations, including loops, branches, and subroutines. The task of taking a problem and mapping it onto the machine was complex, and usually took weeks. After the program was figured out on paper, the process of getting the program into ENIAC by manipulating its switches and cables could take days. This was followed by a period of verification and debugging, aided by the ability to execute the program step by step. A programming tutorial for the modulo function using an ENIAC simulator gives an impression how a program on the ENIAC looked like. ENIAC’s six primary programmers, Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas and Ruth Lichterman, not only determined how to input ENIAC programs, but also developed an understanding of ENIAC’s inner workings. The programmers debugged problems by crawling inside the massive structure to find bad joints and bad tubes. Herman Goldstine selected the programmers, then called ‘operators’, from the human ‘computers’ who had been calculating ballistics tables with desk calculators and a differential analyzer prior to and during the development of ENIAC. Under Herman and Adele Goldstine’s direction, the programmers studied ENIAC’s blueprints and physical structure to determine how to manipulate its switches and cables, rather than learning a programming language. Though contemporaries considered programming a clerical task and did not publicly recognize the programmers’ impact on the successful operation and announcement of ENIAC, McNulty, Jennings, Snyder, Wescoff, Bilas, and Lichterman have since been recognized for their contributions to computing.
Originally published on bradford-delong.com