Content deleted Content added
m fix a couple more |
JohnGDallman (talk | contribs) →Features: Clarify floating point register numbers. |
||
(7 intermediate revisions by 5 users not shown) | |||
Line 79:
| style="border-style: none;" |
{| class="wikitable" style="font-size:75%"
|+ Floating Point Registers 0
|-
| colspan=34 style="border-style: none;" | <br>
Line 319:
|
{| class="wikitable mw-collapsible autocollapse"
|+ style="text-align: left; font-size:95%" | {{nowrap|Program Mask}}
! Bit
! Meaning
Line 359:
Memory (''storage'') in System/360 is addressed in terms of [[8-bit]] bytes. Various instructions operate on larger units called ''halfword'' (2 bytes), ''fullword'' (4 bytes), ''doubleword'' (8 bytes), ''quad word'' (16 bytes) and 2048 byte storage block, specifying the leftmost (lowest address) of the unit. Within a halfword, fullword, doubleword or quadword, low numbered bytes are more significant than high numbered bytes; this is sometimes referred to as [[big-endian]]. Many uses for these units require aligning them on the corresponding boundaries. Within this article the unqualified term ''word'' refers to a ''fullword''.
The original architecture of System/360 provided for up to 2<sup>24</sup> = 16,777,216 bytes of memory. The later [[IBM System/360 Model 67|Model 67]] extended the architecture to allow up to 2<sup>32</sup> = 4,294,967,296
==Addressing==
Line 369:
| publisher = Sperry Rand Corporation
}}
</ref> That means that instructions do not contain complete addresses, but rather specify a base register and a positive offset from the addresses in the base registers. In the case of System/360 the base address is contained in one of 15
==Data formats==
Line 404:
| align=center valign=top | 0-7
| valign=top style="align:left;" | {{anchor|System_Mask}}System Mask
| valign=top | bits 0-5: enable channels 0-5, bit 6: enable all remaining channels,{{
|-
| align=center valign=top | 8-11
Line 412:
| align=center valign=top | 12{{anchor|AMWP}}
| valign=top | ASCII mode
| enable ASCII mode for packed decimal instructions, never used by IBM software
|-
| align=center valign=top | 13
Line 451:
==Interruption system==
The architecture<ref name=A22-6821-7/>{{rp|pages=77–83}} defines 5 classes of [[interrupt]]ion. An interruption is a mechanism for automatically changing the program state; it is used for both synchronous
{| class="wikitable"
|-
! rowspan="2" | Interruption class !! colspan="2" | Old PSW !! colspan="2" | New PSW
! rowspan="2" | Priority
|-
!
|-
| [[#Input/Output interruption|Input/Output]]{{sfn|PoOps|pp=78-79}} || 38
|-
| [[#Program interruption|Program]]{{sfn|PoOps|pp=79–80.1}} || 28
|-
| [[#Supervisor Call interruption|Supervisor Call]]{{sfn|PoOps|pp=80.1–81}} || 20
|-
| [[#External interruption|External]]{{sfn|PoOps|pp=81–82}} || 18
|-
| [[#Machine Check interruption|Machine Check]]{{sfn|PoOps|pp=82–83}} || 30
|}
Line 477 ⟶ 479:
===Program interruption===
A Program interruption<ref name=A22-6821-7/>{{rp|pages=16,79–80.1}} occurs when an instruction encounters one{{
On 360/65,<ref name=A22-6884/>{{rp|page=12}} 360/67<ref name=GA27-2719/>{{rp|page=46}} and 360/85<ref name=A22-6916/>{{rp|page=12}} the Protection Exception and Addressing Exception interruptions can be imprecise, in which case they store an Instruction Length Code of 0.
The Interruption code may be any of
Line 491 ⟶ 493:
| align=right valign=top | 0
|
Imprecise interruption
{| class="wikitable collapsible collapsed"
|+ {{nowrap|Old PSW bits for multiple imprecise interruption codes}}
Line 505 ⟶ 507:
|-
| 18
| Specification
|-
| 19
Line 529 ⟶ 531:
|-
| 26
| Decimal Overflow
|-
| 27
| Decimal Divide
|}
|-
Line 598 ⟶ 600:
| align=right | 16
|
Segment Translation<ref name=GA27-2719/>{{rp|page=17}}
|-
| align=right | 11
| align=right | 17
|
Page Translation<ref name=GA27-2719/>{{rp|page=17}}
|-
| align=right | 12
| align=right | 18
|
SSM Exception<ref name=A22-6884/>
|}
Line 614 ⟶ 616:
* A '''privileged operation exception'''{{sfn|PoOps|p=79}} is recognized when a program attempts to execute a privileged instruction when the problem state bit in the PSW is 1.
* An '''execute exception'''{{sfn|PoOps|p=79}} is recognized when the operand of an [[Execute instruction|EXECUTE instruction (EX)]] is another EXECUTE instruction.
* A '''protection exception'''{{sfn|PoOps|p=79}} is recognized when a program attempts to store into a ___location whose storage protect key does not match
* An '''addressing exception'''{{sfn|PoOps|pp=79–80}} is recognized when a program attempts to access a storage ___location that is not currently available. This normally occurs with an address beyond the capacity of the machine, but it may also occur on machines that allow blocks of storage to be taken offline.
*A '''specification exception'''{{sfn|PoOps|p=80}} is recognized when an instruction has a length or register field with values not permitted by the operation, or when it has an operand address that does not satisfy the alignment requirements of the opcode, e.g., a LH instruction with an odd operand address on a machine without the byte alignment feature.
Line 631 ⟶ 633:
===External interruption===
An External{{sfn|PoOps|p=81}}
{| class="wikitable collapsible"
Line 693 ⟶ 695:
* {{anchor|IBM_Byte_Mux}}A '''byte multiplexer channel''' is capable of executing multiple '''CCW'''s concurrently; it is normally used to attach slow devices such as card readers and telecommunications lines. A byte multiplexer channel could have a number of selector subchannels, each with only a single subchannel, which behave like low-speed selector channels.
* {{anchor|IBM_Sel}}A '''selector channel''' has only a single subchannel, and hence is only capable of executing one channel command at a time. It is normally used to attach fast devices that are not capable of exploiting a block multiplexer channel to suspend the connection, such as magnetic tape drives.
* {{anchor|IBM_Blk_Mux}}A '''block multiplexer channel''' is capable of concurrently running multiple channel programs, but only one at a time can be active. The control unit can request suspension at the end of a channel command and can later request resumption. This is intended for devices in which there is a mechanical delay after completion of data transfer, e.g., for seeks on moving-head DASD. The block multiplexer channel was a late addition to the System/360 architecture; early machines had only byte multiplexer channels and selector channels. The block multiplexer channel
Conceptually peripheral equipment is attached to a S/360 through ''control units'', which in turn are attached through channels. However, the architecture does not require that control units be physically distinct, and in practice they are sometimes integrated with the devices that they control. Similarly, the architecture does not require the channels to be physically distinct from the processor, and the smaller S/360 models (through 360/50) have integrated channels that [[Cycle stealing|steal cycles]] from the processor.
Peripheral devices are addressed with 16-bit
Control units are assigned an address "capture" range. For example, a CU might be assigned range 20-2F or 40-7F. The purpose of this is to assist with the connection and prioritization of multiple control units to a channel. For example, a channel might have three disk control units at 20-2F, 50-5F, and 80-8F. Not all of the captured addresses need to have an assigned physical device. Each control unit is also marked as High or Low priority on the channel.
Device selection progresses from the channel to each control unit in the order they are physically attached to their channel. At the end of the chain the selection process continues in reverse back towards the channel. If the selection returns to the channel then no control unit accepted the command and SIO returns Condition Code 3. Control units marked as High Priority check the outbound CUU to be within their range. If so, then the I/O
There are three storage fields reserved for I/O; a double word I/O old PSW, a doubleword I/O new PSW and a fullword ''Channel Address Word'' ('''CAW'''). Performing an I/O normally requires the following:
* initializing the '''CAW''' with the storage key and the address of the first CCW
* issuing a ''Start I/O'' ('''SIO''') instruction that specifies the ''cuu'' for the operation
* waiting
* handling any unusual conditions indicated in the ''Channel Status Word'' ('''CSW''')
Line 735 ⟶ 737:
These conditions are presented to the channel by the control unit or device.{{sfn|PoOps|pp=113–116}} In some cases they are handled by the channel and in other cases they are indicated in the [[#Channel Status Word|CSW]]. There is no distinction between conditions detected by the control unit and conditions detected by the device.
* {{Anchor|Attention}}'''[[#CSW_Attention|Attention]]'''{{sfn|PoOps|p=113}} indicates an unusual condition not associated with an ongoing channel program. It often indicates some sort of operator action like requesting input, in which case the CPU would respond by issuing a read-type command, most often a sense command (04h) from which additional information could be deduced. Attention is a special condition, and requires specific operating system support, and for which the operating system has a special attention table
* {{Anchor|Status modifier|SM}}'''[[#CSW_Status_modifier|Status modifier]]'''{{sfn|PoOps|pp=113–114}} (SM) indicates one of three unusual conditions
** A Test I/O instruction was issued to a device that does not support it.
Line 754 ⟶ 756:
* {{Anchor|Channel end|CE}}'''[[#CSW_Channel_end|Channel end]]'''{{sfn|PoOps|p=115}} indicates that the device has completed the data transfer for a channel command. There may also be an [[#Incorrect length|Incorrect length]] indication if the Count field of the CCW is exhausted, depending on the value of the [[#CCW-SuppressLengthIndication|Suppress-Length-Indication]] bit.
* {{Anchor|Device end|DE}}'''[[#CSW_Device_end|Device end]]'''{{sfn|PoOps|p=115}} indicates that the device has completed an operation and is ready to accept another. DE may be signalled concurrently with [[#Channel en|CE]] or may be delayed.
* {{Anchor|Unit check|UC}}'''[[#CSW_Unit_check|Unit check]]'''{{sfn|PoOps|pp=115–116}} indicates that the device or control unit has detected an unusual
* {{Anchor|Unit exception|UE}}'''[[#CSW_Unit_exception|Unit exception]]'''{{sfn|PoOps|p=116}} indicates that the device has detected an unusual condition, e.g., end of file.
Line 828 ⟶ 830:
|-
| align=right valign=top | 34
| valign=top | {{anchor|CCW-SLI}}SLI
| valign=top | {{anchor|CCW-SuppressLengthindication}}Suppress-Length-Indication
| Continue channel program after count mis-match.{{sfn|PoOps|pp=99–100}}
Line 971 ⟶ 973:
* '''{{anchor|Initial_Program_Load}}Initial Program Load''' (IPL){{sfn|PoOps|p=123}} is a process for loading a program when there isn't a loader available in storage, usually because the machine was just powered on or to load an alternative operating system.<ref name=A22-6821-7/>{{rp|page=123}} This process is sometimes known as [[Booting]].
:: As part of the IPL facility the operator has a means of specifying a 12-bit
:: Initial program loading is typically done from a tape, a card reader, or a disk drive. Generally, the operating system was loaded from a disk drive; IPL from tape or cards was used only for diagnostics or for installing an operating system on a new computer.
Line 1,046 ⟶ 1,048:
==Notes==
{{notelist}}
|