IBM System/360

**IBM System/360 (S/360)** var en familie med 32-biter CISC stormaskiner som ble utviklet og produsert av IBM. Familien ble annonsert av IBM den 7. april 1964, og ble levert til kundene fra juni 1965 til 7. oktober 1977. IBM System/360 representerte et stort fremskritt, i den forstand at dette var de første datamaskinene som hadde et generelt bruksområde. Familien kunne således erstatte tidligere spesialiserte datamaskiner. Den var konstruert for å brukes til en komplett rekke med applikasjonsprogrammer, store og små, kommersielle og vitenskapelige. I konstruksjonen gjorde IBM et klart skille mellom datamaskinarkitektur (IBM System/360-arkitekturen) på den ene siden, og implementasjonen på den andre. Slik ble det mulig å produsere ulike modeller til forskjellige priser. Bortsett fra modell 44 (som ikke var kompatibel med resten), og de aller dyreste modellene, benyttet IBM System/360 mikrokode for instruksjonssettet. Dette var kjennetegnet av 8-biter byteadressering, og av binære, desimale og heksadesimale kalkulasjoner av flyttall.

Samtidig med lanseringen av IBM System/360, introduserte IBM sin Solid Logic Technology, en ny teknologi som var begynnelsen på kraftigere og samtidig mindre datamaskiner.

En av de første modellene var System/360 modell 30. Den kunne utføre 34&nbsp;500 instruksjoner per sekund, og hadde et hovedminne som varierte fra 8 til 64 Kb. Modeller med større ytelse kom senere. System/360 modell 91 ble levert i oktober 1967 og hadde en ytelse på 16,6 millioner instruksjoner per sekund. De største modellene kunne ha opptil 8 Mb med hovedminne. En typisk grunninstallasjon hadde 256 Kb hovedminne, men 512 Kb, 768 Kb og 1024 Kb var mer vanlig. I tillegg hadde modell 50, modell 65 og modell 75 støtte for opptil 8 Mb IBM 2361 Large Capacity Storage. Dette var et magnetkjerneminne med en syklus på 8 mikrosekunder og en aksesstid på 3,6 mikrosekunder.

IBM System/360 ble levert sammen med operativsystemet OS/360, som var et av de første operativsystemene som benyttet sekundært minne som en innebygd del av deres kjøring. IBM TSS/360 ble utviklet eksklusivt for modell 67 som en konkurrent til Multics, og ble senere erstattet av CP-67 og det tidsdelte miljøet Time Sharing Option i OS/360 Multiprogramming with a Variable number of Tasks (MVT) versjon 20.1. IBM utviklet også operativsystemene BOS/360, BPS/360, DOS/360 og TOS/360 for de minste modellene. I 1967 utviklet University of Michigan det tidsdelte operativsystemet Michigan Terminal System til bruk på modell 67 og de etterfølgende stormaskinene IBM System/370.

Hovedarkitekten bak System/360 var Gene Amdahl (1922&ndash;2015). Prosjektleder var Fred Brooks (1931&ndash;), og han var i sin tur underlagt Thomas J. Watson Jr. (1914&ndash;1993), som var IBMs andre president. Den kommersielle lanseringen i 1964 ble ledet av John R. Opel (1925&ndash;2011). System/360 var en salgssuksess. Kunder som kjøpte mindre systemer, kunne oppgradere til større uten å måtte omprogrammere maskinvaren eller kjøpe nytt periferiutstyr. De var en av de mest suksessfulle datamaskiner i historien, og påvirket konstruksjonen av datamaskiner i mange år fremover. IBM System/360 erstattet IBM 700/7000-serien og ble i sin tur etterfulgt av IBM System/370 (1970), IBM ESA/390 (1990), IBM System z (2000), IBM System z9 (2005), IBM System z10 (2008) og IBM zEnterprise System (2010). Med enkelte unntak, er programvare for System/360 kompatibel med z/Architecture.

