Control register

Last updated

A control register is a processor register that changes or controls the general behavior of a CPU or other digital device. Common tasks performed by control registers include interrupt control, switching the addressing mode, paging control, and coprocessor control.

Contents

History

The early CPU lacked dedicated control registers, and relied on a limited set of internal signals and flags. [1] When IBM developed a paging version [note 1] of the System/360, they added 16 control registers [2] [3] to the design for what became the 360/67. IBM did not provide control registers on other S/360 models, but made them a standard part [4] of System/370, although with different register and bit assignments. As IBM added new features to the architecture, e.g., DAS, S/370-XA, S/370-ESA, ESA/390, they added additional fields to the control registers. With z/Architecture, IBM doubled the control register size to 64 bits.

Control registers in IBM 360/67

On the 360/67, CR0 and CR2 are used by address translation, CR 4-6 contain miscellaneous flags including interrupt masks and Extended Control Mode, [3] and CR 8-14 [5] contain the switch settings on the 2167 Configuration Unit.

M67 CR0

Control Register 0 contains the address of the segment table for dynamic address translation.

M67 CR2

Control register 2 is the Relocation exception address register.

M67 CR4

CR4 is the extended mask register for channels 0-31. Each bit is the 1/0 channel mask for the corresponding channel.

M67 CR5

CR5 is reserved for the extended mask register for channels 32–63. Each bit is the 1/0 channel mask for the corresponding channel.

M67 CR6

CR6 contains two mode flags plus extensions to the PSW mask bits.

CR6 Flags and Masks
FieldBitDescription
00Machine Check Mask Extension for Channel Controller o
11Machine Check Mask Extension for Channel Controller 1
2-3Reserved for channel controllers 2-3
4-7Unassigned
88Extended Control Mode
99Configuration Control Bit
10-23Unassigned
24-31External interrupt masking
24Timer
25Interrupt Key
26Malfunction Alert - CPU 1 (Ext. Sig. 2)
27Malfunction Alert - CPU 2 (Ext. Sig. 3)
28Reserved (Ext. Sig. 4)
29Reserved (Ext. Sig. 5)
30External Interrupt - CPU 1, 2 (Ext. Sig. 6)
31Reserved (Ext. Sig. 7)

M67 CR8

Control Register 8 contains the assignments of Processor Storage units 1–4 to central processing units (CPUs) and channel controllers (CCs).

Processor Storage unit 1-4 assignment
BitDescription
0Processor Storage Unit 1 to CPU 1
1Processor Storage Unit 1 to CPU 2
2-3Reserved for CPU 3-4
4Processor Storage Unit 1 to CC 0
5Processor Storage Unit 1 to CC 1
6-7Reserved for CC 3-4
8Processor Storage Unit 2 to CPU 1
9Processor Storage Unit 2 to CPU 2
10-11Reserved for CPU 3-4
12Processor Storage Unit 2 to CC 0
13Processor Storage Unit 2 to CC 1
14-15Reserved for CC 3-4
16Processor Storage Unit 3 to CPU 1
17Processor Storage Unit 3 to CPU 2
18-19Reserved for CPU 3-4
20Processor Storage Unit 3 to CC 0
21Processor Storage Unit 3 to CC 1
22-23Reserved for CC 3-4
24Processor Storage Unit 4 to CPU 1
25Processor Storage Unit 4 to CPU 2
26-27Reserved for CPU 3-4
28Processor Storage Unit 4 to CC 0
29Processor Storage Unit 4 to CC 1
30-31Reserved for CC 3-4

M67 CR9

Control Register 9 contains the assignments of Processor Storage units 5–8 to central processing units (CPUs) and channel controllers (CCs).

Processor Storage unit 1-4 assignment
BitDescription
0Processor Storage Unit 5 to CPU 1
1Processor Storage Unit 5 to CPU 2
2-3Reserved for CPU 3-4
4Processor Storage Unit 5 to CC 0
5Processor Storage Unit 5 to CC 1
6-7Reserved for CC 3-4
8Processor Storage Unit 6 to CPU 66
9Processor Storage Unit 6 to CPU 2
10-11Reserved for CPU 3-4
12Processor Storage Unit 6 to CC 0
13Processor Storage Unit 6 to CC 1
14-15Reserved for CC 3-4
16Processor Storage Unit 7 to CPU 1
17Processor Storage Unit 7 to CPU 2
18-19Reserved for CPU 3-4
20Processor Storage Unit 7 to CC 0
21Processor Storage Unit 7 to CC 1
22-23Reserved for CC 3-4
24Processor Storage Unit 8 to CPU 1
25Processor Storage Unit 8 to CPU 2
26-27Reserved for CPU 3-4
28Processor Storage Unit 8 to CC 0
29Processor Storage Unit 8 to CC 1
30-31Reserved for CC 3-4

