The '''Atlas Computer''' of the [[Victoria University of Manchester|University of Manchester]], England, became operational in [[1962]], as a joint development between the University, [[Ferranti]] and [[Plessey]]. It was arguably one of the world's first [[supercomputers]], and the fastest computer in the world until the release of the [[CDC 6600]]. It was said at the time that whenever it went offline half of the [[United Kingdom|UK]] computer capacity was lost. It was a second-generation computer, using germanium [[transistor]]s.
Two other Atlas machines were built: one for [[BP|British Petroleum]] and the [[University of London]] and one for the [[Atlas Computer Laboratory]] at Chilton near [[Oxford]]. A derivative system was built by Ferranti for [[University of Cambridge|Cambridge University]], called the [[Titan (computer)|Titan]] or Atlas 2, which had a different memory organisation, and ran a [[time-sharing]] operating system developed by Cambridge Computer Laboratory.
The University of Manchester's Atlas system was eventually decommissioned in [[1971]]. The last Atlas was in service until 1974. Parts of the Chilton Atlas are preserved by the National Museums of Scotland in Edinburgh.
==Technical description==
===Hardware===
The machine had many innovative features but the key operating parameters were as follows (the store size relates to the Manchester installation; the others were larger):
* 48-bit [[word size]]. A word could hold one floating-point number, one instruction, two 24-bit addresses or signed integers, or eight 6-bit characters.
* 24-bit (2 million words, 16 million characters) [[address space]] that embraced supervisor ('sacred') store, V-store, fixed store and the user store
* 16[[Kilo|K]] words of [[magnetic core memory|core store]] (equivalent to 96 [[kilobyte|KB]]), featuring interleaving of odd/even addresses
* 96K words of [[drum memory|drum store]] (eqv. to 576 KB), split across four drums but integrated with the core store using [[virtual memory]] (at that time referred to as 'one-level store') and [[paging]] techniques
* A large number (more than 100) of high-speed [[index register]]s (B-lines) that could be used for address modification in the mostly double-modified instructions. The register address space also included special registers such as the extracode operand address, the exponent of the [[floating-point]] [[accumulator (computing)|accumulator]] and three control ([[program counter]]) registers: supervisor control, extracode control and user control.
* Capability for the addition of (for the time) sophisticated new [[peripheral]]s such as [[magnetic tape]]
* Peripheral control through V-store addresses, [[interrupts]] and [[extracode]] routines
* An associative memory ([[content-addressable memory]]) to determine whether the desired virtual memory location was in core store
* [[Instruction pipeline|Instruction pipelining]]
It did not use a synchronous clocking mechanism so performance measurements were not easy but as an example:
* [[Fixed-point arithmetic|Fixed-point]] [[processor register|register]] add — 1.59 [[microsecond]]s
* [[Floating-point]] add, no modification — 1.61 microseconds
* Floating-point add, double modify — 2.61 microseconds
* Floating-point multiply, double modify — 4.97 microseconds
===Extracode===
One interesting feature of the Atlas was '''extracode''', a system that allowed new instructions to be added in software ([[firmware]] in modern terminology). There were some 250 extracodes.
The uppermost ten [[bit]]s of a 48-bit Atlas machine instruction denoted which operation should be performed. If the [[most significant bit]] was set to [[0 (number)|zero]], this was an ordinary machine instruction executed directly by the hardware.
If the uppermost bit was set to [[1 (number)|one]], this was an Extracode and was implemented as a special kind of [[subroutine]] jump to an [[memory address|address]] in the fixed store ([[Read-only memory|ROM]]) where that address was determined by the other nine bits. Extracode mode had its own [[program counter|program address counter]].
Many of the extracodes were what we would probably call [[microcode]]s nowadays; they were simple arithmetic [[procedures]] which would have been too inefficient to implement in [[computer hardware|hardware]], for example [[sine]], [[logarithm]], [[square root]]. However, about half of the codes were designated as Supervisor functions which invoked [[operating system]] procedures. Typical examples would be "Print the character specified on the stream specified" or "Read a block of 512 words from logical tape N".
Extracodes were the only means that a [[computer program|program]] could communicate with the Supervisor program.
The Atlas ''extracode'' concept is also found in the [[IBM System/360]] ''[[supervisor call]]'' (SVC) instruction, and in modern Intel CPUs under a misleading name of software-initiated 'interrupts', not to be confused with [[interrupt|hardware interrupt]]s.
On the [[Digital Equipment Corporation|DEC]] [[PDP-10]], the instruction set includes 64 UUOs (Unimplemented User Operations), the DEC equivalent of extracodes. Opcodes 1 through octal 37 (Local UUOs) allow trapping to programmer-generated code; opcodes octal 40 through octal 100 (Monitor UUOs) trap to various operating system services.
===Software===
A unique [[supervisory program]] known as the [[Atlas Supervisor]] managed the computer's processing time (as such it qualifies in modern terminology as an advanced [[Scheduling (computing)|job scheduler]], or a simple [[operating system]]).
One of the first [[high level language]]s available on Atlas was named [[Atlas Autocode]], which was contemporary to Algol60 and created specifically to address what Tony Brooker perceived to be some defects in that language. The Atlas did however support [[Algol 60]], as well as [[Fortran]] and [[COBOL]]. Being a university machine it was patronised by a large number of the student population who even had access to a protected [[machine code]] development environment.
<!-- What other [[operating system]]s and [[programming language]]s were available on the Atlas? [[CPL]] was intended to be made available. -->
==References==
*''The Central Control Unit of the 'Atlas' Computer'', F.H. Sumner, G. Haley, E.C.Y. Chen, Information Processing 1962, Proc. IFIP Congress '62
*''One-Level Storage System'', T. Kilburn, D.B.G. Edwards, M.J. Lanigan, F.H. Sumner, IRE Trans. Electronic Computers April 1962
*''The Manchester University Atlas Operating System, Part I: Internal Organization'', T. Kilburn, D.J. Howarth, R.B. Payne, F.H. Sumner, Comp. J. October 1961
*''The Manchester University Atlas Operating System, Part II: Users' Description'', D.J. Howarth, R.B. Payne, F.H. Sumner, Comp. J. October 1961
*''The Atlas Supervisor'', T. Kilburn, R.B. Payne, D.J. Howarth, reprinted from ''Computers -- Key to Total Systems Control'', Macmillan 1962
*''The Atlas Scheduling System'', D.J. Howarth, P.D. Jones, M.T. Wyld, Comp. J. October 1962
*''History of Manchester Computers'', S.H. Lavington, NCC Publications, 1975, ISBN 0-85012-155-8
*''The First Computers: History and Architectures'', edited by Raúl Rojas and Ulf Hashagen, 2000, MIT Press, ISBN 0-262-18197-5
*''A History of Computing Technology'', M.R. Williams, IEEE Computer Society Press, 1997, ISBN 0-8186-7739-2
*[http://history.dcs.ed.ac.uk/archive/docs/atlasautocode.html The Atlas Autocode Reference Manual]
[[Category:Early computers]]