## Historie
### En familie av stormaskiner
I kontrast til det som var den alminnelige industripraksisen, skapte IBM en hel serie av stormaskiner, fra liten til stor, fra lav ytelse til høy ytelse, som alle benyttet det samme instruksjonssettet (med unntak av to modeller som var ment for spesielle markeder). Dette gjorde det mulig for kunder å velge billigere modeller og deretter oppgradere til større systemer, dersom deres behov økte, uten å bruke tid og penger på å omskrive programvaren. IBM var den første produsenten til å benytte mikrokode, som er et av kjennetegnene på en CISC-arkitektur. Fordelen med dette var at det ble mulig å implementere en fullstendig rekke med datamaskiner som hadde høyst forskjellig ytelse. De største og raskeste modellene benyttet i stedet en logikk som var koblet direkte på datamaskinen.

Denne fleksibiliteten gjorde barrierene lavere for å investere i datamaskinene. Andre leverandører (med unntak av International Computers and Tabulators) stilte kundene overfor valget mellom maskiner som kunne bli foreldet og maskiner som hadde før høy ytelse, og dermed var for kostbare. Dette innebar igjen at mange selskaper avholdt seg fra å kjøpe datamaskiner.

### Modeller
IBM annonserte opprinnelig en serie på seks stormaskiner og 40 vanlige periferienheter. Til slutt leverte IBM i alt 14 modeller, deriblant enkelte sjeldne modeller for NASA. Den billigste modellen var IBM System/360 modell 20. Den hadde så lite som 4 Kb hovedminne, åtte 16-biter prosessorregistere i stedet for 16 stk 32-biter generelle registere, og et instruksjonssett som var delvis inkompatibelt med de andre modellene.

Den første annonseringen den 7. april 1964 omfattet modell 30, modell 40 og modell 50, så vel som modellene 60, 62 og 70. De tre første tilhørte det nederste og middelskiktet i ytelse, og var ment å erstatte IBM 1400-serien. De ble levert i april (modell 40), juni (modell 30) og august (modell 50) 1965. De tre siste var ment å erstatte IBM 700/7000-serien, men ble aldri lansert. I stedet ble de erstattet av modell 65 og modell 75, som ble lansert i henholdsvis november 1965 og januar 1966.

Modell 25 ble annonsert 3. januar 1968 og ble lansert i oktober 1968. Den var i hovedsak en forbedret utgave av modell 20. Modell 22 ble annonsert 7. april 1971 og var i hovedsak en modell 30 med et mindre hovedminne og tregere I/O-kanaler. Dette gjorde at den hadde harddisker og magnetbånd som var tregere og hadde lavere kapasitet enn modell 30.

Modell 44 var en spesialisert modell som var konstruert for vitenskapelig databehandling, sanntids databehandling og prosesskontroll. Den hadde noen ekstra instruksjoner, mens alle *storage-to-storage* instruksjoner og de fem andre komplekse instruksjoner var fjernet.

Etterfølgende modeller inkluderte modell 67 i 1966, (erstattet de forventede modellene 64 og 66, som ikke ble lansert), modell 85 i 1969, modell 91 i 1967 (erstattet modell 92 som ikke ble lansert), modell 95 i 1968 og modell 195 i 1971. Modell 85 var en mellomting mellom IBM System/360 og den etterfølgende familien IBM System/370. Den var også basis for modell 165 av IBM System/370. Det fantes også en IBM System/370-modell som var basert på modell 195, men den hadde ikke dynamisk adresseoversettelse.

