【计算机】常见 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. SQL SERVER日常运维巡检系列——数据库备份

    前言 做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期.结果进行登记,同时可能需要出一份巡检报告. 本系列旨在解决一些常见的困扰: 不知道巡检哪些东西 不知道怎么样便捷体检 机器太多体 ...

  2. 禁用SAP Hana错误密码锁定用户功能

    背景 公司项目适配多种数据库其中包含SAP Hana,由于有同事的数据库连接工具保存了某个在用的数据库的旧密码,导致时不时会被锁用户.通过查询官方文档已解决,这里统一记录一下. 禁用密码锁定方法 以下 ...

  3. dotnet core微服务框架Jimu ~部署和调用演示

    首先运行 consul 下载 consul 以开发模式运行 consul agent -dev 2. 调试 用 Visual Studio 2022 IDE 打开项目: 右击解决方案-选择" ...

  4. Google Chrome谷歌浏览器离线/绿色版本安装与彻底卸载

    一.离线安装 1.下载官方最新安装包安装 直接下载链接 Windows 32 位最新稳定版: https://dl.google.com/tag/s/installdataindex/update2/ ...

  5. 腾讯技术岗位笔试&面试题(五)

    说在前面 本篇文章是腾讯技术面试题目汇总第五篇. 后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案和分析. 欢迎大家点赞关注转发. 1.define.const.typ ...

  6. 该怎么解决no route to host

    出现No route to host 的时候,有如下几种可能: 1.对方的域名确实不通 2.本机自己开了防火墙 3.本机的etc/hosts 里面没有配置本机的机器名和ip (可能性最大) 其中第三点 ...

  7. Qt/C++音视频开发52-采集本地屏幕桌面的终极设计

    一.前言 最开始设计的时候,只考虑了一个屏幕的情况,这种当然是最理想的情况,实际上双屏或者多屏的用户也不在少数,比如我这两个屏幕,屏幕1是1080P,屏幕2是2K分辨率,打印两个屏幕的区域是 QRec ...

  8. vue总是报错:Trailing spaces not allowed

    翻译: Trailing spaces not allowed:不允许尾随空格 1-报错: 2-解决: 你的某些行的空格多了,删掉就行了 以我的截图为例  代码12行出错   选中12行(点击前面的1 ...

  9. 在 ASP.NET Core WebAPI如何实现版本控制?

    在 ASP.NET Core WebAPI 中实现版本控制(Versioning)是一种常见的做法,用于管理 API 的演进和兼容性.通过版本控制,我们可以在不破坏现有客户端的情况下引入新功能或修改现 ...

  10. 高并发编程-ReentrantReadWriteLock深入解析

    要点解说ReentrantLock在并发情况下只允许单个线程执行受保护的代码,而在大部分应用中都是读多写少,所以,如果使用ReentrantLock实现这种对共享数据的并发访问控制,将严重影响整体的性 ...