系统架构、指令集、操作系统

橘子 发布于 2025-01-13 718 次阅读


最近总是在被这几个概念困扰。因此打算整理一下,以备查看,也方便其他文章引用。

系统架构与硬件平台

系统架构(System Architecture)指的是计算机硬件的整体设计和组织方式,包括处理器架构、存储层次结构、总线设计等。

硬件平台则是基于特定架构实现的物理硬件系统,例如处理器、主板等。

常见的系统架构有如下这些:

  • x86架构,由Intel和AMD主导,广泛用于桌面PC、笔记本电脑、服务器等。
  • ARM架构,追求低功耗和高效能,应用于智能手机、嵌入式设备、物联网设备等。
  • RISC-V架构,开放指令集架构,灵活可定制,逐渐受到学术界和工业界关注。
  • Power架构,IBM开发的高性能计算架构,常用于服务器和超级计算机。
  • MIPS架构,另一种RISC架构,历史上用于嵌入式系统和路由器。

其中最常见的还是x86架构和ARM架构。系统架构一般与硬件平台相关联。例如,x86架构由Intel和AMD两家公司生产的CPU主导;arm架构的芯片则有Apple M系列芯片(M1、M2)、高通骁龙、三星Exynos等;Power架构的硬件平台主要是 IBM Power Systems。

指令集架构

指令集架构(Instruction Set Architecture, ISA)是处理器对外提供的软件接口,定义了硬件如何理解和执行软件指令。它是硬件和软件之间的桥梁。

在编译和汇编课程上,会接触到汇编语言。汇编语言有点像一半人类可读、一半机器可读的东西,比较能体现出指令集。例如C++作为一种高级语言,在不同操作系统的都比较统一;但是在向机器语言翻译时,所用到的指令集不同,翻译的方式也就会不同。

主要的指令集架构有这些:

  • x86指令集,CISC架构,复杂指令集。
    • x64,又称x86_64,也称AMD64. 是64位的x86指令集。
  • ARM指令集,RISC架构,简化指令集。
    • 存在一些变种,例如AARCH。
    • AARCH32:ARM的32位指令集。
    • AARCH64:ARM的64位指令集(ARMv8及以上)
  • RISC-V指令集,开放源代码指令集,可自由扩展。
  • Power指令集,IBM开发,面向高性能计算。
  • MIPS指令集,简化指令集,设计理念类似RISC。

可以发现,指令集架构和系统架构是一一对应的。毕竟,需要有硬件支持才能运行对应的指令集;硬件又一般专为某种指令集而设计。

操作系统

操作系统(Operating System, OS)是管理硬件资源和提供用户接口的软件。不同的操作系统支持不同的硬件架构和指令集。

如下是一些常见的操作系统:

  • Windows,主要支持x86/x64架构,部分支持ARM架构。
  • Linux,基于Linux内核,支持x86、ARM、RISC-V、Power等多种架构。常见的发行版有:Ubuntu、Debian、Red Hat、Fedora。
  • macOS,支持x86架构(以前使用intel芯片的时代)和ARM架构(现在使用M1/M2芯片的时代)。
  • Android,主要支持ARM架构,仅有小部分支持x86架构。
  • iOS,支持ARM架构。

开发包选择

有的时候,有些开发包(例如交叉编译链)会提供给不同的操作系统和不同的架构。

比如,这是一个交叉编译链工具包提供的版本,针对不同的操作系统、架构提供了不同的工具。此时,不仅需要关注自己的操作系统,还需要注意自己操作系统使用何种芯片(使用何种指令集)。

开发平台名称/host类型具体含义
Windows (mingw-w64-i686)32位windows操作系统
Windows (mingw-w64-x86_64) 64位windows操作系统
x86_64 Linux使用x86架构的Linux系统
aarch64 Linux使用aarch64架构的Linux系统
macOS (x86_64) 使用x86芯片的Mac
macOS (Apple silicon)使用苹果芯片的Mac

此外,有时会遇到奇怪的选择:在amd64和arm64中选一个。其实,这个地方的amd64就是x86_64. 关于这点,还有一个小故事(引自这里):

  • 1978年6月8日,Intel发布了8086处理器,开启了x86架构的时代。8086是一款16位微处理器,它不仅是Intel最成功的处理器系列的开端,也标志着x86指令集的诞生。
  • 在这个过程中,AMD作为Intel的竞争对手,也开始生产兼容x86指令集的处理器。特别是在386和486时代,AMD作为Intel的第二源供应商,为x86架构的发展做出了贡献。
  • 进入90年代后,随着计算需求的增长,Intel和AMD都意识到32位架构的局限性,开始着手开发64位扩展。1999年,AMD率先发布了x86_64指令集,作为x86架构的64位扩展。随着x86_64的成功,AMD将其重命名为AMD64,以强调自己的贡献和品牌。虽然Intel后来也采用了x86_64标准(称为Intel 64),但AMD64这个名字已经深入人心。

所以说,amd64也可以指代x86_64.