IBM CP-40
CP-40 was a research precursor to CP-67, which in turn was part of IBM's then-revolutionary CP/CMS|CP/CMS – a virtual machine/virtual memory time-sharing operating system for the IBM System/360 Model 67, and the parent of IBM's VM family. CP-40 ran multiple instances of client operating systems – particularly CMS, the Cambridge Monitor System, built as part of the same effort. Like CP-67, CP-40 and the first version of CMS were developed by IBM's Cambridge Scientific Center staff, working closely with MIT researchers at Project MAC and Lincoln Laboratory. CP-40/CMS production use began in January 1967. CP-40 ran on a unique, specially modified IBM System/360 Model 40.
Project goals
CP-40 was a one-off research system. Its declared goals were:- Provide research input to the System/360 Model 67 team working in Poughkeepsie, who were breaking new ground with the as-yet-unproven concept of virtual memory.
- Support CSC's time-sharing requirements in Cambridge.
Features
CP-40 was the first operating system that implemented complete virtualization, i.e. it provided a virtual machine environment supporting all aspects of its target computer system, such that other S/360 operating systems could be installed, tested, and used as if on a stand-alone machine. CP-40 supported fourteen simultaneous virtual machines. Each virtual machine ran in "problem state" – privileged instructions such as I/O operations caused exceptions, which were then caught by the control program and simulated. Similarly, references to virtual memory locations not present in main memory cause page faults, which again were handled by control program rather than reflected to the virtual machine. Further details on this implementation are found in CP/CMS.The basic architecture and user interface of CP-40 were carried forward into CP-67/CMS, which evolved to become IBM's current VM product line.
Hardware platform
A Model 67 was not available for building CP-40, so a custom virtual memory device based on associative memory was designed and built for CSC. It involved both hardware and microcode changes to a specially modified System/360 Model 40. These changes gave the unit the technology needed for full virtualization of the System/360 hardware. This modified Model 40 influenced the design of the forthcoming Model 67, which was intended to meet the needs of the same community of time-sharing users.Three distinct virtual memory systems were implemented by IBM during this period:
- The "Blaauw Box", part of the original design of the S/360-67
- The "CAT Box", added to CSC's S/360-40 to run CP-40
- The "DAT Box", announced as an addition to the S/370 series in 1972
It is important to note that, although virtualization support was an explicit goal for CSC's modified Model 40, this was not apparently the case for the original Model 67 design. The fact that virtualization capabilities were ultimately implemented in the -67, and thus enabled the success of CP-67/CMS, speaks to the tenacity and persuasivness of the CSC team.
CMS under CP-40
CMS was first built in 1964 at CSC to run as a 'client' operating system under CP-40. The CMS project leader was John Harmon. Although any S/360 operating system could be run in a CP-40 virtual machine, it was decided that a new, simple, single-user interactive operating system would be best for supporting interactive time-sharing users. This would avoid the complexity and overhead of running a multi-user system like CTSS.By September 1965, many important CMS design decisions had already been made:
- User-friendly commands, with default-mode, non-required parameters wherever possible
- A basic set of file system commands and macros; a simple file naming convention, based on filename, filetype, and filemode
- Records mapped to fixed-size blocks, that could be read or written by relative record number
- Files that could be created simply by writing to them, without the need for special 'create' operations
- Default filemodes, allowing disks to be searched in a fixed order
The CMS file system design, with its flat directory structure, was kept deliberately simple. Creasy notes: "This structure of multiple disks, each with a single directory, was chosen to be simple but useful. Multi-level linked directories, with files stored in common areas, had been the design trend when we began. We simplified the design of this and other components of CMS to reduce implementation complexity."
Application programs running under CMS executed within the same address space. They accessed system services, such as the CMS file system, through a simple programming interface to the CMS nucleus, which resided in low memory within the CMS virtual machine. A variety of system calls were provided, most of which would be familiar to current CMS programmers.
Historical notes
The following notes provide brief quotes, primarily from Pugh, Varian, and Creasy , illustrating the development context of CP-40. Direct quotes rather than paraphrases are provided here, because the authors' perspectives color their interpretations. Also see History of CP/CMS for additional context.- Genesis of the CP-40 project:
- * CSC's Rasmussen felt "very dubious" about TSS/360 and decided that his idle CSC resources should be put to use creating a "credible time-sharing system for the S/360", which became known as CP-40. Project leader was Robert Creasy, who had been a CTSS programmer.
- * CP-40 goals included both conducting research and meeting CSC's own computing requirements via time-sharing. Varian adds: "The project’s real purpose was to build a time-sharing system, but the other objectives were genuine, too, and they were always emphasized in order to disguise the project’s “counter-strategic” aspects." Creasy describes CP/CMS goals this way: It was to be "a second generation time-sharing system for the newly announced IBM System/360... support all the activities of the Cambridge center, including such diverse activities as operating system research, application development, and report preparation by programmers, scientists, secretaries, and managers. Soon after its inception, it was convenient for the system to be recognized and financially supported from outside of the center as a tool to evaluate and test the performance of operating systems."
- * CSC's research was important to IBM, because at the time, "not much was really known about virtual memory systems." Varian quotes L.W. Comeau: " commitment to virtual memory was backed with no successful experience.... What was frightening is that nobody who was setting this virtual memory direction at IBM knew why Atlas didn’t work."
- CP-40 design: Pugh et al. write that: "In 1964...IBM Research were recommending the use of virtual-machine principles to time-sharing planners... picked up by the Cambridge team, who wanted, among other things, a system capable of testing operating systems." A key design decision, made by Creasy and Comeau at the end of 1964, was to base CP-40 not just on virtual memory but on virtual machines. Comeau: " permitted simultaneous development of CP and CMS; it allowed us to measure non-virtual systems, OS and DOS, in a virtual memory environment, and it also provided a high level of integrity and security."
- * In addition to revealing the value of full virtualization, the experimental IBM M44/44X "implanted the idea that the virtual machine concept is not necessarily less efficient than more conventional approaches" – a core assumption in the CP-40 architecture, and one that ultimately proved very successful.
- * CP-40 would soon support "up to a dozen virtual System/360 machines" under terminal control .
- CMS under CP-40:
Family tree