GENERAL ORGANIZATION
The main part of Eniac consists of 42 panels, which are placed along the sides of a square U. Each of these panels is 9 feet high, 2 feet wide, and 1 foot thick. They are of sheet steel, painted black, with switches, lights, etc., mounted on them. At the tops of all the panels are air ducts for drawing off the hot air around the tubes. Large motors and fans above the machine suck the heated air away through the ducts. There are also 5 pieces of equipment which can be rolled from place to place and are called portable, but there is no choice as to where they can be plugged in. We shall call this equipment panels 43 to 47.
Panels
Now what are these panels, and what do they do? Each panel is an assembly of some equipment. The names of the panels are shown in the accompanying table. The arrangement of Eniac at the Ballistic Research Laboratories as shown in the table is slightly different from the arrangement of Eniac at Moore School.
NAMES OF PANELS OF ENIAC
| Panel No. | Name (and additional names in some cases) |
|---|---|
| 1 | Initiating Unit |
| 2 | Cycling Unit |
| 3, 4 | Master Programmer, panels 1, 2 |
| 5 | Accumulator 1 |
| 6 | Accumulator 2 |
| 7 | Accumulator 3 |
| 8 | Accumulator 4 (Quotient) |
| 9 | Divider-Square-Rooter |
| 10 | Accumulator 5 (Numerator I) |
| 11 | Accumulator 6 (Numerator II) |
| 12 | Accumulator 7 (Denominator—Square Root I) |
| 13 | Accumulator 8 (Denominator—Square Root II) |
| 14 | Accumulator 9 (Shift I) |
| 15 | Accumulator 10 (Shift II) |
| 16 | Blank panel for new unit (Converter) |
| 17 | Accumulator 11 (Multiplier) |
| 18 | Accumulator 12 (Multiplicand) |
| 19-21 | Multiplier, panels 1, 2, 3 |
| 22 | Accumulator 13 (Left-Hand Partial Products I) |
| 23 | Accumulator 14 (Left-Hand Partial Products II) |
| 24 | Accumulator 15 (Right-Hand Products I) |
| 25 | Accumulator 16 (Right-Hand Products II) |
| 26 | Blank panel for new unit (100 Registers) |
| 27 | Accumulator 17 |
| 28 | Accumulator 18 |
| 29 | Accumulator 19 |
| 30 | Accumulator 20 |
| 31, 32 | Function Table 1, panels 1, 2 |
| 33, 34 | Function Table 2, panels 1, 2 |
| 35, 36 | Function Table 3, panels 1, 2 |
| 37-39 | Constant Transmitter, panels 1, 2, 3 |
| 40-42 | Printer, panels 1, 2, 3 |
| 43-45 | Portable Function Tables A, B, and C |
| 46 | IBM Card Reader |
| 47 | IBM Summary Punch |
Note: The accumulators from which a number can be sent to the printer are now accumulators 1, 2, and 15 to 20.
In reading over the table, we find a number of words that need explaining. Some of the explanation we can give in the summary of the units of Eniac:
SUMMARY OF UNITS OF ENIAC
| Quantity | Device | Significance |
|---|---|---|
| 20 | Accumulators | Store, add, and subtract numbers |
| 1 | Multiplier | Multiplies |
| 1 | Divider-Square-Rooter | Divides, and obtains twice the square root |
| of a number ([see Supplement 2]) | ||
| 3 | Function Tables | Part of the memory, for referring to |
| tables of numbers | ||
| 1 | Constant Transmitter | Stores numbers from the card reader and |
| from hand-set switches | ||
| 1 | Printer | Punches machine results into cards |
| 1 | Cycling Unit | Controls the timing of the various parts |
| of the machine | ||
| 1 | Initiating Unit | Has controls for starting a calculation, |
| for clearing, etc. | ||
| 1 | Master Programmer | Holds the chief controls for coordinating |
| the various parts of the machine |
An accumulator is a storage counter. It can hold a number; it can clear a number; it can transmit a number either positively or negatively; and it can receive a number by adding the number in and thus holding the sum of what it held before and the number received. Eniac when first built had only 20 accumulators, and so it could remember only 20 numbers at one time (except for constant numbers set in switches). This small memory was the most serious drawback of Eniac; panel 26 was designed, therefore, to provide a great additional memory capacity.
The divider-square-rooter, as its name tells, is a mechanism that can divide and that can find twice the square root of a number. Eniac is one of the several giant brains that have had square root capacity built into them, particularly since square root is needed for solving trajectories.
Many panels of Eniac have double duty and some have triple duty. For example, panel 24 is an accumulator, but it also (1) stores the right-hand partial products ([see Supplement 2]) of the multiplier and (2) was a register, when Eniac was at Moore School, from which information to be punched in the printer could be obtained. Clearly, if we have a multiplication to do, we cannot also use this accumulator for storing a number that is to remain unchanged during the multiplication.
Parts
The total number of parts in Eniac is near half a million, even if we count electronic tubes as single parts. There are over 18,800 electronic tubes in the machine. It is interesting to note that only 10 kinds of electronic tubes are used in the calculating circuits and only about 60 kinds of resistors and 30 kinds of capacitors. A resistor is a device that opposes the steady flow of electric current through it to a certain extent (called resistance and measured in ohms). A capacitor is a device that can store electrical energy up to a certain extent (called capacitance and measured in farads). All these tubes and parts are standard parts in radios. All types are identified by the color labels established in standard radio manufacturing. It is the combinations of these parts, like the combinations of pieces in a chess game, that give rise to the marvelous powers of Eniac.
The combinations of parts at the first level are called plug-in units. A plug-in unit is a standard box or tray or chassis made of sheet steel containing a standard assembly of tubes, wires, and other parts. It can be pushed in or pulled out of a standard socket with many connections. An example of a plug-in unit is a decade, or, more exactly, an accumulator decade. This is just a counter wheel or decimal position expressed in Eniac language: it can express successively all the digits from 0 to 9 and then pass from 9 to 0, giving rise to a carry impulse. It is striking that a mechanical counter to hold 10 digits can be made up of 10 little wheels, ¼ inch wide and an inch high. But an accumulator in Eniac, to hold 10 digits, is a set of 10 decades each 2 inches wide and 2½ feet high.
There are only about 20 kinds of plug-in units altogether. Each plug-in unit is interchangeable with any other of the same kind. So, if a decade, for example, shows trouble, you can pull it out of its socket and plug in a spare decade instead.
Numbers
Numbers in Eniac are of 10 decimal digits with a sign that may be plus or minus. The decimal point is fixed. However, when you are connecting one accumulator with another, you can shift the decimal point if you want to. Also, 2 accumulators may be coupled together so as to handle numbers of 20 digits.
HOW INFORMATION GOES
INTO THE MACHINE
There are three ways by which information—numbers or instructions—can go into the Eniac. Numbers can be put into the machine by means of punch cards fed into the Card Reader, panel 46, or switches on the Constant Transmitter, panels 37 to 39. Numbers or instructions can also go into the machine by means of the Function Tables, panels 43 to 45. Here there are dial switches, which are set by hand. Instructions can also go into the machine by setting the switches, plugging the inputs and outputs, etc., of the wires or lines along which numbers and instructions travel.
HOW INFORMATION COMES
OUT OF THE MACHINE
There are two ways by which numerical information can come out of the machine. Numbers can come out of the machine punched on cards by the Summary Punch, panel 47. They are then printed in another room by means of a separate IBM tabulator. Also, numbers can be read out of the machine by means of the lights in the neon bulbs mounted on each accumulator. You can read in the lights of a panel the number held by the accumulator, if the panel is not computing.
HOW INFORMATION IS MANIPULATED
IN THE MACHINE
Eniac handles information rather differently from any other of the big brains. Instead of having only one bus or “railroad line” along which numbers can be sent, Eniac has more than 10 such lines. They are called digit trays and labeled A, B, C, ···. Each contains 11 digit trunk lines or digit trunks—10 to carry the digits of a number, and the 11th to carry the sign. Instead of having only one telegraph line along which instructions can be sent, Eniac has more than 100 such lines. They are called program trunk lines or program trunks and labeled A1, A2, ···, A11, B1, B2, ···, B11, ···, etc. They are assembled in groups of 11 to a tray; the program trays, in fact, look just like the digit trays, except for their connectors and their purpose, which are different. Below, we shall make clear how the program trays carry control information.
Now, actually, Eniac has many more trunk lines than we have just stated, for each of the lines we have mentioned can be divided into numerous separate sections by the removal of plug connections. How we choose to do this depends on the needs of the problem, the space between the panels, the time when the line is used, etc.
Transferring Numbers, Adding,
and Subtracting
Basically, a number is represented in Eniac by an arrangement of on and off electronic tube elements in pairs, called flip-flops. There is one flip-flop enclosed in a single tube (type 6SN7) for each value 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 for each of the 10 digits stored in an accumulator. So we have at least 100 flip-flops for each accumulator, and thus at least 100 electronic tubes are required to store 10 digits. Actually, an accumulator needs 550 electronic tubes. So we see that there is not very much of a future in this type of arrangement. The newer electronic brains use different devices for storage of numbers.
In order to show what number is stored in an accumulator, there are 100 little neon bulbs mounted on the face of each accumulator panel. Each bulb glows when the flip-flop that belongs to it is on. For example, suppose that the 4th decade in Accumulator 11 holds the digit 7. Then the 7th flip-flop in that decade will be on, and all the others will be off. The 7th neon bulb for that decade will glow.
Now suppose that the number 7 is in the 4th decade in Accumulator 11 and is to be added into, say, the 4th decade in Accumulator 13. And suppose that it is to be subtracted from the 4th decade in Accumulator 16. What do we do, and what will Eniac do?
First, we pick out 2 digit trays, say B and D. Accumulator 11 has 2 outputs, called the add output and the subtract output. We plug B into the add output and D into the subtract output. Then we go over to Accumulators 13 and 16. They have 5 inputs, that is, 5 ways of being plugged to receive numbers from digit trunks. These inputs are named with Greek letters, α, β, γ, δ, ε. We choose one input, say γ, for Accumulator 13, and we plug B into that input. We choose one input, say ε, for Accumulator 16, and we plug D into that input.
Now we have the “railroad” switching for numbers accomplished. We have set up a channel whereby the number in Accumulator 11 will be routed positively into Accumulator 13 and negatively into Accumulator 16. Now let us suppose that, at some definite time fixed by the control, Accumulator 11 is stimulated to transmit and Accumulators 13 and 16 are conditioned to receive. When this happens, a group of 10 pulses comes along a direct trunk from the cycling unit, and a group of 9 pulses comes along another trunk. We can think of each pulse as a little surge of electricity lasting about 2 millionths of a second. The ten-pulses, as the first group is called, are 10 millionths of a second apart. The nine-pulses, as the second group is called, are also 10 millionths of a second apart but are sandwiched between the ten-pulses. When the 1st ten-pulse comes along, the 7th flip-flop in Accumulator 11 goes off, the 8th flip-flop goes on, the following nine-pulse goes through and goes out on the subtract line to Accumulator 16. Then the 2nd ten-pulse comes along, the 8th flip-flop goes off, the 9th flip-flop goes on, and the next nine-pulse goes out on the subtract line to Accumulator 16. Now the decade sits at 9, and for this reason the next ten-pulse changes an electronic switch (actually another flip-flop) so that all later nine-pulses will go out on the add line. This ten-pulse also turns off the 9th flip-flop and turns on the 0th flip-flop without causing any carry. Now the 4th of the ten-pulses comes along, turns the 0th flip-flop off, and turns the 1st flip-flop on, and the next nine-pulse goes out on the add line to Accumulator 13. The next 6 of the ten-pulses then come along and change Accumulator 11 back to the digit 7 as before, and the next 6 of the nine-pulses go out to Accumulator 13. Thus Eniac has added 7 into Accumulator 13, has added 2, the nines complement of 7 ([see Supplement 2]), into Accumulator 16, and has left Accumulator 11 holding the same number as before. This is just the result that we wanted.
In this way, the nines complement of any digit in a decade is transferred out along the subtract line, and the digit unchanged is transmitted out along the add line. As the pulses arrive at any other accumulator, they add into that accumulator.
Multiplying and Dividing
Eniac performs multiplication by a built-in table of the products in the 10-by-10 multiplication table, using the method of left-hand components and right-hand components ([see Supplement 2]). For example, suppose that the 3rd digit of the multiplier is 7 and that the 5th digit of the multiplicand is 6. Then, when Eniac attends to the 3rd digit of the multiplier, the right-hand digit of the 42 = 6 × 7 is gathered in one accumulator, and the left-hand digit 4 is gathered in another accumulator. After Eniac has attended to all the digits of the multiplier, then Eniac performs one more addition and transfers the sum of the left-hand digits into the right-hand digits accumulator.
Eniac does division in rather a novel way. First, the divisor is subtracted over and over until the result becomes negative or 0. Then the machine shifts to the next column and adds the divisor until the result becomes positive or 0. It continues this process, alternating from column to column. For example, suppose that we divide 3 into 84 in this way. We have:
- ____ _
- 3 ) 84 ( 32
- -3
- +54
- -3
- +24
- -3
- -6
- +3
- -3
- +3
- 0
After we subtract 3 the third time, the result becomes negative,-6; in the next column, after we add 3 twice, the result becomes 0. The quotient is
- _
- 32, which is the same as 30 - 2, or 28;
and 3 × 28 is 84. Thus the process checks.
Consulting a Table
Eniac has three Function Tables. Here you can store numbers or instructions for the machine to refer to. Each Function Table has 104 arguments ([see Supplement 2]). For each argument, you can store 12 digits and 2 signs that may be plus or minus. This capacity can be devoted to one 12-digit number with a sign, or to two 6-digit numbers each with a sign, or to six 2-digit instructions. The three Function Tables are panels 43, 44, and 45. To put in the numbers or instructions, you have to go over to these panels and set the numbers or instructions, digit by digit, turning dial switches by hand. It is slow and hard to do this right, but once it is done, Eniac can refer to any number or instruction in any table in ¹/₁₀₀₀ of a second. This is much faster than the table reference time in any other of the giant brains built up to 1948.
Programming
We said above that Eniac has over 100 control lines or program trunks along which instructions can be sent. These instructions are expressed as pulses called program pulses. Now how do we make these pulses do what we want them to do? For example, how can we instruct Accumulator 11 to add what it holds into Accumulator 13?
On each unit of Eniac there are plug hubs or sockets (called program-pulse input terminals) to which a program trunk may be connected. A program pulse received here can make the unit act in some desired way. On each accumulator of Eniac, we find 12 program-pulse input hubs. Corresponding to each of these hubs, there is a nine-way switch, called a program-control switch. The setting of this switch determines what the accumulator will do when the program-pulse input hub belonging to the switch receives a program pulse. For instance, there are switch settings for: receive input on the α line, receive input on the β line, etc.; and transmit output on the add line, etc. There is even a switch setting that instructs the accumulator to do nothing, and this instruction may be both useful and important.
Now, in order that Accumulator 11 may transfer a number to Accumulator 13, we need: (1) a digit tray, say B, for the number to travel along; (2) a program trunk line, say G3, to tell Accumulator 11 when to send the number and Accumulator 13 when to receive it; and (3) certain plugging as follows:
1. We plug from program trunk G3 into a program-pulse input hub, say No. 5, of Accumulator 11;
2. We plug from the same program trunk G3 into a program-pulse input hub, say No. 7, of Accumulator 13;
3. We set program-control switch No. 5 of Accumulator 11 to “add”;
4. We set program-control switch No. 7 of Accumulator 13 to some input, say γ.
5. We plug from digit tray B into the add output of Accumulator 11.
6. We plug from digit tray B into the γ input of Accumulator 13.
Now, when the program pulse comes along line G3, it makes Accumulator 13 transmit additively along digit tray B into Accumulator 13. And that is the result that we wanted.
As each mechanism of Eniac finishes what it is instructed to do, it may or may not put out a program pulse. This pulse in turn may be plugged into any other program trunk line and may stimulate another mechanism to act. Then, when this mechanism finishes, it too may or may not put out a program pulse, and so on.
In general, there are two different ways to instruct Eniac to do a problem. One way is to set all the switches, plug all the connections, etc., for the specific problem. This is a long and hard task. Very often, even with great care, it is done not quite correctly, and then the settings must be carefully checked all over again. A second method (called the von Neumann programming method) is to store all the instructions for a problem in one or two function tables of Eniac and then tell Eniac to read the function tables in sequence and to do what they say. The rest of the machine is then wired up in a standard fashion. This method of instructing Eniac was proposed by Dr. John von Neumann of the Institute of Advanced Study at Princeton, N. J. Eniac has been modified to the slight extent needed so that this method can be used when desired. In this method, each instruction is a selected one of 60 different standard instructions or orders—one of them, for example, being “multiplication.” Each standard order is expressed by 2 decimal digits. The 60 standard orders are sufficient so that Eniac can do any mathematical problem that does not overstrain its capacity. Since each of the 3 Function Tables can hold 600 2-digit instructions, the machine can hold a program of 1800 instructions under the von Neumann programming method.
AN APPRAISAL OF ENIAC
AS A COMPUTER
As a general-purpose calculating machine, Eniac suffers from unbalance. That is to say, Eniac operates rapidly and successfully in some respects, and slowly and troublesomely in other respects. This is altogether to be expected, however, in a calculator as novel as Eniac and made to so large an extent out of standard radio parts. It was certainly better to finish a calculator like this one and then start on a new one, as the Moore School of Electrical Engineering did, than to prolong design and construction indefinitely in order to make improvements.
Speed
Eniac adds or subtracts very swiftly at the rate of 5000 a second. Eniac multiplies at the rate of 360 to 500 a second. Division, however, is slow, relatively; the rate is about 50 a second. Reading numbers from punched cards, 12 a second for 10-digit numbers, is even slower. As a result of these rates, you find, when you put a problem on Eniac, that one division delays you as long as 100 additions or 8 multiplications. Division might have been speeded somewhat by (1) rapidly convergent approximation ([see Supplement 2]) to the reciprocal of the divisor and (2) multiplying by the dividend; this might have taken 5 or 6 multiplication times instead of 8. Also, the use of a standard IBM punch-card feed and card punch slows the machine greatly. One way to overcome this drawback might be to install one or two additional sets of such equipment, which might increase input and output speed.
Ease of Programming
Eniac has a very rapid and flexible automatic control over the programming of operations. Eniac has more than 10 channels along which numbers can be transferred and more than 100 channels along which program-control pulses can be transferred. There are many ways for providing subroutines. Eniac has the additional advantage that there is no delay in giving the machine successive instructions: all the instructions the machine may need at any time are ready at the start of the problem, and indications occurring in the calculation can change the routine completely.
All these advantages, however, are paid for rather heavily by the slow methods for changing programming. You have to plug large numbers of program trunk lines and digit trunk lines, or you have to set large numbers of switches, or both. Also, when you wish to return to a previous problem, you must do all the plugging and switch setting over again. Many delays in the operation of the machine are due to human errors in setting the machine for a new problem. Here again, we must remember that Eniac was originally designed as a special-purpose machine for solving trajectories. To calculate a large family of trajectories very little changing of wires and switches would be needed.
Memory
The most severe limitation on the usefulness of Eniac was, at the outset, the fact that it had only 20 registers for storing numbers. There are large numbers of problems that cannot be simply handled with so small an internal memory. Even the Harvard IBM calculator ([see Chapter 6]) is often strained during a problem because of the number of intermediate results that must be stored for a time before combining. The Ballistic Research Laboratories, however, contracted for extensions to Eniac to provide more memory and easier changing of instructions.
Reliability
Checking results with Eniac is not easy. There is no built-in guarantee that Eniac’s results are correct. A large calculator can and does make both constant and intermittent errors. Ways for checking with Eniac are:
Mathematical, if and when available, and this will be seldom.
Running the problem a second time, and this will, at most, prove consistency.
Deliberate testing of small parts of the problem, which is very useful and is standard practice but leads only to a probability that the final result is correct.
You can operate Eniac one addition at a time, and even one pulse at a time, and see what the machine shows in its little neon bulbs. This is a very useful partial check.
Cost
The cost of Eniac is higher than that of some of the other large mechanical brains—over half a million dollars. Because some of the work was done at the Moore School by students, the cost was probably less than it otherwise would have been. The largest part of the cost was the designing of the machine and the construction of the panels; the tubes were only a small portion of the cost. The tubes used in the calculating circuits cost only 20 to 90 cents. However, no later electronic calculator need cost as much, for many improvements can now be seen.
The power required for Eniac is about 150 kilowatts or about 200 horsepower, most of which is used for the heaters of the electronic tubes. The largest number of electronic tubes mentioned for future electronic calculators is about 3000, so we can see that they are likely to use less than a quarter of the power needed for Eniac.
Eniac will doubtless give a number of years of successful operation and be extremely useful for problems that employ its assets and are not excluded by its limitations. In fact, at the Ballistic Research Laboratories, for a typical week of actual work, Eniac has already proved to be equal to 500 human computers working 40 hours with desk calculating machines, and it appears that soon two or three times as much work may be obtained from Eniac.
Chapter 8
RELIABILITY—NO WRONG RESULTS:
BELL LABORATORIES’
GENERAL-PURPOSE RELAY CALCULATOR
In 1946, Bell Telephone Laboratories in New York finished two general-purpose relay calculators—mechanical brains. They were twins. One was shipped in July 1946 to the National Advisory Committee for Aeronautics at Langley Field, Virginia. The other, after some months of trial operation, was shipped in February 1947 to the Ballistic Research Laboratories at the U. S. Army’s Proving Ground, Aberdeen, Md.
Each machine is remarkably reliable and versatile. It can do a wide variety of calculations in a great many different ways. Yet the machine never takes a new step without a check that the old step was correctly performed. There is, therefore, a chance of better than 99.999,999,999 per cent that the machine will not let a wrong result come out. The automatic checking, of course, does not prevent (1) human mistakes—for example, instructing the machine incorrectly—or (2) mechanical failures, in which the machine stops dead in its tracks, letting no result at all come out.