# Arquitectura IBM System/360

L'arquitectura IBM System/360 és l'arquitectura independent del model per a tota la línia S/360 d'ordinadors mainframe, incloent però no limitada a l'arquitectura del conjunt d'instruccions. Els elements de l'arquitectura estan documentats als manuals IBM System/360 of Operation Principles of Operation i IBM System/360 I/O Interface Channel to Control Unit Original Equipment Manufacturers' Information manuals.

## Característiques

L'arquitectura System/360 ofereix les funcions següents:
* 16 registres d'ús general de 32 bits
* 4 registres de coma flotant de 64 bits
* Registre d'estat del processador (PSW) de 64 bits, que inclou una adreça d'instrucció de 24 bits
* 24 bits (16 MB) espai de memòria adreçable per bytes
* Big-endian byte/ordre de paraules
* Un conjunt d'instruccions estàndard, que inclou instruccions lògiques i aritmètiques binàries de punt fix, present a tots els models System/360 (excepte el Model 20, vegeu més avall).
** Un conjunt d'instruccions comercials, que afegeix instruccions aritmètiques decimals, és opcional en alguns models, igual que un conjunt d'instruccions científiques, que afegeix instruccions de coma flotant. El conjunt d'instruccions universal inclou tot l'anterior més les instruccions de protecció d'emmagatzematge i és estàndard per a alguns models.
** El Model 44 proporciona unes quantes instruccions úniques per a l'adquisició de dades i el processament en temps real i no té les instruccions d'emmagatzematge a emmagatzematge. Tanmateix, IBM va oferir una funció de " Conjunt d'instruccions comercials" que s'executava a l'emmagatzematge ràpid i simulava les instruccions que faltaven.
** El Model 20 ofereix una versió reduïda del conjunt d'instruccions estàndard, limitada a vuit registres generals només amb instruccions de mitja paraula (16 bits), més el conjunt d'instruccions comercials i instruccions úniques per a l'entrada/sortida.
** El Model 67 inclou algunes instruccions per gestionar adreces de 32 bits i "traducció d'adreces dinàmiques", amb instruccions privilegiades addicionals per proporcionar memòria virtual.

## Memòria

La memòria ( emmagatzematge ) a System/360 s'adreça en termes de bytes de 8 bits. Diverses instruccions operen en unitats més grans anomenades mitja paraula (2 bytes), paraula completa (4 bytes), paraula doble (8 bytes), paraula quàdruple (16 bytes) i bloc d'emmagatzematge de 2048 bytes, especificant l'extrem esquerre (adreça més baixa) de la unitat. Dins d'una paraula mitja, completa, doble o quàdruple, els bytes de nombre baix són més significatius que els bytes de nombre alt; això de vegades es coneix com a big-endian. Molts usos d'aquestes unitats requereixen alinear-les als límits corresponents. Dins d'aquest article, el terme paraula sense qualificació es refereix a una paraula completa
L'arquitectura original de System/360 preveia fins a 2$^{24}$ = 16.777.216 bytes de memòria. El model 67 posterior va ampliar l'arquitectura per permetre'n fins a 2 $^{32}$ = 4.294.967.296 bytes de memòria virtual.

## Adreçament

System/360 utilitza un adreçament truncat similar al de l'UNIVAC III. Això vol dir que les instruccions no contenen adreces completes, sinó que especifiquen un registre base i un desplaçament positiu de les adreces dels registres base. En el cas de System/360, l'adreça base es troba en un dels 15 registres generals. En algunes instruccions, per exemple els desplaçaments, es realitzen els mateixos càlculs per a quantitats de 32 bits que no són adreces.

## Formats de dades