M67 CR10

Control Register 10 contains the Processor storage address assignment codes.

Processor storage address bits 11-14 assignment codes
BitStarting Address Code for
0-3Processor Storage Unit 1
4-7Processor Storage Unit 2
8-11Processor Storage Unit 3
12-15Processor Storage Unit 4
16-19Processor Storage Unit 5
20-23Processor Storage Unit 6
24-27Processor Storage Unit 7
28-31Processor Storage Unit 8

M67 CR11

Control Register 11 contains channel controller (CC) assignments.

CR11 Channel Controller (CC) partitioning
BitDescription
0CC 0 available on CPU 1
1CC 0 available on CPU 2
2-3Reserved for CPUs 3-4
4CC 1 available on CPU 1
5CC 1 available on CPU 2
6-7Reserved for CPUs 3-4
8-15Unassigned
16CPU 1 to only CC 0
17CPU 1 to only CC 1
18-19Reserved for CC 2-3
20CPU 2 to only CC 0
21CPU 2 to only CC 1
22-23Reserved for CC 2-3
24-31Unassigned

M67 CR12

CR12 contains I/O Control Unit Partitioning.

CR12 I/O Control Unit 1-16 Partitioning
BitI/O Control UnitInterface
011
12
221
32
431
52
641
72
851
92
1061
112
1271
132
1481
152
1691
172
18101
192
20111
212
22121
232
24131
252
26141
272
28151
292
30161
312

M67 CR13

CR13 contains I/O Control Unit Partitioning.

CR13 I/O Control Unit 17-32 Partitioning
BitI/O Control UnitInterface
0171
12
2181
32
4191
52
6201
72
8211
92
10221
112
12231
132
14241
152
16251
172
18261
192
20271
212
22281
232
24291
252
26301
272
28311
292
30321
312

M67 CR14

CR14 contains indicators.

CR14 Indicators
BitIndicator
0-27Unassigned
222167 Power On
23Unassigned
24Direct Control, CPU 1
25Direct Control, CPU 2
26-27Unassigned
28Prefix, CPU 1
29Prefix, CPU 2
30-31Unassigned

Control registers in IBM S/390

The control registers of ESA/390 [6] on the IBM S/390 are an evolutionary enhancement to the control registers on the earlier ESA/370, [7] S/370-XA [8] and S/370 [9] processors. For details on which fields are dependent on specific features, consult the Principles of Operation. [10]

ESA/390 control registers
CRbitsField
01SSM-suppression
02TOD-clock-sync control
03Low-address-protection control
04Extraction-authority control
05Secondary-space control
06Fetch-protection-override control
07Storage-protection-override control
08-12Translation format
013AFP-register control
014Vector control
015Address-space-function control
016Malfunction-alert subclass mask
017Emergency-signal subclass mask
018External-call subclass mask
019TOD-clock sync-check subclass mask
020Clock-comparator subclass mask
021CPU-timer subclass mask
022Service-signal subclass mask
024Set to 1
025Interrupt-key subclass mask
026Set to 1
027ETR subclass mask
028Program-call-fast
029Crypto control
10Primary space-switch-event control
11-19Primary segment-table origin
122Primary subspace-group control
123Primary private-space control
124Primary storage-alteration-event control
125-31Primary segment-table length
21-25Dispatchable-unit-control-table origin
30-15PSW-key mask
316-31Secondary ASN
40-15Authorization index
416-31Primary ASN
50Subsystem-linkage control
51-24Linkage-table origin
525-31Linkage-table length
51-25When the address-space-function control is one,
Primary-ASN-second-table-entry
60-7I/O-interruption subclass mask
71-19Secondary segment-table origin
722Secondary subspace-group control
723Secondary private-space control
724Secondary storage-alteration-event control
725-31Secondary segment-table length
80-15Extended authorization index
816-31Monitor masks
90Successful-branching-event mask
91Instruction-fetching-event mask
92Storage-alteration-event mask
93GR-alteration-event mask
94Store-using-real-address-event mask
98Branch-address control
910Storage-alteration-space control
916-31PER general-register masks
101-31PER starting address
111-31PER ending address
120Branch-trace control
121-29Trace-entry address
1230ASN-trace control
1231Explicit-trace control
130Home space-switch-event control
131-19Home segment-table origin
1323Home private-space control
1324Home storage-alteration-event control
1325-31Home segment-table length
140Set to 1
141Set to 1
142Extended-save-area control
143Channel-report-pending subclass mask
144Recovery subclass mask
145Degradation subclass mask
146External-damage subclass mask
147Warning subclass mask
1410TOD-clock-control-override control
1412ASN-translation control
1413-31ASN-first-table origin
151-28Linkage-stack-entry address

Control registers in IBM z/Architecture

The control registers of z/Architecture [11] are an evolutionary enhancement to the control registers of the earlier ESA/390 on the IBM S/390 processors. For details on which fields are dependent on specific features, consult the Principles of Operation. [12] Because z/Architecture expands the control registers from 32 bits to 64, the bit numbering differs from that in ESA/390.

z/Architecture mode control registers
CRbitsField
08Transactional-execution control
09Transactional-execution program-interruption filtering override
010Clock-comparator sign control
013Cryptography counter control
014Processor-activity-instrumentation-extension control
015Measurement-counter-extraction-authorization control
030Warning-track subclass mask
032TRACE TOD-clock control
033SSM-suppression
034TOD-clock-sync control
035Low-address-protection control
036Extraction-authority control
037Secondary-space control
038Fetch-protection-override control
039Storage-protection-override control
040Enhanced-DAT-enablement control
043Instruction-execution-protection-enablement control
044ASN-and-LX-reuse control
045AFP-register control
046Vector enablement control
048Malfunction-alert subclass mask
048Malfunction-alert subclass mask
049Emergency-signal subclass mask
050External-call subclass mask
052Clock-comparator subclass mask
053CPU-timer subclass mask
054Service-signal subclass mask
056Initialized to 1
057Interrupt-key subclass mask
058Measurement-alert subclass mask
059Timing-alert subclass mask
061Crypto control
10-51Primary Address-Space Control Element (ASCE)
Primary region-table origin
Primary segment-table origin
Primary real-space token origin
154Primary subspace-group control
155Primary private-space control
156Primary storage-alteration-event
157Primary space-switch-event control
158Primary real-space control
160-61Primary designation-type control
162-63Primary table length
233-57Dispatchable-unit-control-table origin
259Guarded-storage-facility enablement control
261Transaction diagnostic scope
262-63Transaction diagnostic control
30-31Secondary ASN-second-table-entry instance number
332-47PSW-key mask
348-63Secondary ASN
40-31Primary ASN-second-table-entry instance number
432-47Authorization index
448-63Primary ASN
533-57Primary-ASN-second-table-entry origin
632-39I/O-interruption subclass mask
70-51Secondary Address-Space Control Element (ASCE)
Secondary region-table origin
Secondary segment-table origin
Secondary real-space token origin
754Secondary subspace-group control
755Secondary private-space control
756Secondary storage-alteration-event control
758Secondary real-space control
760-61Secondary designation-type control
762-63Secondary table length
816-31Enhanced-monitor masks
832-47Extended authorization index
848-63Monitor masks
932Successful-branching-event mask
933Instruction-fetching-event mask
934Storage-alteration-event mask
935Storage-key-alteration-event mask
936Store-using-real-address-event mask
937Zero-address-detection-event mask
938Transaction-end event mask
939Instruction-fetching-nullification-event mask
940Branch-address control
941PER-event-suppression control
943Storage-alteration-space control
100-63PER starting address
110-63PER ending address
120Branch-trace control
121Mode-trace control
122-61Trace-entry address
1262ASN-trace control
1263Explicit-trace control
130-51Home Address-Space Control Element (ASCE)
Home region-table origin
Home segment-table origin
Home real-space token origin
1355Home private-space control
1356Home storage-alteration-eventl
1357Home space-switch-event control
1358Secondary real-space control
1360-61Home designation-type control
1362-63Home table length
1432Set to 1
1433Set to 1
1434Extended save-area control (ESA/390-compatibility mode

only)

