Chapter 3 The computer space 47
design. In fact, this effect is the substance of the functional specialization shown in the computer-space dimension.
Finally, there is one last part of the story, and it is the most interesting of all. Various groups of computer engineers have felt strongly from time to time that functional specialization should exist, and they have set out to create such machines. These efforts have often produced machines that were different from the existing main line of computers, i.e., were appropriately specialized. But the net effect of almost all such attempts has been that the new idea was seen to be good in general for all computers and was taken back into the main line of computers. Thus, what started out to be a functional separation turned out to be simply a way to produce rapid development of a more universally applicable computer. A classic example is the expansion of input/output facilities in creating a functionally specialized business machine, which simply led to better I/O facilities for all computers. We will have more to say about such examples as we discuss the values along the dimension.
Computer-system function
Scientific. The first machines were clearly designed for scientific calculations. In fact, Aberdeen Proving Grounds funded the early work on the ENIAC for the computation of ballistic firing tables. And the image used frequently by the early computer designers was the computer as a statistical clerk, the arithmetic unit being the desk calculator, the memory the work sheet, and the program the instructions that the mathematician gave to the clerk.
From a design standpoint, scientific computation has posed two striking requirements. The first is the great accuracy of the numbers, which has led to word lengths of 36 to 60 bits (11 to 18 decimal digits of significance) and arises from the propagation of roundoff error during repeated arithmetic operations. The second is the emphasis on fast arithmetic operations, i.e., for arithmetic power. In the early machines the standard rule for estimating computation times was to count the number of multiplications in a program; all else could be neglected. The arithmetic unit has developed to where the floating point multiply is hardly more expensive than floating point add. This requirement on fast arithmetic, however, has really been directed at the logical design level, not at the ISP or PMS level. Thus, the main effect at the ISP is the adoption of long word lengths, floating point data-types (in addition to integers), and an extensive repertoire of arithmetic operations in the ISP. The main PMS effect is the emphasis on the classic "statistical clerk" PMS design.
The press for increased arithmetic processing has led in recent times to the development of various forms of Pc concurrency, as in the look-ahead of Stretch (Chap. 34) and the n-instruction buffer of the CDC 6600 (Chap. 39). This might be considered a unique functional specialization for scientific computation. It is too early to tell, but it is our impression that, although the needs for scientific computation initiated the exploration of concurrency and parallelism, we will eventually see them in all computers above a certain power, whatever the task domain. Physical limits on component speed and signal propagation will make these techniques universally attractive.
A better case for permanent specialization can be made in the special algorithm computers, which compute the fast Fourier transform or do vector operations. Here we finally have systems whose whole design is responsive to a narrow class of problems. This may extend to the very special kinds of Pc parallelism exhibited by the ILLIAC IV (Chap. 27), although there is substantial generality in such systems.
Business. In the early days of electronic computing it was felt by many that there was a major functional separation between business computing and scientific computing.1 Scientific problems were "large computing-small input/output"; business problems were "small computing-large input/output." Certainly most of the existing computers, designed for scientific computation, had poor input/output facilities. The IBM 701, for example, used the Pc to control everything dynamically, actually catching the bits from running tapes on the fly (by executing well-timed small loops). These design efforts for business computers resulted in the IBM 702 (and subsequently the IBM 705, 708, and 7080). This machine had two major innovations for IBM: It used characters, and it had a PMS structure that permitted more flexible and voluminous input/output. The latter feature was immediately incorporated into scientific computers, e.g., into the 709, and then into all large scientific computers as separate input/output control (either Kio or Pio), for it was realized that there were also demands on input/ output for scientific calculation. Thus the bifurcation was temporarily halted.
The specialization to characters as a basic type (as opposed to long words) was already present in the IBM 702 but did not have its effect until 5 years later with the development of the IBM 1401 (Chap. 18). The latter machine was adapted to business, both in being character-based and in being small enough so that small businesses could afford it. It was extremely successful (many thousands were produced) and certainly represents a successful func-
1
Such feelings are still extant, but we are concerned here not with the validity of the feelings but with what they led to at a particular period of computer development.