Windows X86-64 Means

0 views
Skip to first unread message

Carolina Bornman

unread,
Aug 3, 2024, 4:32:57 PM8/3/24
to resdansskutet

The x86-64 architecture is used in most CPUs for home computers and servers in use today. It is incompatible with the ARM64 architecture, which is in use in smartphones, Apple computers and some servers.

The x86 architecture was released by Intel in 1978. It was first released as a 16-bit architecture. It was called "x86" because the last two digits in the names of early processors that used it ended in "86." In 1985 it was expanded to be a 32-bit architecture, and x86 is now commonly associated with the 32-bit form. Since it only supported 32-bit address mapping natively, it was limited to 4 gigabytes (GB) of directly accessible memory. This limitation was becoming a major bottleneck in the late 1990s, especially for workstations and servers.

AMD developed the x86-64 architecture design and instruction set in 1999. The first commercially available CPU capable of using it was released in 2003. It was designed as a simple 64-bit extension to the existing x86 instruction set. This let it keep full compatibility with existing operating systems and software without any changes or performance impact. Since this version was developed by AMD, it is called amd64 in some technical sources.

About this time, Intel had released a competing 64-bit architecture called Itanium (IA-64) which was incompatible with x86. It could use emulation to run x86 programs, but this emulation was very slow. Itanium was not widely adopted. Intel released an x86-64 CPU in 2004 and eventually dropped Itanium.

A 64-bit CPU could theoretically access up to 16 exabytes of memory address space. Since this is far more than is needed by any system, most current implementations usually limit the physical memory addresses to 48-bits, or 256 terabytes of RAM.

The system virtual memory is similarly limited to 48-bits in many implementations. Newer Intel and AMD processors (Ice Lake or newer) support Level-5 paging, which raises this to 57-bits, or 128 petabytes.

To keep 64-bit memory addresses coherent and to support the limited addressing space, the most significant 16 bits must be the same. This results in two chunks of usable memory space. The lower half goes from 0000000000000000 to 00007FFFFFFFFFFF and the upper half from FFFF800000000000 to FFFFFFFFFFFFFFFF. This is known as canonical addressing. Many operating systems reserve the higher half for protected system or kernel memory and the lower half for user or program use.

The x86-64 architecture also includes a no-execute bit in the memory page table. This lets the system set a memory region as read only. If a program were to try and execute program code from a no-execute region, it would raise an exception. This can help to prevent buffer overrun attacks.

Most x86-64 CPUs include optional advanced instructions to optimize for certain tasks. Some examples of these are sever-sent event and Advanced Vector Extensions for vector operations and Advanced Encryption Standard"for cryptographic operations.

The ARM64 architecture, also known as AArch64, is used by Arm processors. It is the 64-bit version that extended the older 32-bit arm architecture (AArch32). ARM64 is a reduced instruction set computing design. RISC design seeks to have a few instructions that only do one thing at a time. This greatly reduces the complexity of the chip compared to CISC designs, such as x86-64.

Modern ARM64 and x86-64 implementations have largely converged in performance and are limited by similar factors. They are mainly performance limited by elements such as memory cache and branch prediction. This means that CPU performance is more influenced by implementation specifics than architecture. Factors such as transistor node size, cache size and power targets should be considered when selecting a processor architecture for a specific application.

The x86-64 architecture is backwards compatible all the way back to original 16-bit processors. This mode is still used when the computer boots and is then not used again at all during normal operation. Intel has recently proposed the x86s architecture, which removes these legacy modes, resulting in a simpler design.

The terms CPU and microprocessor are used interchangeably, and while they both execute similar computer tasks, their functions differ slightly. Learn how CPUs and microprocessors differ. Also, see how see how CPUs, GPUs and DPUs differ from one another.

Have you ever come across x86 and x64 but do not know what they mean? No worries, as this blog will cover everything you need to know about x86 and its architecture together with x64 and their differences between each other.

The x86 is developed based on the Intel 8086 microprocessor and its 8088 variant where it started out as a 16-bit instruction set for 16-bit processors where many additions and extensions have been added to the x86 where it grew to 32-bit instruction sets over the years with almost entirely full backward compatibility.

Today, the term x86 is used generally to refer to any 32-bit processor compatible with the x86 instruction set. x86 microprocessor is capable of running almost any type of computer from laptops, servers, desktops, notebooks to supercomputers.