1435Channel-report-pending subclass mask
1436Recovery subclass mask
1437Degradation subclass mask
1438External-damage subclass mask
1439Warning subclass mask
1442TOD-clock-control-override control
1444ASN-translation control
1445-63ASN-first-table origin
150-60Linkage-stack-entry address

Control registers in Intel x86 series

CR0

The CR0 register is 32 bits long on the 386 and higher processors. On x64 processors in long mode, it (and the other control registers) is 64 bits long. CR0 has various control flags that modify the basic operation of the processor. Register CR0 is the 32 Bit version of the old Machine Status Word (MSW) register. The MSW register was expanded to the Control Register with the appearance of the i386 processor.

BitNameFull NameDescription
0PEProtected Mode EnableIf 1, system is in protected mode, else, system is in real mode
1MPMonitor co-processorControls interaction of WAIT/FWAIT instructions with TS flag in CR0
2EMEmulationIf set, no x87 floating-point unit present, if clear, x87 FPU present
3TSTask switchedAllows saving x87 task context upon a task switch only after x87 instruction used
4ETExtension typeOn the 386, it allowed to specify whether the external math coprocessor was an 80287 or 80387
5NENumeric errorEnable internal x87 floating point error reporting when set, else enables PC style x87 error detection
16WPWrite protectWhen set, the CPU cannot write to read-only pages when privilege level is 0
18AMAlignment maskAlignment check enabled if AM set, AC flag (in EFLAGS register) set, and privilege level is 3
29NWNot-write throughGlobally enables/disable write-through caching
30CD Cache disableGlobally enables/disable the memory cache
31PGPagingIf 1, enable paging and use the § CR3 register, else disable paging.

CR1

Reserved, the CPU will throw a #UD exception when trying to access it.

CR2

Contains a value called Page Fault Linear Address (PFLA). When a page fault occurs, the address the program attempted to access is stored in the CR2 register.

CR3

Typical use of CR3 in address translation with 4 KiB pages X86 Paging 4K.svg
Typical use of CR3 in address translation with 4  KiB pages

Used when virtual addressing is enabled, hence when the PG bit is set in CR0. CR3 enables the processor to translate linear addresses into physical addresses by locating the page directory and page tables for the current task. Typically, the upper 20 bits of CR3 become the page directory base register (PDBR), which stores the physical address of the first page directory. If the PCIDE bit in CR4 is set, the lowest 12 bits are used for the process-context identifier (PCID). [13]

CR4

Used in protected mode to control operations such as virtual-8086 support, enabling I/O breakpoints, page size extension and machine-check exceptions.

BitNameFull NameDescription
0VME Virtual 8086 Mode Extensions If set, enables support for the virtual interrupt flag (VIF) in virtual-8086 mode.
1PVIProtected-mode Virtual InterruptsIf set, enables support for the virtual interrupt flag (VIF) in protected mode.
2TSD Time Stamp DisableIf set, RDTSC instruction can only be executed when in ring 0, otherwise RDTSC can be used at any privilege level.
3DE Debugging ExtensionsIf set, enables debug register based breaks on I/O space access.
4PSE Page Size Extension If set, enables 32-bit paging mode to use 4 MiB huge pages in addition to 4 KiB pages.

If PAE is enabled or the processor is in x86-64 long mode this bit is ignored. [14]

