Fact-checked by Grok 2 weeks ago

Long mode

Long mode is the primary operating mode of the architecture that enables 64-bit processing by extending the x86 to support 64-bit virtual addressing, wider registers, and enhanced computational capabilities, while ensuring full with legacy 32-bit and 16-bit applications through specialized sub-modes. Developed by as an extension to the x86 architecture and first implemented in the processor released on April 22, 2003, long mode represents a seamless evolution that allows 64-bit operating systems to run unmodified 32-bit and 16-bit software without requiring hardware changes or recompilation. adopted the technology in 2004 under the Intel 64 branding, integrating it into processors like the Nocona to standardize across the industry. Long mode is activated via the Long Mode Enable (LME) bit in the Extended Feature Enable Register (EFER) after enabling (PAE) paging, transitioning the processor from . It encompasses two sub-modes: 64-bit mode, where the default operand size is 32 bits but addresses are 64 bits wide, allowing access to up to $2^{48} bytes (256 TiB) of with 4-level paging, extendable to $2^{57} bytes (128 PiB) with 5-level paging on supported hardware, and utilizing extended registers such as R8–R15 and RIP-relative addressing; and , which emulates the 32-bit environment for legacy applications, restricting them to a 4 virtual address space. Key enhancements in long mode include the addition of eight new general-purpose registers (R8 to R15), eight additional registers (XMM8 to XMM15), and the prefix to access these and specify 64-bit operands, significantly boosting performance for 64-bit applications without disrupting existing x86 code. The mode eliminates legacy features like the for segmentation in favor of a flat memory model, though compatibility sub-mode retains segment support for older software. This design has made long mode the foundation for modern 64-bit operating systems such as Windows, , and macOS, powering the vast majority of personal computers and servers today.

Introduction

Definition and Purpose

Long mode is a primary operating mode of processors that enables 64-bit virtual addressing with a theoretical maximum of 2^ bytes (16 exabytes), expands general-purpose registers to bits (including eight new registers R8–R15), and incorporates a superset of the x86 instruction set with extensions like the prefix for 64-bit operations and RIP-relative addressing. This mode consists of two submodes—64-bit mode for native 64-bit code execution and for running legacy 32-bit applications—while ensuring binary compatibility with existing x86 software through a flat memory model and disabled segmentation in 64-bit mode. The purpose of long mode is to overcome the inherent limitations of the 32-bit architecture, such as the 4 GB virtual address space ceiling and 32-bit constraints, which restricted for memory-intensive workloads in servers, , and . By supporting up to 256 TB using 48-bit addressing in early implementations and up to 128 using 57-bit addressing in modern processors with 5-level paging support (as of 2025) of practical and 4 PB of physical memory (via 52-bit physical addresses in current implementations), it facilitates larger datasets, enhanced multitasking, and better performance for 64-bit applications without requiring a complete architectural overhaul. x86-64, the architecture encompassing long mode, extends the instruction set and was first specified by in 1999 as a compatible for . subsequently adopted the specification, rebranding it as Intel 64, enabling widespread deployment of 64-bit operating systems including Windows 64-bit editions and x86_64 kernels. Support for long mode can be detected in software using the instruction with extended function 0x80000001 in the register, where bit 29 (the Long Mode flag) in the register indicates availability if set to 1.

Historical Development

Long mode, a 64-bit operating mode in the x86-64 architecture, originated from AMD's efforts in the late 1990s to extend the 32-bit x86 instruction set architecture (ISA) while maintaining backward compatibility. AMD developed the AMD64 architecture—initially known as x86-64—as a response to the limitations of 32-bit addressing in growing computing demands for larger memory capacities. It was announced by AMD in 1999, with the first detailed public specification released in 2000, which outlined the core principles of 64-bit extensions including wider registers, enhanced addressing, and compatibility modes for legacy software. Key milestones in long mode's implementation began with 's hardware rollout in 2003, marking the transition from design to practical deployment. The server processors, based on the K8 , were the first to implement and thus long mode, launching on April 22, 2003, followed by the consumer-oriented on September 23, 2003. adopted the architecture in 2004 under the name Extended Memory 64 Technology (EM64T), initially shipping with processors on June 28, 2004, and later rebranding it as Intel 64; this move validated AMD's approach across the industry. The specification, version 2.0 released in 2005 by the Unified EFI Forum, further facilitated long mode adoption by providing a standardized interface for 64-bit booting on systems, replacing legacy limitations. The evolution of long mode continued through AMD's architectural advancements, with initial implementations in the K8 family (2003) establishing the foundational 64-bit capabilities, including up to 48-bit virtual addressing. By 2007, the K10 microarchitecture (Family 10h) expanded these features, introducing shared L3 caches, improved memory controller support for DDR3, and enhanced physical addressing up to 48 bits, enabling better scalability for multi-core systems and larger memory footprints. Integration into mobile processors accelerated in 2006, with AMD's Turion 64 X2 launch in May and Intel's Core 2 Merom in July, extending long mode to laptops for portable 64-bit computing. By 2010, long mode had become dominant in servers and personal computers, powering the majority of new x86-based systems amid rapid software ecosystem growth. Long mode's development had profound industry impact, particularly in shifting the 64-bit computing paradigm away from Intel's incompatible () architecture toward the backward-compatible . The emphasis on x86 compatibility reduced migration costs for existing software, leading to IA-64's marginalization in favor of for servers and desktops. As of 2025, processors— all supporting long mode—account for over 94% of the PC market, with and commanding the vast majority of shipments in desktops, laptops, and servers.

Operating Modes in x86-64

Comparison with Legacy Modes

x86 processors support multiple operating modes to accommodate evolving software requirements while maintaining backward compatibility. These include , a 16-bit emulating the original processor for legacy applications; , a 32-bit mode introducing and multitasking; and long mode, a 64-bit extension designed for modern operating systems. Mode switches occur through control registers such as CR0 and CR4, along with the IA32_EFER model-specific register. Key differences among these modes lie in addressing capabilities, memory management, and protection mechanisms. Real mode limits physical addressing to 20 bits (1 MB maximum) using a segment:offset scheme with no inherent protection or paging support. Protected mode expands to 32-bit linear addressing (up to 4 GB) with optional paging (4 KB or 4 MB pages) and complex segmentation via descriptor tables for access control and privilege levels (rings 0-3). In contrast, long mode employs 64-bit virtual addressing, up to 256 TB (48 bits) with 4-level paging or 128 PB (57 bits) with 5-level paging, in canonical form with mandatory multi-level paging (4-level or 5-level hierarchies supporting 4 KB, 2 MB, or 1 GB pages) and a simplified flat segmentation model that disables legacy segment limits and bases except for FS and GS registers. This flat model in long mode eliminates much of the segmentation overhead from protected mode, prioritizing efficiency for 64-bit applications while inheriting enhanced protection features like the no-execute (NX) bit. Mode transitions reflect the hierarchical nature of the architecture, with processors powering on in to ensure with early . Bootloaders typically transition from to by setting the PE bit in CR0, enabling segmentation and paging as needed, before entering long mode via the long-mode enable (LME) bit in IA32_EFER and paging activation. Direct transitions from to long mode are not possible, as long mode requires the foundational infrastructure. Within long mode, submode allows execution of 32-bit code by adjusting the descriptor, providing a bridge without full mode switches. Architecturally, long mode builds directly on protected mode's foundations to address the limitations of 32-bit addressing in an era of expanding demands, while eliminating 16-bit support and segmentation complexities for improved and in 64-bit environments. This evolution balances the need for software support with the efficiency required for contemporary operating systems.

Submodes of Long Mode

Long mode in the encompasses two primary submodes: 64-bit mode and . These submodes enable the processor to execute both modern 64-bit code and legacy 32-bit code within a unified environment that supports extended addressing and protection mechanisms. 64-bit mode serves as the native execution environment for 64-bit applications, utilizing the full capabilities of the extended register set and instruction . In this submode, general-purpose registers such as RAX, , RCX, , RSI, RDI, RBP, RSP, and the additional R8 through R15 are 64 bits wide, allowing for operations on larger data types and addresses. The instruction pointer, designated as , is also 64 bits, supporting a vast . New instructions and extensions are available, including those prefixed by the , which specify 64-bit sizes, access to extended registers, and other enhancements not present in legacy modes. Compatibility mode, in contrast, emulates the environment to allow 32-bit applications to run seamlessly under a 64-bit operating . Here, the restricts general-purpose registers to their 32-bit subsets (e.g., , EBX), and addressing is limited to 32 bits, mimicking the behavior of traditional 32-bit x86 code. The remains 64 bits internally but is interpreted within 32-bit constraints, and legacy segment registers function as in IA-32 mode. This submode operates within long mode's paging , ensuring that remains consistent with 64-bit requirements while preserving compatibility for unmodified 32-bit software. Switching between these submodes occurs under the control of specific flags in the Extended Feature Enable Register (EFER) Model-Specific Register (MSR) and the descriptor. The Long Mode Enable (LME) flag in EFER (bit 8) activates long mode capabilities, while the Long Mode Active (LMA) flag (bit 10, read-only) indicates that long mode is operational once paging is enabled. The Long attribute bit (CS.L) in the descriptor then determines the active submode: CS.L set to 1 selects 64-bit mode, and CS.L set to 0 selects . Transitions typically involve far jumps, calls, or returns that load a new descriptor. In practice, 64-bit mode is employed for developing and running new applications that benefit from expanded address spaces and performance optimizations, such as those in or large-scale . , meanwhile, facilitates the execution of legacy 32-bit software without the need for recompilation, enabling 64-bit operating systems to support existing applications alongside native 64-bit code.
Aspect64-bit ModeCompatibility Mode
Register Width64-bit (e.g., RAX, RIP)32-bit subsets (e.g., , EIP)
Addressing64-bit virtual addresses32-bit virtual addresses
Instruction Extensions prefix for 64-bit ops and extended registers instructions; no for 64-bit
Submode SelectionCS.L = 1CS.L = 0

Technical Implementation

Enabling Long Mode

To enable long mode on processors, the CPU must first support the feature, which is verified using the instruction with function 80000001H; bit 29 (LM flag) in the register indicates long mode capability. The processor must also operate in , with paging enabled via CR0.PG bit 31 set to 1 and (PAE) activated by setting CR4.PAE bit 5 to 1, ensuring valid page tables are in place for 64-bit addressing. The activation sequence begins by writing to the Extended Feature Enable Register (EFER) at MSR address C0000080H using the WRMSR , setting the LME (Long Mode Enable) bit 8 to 1 to enable long mode . Next, CR4.PAE is confirmed set to 1, and CR3 is loaded with the physical base address of the Page Map Level 4 (PML4) table to establish PAE paging structures. Paging is then enabled by setting CR0.PG to 1, which automatically sets EFER.LMA (Long Mode Active) bit 10 to 1 if LME was previously enabled. The Register (GDTR) and Register (IDTR) are loaded using LGDT and LIDT with tables containing 64-bit compatible descriptors, including a with the L (long) bit set to 1. Finally, a far jump to the 64-bit (e.g., jmp far 0x08:long_mode_start) flushes the and switches the into long mode. In legacy BIOS environments, the processor starts in 16-bit real mode after reset, requiring the bootloader to transition through protected mode before following the long mode enablement steps. Bootloaders such as GRUB perform this sequence, setting up descriptors and paging before jumping to the 64-bit kernel entry point. UEFI firmware also initiates in real or protected mode but transitions to long mode during the Driver Execution Environment (DXE) phase, handing off to the OS loader (e.g., BOOTX64.EFI) already in 64-bit mode with paging and IA-32e active. Invalid configurations during enablement, such as setting EFER.LME without PAE or paging, trigger a (#GP). Other faults like (#SS) can occur from non-canonical addresses post-transition. Verification after enablement involves re-executing function 80000001H to confirm the LM flag and reading EFER.LMA bit 10 via RDMSR to ensure long mode is active.

Register and Instruction Set Extensions

Long mode significantly expands the register set available to software, building upon the legacy 32-bit architecture to support 64-bit operations. The general-purpose registers are extended from eight 32-bit registers ( through EDI) to sixteen 64-bit registers, named RAX through R15, where the original eight are widened to 64 bits and eight new ones (R8 through R15) are added. These registers can be accessed in their full 64-bit form or in lower-precision subsets (e.g., RAX's lower 32 bits as , 16 bits as AX, or 8 bits as ), with 32-bit operations automatically zero-extending results into the upper 32 bits of the 64-bit register. The flags is likewise extended from the 32-bit EFLAGS to a 64-bit RFLAGS, incorporating all legacy flags plus additional bits for 64-bit-specific status and control, while the upper 32 bits remain reserved and zeroed. The instruction pointer evolves from the 32-bit EIP to a 64-bit RIP, enabling addressing of the full 64-bit . For vector and SIMD processing, long mode mandates support for eight additional 128-bit XMM registers (XMM8 through XMM15), extending the set to sixteen total, as part of the required extension. Subsequent extensions introduce wider registers: AVX adds eight 256-bit YMM registers (YMM0 through YMM15, with the upper 128 bits of each aligning with XMM registers), while further expands to sixteen 512-bit ZMM registers (ZMM0 through ZMM31) in 64-bit mode, along with eight 64-bit opmask registers (K0 through K7) for masked operations. These registers enhance for floating-point, integer, and workloads, with AVX and instructions encoded using VEX and EVEX prefixes, respectively, to support three-operand formats and conditional execution. The set in long mode incorporates a new prefix (a single-byte extension to instruction encoding) to specify 64-bit sizes, the additional registers (R8-R15 and XMM8-XMM15), and handle other extensions like high 8-bit register access. Arithmetic and logical default to 32-bit operands, with the REX.W prefix used to specify 64-bit operands, providing native support for 64-bit integer operations, while instructions operating on 32-bit or smaller operands either zero-extend results to 64 bits (for 32-bit) or leave upper bits unchanged (for 16-bit and 8-bit). SSE2 , mandatory in long mode, extend scalar and vector floating-point operations to 128 bits, forming the baseline for SIMD capabilities. Addressing modes are refined for efficiency in a flat 64-bit memory model, where segment registers (CS, DS, ES, , GS, SS) have their base addresses and upper limits ignored except for and GS base adjustments via MSRs, eliminating legacy segmentation overhead. A key addition is RIP-relative addressing, which allows displacements relative to the 64-bit value of the next , facilitating without relying on absolute addresses or register indirection. This mode, encoded via the byte, supports efficient data access in large address spaces and is widely used in and libraries.

Addressing and Memory Management

Virtual and Physical Addressing

In long mode, virtual addressing employs 64-bit logical addresses, but the canonical form restricts effective addressing to 48 bits in the standard configuration, where bits 63 through 48 are sign-extended from bit 47, resulting in an addressable space of 256 terabytes (2^48 bytes). Modern processors support optional 5-level paging, extending canonical addressing to 57 bits (bits 63:57 sign-extended from bit 56), for a space of 128 petabytes (2^57 bytes). This is conventionally divided into a user space occupying the lower half (addresses from 0 to 2^47 - 1 in 4-level mode, or 0 to 2^56 - 1 in 5-level mode) and a space in the upper half (addresses from -2^47 to -1 or -2^56 to -1, represented as 0xFFFF800000000000 to 0xFFFFFFFFFFFFFFFF in 4-level mode), enforced through paging mechanisms to separate privilege levels. Physical addressing in long mode varies by processor implementation, with early AMD64 processors, such as the initial family, supporting 40 bits for a 1 terabyte physical address space, later expanded to 48 bits (256 terabytes) in subsequent cores, and ultimately up to 52 bits (4 petabytes) in modern implementations. Intel's initial 64-bit processors similarly started with 36 bits, progressing to 48 bits and beyond to 52 bits in later generations, determined by the MAXPHYADDR value reported via . The canonical addressing rule mandates that for a virtual address to be valid, its upper bits (63:48 in 4-level mode or 63:57 in 5-level mode) must either all be 0s (for positive addresses) or all 1s (for negative addresses), matching the of bit 47 or bit 56; violation triggers a general-protection fault (#GP). This mechanism ensures compatibility and reserves higher address bits for potential future expansion to a full 64-bit virtual space without requiring hardware modifications. Software in long mode utilizes full 64-bit pointers for portability across implementations, with operating systems typically masking or zeroing unused upper bits to maintain during address generation and validation. This approach allows seamless translation from virtual to physical addresses via paging structures, as detailed in subsequent sections on page size and translation.

Page Size and Translation

In long mode, the (MMU) employs a four-level to translate 48-bit addresses by default, enabling efficient and ; modern processors also support an optional five-level for 57-bit addresses, enabled by setting the LA57 bit in control register CR4 (or equivalent on ). The four-level structure consists of the page map level-4 table (PML4), page directory pointer table (PDPT), page directory (PD), and (PT), with each level containing 512 entries addressed by 9 bits from the address. The five-level structure adds a page map level-5 table (PML5) using an additional 9-bit index (bits 56:48). The use of 512 entries per level, derived from 9-bit indices and 4 KB size, supports a vast while maintaining compatibility with (TLB) efficiency. Page sizes in long mode include the standard 4 granularity for fine-grained control, as well as larger 2 MB pages mapped directly via PD entries and 1 huge pages via PDPT entries. These extended sizes apply similarly in five-level paging, with additional support for 512 and 1 TB pages via higher-level entries. These extended sizes, indicated by the page size () bit in the respective table entries, reduce TLB pressure by covering larger memory regions with fewer translations, which is particularly beneficial for operating systems handling large data structures or file-backed mappings. For instance, a 2 MB page uses a 21-bit , while a 1 page employs a 30-bit , allowing the MMU to bypass lower-level tables when is set. The address translation process begins with the canonical virtual address, sign-extended to 64 bits (bits 63:48 matching bit 47 in 4-level mode, or bits 63:57 matching bit 56 in 5-level mode). For 4 KB pages in four-level mode, the address splits into a 12-bit byte offset and four 9-bit indices: bits 47:39 for PML4, 38:30 for PDPT, 29:21 for PD, and 20:12 for PT. In five-level mode, an additional 9-bit PML5 index (56:48) is used. The CR3 control register holds the physical base address of the PML4 table (or PML5 in five-level mode, aligned to 4 KB), from which the MMU walks the hierarchy by adding the indices to fetch subsequent bases until reaching the physical page frame in the PT entry, then appending the offset. This process supports protections like read/write permissions and the no-execute (NX) bit, located at bit 63 of page table entries, which prevents instruction fetches from the page when the extended feature enable register's NXE bit is set, aiding in executable space protection. Long mode paging builds on physical address extension (PAE) from protected mode, requiring CR4.PAE to be enabled for entry into long mode, but extends it with 64-bit base addresses and the full four- or five-level hierarchy for 48- or 57-bit virtual addressing. While PAE in 32-bit mode uses a three-level structure with 32-bit entries for up to 36-bit physical addresses, long mode adopts 64-bit entries throughout, allowing up to 52-bit physical addresses without altering the core translation mechanics.
Virtual Address Bit RangeFieldPurpose (for 4 KB Pages in 4-Level Paging)
63:48Sign ExtensionCanonical form (all 0s or 1s)
47:39PML4 IndexSelects entry in PML4 table
38:30PDPT IndexSelects entry in PDPT
29:21PD IndexSelects entry in PD (or 2 MB map)
20:12PT IndexSelects entry in PT
11:0Page OffsetByte offset within 4 KB page

Compatibility and Software Support

Running Legacy Code

In long mode, 32-bit applications are executed in , a submode that maintains compatibility with legacy protected-mode code by restricting operations to 32-bit linear addressing within the lower 4 of the . These applications run in isolated s defined by 32-bit descriptors, where the operating system schedules them as separate tasks by performing a far to load a code segment selector with the L (long) attribute bit cleared (CS.L=0), thereby switching the processor into while remaining in long mode overall. Support for 16-bit code in long mode is limited to protected-mode execution within compatibility submode, where a code segment descriptor with the D (default operand size) bit cleared (CS.D=0) enables 16-bit instruction and addressing defaults, but real-address mode and virtual-8086 (VM86) mode are not natively available since the VM flag in RFLAGS cannot be set. Consequently, 16-bit real-mode applications, such as classic programs, require software , as provided by tools like , or indirect access via interrupt calls initiated from 32-bit compatibility mode code. Legacy x86 instructions from 16-bit and 32-bit protected modes execute identically in compatibility mode as they do in legacy IA-32 protected mode, with address-size and operand-size attributes determined by segment descriptors or instruction prefixes, while attempts to execute invalid 16-bit or 32-bit code directly in 64-bit mode (CS.L=1) result in general-protection exceptions or undefined behavior traps. For example, 64-bit Windows employs the subsystem, which leverages to run unmodified 32-bit applications seamlessly alongside native 64-bit processes, handling mode switches and thunking in user mode. Similarly, 64-bit distributions support 32-bit binaries through multiarch functionality, enabling installation of packages and libraries (formerly via ia32-libs) to execute legacy applications in without recompilation. However, starting with in November 2020, Apple discontinued support for 32-bit applications, requiring updates to 64-bit versions for compatibility.

Operating System Implications

Operating systems utilizing long mode, the 64-bit extension of the , require kernels designed specifically for 64-bit execution to fully leverage its capabilities. These kernels, such as starting with version 2.6 released in December 2003, must operate entirely in long mode after initialization, managing transitions between user and kernel modes through dedicated instructions like SYSCALL and SYSRET, which replace legacy interrupt-based mechanisms for efficiency. Similarly, the x64 editions of Professional and , released on April 25, 2005, introduced x86-64 support, necessitating kernel-level handling of mode switches and model-specific registers (MSRs) such as IA32_LSTAR for SYSCALL setup to ensure secure and fast context changes. macOS followed with 64-bit kernel support in Mac OS X 10.6 in August 2009, aligning OS design with long mode's paging and segmentation requirements. The adoption of long mode has profoundly shaped OS ecosystems, with major platforms defaulting to 64-bit execution on compatible hardware by the late 2000s. Linux distributions transitioned widely around 2005-2010, Windows client editions with Vista in 2007, and macOS with Snow Leopard in 2009 enforcing 64-bit kernels. This shift underscores x86-64's dominance in desktops and servers, even amid competition from ARM architectures in mobile and embedded systems, where x86-64's backward compatibility and performance in legacy-heavy environments maintain its prevalence. Performance benefits include a vastly expanded virtual address space—up to 2^48 bytes in canonical form—which allows OSes to allocate larger memory regions without frequent swapping to disk, reducing I/O overhead and improving responsiveness in memory-intensive workloads. Additionally, the doubling of general-purpose registers from 8 to 16 enables more efficient code generation, minimizing memory accesses and boosting computational throughput in 64-bit applications. However, running 32-bit applications on 64-bit OSes in long mode introduces emulation overhead via subsystems like Windows' or Linux's compatibility layers, potentially resulting in some performance overhead due to thunking and register management differences. Security implications are enhanced in long mode; (ASLR) benefits from the 48-bit address space, providing greater entropy (up to 2^28 possible base addresses) to thwart exploitation compared to 32-bit limits. Data Execution Prevention (DEP), natively supported via the in paging, marks data pages as non-executable at the hardware level, bolstering defenses against attacks in 64-bit kernels. Vulnerabilities like and Meltdown, disclosed in 2018, exploit in long mode but are mitigated through OS-level techniques such as Kernel Page-Table Isolation (KPTI), which separates user and kernel page tables to prevent unauthorized memory access during paging operations.

Limitations and Future Developments

Current Hardware Constraints

In long mode, the architecture imposes a virtual limit of 48 bits, restricting the effective to 256 terabytes, with higher bits required to be extensions of bit 47 for validity. This constraint stems from the four-level paging structure, although five-level paging—introduced in Intel's Ice Lake (2019) and AMD's (2022)—extends the maximum virtual to 57 bits (128 petabytes), but most operating systems and applications remain confined to the 48-bit range due to compatibility and TLB efficiency considerations. Physical addressing in current implementations varies by vendor and generation but falls short of full 64 bits due to (MMU) and (TLB) complexities. For example, AMD's architecture (introduced in 2022 with 7000 and Genoa) supports up to 52 bits of physical addressing (4 petabytes), while Intel's (12th generation, 2021) reaches 46 bits in consumer configurations via leaf 0x80000008. AMD's (2024, 9000 series) maintains this 52-bit physical limit without expansion, and Intel's Arrow Lake (Core 200 series, 2024) similarly adheres to 46 bits for desktop variants. Earlier processors, such as those predating 2010 (e.g., AMD K8 family and Intel ), are capped at 40 bits of physical addressing (1 terabyte maximum), limiting their utility for modern high-memory workloads. Practical system-level constraints further restrict usable memory beyond these bit widths. High-end consumer platforms like AMD's Threadripper PRO 7000 WX-series (, 2023) support up to 2 terabytes of DDR5 RDIMM across eight channels, while non-PRO Threadripper 7000 variants max out at 1 terabyte; these figures reflect slot limits and requirements rather than CPU addressing alone. Additionally, processors power on in (16-bit), necessitating overhead to transition to long mode via and paging setup, which introduces initial compatibility hurdles for 64-bit environments. Implementation variances between and arise primarily in model-specific registers (MSRs), which control long mode features like paging extensions and performance monitoring. For instance, AMD uses MSRs such as 0xC001_001F for extended feature enablement, differing from Intel's 0x0000_0C01 equivalents, requiring OS vendors to detect and adapt via for vendor-specific behaviors in long mode. As of 2025, no substantive architectural shifts have occurred since the 2023 introduction of and Intel's 13th/14th generations, with five-level paging remaining the primary enhancement to address larger spaces without altering core long mode mechanics.

Potential Expansions

Long mode's addressing capabilities are designed with extensibility in mind, leveraging the addressing to support software-transparent upgrades beyond the current 48-bit virtual address limit. This enforces sign-extension of higher bits, allowing implementations to utilize bits for virtual addresses—equivalent to 128 petabytes ()—without requiring changes to existing software that adheres to . Similarly, physical addressing can extend to 52 bits, supporting 4 of , as defined in the architecture specifications. A key architectural proposal enabling this expansion is 5-level paging, which adds an additional layer to the hierarchy to accommodate the larger . Introduced by in its Ice Lake processors in 2019, this feature extends virtual addressing to 57 bits when enabled via the LA57 bit (bit 12) in the CR4 . followed suit with support in its 9004 "Genoa" series (based on architecture) released in 2022, allowing compatible systems to utilize the full 52-bit space alongside the expanded virtual range. Emerging technologies like (CXL) further promise to transcend traditional physical memory constraints by enabling memory pooling across disaggregated systems. CXL integrates coherent memory expanders over high-speed interconnects, allowing x86-64 processors in long mode to access pools that effectively scale beyond local limits while maintaining coherency. Industry projections suggest that full utilization of 64-bit virtual addressing—removing restrictions entirely—could appear in server-oriented chips by around 2030, driven by escalating demands for massive datasets in AI and . However, realizing these expansions faces significant challenges, including the high cost of redesigning processor caches and translation lookaside buffers (TLBs) to handle wider addresses without performance degradation. requirements, rooted in the x86 legacy, necessitate gradual rollouts to avoid disrupting existing ecosystems, ensuring that enhancements like extended paging remain optional and transparent to legacy applications.

References

  1. [1]
    [PDF] x86-64 White Paper
    The x86-64 architecture extends the standard x86 architecture by adding a new mode called long mode. Long mode is enabled by a global control bit called LMA ...<|control11|><|separator|>
  2. [2]
    Intel® 64 and IA-32 Architectures Software Developer Manuals
    Oct 29, 2025 · These manuals describe the architecture and programming environment of the Intel® 64 and IA-32 architectures.
  3. [3]
    PRESS RELEASE DATED JULY 16, 2003 - 8-K - AMD
    On April 22, AMD introduced the AMD Opteron processor, the world's first 64-bit processor compatible with the industry-standard x86 architecture. We believe the ...
  4. [4]
    The History of Intel Processors - businessnewsdaily.com
    Aug 8, 2024 · In 1999, Intel released the Pentium III processor, the first x86 processor ... The processor was launched as Intel's first 64-bit processor and ...
  5. [5]
    [PDF] AMD x86-64 Architecture Programmer's Manual Volume 2 - kib.kiev.ua
    Long Mode—This mode supports 16 exabytes of virtual- address space using 64-bit virtual addresses. Physical Memory. Physical addresses are used to directly ...
  6. [6]
    [PDF] AMD 64-Bit Technology - kib.kiev.ua
    This document describes the new features of AMD's x86-64 architecture and their differences from legacy x86 architecture. ... Long mode supports only x86 ...
  7. [7]
    An AMD64 Platform Primer – CPUplanet
    In October 1999, AMD announced a bold alternative to the proprietary EPIC or Itanium 64-bit processor architecture chosen by Intel: The CPU underdog ...
  8. [8]
    [PDF] Revision Guide for AMD Athlon 64 and AMD Opteron Processors
    April 2003 3.01 Initial public release. The purpose of the Revision Guide for AMD Athlon™ 64 and AMD Opteron™ Processors is to communicate updated product ...
  9. [9]
    AMD Athlon 64 Set for Sept. 23 Launch - MCPmag.com
    Jul 17, 2003 · AMD Athlon 64 Set for Sept. 23 Launch. By Scott Bekker; 07/17/2003. Chipmaker AMD on Wednesday set a Sept. 23 launch date for its AMD Athlon 64 ...
  10. [10]
    Intel Ships 64-Bit Xeon Chip - eWeek
    Jun 28, 2004 · Intel will roll out its EM64T (Extended Memory 64 Technology), featured in the Nocona processor, gradually over the course of the year.
  11. [11]
    Specifications | Unified Extensible Firmware Interface Forum
    Access to the UEFI Specifications. The UEFI Specifications identified below are available for downloading and to read only.
  12. [12]
    The History Of AMD CPUs: Page 3 | Tom's Hardware
    Apr 21, 2017 · AMD's next architecture, K10, was a rather ambitious design. It is closely related to the K8, but it had several enhancements to the core and ...
  13. [13]
    AMD Turion - Wikipedia
    AMD Turion is the brand name AMD applies to its x86-64 low-power consumption mobile processors codenamed K8L. ... The Turion 64 X2 was launched on May 17, 2006, ...
  14. [14]
    x86-64 - Wikipedia
    The x86-64 architecture defines a compatibility mode that allows 16-bit and 32-bit user applications to run unmodified alongside 64-bit applications, provided ...
  15. [15]
    Intel's Itanium CPUs, once a play for 64-bit servers and desktops ...
    May 11, 2017 · AMD's approach was so successful that Intel actually adopted AMD's extensions, cementing what is now usually called x86-64 as the dominant ...
  16. [16]
  17. [17]
    [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 four volumes: Basic Architecture, Order Number 253665; Instruction Set ...
  18. [18]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    NOTE: This document contains all four volumes of the Intel 64 and IA-32 Architectures Software. Developer's Manual: Basic Architecture, Order Number 253665; ...
  19. [19]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    Intel technologies features and benefits depend on system configuration and may require enabled hardware, software, or service activation. Learn more at intel.<|control11|><|separator|>
  20. [20]
    [PDF] AMD64 Architecture Programmer's Manual, Volume 2
    This is the AMD64 Architecture Programmer's Manual, Volume 2, covering System Programming, and is for informational purposes only.
  21. [21]
    [PDF] Unified Extensible Firmware Interface (UEFI) Specification
    Aug 29, 2022 · ... boot a UEFI-compliant OS. The UEFI Driver Model is designed to be generic and can be adapted to any type of bus or device. The UEFI Spec ...
  22. [22]
    x64 Architecture Overview and Registers - Windows drivers
    Documentation ... The x64 architecture is a backward-compatible extension of x86 that provides a new 64-bit mode and a legacy 32-bit mode identical to x86.
  23. [23]
    [PDF] Intel® Architecture Instruction Set Extensions Programming Reference
    ... AVX-512 instructions support 8 opmask registers (k0-k7). The width of each opmask register is architecturally defined of size MAX_KL (64 bits). Seven of the ...
  24. [24]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    The Intel® 64 and IA-32 Architectures Software Developer's Manual, Volumes 3A ... The steps neces- sary for switching between real-address and protected modes are ...
  25. [25]
    [PDF] The Opteron Microprocessor
    Nov 30, 2003 · Opteron uses 40-bit physical and 48-bit virtual addressing, thereby being able. 3. Page 4. to address up to one terabyte of physical memory and ...<|separator|>
  26. [26]
    physical address space in qemu | kraxel's news
    Dec 1, 2023 · Enter Intel. The first 64-bit processors shipped by Intel featured only 36 bits of physical address space. More recent Intel processors have 39 ...Missing: initial | Show results with:initial<|control11|><|separator|>
  27. [27]
    None
    Below is a merged summary of paging in IA-32e mode (Long Mode) based on the provided segments from the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A. To retain all information in a dense and comprehensive format, I will use a combination of text and tables in CSV format where applicable. The summary consolidates details on paging hierarchies, entries, virtual address bits, page sizes, translation process, CR3 role, NX bit, and legacy compatibility with PAE, drawing from the various sections (e.g., Chapters 4, 5, 6, 7, 9, 11, 24, etc.) mentioned across the segments.
  28. [28]
    [PDF] AMD64 Architecture Programmer's Manual, Volume 2
    ... Canonical Address Form ... Addressing ...
  29. [29]
    None
    Below is a comprehensive merged summary of the content related to "Long Mode," "Compatibility Mode," and related topics from the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3 (various sections), based on the provided summaries. To retain all information in a dense and organized manner, I will use tables in CSV format where applicable, followed by detailed text for additional context. The response consolidates all relevant details across the segments while avoiding redundancy and ensuring completeness.
  30. [30]
    [PDF] The AMD x86-64 Architecture Extending the x86 to 64 bits - Hot Chips
    Why extend x86 to 64 bits? – X86 is the most widely installed instruction set in the world. – Delivers 64-bit advantages while providing full x86 compatibility.
  31. [31]
    x86-64 - OSDev Wiki
    Long mode extends general registers to 64 bits (RAX, RBX, RIP, RSP, RFLAGS, etc), and adds eight additional integer registers (R8, R9, ..., R15) plus eight more ...
  32. [32]
    Running 32-bit Applications - Win32 apps - Microsoft Learn
    Aug 19, 2020 · WOW64 is the x86 emulator that allows 32-bit Windows-based applications to run seamlessly on 64-bit Windows. This allows for 32-bit (x86) ...
  33. [33]
    Multiarch/HOWTO - Debian Wiki
    Sep 23, 2025 · Multiarch lets you install packages from different architectures to the one your system normally uses. For example, you can use it to install an ...
  34. [34]
    MultiArch - Community Help Wiki - Ubuntu Documentation
    Jul 29, 2013 · Multiarch allows running programs compiled for one architecture (like i386) on another (like amd64), especially for 32-bit programs on 64-bit ...Missing: binaries | Show results with:binaries
  35. [35]
    Linux_2.6 - Linux Kernel Newbies
    No readable text found in the HTML.<|separator|>
  36. [36]
  37. [37]
  38. [38]
  39. [39]
    An Introduction to 64-bit Computing and x86-64 - Ars Technica
    Mar 11, 2002 · Only code running in long mode's 64-bit sub-mode can take advantage of all the new features of x86-64. Legacy x86 code running in long mode's ...Missing: 1999 | Show results with:1999
  40. [40]
    Do 32-bit Apps Run Faster or Slower on 64-bit Operating Systems?
    Mar 18, 2024 · In this tutorial, we'll explain whether 32-bit apps run faster or slower on 64-bit machines and discuss the factors influencing an application's performance.2. Why Use 32-Bit Apps On... · 2.2. 32-Bit Software On... · 3.1. Memory Range
  41. [41]
    ASLR and memory layout on 64 bits: Is it limited to the canonical part ...
    Nov 27, 2021 · On systems with 48-bit virtual addresses, zero to 0000_7fff_ffff_ffff is the full lower half of virtual address space when represented as a sign-extended 64- ...Why do x86-64 systems have only a 48 bit virtual address space?How can I access specific memory regions from x86-64 linux ...More results from stackoverflow.com
  42. [42]
    Data Execution Prevention - Win32 apps - Microsoft Learn
    May 1, 2023 · Data Execution Prevention (DEP) is a system-level memory protection feature that is built into the operating system starting with Windows XP and Windows Server ...How Data Execution... · Programming ConsiderationsMissing: x86- 64
  43. [43]
    Understanding Spectre v2 Mitigations on x86 | linux - Oracle Blogs
    Apr 1, 2025 · With Spectre v2, indirect branch predictions can be controlled between different privilege modes on the same processor thread. In addition, ...
  44. [44]
    Performance implications of Meltdown, Spectre, and L1TF
    This document provides information about released mitigations for Meltdown, Spectre, and L1 Terminal Fault (L1TF) in SUSE Linux Enterprise-based products.
  45. [45]
    Zen 4 - Microarchitectures - AMD - WikiChip
    Oct 3, 2025 · physical and linear address size raised from 48 to 52 and 57 bits respectively; Improved cache load, write and prefetch from/to register ...
  46. [46]
    [PDF] "AMD Instinct MI300" Instruction Set Architecture: Reference Guide
    Aug 5, 2025 · This Specification Agreement ("Agreement") is a legal agreement between Advanced Micro Devices, Inc. ("AMD") and "You" as the recipient of.
  47. [47]
    [PDF] 5-Level Paging and 5-Level EPT - Intel
    May 1, 2017 · This document describes planned extensions to the Intel 64 architecture to expand the size of addresses that can be translated through a ...Missing: Ice Lake AMD Zen
  48. [48]
    [PDF] VMware® vSphere® Tuning Guide for AMD EPYC™ 9004 Series ...
    • 5-level Paging. • AVX-512 instructions on a 256-byte datapath, including ... Please see “AMD EPYC™ 9004 Series Processors” on page 5 for detailed.
  49. [49]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    Jan 2, 2012 · NOTE: The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of nine volumes: