English Electric KDF9


KDF9 was an early British computer designed and built by English Electric. The first machine came into service in 1964 and the last of 29 machines was decommissioned in 1980 at the National Physical Laboratory. The KDF9 was designed for, and used almost entirely in, the mathematical and scientific processing fields in 1967, nine were in use in UK universities and technical colleges. The KDF8, developed in parallel, was aimed at commercial processing workloads.
The KDF9 was an early example of a machine that directly supported multiprogramming, using offsets into its core memory to separate the programs into distinct virtual address spaces. Several operating systems were developed for the platform, including some that provided fully interactive use through PDP-8 machines acting as smart terminal servers. A number of compilers were available, notably a number of Algol 60 compilers.

Architecture

The logic circuits of the KDF9 were entirely solid-state. The KDF9 used transformer-coupled diode–transistor logic, built from germanium diodes, about 20,000 transistors, and about 2,000 toroid pulse transformers. They ran on a 1 MHz clock that delivered two pulses of 250 ns separated by 500 ns, in each clock cycle. The maximum configuration incorporated 32K words of 48-bit core storage with a cycle time of 6 microseconds. Each word could hold a 48-bit integer or floating-point number, two 24-bit integer or floating-point numbers, six 8-bit instruction syllables, or eight 6-bit characters. There was also provision for efficient handling of double-word numbers in both integer and floating point formats. However, there was no facility for byte or character addressing, so that non-numerical work suffered by comparison. Its standard character set was a version of the Friden Flexowriter paper tape code that was oriented to Algol 60, and included unusual characters such as the Algol subscript 10. However, each other I/O device type implemented its own subset of that. Not every character that could be read from paper tape could be successfully printed, for example.

Registers

The CPU architecture featured three register sets. The Nest was a 16-deep pushdown stack of arithmetic registers, The SJNS was a similar stack of return addresses. The Q Store was a set of 16 index registers, each of 48 bits divided into Counter, Increment and Modifier parts of 16 bits each. Flags on a memory-reference instruction specified whether the address should be modified by the M part of a Q Store, and, if so, whether the C part should be decremented by 1 and the M part incremented by the contents of the I part. This made the coding of counting loops very efficient. Three additional Nest levels and one additional SJNS level were reserved to Director, the Operating System, allowing short-path interrupts to be handled without explicit register saving and restoring. As a result, the interrupt overhead was only 3 clock cycles.

Instruction set

Instructions were of 1, 2 or 3 syllables. Most arithmetic took place at the top of the Nest and used zero-address, 1-syllable instructions, although address arithmetic and index updating were handled separately in the Q store. Q Store handling, and some memory reference instructions used 2 syllables. Memory reference instructions with a 16-bit address offset, most jump instructions, and 16-bit literal load instructions, all used 3 syllables.
Dense instruction coding, and extensive use of the register sets, meant that relatively few store accesses were needed for common scientific codes, such as scalar product and polynomial inner loops. This did much to offset the relatively slow core cycle time, giving the KDF9 about a third of the speed of its much more famous, but 8 times more expensive and much less commercially successful contemporary, the Manchester/Ferranti Atlas Computer.

Multiprogramming (timesharing)

The KDF9 was one of the earliest fully hardware-secured multiprogramming systems. Up to four programs could be run at once under the control of its elegantly simple operating system, the Timesharing Director, each being confined to its own core area by BA and NOL registers. Each program had its own sets of stack and Q store registers, which were activated when that program was dispatched, so that context switching was very efficient.
Each program could drive hardware I/O devices directly, but was limited by hardware checks to those that the Director had allocated to it. Any attempt to use an unallocated device caused an error interrupt. A similar interrupt resulted from overfilling the Nest or SJNS, or attempting to access storage at an address above that given in the NOL register. Somewhat different was the Lock-Out interrupt, which resulted from trying to access an area of store that was currently being used by an I/O device, so that there was hardware mutual exclusion of access to DMA buffers. When a program blocked on a Lock-Out, or by voluntarily waiting for an I/O transfer to terminate, it was interrupted and Director switched to the program of highest priority that was not itself blocked. When a Lock-Out cleared, or an awaited transfer terminated, and the responsible program was of higher priority than the program currently running, the I/O Control unit interrupted to allow an immediate context switch. IOC also made provision to avoid priority inversion, in which a program of high priority waits for a device made busy by a program of lower priority, requesting a distinct interrupt in that case.
Later operating systems, including Eldon 2 at the University of Leeds, and COTAN, developed by UKAEA Culham Laboratories with the collaboration of Glasgow University, were fully interactive multi-access systems, with PDP-8 front ends to handle the terminals.
The Kidsgrove and Whetstone Algol 60 compilers were among the first of their class. The Kidsgrove compiler stressed optimization; the Whetstone compiler produced an interpretive object code aimed at debugging. It was by instrumenting the latter that Brian Wichmann obtained the statistics on program behaviour that led to the Whetstone benchmark for scientific computation, which inspired in turn the Dhrystone benchmark for non-numerical workloads.

Reminiscence

Machine code programming used an unusual form of octal, known locally as 'bastardized octal'. It represented 8 bits with three octal digits but the first digit represented only the two most-significant bits, whilst the others the remaining two groups of three bits each. A more polite colloquial name was 'silly octal', derived from the official name which was syllabic octal. Although the word 'byte' had been coined by the designers of the IBM 7030 Stretch for a group of eight bits, it was not yet well known, and English Electric used the word 'syllable' for what is now called a byte.
Within English Electric, its predecessor, DEUCE, had a well-used matrix scheme based on GIP. The unreliability of valve machines led to the inclusion of a sum-check mechanism to detect errors in matrix operations. The scheme used block floating-point using fixed-point arithmetic hardware, in which the sum-checks were precise. However, when the corresponding scheme was implemented on KDF9, it used floating point, a new concept that had only limited mathematical analysis. It quickly became clear that sum checks were no longer precise and a project was established in an attempt to provide a usable check. + C is not necessarily the same as A + Before long, however, it was recognized that error rates with transistor machines was not an issue; they either worked correctly or didn’t work at all. Consequently, the idea of sum checks was abandoned. The initial matrix package proved a very useful system testing tool as it was able to generate lengthy performance checks well before more formal test packages which were subsequently developed.
KDF9 was developed as project KD9
The Egdon operating system was so named because one was going to UKAEA Winfrith: in Thomas Hardy's book The Return of the Native Winfrith Heath is called Egdon Heath. Their Fortran was called Egtran. Eldon was so named because Leeds University's computer was located in a converted Eldon chapel.

Physical

The machine weighed more than. Control desk with interruption typewriter 300 lb, main store and input/output control unit 3,500, arithmetic and main control unit 3,500, power supply unit 3,000.