当前位置: 首页 > news >正文

arm、AArch64、x86、amd64、x86_64 的区别

arm vs AArch64 vs amd64 vs x86_64 vs x86 的区别

当涉及到 CPU 的时候,有许多术语:AArch64、x86_64、amd64、arm 等等。了解它们是什么以及它们之间的区别。

当你查看数据表或软件下载页面时是否被 ARMAArch64x86_64i386 等术语混淆?

这些被称为 CPU 架构,以下的表将为你总结每个字符串所代表的意义:

CPU 架构描述
x86_64 /x86/amd6464 位 AMD/英特尔 CPU 的别称
AArch64 /arm64/ARMv8/ARMv964 位 ARM CPU 的别称
i38632 位 AMD/英特尔 CPU
AArch32 /arm/ARMv1ARMv732 位 ARM CPU 的别称
rv64gc /rv64g64 位 RISC-V CPU 的别称
ppc64le64 位 PowerPC CPU,小端字节序存储

从左到右的阅读,优先使用该左侧术语描述 CPU 体系结构,而不是使用其右侧术语的别称。

概述:CPU 架构

通常来说,我之前列出的术语是描述 CPU 架构的。但严格讲,它们被计算机工程师视为 CPU 的 ISA( Instruction Set Architecture,指令集架构 )。

CPU 的指令集架构定义了 CPU 如何解析二进制代码中的 1 和 0。

这些 CPU 的 ISA 有几个主要的类别:

  • x86(AMD/英特尔)
  • ARM
  • RISC-V
  • PowerPC(IBM 仍在使用)

当然,还有更多种类的 CPU ISA,比如 MIPS、SPARC、DEC Alpha 等等。但我列出的这些至今仍然被广泛使用(以某种形式)。

上述列出的 ISA 主要根据 内存总线的宽度 分为至少两个子集。内存总线的宽度指的是 CPU 和 RAM 一次能传输的位数。内存总线有很多种宽度,但最常见的是 32 位和 64 位。

💡 32 位的 CPU ISA 要么是已经过时的历史产物,为了支持旧的系统被保留下来,要么只用于微控制器中。可以安全地假设任何新硬件都是 64 位(尤其是面向消费者的硬件)。

x86(AMD/英特尔)

x86 CPU 的指令集架构主要源于英特尔,因为英特尔是最初搭配 8085 微处理器创建了它。8085 微处理器的内存总线宽度为 16 位。而后来,AMD 加入了这个领域,并且一直紧随英特尔的步伐,直到 AMD 创建出了自己的超集 64 位架构,超过了英特尔。

x86 架构的子集如下:

  • i386:如果你拥有的是 2007 年之前的 CPU,那么这可能就是你的 CPU 架构。它是现在使用的 AMD/英特尔的 x86 架构的 32 位“版本”。
  • x86_64/x86/amd64:这三个术语在不同的项目中可能会被交替使用。但它们都是指 x86 AMD/英特尔架构的 64 位“版本”。不过,x86_64 这个字符串比 x86amd64 使用得更广泛(也更受欢迎)。例如,FreeBSD 项目称 64 位的 x86 架构为 amd64,而 Linux 和 macOS 则称之为 x86_64

💡 由于 AMD 在创造 64 位 ISA 上超越了英特尔,所以一些项目(比如 FreeBSD)把 x86 的 64 位版本称为 amd64但更被广泛接受的术语还是 x86_64

对于 CPU ISA,“x86” 这个字符串是一种特殊的情况。你要知道,在从 32 位的 x86(i386)到 64 位的 x86(x86_64)的过渡过程中,CPU 制造商确保了 CPU 能够运行 32 位 64 位指令。所以,有时你可能会看到 x86 也被用来意指“这款产品只能运行在 64 位的计算机上,但如果该计算机能运行 32 位指令,那么你也可以在它上面运行 32 位的用户软件”。

这种 x86 的模糊性——也就是诸如能同时运行 32 位代码的 64 位处理器——其主要用于和存在于运行在 64 位处理器上的,但是允许用户运行 32 位软件的操作系统,Windows 就通过这种被称作“兼容模式”的特性运用了这种方式。

汇总一下,由 AMD 和 英特尔 设计的 CPU 有两种架构:32 位的(i386)和 64 位的(x86_84)。

其它的英特尔

x86_64 ISA 实际上有几个子集。这些子集都是 64 位,但它们新添加了诸如 SIMD(Single Instruction Multiple Data,单指令多数据)指令等功能。

  • x86_64-v1:这是大多数人都熟知的基础 x86_64 ISA。当人们谈论 x86_64 时,他们通常指的就是 x86_64-v1 ISA。
  • x86_64-v2:此版本新增了更多如 SSE3(Streaming SIMD Extensions 3,流式 SIMD 扩展版本 3)之类的指令扩展。
  • x86_64-v3:除了基础指令外,还新增了像 AVX(Advance Vector eXtensions,高级矢量扩展)和 AVX2 等指令。这些指令可以使用高达 256 位宽的 CPU 寄存器!可用于大规模并行处理计算任务。
  • x86_64-v4:这个版本在 x86_64-v3 ISA 的基础上,迭代了更多的 SIMD 指令扩展,比如 AVX256 和 AVX512。其中,AVX512 可以使用高达 512 位宽的 CPU 寄存器

ARM

ARM 不仅是一家为 CPU ISA 制定规范的公司,它也设计并授权给其他厂商使用其 CPU 内核,甚至允许其他公司使用 ARM CPU ISA 设计自己的 CPU 内核。(最后那句话听起来就像是个 SQL 查询似的!)

你可能因为如树莓派这类的 SBCs(Single Board Computer,单板计算机)听说过 ARM。但其实 ARM 的 CPU 还广泛应用于手机中。最近,苹果从使用 x86_64 处理器转向了在其笔记本和台式机产品中使用自家设计的 ARM 处理器。

就像任一种 CPU 架构一样,ARM 基于内存总线宽度也有两个子集。

官方认定的 32 位和 64 位 ARM 架构的名称分别是 AArch32AArch64。这里的 AArch 字符串代表 “Arm 架构Arm Architecture”。这些是 CPU 执行指令时可切换的模式

