硬件了解很少,学习一下杨大师的这篇文章《ARM CPU架构,你搞不搞的懂?!》。

【引言】

最近有个需求:要求安装一个MySQL8.0在ARM架构上;CPU的ARM架构听说过,但没实际部署过;且这个ARMCPU架构又是一个什么东东,只是脑子有这么个名字,具体不是很了解。故今日集中学习下,有了此文。

大家都知道,随着linux开源操作系统的推广使用,很多企业级Linux都是部署在cpu架构为x86的服务器上,这是大家都知道的事;但如果有人问CPU的ARM架构,很多都说不清楚了,今天就来聊一聊 CPU的ARM架构。

此篇文章自己对x86和ARM cpu架构的了解是:

通常大家说的linux指的是x86 linux,ARM是不同于X86的CPU架构,对应的指令集不同,故软件编译环境不同,软件代码一般不能互用,一般需要进行兼容性移植。

x86是经典的CISC指令集,指令集复杂,功能多,串行执行,意味着执行效率低下,但性价比突出,被认为是民用终端的主流处理器内置指令集。Intel和AMD的家用处理器都是x86指令集,用的以x86为代表的CISC指令集。

要想了解透,就要先溯源CPU是个嘛?

CPU(Central Processing Unit)主要由运算器、控制器、寄存器三部分组成;

运算器起着运算作用,控制器负责发出CPU每条指令所需要的信息,寄存器保存运算或指令的一些临时文件/结果,以保证更高的速度。

CPU有着处理指令、执行操作、控制时间、处理数据四大作用。

指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU 就可以更高效地运行。

Intel主要有x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),

SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX等指令集。

AMD主要是x86,x86-64,3D- Now!指令集。

CPU指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。

现阶段主流体系结构讲,指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分。

中央处理器CPU也可分为CISC(Complex Instruction Set Computers,复杂指令集计算集)和RISC(Reduced Instruction Set Computers)两大主流CPU指令集类型。

CISC以Intel,AMD的x86 CPU为代表;RISC以ARM,IBM Power为代表。

要了解CPU ARM架构,又要先了解啥是复杂指令集(CISC)和精简指令集(RISC)?

和大家学习数据库,从share-everything/share-disk/share-nothing三种设计思路出发开始学习一样。要想了解CISC和RISC,首先了解一下两者的设计理念。

1. CISC设计理念

早期的CPU全部是CISC架构,设计理念是要用最少最精炼的机器语言指令来完成所需的计算任务。为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式。甚至某些指令可支持高级语言语句归类后的复杂操作,但硬件设计也越来越复杂,造价也越来越高。

为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外。还通过存于只读存贮器(ROM)中的微程序来实现其极强功能 ,处理在分析每一条指令之后执行一系列初级指令运算来完成所需的功能;此设计形式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构.一般CISC计算机所含的指令数目至少300条以上,有的甚至超过500条。

CISC架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。

2. RISC设计理念

采用CISC复杂指令集合的CPU有较强处理高级语言的能力,对提高计算机的性能有益。但也发现CISC指令系统太复杂不易实现,且还可能降低系统性能。长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器。同时,复杂的指令系统必然带来结构的复杂性。不但增加了设计的时间与成本还容易造成设计失误。实际计算中一个典型程序的运算过程所使用的80%指令,只占一个处理器指令系统的20%,事实上最频繁使用的指令是取、存和加这些最简单的指令。

顺着这个思路,精简指令的设想初衷也有了:即指令系统应当只包含那些使用频率很高的少量指令集,并提供一些必要的指令以支持操作系统和高级语言。

按照这个理念发展而成的计算机被称为精简指令集计算机

(Reduced Instruction Set Computer-RISC)结构,简称RISC。

简单来讲:

CISC通过操作内存、寄存器、运算器来完成复杂指令的,在实现时,是将复杂指令转换成了一个微程序,微程序在制造CPU时就已存储于微服务存储器。一个微程序包含若干条微指(令也称微码),执行复杂指令时,实际上是在执行一个微程序。

RISC的设计初衷针对CISC CPU复杂的弊端,选择一些可以在单个CPU周期完成的指令,以降低CPU的复杂度,将复杂性交给编译器,RISC架构要求软件来指定各个操作步骤。

RISC架构可降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。

这时大家很自然的得出一个直观结论:

CISC这种微程序的执行作为一个原子操作,是不可被打断的;

RISC指令之间是一些可以在单个CPU周期完成的指令,可以被打断,所以理论上RISC可更快响应中断。

理解了设计理念,再从软硬件角度对比CISC和RISC

1. 硬件角度看:

CISC处理的是不等长指令集,必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。

而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISC,RISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,故制造工艺简单且成本低廉。

2. 从软件角度看:

CISC由于发展早成熟,软件厂商代理多基于CISC体系结构的PC及其服务,像doc/Microsoft应用程序。

