参考资料:
ARM 和 x86 有什么区别?


0. 基础知识

指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分。相应的,微处理随着微指令的复杂度也可分为 CISC 及 RISC 这两类。

CISC是一种为了便于编程和提高存储器访问效率的芯片设计体系。在20世纪90年代中期之前,大多数的微处理器都采用CISC体系,包括Intel 的 80x86 和 Motorola 的 68K 系列等。即通常所说的 X86 架构就是属于 CISC 体系的。

RISC是为了提高处理器运行速度而设计的芯片设计体系。它的关键技术在于流水线操作(Pipelining):在一个时钟周期里完成多条指令。而超流水线以及超标量技术已普遍在芯片设计中使用。RISC体系多用于非 x86 阵营高性能微处理器CPU,像HOLTEK MCU系列等。

ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。而ARM体系结构目前被公认为是业界领先的32位嵌入式 RISC 微处理器结构,所有 ARM 处理器共享这一体系结构。

想详细了解指令集知识可参考此篇博文:CPU指令集科普:CISC指令集和RISC指令集

1. X86指令集

X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,后来的电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器以及使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。

除了具备上述CISC的诸多特性外,X86指令集有以下几个突出的缺点:

  • 通用寄存器组——对CPU内核结构的影响。X86指令集只有8个通用寄存器,所以,CISC的CPU执行是大多数时间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存器窗口和寄存器堆等技术使寄存器资源得到充分的利用。

  • 解码——对CPU的外核的影响。解码器(Decode Unit),这是x86 CPU才有的东西。其作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。Athlon也好,PIII也好,老式的CISC的X86指令集严重制约了他们的性能表现。

  • 寻址范围小——约束了用户需要。即使AMD研发出X86-64架构时,虽然也解决了传统X86固有的一些缺点,比如寻址范围的扩大,但这种改善并不能直接带来性能上的提升。

2. ARM指令集

相比而言,以RISC为架构体系的ARM指令集的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多。ARM处理器都是所谓的精简指令集处理机(RISC)。其所有指令都是利用一些简单的指令组成的,简单的指令意味着相应硬件线路可以尽量做到最佳化,而提高执行速率,相对的使得一个指令所需的时间减到最短。而因为指令集的精简,许多工作都必须组合简单的指令来完成,而针对较复杂组合的工作便需要由编译器(compiler) 来执行,而 CISC 体系的X86指令集因为硬体所提供的指令集较多,所以许多工作都能够以一个或是数个指令来代替,编译器的工作因而减少许多。

除了具备上述RISC的诸多特性之外,可以总结ARM指令集架构的其它一些特点如下:

  • 体积小,低功耗,低成本,高性能;
  • 支持Thumb(16 位)/ARM ( 32 位)双指令集,能很好的兼容 8 位 /16 位器件;
  • 大量使用寄存器,指令执行速度更快;
  • 大多数数据操作都在寄存器中完成;
  • 寻址方式灵活简单,执行效率高;
  • 指令长度固定;
  • 流水线处理方式;
  • load-store结构。

ARM的一些非RISC思想的指令架构:

  • 允许一些特定指令的执行周期数字可变,以降低功耗,减小面积和代码尺寸;
  • 增加了桶形移位器来扩展某些指令的功能;
  • 使用了16位的Thumb指令集来提高代码密度;
  • 使用条件执行指令来提高代码密度和性能;
  • 使用增强指令来实现数字信号处理的功能。

3. 总结

因此,大量的复杂指令、可变的指令长度、多种的寻址方式这些CISC的特点,也是CISC的缺点,因为这些都大大增加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早已不及在解码上浪费的时间。

除了个人PC市场还在用X86指令集外,服务器以及更大的系统都早已不用CISC了。x86仍然存在的理由就是为了兼容大量的x86平台上的软件。同时,它的体系结构组成的实现不太困难。

而RISC体系的ARM指令最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行。优点是不言而喻的,因此,ARM处理器才成为是当前最流行的处理器系列,是几种主流的嵌入式处理体系结构之一。