5PAE Physical Address Extension If set, changes page table layout to translate 32-bit virtual addresses into extended 36-bit physical addresses.
6MCEMachine Check ExceptionIf set, enables machine check interrupts to occur.
7PGEPage Global EnabledIf set, address translations (PDE or PTE records) may be shared between address spaces.
8PCEPerformance-Monitoring Counter enableIf set, RDPMC can be executed at any privilege level, else RDPMC can only be used in ring 0.
9OSFXSROperating system support for FXSAVE and FXRSTOR instructionsIf set, enables Streaming SIMD Extensions (SSE) instructions and fast FPU save & restore.
10OSXMMEXCPTOperating System Support for Unmasked SIMD Floating-Point ExceptionsIf set, enables unmasked SSE exceptions.
11UMIPUser-Mode Instruction PreventionIf set, the SGDT, SIDT, SLDT, SMSW and STR instructions cannot be executed if CPL > 0. [13]
12LA5757-Bit Linear AddressesIf set, enables 5-Level Paging. [15] [16] :2–18
13VMXEVirtual Machine Extensions Enablesee Intel VT-x x86 virtualization.
14SMXESafer Mode Extensions Enablesee Trusted Execution Technology (TXT)
15 [lower-alpha 1] (Reserved)
16FSGSBASEFSGSBASE EnableIf set, enables the instructions RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE.
17PCIDE PCID EnableIf set, enables process-context identifiers (PCIDs).
18OSXSAVEXSAVE and Processor Extended States Enable
19KLKey Locker EnableIf set, enables the AES Key Locker instructions.
20SMEP [19] Supervisor Mode Execution Protection EnableIf set, execution of code in a higher ring generates a fault.
21SMAP Supervisor Mode Access Prevention EnableIf set, access of data in a higher ring generates a fault. [20]
22PKEProtection Key EnableSee Intel 64 and IA-32 Architectures Software Developer's Manual.
23CETControl-flow Enforcement TechnologyIf set, enables control-flow enforcement technology. [16] :2–19
24PKSEnable Protection Keys for Supervisor-Mode PagesIf set, each supervisor-mode linear address is associated with a protection key when 4-level or 5-level paging is in use. [16] :2–19
25UINTRUser Interrupts EnableIf set, enables user-mode inter-processor interrupts and their associated instructions and data structures.
63-26(Reserved)
  1. In early drafts of the Intel SGX specification, bit 15 of CR4 was named "CR4.SEE" and was described as an SGX enclave-instruction enable bit. [17] Later revisions of this specification removed references to this bit. [18]

CR5–7

Reserved, same case as CR1.

Additional Control registers in Intel x86-64 series

EFER

Extended Feature Enable Register (EFER) is a model-specific register added in the AMD K6 processor, to allow enabling the SYSCALL/SYSRET instruction, and later for entering and exiting long mode. This register becomes architectural in AMD64 and has been adopted by Intel as IA32_EFER. Its MSR number is 0xC0000080.

