Chapter 31
System design of a FORTRAN machine1
Theodore R. Bashkow / Azra Sasson / Arnold Kronfeld
Summary A system design is given for a computer capable of direct execution of FORTRAN language source statements. The allowed types of statements are the FORTRAN DO, GO TO, computed GO TO, Arithmetic, READ, PRINT, arithmetic IF, CONTINUE, PAUSE, DIMENSION and END statements. Up to two subscripts are allowed for variables and no FORMAT statement is needed. The programmer's source program is converted to a slightly modified form while being loaded and placed in a Program Area in lower memory. His original variable names and statement numbers are retained in a Symbol Table in upper memory, which also serves as the data storage area. During execution of the program each FORTRAN statement is read and interpreted at basic circuit speeds since the machine is a hardware interpreter for these statements. The machine corresponds therefore to a "one-pass, load-and-go" compiler except, of course, that there is no translation to a different machine language. It is estimated that the control circuitry for this machine will require on the order of 10,000 diodes and 100 flip-flops. This does not include arithmetic circuitry.
Index Terms Digital computer system, digital machine design, direct execution of FORTRAN, FORTRAN computer system, FORTRAN language machine, hardware interpreter.
Introduction
The algebraic languages, in particular FORTRAN in this country, have had enormous impact on the utilization of computers for scientific and engineering computation. They were designed in large part to overcome the annoyance of lengthy learning time and the laborious attention to detail needed to use a basic machine language.
These annoyances are overcome by providing a language which is closer to English in form, and freer of "bookkeeping" details, than the usual machine languages, and by providing a machine language program, called a compiler or translator, to convert from the source program written by a user to an object program executable by a computer. Thus the original drawbacks are overcome but the discrepancy between the external language of the user and the internal language of the machine leads to at least two others. The compilation run of the machine, during which the language translation is accomplished, is a waste of time and money to the user since he must pay for this time though he gets no problem answers from it. Secondly, the user has specified the logical flow and arithmetic details of his solution in the source language. However, when the machine "hangs up" or when he attempts to debug his program, all he finds displayed on the machine console is the machine language. (On large machines he gets equivalently an esoteric print-out in a symbolic form of machine language.) To overcome these difficulties one could use an interpretive translator of the source language instead, but the historical deficiencies of interpreters, loss of memory space and loss of speed of execution have caused this solution to be shunned.
Another solution is also possible-design a machine which executes an algebraic language directly as its "machine language." This approach is based on a recognition that once the allowable syntax and associated semantics of language statements have been firmly specified it is a matter of choice whether to write a compiler, to write an interpreter or to build an interpreter out of hardware. The software choice has been almost overwhelmingly to write a compiler. Since the choice of hardware interpreter, or machine, has not been made, and in fact has hardly been explored to any great extent, a study has been made in order to see if this choice leads to a system which is competitive with the usual software system. It should be understood that such a machine has not been constructed. However, the design2 is sufficiently complete that construction seems feasible.
Language-design philosophy
Since the machine language is to be an algebraic one it seemed reasonable to choose a simple subset of the most commonly used one, FORTRAN. This eliminates the necessity for inventing still another such language and allows attention to be focused on machine design. In fact, the subset chosen is quite close to that known as "Preliminary FORTRAN for the IBM 1620," which is complete enough to be quite useful, but which does not include
1
IEEE Trans., EC-16, vol. 4, pp. 485-499, August, 1967.2
See final technical report for Contract AF 19(628)-2798.363