ARM指令集和X86指令集对比相关推荐

  1. IDA Pro ARM指令集和Thumb指令集的切换

    在动态调试android的ndk程序的时候,发现很多程序都会反汇编错误,原来是ARM反汇编的模式没搞对.因为在动态调试的时候,ida Pro并没有去解析elf模块中的一些信息,造成了模块信息丢失,有时 ...

  2. ISA——x86指令、ARM指令、、

    ISA(instruction set architecture)指令集维基定义https://en.wikipedia.org/wiki/Instruction_set_architecture 无 ...

  3. thumb指令和arm指令

    参考https://www.embedded.com/introduction-to-arm-thumb/ 一.为什么一个芯片需要thumb和arm两套指令集 许多复杂的功能在复杂指令集(CISC)处 ...

  4. arm 指令 学习载录

    ARM处理器汇编 ARM寻址方式: 1. 立即寻址,操作数在指令中给出. ADDR0,R0,#1;    R0ßR0+1 ANDR8,R7,#&FF; R8ßR7[7:0]; ADDR0,R0 ...

  5. x86指令集和arm指令集部分对比

    本文主题:本文主要对比了x86 ISA 和 arm ISA的部分区别. 目录 一.x86 ISA 1.指令组成 二.指令各部分解析 1.Instruction Prefixes(可选部分) 2.Opc ...

  6. ARM架构和X86架构的对比

    GOOGLE的Android系统和苹果的IPAD.IPHONE推出后,ARM架构的电脑系统(特别是在终端方面应用)受到用户的广泛支持和追捧,ARM+Android成为IT.通信领域最热门的话题,众多芯 ...

  7. arm服务器测评_某ARM服务器与X86服务器简单性能对比

    某ARM服务器与X86服务器简单性能对比 发布时间:2019-01-07 11:22, 浏览次数:816 , 标签: ARM 某ARM服务器与X86服务器简单性能对比 目录 一.       概述.. ...

  8. ARM体系架构—ARMv7-A指令集:内存操作指令

    ARM体系架构-ARMv7-A指令集 一.ARMv7-A指令集 一.ARMv7-A内存操作指令 二.单寄存器寻址内存操作指令 三.多寄存器寻址内存操作指令 四.SWP,SWPB 一.ARMv7-A指令 ...

  9. ARM体系架构—ARMv7-A指令集:协处理器指令

    ARM体系架构-ARMv7-A指令集 一.ARMv7-A指令集 二.ARMv7-A协处理器 二.ARMv7-A协处理器指令 三.读懂Linux Kernel协处理器指令 一.ARMv7-A指令集 AR ...

  10. 某ARM服务器与X86服务器简单性能对比

    某ARM服务器与X86服务器简单性能对比 目录 一.       概述... 2 二.       服务器基本硬件资料:... 2 三.       CPU 测试... 3 四.       内存测试 ...

最新文章

  1. 预告:2009年下半年软考试题及答案51CTO将实时发布
  2. 支持wince 系统的USB wifi 模组推荐
  3. C# 执行查询语句,返回DataSet
  4. 【中文】Joomla1.7扩展介绍之eXtplorer(文件管理器)
  5. POJ3666序列最小差值
  6. python才能做爬虫,No,C#也可以!
  7. 解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题
  8. JAVA中用于处理字符串的 三兄弟
  9. 大学计算机实验在林学的应用,大学计算机实验6实验报告.pdf
  10. 你真的把数据库事务搞懂了吗,有图有真相,图文并茂!
  11. 深圳大学计算机考研教材,广东-深圳大学计算机考研院校初试科目及参考书汇总...
  12. unity与3DMax的单位问题
  13. Windows使用cwRsync实现服务器文件同步到Linux服务器
  14. SuperMap 基本概念
  15. LeetCode1619删除某些元素后的数组均值(java)
  16. 【微信公众号】7、SpringBoot整合WxJava新增临时、永久素材
  17. 超频技术之内存“时序”重要参数设置解说
  18. 余额宝暴富记:为“草根”量身定做
  19. 皮尔森相关性系数的计算python代码(四)(热力图版)
  20. discuz 服务器维护,求助:重启论坛服务器后出现的问题

热门文章

  1. firework.js
  2. Android开发指南-窗口小部件(App Widgets)
  3. TM2013自定义消息记录保存目录
  4. 计算机历史人物-随笔
  5. 百度网盘、迅雷下载.torrent种子文件
  6. 单场淘汰制场次计算方法_怎样用单循环制进行的比赛计算场数
  7. Windows 环境安装 OS X Monaco 字体
  8. 记录一次httpClient下载文件的坑
  9. ubuntu常用软件
  10. 2022新版起点云码支付 带云端支持云端授权域名代理