Pilot ACE



The Pilot ACE (Automatic Computing Engine) was one of the first computers built in the United Kingdom. Built at the National Physical Laboratory (NPL) in the early 1950s, it was also one of the earliest general-purpose, stored-program computers – joining other UK designs like the Manchester Mark 1 and EDSAC of the same era. It was a preliminary version of the full ACE, which was designed by Alan Turing, who left NPL before the construction was completed.

History
Pilot ACE was built to a cut down version of Turing's full ACE design. After Turing left NPL (in part because he was disillusioned by the lack of progress on building the ACE), James H. Wilkinson took over the project. Donald Davies, Harry Huskey and Mike Woodger were involved with the design. The Pilot ACE ran its first program on 10 May 1950, and was demonstrated to the press in November 1950.

Although originally intended as a prototype, it became clear that the machine was a potentially useful resource, especially given the lack of other computing devices at the time. After some upgrades to make operational use practical, it went into service in late 1951 and saw considerable operational service over the next several years. One reason Pilot ACE was useful is that it was able to perform floating-point arithmetic necessary for scientific calculations. Wilkinson tells the story of how this came to be.

When first built, Pilot ACE did not have hardware for either multiplication or division, in contrast to other computers at that time. (Hardware multiplication was added later.) Pilot ACE started out using fixed-point multiplication and division implemented as software. It soon became apparent that fixed-point arithmetic was a bad idea because the numbers quickly went out of range. It only took a short time to write new software so that Pilot ACE could do floating-point arithmetic. After that, James Wilkinson became an expert and wrote a book on rounding errors in floating-point calculations, which eventually sold well.

Pilot ACE used approximately 800 vacuum tubes. Its main memory consisted of mercury delay lines with an original capacity of 128 words of 32 bits each, which was later expanded to 352 words. A 4096-word drum memory was added in 1954. Its basic clock rate, 1 megahertz, was the fastest of the early British computers. The time to execute instructions was highly dependent on where they were in memory (due to the use of delay-line memory). An addition could take anywhere from 64 to 1024 microseconds.

The machine was so successful that a commercial version of it, named the DEUCE, was constructed and sold by the English Electric Company.

Pilot ACE was shut down in May 1955, and was given to the Science Museum, where it remains today.

Software
Installing the magnetic drum in 1954 opened the way to develop a control program for running programs dealing with matrices. Following urging by J. M. Hahn of the British Aircraft Corporation, Brian W. Munday developed General Interpretive Programme (GIP), which required only simple codewords to run a collection of programs called "bricks". Each brick could perform a single task, such as to solve a set of simultaneous equations, to invert a matrix, and to perform matrix multiplication. Though there was nothing new in this concept, where GIP was unique was in the simplicity of the codewords that did not specify the bounds of the matrices. Bounds were taken from the matrix on the drum, where the bounds were the second and third element stored. When a matrix was punched on cards, the bounds were given as the first two elements. Thus, once a program was written, it could run automatically with different sizes of matrices, without needing to change the program. GIP was running in 1954, and was re-written for DEUCE, the successor to Pilot ACE.

Bricks to be used with GIP were written by M. Woodger, who devised a unique scheme for storing array elements, namely, "block floating". To use regular floating-point would have required two words for each element. The compromise was to use a single exponent for all the elements of an array. Thus, only one word was required for each element. Only the largest element(s) were normalized. Smaller elements were scaled accordingly. Though there was some loss of precision associated with the smaller elements, it was not great, considering that elements tended to be within a factor of ten of each other. The exponent was stored with the matrix, along with the dimensions.