RISC后期发力、势单力薄。应用程序生态环境显得不如CISC丰富多样;而应用程序经过那么多年的人力和资源的投入,惰性较大,各大应用商在已有CISC类应用满足市场需求的前提,再让其投入大量的人力物力去研究运行在RISC上的应用程序,阻力可想而知。

好了,到了这里,大家可以稍微扩展性思维,预测下国内CPU的发力点:

国产CPU制作工艺被光刻机技术限制。为了降低CPU的复杂度,可能会向RISC架构重点发力;但RISC架构制作难度的降低,是以提升了编译器软件和应用生态程序的复杂性为代价,后果是开发成本的激增,上游应用供应商不愿意跟风投入。但考虑到目前国际紧张趋势,在民生国防领域,RISC架构的CPU研发具有重要意义。

对于企业服务器来说,应了那句老话:RISC买着便宜用着贵(代码兼容性、周期研发贵,CISC买着贵用着便宜(微程序做了预先集成优化)。

再来系统看下CISC和RISC的优缺点:

CISC体系的指令特征,

1. 使用微代码。指令集可以直接在微代码存储器(比主存储器的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程序。

2. 庞大的指令集。可以减少编程所需要的代码行数,减轻程序员的负担。高级语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到存储器以及存储器到寄存器的指令。

CISC体系的优缺点,

1. 优点:能够有效缩短新指令的微代码设计时间,允许设计师实现 CISC 体系机器的向上兼容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软件。另外微程序指令的格式与高级语言相匹配,因而编译器并不一定要重新编写。

2. 缺点:指令集以及芯片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。

RISC体系的指令特征,

1. 精简指令集:包含了简单、基本的指令,通过这些简单、基本的指令,就可以组合成复杂指令。

2. 同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。

3. 单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。

RISC体系的优缺点,

1. 优点:在使用相同的芯片技术和相同运行时钟下,RISC系统的运行速度将是CISC的2~4倍。由于RISC处理器的指令集是精简的,它的内存管理单元、浮点单元等都能设计在同一块芯片上。RISC处理器比相对应的CISC处理器设计更简单,所需要的时间将变得更短,并可以比CISC处理器应用更多先进的技术,开发更快的下一代处理器。

2. 缺点:多指令的操作使得程序开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC体系的处理器需要更快的存储器,这通常都集成于处理器内部,即L1 Cache(一级缓存)。

综合上面所述,若要再进一步比较CISC与RISC之差异,可以由以下几点来进行分析:

1. 指令的形成:CISC因指令复杂,故采用微指令码控制单元的设计,而RISC的指令90%是由硬件直接完成,只有10%的指令是由软件以组合的方式完成,因此指令执行时间上RISC较短,但RISC所须ROM空间相对的比较大,至于RAM使用大小应该与程序的应用比较有关系。

2. 寻址模式:CISC的需要较多的寻址模式,而RISC只有少数的寻址模式,因此CPU在计算存储器有效位址时,CISC占用的汇流排周期较多。

3. 指令的执行:CISC指令的格式长短不一,执行时的周期次数也不统一,而RISC结构刚好相反,故适合采用流水线处理架构的设计,进而可以达到平均一周期完成一指令的方向努力。

显然,在设计上RISC较CISC简单,同时因为CISC的执行步骤过多,闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言RISC较CISC占上风,但RISC因指令精简化后造成应用程式码变大,需要较大的存储器空间,且存在指令种类较多等缺点,很是限制RISC的推广使用。

文章开始说了,

CISC以Intel,AMD的x86 CPU为代表,

而RISC以ARM,IBM Power为代表。

接下来再看具体一些应用场景。

ARM架构CPU基于精简指令(RISC),特点有指令长度固定,执行效率高,低成本,定位于嵌入式平台,简化了硬件逻辑的设计,减少了晶体管,从而降低功耗,流水线等控制并不复杂,进一步降低了晶体管数量,主要是面对轻量级的、目标明确单一的程序,所以主要都是移动端使用。

以Intel,AMD为代表的x86 CPU基于复杂指令集CISC,硬件逻辑设计复杂,流水线指令集并行、超线程、虚拟化等,复杂度很高,晶体管数量庞大,主要定位计算密集场景,如多媒体编辑、科研计算场景等。

简单一句话:

ARM是为了低功耗,x86是为了高性能。

近期的热文:

《sqlplus执行错误的问题探究》

《如何查看JVM运行的堆内存情况》

《Linux下如何快速删除大量碎小的文件?》

《YNWA,同样是我们普通人的鞭策》

《海底的下面究竟有什么?》

《几种去重的SQL写法》

《打造国产技术产品的必要性》

《SQL查询总是先执行SELECT语句么?》

《Oracle删除字段的方式和风险,你都了解么?》

《登录缓慢的诡异问题》

《Linux下的^M困惑》

《Oracle相关提问的智慧技巧》

《很久以前的一篇对初学Oracle建议的文章》

《PLSQL Developer几个可能的隐患》

《从70万字SRE神作提炼出的7千字精华文章》

《从数据误删到全量恢复的惊险记录》

《OpenJDK和Oracle JDK有什么区别和联系?》

《公众号600篇文章分类和索引》

了解一下ARM CPU架构相关推荐

  1. 【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )

    文章目录 一.ARM 内存模型 二.ARM 架构堆的实现 三.ARM 架构栈的实现 一.ARM 内存模型 ARM 架构体系中 , CPU 直接访问内存 , 控制内存中的状态和数据 , 内存中映射外部设 ...

  2. 【arm cpu架构体系】【armV8】【armv7】【A系列的CPU】

    为了给大家介绍一个更直观的感受,请看下面这张图 如图所示,绿色的部分都是v7-A的架构,蓝色的是v8-A架构,基本上绿色都是可以支持到32和64位的,除了A32,只支持到32位.在右边的每个部分,比如 ...

  3. x86、x64、amd64和arm CPU 架构 MSVC的各种版本 Visual Studio的安装

    Visual Studio的安装 https://blog.csdn.net/Copperxcx/article/details/122540629 x86.x64和amd64 参考讲得很好的一篇文章 ...

  4. 【Android 逆向】ARM CPU 架构体系 ( ARM 处理器工作模式 | ARM 架构模型 )

    文章目录 一.ARM 处理器工作模式 二.ARM 架构模型 一.ARM 处理器工作模式 参考 [嵌入式开发]ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存 ...

  5. CPU架构有多少种?X86与ARM有哪些不同之处?

    CPU架构有多少种?X86与ARM有哪些不同之处?看完这篇你就懂了_ly930156123的博客-CSDN博客_cpu架构有几种一台服务器.一台电脑.一台手机最重要的电子零部件是什么?没错,就是CPU ...

  6. CPU架构有多少种?X86与ARM有哪些不同之处?看完这篇你就懂了

    一台服务器.一台电脑.一台手机最重要的电子零部件是什么?没错,就是CPU处理器.它主要负责数据计算.控制功能,是最核心的部分.不过你又知道有多少种CPU架构吗?主流的X86.ARM到底有什么区别? 下 ...

  7. Android cpu架构类型升级方案调研

    1.背景说明 当前APP上个版本APK安装包大小58.3M,因为业务原因集成某功能APK大小将会增加至109M左右,会影响用户的升级意愿和安装使用情况,故对APK架构支持进行调研,通过数据对比得出可行 ...

  8. CPU 架构 —— ARM 架构

    linux 系统查看 CPU 架构命令: $ arch armv7l $ uname -m armv7l# -m:--machine # 进一步查看处理器信息 $ cat /proc/cpuinfo ...

  9. CPU架构解析:ARM和x86大比拼

    信不信,随便逮住一个人问他知不知道CPU,我想他的答案一定会是肯定的,但是如果你再问他知道ARM和X86架构么?这两者的区别又是什么?绝大多数的人肯定是一脸懵逼.今天小编就带你深入了解CPU的这两大架 ...

最新文章

  1. c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
  2. [云炬创业管理笔记]第三章测试5
  3. linux 解析pdf下载工具,Linux高级系统级性能分析工具-perf.pdf
  4. JAVA入门级教学之(异常机制的原理到底是什么)
  5. Intel发6款全新9代i9/i7/i5 CPU:巅峰8核
  6. Linux源码安装包快速升级方法
  7. 圣经闪卡 - Holy Bible Flash Cards
  8. Android中 Rect类
  9. c语言编辑图形时钟软件,C++实现图形界面时钟表盘代码
  10. UE4.24版本VR项目打包后,未出现手柄控制器
  11. ArcGIS之创建企业级地理数据库(Oracle)
  12. python redis连接_Python连接Redis连接配置
  13. 豪能转债上市价格预测
  14. [Transformer]A Survey on Vision Transformer
  15. 一般3d模型代做多少钱_3D打印模型一般需要多少钱?
  16. DNSPod十问魏雪:云游戏的野心有多大?
  17. 2021-10-19 [可视化-经验]如何研读一篇可视化分析论文✈
  18. 物联网之场景联动策略
  19. 为什么要自己架个gtalk服务器
  20. transInit通过机构商户号和路由编号查找上游商户

热门文章

  1. 干货!abb阀门定位器可克服时滞防止泄漏
  2. Python黄金相关性市场探析——如何利用相关性寻找最佳建仓时机!
  3. Android 10.0 wifi的随机mac地址修改为固定不变
  4. shell中变量和字符串拼接方法
  5. 【软件测试学习】软件测试的过程
  6. 关于计算机1K=1024 的原因,计算机在什么情况下1k=1000
  7. 计算机应用对建筑设计的影响,计算机应用于建筑设计中影响.doc
  8. JS 中 location.href 的用法
  9. AI赋能传统行业:知其然并知其所以然 - 专访平安科技美国研究院院长韩玫
  10. 神仙级Python办公自动化教程(非常详细),从零基础入门到精通,轻松玩转Excel,从看这篇开始