Better Gutenberg
Free, beautifully formatted public-domain ebooks
‹Better GutenbergGiant Brains; or, Machines That ThinkHow Information Is Handled in the Machine · 43 of 126Contents›

Giant Brains; or, Machines That Think

by Edmund Callis Berkeley

43 of 126 · Contents · Download EPUB

How Information Is Handled in the Machine

The machine is a mechanical brain. So, between taking in information and putting out information, the machine does some “thinking.” It does this thinking according to instructions. The instructions go into the machine as: (1) the setting of switches, or (2) the pressing of buttons, or (3) the wiring of plugboards, or (4) feeding in tape punched with holes. The instructions are remembered in the machine in these 4 ways, and we can call these sets of devices the control of the machine.

To illustrate: One of the buttons pressed for every problem is the Start Key: when you press it, the machine starts to work on the problem. One of the switches with which you give instructions is a switch that turns electric typewriter 1 on or off. One of the plugboards contains some hubs by which you can tell the machine how many figures to choose in the quotient when dividing, for clearly you do not need a quotient of 23 figures every time the machine divides. You can have 5 choices in any one problem; you can specify them by plugging, and you can call for any one of 5 choices of quotient size from time to time during the problem. In many cases, when we wish the machine to do the same thing for all of a single problem and do it whenever the occasion arises, we can put the instruction into the wiring of a plugboard. We use plugboard wiring, for example, in fixing the decimal point in multiplication, so that the product will read out properly, and in guiding the operation of the typewriters, so that printing will take place in the columns where we want it.

Sequence of Steps

The most important part of the control of the machine is the sequence-tape feed and its sequence-control tape. These tell the machine a great part of what operations are to be performed.

At the end of the room where the machine is, there is the special tape punch mentioned above. It holds a big spool of card stock that is thin, flexible, smooth, and tough. With one keyboard we may prepare value tape. With another keyboard we prepare the sequence-control tape. The tape (see Fig. 10) contains places for 24 round punched holes in each row. Some and only some of these holes are punched. Each row of punched holes is equivalent to an instruction to the machine and is called a line of coding or coding line. In general, the instruction has the form:

Take a number out of Register A; put the number into Register B; and perform operation C.

The first group of 8 holes at the left is called the A field or the out-field. Here we tell the machine where a number is to be taken from. The middle group of 8 holes is called the B field or the in-field. Here we tell the machine where a number is to be put. The last group of 8 holes is called the C field or the miscellaneous field. Here we tell the machine part or all of the operation that is to be performed.

To illustrate (see Fig. 10), we have holes 3, 2, 1 punched in the A field, holes 3, 2 punched in the B field, and hole 7 punched in the C field. Now 321 is the code—or machine language, or machine call number—for storage counter 7; 32 is the code for storage counter 6; and 7 in the C field is the code (in this case, and generally) for “Add, and read the next line of coding.” So, if we punch out this line of coding and put the tape on the machine, we tell the machine to read the number in counter 7, add it into counter 6, and proceed to the next line of coding and read that.

The holes in each group of 8 holes from left to right are numbered: 8, 7, 6, 5, 4, 3, 2, 1. The code 631, for example, means that holes 6, 3, 1 are punched and that no holes are punched at 8, 7, 5, 4, 2. Since it is more natural, the code is read from left to right, or 631, instead of from right to left in the sequence 136.

The devices in the machine have in-codes, used in the in-field, and out-codes, used in the out-field. For each of the 72 regular storage counters, the in-code and the out-code are the same. The first 8 storage counters have the codes 1, 2, 21, 3, 31, 32, 321, 4, 41; the last 2 storage counters, the 71st and the 72nd, have the codes 7321, 74.

The constant registers—often called constant switches, or just switches—naturally have only out-codes, since numbers can be entered into the constant registers only by setting dial switches by hand. The first 8 constant registers have the out-codes 741, 742, 7421, 743, 7431, 7432, 74321, 75, and the 59th and 60th constant registers have the out-codes 821, 83.

Transferring, Adding, and Clearing

Each storage counter has the property that any number transferred into it is added into it. For example, the instruction

Take the number in switch 741; transfer it into storage register 321

is coded:

741, 321, 7

The 7 in the third column is an instruction to the sequence-tape feed to turn up to the next coding line and read it. If any number is already stored in register 321, the content of 741 will be added to it, and the total will then be stored in 321.

Resetting or clearing a regular storage register is accomplished by a coding that is a departure from the usual scheme of “out” and “in.” The instruction

Clear register 321; read the next coding line is coded:

321, 321, 7

Similarly, you can clear any other regular storage register if you repeat its code in the out-and in-fields. However, a few of the storage registers in the machine have special reset codes, and these may occur in any of the three fields A, B, C.

As the result of a recent modification of the machine, you can easily double the number in any storage register. For example, the instruction

Double the number in register 321; read the next coding line is coded:

321, 321, 743

Subtracting

If the number in switch 741 is to be subtracted from the number in storage counter 321, the instruction is changed into:

Take the negative of the number in switch 741; transfer it into storage register 321; read the next line of coding

The coding line becomes:

741, 321, 732

By putting 32 in the C field, we cause the number in switch 741 to be subtracted from whatever number is in register 321.

We have 2 more choices in adding and subtracting. The value of the number without regard to sign—in other words, its absolute value (see Supplement 2)—may be added or subtracted. The instruction

Add the absolute value of is expressed by a C field code 2, and the instruction

Add the negative of the absolute value of is expressed by a C field code 1.

Multiplying

When we wish to multiply one number by another and get a product, we have 3 numbers. We tell the machine about each of these numbers on a separate line of coding. Multiplication is signaled by sending a number into the multiplicand counter. The multiplicand counter has an in-code 761. If the multiplicand is in 321, the instruction is:

Take the number in 321; enter it as multiplicand; read the next coding line

The coding is:

321, 761, 7

On the third following coding line, the multiplier is sent into the multiplier counter. If the multiplier is in switch 741, the instruction is:

Take the number in 741; enter it as multiplier; read the next coding line

The coding is:

741, ——, 7

We do not punch anything in the middle field: the machine is “educated” and “knows” that it has started a multiplication and needs a multiplier, and it expects this multiplier in the third coding line. To have no code for the multiplier counter is, of course, a departure from the general rule, but it saves some punching and permits the use of this space for certain other codes, thus saving some operating time.

We need not confuse the 761 in-code for the multiplicand counter with the 761 out-code, which happens to be the out-code of the 25th constant register, because neither can occur in the other’s field. We may, of course, use other registers besides 321 and 741 for supplying the multiplicand and multiplier.

To get the product and put it into any storage counter D, we use two lines of coding one right after the other:

—— —— 6421

8761 D ——

The product counter has the out-code 8761. When the product is desired, it is called for, transferred into counter D, and the multiplication unit is automatically cleared. It takes time, however, for the machine to perform a multiplication. That is the reason for the preceding coding line and the 6421 in the C field. While the multiplication is going on, we can instruct the machine to do other things that we want done. We can insert or interpose coding lines in between the multiplier line and the product line. For example, if we have a multiplier of 10 digits, we can insert 8 coding lines and maybe more. The 6421 code essentially tells the machine to finish both the multiplication and the interposed instructions, and, as soon as the later one of these two tasks is finished, to transfer out the product to counter D.

Up to the middle of 1946, the wiring of the machine was a little different and less convenient. When the product was obtained by the multiplication unit, it had to be accepted and transferred at once into one of the 72 storage registers.

Dividing

Division is called for by first sending the divisor into the divisor counter, and this has a code 76 in the B field. If the divisor is in counter 321, the instruction may be:

Take the number in 321; enter it as divisor; read the next coding line

The coding will then be:

321, 76, 7

Three coding lines later, the dividend is called for, and the coding, if the dividend is in switch 7431, is:

7431, ——, 7

We can send the quotient, when ready, into any desired counter Q by the following two lines of coding:

—— —— 642

876 Q ——

In the same way as with multiplication, we can insert a number of coding lines in between the dividend line and the first quotient line.

Both multiplication and division are carried out in the same unit of the machine, the multiply-divide unit. The machine first constructs a table of the multiples of the multiplicand or divisor: 1 times, 2 times, 3 times, ···, 9 times. In multiplication this table is then used by selecting multiples according to the digits of the multiplier one after another. In division the table is used by comparing multiples of the divisor against the dividend and successive remainders, finding which will go and which will not. Since the numbers in the machine are normally of 15 to 23 digits, any particular multiple will be used, on the average, several times, and so this process is relatively efficient. Actually the multiplicand and the divisor go into the same counter. Division, however, has the code 76 and multiplication the code 761, and so the difference is essentially an operation code not in the third or C field.

Consulting a Table

When we desire the machine to consult a table of values (i.e., a function—see Supplement 2), we punch the table with its arguments and function values on a tape, and we put the tape on a value tape feed mechanism. The instruction to the machine may be:

Take the number in register A; find the value of the function for this number, and enter it in register B.

The coding is:

————73
A765461
————762
————543
————75431
8417654——
A7636421
8762B73
——87637

Without explaining this coding line by line, we can say that this is what happens:

The machine reads the argument in register A. The machine reads the argument in the table at which the value tape feed is resting.

It subtracts them, and thereby determines how far away the desired argument is.
The machine then turns the tape that required distance.
It checks that the new argument is the wanted argument.

It reads the value of the function entered at that point on the function tape.

Selecting

There is a storage counter in the machine that is called the selection counter. The selection counter is counter 70 and has the code 732. It has all the properties of an ordinary storage counter and, in addition, one extra property: depending on the sign of the number stored in the selection counter, it is possible to select whether some other number shall be treated positively or negatively. In other words, addition of a number anywhere in the machine may take place either positively or negatively, if the number stored in the selection counter is positive or negative, respectively.

For example, suppose that x is the number in the selection counter. Suppose that y is the number in some other counter A. Suppose that z is the number in counter B. Suppose that we use the coding:

A, B, 7432

What we get in B, because of the 7432 in the third or C field, is z plus y if x is positive or zero, and z minus y if x is negative. In the language of the algebra of logic (see Chapter 9 and Supplement 2), where T(...) is “the truth value of...,” the number in b equals:

z + y·T(x ≥ 0) - y·T(x < 0)

(The nines complement of 0, namely 999···9 to 24 digits, is treated by the machine as negative.)

Why do we need an operation like this in a mechanical brain? Among other reasons, what we want to do with a number, in mathematics, often depends on its sign. It may happen that a table is, for negative arguments, the negative of what it is for positive arguments; in other words, F(-x) =-F(x). This is true, for instance, for a table of cubes {F(x) = x³} or for a table of trigonometric tangents (see Supplement 2). If so, we certainly do not want to take the time and trouble to list the whole table. We put down only half the table and then, if x is negative, use the negative of the value in the table. In order to apply such a time-saving rule when using the machine, we need the selection counter or its equivalent.

Checking

There is another special counter in the machine that is called the check counter. It also has all the properties of an ordinary storage counter and, in addition, one extra property: If the sign of the number stored in the check counter on a certain coding line is negative, then on the next coding line the machine may be stopped. In other words, suppose that the check counter stores a certain tolerance t. Suppose, under the instructions we give the machine, that it calculates a positive number x that ought to be less than this tolerance. Suppose that something may go wrong and that x actually may be greater than t. Then we put a check into our instructions. We tell the machine:

When you have found x, subtract it from t.

If the result is positive, go ahead.

If the result is negative or zero, stop!

Here is the coding. Suppose that the tolerance t is in switch 751. Suppose that the number x to be checked is in counter 4321. Then the instructions and coding are:

Clear the check counter——7
Put in the tolerance, from switch 751751747
Subtract the absolute value of the number to be checked43217471
Stop, O Mechanical Brain, if your result be negative!——64

An operation like this is very useful in a mechanical brain. It enables the calculation to be interrupted if something has gone wrong. Of course, other operations of checking besides this one are used—for example, inspecting for reasonableness the results printed on typewriter 1.

Other Operations

There are other operations in the machine. There are two pairs of storage registers that can be coupled together so that we can handle problems requiring numbers of 46 digits instead of 23. Registers 64 and 65 can be coupled, and registers 68 and 69 can be coupled. There is another storage counter, No. 71, that has an extra property. We can read out the number it holds times 1, or times 10¹², or times 10⁻¹², as may be called for. As a result of this counter, we can do problems requiring 144 registers storing numbers of 11 digits each, instead of 72 registers storing 23 digits each. Bigger statistical problems can be handled, for example.

There are some minor sequences of operations, or subroutines, that can be called for by a single code. The subroutine may be a whole set of additions, subtractions, multiplications, divisions, and choices, having a single purpose: to compute some number by a process of rapid approximation (see Supplement 2). There are built-in subroutines for some special mathematical functions: the logarithm of a number to the base 10, the exponential of a number to the base 10, and the sine of a number. (See Supplement 2.)

There are also 10 changeable subroutines, each of 22 coding lines, which can be called in, when wanted, by the main sequence-control tape or by each other. These subroutines constitute the Subsidiary Sequence Mechanism, and are extremely useful. They have A, B, and C fields just like the main sequence-control, but they are given information by plugging with short lengths of wire instead of by feeding punched paper tape.

← Back to Giant Brains; or, Machines That Think

Scroll to Top