Implementasjonene varierte mye, ved å bruke forskjellige bredder på databussene, forskjellig størrelse på hovedminnet samt nærvær eller fravær av mikrokode. Bortsett fra spesifikke unntak, var modellene kompatible med hverandre. Modell 91 var for eksempel konstruert for vitenskapelig databehandling og sørget for eksekvering utenfor rekkefølge. Den kunne likevel gi upresise avbrudd, hvis dette inntraff mens flere instruksjoner ble lest. Modellen manglet også et desimalt instruksjonssett for kommersielle applikasjoner. Nye egenskaper kunne tilføyes uten å krenke arkitekturens definisjoner. Modell 65 eksisterte i en versjon med symmetrisk flerprosessering i form av to mikroprosessorer (M65MP) med utvidelser for signaler mellom mikroprosessorene. Modell 85 introduserte et hurtigminne på 16 eller 32 Kb og utvidet presisjon for flyttall. Modellene 44, 75, 91, 95 og 195 var implementert uten mikrokode.

Modell 67 var den første datamaskinen fra IBM med dynamisk adresseoversettelse (*dynamic address translation* eller DAT) for å støtte tidsdeling. DAT blir i dag vanligvis referert til som en minnehåndterer, og modell 40 hadde en eksperimentell ekstern enhet for minnehåndtering. Modellene 64 og 66 var ment å være DAT-versjoner av modellene 60 og 62, men de ble ikke lansert. I stedet for modell 60, ble modell 67 lansert, og i stedet for modell 62 ble modell 65 lansert. Maskinvare for DAT skulle bli implementert i en av modellene til IBM System S/370, men var opprinnelig fraværende i denne serien. Også System S/370 tilbød modeller med to mikroprosessorer.

IBM sluttet å markedsføre alle modeller av IBM System/360 den 7. oktober 1977.

### Bakoverkompatibilitet
IBM's eksisterende kundebase hadde foretatt store investeringer i programvare som kjørte på tidligere datamaskiner. Noen modeller kunne leveres sammen med en emulator på kundens tidligere datamaskiner (IBM 1400-serien på modell 30 og IBM 7094 på modell 65) ved å bruke en kombinasjon av spesiell maskinvare, en spesiell mikrokode og et emuleringsprogram som brukte de emulerte instruksjoner til å simulere det nye datasystemet, slik at gamle programmer kunne kjøre på den nye datamaskinen. Kundene måtte likevel stanse datamaskinen og laste inn emulatorprogrammet. Modell 85 og senere IBM System/370 hadde også emulatorvalgene, men tillot dem å kjøre under operativsystemets kontroll sammen med datamaskinens egne programmer.

### Etterfølgere og varianter
Bortsett fra modell 20, ble IBM System/360 erstattet av den kompatible serien IBM System/370 i 1970. Brukere av modell 20 var ment å gå over til IBM System/3. Ideen om et stort teknologisk gjennombrudd gjennom IBM Future Systems project, ble forkastet i 1975 på grunn av prosjektets kostnader og ønsket om kontinuitet. Senere kompatible stormaskiner inkluderer IBM 3090, IBM ES/9000, IBM 9672 i IBM System/390-familien, IBM System z, IBM System z9, IBM System z10 og IBM zEnterprise System.

Datamaskiner som hadde nesten samme eller kompatibel maskinkode eller arkitektur som IBM System/360, var Amdahl Corporations 470-familie og etterfølgere, Hitachi stormaskiner, UNIVAC 9000, Fujitsus FACOM, RCA Spectra 70 og English Electrics System 4. System 4 ble bygd på lisens fra RCA. RCA solgte Spectra-serien til UNIVAC, hvor de ble til UNIVAC 70-serien. UNIVAC utviklet også UNIVAC 90 som etterfølgere til UNIVAC 9000 og UNIVAC 70. Sovjetunionen produserte en klone av IBM System/360 fra 1969 til 1978 som ble kalt ES EVM.

Den portable datamaskinen IBM 5100 Portable Computer, som ble introdusert i 1975, kunne kjøre IBM System/360's programmeringsspråk APL.SV gjennom en maskinvare-emulator. IBM benyttet denne tilnærmelsen for å unngå kostnader og forsinkelser når de skapte en 5100-spesifikk versjon av APL.

