Notes for Arthur W. Burks, Herman H. Goldstine and John von Neumann “PRELIMINARY DISCUSSION OF THE LOGICAL DESIGN OF AN ELECTRONIC COMPUTING INSTRUMENT”

Key concepts: accumulator, control counter, decoding, function table register, memory.


Related theorists: Hayles, Kittler.


PREFACE TO FIRST EDITION

Limit scope of this first report to building the machine; next report will be about programming, a statement about how we will think as machines, quite a feat for 1940s humans.

(ii) An attempt is made to give in this, the first half of this report, a general picture of the type of instrument now under consideration and in the second half a study of how actual mathematically problems can be coded, i.e., prepared in the language the machine can understand.

Part I
1.0 Principal Components of the Machine.

This first page on the principle components of the machine should be required viewing by any philosopher of computing, for it articulates the essentials of traditional, mainstream computer organization present in everyday devices: memory, control, arithmetic, input, output.

It should also be reread by philosophers of computing, both to get a sense of the social, cultural, and personal contexts of its authors and their milieu and to invite new thinking in the state of the art.

Fully automatic independent of human operator after the computation starts key characteristic ascribed by most contemporary theorists including Kitchin and Dodge.

(1) 1.1 Inasmuch as the completed device will be a general-purpose computing machine it should contain certain main organs relating to arithmetic, memory-storage, control and connection with the human operator. It is intended that the machine be fully automatic in character, i.e., independent of the human operator after the computation starts.

Bulk of this document covers details of arithmetic computation because it is encoding that human-machine thought operation; these original circuits still present but at larger address bit widths.

Only after thirty two bits (represented as 32, 0x20, 10000) do we think with Internet technologies; thus, these ancient authors of electronic computing thought with different intentions in part because of the address bus widths with which they built their machines.

Thus, this early document we scan to ground our understanding of terms like stored program associated with the human author (rather than the machine hardware) von Neumann originally served to document knowledge that still resided primarily in human brains and printed materials, as Kittler makes so clear in There Is No Software, by the early 1970s shepherding the thoughts expressed by the many pages describing binary arithmetic operations resided in electronic circuits and their representations, blueprints for making new circuits and for CAD language games.

It is not an exciting intelligence like human consciousness, nascent for so long, latent in designs and physical structures, only coming to life with the emergence of higher address bit width systems.

Let us continue this romp through early thinking in the manner Heidegger teaches for Greek thinking (noein legein and ekphanestaton phusis), where the principle components of the stored program digital electronic computing are enumerated as if by logical necessity in order to fulfill general purpose criterion, touching on same basic nature of computability questions as Turing but in actionable technical detail.

Note difference between special purpose and general purpose computer intertwined with semiotics, language as beyond special purpose wetware, what Nietzsche referred to as instinct.

Finally, note anthropomorphized word choices understand for the CPUs ability to fetch and execute.

Ability to instruct all-purpose machine to carry out any computation that can be formulated in numerical terms, implying memory and processor.

(1) 1.2 . . . In a special-purpose machine these instructions are an integral part of the device and constitute a part of its design structure. For an all-purpose machine it must be possible to instruct the device to carry out any computation that can be formulated in numerical terms. Hence there must be some organ capable of storing these program orders. There must, moreover, be a unit which can understand these instructions and order their execution.

Having transcended formulating everything in numerical terms, such that larger address bit widths afford qualitatively different fantasies of machine operations including internetworked, distributed, object oriented processing of modern cyberspace, while still encoding everything in just that, reveals the fact that we have not left the basic ontology of computing posited by Burks, Goldstein and von Neumann.

Storage of numbers and orders in the same memory device implies variable ontology impossible in written texts.

(1) 1.3 Conceptually we have discussed above two different forms of memory: Storage of numbers and storage of orders. If, however, the orders to the machine are reduced to a numerical code and if the machine can in some fashion distinguish a number from an order, the memory organ can be used to store both numbers and orders.

Control to autonomously automatically execute orders stored in memory like a reader to a book or player piano to scroll.

Economic origin of stored program concept that, ironically, was solved positionally, by agency of discrete, deterministic program counter state changes built into the control.

Control organ differentiated from storage organ rather than building the two features into the same device.

Early design decision to separate storage from control, while treated as ontological characteristic of stored program computers to this day, became fuzzy as soon as caches where added to CPUs.

(1) 1.4 If the memory for orders is merely a storage organ there must exist an organ which can automatically execute the orders stored in the memory. We shall call this organ the Control.

Arithmetic organ as the physical instantiation of basic logical operations grounding mathematics, representing unavoidable materiality of electronic circuits performing the work of imagined code.

Arithmetic organ differentiated from background control organ: the architecture being proposed here not only exhibits multipurposive program and data storage but also division of functional units characteristic of industrial machinery; elementary operations are wired into the machine, and there is already acknowledgment of compromises between speed, complexity, cheapness.

(1) 1.5 Inasmuch as the device is to be a computing machine there must be an arithmetic organ in it which can perform certain of the elementary arithmetic operations.
(1) The operations that the machine will view as elementary are clearly those which are wired into the machine. . . . In general, the inner economy of the arithmetic unit is determined by a compromise between the desire for speed of operation – a non-elementary operation will generally take a long time to perform since it is constituted of a series of orders given by the Control – and the desire for simplicity, or cheapness, of the machine.

Use of communication to describe human machine relationship: that the final paragraph suggests ringing a bell or flashing a light to signal to the humans that the computation is complete, or has halted (Turing), of course reflects limited capabilities of the time but also institutes a human centric locus of the interface; other theorists and science fiction writers till take up the other possibility, that humans adapt to the machines, to the extent of synaptogenesis and into the technological nonconscious of the latest Hayles.

Input and output organs permitting machine signaling to and manipulation by humans final constituent of stored program computer.

(1) 1.6 Lastly there must exist devices, the input and output organ, whereby the human operator and the machine can communicate with each other.

2.0 First Remarks on the Memory.

Situated problems guided situated cognition of response; analysis of this problem space, not computing in general, although today a workspace of 4000 40-bit, twelve decimal precision mathematical computations is completely inadequate for the problems for which computers are designed, nor is anything like distributed network control conceivable, means that problem space now encompasses legacy, to the extent that not dead, as well as 64 bit address and timer width distributed control (Galloway protocological) computing, again not computing in general.

(2) 2.3 It is reasonable at this time to build a machine that can conveniently handle problems several orders of magnitude more complex than are now handled by existing machines, electronic or electro-mechanical. We consequently plan on a fully automatic electronic storage facility of about 4,000 numbers of 40 binary digits each. This corresponds to a precision of 2-40 0.9 x 10-12, i.e. of about 12 decimal. We believe that this memory capacity exceeds the capacities required for most problems that one deals with at present by a factor of about 10.

3.First Remarks on the Control and Code.

Acknowledge starting from first principles to conceive code would be a digression, so electronic computing is philosophically shortchanged from the start.

(3) 3.1 It would take us much too far afield to discuss these questions at all generally or from first principles. We will therefore restrict ourselves to analyzing only the type of code which we now envisage for our machine.

Transfers into memory as total substitution of contents and partial substitutions of operators to orders (memory location numbers).

(3) 3.3 To summarize, transfers into the memory will be of two sorts: Total substitutions, whereby the quantity previously stored is cleared out and replaced by a new number. Partial substitutions in which that part of an order containing a memory location-number--we assume the various positions in the memory are enumerated serially by memory location-numbers--is replaced by a new memory location-number.

Can this be early form of object-oriented procedural rhetoric, or is it just expression of stored program design?

Basic sequential program counter operation from current place adding one.

Introduction of conditional and unconditional transfers as basic control structures besides sequential processing.

(3) 3.4 the control will be so constructed that it will normally proceed from place n in the memory to place (n+1) for its next instruction.
(4) 3.5 The utility of an automatic computer lies in the possibility of using a given sequence of instructions repeatedly, the number of times it is iterated being either preassigned or dependent upon the results of the computation. . . . we introduce an order (the conditional transfer order) which will, depending on the sign of a given number, cause the proper one of two routines to be executed. . . . This unconditional transfer can be achieved by the artificial use of a conditional transfer or by the introduction of an explicit order for such a transfer.

Acknowledgment of materiality as initial design decisions concretize structural constraints and affordances, like Derrida describing struggle by Plato to wrest mythemes from historical context to transform into philosophemes.

Sense of technical determinism based on selection of memory unit, although history demonstrated multiple, divergent solutions invented worldwide.

(4) 3.7 We proceed now to a more detailed discussion of the machine. Inasmuch as our experience has shown that the moment one chooses a given component as the elementary memory unit, one has also more or less determined upon much of the balance of the machine, we start by a consideration of the memory organ.

4.0 The Memory Organ

Three levels of memory as compromises between localization within working memory and responsiveness of long term memory.

One feasible memory organ was dielectric plate inside a cathode-ray tube, putatively a two-dimensional matrix.

(4) 4.1 the availability time for a word in the memory should be 5 to 50 µsec. It is equally desirable that words may be replaced with new words at about the same rate. It does not seem possible physically to achieve such a capacity. We are therefore forced to recognize the possibility of constructing a hierarchy of memories, each of which has greater capacity than the preceding but which is less quickly accessible.
(4-5) One is accordingly led to consider the possibility of storing electrical charges on a dielectric plate inside a cathode-ray tube.

What type of organization was Princeton Laboratories of the Radio Corporation of America?

Proposal for storing 4000 words using 40 Selectrons for two to the twelfth power forty binary digit words.

(5) At the present time the Princeton Laboratories of the Radio Corporation of America are engaged in the development of a storage tube, the Selectron, of the type we have mentioned above.
(5) 4.2 To achieve a total electronic storage of about 4,000 words we propose to use 40 Selectrons, thereby achieving a memory of 212 words of 40 binary digits each.

Parallel storage of memory words versus serial storage by EDVAC.

Parallel memory storage an aspect of von Neumann architecture maintained today for RAM but abandoned for other storage devices like secondary storage (SATA hard drives).

(5) 4.3 We accordingly adopt the parallel procedure and thus are led to consider a so-called parallel machine, as contrasted with the serial principles being instituted for the EDVAC.

Critical programming insight: I/O bounds memory bus and physical bus developed by Uffenbeck.

Secondary storage medium part of input-output system demonstrating additional fuzzy borders between the canonical division of the stored program computer.

(7) 4.7 It is now clear that the secondary storage medium is really nothing other than a part of our input-output system.

5.0 The Arithmetic Organ.

Key decision to use binary number system instead of traditional decimal system, as well argued design affordance that requires an alien perspective; contrast to Babbage decimal machinery, which for its own part introduced the strange system of differential arithmetic retained by these newer binary devices.

(7) 5.2 In spite of the longstanding tradition of building digital machines in the decimal system, we feel strongly in favor of the binary system for our device.
(8) Now logics, being a yes-no system, is fundamentally binary.

Away from human decimal standard towards what seems more appropriate for machine computation, 2, 8, 16 (binary, octal, hexadecimal); noted ambivalence of floating point capability as another human convenience.

Suggestion that technologists will train themselves to use base 2, 8 or 16 numbers points out entrenchment of decimal system in our culture.

(8) We feel, however, that the base 10 may not even be a permanent feature in a scientific instrument and consequently will probably attempt to train ourselves to use numbers base 2 or 8 or 16.

Mention of floating decimal point solutions proposed for other digital computers in America and England.

(8) 5.3 Several of the digital computers being built or planned in this country and England are to contain a so-called "floating decimal point." This is a mechanism for expressing each word as a characteristic and a mantissa--e.g. 123.45 would be carried in the machine as (0.12345,03), where 3 is the exponent of 10 associated with the number.
(8) In order to have such a floating point one must waste memory capacity which could otherwise be used for carrying more digits per word. It would therefore seem to us not at all clear whether the modest advantages of a floating binary point offset the loss of memory capacity and the increased complexity of the arithmetic and control circuits.

Principle of incorporating in physical circuits only the necessary or most frequently used logical concepts, such as Accumulator.

(9) The reader may remark upon our alternate spells of radicalism and conservatism in deciding upon various possible features for our mechanism. We hope, however, that he will agree, on closer inspection, that we are guided by a consistent and sound principle in judging the merits of any idea. We wish to incorporate into the machine--in the form of circuits--only such logical concepts as are either necessary to have a complete system or highly convenient because of the frequency with which they occur and the influence they exert in the relevant mathematical situations.
(9) 5.5 The first part of our arithmetic organ requires little discussion at this point. It should be a parallel storage organ which can receive a number and add it to the one already in it, which is also able to clear its contents and which can transmit what it contains. We will call such an organ an Accumulator.

Twenty pages of detail on hard wiring of basic arithmetic operations attests to materiality of even stored program computation and hence all code; example of representing negative numbers by complementation invites variable ontology view where both negative numbers and complementation operations exist at same level, not one inscribing the other.

(9) 5.7 Thus we have been led to the familiar representation of negative numbers by complementation.

6.0 The Control.

Basic machine operations of fetch and execute, store, and input/output beyond Selectron memory.

(29) 6.1 the orders for this computer are less than half as long as a forty binary digit number, and hence the orders are stored in the Selectron memory in pairs.
(29) Among these orders we can immediately describe two major types: An order of the first type begins by causing the transfer of the number, which is stored at a specified memory location, from the Selectrons to the Selectron register. Next, it causes the arithmetical unit to perform some arithmetical operations on this number (usually in conjunction with another number which is already in the arithmetic unit), and to retain the resulting number in the arithmetic unit. The seonc type order causes the transfer of the number, which is held in the arithmetical unit, into the Selectron Register, and from there to a specified memory location in the Selectrons. . . .
An additonal type of order consists of the transfer orders of 3.5. Further orders control the inputs and the outputs of the machine.

(29) 6.2 It is clear from what has just been stated that the control must have a means of switching to a specified location in the Selectron memory, for withdrawing both numbers for the computation and pairs of orders. (..) Hence a switching mechanism is required which will, on receiving a twelve-digit binary number, select the corresponding memory location.

Decoding defined as many-to-one function table crossing dual implementations as circuitry and software running code. Contrast to how Kittler considers coding as one-way operation.

Numbers and programs the first things we entrust to computing then by 32 bit Internet dreaming in code is possible.

(29) The type of circuit we propose to use for this purpose is know as a decoding or many-one function table.
(30) 6.3 each order must contain eighteen binary digits, the first twelve identifying a memory location and the remaining six specifying an operation. It can now be explained why orders are stored in the memory in pairs. Since the same memory organ is to be used in this computer for both orders and numbers, it is efficient to make the length of each about equivalent.

Tetrads as proto-bytes.

(30) It is convenient, as will be seen in 6.8.2. and Chapter 9, Part II, to group these binary digits into tetrads, groups of 4 binary digits. . . . Outside the machine each tetrad can be expressed by a base 16 digit.

Memory address decoder design reflected in command decoding, with strong sense of materiality of code by decoding machine operation numbers to physical circuits; clever use of error checking making connections to unused outputs.

(30) The specification of the nature of the operation that is involved in an order occurs in binary form, so that another many-one or decoding function is required to decode the order. . . . Since there will not be 64 different orders, not all 64 outputs need be provided. However, it is perhaps worthwhile to connect the outputs corresponding to unused order possibilities to a checking circuit which will give an indication whenever a code word unintelligible to the control is received in the input flip-flops.
(31) The twelve flip-flops operating the four function tables used in selecting a Selectron position, and the six flip-flops operating the function table used for decoding the order, are referred to as the Function Table Register, FR.

Control counter is heart of state transition machine, along with its clock source.

(31) 6.4 until it receives an order to do otherwise, the control will take its orders from the Selectrons in sequence. Hence the order location may be remembered in a twelve stage binary counter (one capable of counting 212) to which one unit is added whenever a pair of orders is executed. This counter is called the Control Counter, CC.
(31) An order calling for one of these [control transfer] operations contains the twleve-digit specification of the position to which the control is to be switched, and these digits will appear in the left-hand twelve flip-flops of FR. All this is required to shift the control is to transfer the contents of these flip-flops to CC.

Importance of system clock will go beyond maintaining sequential processing to time axis manipulation and alien temporalities.

(32) 6.5 In this report we will discuss only the general method by means of which the Control will execute specific orders, leaving the details until later. . . . It should be noted that timing is required whether the circuit performing the operation is static or dynamic.
(32) There are many advantages in deriving these pulses from a central source, called the clock. . . . Since the timing of the entire computer is governed by a single pulse source, the computer circuits will be said to operate as a synchronized system.
(33) The method of localizing errors, either with or without a duplicate machine, needs further discussion.

Strict enforcement of separation between internal operations and those involving input or output beyond the computer; many pages of detail on control, but not as detailed as that of the arithmetic unit, admittedly only an overview.

(33) 6.6 The orders which the Control understands may be divided into two groups: Those that specify operations which are performed within the computer and those that specify operations involved in getting data into and out of the computer. . . . The internal operations which have been tentatively adopted are listed in Table 1. It has already been pointed out that not all of these operations are logically basic, but that many can be programmed by means of others.
(38) 6.8.1 Since there already exists a way of transferring numbers between the Selectrons and Ac, therefore Ac may be used for transferring numbers from and to a wire. The latter transfer will be done serially and will make use of the shifting facilities of Ac.

Serial transfer for starting up the machine; no concept of parallel (tetrad) long term memory.

(39) Since, at the beginning of the problem, the computer is empty, facilities must be built into the control for reading a set of numbers from a wire when the operator presses a manual switch. . . . A detection circuit on CC will stop the process when the specified number of numbers has been placed in the memory, and the control will then be shifted to the orders located in the first position of the Selectron memory.

Deterministic, lossless translation between binary and decimal representation of numbers.

(40) 6.8.2 Since the computer operates in the binary system, some means of decimal-binary and binary-decimal conversions is highly desirable.

Interactivity between machine and human limited to typewriter input for ad hoc data input, and a single machine instruction deployed to halt computer and notify completion by flashing a light or ringing a bell.

(41) 6.8.4 . . . It is frequently very convenient to introduce data into a computation without producing a new wire. Hence it is planned to build one simple typewriter as an integral part of the computer.
(41) 6.8.5 There is one further order that the Control needs to execute. There should be some means by which the computer can signal to the operator when a computation has been concluded, or when the computation has reached a previously determined point. Hence an order is needed which will tell the computer to stop and to flash a light or ring a bell.

Last page is table of 21 machine operations.



Burks, Arthur W., Herman H. Goldstine and John von Neumann. “Preliminary Discussion of the Logical Design of an Electronic Computing Instrument.” U.S. Army Ordnance Department, 1946. Print.