L'arquitectura S/360 defineix formats per a caràcters, nombres enters, nombres enters decimals i números de coma flotant hexadecimals. Les instruccions de caràcters i sencers són obligatòries, però les instruccions decimals i de coma flotant formen part de les característiques d'aritmètica decimal i aritmètica de coma flotant.
* Els caràcters s'emmagatzemen com a bytes de 8 bits.
* Els nombres enters s'emmagatzemen com a valors binaris de complement a dos o mitja paraula completa.
* Els números decimals empaquetats s'emmagatzemen d'1 a 16 bytes de 8 bits que contenen un nombre senar de dígits decimals seguit d'un signe de 4 bits. Els valors de signe de l'hexadecimal A, C, E i F són positius i els valors de signe de l'hexadecimal B i D són negatius. Els valors de dígits de AF hexadecimal i els valors de signe de 0 a 9 no són vàlids, però les instruccions PACK i UNPK no comproven la validesa.
* Els números decimals zonificats s'emmagatzemen d'1 a 16 bytes de 8 bits, cadascun conté una zona als bits 0-3 i un dígit als bits 4-7. La zona del byte més a la dreta s'interpreta com un signe.
* Els números de coma flotant només s'emmagatzemen com a valors de paraula completa o de paraula doble en models antics. Als 360/85 i 360/195 també hi ha números de coma flotant de precisió ampliada emmagatzemats com a paraules quàdruples. Per als tres formats, el bit 0 és un signe i els bits 0-7 són una característica (exponent, esbiaixat per 64). Els bits 8-31 (8-63) són una fracció hexadecimal. Per a una precisió ampliada, la paraula doble d'ordre baix té el seu propi signe i característica, que s'ignoren a l'entrada i es generen a la sortida.

## Formats d'instrucció

Les instruccions de l'S/360 tenen dos, quatre o sis bytes de longitud, amb el codi operatiu en el byte 0. Les instruccions tenen un dels formats següents:
* RR (dos bytes). Generalment, el byte 1 especifica dos números de registre de 4 bits, però en alguns casos, per exemple, SVC, el byte 1 és un únic camp immediat de 8 bits.
* RS (quatre bytes). El byte 1 especifica dos números de registre; els bytes 2-3 especifiquen una base i un desplaçament.
* RX (quatre bytes). Els bits 0-3 del byte 1 especifiquen un número de registre o un modificador; els bits 4-7 del byte 1 especifiquen el número del registre general que s'utilitzarà com a índex; els bytes 2-3 especifiquen una base i un desplaçament.
* SI (quatre bytes). El byte 1 especifica un camp immediat; els bytes 2-3 especifiquen una base i un desplaçament.
* SS (sis bytes). El byte 1 especifica dos camps de longitud de 4 bits o un camp de longitud de 8 bits; els bytes 2-3 i 4-5 especifiquen cadascun una base i un desplaçament. La codificació dels camps de longitud és longitud-1.
Les instruccions han d'estar en un límit de dos bytes a la memòria; per tant, el bit de baix ordre de l'adreça d'instrucció és sempre 0.

## Paraula d'estat del programa (PSW)

La paraula d'estat del programa (PSW)  conté una varietat de controls per al programa en funcionament. El PSW de 64 bits descriu (entre altres coses) l'adreça de la instrucció actual que s'està executant, el codi de condició i les màscares d'interrupció.

## Sistema d'interrupció

L'arquitectura : 77–83 defineix 5 classes d'interrupció. Una interrupció és un mecanisme per canviar automàticament l'estat del programa; s'utilitza tant per a esdeveniments sincrònics com per a esdeveniments asíncrons.

## Entrada/sortida

Aquest article descriu l'E/S des de la perspectiva de la CPU. No tracta el cable o els connectors del canal, que tenen un article separat; hi ha un resum en un altre lloc i els detalls es poden trobar a la literatura d'IBM i a FIPS PUB 60-2.
L'E/S es realitza mitjançant un processador conceptualment separat anomenat canal. Els canals tenen el seu propi conjunt d'instruccions i accedeixen a la memòria independentment del programa que s'executa a la CPU. En els models més petits (fins a 360/50) un únic motor de microcodi executa tant el programa de la CPU com el programa del canal. En els models més grans, els canals es troben en armaris separats i tenen les seves pròpies interfícies amb la memòria. Un canal pot contenir diversos subcanals, cadascun amb l'estat d'un programa de canal individual. Un subcanal associat a diversos dispositius que no poden tenir programes de canal simultàniament s'anomena compartit; un subcanal que representa un únic dispositiu s'anomena no compartit.

## Referències

* ↑ «Architecture of the IBM System / 360» (en anglès). [Consulta: 27 gener 2025].
* ↑ «The IBM System/360 | IBM» (en anglès). [Consulta: 27 gener 2025].
* ↑ IBM Corporation. IBM System/360 System Summary (en anglès), 1974, p. 3-3.
* ↑ «[http://www.edwardbosworth.com/My3121_LectureSlides_PDF/ComputerArchitectureOverview_IBM370.pdf Overview of Computer Architecture The IBM System/360]» (en anglès). [Consulta: 27 gener 2025].
* ↑ A specification of general register 0 yield a base address of zero rather than the register content.