首页 > 编程笔记 > Linux笔记 阅读:166

CPU架构简介(x86、ARM和RISC-V)

计算机架构或 CPU 系列,这两个术语我们可以互换使用。Linux 可以在大量不同的 CPU 架构上运行,这可以说是它如此受欢迎的原因之一。

除了通用代码和驱动程序之外,Linux 内核还包含特定于架构的代码。这种分离允许它移植 Linux,并使其可以快速地在新硬件上使用。

有许多方法可以确定 Linux 运行的是哪个 CPU。让我们依次来看几个。

一种方法是使用一种名为 dmidecode 的专用工具与 BIOS 交互。那么你可以尝试以下代码(输出被缩短):
$ lscpu
Architecture:        x86_64 ①
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
Address sizes:       40 bits physical, 48 bits virtual
CPU(s):             4 ②
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           1
NUMA node(s):        1
Vendor ID:          GenuineIntel
CPU family:          6
Model:               60
Model name:          Intel Core Processor (Haswell, no TSX, IBRS) ③
Stepping:            1
CPU MHz:             2592.094

在前面的命令中,我们看到 CPU 架构报告为 x86_64,模型报告为“Intel Core Processor(Haswell)”。

收集类似架构信息的另一种方法是使用 cat /proc/ cpuinfo,或者,如果你只对架构感兴趣,则只需调用 uname -m。

现在我们已经掌握了在 Linux 上查询架构信息的方法,让我们看看如何解码它。

CPU x86架构

x86 是最初由 Intel 开发的指令集家族,后来授权给 Advanced Micro Devices(AMD)。在内核中,x64 指的是英特尔 64 位处理器,x86 代表英特尔 32 位处理器。此外,amd64 指的是 AMD 64 位处理器。

今天,x86 CPU 家族主要用于台式计算机和笔记本计算机,但它也广泛用于服务器。具体来说,x86 构成了公有云的基础。它是一种功能强大且广泛使用的架构,但并不是非常节能。部分原因是它严重依赖无序执行,最近它受到了关于 Meltdown 等安全问题的大量关注。

有关更多细节,例如 Linux/x86 引导协议或 Intel 和 AMD 特定的背景,请参阅 x86 特定的内核文档。

CPU ARM架构

ARM 拥有 30 多年的历史,是精简指令集计算(RISC)架构的家族。RISC 通常由许多通用 CPU 寄存器以及一组执行速度更快的指令组成。

因为 Acorn(ARM 的前身公司)的设计师从一开始就专注于最小化功耗,所以你可以在 iPhone 等许多便携式设备上找到基于 ARM 的芯片。它们也出现在大多数基于 Android 的手机和物联网中的嵌入式系统中,比如树莓派。

考虑到它们比 x86 芯片更快、更便宜、产生的热量更少,在数据中心中越来越多地发现基于 ARM 的 CPU,比如 AWS Graviton。

虽然 ARM 比 x86 更简单,但也不能避免漏洞,比如 Spectre。有关更多详细信息,请参阅 ARM 特定的内核文档。

CPU RISC-V架构

RISC-V 是一种开放的 RISC 标准,最初由加州大学伯克利分校开发。

截至 2021 年,已经有许多实现,从阿里巴巴集团和英伟达到 SiFive 等初创企业。虽然令人兴奋,但这是一个相对较新的、还没有被广泛使用的 CPU 家族。

如果想深入研究它,一个好的开始是 Shae Erisson 的文章“Linux on RISC-V”。更多详细信息,请参见 RISC-V 内核文档。

相关文章