Spesielle strålingsherdede og på annen måte modifiserte utgaver av IBM System/360, i form av den IBM System/4 Pi-baserte avionikk-datamaskin, brukes i flere jagerfly og bombefly. I sin komplette 32-biter AP-101 versjon, ble datamaskiner basert på IBM System/4 Pi brukt i fem replikerte nav i det feiltolerante datasystemet til romfergeprogrammet. USAs Federal Aviation Administration benyttet IBM 9020, en spesiell regneklynge av modifiserte IBM System/360, til luftfartskontroll fra 1970 til 1990-årene. Noe av programvaren brukes fortsatt via emulering på nyere maskinvare.

### Tabell over System/360 modeller

## Teknisk beskrivelse
### Innflytelsesrike egenskaper

IBM System/360 introduserte en rekke industristandarder. slik som:
*8-biters byte (finansielle forhold presset på for å redusere lengden på en byte til 4 eller 6 biter), snarere enn å adoptere konseptet fra IBM 7030 om å aksessere bytes av en variabel lengde på tilfeldige bit-adresser
*8-biter byteadressering, i motsetning til bit- eller ordadressering
*32-biter ord
*Buss- og kanal I/O standardisert gjennom FIPS-60
*Kommersiell bruk av mikrokode
*IBM Floating Point Architecture
*EBCDIC tegnsett
*9-spors magnetbånd

### Arkitektur

IBM System/360 hadde en spesifikasjon av en datamaskinarkitektur. Denne spesifikasjonen gjorde ingen antagelser om implementasjonen, men beskrev bare grensesnittet og den forventede adferd til implementasjonen. Arkitekturen beskriver standard grensesnitt som må være tilstede i implementasjonen og valgfrie grensesnitt. Noen aspekter ved denne arkitekturen er:

**[[Endian|Big endian]]* byterekkefølge
*En mikroprosessor med
**16 stk 32-biter generelle registere (R0-R15)
**Et 64-biter programstatusord (PSW), som beskriver (blant andre ting):
***Avbruddsmasker
***Privilegert status
***En tilstandskode
***En 24-biter programteller
**En avbruddsmekanisme, med maskerbare og ikke-maskerbare avbruddsklasser og underklasser
**Et instruksjonssett. Hver instruksjon er fullstendig beskrevet og definerer betingelsene for gjenkjennelse av et unntak i form av et avbrudd.
*Et primært datalager med:
**8 biter per byte
**Et eget område for mikroprosessorkommunikasjon som starter ved adresse 0
**24-biter adressering
*Manuelle kontrolloperasjoner som tillater:
**En oppstartsprosess kalt *Initial Program Load* (IPL)
**Operator-initierte avbrudd
**Omstart av systemet
**Grunnleggende fasiliteter for avlusing av programvarefeil
**Manuell visning og modifikasjoner av systemets tilstand (hukommelse og mikroprosessor)
* En mekanisme for inn- og utmatning

Enkelte aspekter ved arkitekturen var valgfrie:
* BCD-kodede instruksjoner
* Flyttallsinstruksjoner
* Et tidsur for intervaller
* Nøkkelkontrollert minnebeskyttelse

Alle modeller, bortsett fra modell 20 og modell 44, implementerte denne spesifikasjonen.

Binære aritmetiske og logiske operasjoner blir utført som register-til-register og som minne-til-register/register-til-minne instruksjoner som en standard egenskap. Hvis opsjonen *Commercial Instruction Set* var satt, da kunne BCD-aritmetikk utføres som minne-til-minne operasjoner, med enkelte tilfeller av minne-til-register operasjoner. Hvis opsjonen *Scientific Instruction Set* var installert, hadde man tilgang til fire flyttalsregistere som kunne bli programmert for enten 32-biter eller 64-biter flyttallsoperasjoner. Modellene 85 og 195 kunne også operere på flyttall med 128-biter utvidet presisjon som var lagret i par av flyttallsregistere. Dette kunne også gjøres gjennom programvare-emulering i andre modeller. System/360 benyttet en 8-biters byte, 32-biter ord. 64-biter dobbeltord og 4-biter nibble. Maskininstruksjonene hadde operatorer med operander, som kunne inneholde registertall eller minneadresser. Denne komplekse kombinasjonen av opsjoner av instruksjoner førte til en stor mengde instruksjonslengder og instruksjonsformater.

