|
KDF9 was an early British computer designed and built by English Electric, later English Electric Leo Marconi, EELM, later still incorporated into ICL. It came into service ca. 1963 and was still in use at some installations in the early 1970s. Its logic circuits were entirely solid-state, being built from germanium diodes and pulse transformers, and ran on a 1 MHz two-phase clock. The maximum configuration incorporated 32K words of 48-bit core storage (192K bytes) with a cycle time of 6microseonds. Each word could hold a 48-bit integer or floating-point number, two 24-bit integers, six 8-bit instruction syllables, or eight 6-bit characters. There was also provision for efficient handling of double-word, 96-bit, floating point. However, there was no standard character set. Each I/O device type had its own more or less similar character code. Not every character that could be read from paper tape could be successfully printed, for example. The CPU architecture featured three register sets. The Nest was a 16-deep pushdown stack of arithmetic registers, The SJNS (Subroutine Jump Nesting Store) was a similar stack of return addresses. The Q Store was a set of 16 index registers, each of 48 bits divided in Counter (C), Increment (I) and Modifier (M) 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 and the M part incremented by the contents of the I part. This made the coding of counting loops very efficient. However,there was no facility for byte or character addressing, so that non-numerical work suffered by comparison. Instructions were of 1, 2 or 3 syllables. All arithmetic took place at the top of the Nest and used 1-syllable instructions. Q Store handling, and some memory reference instructions used 2 syllables. Memory reference instructions with a 16-bit address offset, and 16-bit literal load instructions, used 3 syllables. Dense instruction coding, and extensive use of the register sets, meant that a minimum of store cycles were needed for common scientific codes, such as scalar product and polynomial inner loops. This did much to offset the relatively slow core cycle, giving the KDF9 about 2/3 the speed of its more famous, but much more expensive, contemporary, the Manchester/Ferranti Atlas Computer. 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 locked into its own core area by BASE address and LIMIT registers. Each program had its own set 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 LIMIT register. Somewhat different was the 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 buffers. When a program blocked on such a Lock-Out, or waiting for an end-of-transfer, hardware switched to the program of next-highest priority that was not itself blocked. Later operating systems, including Eldon at the University of Leeds, and Egdon/COTAN, developed by a collaboration of Culham Laboratories, the University of Glasgow, and others, were fully interactive multi-access systems, usually 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 him to devise the Whetstone benchmark for scientific computation, which inspired in turn the Dhrystone benchmark for non-numerical workloads.. |