【计算机】常见 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. 如何解决Git合并冲突?

    讲个故事先: 一个晴朗的日子,Alex 把远程版本库的修改拉到他的本地版本库. 他修改了名为 abc.txt 的文件,将其暂存(staged),提交(committed),最后推送(pushed)回远 ...

  2. Centos使用图形化界面配置网络

    1. 查看当前ip地址 # ip addr 2. 图形化界面配置网卡 # nmtui 界面提示,左右上下配置,OK即可.

  3. IOS多线程之NSOperation(2)

    IOS多线程之NSOperation(2) 最大并发数 open var maxConcurrentOperationCount: Int 并发数就是同时执行的任务数.比如,同时开3个线程执行3个任务 ...

  4. IOS打开对应后缀文件

    IOS打开对应后缀文件 通过ShareExtension打开 点击文件共享后出现的上方列表,如下图 在 info.plist 中添加 Document types <key>CFBundl ...

  5. Qt/C++音视频开发77-获取本地有哪些摄像头名称/ffmpeg命令日志方式

    一.前言 上一篇文章讲使用ffmpeg函数接口去获取本地摄像头信息,这种方式只能从ffmpeg5版本开始才具备,那ffmpeg3/4只能干瞪眼?那肯定不行的,必须要想办法打通这个功能,查阅信息发现可以 ...

  6. Qt 5.15.6 发布

    一.前言 我们今天为商业许可证持有者发布了 Qt 5.15.6 LTS.作为补丁版本,Qt 5.15.6 没有添加任何新功能,但提供了错误修复和其他改进. 您可以使用维护工具在现有的在线安装中添加 Q ...

  7. Spring Data JPA中使用Example进行动态查询

    Spring Data JPA中使用Example进行动态查询主要涉及:实体对象.ExampleMatcher和Example等三种类类型.基于实例的动态查询所包含的三要素如下:1.实体对象:在ORM ...

  8. 《Hough变换及其在信息处理中的应用》电子书下载

    <Hough变换及其在信息处理中的应用>电子书下载:百度云盘,  提取码:9zyi

  9. 网络编程入门如此简单(四):一文搞懂localhost和127.0.0.1

    本文由萤火架构分享,原题"localhost和127.0.0.1的区别是什么?",原文链接"juejin.cn/post/7321049446443417638" ...

  10. 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]

    为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期. [-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别 [链接] http ...