实际符合 ARM 的 CPU ISA 的指令规范被命名为 ARMvX,其中 X 是规范版本的代表数字。目前为止,已经有九个主要的规范版本。规范 ARMv1ARMv7 定义了适用于 32 位 CPU 的架构,而 ARMv8ARMv9 是适用于 64 位 ARM CPU 的规范。(更多信息在此)

💡 每个 ARM CPU 规范又有进一步的子规范。例如 ARMv8,我们有 ARMv8-R、ARMv8-A、ARMv8.1-A、ARMv8.2-A、ARMv8.3-A、ARMv8.4-A、ARMv8.5-A、ARMv8.6-A、ARMv8.7-A、ARMv8.8-A 和 ARMv8.9-A。 其中 -A 表示“应用核心”,-R 表示“实时核心”。

你可能会觉得困惑,为什么在 AArch64 正式被 ARM 认定为 64 位 ARM 架构后,有些人仍然称其为 arm64。原因主要有两点:

  1. arm64 这个名称在 ARM 决定采用 AArch64 之前就已经广为人知了。(ARM 的一些官方文档也将 64 位的 ARM 架构称为 arm64…… )
  2. Linus Torvalds 对 AArch64 这个名称表示不满。 因此,Linux 的代码库主要将 AArch64 称为 arm64。然而,当你在系统中运行 uname -m 时,输出仍然是 aarch64

因此,对于 32 位 ARM CPU,你应该寻找字符串 AArch32,但有时也可能是 armarmv7。同样地,对于 64 位 ARM CPU,你应该寻找字符串 AArch64,但有时也可能是 arm64 或 ARMv8ARMv9

RISC-V

RISC-V 是 CPU 指令集架构(ISA)的一个开源规范。但这并不意味着 CPU 自身是开源的!这有点像以太网的情况。以太网规范是开源的,但你需付费购买网线、路由器和交换器。同样,RISC-V CPU 也要花钱购买。

尽管如此,这并没有阻止人们创建并在开源许可下提供免费获取(设计上的获取,并非物理核心/SoC)的 RISC-V 核心。这是其中的一项尝试。

💡 总结一下:如果你在寻找运行于 RISC-V 消费级 CPU 上的软件,你应该寻找 “rv64gc” 这一字符串。这是许多 Linux 发行版所公认的。

像所有 CPU 架构一样,RISC-V 拥有 32 位和 64 位 CPU 架构。但由于 RISC-V 是非常新的描述 CPU ISA 的方式,大部分主流消费端或客户端的 CPU 核心一般都是 64 位的。大部分 32 位的设计都是微控制器,用于非常具体的用例。

它们的区别在于 CPU 的扩展。被称为 RISC-V CPU 的最低要求即实现“基本整数指令集Base Integer Instruction Set”(rv64i)。

下表列出了一些扩展及其描述:

扩展名称描述
rv64i64 位基本整数指令集(必须的
m乘法和除法指令
a原子指令
f单精度浮点指令
d双精度浮点指令
g别名;一组运行通用操作系统所需的扩展集(包括 imafd
c压缩指令

rv64i 这一字符串中,rv 表示 RISC-V,64 指的是 64 位 CPU 架构,而 i 指的是强制性的基本整数指令集扩展。 rv64i 之所以是一体的,因为即使 i 被认为是一种“扩展”,但它是必须的

约定俗成的,扩展名称按上述特定顺序排列。因此,rv64g 展开为 rv64imafd,而不是 rv64adfim

💡 还有其他一些像 Zicsr 和 Zifencei 这样的扩展,它们位于 dg 扩展之间,因此,严格说来,(在写这篇文章的时候)rv64g 实际上是 rv64imafdZicsrZifencei

PowerPC

PowerPC 曾是苹果、IBM 以及摩托罗拉早期合作时代的一种流行 CPU 架构。在苹果转向英特尔的 x86 架构之前,它一直被应用于苹果的全部消费品产品线。

最初,PowerPC 采取的是大端字节序的内存排序。后来随着 64 位架构的引入,增加了使用小端字节排序的选项。这么做的目的是为了与英特尔的内存排序保持兼容(以防止软件错误),因为英特尔自始至终都一直采用的是小端字节序。有关字节序的更多内容,你可以通过阅读 这篇 Mozilla 的文档 来了解更多。

由于字节序在此也起到了一定的作用,PowerPC 共有三种架构:

  • powerpc:表示 32 位 PowerPC 架构
  • ppc64 ~~   表示 大端字节序内存排序 的 64 位 PowerPC 架构
  • ppc64le:表示 小端字节序内存排序 的 64 位 PowerPC 架构

目前,ppc64le 是被广泛使用的架构

结论

市面上有各种各样的 CPU 架构。对于每一种架构,都有 32 位和 64 位的子集。在现有的 CPU 中,我们可以找到 x86、ARM、RISC-V 和 PowerPC 等架构。

其中,x86 是最广泛和易于获取的 CPU 架构,因为英特尔和 AMD 都采取了这种架构。此外,ARM 提供的产品几乎在手机和易于获取的单板计算机中被独占使用。

RISC-V 正在努力使硬件更广泛地被使用。而 PowerPC 主要用于服务器,至少当前如此。


注:校对了原译文中几处拗口的描述。

via:

  • arm vs aarch64 vs amd64 vs x86_64: What’s the Difference Pratham Patel 23 Sep 2023
    https://itsfoss.com/arm-aarch64-x86_64/

    作者:Pratham Patel 选题:lujun9972 译者:ChatGPT 校对:wxy
    本文由 LCTT 原创编译,Linux中国 荣誉推出


篇外:一些讨论

注:机翻,未校对。


讨论一: Why is 64 bits version called AMD64 and 32 bits version called i386?

为什么 64 位版本叫 AMD64,32 位版本叫 i386?

Asked 14 years, 3 months ago
Modified 2 years, 8 months ago
This question already has an answer here:
Ubuntu: AMD64 vs i386?

I have never understood this.
我从来不明白这一点。
This is what I know: You need a 64 bit OS if you want to handle more than 2 GB RAM. Else, a 32 bit OS is sufficient.
这就是我所知道的:如果您想处理超过 64 GB 的 RAM,则需要 2 位操作系统。否则,32 位操作系统就足够了。
So on Ubuntu’s homepage you can download either 64 bit or 32 bit versions. But the 64 bit version is called amd64 and the 32 bit verison is called i386.
因此,在 Ubuntu 的主页上,您可以下载 64 位或 32 位版本。但是 64 位版本称为 amd64,32 位版本称为 i386
So I have to have an AMD processor to run amd64 and Intel to run i386?
所以我必须有一个 AMD 处理器来运行 amd64 和 Intel 来运行 i386
If someone codes software (let’s say Apache), does he have to code one for 32 bits and one for 64 bits? Does some software only exist for 32 bit and not 64 and vice versa?
如果有人编写软件代码(比如说 Apache),他是否必须编写一个 32 位代码和一个 64 位代码?有些软件只存在于 32 位而不是 64 位,反之亦然吗?
edited Nov 1, 2021 at 9:17 Greenonline asked Apr 7, 2010 at 17:48
ajsie
Possible duplicate of Ubuntu: AMD64 vs i386? (as mentioned there) Also related (on Ask Ubuntu): Is the 64-Bit version of Ubuntu only compatible with AMD CPUs?, Difference between the i386 download and the amd64?, and What are the differences between 32-bit and 64-bit, and which should I choose?
Ubuntu的可能副本:AMD64与i386?(如上所述)还相关(在询问 Ubuntu 上):64 位版本的 Ubuntu 是否仅与 AMD CPU 兼容?、i386 下载和 amd64 之间的区别?,以及 32 位和 64 位之间有什么区别,我应该选择哪个?
– user105707 Commented Dec 8, 2017 at 13:36
[Add a comment](https://superuser.com/questions/128496/why-is-64-bits-version-called-amd64-and-32-bits-version-called-
The 64-bit version is typically called ‘amd64’ because AMD developed the 64-bit instruction extensions. (AMD extended the x86 architecture to 64 bits while Intel was working on Itanium, but Intel later adopted those same instructions.)
64 位版本通常称为“amd64”,因为 AMD 开发了 64 位指令扩展。(AMD 在 Intel 开发 Itanium 时将 x86 架构扩展到 64 位,但 Intel 后来采用了相同的指令。
The 32-bit version is called i386, because Intel originated the 32-bit instruction set used on these chips.
32 位版本称为 i386,因为英特尔发起了这些芯片上使用的 32 位指令集。
You can run the 64-bit version on virtually any 64-bit capable x86 compatible chip, and the 32-bit version on any modern x86-compatible chip.
您几乎可以在任何支持 64 位的 x86 兼容芯片上运行 64 位版本,并在任何现代 x86 兼容芯片上运行 32 位版本。
Depending on how you write your software, it may or may not need to be rewritten for 64 bits. (Generally, compiled software will need changes, but not all interpreted software – e.g., Python or Perl – will require changes.)
根据您编写软件的方式,可能需要也可能不需要重写 64 位。(通常,编译的软件需要更改,但并非所有解释型软件(例如Python或Perl)都需要更改。
answered Apr 7, 2010 at 17:55 Jon Lasser


via:

  • Why is 64 bits version called AMD64 and 32 bits version called i386?

    https://superuser.com/questions/128496/why-is-64-bits-version-called-amd64-and-32-bits-version-called-i386


讨论二: Why are 64-bit distros often called ‘amd64’?

为什么 64 位发行版通常被称为“amd64”?

Asked 11 years, 8 months ago
Modified 7 years, 7 months ago
I am downloading an ISO image of Lubuntu; they have two versions: 32 and 64.
我正在下载 Lubuntu 的 ISO 映像;它们有两个版本:32 和 64。
But why do they call the 64 version amd64 since they say that it works for Intel also?
但是,为什么他们称 64 版本为 amd64,因为他们说它也适用于英特尔?
edited Oct 31, 2012 at 11:55
Renan
asked Oct 31, 2012 at 11:41
Sigur
Have a look at en.wikipedia.org/wiki/X86-64 if you want the full story
如果您想了解完整的故事,请查看 en.wikipedia.org/wiki/X86-64
– Tobias Kienzler
Commented Oct 31, 2012 at 12:59
Because AMD was the first one to release 64-bit x86 (x86-64) CPUs.
因为 AMD 是第一个发布 64 位 x86 (x86-64) CPU 的公司。

the AMD64 architecture was positioned by AMD from the beginning as an evolutionary way to add 64-bit computing capabilities to the existing x86 architecture, as opposed to Intel’s approach of creating an entirely new 64-bit architecture with IA-64.
AMD 从一开始就将 AMD64 架构定位为一种在现有 x86 架构中添加 64 位计算能力的进化方式,而不是英特尔使用 IA-64 创建全新 64 位架构的方法。

The first AMD64-based processor, the Opteron, was released in April 2003.
第一款基于 AMD64 的处理器 Opteron 于 2003 年 4 月发布。

In fact, in the kernel the 64-bit support is called ‘x86_64’ to refer to the fact that both AMD and Intel (and others) implement those instructions.
事实上,在内核中,64位支持被称为“x86_64”,指的是AMD和英特尔(以及其他公司)都实现了这些指令。

edited Jun 11, 2020 at 12:04
answered Oct 31, 2012 at 11:53
Renan
Now it’s correct. This however raises the question why the packages are not just called x64 or x86-64 instead, in contrast of using a vendor name.
现在它是正确的。然而,这就提出了一个问题,为什么这些包不仅仅被称为 x64 或 x86-64,而是使用供应商名称。
– Marco
Commented Oct 31, 2012 at 12:00
@Marco: IIRC x86-64 was name introduced after the Intel released 64-bit processors and x64 was name introduced by Microsoft. Both things happened at the point when some distros already had support for AMD64. I remember the discussion if everything should be renamed to x86-64 (name x64 was not known at that point).
@Marco:IIRC x86-64 是英特尔发布 64 位处理器后引入的名称,x64 是 Microsoft 引入的名称。这两件事都发生在一些发行版已经支持 AMD64 的时候。我记得讨论是否应该将所有内容重命名为 x86-64(当时还不知道名称 x64)。
– Maja Piechotka
Commented Oct 31, 2012 at 16:56
Opterons were available before Intel had x86-64 CPUs available and Linux started calling it amd64 to differentiate it from IA-64. Later Intel licensed AMD’s 64-bit extensions to include in their own CPUs x86-64 CPUs. Rather than rename everything the name amd64 remained.
在英特尔推出 x86-64 CPU 之前,Opterons 就已经可用,Linux 开始将其称为 amd64 以将其与 IA-64 区分开来。后来,英特尔授权 AMD 的 64 位扩展在他们自己的 CPU 中包含 x86-64 CPU。amd64 这个名字没有重命名,而是保留了所有名称。
– bahamat
Commented Oct 31, 2012 at 20:21
Add a comment
AMD intially implemented x86-64, before Intel. For this reason, most distros (and other OSs such as OpenBSD) did a first release when it was still AMD only, or renaming to x86-64 wasn’t considered worth the effort.
AMD 在英特尔之前实施了 x86-64。出于这个原因,大多数发行版(以及其他操作系统,如 OpenBSD)在它仍然只是 AMD 的时候发布了第一个版本,或者重命名为 x86-64 被认为不值得付出努力。
I think one of the another contributing factors to this naming confusion was a conflict between Intel and AMD over naming. Intel had an identity crisis in it’s 64-bit naming. It cycled through the names EM64T, IA-32e, and finally the official Intel 64. AMD on the other hand always called it AMD64. x86-64 was a fairly obvious name to cover both. However, it wasn’t always like this. I remember when it was new and shiny people couldn’t figure out what to call it. I’ve seen these:
我认为导致这种命名混乱的另一个因素是英特尔和AMD之间在命名方面的冲突。英特尔在其 64 位命名中遇到了身份危机。它循环了 EM64T、IA-32e 的名称,最后是官方的 Intel 64。另一方面,AMD 一直称它为 AMD64。x86-64 是一个相当明显的名称,涵盖了两者。然而,情况并非总是如此。我记得当它是新的和闪亮的时,人们不知道该怎么称呼它。我看过这些:

  • x64 – ambiguous between Itanium and x86-64
  • IA64 – again, ambiguous with Itanium
  • amd64 – what you see now
  • EM64T – rare, but I’ve seen it before used to refer to both AMD and Intel
    x86-64 is the obvious best short name for the architecture
    Earlz answered Oct 31, 2012 at 15:30

via:

  • 64bit - Why are 64-bit distros often called ‘amd64’? - Unix & Linux Stack Exchange
    https://unix.stackexchange.com/questions/53415/why-are-64-bit-distros-often-called-amd64

讨论三: Why is x64 often named as amd64? Was x64 invented by AMD?

为什么 x64 通常被命名为 amd64?x64 是 AMD 发明的吗?

Phillip Remaker 菲利普・雷梅克

Why is AMD64 the first 64-bit x86 processor?

为什么 AMD64 是第一个 64 位 x86 处理器?

In a fit of misguided hubris, Intel had intended to push their users from x86 32-bit to their new! shiny! next generation! 64-bit EPIC IA_64 architecture on the Itanium processor that was fundamentally incompatible with existing x86 code. While they had planned tools to facilitate the transition, the Itanium was plagued with performance issues, delays, price premiums, and insufficient backward compatibility tooling to attract the bulk of users.
在被误导的狂妄自大中,英特尔打算将他们的用户从 x86 32 位推向他们的新!闪亮!下一代!Itanium 处理器上的 64 位 EPIC IA_64 架构从根本上与现有 x86 代码不兼容。虽然他们已经计划了促进过渡的工具,但 Itanium 受到性能问题、延迟、价格溢价和向后兼容性工具不足的困扰,无法吸引大量用户。

Meanwhile, Moore’s Law soldiered along as memory ballooned beyond the 32-bit 4GB limit and AMD took it upon themselves to build 64-bit extensions to x86 in their Opteron server line. This was a big hit since it had perfect backward compatibility to x86 without any intermediate steps or layers, and allowed applications that needed 64 bit to compile in the new extensions.
与此同时,随着内存膨胀到超过 32 位 4GB 限制,摩尔定律也随之而来,AMD 在其 Opteron 服务器系列中为 x86 构建了 64 位扩展。这是一个很大的打击,因为它与 x86 具有完美的向后兼容性,没有任何中间步骤或层,并允许需要 64 位的应用程序在新的扩展中编译。

Moving to a new greenfield system without complete backward compatibility on day 1 is always a bad idea. This mistake even has a term of art dedicated to describe it: Second System Syndrome. OS/2 is another classic example.
在第 1 天就迁移到一个没有完全向后兼容性的新绿地系统总是一个坏主意。这个错误甚至有一个专门用来描述它的艺术术语:第二系统综合症。OS/2 是另一个典型的例子。

So AMD did what Intel refused to do. As Intel lost market share, they eventually woke up to the reality and adapted AMD’s way, which involved licensing some of AMD’s intellectual property. If anyone knows the history of the rivalry between Intel and AMD, this was a profoundly embarrassing position for Intel to find themselves in.
因此,AMD 做了英特尔拒绝做的事情。随着英特尔失去市场份额,他们最终意识到了现实,并采用了 AMD 的方式,其中包括许可 AMD 的一些知识产权。如果有人知道英特尔和 AMD 之间的竞争历史,那么对于英特尔来说,这是一个非常尴尬的境地。

Heikki Kultala 海基・库尔塔拉

Why is 32-bit called x86 and not x32?

为什么 32 位被称为 x86 而不是 x32?

32-bit is NOT called x86.
32 位不称为 x86。

There are tens of 32-bit architectures such as MIPS, ARM, PowerPC, SPARC which are not called x86.
有数十种 32 位架构,例如 MIPS、ARM、PowerPC、SPARC,它们不称为 x86。

x86 is a term meaning any instruction set which derived from the instruction set of Intel 8086 processor. It’s successors were named 80186, 80286, 80386, 80486, and were all compatible with the original 8086, capable of executing code made for it. Later Intel also released 8086-compatible processors named Pentium , Celeron, Core and Xeon but the name x86 had already stabilized to mean all processors based on the instruction set family.
x86 是一个术语,表示从英特尔 8086 处理器的指令集派生的任何指令集。它的继任者被命名为 80186、80286、80386、80486,并且都与原来的 8086 兼容,能够执行为其编写的代码。后来英特尔还发布了 8086 兼容处理器,名为 Pentium、Celeron、Core 和 Xeon,但 x86 这个名字已经稳定下来,表示所有基于指令集系列的处理器。

Of these, 8086, 80186 and 80286 were 16-bit processors. 80386 was a 32-bit processor, with a new 32-bit operating mode. However, it still retained the original 16-bit mode and also added a third mode, “virtual 86” mode which allowed running 16-bit programs under 32-bit operating system.
其中,8086、80186 和 80286 是 16 位处理器。80386 是一个 32 位处理器,具有新的 32 位操作模式。但是,它仍然保留了原来的 16 位模式,并添加了第三种模式,即 “虚拟 86” 模式,允许在 32 位操作系统下运行 16 位程序。

Later, 64-bit extension to x86, x86–64 was developed and implemented in AMD K8 and also later intels processors. Also these 64-bit processors based on the x86–64 architecture are called x86 processors
后来,在 AMD K8 和后来的英特尔处理器中开发并实现了对 x86、x86-64 的 64 位扩展。此外,这些基于 x86–64 体系结构的 64 位处理器也称为 x86 处理器

Why are you probably asking this, and the answer
你为什么会问这个问题,答案是什么

You have probably been seeing some “x86” and ”x64″ names of some Windows packages.
您可能已经看到一些 Windows 软件包的 “x86” 和 “x64” 名称。

Modern Windowses are based on Windows NT. Windows NT has never had any support for 16-bit x86 processors, it could initially run on 32-bit x86 (386,486, Pentium etc), and MIPS, PowerPC and Alpha processors. The MIPS, PowerPC and 386 were ALL 32-bit architectures, while Alpha was a 64-bit architecture.
Windows NT 从未支持过 16 位 x86 处理器,它最初可以在 32 位 x86(386,486、Pentium 等)以及 MIPS、PowerPC 和 Alpha 处理器上运行。MIPS、PowerPC 和 386 都是 32 位架构,而 Alpha 是 64 位架构。

To differentiate between windows compiled for these different instructions sets, some short and precise name had to be used for the architectures. These names are also be used on many scripts, build systems etc so they cannot be changed after they are selected without breaking huge amount of things. “x86” perfectly identified the 32-bit x86 version of windows NT. Anything that contained number 32 would not have made any sense as there were three different 32-bit architectures supported by Windows NT
为了区分为这些不同的指令集编译的窗口,必须为体系结构使用一些简短而精确的名称。这些名称也用于许多脚本、构建系统等,因此在选择它们后无法更改它们而不会破坏大量内容。“x86” 完美地标识了 Windows NT 的 32 位 x86 版本。 任何包含数字 32 的内容都没有任何意义,因为 Windows NT 支持三种不同的 32 位体系结构

Later also support for itanium (IA64) was added and support for MIPS, PowerPC and MIPS was dropped.
后来还添加了对 itanium(IA64) 的支持,并放弃了对 MIPS、PowerPC 和 MIPS 的支持。

So, the correct question is: Why is the 64-bit x86 called x64?
所以,正确的问题是:为什么 64 位 x86 被称为 x64?

Over 10 years later, when the 64-bit extension to x86 instruction set was released, and Microsoft started porting later NT-derived windows to it, some official technical name had to be selected for the version compiled for this architecture. The specification of the 64-bit extension to x86 came originally from AMD, so some called it “amd64” whereas “intel64” had meant Itanium. But Microsoft did not want to include name of one company to the name they chose for the architecture, and also the name “x86–64” which is later used had not stabilized yet as the common name for the architecture, and also the dash character on “X86–64” name might problematic for some places where the architecture name appears and had to be parsed by some code. So they chose the name “x64”, as 64-bit version of x86.
10 多年后,当 x86 指令集的 64 位扩展发布时,Microsoft 开始将后来的 NT 派生窗口移植到它,必须为为该体系结构编译的版本选择一些官方技术名称。x86 的 64 位扩展规范最初来自 AMD,因此有人称其为 “amd64”,而 “intel64” 则是指 Itanium。但是 Microsoft 不想在他们为架构选择的名称中包含一家公司的名称,而且后来使用的名称 “x86-64” 作为架构的通用名称尚未稳定下来,而且 “X86-64” 名称上的破折号字符对于某些出现架构名称的地方可能会有问题,并且必须通过一些代码进行解析。因此,他们选择了 “x64” 这个名字,作为 x86 的 64 位版本。

Even later, support for the Itanium architecture was dropped and support for 32- and 64-bit ARM architectures were added to Windows. The 64-bit ARMv8 is typically called either A64 or Aarch64, Im not sure which one is the official technical name for it in Windows.
甚至后来,对 Itanium 体系结构的支持也被放弃了,对 32 位和 64 位 ARM 体系结构的支持被添加到 Windows 中。64 位 ARMv8 通常被称为 A64 或 Aarch64,我不确定哪一个是它在 Windows 中的官方技术名称。

So now, Windows has support for four architectures: 386 (“x86”), x86–64 (“x64”), 32-bit ARMv7 , and 64-bit ARMv8.
因此,现在,Windows 支持四种体系结构:386 (“x86”)、x86–64 (“x64”)、32 位 ARMv7 和 64 位 ARMv8。

So, “x64” currently only means one of these two 64-bit architectures currently supported by Windows.
因此,“x64” 目前仅表示 Windows 当前支持的这两种 64 位体系结构之一。


via:

  • Why is x64 often named as amd64? Was x64 invented by AMD? - Quora
    https://www.quora.com/Why-is-x64-often-named-as-amd64-Was-x64-invented-by-AMD

几篇博客

  • x86-64、amd64、arm、aarch64 都是些什么?-CSDN博客

    https://blog.csdn.net/qq_24433609/article/details/125991550

  • X86和X86_64和AMD64的由来_为什么叫x86-CSDN博客

    https://blog.csdn.net/wf19930209/article/details/79536506

  • 【CPU】关于x86、x86_64/x64、amd64和arm64/aarch64 - 简书

    https://www.jianshu.com/p/2753c45af9bf

  • 下载软件时的amd64、x86、x86-64是什么,该怎么选?-CSDN博客

    https://blog.csdn.net/weixin_44878336/article/details/124955553

相关文章:

arm、AArch64、x86、amd64、x86_64 的区别

arm vs AArch64 vs amd64 vs x86_64 vs x86 的区别 当涉及到 CPU 的时候,有许多术语:AArch64、x86_64、amd64、arm 等等。了解它们是什么以及它们之间的区别。 当你查看数据表或软件下载页面时是否被 ARM、AArch64、x86_64、i386 等术语混淆?…...

【SpringBoot】 jasypt配置文件密码加解密

目前我们对yml配置文件中的密码都是明文显示,显然这不安全,有的程序员离职了以后可能会做一些非法骚操作,所以我们最好要做一个加密,只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。 我们可以使用jasypt…...

复杂网络的任意子节点的网络最短距离

复杂网络的任意子节点的网络最短距离 题目要求介绍 本文算法测试用的数据集为空手道俱乐部,其中空手道俱乐部的数据集可通过这个链接进行下载•http://vlado.fmf.uni-lj.si/pub/networks/data/Ucinet/UciData.htm#zachary 摘要 本文旨在解决复杂网络中任意子节点…...

(Qt) 文件读写基础

文章目录 🗂️前言📄ref📄访问标记🗃️enum 标记 🗂️Code📄demo📄分点讲解🗃️继承体系🗃️打开/关闭🗃️写🗃️读 🗂️END&#x1f…...

全产业布局对穿戴甲品牌连锁店的意义

对于美甲行业来说,穿戴甲虽然不是什么新生事物,但也就是近两年才流行开来。面对井喷的市场需求,相应的从业者,不管是品牌连锁店,还是做批发、外贸,美甲周边、亦或是OEM的,大家都忙得不亦乐乎&am…...

git的一些使用技巧(git fetch 和 git pull的区别,git merge 和 git rebase的区别)

最近闲来无聊,虽然会使用git操作,但是 git fetch 和 git pull 的区别,git merge 和 git rebase的区别只是一知半解,稍微研究一下; git fetch 和 git pull 的区别 git fetch git fetch 是将远程仓库中的改动拉到本地…...

展厅中控系统有哪些优势呢

格芬科技的展厅中控系统具有多方面的优势,主要体现在以下几个方面: 一、高度集成与灵活控制 全终端网络可编程:格芬科技的展厅中控系统采用全终端网络可编程技术,能够实现对展厅内各种设备的集中控制和管理,包括电脑…...

FPGA开发在verilog中关于阻塞和非阻塞赋值的区别

一、概念 阻塞赋值:阻塞赋值的赋值号用“”表示,对应的是串行执行。 对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。阻塞赋值的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句…...

动态特征转换的艺术:在Mojo模型中实现自定义变换的策略

动态特征转换的艺术:在Mojo模型中实现自定义变换的策略 在机器学习中,特征转换是数据预处理的关键步骤,它直接影响模型的性能和结果的准确性。Mojo模型,作为一种高效的模型部署形式,允许在不同环境中运行模型并进行预…...

如何让Python爬虫在遇到异常时继续运行

概述 在数据收集和数据挖掘中,爬虫技术是一项关键技能。然而,爬虫在运行过程中不可避免地会遇到各种异常情况,如网络超时、目标网站变化、数据格式不一致等。如果不加以处理,这些异常可能会导致爬虫程序中断,影响数据…...

手把手带你搭建Snort入侵检测系统

在当今数字化社会,网络安全问题日益突出。为了有效防范网络攻击,部署入侵检测系统(IDS)是必要的防护措施。Snort作为一款功能强大的开源IDS工具,被广泛应用于各种网络环境中。本文将手把手教您如何从零开始实现Snort入…...

小程序内嵌uniapp页面跳转回小程序指定页面方式

使用微信小程序提供的Api:wx.miniProgram.navigateTo 在小程序中嵌套uniapp的H5页面,并使用wx.miniProgram.navigateTo进行页面跳转,需要确保满足以下条件: 你的小程序必须是通过uniapp构建的,并且支持小程序嵌套。 你…...

基于 Three.js 的 3D 模型加载优化

作者:来自 vivo 互联网前端团队- Su Ning 作为一个3D的项目,从用户打开页面到最终模型的渲染需要经过多个流程,加载的时间也会比普通的H5项目要更长一些,从而造成大量的用户流失。为了提升首屏加载的转化率,需要尽可能…...

Jlink下载与适配keil ccs theia教程 用jlink代替ti自己的下载仿真器

用jlink代替ti自己的下载仿真器,然后你去买立创的m0g3507才19.9包赚160 安装 J-Link 软件包 J-Link 软件包 v7.88i 或更高版本支持 MSPM0。 从 Segger 网站下载安装程序 按照安装程序说明操作 安装程序将自动请求更新 IAR 或 Keil(如果已安装&#x…...

C# 进制之间的转换(二进制,八进制,十进制,十六进制)

常用的方法是:Convert.ToString(byte value, int toBase), 并且有多个重载方法, value的类型可以为short,int 等,但必须是整数且不能为负数, 一般默认为十进制 toBase: 返回值的基数,必须是 2、…...

Linux 基础开发工具 : Vim编辑器

Vim 是 Linux 和其他类 Unix 系统上广泛使用的文本编辑器之一。它基于更早的 vi 编辑器,但添加了许多增强功能和扩展。Vim 是“Vi IMproved”的缩写,意为“改进的 Vi”,我们常使用Vim编辑器编写c/c代码。 ps:该篇介绍均为最基础介…...

Delphi 11.2 配置Android SDK 环境

打开 Delphi 11 点击 Tools–Options… 然后点击 Deployment–SDK Manager–Add… 这里如果配置64位就选 Android 64-bit,如果配置32位就选 Android 32-bit 点击 Select an SDK version–Add New… 有警告图标的就是有问题的项,需要手动更新一下&#xf…...

Spring Boot 学习(10)——固基(Idea 配置 git 访问 gitee)

几转眼就过了两个月,其实也没有闲着,学也学了,只是繁杂事多,学的不如以前多,也没有做过笔记了。 以前做开发因条件受限,没有什么 git ,也没有 gitee。现在出来混要跟上形势才行,学习…...

11 个接口性能优化技巧(上)【送源码】

接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。 该问题说简单也简单,说复杂也复杂。 有时候,只需加个索引就能解决问题。 有时候,需要做代码重构。 有时候&…...

AIoTedge 智能边缘物联网平台

AIoTedge智能边缘物联网平台是一个创新的边云协同架构,它为智能设备和系统提供了强大的数据处理和智能决策能力。这个平台的核心优势在于其边云协同架构设计,它优化了数据处理速度,提高了系统的可靠性和灵活性,适用于多种场景&…...

深入理解CSS基础【代码审计实战指南】

文章目录 为什么需要cssCSS语法CSS的组成css注释: 快速入门示例:常用样式字体颜色和边框颜色介绍颜色示例:边框边框的宽度与高度 字体样式背景样式文本居中 字体颜色和边框颜色介绍颜色示例:边框边框的宽度与高度 字体样式背景样式…...

html改写vue日志

本人最近学了vue&#xff0c;想着练手的方法就是改写之前在公司开发的小系统前端&#xff0c;将前端的AJAXJSThymeleaf改为axiosvue。 改写html 将<html>中的<head>和<body>结构移除&#xff0c;将css部分移入<style>&#xff0c; 重新定义了全局的&…...

Transformer-Bert---散装知识点---mlm,nsp

本文记录的是笔者在了解了transformer结构后嗑bert中记录的一些散装知识点&#xff0c;有时间就会整理收录&#xff0c;希望最后能把transformer一个系列都完整的更新进去。 1.自监督学习 bert与原始的transformer不同&#xff0c;bert是使用大量无标签的数据进行预训…...

基于术语词典干预的机器翻译挑战赛笔记 Task3 #Datawhale AI 夏令营

书接上回&#xff0c;上回在这捏&#xff1a; 基于术语词典干预的机器翻译挑战赛笔记Task2 #Datawhale AI 夏令营-CSDN博客文章浏览阅读223次&#xff0c;点赞10次&#xff0c;收藏5次。基于术语词典干预的机器翻译挑战赛笔记Task2https://blog.csdn.net/qq_23311271/article/…...

定制QCustomPlot 带有ListView的QCustomPlot 全网唯一份

定制QCustomPlot 带有ListView的QCustomPlot 文章目录 定制QCustomPlot 带有ListView的QCustomPlot摘要需求描述实现关键字: Qt、 QCustomPlot、 魔改、 定制、 控件 摘要 先上效果,是你想要的,再看下面的分解,顺便点赞搜藏一下;不是直接右上角。 QCustomPlot是一款…...

Fast Planner规划算法(一)—— Fast Planner前端

本系列文章用于回顾学习记录Fast-Planner规划算法的相关内容&#xff0c;【本系列博客写于2023年9月&#xff0c;共包含四篇文章&#xff0c;现在进行补发第一篇&#xff0c;其余几篇文章将在近期补发】 一、Fast Planner前端 Fast Planner的轨迹规划部分一共分为三个模块&…...

问题记录-SpringBoot 2.7.2 整合 Swagger 报错

详细报错如下 报错背景&#xff0c;我将springboot从2.3.3升级到了2.7.2&#xff0c;报了下面的错误&#xff1a; org.springframework.context.ApplicationContextException: Failed to start bean documentationPluginsBootstrapper; nested exception is java.lang.NullPo…...

【视觉SLAM】 十四讲ch5习题

1.*寻找一个相机&#xff08;你手机或笔记本的摄像头即可&#xff09;&#xff0c;标定它的内参。你可能会用到标定板&#xff0c;或者自己打印一张标定用的棋盘格。 参考我之前写过的这篇博客&#xff1a;【OpenCV】 相机标定 calibrateCamera Code来源是《学习OpenCV3》18.…...

Webpack基础学习-Day01

Webpack基础学习-Day01 1.1 webpack 是什么 webpack 是一种前端资源构建工具&#xff0c;一个静态模块打包器(module bundler)。 在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/…)都会作为模块处理。 它将根据模块的依赖关系进行静态分析&#xff0c;打包生成…...

如何防止热插拔烧坏单片机

大家都知道一般USB接口属于热插拔&#xff0c;实际任意带电进行连接的操作都可以属于热插拔。我们前面讲过芯片烧坏的原理&#xff0c;那么热插拔就是导致芯片烧坏的一个主要原因之一。 在电子产品的整个装配过程、以及产品使用过程经常会面临接口热插拔或者类似热插拔的过程。…...

JQuery+HTML+JavaScript:实现地图位置选取和地址模糊查询

本文详细讲解了如何使用 JQueryHTMLJavaScript 实现移动端页面中的地图位置选取功能。本文逐步展示了如何构建基本的地图页面&#xff0c;如何通过点击地图获取经纬度和地理信息&#xff0c;以及如何实现模糊查询地址并在地图上标注。最后&#xff0c;提供了完整的代码示例&…...

ArcGIS Pro SDK (九)几何 13 多部件

ArcGIS Pro SDK &#xff08;九&#xff09;几何 13 多部件 文章目录 ArcGIS Pro SDK &#xff08;九&#xff09;几何 13 多部件1 获取多部分要素的各个部分2 获取多边形的最外层环 环境&#xff1a;Visual Studio 2022 .NET6 ArcGIS Pro SDK 3.0 1 获取多部分要素的各个部分…...

【Node】npm i --legacy-peer-deps,解决依赖冲突问题

文章目录 &#x1f356; 前言&#x1f3b6; 一、问题描述✨二、代码展示&#x1f3c0;三、运行结果&#x1f3c6;四、知识点提示 &#x1f356; 前言 npm i --legacy-peer-deps&#xff0c;解决依赖冲突问题 &#x1f3b6; 一、问题描述 node执行安装指令时出现报错&#xff…...

h5点击电话号跳转手机拨号

需要使用到h5的 <a>标签 我们首先在<head>标签中添加代码 <meta name"format-detection" content"telephoneyes"/>然后再想要的位置添加代码 <a href"tel:10086"> 点击拨打&#xff1a;10086 </a> 这样功能就实现…...

从数据湖到湖仓一体:统一数据架构演进之路

文章目录 一、前言二、什么是湖仓一体&#xff1f;起源概述 三、为什么要构建湖仓一体&#xff1f;1. 成本角度2. 技术角度 四、湖仓一体实践过程阶段一&#xff1a;摸索阶段(仓、湖并行建设)阶段二&#xff1a;发展阶段方式一、湖上建仓(湖在下、仓在上)方式二&#xff1a;仓外…...

Electron 渲染进程直接调用主进程的API库@electron/remote引用讲解

背景 remote是个老库&#xff0c;早期Electron版本中有个remote对象&#xff0c;这个对象可以横跨所有进程&#xff0c;随意通信&#xff0c;后来官方认为不安全&#xff0c;被干掉了&#xff0c;之后有人利用Electron的IPC通信&#xff0c;底层通过Promise的await能力&#x…...

在python中使用正则表达式

正则表达式是什么&#xff1f;就是要寻找的数据的规律&#xff0c;使用正则表达式的步骤有三 第一&#xff0c;寻找规律&#xff0c;第二使用正则符号表示规律&#xff0c;第三&#xff0c;提取信息 看下面的代码 import re wenzhang (小草偷偷地从土里钻出来&#xff0c;嫩…...

华清数据结构day4 24-7-19

链表的相关操作 linklist.h #ifndef LINKLIST_H #define LINKLIST_H #include <myhead.h> typedef int datatype; typedef struct Node {union{int len;datatype data;};struct Node *next; } Node, *NodePtr;NodePtr list_create(); NodePtr apply_node(datatype e); …...

【深度学习图像】拼接图的切分

用户常常将多张图拼成一张图。 如果将这张图拆为多个子图&#xff0c;下面是一种opencv的办法&#xff0c;后面要训练一个模型来识别边缘更为准确。 import osimport cv2 import numpy as npdef detect_lines(image_path):# 读取图片image cv2.imread(image_path)if image i…...

Covalent(CXT)运营商网络规模扩大 42%,以满足激增的需求

Covalent Network&#xff08;CXT&#xff09;是领先的人工智能模块化数据基础设施&#xff0c;网络集成了超过 230 条链并积累了数千名客户&#xff0c;目前 Covalent Network&#xff08;CXT&#xff09;网络迎来了五位新运营商的加入&#xff0c;包括 Graphyte Labs、PierTw…...

Java 集合框架:HashMap 的介绍、使用、原理与源码解析

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 020 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…...

单周期CPU(三)译码模块(minisys)(verilog)(vivado)

timescale 1ns / 1ps //module Idecode32 (input reset,input clock,output [31:0] read_data_1, // 输出的第一操作数output [31:0] read_data_2, // 输出的第二操作数input [31:0] Instruction, // 取指单元来的指令input [31:0] …...

理想化相机模型的相机内参

文章目录 理想化相机模型的相机内参计算1. 相机内参定义2. 根据视角和图像分辨率计算相机内参2.1 计算焦距 fx 和 fy2.2 计算主点 cx 和 cy3. 示例计算3.1 计算 fx3.2 假设 fy = fx(因为没有垂直视场角的信息)3.3 计算主点4. 相机内参矩阵理想化相机模型的相机内参计算 在理…...

【数据脱敏】⭐️SpringBoot 整合 Jackson 实现隐私数据加密

目录 &#x1f378;前言 &#x1f37b;一、Jackson 序列化库 &#x1f37a;二、方案实践 2.1 环境准备 2.2 依赖引入 2.3 代码编写 &#x1f49e;️三、接口测试 &#x1f379;四、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;最近也是很忙啊&#xff0c;上次的文章…...

骑砍2霸主MOD开发(18)-多人联机模式开发环境搭建

一.多人联机模式网络拓扑图 二.专用服务器搭建(DedicatedServer) <1.Token生成(用于LobbyServer的校验): 进入多人联机大厅,ALT~打开RGL控制台,输入customserver.gettoken Token文件路径:C:\Users\taohu\Documents\Mount and Blade II Bannerlord\Tokens <2.启动专用服务…...

【HZHY-AI300G智能盒试用连载体验】在华为IoTDA平台上建立设备

目录 华为IoTDA平台 注册IoTDA实例 创建产品 添加设备 本文首发于&#xff1a;【HZHY-AI300G智能盒试用连载体验】 智能工业互联网网关 - 北京合众恒跃科技有限公司 - 电子技术论坛 - 广受欢迎的专业电子论坛! 在上一篇博文中介绍了如何在HZHY-AI300G智能盒创建南向设备&a…...

【LLM】-05-提示工程-部署Langchain-Chat

目录 1、软硬件要求 1.1、软件要求 1.2、硬件要求 1.3、个人配置参考 2、创建cuda环境 3、下载源码及模型 4、配置文件修改 5、初始化知识库 5.1、训练自己的知识库 6、启动 7、API接口调用 7.1、使用openai 参考官方wiki&#xff0c;本文以Ubuntu20.04_x64&#xf…...

【漏洞复现】Next.js框架存在SSRF漏洞(CVE-2024-34351)

0x01 产品简介 ZEIT Next.js是ZEIT公司的一款基于Vue.js、Node.js、Webpack和Babel.js的开源Web应用框架。 0x02 漏洞概述 ZEIT Next.js 13.4版本至14.1.1之前版本存在代码问题漏洞&#xff0c;该漏洞源于存在服务器端请求伪造 (SSRF) 漏洞 0x03 搜索引擎 body"/_nex…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 小区小朋友统计(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…...

Vuex看这一篇就够了

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...