Similar to the x86, the x64 is also a family of instruction set architectures (ISA) for computer processors. However, x64 refers to a 64-bit CPU and operating system instead of the 32-bit system which the x86 stands for.

That was the question I asked myself too at first. However, this is because as when the processor was first being created, it was called 8086. The 8086 was well designed and popular which can understand 16-bit machine language at first. It was later improved and expanded the size of 8086 instructions to a 32-bit machine language. As they improve the architecture, they kept 86 at the end of the model number, the 8086. This line of processors was then known as the x86 architecture.

On the other hand, x64 is the architecture name for the extension to the x86 instruction set that enables 64-bit code. When it was initially developed, it was named as x86-64. However, people thought that the name was too length where it was later shortened to the current x64.

As you guys can already tell, the obvious difference will be the amount of bit of each operating system. x86 refers to a 32-bit CPU and operating system while x64 refers to a 64-bit CPU and operating system.

Of course! This is one of the main reasons the number of bits keeps increasing over the years from 16-bits to 64-bits currently. As mentioned above, the bits are shorthand for a number that can only be 1 or 0. This causes the 32-bit CPUs not to be able to use a lot of RAM as 1 and 0, the total number of combinations is only 2^32 which equals to 4,294,967,295. This means the 32-bit processor has 4.29 billion memory locations each storing one byte of data which equates to approx. 4GB of memory which the 32-bit processor can access without workarounds in software to address more.

The x86 and x64 architectures refer to the two most widely-used types of instruction set architectures (ISA) created by Intel and AMD. An ISA specifies the behavior of machine code and defines how the software controls the CPU.

x86 is a type of ISA for computer processors originally developed by Intel in 1978. The x86 architecture is based on Intel's 8086 (hence the name) microprocessor and its 8088 variant. At first, it was a 16-bit instruction set for 16-bit processors, and later it grew to 32-bit instruction sets.

The x86 architecture's most significant limitation is that it can handle a maximum of 4096 MB of RAM. Since the total number of supported combinations is 2^32 (4,294,967,295), the 32-bit processor has 4.29 billion memory locations. Each location stores one byte of data, equating to approximately 4GB of accessible memory.

x64 (short for x86-64) is an instruction set architecture based on x86, extended to enable 64-bit code. It was first released in 2000, introducing two modes of operation - the 64-bit mode and the compatibility mode, which allows users to run 16-bit and 32-bit applications as well.

The x64 architecture supports much greater amounts of virtual and physical memory than the x86 architecture, allowing applications to store large data amounts in memory. Additionally, x64 expands the number of general-purpose registers to 16, providing further enhancements and functionality.

The x64 architecture can utilize a total of 2^64 bytes, equaling to 16 billion gigabytes (16 exabytes) of memory. The much greater resource utilization makes it suitable for powering supercomputers and machines that need access to vast resources.

While both architecture types are based on the 32-bit set, some key differences make them suitable for different uses. The main difference between them is the amount of data they can handle with each clock cycle and the processor's register width.

The processor stores frequently used data in a register for quick access. A 32-bit processor on x86 architecture has 32-bit registers, while 64-bit processors have 64-bit registers. Thus, x64 allows the CPU to store more data and access it faster. The register width also determines the amount of memory a computer can utilize.

Although both x86 and x64 have advantages, the future doesn't tolerate limits, which means that x86 will eventually be scarcely used or completely dropped. Additionally, x64 is much faster, can allocate more RAM memory, and has parallel processing capabilities via the 64-bit data bus, making it a better choice between the two architecture types.

This article shown the differences between an x86 and x64 instruction set architecture, along with their features, use cases, and limitations. Take into account all the features of each ISA and choose the one best suited for your configuration.

x86 started out as a 16-bit instruction set for 16-bit processors (the 8086 and 8088 processors), then was extended to a 32-bit instruction set for 32-bit processors (80386 and 80486), and now has been extended to a 64-bit instruction set for 64-bit processors. It used to be written as 80x86 to reflect the changing value in the middle of the chip model numbers, but somewhere along the line the 80 in the front was dropped, leaving just x86.

c80f0f1006
Reply all
Reply to author
Forward
0 new messages