Fact-checked by Grok 2 weeks ago

Control register

In , a control register is a special-purpose that alters or controls the general behavior of a CPU or other digital hardware, such as enabling interrupts, setting operating modes, configuring , and activating processor features. These registers are typically accessible only in privileged modes, like or mode, to prevent unauthorized modifications that could compromise system stability and . Control registers differ from general-purpose registers by their dedicated role in system configuration and status monitoring, often integrating with the processor's to direct datapath operations and . They may include bits for flags like levels, stack pointer selection, or feature enables, and are frequently paired with status registers that report execution conditions such as or zero results. Access to these registers is governed by specific instructions, such as MOV to/from [CR](/page/CR) in x86 or MRS/MSR in ARM, ensuring controlled interaction by operating systems and . Examples of control registers abound across architectures; in Intel's and processors, registers like CR0 enable paging and task-switched , while CR4 controls features such as no-execute page and extensions. In ARMv8-M, the CONTROL register (a 2- to 8-bit field) manages privilege modes (privileged or unprivileged), stack selection (main or process stack), and optional extensions like floating-point context or pointer authentication. These registers are essential for implementing , , and error reporting, with their design optimized for speed, security, and compatibility in modern computing systems.

Overview

Definition

A control register is a used to configure, control, or report on the operational behavior of a (CPU). These registers enable the modification of key processor functions, such as mode switching between user and supervisor states, interrupt handling mechanisms, and settings. Unlike general-purpose registers, which serve primarily for temporary data storage and arithmetic operations during program execution, control registers are specialized for system-level management and are typically accessible only in privileged modes. Status registers, by contrast, focus on reporting runtime conditions like arithmetic results or error flags without directly altering behavior; however, control registers often integrate both control and status capabilities to provide a unified for monitoring and adjustment. Common behaviors governed by control registers include enabling or disabling protection modes for secure execution environments, configuring caching policies for performance optimization, activating paging for support, and setting parameters for the to handle precision and rounding. Control registers first appeared in mainframe computers during the , for example in the Model 67.

Purpose and Functions

Control registers serve as configurable hardware components that govern the core operational modes of a (CPU), enabling the dynamic adjustment of system behavior to support diverse workloads and ensure efficient resource utilization. By modifying the contents of these registers, the processor can activate or deactivate essential features such as interrupt masking, which allows the system to temporarily ignore external signals during critical operations, and , which facilitates virtual address translation for larger address spaces. These functions are crucial for enabling multitasking environments where multiple processes share hardware resources without interference. A primary role of registers lies in enforcing levels, which delineate execution modes like user and (or ) to uphold and stability. These registers store flags that determine the current state, restricting user-level from accessing privileged instructions or controls that could compromise the operating , while permitting seamless transitions during calls or interrupts. Additionally, they contribute to by capturing status information on faults, overflows, or other anomalies, allowing the CPU to vector to appropriate handlers and maintain orderly recovery. This layered protection model prevents unauthorized escalations and supports robust error management in complex software ecosystems. Control registers further influence performance by providing mechanisms to tailor and , such as enabling configurations that promote data coherency in multiprocessor setups or activating specialized units for vectorized computations. For example, bit fields within these registers can toggle caching modes to balance speed and , reducing in shared-memory applications, or enable extensions like floating-point to accelerate numerical workloads. However, the volatile nature of these settings demands meticulous oversight by the operating system, as improper alterations can induce , such as invalid memory accesses or disrupted flows, potentially leading to system halts. Typical bit fields include enable/disable toggles for paging and rings, offering granular control over and access permissions without requiring full hardware reconfiguration.

Access Methods

Control registers in computer architectures are typically accessed through dedicated special-purpose instructions, such as move-to-control-register or read-from-control-register opcodes, rather than standard load or store operations used for general-purpose registers or . These instructions ensure controlled interaction with the state, allowing precise manipulation of system-level configurations without interfering with the regular data flow. Access to control registers is strictly enforced through privilege levels, generally limited to kernel or supervisor mode to safeguard against unauthorized modifications by user-level processes. This restriction aligns with the need for privileged operations like mode switching, where altering control register bits can transition the between user and kernel execution contexts. Attempts to access these registers from unprivileged modes trigger hardware-enforced checks, preventing tampering that could compromise system integrity. Improper access to control registers results in exceptions or , depending on the architecture's mechanism. For instance, executing a privileged control register in user mode typically generates a protection fault or general protection exception, which the operating system can then handle by terminating the offending or the violation. Such error handling mechanisms are essential for maintaining processor stability and isolating faulty code. While special instructions predominate for core CPU control registers, variations exist across architectures, including coprocessor interfaces where control-like functions are managed through coprocessor-specific opcodes. Additionally, some systems employ memory-mapped I/O for peripheral registers, mapping them into the for access via standard instructions, though this is less common for primary CPU due to and considerations. The privileged nature of control register plays a critical role in by mitigating attacks, where an adversary might attempt to elevate user privileges by directly altering system control settings. By confining modifications to trusted code, these mechanisms thwart exploits that could otherwise enable unauthorized control over hardware resources, such as or handling.

Historical Development

Origins in Mainframes

The concept of control registers emerged prominently in the architecture, announced in 1964, where they played a foundational role in supporting multiprogramming by managing program relocation and . In this design, general-purpose registers served as base registers for address formation, combining a 24-bit base address with a 12-bit to enable static relocation of programs in main , allowing multiple programs to share without fixed addressing. Additionally, 4-bit protection keys, embedded in the (PSW) and associated with 2,048-byte blocks of , provided hardware-enforced isolation by comparing keys during access attempts, preventing unauthorized inter-program interference and facilitating supervised multitasking environments. These mechanisms, including the 64-bit PSW for controlling instruction sequencing and interruption handling, laid the groundwork for systems, though full via dynamic address translation was introduced later in the Model 67 variant. This approach drew influence from earlier innovations in the Atlas computer, operational from 1962 at the University of Manchester, which pioneered hardware controls for paging through Page Address Registers (PARs). In the Atlas, 32 PARs, each tied to a 512-word page in core memory, used associative matching to map virtual block addresses to physical locations, triggering supervisor intervention on faults to swap pages from drum storage, thus enabling efficient multiprogramming with overlay management. The System/360 adapted similar principles of hardware-mediated address translation and protection but simplified them for broader commercial applicability, focusing on base-register relocation rather than full paging to balance performance and cost across models ranging from 8K to 512K bytes of memory. Early implementations faced significant challenges, particularly the complexity of supporting dynamic reconfiguration—such as reassigning or I/O resources under program —for and specialized operations without relying on . Fixed-wiring logic in higher-performance models like the 70 required intricate designs to handle varying paths (8 to 64 bits) and interruption priorities, increasing demands and delays up to 70 nanoseconds. By the late , the architecture transitioned toward programmable , with read-only implementing microprograms in most models (e.g., 30 through 62), allowing flexible interpretation and easier reconfiguration while maintaining compatibility. This shift reduced hardware complexity for lower-end systems and supported the evolution toward more robust multiprogramming in subsequent architectures.

Evolution in Microprocessors

The transition from mainframe systems to microprocessors in the 1970s necessitated more compact and efficient control mechanisms to manage memory and operations within limited silicon resources. The microprocessor, released in , represented a key shift by incorporating four 16-bit segment registers (, , , ) that enabled , allowing access to up to 1 MB of through base-offset addressing while providing basic isolation between code, data, and stack segments for rudimentary protection against invalid accesses. During the 1980s and 1990s, control registers expanded significantly to support advanced operating system features like protected memory and caching in both CISC and emerging RISC designs. The Intel 80286 (1982) introduced the Machine Status Word (MSW), a 16-bit control register that enabled protected mode for task switching, privilege levels, and virtual addressing, laying the groundwork for modern control registers like CR0. The subsequent Intel 80386 (1985) extended this with 32-bit control registers, including CR0 for enabling paging and extensions, and CR3 for the page directory base address, facilitating demand-paged virtual memory. In parallel, RISC architectures adopted dedicated control structures; for instance, the MIPS R2000 (1985) used Coprocessor 0 (CP0) registers such as Status and Cause for exception handling, interrupt control, and MMU configuration, while the ARM1 (1985) employed the Current Program Status Register (CPSR) to manage processor modes, flags, and interrupt masking. Caching controls emerged in the 1990s, with bits in CR0 and CR4 on x86 processors to enable and configure on-chip caches, improving performance for multitasking environments. Virtualization bits began appearing toward the late 1990s, such as preliminary support in x86 for hypervisor access to control states. The saw further proliferation of registers to accommodate 64-bit addressing, multi-core processing, and enhanced amid growing and desktop demands. AMD's introduction of the 64-bit extension in 2003 extended CR0, CR3, and CR4 to 64 bits, with CR3 supporting extensions up to 52 bits for larger memory spaces in multi-core systems. Security enhancements included the No-Execute ( in CR4, first implemented by in 2003 to mark data pages as non-executable, reducing exploits by preventing . followed with the Execute Disable (XD) bit in CR4 on processors in 2004. demands, spurred by software like (released 1999), drove hardware accelerations; 's VT-x (2005) introduced the Virtual Machine Control Structure (VMCS), a set of fields managing guest/host transitions, CR access, and virtualization across multi-core CPUs. This evolutionary trajectory was primarily driven by operating system requirements for robust and hardware efficiency, as exemplified by VMware's early x86 hypervisors in the late , which exposed the need for direct control register trapping to enable efficient guest isolation without full overheads. Control registers continue to evolve with multi-core and accelerator ecosystems, supporting advanced vector units like for AI workloads through optimized tensor operations.

Control Registers in IBM Architectures

System/360 Model 67

The System/360 Model 67 introduced 16 32-bit control registers, designated CR0 through CR15, significantly expanding upon the limited control facilities of standard System/360 models to enable dynamic translation (DAT), resource partitioning, and enhanced interrupt handling for environments. These registers were accessible only in supervisor state via dedicated instructions such as Load Multiple Control (LMCCTL), Store Multiple Control (SMCCTL), Load Control (LCCTL), and Store Control (SCCTL), ensuring privileged control over system resources. Unlike the base System/360 architecture, which supported only basic external masking and lacked addressing, the Model 67's control registers facilitated the first implementation of paging and segmentation in IBM mainframes, supporting address spaces of 16 megabytes (24-bit) or up to 4 gigabytes (with optional 32-bit addressing extension). This design was pivotal for operating systems like the Time Sharing System (TSS/360) and CP-67/, allowing multiple users to share physical memory securely through address translation and isolation mechanisms. CR0 functioned as the segment designation , with bits 0-7 specifying the of the segment (in units of 64-byte blocks, up to 256 entries) and bits 8-31 providing the real origin of the (aligned to a 64-byte ). This was central to DAT, where the CPU used it to locate segment entries (STEs), each containing a page origin and protection bits, thereby 24-bit virtual addresses into real addresses for access to physical storage. CR2 served as the exception identification , capturing bits 0-23 of the virtual that triggered a segment exception or , along with additional bits for exception codes, to assist in fault recovery and program debugging in virtualized environments. CR1, CR3, CR5, CR7, and CR15 remained unassigned in the Model 67, reserved for future extensions. These addressing-focused registers marked a departure from base System/360 models, which had no equivalent DAT support and relied solely on real addressing without hardware. For protection and interrupt management, CR4 provided extended I/O channel masks, covering channels 0-13 (bits 0-6 for channels 0-6, bits 8-14 for 7-13, with summary bits at 7 and 15). CR6 included masks for external machine checks (bits 0-1 for channel controllers) and external interrupts (bits 24-31), along with bits for timing and error handling, enhancing system stability during time-shared operations. In multiprocessor configurations, CR8 through CR14 acted as partitioning sensing registers, mirroring the state of manual switches that configured connections between processor storage units (PSUs), channel controllers, and I/O control units— for example, CR8 and CR9 indicated active interfaces for PSUs 1-4 to CPUs and controllers, while CR10 specified PSU address assignments (using 4-bit codes for base addresses like 0-256K bytes). CR12 and CR13 sensed I/O control unit partitioning, and CR14 reflected overall system status, such as power-on signals for attached processors. These configuration registers enabled logical partitioning of hardware resources, a feature absent in non-67 models, to isolate time-sharing tasks and support up to two CPUs in duplex configurations sharing storage without contention. The combination of these registers with the Model 67's high-resolution interval timer (13-microsecond ticks, accessible via separate instructions) provided the foundational timing mechanisms for process scheduling and quotas in early virtual memory systems. In S/390, CR0 bit 31 selects 31-bit addressing mode for compatibility with System/360. CR14 manages ASN-first-table origin for translation in virtualized environments.

