Content deleted Content added
m Dating maintenance tags: {{Cn}} |
Guy Harris (talk | contribs) →External links: Use the Bitsavers version of the S/370-67 reference card. |
||
(44 intermediate revisions by 24 users not shown) | |||
Line 1:
{{short description|1967 IBM mainframe model with virtual memory and 32-bit addressing}}
{{further|System/360|History of IBM}}
{{use American English|date=September 2022}}
{{use mdy dates|date=September 2022}}
{{Infobox computing device
| name = IBM System/360 Model 67
| title =
| aka =
|
| image_size = 270px
| logo = IBM Logo 1967-1972.svg
| image = IBM360-67AtUmichWithMikeAlexander.jpg
| caption = IBM System/360 Model 67-2 (duplex) at the University of Michigan, c. 1969
| developer =
Line 47 ⟶ 51:
}}
[[Image:IBM-S360-67ConfigurationConsoleCloseup.jpg|thumb|right|Left side, 2167 configuration console for the IBM/System 360 Model 67-2 (duplex) at the University of Michigan, c. 1969]]
{{anchor|Dynamic Address Translation}}<!---target of #REDIRECT and other references, and a multi-language subject--> The '''IBM System/360 Model 67''' ('''S/360-67''') was an important [[IBM mainframe]] model in the late 1960s.<ref name=IBM-S360-67-FuncChar>[http://bitsavers.org/pdf/ibm/360/functional_characteristics/GA27-2719-2_360-67_funcChar.pdf ''IBM System/360 Model 67 Functional Characteristics''], Third Edition (February 1972), IBM publication GA27-2719-2</ref> Unlike the rest of the [[IBM System/360|S/360]] series, it included features to facilitate [[time-sharing]] applications, notably a [[memory management unit|Dynamic Address Translation unit]], the "DAT box", to support [[virtual memory]], [[32-bit]] addressing and the 2846 Channel Controller to allow sharing channels between processors. The S/360-67 was otherwise compatible with the rest of the S/360 series.
== Origins ==
The S/360-67 was intended to satisfy the needs of key [[time-sharing]] customers, notably [[MIT]] (where [[Project MAC]] had become a notorious IBM sales failure), the [[University of Michigan]], [[General Motors]], [[Bell Labs]], [[Princeton University]],
In the mid-1960s a number of organizations were interested in offering interactive computing services using [[time-sharing]].<ref name=Topol30Years>{{cite journal|url=https://www.msu.edu/~mrr/mycomp/mts/others/feat02.htm|title=A History of MTS—30 Years of Computing Service|author=Susan Topol|journal=Information Technology Digest|volume=5|issue=5|date=May 13, 1996|publisher=University of Michigan|archive-url=https://web.archive.org/web/20130501092032/https://www.msu.edu/~mrr/mycomp/mts/others/feat02.htm|archive-date=May 1, 2013}}</ref> At that time the work that computers could perform was limited by their lack of real memory storage capacity. When IBM introduced its [[System/360]] family of computers in the mid-1960s, it did not provide a solution for this limitation and within IBM there were conflicting views about the importance of time-sharing and the need to support it.
A paper titled ''Program and Addressing Structure in a Time-Sharing Environment'' by [[Bruce Arden]], [[Bernard Galler]], [[Franklin H. Westervelt|Frank Westervelt]] (all associate directors at the University of Michigan's academic Computing Center), and Tom O'Brian building upon some basic ideas developed at the Massachusetts Institute of Technology (MIT) was published in January 1966.<ref name=ArdenVM1966>{{cite journal|url=http://portal.acm.org/citation.cfm?doid=321312.321313|title=Program and Addressing Structure in a Time-Sharing Environment|author1=B. W. Arden|author-link1=Bruce Arden|author2=B. A. Galler|author-link2=Bernard Galler|author3=T. C. O'Brien|author4=F. H. Westervelt|author-link4=Franklin H. Westervelt|journal=[[Journal of the ACM]]|volume=13|issue=1|pages=1–16|date=January 1966|doi=10.1145/321312.321313|s2cid=9302487 |doi-access=free}}</ref> The paper outlined a [[virtual memory]] architecture using dynamic address translation (DAT) that could be used to implement time-sharing.
After a year of negotiations and design studies, IBM agreed to make a one-of-a-kind version of its S/360-65 mainframe computer for the University of Michigan. The S/360-65M<ref name=Topol30Years/> would include dynamic address translation (DAT) features that would support [[virtual memory]] and allow support for time-sharing. Initially IBM decided not to supply a time-sharing operating system for the new machine.
As other organizations heard about the project they were intrigued by the time-sharing idea and expressed interest in ordering the modified IBM S/360 series machines. With this demonstrated interest IBM changed the computer's model number to S/360-67 and made it a supported product. When IBM realized there was a market for time-sharing, it agreed to develop a new time-sharing operating system called [[TSS
The first S/360-67 was shipped in May 1966. The S/360-67 was withdrawn on March 15, 1977.<ref>
Before the announcement of the Model 67, IBM had announced models 64 and 66, DAT versions of its 60 and 62 models, but they were almost immediately replaced by the 67 at the same time that the 60 and 62 were replaced by the 65.<ref>
== Announcement ==
Line 69 ⟶ 72:
* "Special bid restrictions have been removed from the System/360 Model 67" (i.e., it was now generally available)
* It included "multiprocessor configurations, with a high degree of system availability", with up to four processing units [while configurations with up to four processors were announced, only one and two
* It had "its own powerful operating system...[the] Time Sharing System monitor (TSS)" offering "virtually instantaneous access to and response from the computer" to "take advantage of the unique capabilities of a multiprocessor system"
* It offered "dynamic relocation of problem programs using the dynamic address translation facilities of the 2067 Processing Unit, permitting response, within seconds, to many simultaneous users"
Line 75 ⟶ 78:
==Virtual memory==
The S/360-67 design
The S/360-67 provided a 24- or 32-bit address space<ref name=IBM-S360-67-FuncChar/> – unlike the strictly 24-bit address space of other S/360 and early S/370 systems, and the 31-bit address space of S/370-XA available on later S/370s. The S/360-67 virtual address space was divided into ''pages'' (of 4096 bytes)<ref name=IBM-S360-67-FuncChar/> grouped into ''segments'' (of 1 million bytes); pages were dynamically mapped onto the processor's real memory. These S/360-67 features plus reference and change bits as part of the storage key enabled operating systems to implement [[demand paging]]: referencing a page that was not in memory caused a [[page fault]], which in turn could be intercepted and processed by an operating system [[interrupt handler]].
Line 82 ⟶ 85:
* '''Large address space.''' It mapped physical memory onto a larger pool of virtual memory, which could be dynamically swapped in and out of real memory as needed from random-access storage (typically: disk or drum storage).
* '''Isolated OS components.''' It made it possible to remove most of the operating system's [[memory footprint]] from the user's environment, thereby increasing the memory available for application use, and reducing the risk of applications intruding into or corrupting operating system data and programs.
* '''Multiple address spaces.''' By implementing multiple virtual [[address space]]s, each for a different user, each user could potentially have a private [[virtual machine]].
Line 88 ⟶ 91:
== Features ==
{| class=infobox
|-
| style="border-style: none;" |
{| class="wikitable" style="font-size:55%"
|+ S/360 Extended PSW{{sfn|func67|loc=[http://bitsavers.org/pdf/ibm/360/functional_characteristics/GA27-2719-2_360-67_funcChar.pdf#page=15 Instruction Fetching and Execution]|pp=15-16}}
|-
| colspan=34 style="border-style: none;" | <br>
|-
| style="width:.5%; text-align:left; border-style: none none none none;" |
| colspan=4 | spare
| 24/32<br>Bit<br>Mode
| Tran<br>Ctrl
| I/O<br>Mask
| Ext.<br>Mask
| colspan=4 | Key
| A
| M
| W
| P
| colspan=2 | ILC
| colspan=2 | CC
| colspan=4 | Program<br>Mask
| colspan=8 | spare
| style="width:.5%; text-align:left; border-style: none none none none;" |
|-
| style="width:.5%; text-align:left; border-style: none none none none;" |
| style="width:1%; text-align:left; border-style: none none none none;" | 0
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 1 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 2 -->
| style="width:1%; text-align:left; border-style: none none none none;" | 3
| style="width:1%; text-align:left; border-style: none none none none;" | 4
| style="width:1%; text-align:left; border-style: none none none none;" | 5
| style="width:1%; text-align:left; border-style: none none none none;" | 6
| style="width:1%; text-align:left; border-style: none none none none;" | 7
| style="width:1%; text-align:left; border-style: none none none none;" | 8
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 9 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 10 -->
| style="width:1%; text-align:right; border-style: none none none none;" | 11
| style="width:1%; text-align:left; border-style: none none none none;" | 12
| style="width:1%; text-align:left; border-style: none none none none;" | 13
| style="width:1%; text-align:left; border-style: none none none none;" | 14
| style="width:1%; text-align:left; border-style: none none none none;" | 15
| style="width:1%; text-align:left; border-style: none none none none;" | 16
| style="width:1%; text-align:right; border-style: none none none none;" | 17
| style="width:1%; text-align:left; border-style: none none none none;" | 18
| style="width:1%; text-align:right; border-style: none none none none;" | 19
| style="width:1%; text-align:left; border-style: none none none none;" | 20
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 21 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 22 -->
| style="width:1%; text-align:right; border-style: none none none none;" | 23
| style="width:1%; text-align:left; border-style: none none none none;" | 24
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 25 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 26 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 27 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 28 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 29 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 30 -->
| style="width:1%; text-align:right; border-style: none none none none;" | 31
| style="width:.5%; text-align:left; border-style: none none none none;" |
|-
| style="border-style:none;" | <br>
|-
| style="width:.5%; text-align:left; border-style: none none none none;" |
| colspan=32 | Instruction Address
|-
| style="width:.5%; text-align:left; border-style: none none none none;" |
| style="width:1%; text-align:left; border-style: none none none none;" | 32
| style="width:1%; text-align:left; border-style: none none none none;" | 36
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 33 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 34 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 35 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 36 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 37 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 38 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 39 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 40 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 41 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 42 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 43 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 44 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 45 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 46 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 47 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 48 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 49 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 50 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 51 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 52 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 53 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 54 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 55 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 56 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 57 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 58 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 59 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 60 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 61 -->
| style="width:1%; text-align:left; border-style: none none none none;" | <!-- 62 -->
| style="width:1%; text-align:right; border-style: none none none none;' | 63
| style="width:.5%; text-align:left; border-style: none none none none;" |
|-
| colspan="34" style="border-style: none;"|
{| class="wikitable mw-collapsible autocollapse"
|+ {{nowrap|S/360 Extended PSW abbreviations}}
|-
! style="width:10%; text-align:left;"| Bits
! style="width:10%; text-align:left;"| Field
! style="width:80%; text-align:left;"| Meaning
|-
| 0–3
|
| Spare (must be 0)
|-
| 4
|
| 24/32-bit Address mode
|-
| 5
|
| Translation Control
|-
| 6
| IO
| I/O Mask (Summary)
|-
| 7
| EX
| External Mask (Summary)
|-
| 8–11
| Key
| Protection Key
|-
| 12
| A
| ASCII
|-
| 13
| M
| Machine-check mask
|-
| 14
| W
| Wait state
|-
| 15
| P
| Problem state
|-
| 16–17
| ILC
| Instruction-Length Code{{sfn|S360|loc=[http://bitsavers.org/pdf/ibm/360/princOps/A22-6821-7_360PrincOpsDec67.pdf#page=177 Instruction-Length Code]|p=156}}
|-
| 18–19
| CC
| Condition Code
|-
| 20–23
| PM
|
{| class="wikitable mw-collapsible autocollapse"
|+ style="text-align: left;" | {{nowrap|Program Mask}}
! Bit
! Meaning
|-
| 20
| Fixed-point overflow
|-
| 21
| Decimal overflow
|-
| 22
| Exponent underflow
|-
| 23
| Significance
|}
|-
| 24–31
|
| Spare
|-
| 32–63
| IA
| Instruction Address
|}
|}
|}
The S/360-67 included the following extensions in addition to the standard and optional features available on all S/360 systems:<ref name=IBM-S360-67-FuncChar/>
* 16 [[control register#Control registers in IBM 360/67|control registers]]
* Dynamic Address Translation (DAT) with support for 24 or 32-bit virtual addresses using segment and page tables (up to 16 segments each containing up to 256 4096 byte pages)
* Extended PSW Mode that enables, e.g., additional interrupt masking,
* High Resolution Interval Timer with a resolution of approximately 13 microseconds
* Reference and change bits as part of storage protection keys
Line 119 ⟶ 313:
Three basic configurations were available for the IBM System/360 model 67:
* Simplex—one IBM 2067-1 processor, two to four IBM 2365-2 Processor Storage components (512K to 1M bytes), up to seven data channels, and other peripherals. This system was called the IBM System/360 model
* Half-duplex—one IBM 2067-2 processor, two to four IBM 2365-12 Processor Storage components (512K to 1M bytes), one IBM 2167 Configuration Unit, one or two IBM 2846 Channel Controllers, up to fourteen data channels, and other peripherals.
* Duplex—two IBM 2067-2 processors, three to eight IBM 2365-12 Processor Storage components (768K to 2M bytes), one IBM 2167 Configuration Unit, one or two IBM 2846 Channel Controllers, up to fourteen data channels, and other peripherals.
A half-duplex system could be upgraded in the field to a duplex system by adding one IBM 2067-2 processor and the third IBM 2365-12 Processor Storage, unless the half-duplex system already had three or more. The half-duplex and duplex configurations were called the IBM System/360 model
== Operating systems ==
{{Further-text|[[History of IBM mainframe operating systems]]|[[TSS/360]]|[[CP/CMS]]|[[Michigan Terminal System|MTS]]|[[VP/CSS]]}}
When the S/360-67 was announced in August 1965, IBM also announced [[TSS/360]], a time-sharing operating system project that was canceled in 1971 (having also been canceled in 1968, but reprieved in 1969). IBM subsequently modified TSS/360 and offered the TSS/370 [[Request price quotation|PRPQ]]<ref>{{cite book
| title = TSS/370 User Data
| id = GX28-6400-3
| date = July 1978
| edition = Fourth
| url = http://bitsavers.org/pdf/ibm/360/tss/GX28-6400-3_TSS_370_User_Data_Jul78.pdf
| publisher = IBM
}}
</ref> for three releases before cancelling it.
IBM's failure to deliver TSS/360 as promised opened the door for others to develop operating systems that would use the unique features of the S/360-67
MTS, the [[Michigan Terminal System]], was the time-sharing operating system developed at the University of Michigan and first used on the Model 67 in January 1967. Virtual memory support was added to MTS in October 1967. Multi-processor support for a duplex S/360-67 was added in October 1968.<ref>Pugh, ''op. cit., p.'' 364 – MTS on dual processor S/360-67 in 1968</ref>
[[CP/CMS]] was the first [[virtual machine]] operating system. Developed at IBM's [[Cambridge Scientific Center]] (CSC) near MIT. CP/CMS was essentially an unsupported research system, built away from IBM's mainstream product organizations, with active involvement of outside researchers. Over time it evolved into a fully supported IBM operating system ([[VM/370]] and today's [[z/VM]]).
[[VP/CSS]], based upon CP/CMS, was developed by [[National CSS]] to provide commercial time-sharing services.
== Legacy ==
The S/360-67 had an important legacy. After the failure of [[TSS/360]], IBM was surprised by the blossoming of a time-sharing community on the S/360-67 platform ([[CP/CMS]], [[Michigan Terminal System|MTS]], [[MUSIC/SP|MUSIC]]). A large number of commercial, academic, and service bureau sites installed the system. By taking advantage of IBM's lukewarm support for time-sharing, and by sharing information and resources (including source code modifications), they built and supported a generation of time-sharing centers.
The unique features of the S/360-67 were initially ''not'' carried into IBM's next product series, the [[System/370]], although the [[IBM System/370 Model 145|370/145]] had an [[Content-addressable memory|associative memory]] that appeared more useful for paging than for its ostensible purpose.<ref name=SY24-3581-1>{{cite
| url = http://www.bitsavers.org/pdf/ibm/370/fe/3145/SY24-3581-1_3145_Processing_Unit_Theory-Maintenance_Oct71.pdf
| title = IBM Maintenance Library 3145 Processing Unit Theory - Maintenance
|
|
| publisher = IBM
| pages = 2{{hyp}}117–2{{hyp}}129
}}</ref> This was largely fallout from a bitter and highly visible political battle within IBM over the merits of [[time-sharing]] versus [[batch processing]]. Initially at least, time-sharing lost.
However, IBM faced increasing customer demand for time-sharing and virtual memory capabilities. IBM also could not ignore the large number of S/360-67 time-sharing installations – including the new industry of [[time-sharing]] vendors, such as [[National CSS]]<ref>[http://www.computerhistory.org/corphist/documents/doc-42ae226a5a4a1.pdf "A technical history of National CSS"], Harold Feinleib, Computer History Museum (March 2005)</ref><ref>[http://www.computerhistory.org/corphist/documents/doc-422fd82791f26.pdf "From the very
In 1972, IBM added virtual memory features to the S/370 series, a move seen by many as a vindication of work done on the S/360-67 project
| url = http://www.bitsavers.org/pdf/ibm/370/fe/3145/SY24-3581-4_3145_Processor_Theory_Maintenance.pdf
| title = IBM Maintenance Library 3145 Processing Unit Theory - Maintenance
| edition = Fifth
| id = SY24-3581-4
| publisher = IBM
| page = CPU 139
}}</ref> The survival and success of IBM's [[VM (operating system)|VM]] family, and of virtualization technology in general, also owe much to the S/360-67.
In 2010, in the technical description of its latest mainframe, the [[IBM zEnterprise System|z196]], IBM stated that its software virtualization started with the System/360 model 67.<ref>{{cite web|url=http://publibfp.dhe.ibm.com/epubs/pdf/sg247832.pdf|id=SG24-7832-00|title=IBM zEnterprise System Technical Introduction|page=57|quote=Starting in 1967, IBM has continuously provided software virtualization in its mainframe servers.|access-date=November 13, 2015|archive-date=January 15, 2018|archive-url=https://web.archive.org/web/20180115163440/http://publibfp.dhe.ibm.com/epubs/pdf/sg247832.pdf|url-status=dead}}</ref>
==See also==
* [[Virtual memory]]
==Further
* E.W. Pugh, L.R. Johnson, and John H. Palmer, ''IBM's 360 and early 370 systems,'' MIT Press, Cambridge MA and London, {{ISBN|0-262-16123-0}}, includes extensive (819 ''pp.'') treatment of IBM's offerings during this period
* Melinda Varian, [http://www.princeton.edu/~melinda/25paper.pdf ''VM and the VM community, past present, and future
*{{cite book
| title = IBM System/360 Principles of Operation
| edition = Eighth
| date = September 1968
| url = http://bitsavers.org/pdf/ibm/360/princOps/A22-6821-7_360PrincOpsDec67.pdf
| id = A22-6821-7
| ref = {{sfnref|S360}}
| publisher = IBM
}}
*{{Cite book
| title = IBM System/360 Model 67 Functional Characteristics
| id = GA27-2719-2
| date = February 1972
| edition = Third
| ref = {{sfnref|func67}}
| url = http://bitsavers.org/pdf/ibm/360/functional_characteristics/GA27-2719-2_360-67_funcChar.pdf
| publisher = IBM
}}
==References==
{{Reflist}}
==External links==
* A. Padegs, [http://www.research.ibm.com/journal/rd/255/ibmrd2505D.pdf "System/360 and Beyond"], ''IBM Journal of Research & Development, vol. 25 no. 5, pp.''
* [http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/systemSummary/GA22-6810-12_360sysSumJan74.pdf ''IBM System/360 System Summary''], thirteenth edition, January 1974, IBM publication GA22-6810-12, pages 6–13 to 6-15 describe the model 67
* [
* [http://www.eecis.udel.edu/~mills/gallery/gallery8.html Several photos] of a dual processor IBM 360/67 at the [[University of Michigan]]'s academic Computing Center in the late 1960s or early 1970s are included in [[David L. Mills|Dave Mills']] article describing the [[Michigan Terminal System]] (MTS)
* [http://history.cs.ncl.ac.uk/anniversaries/40th/images/ibm360_672/index.html Pictures of an IBM S/360-67 at Newcastle (UK) University]
Line 178 ⟶ 406:
[[Category:Time-sharing]]
[[Category:Computer-related introductions in 1968]]
[[Category:VM
|