Adressering ble oppnådd ved å benytte en baseadresse + forskyvning på registrene 1 til F15. Forskyvningen var kodet i 12 biter. System/360 tillot således en 4096-byte forskyvning (0-4095), som et offset fra adressen som var lagret i baseregisteret.

Register 0 kunne ikke brukes som baseregister eller indeksregister, og heller ikke som et *branch* adresseregister. «0» var reservert til å indikere en adresse i de første 4 Kb av minnet. Hvis register 0 var spesifisert som beskrevet, var verdien 0x00000000 implisitt innmatning til den effektive adressekalkulasjon i stedet for en hvilken som helst verdi som måtte befinne seg innenfor register 0. Hvis det var spesifisert som et *branch* adresseregister, ble ingen *branch* foretatt, og innholdet i register 0 ble ignorert, men instruksjonens sideeffekter ble utført.

Denne spesifikke adferd muliggjorde innledende utførelse av en avbruddsrutine, ettersom baseregistrene ikke nødvendigvis var satt til 0 under de første få instruksjonssykluser av en avbruddsrutine. Den var ikke behøvelig for IPL (*Initial Program Load* eller oppstart), ettersom man alltid kunne tømme et register uten behov for å lagre det.

Med unntak av modell 67, var adressene virkelige adresser. Virtuell hukommelse var ikke tilgjengelig i de fleste av IBMs stormaskiner før IBM System/370. Modell 67 introduserte en arkitektur for virtuell hukommelse; denne ble tatt i bruk av Michigan Terminal System, CP-67 og IBM TSS/360, men ikke av de ulike avartene av OS/360.

Maskinkode-instruksjonene var 2 bytes lange uten minne-operander, 4 bytes lange med en operand eller 6 bytes lange med to operander. Instruksjonene var alltid plassert innenfor 2-bytes grenser.

Instruksjoner som MVC *(Move-Characters)* (heksadesimalt: D2) kunne flytte på det meste 256 bytes med informasjon. For å flytte mer enn 256 bytes, var det påkrevd med flere MVC-instruksjoner. System/370 introduserte en familie av mer kraftige instruksjoner, som for eksempel instruksjonen MVCL *(Move-Characters-Long)*, som støttet flytting av opptil 16 Mb i en enkeltt blokk.

En operand var to bytes lang, og presenterte vanligvis en adresse som en 4-biter nibble med et baseregister og en 12-biter forskyvning relativ til innholdet i dette registeret, innenfor områder  (heksadesimalt). Adressen som korresponderte med denne operanden var innholdet i det spesifiserte generelle register pluss forskyvningen. En MVC-instruksjon som flyttet 256 bytes (med lengde 255, heksadesimalt som FF) fra baseregister 7 (pluss forskyvning 000) til baseregister 8 (pluss forskyvning 001) ville bli kodet som 6-byte instruksjonen  (operator, lengde, adresse1, adresse2).

System/360 var konstruert for å skille mellom *systemtilstanden* og *problemtilstanden*. Dette sørget for et grunnleggende nivå av sikkerhet og muligheten til å gjenopprette datamaskinen fra programmeringsfeil. Problemprogrammer kunne ikke modifisere data eller programlagring knyttet til systemtilstanden. Feil i adressering, data eller operasjon fikk datamaskinen til å gå inn i systemtilstanden gjennom en kontrollert rutine, slik at operativsystemet kunne prøve å korrigere eller avslutte programmet som hadde feil. På samme måte kunne den gjenopprette visse maskinvarefeil gjennom rutiner for *datamaskinsjekk*.

### Kanal I/O

## Noter



## Referanser


## Eksterne lenker
* 

* Generasjoner av IBM 360/370/3090/390, av Lars Poulsen, med lenker og referanser