【计算机】常见 CPU 指令集发展及其关系

CPU 与指令集

任何计算机都有一块 CPU,CPU 有其支持的指令集,根据指令集间的兼容性,一种 CPU 可能同时支持多种指令集。

指令集中记录了 CPU 的机器代码格式,由于很多编译性语言最终都是要编译成机器代码才能运行,所以编译时必须指明目标指令集,在 IDE 中也能看到对应选项。

使用不同指令集的平台间软件通常无法兼容,所以跨平台时需要重新打包程序,或者也有同时打包多份不同指令集的程序塞在一个软件中的方法,以便平台按需选取。

这也是为什么 Github 中很多支持跨平台的软件,其发布时都会提供好多种不同指令集后缀的版本,或者不写清指令集但体积巨大的版本。

x86 系列

x86

x86 架构由 Intel 公司发明,首次使用在其 1978 年推出的 Intel 8086 处理器中,且后来逐渐成为了个人电脑的标准架构。

最早使用该架构的系列处理器(如 Intel 8086、80186、80286 等)都是以数字表示,且都采用了 86 作为后缀,所以该架构也就称为 x86 架构,其中 x 是为了表示同系列有多款 CPU 使用该架构。

x86、i386、IA-32

最早的 x86 是 16 位的,但从 80386 开始被经改进成为了 32 位架构。

对于这升级后的一新架构,Intel 将其称为 IA-32(Intel Architecture 32bit);而在 Linux 平台则习惯将其称为 i386,因为这是从第三代 86 系列处理器(80386)开始的。

如今 16 位的 x86 已经淘汰,所以通常我们也会直接称呼 x86 来泛指其 32 位版本。

IA-64

在 1989 年,惠普认为现有的 RISC 架构存在性能瓶颈,于是在 1994 年与 Intel 开始合作设计一款全新的架构 IA-64。Intel 很看好这一新架构,投入了大量开发资源,并在 2001 年推出第一代基于 IA-64 的安腾处理器。

但该架构有一个致命缺陷,那就是和之前大火的 x86 架构不能兼容,且旧架构通过增强超标量的方法足以赶上 IA-64 的优势,所以该架构很快就退出市场了,2017 年之后 Intel 再也没发布过基于 IA-64 的新处理器。

x86_64、x64、AMD64、Intel 64

在 1976 年时,Intel 公司将 8080 架构(x86 的前身)的微指令授权给了 AMD 公司,导致 AMD 公司拥有在 x86 基础上继续开发的权力。

之后除开 Intel,AMD 公司也在进行 64 位架构的开发。其吸取了 IA-64 的失败,选择在 x86 的基础上继续开发,并于 1999 设计出了新的 AMD64 架构。

AMD64 架构可以说就是 x86 架构的 64 位版本,所以与之兼容,也为了给 Intel 留点面子,所以该架构又叫 x86_64 架构,简称 x64。

后来 Intel 公司也开始采用该架构,并将其直接将称为 Intel 64。

ARM 系列

ARM 架构是 ARM 公司推出的指令集,过去也被称为进阶精简指令集机器(Advanced RISC Machine),其设计简单且功耗低,所以广泛使用在嵌入式和移动通讯领域。

ARM 架构随着时代发展发布了多个版本,最早于 1985 年开发出了第一代 ARM 架构(ARMv1),次年又开发了第二代 ARM 架构(ARMv2) 并开始量产。

在早期 ARM 的指令集架构一直以“ARMv{版本号}”的形式命名。但为了顺应市场发展,从 ARMv6 开始,又会以“ARMv{版本号}-{型号}”的命名方式推出多个分支指令集架构,以应对不同的使用环境。而从 ARMv7 开始则完全采用后一种命名方式,所以说此时实际已不存在名为 ARMv7 的某一特定架构,ARMv7 是对第七代 ARM 架构的统称。

相应的,之后的处理器也改为了“Cortex-{型号}{版本号}”的命名方式,比如曾经手机主流的 Cortex-A7 处理器就是基于 ARMv7-A 指令集架构制作的。

虽然 ARM 架构的版本众多,但 ARM 架构具有版本兼容性,采用旧版本指令集构建的软件在搭载新版本指令集的处理器中依然可用,从而保障了它的发展生命力。

今天最多听到 ARM 架构的地方都是在 Android 开发上,Android 开发中通常用 ABI 来描述程序集所用框架,虽然 ABI 并不是专指指令集架构但也有包含的关系,所以考虑常用性这里就借用 ABI 介绍指令集好了。

armeabi、ARMv5、ARMv6

armeabi 是最早手机所用的 ABI,其对应 ARMv5 架构 ,因为兼容性的原因后续的 ARMv6 等架构处理器也可使用,不过现今该架构已被 Android NDK 弃用。

armeabi-v7a、ARMv7、ARMv7-A

armeabi-v7a 是 armeabi 架构的升级版,其中 v7a 就是指其对应架构为 ARMv7-A 。其一个显著的特点是增加了硬件浮点运算的功能,所以大幅提高了性能,是过去非常主流的手机架构。

不过 ARMv7-A 是 32 位指令集,在如今的 64 位时代已然过时,目前市面上只有少部分手机还在使用。

arm64-v8a、ARM64、ARMv8-A

arm64-v8a 对应 ARMv8-A 架构,其名称中的 64 宣布了又一个里程碑式的进步,从此刻开始 ARM 架构也步入了 64 位时代,并且从 2019 年 8 月 1 日起 Google Play 就开始强制要求所以软件都必须支持 64 位设备,即支持 arm64-v8a。

所以该架构是目前手机最主流的架构。