S/390

The (S/390) family, introduced in 1990, implements the Enterprise Systems Architecture/390 (ESA/390), which features 16 32-bit control registers (CR0 through CR15) to manage state, addressing, interruptions, and in enterprise environments. These registers build on earlier mainframe designs while introducing enhancements for logical partitioning (LPARs) via the Processor Resource/Systems Manager (PR/SM) facility, allowing up to 15 LPARs in a single-image , model-dependent, with each LPAR maintaining its own independent set of control registers for isolated execution. This design supports dynamic and multi-system coupling, enabling scalable enterprise computing without disrupting ongoing operations. Key control registers handle management and switching, critical for and partitioning. CR0 controls dynamic address translation (DAT) modes, overrides such as low-address (bit 3) and secondary-space control (bit 5), and address-space-function control (bit 15) to manage 31-bit addressing and ASN-second-table entry sizes. CR1 designates the primary segment-table origin and length for dynamic transitions, with bit 0 for space-switch-event control. CR4 holds the primary address space number (ASN) and index for ASN validation and space switching. CR3 manages the PSW-key and secondary ASN to enforce controls during space switches. CR2 designates the dispatchable-unit-control-table origin for -list entries. These registers ensure secure, efficient partitioning by isolating s per LPAR, maintaining backward compatibility with System/360's 24-bit addressing through a selectable in CR0 (bit 31). Registers CR4 through CR7 extend timer, clock, and multi-system controls for coupled environments. CR5 manages subsystem-linkage and primary ASN-second-table entry , facilitating coordinated operations across partitions. CR6 masks I/O interruption subclasses (bits 0-7), while CR7 designates the secondary segment-table and , with bits for private-space to enhance and time-of-day (TOD) handling in multi-system setups, including external interruption masks for clock comparators (CR0, bit 20) and CPU timers (CR0, bit 21). These extensions enable precise timing and synchronization in enterprise configurations, such as those using multi-system coupling facilities. CR8 through CR11 address subchannel sets and I/O , vital for high-performance in partitioned systems. CR8 provides the extended index for access-register translation and monitor-mask bits to interruptions. CR9 configures program-event-recording (PER) masks for tracing (bit 8) and storage-alteration (bit 10), aiding I/O . CR10 and CR11 define the starting and ending addresses for PER storage areas, enabling detailed of I/O-related activities. These registers dynamic I/O reconfiguration in Enterprise Systems Connection (ESCON) environments, allowing non-disruptive changes to channel paths and subchannels during , a key innovation for enterprise scalability. Finally, CR12 through CR15 focus on recovery and monitoring modes to ensure reliability in LPAR environments. CR12 enables branch-trace (bit 0), ASN tracing (bit 30), and trace-table addressing for partitioned workloads. CR13 handles home space-switch events (bit 0) and home segment-table designation, supporting from space-related faults. CR14 includes masks for interruptions (bit 4), channel-report-pending (bit 3), and ASN translation (bit 12), along with the ASN-first-table to facilitate fault isolation and across LPARs. CR15 points to the current linkage-stack entry for invocation tracking. Together, these registers provide robust and mechanisms, preserving ESA/390's compatibility with System/360 while advancing 31-bit addressing and partitioning for enterprise resilience.

z/Architecture

In , introduced by in 2000 as a 64-bit extension of prior mainframe architectures, there are 16 control registers, each 64 bits wide, that play a central role in managing system resources for high-availability environments supporting operating systems such as and . These registers enable precise control over , , performance tuning, and security features, with extensions that facilitate scalability in enterprise data centers. While maintaining with S/390 control registers, z/Architecture enhances them for 64-bit addressing and advanced virtualization, allowing seamless migration of legacy workloads to modern cloud-integrated mainframes. Control Register 0 (CR0) is enhanced to oversee (TLB) operations and access register modes, incorporating bits for dynamic address translation (DAT) enhancement (bit 40), secondary-space control (bit 37), and access register reuse (bit 44), which collectively support efficient handling in multiprocessor configurations. Similarly, Control Register 1 (CR1) governs secondary space control with 64-bit origins, including the secondary address-space-control element (SASCE) across bits 0-63 and space-switch event controls (bits 1-3), enabling flexible switching critical for database and . Control Register 4 (CR4) manages program event recording (PER) via bits 0-1 for enablement and bits 32-39 for event masks, alongside clock comparator settings (bits 8-31) and CPU timer interruptions (bit 53), aiding in and timing precision for high-throughput applications. Control Register 14 (CR14) focuses on tracing and performance monitoring, with bits 0-1 for and tracing , bits 35-39 for machine-check subclass masks, and bits 45-63 specifying the ASN-first-table origin, allowing capture of trace entries at real addresses to optimize system diagnostics. New features introduced in include dedicated bits in control registers for the logical partition hypervisor (PR/SM), supporting up to 15 logical partitions with shared resources and live relocation capabilities, with dispatchable-unit-control-table origin in CR2. Additionally, as of the z990 processor in 2003, bits like CR13 bit 61 enable counters for hardware-accelerated crypto operations via the Assist facility, enhancing data privacy with instructions like CIPHER MESSAGE. By 2025, 's evolution includes the z16 processor (announced 2024), integrating quantum-safe cryptography via Crypto Express8S hardware supporting post-quantum algorithms such as CRYSTALS-Kyber and for hybrid key exchanges and dual-signing schemes that protect against quantum threats without altering legacy applications. These advancements ensure remains resilient for mission-critical workloads, emphasizing and secure in hybrid cloud ecosystems.

Control Registers in x86 Architectures

32-bit x86 Registers

In the 32-bit x86 architecture, introduced with the 80386 , control registers (CR0 through CR7) play a central role in managing modes, , and paging mechanisms. These registers enable the transition from to , enforce levels for security, and control operations, forming the foundation of the system's multitasking and isolation capabilities. Access to these registers is restricted to kernel-mode code (current level 0) via the instruction, ensuring that only trusted software can alter critical system states. CR0, the machine status register, governs fundamental processor behaviors including protected mode enablement and paging activation. Its bit 0 (PE) enables , allowing segmentation and privilege rings for , a feature first introduced in the in 1982. Bit 31 (PG) activates paging for management, while bit 16 (WP) enforces on user pages even from mode to prevent unauthorized modifications, added in the Intel 80486 in 1989. Other bits like 30 (CD) for cache disable and 29 (NW) for not-write-through policy support memory consistency in protected environments. CR0 was initially defined in the 80286 but expanded significantly in the 80386 in 1985 to include paging and controls. CR1 remains reserved and unused in the standard architecture, with attempts to access it triggering an undefined instruction exception to maintain compatibility. CR2 holds the 32-bit linear address that triggered the most recent , aiding operating systems in resolving memory access violations during execution. This register is automatically loaded by the on page faults and is read-only in typical usage, though writable under privilege level 0. It was introduced alongside paging in the 80386 in 1985. CR3 serves as the page directory base register (PDBR), storing the physical base address of the page directory used for translating virtual to physical addresses in paged . Bits 4 (PCD) and 3 (PWT) control caching for page tables, optimizing performance in systems. Loading CR3 invalidates the (TLB) to ensure consistency. Like CR2, it debuted with the 80386's paging support in 1985. CR4 extends feature controls for advanced and processor capabilities, introduced in the processor in 1993. Bit 4 () enables 4 large pages to reduce TLB pressure in 32-bit paging, while bit 5 (PAE) supports 36-bit physical addressing for up to 64 of , added in the in 1995. Bit 7 () allows global page entries to persist across context switches, enhancing efficiency in multitasking environments. Reserved bits in CR4 must remain zero to avoid general protection faults. CR5 through CR7 are reserved for future use or processor-specific implementations in the IA-32 architecture; standard usage treats them as undefined, requiring zero values on access to prevent exceptions.
RegisterPrimary FunctionKey Bits (Examples)Introduction
CR0Mode and protection controlPE (0), PG (31), WP (16)80286 (1982), expanded 80386 (1985)
CR1ReservedNone80386 (1985)
CR2Page fault addressLinear address (full 32 bits)80386 (1985)
CR3Page directory basePDBR (31:12), PCD (4), PWT (3)80386 (1985)
CR4Feature extensionsPSE (4), PAE (5), PGE (7)Pentium (1993), PAE in Pentium Pro (1995)
CR5–CR7Reserved/implementation-specificNone80386 (1985)

64-bit x86-64 Extensions

The architecture, originally developed by and adopted by , introduces several new and extended control registers to support 64-bit operations, enhanced , and modern features like and . These extensions build upon the legacy 32-bit control registers (CR0 through CR3) by adding 64-bit width where necessary, new registers for interrupt handling and state management, and bits to enable and process-context identifiers. Key additions include the Extended Feature Enable Register (EFER), CR8 for task-priority control, and extended control registers like XCR0 and the XSAVE feature mask (XSS), which facilitate efficient handling of extended processor states in 64-bit environments. The EFER, a 64-bit (MSR) at address C000_0080h, was introduced in the AMD64 specification in 2000 and first implemented in the processor in 2003. It enables critical 64-bit features through specific bits: bit 0 () activates the SYSCALL and SYSRET instructions for efficient system calls in ; bit 8 (LME) enables when combined with CR0.PG=1 and CR4.PAE=1; bit 10 (LMA, read-only) indicates that is active; and bit 11 (NXE) enables no-execute (NX) page protection to prevent code execution from data pages marked non-executable, requiring CR4.PAE=1. Access to EFER is restricted to ring 0 via RDMSR and WRMSR instructions, and it plays a foundational role in transitioning to and operating within 64-bit , supporting up to 48-bit virtual addressing. CR8, introduced as part of the AMD64 architecture, serves as the Task Priority Register (TPR) exclusively in 64-bit mode, accessible via instructions with the prefix at privilege level 0. Its lower 8 bits (bits 7:0) define the task level (TPL), which masks below the specified threshold—e.g., a TPL of 0x0F disables all fixed- interrupts, while 0x00 allows all. CR8 synchronizes with the local APIC's TPR (at offset 80h) for filtering and is essential for and multitasking in 64-bit operating systems like Windows 64-bit. Upper bits (63:8) are reserved and must be zero. In virtualized environments, CR8 supports virtual TPR management without affecting physical interrupts. Extensions to legacy control registers include modifications for long mode compatibility. While long mode activation relies on EFER.LME rather than a direct CR0 bit, CR0's existing PE (protected mode enable, bit 0) and PG (paging enable, bit 31) bits are prerequisites, with CR0 now supporting 64-bit physical addressing up to 52 bits in modern implementations. CR4 gains the PCIDE bit (bit 17, Process-Context ID Enable), introduced in Intel's Westmere microarchitecture in 2010, which allows the processor to cache translation lookaside buffer (TLB) entries tagged with a 12-bit process-context identifier (PCID) from CR3 bits 11:0. This reduces TLB flushes during context switches in 64-bit multitasking. PCIDE requires CR4.PGE=1 and is ignored if CR0.PG=0. For managing extended processor states like AVX and SSE in 64-bit mode, Intel introduced XCR0 (Extended Control Register 0) in the Nehalem microarchitecture in 2008. This 64-bit register, accessed via XGETBV (read) and XSETBV (write) at ring 0 with CR4.OSXSAVE=1, controls which components of the XSAVE area are saved or restored by instructions like XSAVE and XRSTOR. Key bits include 0 (x87 FPU/MMX state, always 1), 1 (SSE state, including XMM registers and MXCSR), and 2 (AVX state, YMM registers); higher bits (e.g., 5-7 for AVX-512) enable vector extensions. XCR0 optimizes context switching by selectively managing up to 512 bytes or more of state, reducing overhead in 64-bit applications using SIMD instructions. Bits must form a valid combination per CPUID enumeration (leaf 0DH). Post-2013, with the Haswell microarchitecture, Intel added support for supervisor-only extended states via the IA32_XSS MSR (address DA0h), known as the XSAVE extended state feature mask. This 64-bit MSR, writable at ring 0 via WRMSR, specifies user-configurable supervisor states (e.g., for CET or custom extensions) that can be saved/restored using XSAVES and XRSTORS instructions, complementing XCR0's user/application states. IA32_XSS enables selective management of states beyond the standard XCR0 mask, such as Intel Processor Trace or protection keys, without affecting application-visible state; it must be zeroed on INIT and is crucial for kernel-level 64-bit security features. XSAVES uses the union of XCR0 and IA32_XSS to determine the save mask, optimizing for supervisor contexts in long mode. These 64-bit control register extensions underpin and in x86-64. Intel's VT-x, introduced in 2005 with the Prescott , leverages EFER, CR4 (including PCIDE for TLB optimization), and XCR0 to virtualize , allowing guest OSes to run in 64-bit submode with VMX controls for CR access (e.g., VM-entry checks on CR0/CD and CR0/NW bits). AMD's SVM (Secure Virtual Machine) analogously uses EFER and CR8 for 64-bit guest virtualization since 2006.

