最近总是在被这几个概念困扰。因此打算整理一下,以备查看,也方便其他文章引用。
系统架构与硬件平台
系统架构(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.
Comments NOTHING