mips 系列

在查资料时发现的另一种指令集系列,很多跨平台软件的发布类型中除开 x86 和 ARM 就剩它了,但生活中并没见过,而且其和 armeabi 一样被 Android NDK 弃用了,显然应该是某种过时的处理器架构,所以此处不进行讨论。

参考资料

【计算机】常见CPU指令集发展及其关系的更多相关文章

  1. 常见的CPU指令集介绍

    本文摘自网络   一.X86 是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,属于CISC. 1.1.简介 X86指令集是美国Intel ...

  2. CPU指令集

    cpu作为一台电脑中的核心,它的作用是无法替代的.而cpu本身只是在块硅晶片上所集成的超大规模的集成电路,集成的晶体管数量可达到上亿个,是由非常先进复杂的制造工艺制造出来的,拥有相当高的科技含量. C ...

  3. 计算机组成原理 — CPU 中央处理器

    目录 文章目录 目录 前文列表 逻辑电路部件 组合逻辑电路 时序逻辑电路 阵列逻辑电路 中央处理器(CPU) 控制单元(控制器) 运算单元(运算器) 存储单元(寄存器组和片内缓存) CPU 的工作原理 ...

  4. 【基础知识】CPU指令集

    计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程.指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计 ...

  5. CPU 指令集(Instruction Set Architecture, ISA)

    本文摘自网络 概念 指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序,用来引导CPU进行加减运算和控制计算机操作系统的一系列指令集合.拥有这些指令集,CPU就可以更高效地运行.系统所下达的 ...

  6. atitit. 研发管理---如何根据自己的特挑选 产业、行业、职业、岗位与自己发展的关系

    atitit. 研发管理---如何根据自己的特挑选 产业.行业.职业.岗位与自己发展的关系 1. 产业及分类 1 2. 二.行业 2 3. 职业概念- 3 4. 职业划分 3 5. 职业兴趣分类 4 ...

  7. 编译TensorFlow CPU指令集优化版

    编译TensorFlow CPU指令集优化版 如题,CPU指令集优化版,说的是针对某种特定的CPU型号进行过优化的版本.通常官方给的版本是没有针对特定CPU进行过优化的,有网友称,优化过的版本相比优化 ...

  8. 【UEFI】---关于BIOS,EIST和PState&CState和CPU主频变化得关系

    Intel处理器都支持Turbo和EIST,且一般情况下,各家厂商在BIOS中都会设置EIST和PState的开关,那么这些开关与CPU的频率的关系是什么呢?今天对此做个总结: 按照国际惯例,本次梳理 ...

  9. 一张图理清计算机常见编码的关系。ASCII、Unicode都不是事儿

    编码按适用范围可以简单分为:(本人自定义) 美国编码(ASCII)ASCII为基础编码,来源于美国:其它编码都兼容ASCII编码: 欧盟编码(ISO8859-1.WINDOWS-1252)先是ISO- ...

  10. 专家谈国产CPU最新发展态势:需强化标准建设(很全面)

    一.国产CPU发展现状与成就 国内已开启多技术路线并行的CPU技术产业新格局.在国家科技重大专项和国家级集成电路产业投资资金的推动之下,我国CPU产品技术研发已进入多技术路线同步推进的高速发展阶段,并 ...

随机推荐

  1. 怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev

    本文引用怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev 在 vscode 设置项中配置 gopls 的 ui.navigation.importShortcut ...

  2. IOS热重载工具InjectionIII

    IOS热重载工具InjectionIII 支持 OC.Swift 以及 Swift 和 OC 混编项目的 UI 热重载工具,采取在模拟器(真机不支持)注入方式实现 UI 热重载,修改完 UI 直接 c ...

  3. Jetpack Compose 的原理性文章

    正在写一篇关于UI的思考,接触到 Android 的 Jetpack Compose: 从第一原则撰写 | 可理解的胡言乱语

  4. 【C#】根据分数求出相应的成绩等级

    设计窗体程序,使用文本框控件输入百分制成绩,实现将学生的百分制成绩转换为对应的等级成绩(优.良.中.及格.不及格). 要求:必须使用异常处理技术,优先使用switch-case的方式 点击查看代码 | ...

  5. 【Vue】Vue脚手架安装搭建

    ## Vue脚手架安装搭建 操作系统:Windows 11 专业工作站 记录时间:2022年2月18日 在安装之前,需要安装node.js(Node.js (nodejs.org)),否则无法使用np ...

  6. 【Linux】CentOS7 远程联机

    # CentOS7 远程联机 哔哩哔哩 萌狼蓝天 博客:https://mllt.cc 微信公众号:萌狼蓝天 检查与安装配置OpenSSH [CentOS7]检查系统是否安装OpenSSH yum - ...

  7. ARGOCD用户管理

    1.创建用户alice kubectl apply -f argocd-cm.yaml apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm ...

  8. linux shell移植,sh不支持数组及bash移植

    查看此时系统shell ls -al /bin/sh Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bou ...

  9. 【转载】 进行API开发选gRPC还是HTTP APIs

    https://www.cnblogs.com/yilezhu/p/10645804.html 开始之前先看一下gRPC与带有j'son的HTTP APIs对比表格 gRPC的优势 性能 gRPC消息 ...

  10. Qt/C++编写视频监控系统83-自定义悬浮条信息

    一.前言 一般视频控件上会给出个悬浮条,这个悬浮条用于显示分辨率或者一些用户期望看到的信息,一般常用的信息除了分辨率以外,还有帧率.封装格式.视频解码器名称.音频解码器名称.实时码率等,由于实际的场景 ...