Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mainstream CPU architecture #7

Open
jinsanity07git opened this issue May 1, 2024 · 0 comments
Open

mainstream CPU architecture #7

jinsanity07git opened this issue May 1, 2024 · 0 comments
Labels
documentation Improvements or additions to documentation

Comments

@jinsanity07git
Copy link
Owner

jinsanity07git commented May 1, 2024

mainstream CPU architecture

Currently, the two dominant architectures are:

  1. x86-64 (also known as AMD64)
  • Developers: Originally developed by AMD, this architecture is now used by both AMD and Intel.
  • Characteristics: It's a 64-bit extension of the original 32-bit x86 architecture. It supports complex instruction set computing (CISC) with a focus on high performance and compatibility with a wide range of software.
  • Usage: This architecture is primarily used in personal computers, laptops, and servers. It dominates the desktop and server markets due to its high performance and broad software ecosystem.
  1. ARM (including aarch64 or ARM64)
  • Developer: ARM Holdings licenses the architecture to various companies, which then design their own processors that comply with the ARM specifications.
  • Characteristics: ARM architectures are based on reduced instruction set computing (RISC), focusing on efficiency and low power consumption.
  • Usage: ARM is extensively used in mobile devices1 such as smartphones and tablets due to its power efficiency. It's also increasingly found in other areas such as servers2 (due to energy efficiency), embedded systems, IoT devices, and even desktops and laptops, with Apple's transition to its own ARM-based M1 and subsequent chips in the Mac lineup.

The terms AMD64, x86_64, and aarch64 refer to different CPU architectures, each with distinct characteristics and intended uses. Here's a breakdown of each:

AMD64 and x86_64

  1. Origin:

    • AMD64 (also known as x86-64) is an architecture developed by AMD. It was originally named "AMD64" because AMD was the first to introduce a 64-bit extension to the x86 architecture.
    • x86_64 is another name for the same architecture, used more generically to avoid emphasizing AMD over Intel, which also uses the architecture.
  2. Design:

    • This architecture is a 64-bit extension of the original 32-bit x86 architecture (also known as IA-32) that was developed by Intel. It supports 64-bit computing, which allows for more direct access to a greater amount of memory and enhanced performance for applications capable of utilizing 64-bit code.
  3. Compatibility:

    • AMD64/x86_64 processors are backward compatible with 32-bit x86 software. This compatibility has been key to the architecture's widespread adoption, as it allows users to continue using older applications.

aarch64

  1. Origin:

    • aarch64 is the 64-bit extension of the ARM architecture, often referred to as ARM64. ARM's architecture is fundamentally different from x86 and is developed by ARM Holdings.
  2. Design:

    • ARM architectures are designed for efficiency and low power consumption, making them ideal for mobile and embedded systems. The aarch64 architecture supports 64-bit processing, which enhances performance for high-demand applications and supports larger amounts of memory, beneficial in modern mobile devices and servers.
  3. Compatibility:

    • ARM processors are not natively compatible with x86/x86_64 software, requiring either recompilation of software or emulation to run software designed for x86/x86_64.
  • Instruction Set: AMD64 and x86_64 use a complex instruction set computing (CISC) design, which includes a wide range of complex instructions. aarch64 uses a reduced instruction set computing (RISC) design, which uses simpler, less complex instructions intended to offer greater efficiency and lower power consumption.
  • Performance vs. Power Efficiency: AMD64/x86_64 architectures typically focus more on performance and are used in high-power computing environments. In contrast, aarch64 architectures prioritize power efficiency, which is crucial for battery-powered devices.
  • Market Adoption: x86_64 is dominant in the PC and server market, whereas aarch64 has a stronghold in the mobile and emerging server and desktop markets, especially with the growth of IoT and edge computing.

arm64e

The term arm64e refers to an enhanced version of the arm64 architecture, specifically implemented by Apple to support new security and performance features on its platforms. Here’s a detailed look at what arm64e entails:

  1. Origin

    • Developer: arm64e was developed by Apple as an evolution of the standard ARM64 (also known as ARMv8-A) architecture.

    • Purpose: The primary motivation behind arm64e was to increase the security of software running on Apple devices, especially to protect against exploits that manipulate code execution flow.

    • Introduction: Apple introduced arm64e with the release of the A12 Bionic chipset, which first appeared in the iPhone XS, XS Max, and XR in 2018.

  2. Design

    • Pointer Authentication: The standout feature of arm64e is Pointer Authentication, which adds a cryptographic signature to pointers, verifying their integrity before use. This mechanism significantly reduces the risk of common security threats such as return-oriented programming (ROP) and jump-oriented programming (JOP) attacks.

    • Architecture Improvements: While maintaining a strong backward compatibility with ARMv8-A, arm64e incorporates changes at the instruction set level to support the generation and verification of pointer signatures.

    • Security Focus: The enhancements in arm64e are geared towards hardening Apple devices against exploits by making unauthorized code execution more challenging and thereby bolstering overall system security.

  3. Compatibility

    • Backward Compatibility: arm64e is designed to be backward compatible with the arm64 architecture. Applications compiled for arm64 can run on systems supporting arm64e without modifications, although they won't benefit from the new security features unless recompiled with arm64e support.

    • Development Environment: Developers aiming to utilize arm64e features need to use Apple's Xcode and compile their applications specifically for arm64e. This ensures that the new security enhancements are properly implemented in their applications.

    • Device Support: arm64e is supported on Apple devices with the A12 chipset and later. This includes not only iPhones but also iPads and potentially other future Apple devices as the company continues to deploy this architecture in its new hardware.

Footnotes

  1. Apple silicon: Comparison of A series processors

  2. Application ARM-based chips

@jinsanity07git jinsanity07git added the documentation Improvements or additions to documentation label May 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant