THE CIRRUS COMPUTER Its Design, History and Significance

Emeritus Professor Chris J. Barter The University of Adelaide

Abstract Australia was a leader in the design, construction and use of computers in the late 1940s to the early 1960s. The CIRRUS computer, designed and built at the University of Adelaide between 1958 and 1962, is an important part of that story. CIRRUS was a transistorised, magnetic core memory machine, with microcoded instruction sets, stored in changeable read-only memory, with multi-tasking, time-sharing, interactive multi-user capability and sophisticated memory management. The first computer in the world with all those attributes, anticipating the shape of computer designs for the next decade. Second Generation Computers In the mid-1950s, junction transistors became available to build so-called ‘Second Generation Machines’. There were five second generation computers designed and built in Australia in the late 1950s and early 1960s – ADA, SNOCOM, CIRRUS, ATROPOS and ARCTURUS – summarised in the publication “Connections in the History of Australian Computing”, by John Deane.1 ADA1,4 , designed by Murray Allen, was a transistorised and programmable automatic differential analyser, started in 1956 as a PhD project, when commercial germanium junction transistors became available. SNOCOM1,17, designed by Allen and David Wong at Sydney University for the Snowy Mountains Authority (SMA), was the first transistor general purpose computer built in Australia, using the engineering designs developed in ADA, and was delivered to the SMA in 1960, and used extensively in that organization. ATROPOS1, designed and constructed at the Weapons Research Establishment (WRE) laboratories in South Australia in 1962, was created to make impact predictions of rockets fired at the Woomera rocket range, using tracking radar signals as inputs. ARCTURUS1, a small general purpose computer designed by Wong using his SNOCOM experience, was completed in 1966. The CIRRUS Computer CIRRUS1,2,3,6,7,8,9,10,11,12,18 was a transistorised, magnetic core memory machine, with microcoded instruction sets, stored in changeable read-only memory (ROM), with multi-tasking, time-sharing, interactive multi-user capability and sophisticated memory management, the first computer in the world with all those attributes, anticipating the shape of computer designs for the next decade. The Head of Electrical Engineering at the University of Adelaide, Professor E.O. Willoughby, wished to establish a research group in “digital techniques and systems”. In 1958, he hired Allen and Gordon Rose as the nucleus of the group.5 Allen would build on his experience of digital electronic design in ADA4 and SNOCOM1,17 at the University of Sydney. Rose had research

interests in computer structures and at the Weapons Research Laboratory. Other members of the founding group were PhD students I. R. Butcher and M. R. Haskard. In 1958, Allen set out the design parameters and basic architecture of the machine: 1. The machine would adopt Sir ’ concept of microprogramming a control unit for the generation of register transfer sequences; 2. The machine was to be a timesharing one from the outset, but because of the complexity of the microcode required for the timesharing operating system, the control unit was designed as a “sub-computer”; 3. The basic machine was to be simple, fast and economical in components, and all higher level functionality was to be through microprogramming. The architecture of the basic machine was conventional, but the advanced features and novel performance of the computer would lie with the design of the sub-computer and its microprograms. 4. ROM was to be used to store microprograms, but because many microprograms were likely to involve hundreds of microinstructions, the ROM would have to be very large; 5. It would use magnetic core main memory, and use the latest transistors; 6. Very little of the designs Allen used in ADA and SNOCOM would be of direct use because of the very low currents of the latest high-frequency transistors, the size of core memory and read only memory required. This required experimental research into the engineering of the components of the computer. PhD students Butcher and Haskard were to investigate the use of the recently available high-frequency transistors (including OC44 transistors provided by Philips Research Laboratories in Adelaide) in the design of high-speed flip-flops for registers and the arithmetic logic unit (ALU), core memory (Haskard) and read-only memory drivers (Butcher). The engineering challenge was that the latest surface barrier transistors had only low current capability, whereas the core memory and read-only memories required high-current drivers. Meeting this challenge was crucial to the feasibility of the project, and that work commenced mid-1958.5 The design was published as “The Design of a Digital Computer” by Allen, Rose, Butcher and Haskard in 19596. The report describes the CIRRUS system architecture at the register transfer level (Allen and Rose) and provides details of the electronic experiments and circuit designs (Butcher and Haskard). It was later published in summary form in a conference paper in 19607. In 1959, John Sanderson was appointed at the University, having had experience in compilers at the Weapons Research Laboratory, and worked on the CIRRUS instruction set and compiler. Late in 1959, John Penny undertook a postgraduate degree under Allen’s supervision, having developed an interest in multiprogramming at the CSIRO Division of Mathematical Statistics in Adelaide. Both made significant contributions to the software aspects of CIRRUS. Trevor Pearcey took an interest in the project on his return to CSIRO Melbourne in 1959. Figure 1 of the report sets out the design of a very basic computer, with a conventional register transfer architecture, with main memory, registers, an ALU, a register store and a control unit. The tight budget dictated the minimum possible components. For example, the ALU had only four operations on registers – integer add/subtract, increment/decrement, logical differ and logical product. All other functionality was to be provided through microprogramming.13 To be clear, the basic computer only executes micro-instructions, one at a time. The sub-computer executes microprograms so as to deliver a stream of micro-instructions to the basic computer. The microprogramming envisaged was to be at the architectural level, not simply the generation of control signals from single machine instructions as in a classic Wilkes control unit; accordingly, the CIRRUS control unit was conceived as a ‘sub- computer’. This was succinctly put in an email dated 9 March 2017 by Gordon Rose: “…from the beginning, CIRRUS’s architecture was to be microprogrammed (essentially detailed register transfer sequences) which required a fast read-only memory as it underpinned overall performance.” The architecture of the sub-computer is given in Figure 5 of the report, consisting of an execution unit, a microcode store, a local sequence counter and output gate registers. Many machine code instructions would map directly onto a single micro- instruction, while some complex operations were hundreds of micro-instructions long. These microprograms are managed using a microprogram sequence counter in the sub-computer, which holds the address of the next micro-instruction in the control store to be executed by the sub-computer. The end result of all this is that the sub-computer, in its role as a control unit, generates gate control signals and timing signals to the main computer. The report details the design of a register store which could, through microprogramming, emulate a set of general registers, initially as a cost saving measure, but which proved valuable for context switching in timesharing. The report discusses time-

2 “The CIRRUS Computer: Its Design, History and Significance”, by Chris J. Barter sharing (aka parallel programming) as a solution to the problem of the mismatch in speed between CPU operations and input/output operations on low-cost input-output devices. Allen’s student, Penny, implemented timesharing8,9,15, testing his programs on a CIRRUS emulator he wrote for the WRE IBM 7090. Software development could be undertaken before the hardware was constructed. This was a very early example of hardware/software co-design and bootstrapping. Penny wrote this up as a Masters thesis8 [MSc, 1961], and it was later published with Pearcey as co-author. [ref. Penny and Pearcey9, 1962] In time-sharing, more than one program could be in memory at any one time, and when an I/O operation was executed on the running program, a scheduler would transfer control to another program, so keeping the CPU busy. John Sanderson11 wrote an assembler for a symbolic assembly code called A Code, and later a compiler, C Code, to run on the CIRRUS emulator, and wrote the microprograms which facilitated the execution of Penny’s timesharing system, written in a mix of A Code and microcode. CIRRUS was constructed at the University of Adelaide9,10, (with grants from the University, WRE and the Postmaster-General (PMG’s) Department) by postgraduate students and technical staff of the Electrical Engineering Department. Mainframe wiring was done at Philips Pty Ltd, Hendon, South Australia, to university specifications10. Construction was completed in 1962, and testing was mostly completed in that year. Other notable persons in the early years were Rob Potter, Igor Hawryskiewycz, his brother Peter Hawryskiewycz, and Werner Dorfl, through whose efforts it remained in University service for teaching and research use until late 1971, when CIRRUS was retired. More on Time-sharing, Multi-User and Memory Management in CIRRUS Sanderson11 wrote an assembler to convert symbolic machine instructions (A Code) into 32 bit machine instructions, and a microprogram to interpret the machine instruction as the execution of the microcode in the control store corresponding to that instruction. This allowed user programs to be written in A Code, assembled into machine instructions in main memory, and executed. System programs were similarly written in A Code, with some microcode for speed where needed, as was the case for the timesharing monitor (the Director8,9). These system programs, along with useful subroutines and functions, were stored in main memory, in the half of main memory address space which was implemented as cheap ROM similar to that of the control store. System programs such as assemblers and compilers were able to be time-shared with user programs. Time-sharing was a solution to the problem of the mismatch in speed between CPU operations and input/output (I/O) operations. To quote Penny and Pearcy9, “… it was estimated that for about 79 percent of reading time and 93 percent of punching time, the central processor would be idle. It was obvious, therefore, that CIRRUS had a particular need for some form of timesharing during input and output.” In time-sharing, more than one program could be in memory at any one time, and when an I/O operation was executed on the running program, a scheduler would transfer control to another program, so keeping the CPU busy. Switching was managed through a set of sequence counters in main memory, being the address of the next instruction to be executed for each program. The register memory held index register values for each program. On a program switch, the appropriate sequence counter and index registers would be re-set. A dynamic priority scheme was used to implement fairness of access to the CPU by programs. All systems programs were timeshared, including assemblers and compilers. It also allowed multiple users concurrent access to the machine, with each user provided with a keyboard and printer, working independently. “… the single computer should appear to behave as a set of separate and independent computers.”9 Because time-sharing leads to store fragmentation, dynamic store management was essential, so “… programs within the store may shifted up, thereby consolidating all vacant store space.”9 Microprogramming, Read-Only Memory and Trevor Pearcey Report No 1 discusses ROM and makes an indirect reference to Pearcey at the Radar Research Establishment (later the Royal Radar Establishment, RRE) in the United Kingdom. At the time, the RRE was experimenting with an adaptation of Wilkes’ ROM, working on ferrite ROM for storing common subroutines for the TREAC computer at RRE. Pearcey was engaged in writing subroutines for ROM from late 1957 through to 1959, and Allen and Pearcey were in communication during that time.3 At the RRE, as with Wilkes’ ROM, wires were threaded through a matrix of ferrite cores, either passing through or around them, signifying a zero or a one. Information was not stored in the cores but in the pattern of the wiring. The memory capacity was limited by the number of wires that could be threaded through the cores, but the cores of the time were inadequate for practical subroutine libraries. RRE developed cores capable of threading a larger number of wires, around 1958.6 The CIRRUS ROM design in Report No 1 adopted the new technology and provided for 512 wires each holding either microcode or subroutine code (8 bits wide), giving a memory capacity of 4096 bytes. When the ROM was eventually built, cores

3 “The CIRRUS Computer: Its Design, History and Significance”, by Chris J. Barter were not used. It was constructed using a two dimensional array of ferrite rods, with wires wound to one side or the other of them. This allowed an even greater number of program wires, not limited by the core diameter. They were also much simpler to construct, not having to thread wires through the centre of cores. When built, the ROM had 1024 wires, each encoding 4 words of 36 bits, a total memory capacity of 4096 words. The wires were woven on removable boards which could be substituted by other boards if required. This way, instruction sets could be changed quickly. [cf IBM36016 below]. Wired (rope) memories, compared to the read-write core memories of the time, were significantly lower in cost, weight and volume. This was of great interest to NASA for its space flight program. In early 1963, Rose visited the Instrumentation Laboratory (now the Charles Stark Draper Laboratory, Inc.) at the Massachusetts Institute of Technology (MIT) and discussed the rope memory which had been operational in CIRRUS since 1962. Correspondence from the then Assistant Director acknowledged his visit: “We are finding the Australian ideas on ‘ropes’ to be very fruitful indeed, and we are going ahead with some development work on them.”20 MIT’s Instrumentation Laboratory subsequently designed the Apollo Guidance Computers (AGCs) using rope memories, including the two used for the Command and Lunar Modules of Apollo 11. Construction was by Raytheon.21 The role of Pearcey in the CIRRUS story is controversial, with claims that he was a major contributor to the design2. This is in stark contrast to the fact that Pearcey is neither included as an author of Report No 16, which simply states that Allen and Pearcey were in communication in 1958, nor is he credited within the report for any aspect of CIRRUS’s design. Both Allen and Pearcey were familiar with Wilkes’ work on microprogramming1,3,5,7,14, and the project was widely discussed among interested researchers at the University, the WRE and CSIRO. Pearcey was known to have continued an interest in CIRRUS on his return to the CSIRO in Melbourne in 19594. For clarity, Allen has confirmed that “the design was complete before Pearcey returned to Australia”.19 International Comparisons with CIRRUS Contemporary machines did not have all of the attributes summarised for CIRRUS above; those which came closest in time and functionality were the LEO III, the KDF9, the Cambridge 2 and the Canadian FP6000. The LEO III (UK 1962) was micro-coded, but not in ROM, and had multi-tasking, but not multi-user functionality. The English Electric KDF9 was similar to the LEO III, and the University of Adelaide placed the very first order for one in 1960. It had design problems and was not deliverable until 1963, so the order was cancelled. One was bought by Professor John Bennet at the University of Sydney. The ATLAS 2 (aka Titan at Cambridge University 1963/64) had both multi-taking and multi-user but not microprogramming. The FP6000 (Canada, Packard, 1963) had multi-tasking, and it is suggested17 that its design was influenced by CIRRUS. The FP6000 design evolved into the ICT 1900 (in 1964), a best-selling computer of its time. In the USA, the PDP-8 (1965) was multi-tasking, but not multi-user for another two years. The IBM 360, introduced in 1964, had all the functionality of CIRRUS except multi-user timesharing, which was eventually provided by the operating system CP/CMS in 1967. Like CIRRUS, microprograms could be easily replaced as they were stored in a punch card format, and inserted into a capacitance reader17. References: 1. J. Deane, “Connections in the History of Australian Computing”, In Tatnall A. (eds) History of Computing. Learning from the Past. IFIP Advances in Information and Communication Technology, vol. 325. Springer, Berlin, Heidelberg, 2010. 2. G. Philipson, A vision Splendid: The History of Australian Computing, Australian Computer Society, ACS-ebook-2017. www.acs.org.au 3. T. Pearcey, History of Australian Computing, Chisholm Institute of Technology, 1988. 4. M. W. Allen, “ADA, A Transistor Decimal Digital Differential Analyser”, WRE 1957: Data Processing and Automatic Computing Machines Conference at WRE, Salisbury South Australia, June 1957. 5. Private correspondence, by email, phone and personal meeting with Gordon Rose and Murray Allen, 2011 – 2018. 6. M. W. Allen, G. A. Rose, I. R. Butcher and M. R. Haskard, The Design of a Digital Computer: Report No. 1, Digital Techniques Laboratory, Electrical Engineering Department, University of Adelaide, November, 1959. Re-published in (7) 7. M. W. Allen, G. A. Rose, “System Design of CIRRUS”, First Conference on Automatic Computing and Data Processing in Australia, ANCCAC Sydney 1960.