BitPurpose
0SCE (System Call Extensions)
1DPE (AMD K6 only: Data Prefetch Enable)
2SEWBED (AMD K6 only: Speculative EWBE# Disable)
3GEWBED (AMD K6 only: Global EWBE# Disable)
4L2D (AMD K6 only: L2 Cache Disable)
5-7Reserved, Read as Zero
8LME (Long Mode Enable)
9Reserved
10LMA (Long Mode Active)
11NXE (No-Execute Enable)
12SVME (Secure Virtual Machine Enable)
13LMSLE (Long Mode Segment Limit Enable)
14FFXSR (Fast FXSAVE/FXRSTOR)
15TCE (Translation Cache Extension)
16Reserved
17MCOMMIT (MCOMMIT instruction enable)
18INTWB (Interruptible WBINVD/WBNOINVD enable)
19Reserved
20UAIE (Upper Address Ignore Enable)
21AIBRSE (Automatic IBRS Enable)
22–63Reserved

CR8

CR8 is a new register accessible in 64-bit mode using the REX prefix. CR8 is used to prioritize external interrupts and is referred to as the task-priority register (TPR). [14]

The AMD64 architecture allows software to define up to 15 external interrupt-priority classes. Priority classes are numbered from 1 to 15, with priority-class 1 being the lowest and priority-class 15 the highest. CR8 uses the four low-order bits for specifying a task priority and the remaining 60 bits are reserved and must be written with zeros.

System software can use the TPR register to temporarily block low-priority interrupts from interrupting a high-priority task. This is accomplished by loading TPR with a value corresponding to the highest-priority interrupt that is to be blocked. For example, loading TPR with a value of 9 (1001b) blocks all interrupts with a priority class of 9 or less, while allowing all interrupts with a priority class of 10 or more to be recognized. Loading TPR with 0 enables all external interrupts. Loading TPR with 15 (1111b) disables all external interrupts.

The TPR is cleared to 0 on reset.

XCR0 and XSS

XCR0, or Extended Control Register 0, is a control register which is used to toggle the storing or loading of registers related to specific CPU features using the XSAVE/XRSTOR instructions. It is also used with some features to enable or disable the processor's ability to execute their corresponding instructions. It can be changed using the privileged XSETBV read using the unprivileged XGETBV instructions. [21]

BitNameEnabled FeaturePurpose
0X87x87 FPUx87 FPU/MMX State, must be '1'
1SSESSEMXCSR and 16 XMM registers
2AVXAVX16 upper-halves of the YMM registers [lower-alpha 1]
3BNDREG MPX Four BND registers
4BNDCSRBNDCFGU and BNDSTATUS registers
5OPMASK AVX-512 Eight k-mask registers
6ZMM_Hi25616 upper-halves of the ZMM registers [lower-alpha 2]
7Hi16_ZMM16 "high" ZMM registers (ZMM16 through ZMM31)
8PTProcessor Trace
9PKRU Protection Keys PKRU register
10PASID
11CET_U Intel CET User shadow stack
12CET_SSupervisor shadow stack
13HDCHardware Duty Cycling
14UINTRUser interrupts
15LBRLast Branch Records
16HWPHardware P-states
17XTILECFG Intel AMX 64-byte TILECFG register
18XTILEDATAEight 1024-byte TILE registers
19 [lower-alpha 3] APX Intel APX 16 "high" GPRs (R16 through R31)
20–63Reserved
  1. The lower 128 bits of all YMM registers is stored in the SSE state.
  2. The lower 256 bits of ZMM registers ZMM0 through ZMM15 are stored in the SSE and AVX states.
  3. Even though Intel APX is indicated through bit 19 of XCR0, it is actually written, through XSAVE (the uncompacted form), in the unused 128 byte space left where Intel MPX went.

There is also the IA32_XSS MSR, which is located at address DA0h. The IA32_XSS MSR controls bits of XCR0 which are considered to be "supervisor" state, and should be invisible to regular programs. It operates with the privileged XSAVES and XRSTORS instructions by adding supervisor state to the data they operate with. Put simply, if the X87 state was enabled in XCR0 and PT state was enabled in IA32_XSS, the XSAVE instruction would only store X87 state, while the privileged XSAVES would store both X87 and PT states. Because it is an MSR, it can be accessed using the RDMSR and WRMSR instructions.

BitPurpose
0–7Reserved; must be 0.
8PT (Enables the saving and loading of nine Processor Trace MSRs.)
10Processor Address Space ID (PASID) state
11Control-flow Enforcement Technology (CET) User State
12Control-flow Enforcement Technology (CET) Supervisor State
13HDC (Enables the saving and loading of the IA32_PM_CTL1 MSR.)
14User interrupts (UINTR) state
15Last branch recording (LBR) state
16HWP (enables the saving/loading of IA32_HWP_REQUEST MSR)
17–63Reserved; must be 0.

See also

Notes

  1. IBM never shipped the 360/64 or 360/66, only the 360/67.

Related Research Articles

x86 Family of instruction set architectures

x86 is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the 8086 microprocessor and its 8-bit-external-bus variant, the 8088. The 8086 was introduced in 1978 as a fully 16-bit extension of 8-bit Intel's 8080 microprocessor, with memory segmentation as a solution for addressing more memory than can be covered by a plain 16-bit address. The term "x86" came into being because the names of several successors to Intel's 8086 processor end in "86", including the 80186, 80286, 80386 and 80486. Colloquially, their names were "186", "286", "386" and "486".

<span class="mw-page-title-main">IBM System/370</span> Family of mainframe computers 1970–1990

The IBM System/370 (S/370) is a range of IBM mainframe computers announced as the successors to the System/360 family on June 30, 1970. The series mostly maintains backward compatibility with the S/360, allowing an easy migration path for customers; this, plus improved performance, were the dominant themes of the product announcement.

<span class="mw-page-title-main">64-bit computing</span> Computer architecture bit width

In computer architecture, 64-bit integers, memory addresses, or other data units are those that are 64 bits wide. Also, 64-bit central processing units (CPU) and arithmetic logic units (ALU) are those that are based on processor registers, address buses, or data buses of that size. A computer that uses such a processor is a 64-bit computer.

The Intel x86 computer instruction set architecture has supported memory segmentation since the original Intel 8086 in 1978. It allows programs to address more than 64 KB (65,536 bytes) of memory, the limit in earlier 80xx processors. In 1982, the Intel 80286 added support for virtual memory and memory protection; the original mode was renamed real mode, and the new version was named protected mode. The x86-64 architecture, introduced in 2003, has largely dropped support for segmentation in 64-bit mode.

In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units (CPUs). It allows system software to use features such as segmentation, virtual memory, paging and safe multi-tasking designed to increase an operating system's control over application software.

A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only. In computer architecture, registers are typically addressed by mechanisms other than main memory, but may in some cases be assigned a memory address e.g. DEC PDP-10, ICT 1900.

<span class="mw-page-title-main">Memory address</span> Reference to a specific memory location

In computing, a memory address is a reference to a specific memory location used at various levels by software and hardware. Memory addresses are fixed-length sequences of digits conventionally displayed and manipulated as unsigned integers. Such numerical semantic bases itself upon features of CPU, as well upon use of the memory like an array endorsed by various programming languages.

The x86 instruction set refers to the set of instructions that x86-compatible microprocessors support. The instructions are usually part of an executable program, often stored as a computer file and executed on the processor.

In the 80386 microprocessor and later, virtual 8086 mode allows the execution of real mode applications that are incapable of running directly in protected mode while the processor is running a protected mode operating system. It is a hardware virtualization technique that allowed multiple 8086 processors to be emulated by the 386 chip. It emerged from the painful experiences with the 80286 protected mode, which by itself was not suitable to run concurrent real-mode applications well. John Crawford developed the Virtual Mode bit at the register set, paving the way to this environment.

Memory segmentation is an operating system memory management technique of dividing a computer's primary memory into segments or sections. In a computer system using segmentation, a reference to a memory location includes a value that identifies a segment and an offset within that segment. Segments or sections are also used in object files of compiled programs when they are linked together into a program image and when the image is loaded into memory.

z/Architecture, initially and briefly called ESA Modal Extensions (ESAME), is IBM's 64-bit complex instruction set computer (CISC) instruction set architecture, implemented by its mainframe computers. IBM introduced its first z/Architecture-based system, the z900, in late 2000. Later z/Architecture systems include the IBM z800, z990, z890, System z9, System z10, zEnterprise 196, zEnterprise 114, zEC12, zBC12, z13, z14, z15 and z16.

In computing, a logical address is the address at which an item appears to reside from the perspective of an executing application program.

In computing, channel I/O is a high-performance input/output (I/O) architecture that is implemented in various forms on a number of computer architectures, especially on mainframe computers. In the past, channels were generally implemented with custom devices, variously named channel, I/O processor, I/O controller, I/O synchronizer, or DMA controller.

The Task Control Block (TCB) contains the state of a task in, e.g., OS/360 and successors on IBM System/360 architecture and successors.

The program status word (PSW) is a register that performs the function of a status register and program counter, and sometimes more. The term is also applied to a copy of the PSW in storage. This article only discusses the PSW in the IBM System/360 and its successors, and follows the IBM convention of numbering bits starting with 0 as the leftmost bit.

On the x86 architecture, a debug register is a register used by a processor for program debugging. There are six debug registers, named DR0...DR7, with DR4 and DR5 as obsolete synonyms for DR6 and DR7. The debug registers allow programmers to selectively enable various debug conditions associated with a set of four debug addresses. Two of these registers are used to control debug features. These registers are accessed by variants of the MOV instruction. A debug register may be either the source operand or destination operand. The debug registers are privileged resources; the MOV instructions that access them can only be executed at privilege level zero. An attempt to read or write the debug registers when executing at any other privilege level causes a general protection fault.

In computing, PSE-36 refers to a feature of x86 processors that extends the physical memory addressing capabilities from 32 bits to 36 bits, allowing addressing to up to 64 GB of memory. Compared to the Physical Address Extension (PAE) method, PSE-36 is a simpler alternative to addressing more than 4 GB of memory. It uses the Page Size Extension (PSE) mode and a modified page directory table to map 4 MB pages into a 64 GB physical address space. PSE-36's downside is that, unlike PAE, it doesn't have 4-KB page granularity above the 4 GB mark.

The IBM System/360 architecture is the model independent architecture for the entire S/360 line of mainframe computers, including but not limited to the instruction set architecture. The elements of the architecture are documented in the IBM System/360 Principles of Operation and the IBM System/360 I/O Interface Channel to Control Unit Original Equipment Manufacturers' Information manuals.

<span class="mw-page-title-main">IBM System/390</span> Line of mainframe computers

The IBM System/390 is a discontinued mainframe product family implementing ESA/390, the fifth generation of the System/360 instruction set architecture. The first computers to use the ESA/390 were the Enterprise System/9000 (ES/9000) family, which were introduced in 1990. These were followed by the 9672, Multiprise, and Integrated Server families of System/390 in 1994–1999, using CMOS microprocessors. The ESA/390 succeeded ESA/370, used in the Enhanced 3090 and 4381 "E" models, and the System/370 architecture last used in the IBM 9370 low-end mainframe. ESA/390 was succeeded by the 64-bit z/Architecture in 2000.

IBM Enterprise Systems Architecture is an instruction set architecture introduced by IBM as ESA/370 in 1988. It is based on the IBM System/370-XA architecture.

References

IBM manuals
M67prelim
System/360 Model 67 - Time Sharing System - Preliminary Technical Summary (PDF). Systems Reference Library (First ed.). IBM. C20-1647-0. Retrieved May 8, 2023.
M67
IBM System/360 Model 67 - Functional Characteristics (PDF). Systems Reference Library (Third ed.). IBM. February 1972. A27-2719-0. Retrieved May 8, 2023.
S/370
IBM System/370 - Principles of Operation (PDF) (Eleventh ed.). IBM. September 1987. GA22-7000-10. Retrieved May 8, 2023.
S/370-XA
IBM System/370 Extended Architecture Principles of Operation (PDF) (Second ed.). IBM. January 1987. SA22-7085-1. Retrieved May 8, 2023.
S/370-ESA
IBM Enterprise Systems Architecture/370 Principles of Operation (PDF) (First ed.). IBM. August 1988. SA22-7200-0. Retrieved May 8, 2023.
S/390-ESA
IBM Enterprise Systems Architecture/390 Principles of Operation (PDF) (Ninth ed.). IBM. June 2003. SA22-7201-08. Retrieved May 8, 2023.
z/Architecture
z/Architecture - Principles of Operation (PDF) (Fourteenth ed.). IBM. May 2022. SA22-7832-13. Retrieved May 8, 2023.
  1. "lab4.pdf" (PDF). Uppsala University . March 17, 2024. Archived (PDF) from the original on January 17, 2021. Retrieved March 16, 2024.
  2. M67prelim, pp.  25-26, Control Registers.
  3. 1 2 M67, p.  16, Table 4. Control Registers.
  4. S/370, pp.  4-8-4-11 , Control Registers.
  5. M67, pp.  31-35, Control Register Bit Assignments for Sensing.
  6. S/390-ESA.
  7. S/370-ESA.
  8. S/370-XA.
  9. S/370.
  10. S/390-ESA, pp.  4-6-4-10, Control Registers.
  11. z/Architecture.
  12. z/Architecture, pp.  4-9–4-12, Control Registers.
  13. 1 2 Intel Corporation (2016). "4.10.1 Process-Context Identifiers (PCIDs)". Intel 64 and IA-32 Architectures Software Developer's Manual (PDF). Vol. 3A: System Programming Guide, Part 1.
  14. 1 2 "AMD64 Architecture Programmer's Manual Volume 2: System Programming" (PDF). AMD. September 2012. pp. 127 & 130. Retrieved 2017-08-04.
  15. "5-Level Paging and 5-Level EPT" (PDF). Intel. May 2017. p. 16. Retrieved 2018-01-23.
  16. 1 2 3 "Intel 64 and IA-32 Architectures Software Developer's Manual" (PDF). Intel® Corporation. 2021-06-28. Retrieved 2021-09-21.
  17. Intel, Software Guard Extensions Programming Reference, ref no. 329298-001, sep 2013 - chapters 1.7 and 6.5.2 describe CR4.SEE.
  18. Intel, Software Guard Extensions Programming Reference, ref no. 329298-002, oct 2014 - makes no mention of CR4.SEE.
  19. Fischer, Stephen (2011-09-21). "Supervisor Mode Execution Protection" (PDF). NSA Trusted Computing Conference 2011. National Conference Services, Inc. Archived from the original (PDF) on 2016-08-03. Retrieved 2017-08-04.
  20. Anvin, H. Peter (2012-09-21). "x86: Supervisor Mode Access Prevention". LWN.net . Retrieved 2017-08-04.
  21. "Chapter 13, Managing State Using The Xsave Feature Set" (PDF). Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 1: Basic Architecture. Intel Corporation (2019). Retrieved 23 March 2019.