Control Registers in RISC Architectures

ARM

In architectures, particularly the A-profile used in and mobile systems, control registers are primarily accessed through the system control , known as CP15 in 32-bit modes, to configure core features such as , caching, and . These registers enable fine-grained control over behavior, optimizing for low-power operations in devices like smartphones and systems. Unlike general-purpose registers, control registers are privileged and accessed via specific instructions like MRC and MCR in ARMv7, or MRS and MSR in , ensuring secure configuration by the operating system or . The System Control Register (SCTLR), a of control registers, governs key aspects of the memory system and execution environment. It controls the (MMU) enablement via the M bit, data and instruction cache operations through the C and I bits respectively, endianness selection with the B bit for big-endian byte order, and Thumb execution state via the T bit for mixed 16/32-bit instructions. Introduced in the ARMv4 architecture in 1996, the SCTLR has evolved to support advanced features like vector base address relocation in later versions, providing a unified interface for system initialization in power-constrained environments. CP15 registers are organized by coprocessor register numbers (CRn) for modular access, allowing identification of capabilities and management of protections. The ID registers in CR0, such as the Main ID Register (MIDR), report features like architecture version and sizes, aiding software in adaptations. The Access Control Register (DACR) in CR3 specifies access permissions for up to 16 domains, enabling domain-based protection without full overhead. Fault status is captured in registers like the Instruction Fault Status Register (IFSR) and Data Fault Status Register (DFSR) in CR5, which detail abort causes such as faults or errors, facilitating in applications. This coprocessor-centric model emphasizes efficiency for mobile workloads. Application-specific control registers extend core functionality for and . The Auxiliary Control Register (ACTLR), an implementation-defined in CR1, tunes features like branch prediction enablement and SMP () coherence, allowing vendors to optimize for specific silicon variants without altering the base architecture. In systems supporting TrustZone extensions introduced in 2004, the Non-Secure Access Control Register (NSACR) in CR1 regulates non-secure world access to coprocessors and advanced SIMD units, enforcing isolation between secure and normal execution environments critical for . The transition to 64-bit processing in AArch64, introduced with ARMv8 in 2011, extends control registers for larger address spaces and virtualization. The SCTLR gains an EL1 variant (SCTLR_EL1) for exception level-specific controls, while the Translation Control Register (TCR_EL1) in the system register space manages stage-1 translation parameters like granule sizes and physical address extensions, replacing aspects of the 32-bit TTBR setup for scalable memory virtualization in servers and high-end mobiles. These 64-bit registers maintain backward compatibility with AArch32 modes, supporting hybrid 32/64-bit ecosystems. As of 2025, ARMv9 enhancements bolster through the Confidential Compute Architecture (), integrating Realm Management Extensions (RME) into control registers for dynamic resource attestation and isolation. This allows secure enclaves via new registers like RMMCTL_EL1 for realm creation, protecting sensitive workloads like inference from host OS interference, with implementations demonstrated in platforms such as Fujitsu's for HPC and .

MIPS

In the MIPS architecture, Coprocessor 0 (CP0) serves as the system control coprocessor, providing essential registers for managing exceptions, interrupts, , and processor configuration, particularly in systems where efficient handling of events is critical. These registers are accessed exclusively in kernel mode using the Move To Coprocessor 0 (MTC0) and Move From Coprocessor 0 (MFC0) instructions, which transfer data between general-purpose registers and CP0, enabling privileged operations like exception processing without user-mode interference. CP0's design emphasizes simplicity and low overhead, supporting the RISC philosophy by integrating control functions directly into the core pipeline for fast context switching in operating systems. The (CP0 Register 12, Select 0), also known as , governs key processor states including enabling, exception levels, and usability. Its (IE) bit (bit 0) controls global interrupt masking, while the Exception Level (EXL) bit (bit 1) indicates whether the processor is handling an exception, preventing further interrupts during critical sections. The Usable (CU) bits (bits 28-31) manage access to coprocessors like the , and the Kernel// (KSU) bits (bits 5-3) define the current operating mode, enforcing separation between and spaces. These features ensure reliable by isolating kernel operations from user code. The Cause Register (CP0 Register 13, Select 0) captures details of the most recent exception or , aiding in precise resolution. The Exception Code (ExcCode) field (bits 6-2) encodes the type of event, such as TLB misses (code 2) or arithmetic overflows (code 12), while the Interrupt Pending (IP) bits (bits 15-8) track hardware and software . The Branch Delay (BD) bit (bit 31) flags whether the exception occurred in a , allowing handlers to adjust restoration accurately. Together with the , it forms the core of exception processing, as seen in real-time operating systems like , where these registers determine CPU state for and exception dispatching on a shared . The Context Register (CP0 Register 4, Select 0) assists in management by pointing to or stacks during handling. Its PTEBase field (bits 31-23) holds an OS-defined pointer to the entry base for TLB refills, while BadVPN2 (bits 22-4) stores the virtual page number of the faulting address, streamlining context switches without full dumps. This is vital for efficient exception recovery in memory-intensive embedded applications. For TLB management in virtual addressing, the EntryHi (CP0 Register 10, Select 0) and EntryLo0/EntryLo1 (CP0 Registers 2 and 3, Select 0) registers, introduced with the R2000 processor in 1985, define translation entries. EntryHi's VPN2 field (bits 31-13) holds the virtual page number, and ASID (bits 7-0) specifies the identifier for . EntryLo0 and EntryLo1 map even and odd pages, respectively, with fields for physical frame number (PFN, bits 29-6), attributes (C, bits 5-3), (D, bit 2), valid bit (V, bit 1), and global bit (G, bit 0). These enable software-loaded TLB operations via instructions like TLBR (read) and TLBWI (write), supporting the architecture's fixed 64-entry TLB for cost-effective . The Config Register (CP0 Register 16, Select 0), which evolved significantly in the processor released in 1991, configures hardware parameters like cache sizes and memory access modes. Its K0 field (bits 2-0) sets cache coherency for Kseg0 uncached space, while MT (bits 9-7) indicates the MMU type (e.g., 1 for TLB). Additional bits like BE (bit 15) control , and cache size fields (e.g., bits 25-24) define instruction and cache organizations, allowing adaptation to varying requirements post-reset. This register's flexibility supports scalable implementations from simple microcontrollers to high-performance cores.

RISC-V

In RISC-V, control and status registers (CSRs) form a key component of the privileged architecture, providing mechanisms for managing processor state, interrupts, exceptions, and memory protection across privilege modes. These registers are addressed using a 12-bit encoding space, enabling a sparse layout that supports modular extensions without requiring a fixed number of registers, which is particularly advantageous for custom instruction set architectures (ISAs) in open-source hardware designs. The base set of CSRs was introduced in the initial RV32I specification from 2010, evolving through subsequent ratified versions to support embedded, IoT, and accelerator applications. The mstatus register (CSR address 0x300) is central to and management, with bits like MIE (bit 3) controlling global machine-mode enables and MPP (bits 11-12) storing the prior mode (e.g., 00 for user mode, 11 for machine mode). Complementing this, the mie (0x304) and mip (0x344) registers handle machine-level s: mie enables specific types such as external (MEIE, bit 11), (MTIE, bit 7), and software interrupts, while mip indicates pending status for the same (e.g., MEIP for external, MTIP for ). For handling, mcause (0x342) encodes the cause of exceptions or s (with bit XLEN-1 distinguishing s from exceptions and lower bits specifying codes like 8 for environment calls), often paired with mtval (0x343) to hold -specific values such as faulting addresses. Access to these CSRs occurs via dedicated instructions like CSRRW (read-modify-write using registers) and CSRRWI (using immediates), ensuring atomic operations from appropriate levels. Memory management is facilitated by the satp register (0x180), which configures supervisor-mode address translation in schemes like Sv39 (39-bit virtual addresses) or Sv48 (48-bit), with its MODE field (bits 63-60 in RV64) selecting the paging mode and PPN (bits 0-43) pointing to the root , alongside ASID for isolation. The architecture supports extensions through additional CSRs; for instance, the H-extension for hypervisors, ratified in 2021, introduces registers like hstatus (0x602) for supervisor mode control, hedeleg (0x602) for trap delegation, and hgatp (0x531) for guest address translation, enabling nested . Similarly, the vector extension (RVV 1.0, ratified in 2021) adds vcsr (0x006), which manages vector configuration including rounding modes and tracks state via the VS field in mstatus (off, initial, clean, or dirty). This modular CSR framework distinguishes by allowing ratifiable extensions for diverse applications, from low-power devices to high-performance accelerators, without the rigidity of fixed register sets in other architectures.

PowerPC

In the PowerPC architecture, Special Purpose Registers (SPRs) function as control registers to manage processor states, particularly in high-performance server and systems. The Machine State Register (MSR), a fundamental 32-bit or 64-bit register depending on the implementation, has been integral since the architecture's inception in 1991. It controls byte ordering through the bit (little-endian when set, big-endian when clear), enables external interrupts via the bit, and enforces privilege levels with the bit (problem state for mode, state for mode) and bit (instruction relocate mode for 64-bit addressing). These bits ensure secure and efficient operation across diverse applications, from controllers to servers. The (FPSCR) is a 32-bit SPR dedicated to management, recording the outcomes of operations and configuring behaviors such as modes (e.g., round to nearest or toward zero via bits 30-31) and for conditions like invalid operation, , underflow, and inexact results (bits 0-4 for sticky flags). Instructions like mffs (move from FPSCR) allow software to read these bits for error checking, while mtfsf (move to FPSCR fields) enables precise control, supporting high-precision computations in scientific and graphics workloads. Hardware-dependent control is provided by the Hide Registers HID0 and HID1, introduced with the PowerPC 601 core and carried forward in subsequent implementations like the 603e and 750 series. HID0 includes bits for management, such as ICE (instruction cache enable) and DCE (data cache enable) to disable caches for or real-time , and BTIC (branch target instruction cache) control for optimization. HID1 extends this with configuration for additional features like L2 parity and controls, allowing fine-tuned hardware behavior in superscalar pipelines. For 64-bit virtual memory support in Book E variants developed in the 2000s for embedded applications, the Segment Lookaside Buffer (SLB) registers form a cache of segment table entries, translating effective addresses to addresses with up to 80-bit spaces (configurable as 2^n bytes where 65 ≤ n ≤ 80). Each SLB entry includes an effective segment ID (ESID) and segment ID (VSID), enabling efficient large-address-space handling without full table walks, as defined in the Book III. The Version Register (PVR), a read-only 32-bit SPR, aids feature detection by encoding the processor model (bits 16-31) and revision level (bits 0-15), allowing operating systems to query capabilities like sizes or extensions at runtime. SPRs are accessed exclusively via privileged instructions: Move to SPR (mtspr), which loads an SPR from a general-purpose register, and Move from SPR (mfspr), which stores an SPR value to a general-purpose register, ensuring controlled modifications in supervisor mode. The processor, introduced in 2017, evolved these mechanisms with new SPRs for acceleration, including 2.0 controls in registers like the NVLink Configuration Register (NVLINKCFG), supporting up to 25 GB/s bidirectional GPU links for tensor computations and data analytics. By 2025, IBM's enhancements to control registers emphasize hybrid cloud scalability, incorporating dynamic execution register controls for adaptive privilege management and integrated support for transparent memory encryption via new SPR bits, reducing overhead in distributed environments while maintaining with prior PowerPC modes. In multi-core setups, these registers facilitate synchronized state handling across threads, optimizing resource sharing in parallel workloads.

References

  1. [1]
    Control Register - an overview | ScienceDirect Topics
    A 'Control Register' in Computer Science refers to additional registers visible only in kernel mode that provide access to mode-control information and ...
  2. [2]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    Developer's Manual, Volume 4, describes the model-specific registers of Intel 64 and IA-32 processors. 1.1. INTEL® 64 AND IA-32 PROCESSORS COVERED IN THIS ...
  3. [3]
    [PDF] PART OF THE PICTURE: Computer Architecture
    Control and status registers: These are used by the processor to control the operation of the processor and by privileged, operating-system routines to control ...
  4. [4]
    CONTROL register - Arm Developer
    The CONTROL register contains bit fields based on supported features, and can be 2, 3, 4, or 8 bits. It can only be written in privileged state.
  5. [5]
    Different Classes of CPU Registers - GeeksforGeeks
    Jul 12, 2025 · Each class of CPU registers, from general-purpose to status and control registers, supports specific tasks to ensure smooth and rapid execution of operations.
  6. [6]
    [PDF] Systems Reference Library IBM System/360 Principles of Operation
    ... IBM System/360 ... General Registers ............................................................... . Floating-Point Registers ............................
  7. [7]
    Special-purpose registers - Arm Developer
    The Armv8-M architecture specifies a set of special-purpose registers. For example, these special-purpose registers include control registers for interrupt ...
  8. [8]
    Privileged and Non-Privileged Instructions in Operating System
    Sep 18, 2025 · Privileged instructions are those that can only be executed by the operating system kernel or a privileged process, such as a device driver.
  9. [9]
    Types of privilege - Learn the architecture - AArch64 Exception Model
    There is a System Control Register (SCTLR) for each implemented Exception level. Each register controls the architectural features for that EL, such as the MMU, ...Missing: methods | Show results with:methods
  10. [10]
    CPU Exceptions - Writing an OS in Rust
    Jun 17, 2018 · CPU exceptions occur in various erroneous situations, for example, when accessing an invalid memory address or when dividing by zero.
  11. [11]
    CWE-284: Improper Access Control (4.18)
    Enforcement: the mechanism contains errors that prevent it from properly enforcing the specified access control requirements (e.g., allowing the user to specify ...
  12. [12]
    CWE-1262: Improper Access Control for Register Interface
    Key material stored in registers should never be accessible to software. Even if software can provide a key, all read-back paths to software should be disabled.Missing: CPU | Show results with:CPU
  13. [13]
    Memory-Mapped Register - an overview | ScienceDirect Topics
    Memory-mapped registers refer to peripheral registers that have allocated address locations within the memory address space, allowing them to be accessed ...
  14. [14]
    Access control vulnerabilities and privilege escalation - PortSwigger
    Horizontal privilege escalation occurs if a user is able to gain access to resources belonging to another user, instead of their own resources of that type. ...
  15. [15]
    Privilege Escalation, Tactic TA0004 - Enterprise - MITRE ATT&CK®
    Oct 17, 2018 · Privilege Escalation consists of techniques that adversaries use to gain higher-level permissions on a system or network.
  16. [16]
    [PDF] Architecture of the IBM System / 360
    The register housekeeping eliminated by the pushdown organization reappears as management of a finite-depth stack and as specification of locations of.
  17. [17]
    Milestones:Atlas Computer and the Invention of Virtual Memory ...
    Virtual Memory Hardware: the Page Address Registers. The central store (core + drum) was subdivided into blocks of 512 words. The main core store was also ...
  18. [18]
    [PDF] Users Manual - Bitsavers.org
    This publication describes the Intel® 8086 family of microcomputing components, concentrating on the 8086, 8088 and 8089 microprocessors. It is written for ...
  19. [19]
    [PDF] Intel® Virtualization Technology Specification for the IA-32 Intel ...
    The following fields in the guest-state area correspond to processor registers: • Control registers CR0, CR3, and CR4 (64 bits each). • Debug register DR7 (64 ...
  20. [20]
    Intel® AVX-512 Instructions
    Jun 20, 2017 · The evolution to Intel AVX-512 contributes to our goal to grow peak FLOP/sec by 8X over 4 generations: 2X with AVX1.0 with the Sandy Bridge ...
  21. [21]
    [PDF] GA27-2719-2_360-67_funcChar.pdf - Bitsavers.org
    Model 67 Time Sharing System. Major areas described ... assigned to control registers, logically extending the PSW to include those control registers.
  22. [22]
    Time-sharing in the IBM system/360 - ACM Digital Library
    A set of up to 16 control registers is provided on the Model 67 to implement various features and to allow for the increased number of memories and channels ...
  23. [23]
    [PDF] System/360 Model 67 Time Sharing System Preliminary Technical ...
    Enable all processors in a system to access directly or to control all components of the system, including core storage units, I/O channels, and I/O control ...
  24. [24]
    [PDF] Principles of Operation - Index of /
    This edition obsoletes and replaces Enterprise Systems Architecture/390 Principles of Operation, SA22-7201-07. This publication is provided for use in ...
  25. [25]
    ESA - 390 Principles of Operation - Scribd
    ESA_390 Principles of Operation - Free download as PDF File (.pdf), Text File (.txt) or read online for free. This edition obsoletes and replaces Enterprise ...
  26. [26]
    [PDF] IBM z/Architecture Principles of Operation
    Fourteenth Edition (May, 2022)​​ This edition obsoletes and replaces z/Architecture Principles of Operation, SA22-7832-12. This publication is provided for use ...
  27. [27]
    [PDF] IBM Eserver zSeries 990 (z990) Cryptography Implementation ...
    Register window is displayed with a drop down menu of available control vectors, as show on Figure 4-65. Figure 4-65 Load Operational Key Part Register with ...
  28. [28]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of nine volumes: Basic Architecture, Order Number 253665; Instruction Set ...
  29. [29]
    Intel introduces the 80286 microprocessor - Event - Computing History
    Feb 1, 1982 · The Intel 80286, released on February 1, 1982, is a 16-bit microprocessor with 134,000 transistors, widely used in IBM PC compatible computers.
  30. [30]
    Intel introduces the 80386 microprocessor - Event - Computing History
    Oct 17, 1985 · On the 17th October 1985, Intel launched its new microprocessor, the Intel 80386. Also known as the i386 or Intel 386, it was a 32-bit ...
  31. [31]
    80486 - Intel - WikiChip
    Dec 12, 2024 · Introduction, April 10, 1989 (announced) June, 1989 (launch) ; Production, 1988-2007 ; Architecture, x86 ; ISA, IA-32 ; µarch, 80486.
  32. [32]
    Pentium - Intel - WikiChip
    Apr 17, 2025 · Intel Pentium Processors Family[edit] ; designer, Intel + ; first announced, September 1992 + ; first launched, May 1993 + ; full page name, intel/ ...
  33. [33]
    [PDF] Volume 3 (3A, 3B, 3C & 3D): System Programming Guide - Intel
    This is Volume 3 of the Intel 64 and IA-32 manual, a System Programming Guide, part of a four-volume set.Missing: EFER | Show results with:EFER
  34. [34]
    Intel® 64 and IA-32 Architectures Software Developer Manuals
    Oct 29, 2025 · Describes the model-specific registers of processors supporting IA-32 and Intel® 64 architectures. Ten-Volume Set of Intel® 64 and IA-32 ...
  35. [35]
    Coprocessor 15 - Arm Developer
    The 16 primary registers in CP15 are named c0 to c15, but are often referred to by name. For example, the CP15 System Control Register is called CP15.SCTLR.
  36. [36]
    c1, System Control Register (SCTLR) - Arm Developer
    This manual describes the A and R profiles of the ARM architecture v7, ARMv7. It includes descriptions of the processor instruction sets, the original ARM ...
  37. [37]
    [PDF] ARM® Architecture Reference Manual - Texas Computer Science
    The System Control coprocessor, coprocessor 15 (CP15), used to control memory system components such as caches, write buffers, Memory Management Units, and ...
  38. [38]
    CP15 c0, Processor Feature registers - Arm Developer
    The Processor Feature registers, ID_PFR0 and ID_PFR1, provide information about the instruction set state support and programmers' model for the processor.
  39. [39]
    c3, Domain Access Control Register (DACR) - Arm Developer
    The Domain Access Control Register, DACR, defines the access permission for each of the sixteen memory domains. The DACR: is a 32-bit read/write register. is ...
  40. [40]
    CP15 c5, Fault status registers - Arm Developer
    The Data Fault Status Register, DFSR, holds status information about the last data fault. The DFSR is: a 32-bit read/write register. accessible only in ...
  41. [41]
    ACTLR: Auxiliary Control Register - Arm Developer
    This document provides descriptions in HTML format for the Armv9-A system registers and memory-mapped registers.
  42. [42]
    NSACR: Non-Secure Access Control Register - Arm Developer
    This document provides descriptions in HTML format for the A-profile system registers and memory-mapped registers.
  43. [43]
    SCTLR_EL1, System Control Register (EL1) - Arm Developer
    The SCTLR_EL1 characteristics are: Purpose Provides top level control of the system, including its memory system, at EL1 and EL0.
  44. [44]
    TCR_EL1: Translation Control Register (EL1) - Arm Developer
    This document provides descriptions in HTML format for the Armv8-A system registers and memory-mapped registers.Missing: SCTLR | Show results with:SCTLR
  45. [45]
    [PDF] ARMv8-Reference-Manual.pdf - Stanford CS140e
    This document is the ARM Architecture Reference Manual for ARMv8, specifically the ARMv8-A architecture profile. ARMv8 refers to version 8 of the ARM ...
  46. [46]
    Arm Confidential Compute Architecture
    The Arm Confidential Compute Architecture (Arm CCA) is part of the Armv9-A architecture and is due to be released later this year.Missing: enhancements | Show results with:enhancements
  47. [47]
    Fujitsu implemented confidential computing with Arm CCA
    Oct 13, 2025 · Discover how FUJITSU-MONAKA secures AI and HPC workloads with Arm v9 and Realm-based confidential computing.Missing: enhancements | Show results with:enhancements
  48. [48]
    [PDF] MIPS32™ Architecture For Programmers Volume III
    Mar 12, 2001 · Table 6-1 lists the CP0 registers in numerical order. The individual registers are described later in this document. If the compliance level is ...
  49. [49]
    [PDF] MIPS R4000 Microprocessor User's Manual
    Apr 1, 1994 · CP0 instructions perform operations specifically on the System Control. Coprocessor registers to manipulate the memory management and exception ...
  50. [50]
    MIPS R3000, R4000, R4650 - the triumf daq wiki
    With VxWorks for MIPS, real-time applications have access to the MIPS R4000 64-bit registers. This lets applications perform 64-bit math for enhanced ...
  51. [51]
    MIPS CPUS - The CPU Shack
    They contain 32 64bit integer registers and 32 64bit floating point registers, are superpiplined (8 stages) and approach an execution rate of one instruction ...<|separator|>
  52. [52]
    MIPS R4000 - Computer History Wiki
    Oct 20, 2018 · The R4000 processor was launched as the "first true 64-bit RISC microprocessor" [1] in 1991. It was developed by MIPS Computer Systems Inc but ...
  53. [53]
    [PDF] The RISC-V Instruction Set Manual: Volume II: Privileged Architecture
    The RISC-V privileged architecture includes privilege levels, Control and Status Registers (CSRs), and machine-level ISA registers.
  54. [54]
  55. [55]
    [PDF] PowerPC™ Microprocessor Family: - The Programming Environments
    ... Control Register Instructions ........................... 4-31. 4.2.2.6 ... Hennessy and David A. Patterson,. • Inside Macintosh: PowerPC System Software ...
  56. [56]
    Floating-point processor - IBM
    One 32-bit Floating-Point Status and Control Register (FPSCR). The floating-point processor provides high-performance execution of floating-point operations.
  57. [57]
    [PDF] 1995_MPC603EUM_PowerPC_...
    The PowerPC 603e microprocessor embodies the intellectual property of Motorola and of IBM. However, neither Motorola nor IBM assumes any.
  58. [58]
    [PDF] PowerPC Operating Environment Architecture Book III Version 2.02
    Jan 28, 2005 · 1 An effective address is translated to a virtual address via the Segment Lookaside Buffer (SLB). - Virtual address space size is 2n bytes,.
  59. [59]
    [PDF] PVR Register Settings PowerPC Microprocessors Revised 7/7/2005
    For integrated microprocessors the PVR register inside the device will identify the version of the microprocessor core. You must also read the Device ID, PCI ...
  60. [60]
    mfspr (Move from Special-Purpose Register) instruction - IBM
    The mfspr instruction copies the contents of the special-purpose register SPR into target general-purpose register (GPR) RT.Missing: MTSPR access
  61. [61]
    [PDF] POWER9 Processor Registers Specification, Volume 3 - RCS Wiki
    May 9, 2017 · NVLink is a trademark of the NVIDIA Corporation in the United States, other countries, or both. The OpenPOWER word mark and the OpenPOWER ...
  62. [62]
    IBM Reveals Next-Generation IBM POWER10 Processor
    Aug 17, 2020 · "With IBM POWER10 we've designed the premier processor for enterprise hybrid cloud, delivering the performance and security that clients expect ...