4 “The CIRRUS Computer: Its Design, History and Significance”, by Chris J. Barter 8. J. P. Penny, Application of the Principles of Time-Sharing in the Design of a Multiprogramme Digital Computer, M.Sc. thesis, The University of Adelaide, 1961. 9. J. P. Penny, T. Pearcey,“Use of Multiprogramming in the Design of a Low Cost Digital Computer” Comms, ACM, vol. 5, pp. 473–76; September 1962. 10. M. W. Allen, T. Pearcey, J. P. Penny, G.A. Rose, G.A. J.G. Sanderson, “CIRRUS, An Economical Multiprogram Computer with Microprogram Control”, IEEE Transactions on Electronic Computers, pp. 663-671; December 1963. 11. J. G. Sanderson, “The Design of a Programming System for the Cirrus Computer”, Paper C19, Proc. 2nd ANCC Conf., Melbourne, 1963. 12. J. P. Penny, Multiprogramming for a Small Scale Scientific System, PhD thesis, The University of Adelaide, 1966. 13. R. J. Mercer, “Microprograming” J. ACM, vol. 4, pp. 157-171, April 1957. 14. M. V. Wilkes, “Microprogramming”, Proc. Eastern Joint Computer Conf., Philadelphia, Pa., pp. 18-20; December 3-5, 1958. 15. C. Strachey, “Time-sharing in Large, Fast Computers”, International Conference on Information Processing, Paris, France, June 13-20, 1959. 16. http://www.computerhistory.org/revolution/mainframe-computers/7/164 17. “Concentration on large-scale systems 1958 to 1963” Technology in Australia 1788-1988, Ch. 8, III, Part 2, iv, p. 592 Australian Academy of Technological Sciences and Engineering, 1988. http://www.austehc.unimelb.edu.au/tia/592.html 18. B.P. Kidman, R.B. Potts, Paper Tape and Punched Cards: the early history of computing and computing science at the University of Adelaide, 1999. http://www.catalogue.nla.gov.au/Record/101364 19. Meeting between Murray Allen, Gordon Rose and Chris Barter on 14 December 2019 in Sydney. 20. Letter from Ramon L. Alonso to Gordon Rose, dated 10 December 1963. 21. Detailed information regarding the AGC’s use of rope memory is widely available on the internet. For example https://spectrum.ieee.org/tech-history/space-age/software-as-hardware-apollos-rope-memory and https://www.hq.nasa.gov/office/pao/History/computers/Compspace.html

5 “The CIRRUS Computer: Its Design, History and Significance”, by Chris J. Barter