读书专题:手把手教你设计CPU第一章【RISC-V处理器】

索引

    • 1、写在前面的话
    • 2、CPU的众生相
      • 01 指令集架构
      • 02 CISC和RISC


1、写在前面的话

最近拿到一本书,叫做手把手教你设计CPU(RISC-V处理器),看到这个RISC的关键字,突然有些激动,可能也是因为同时在学ARM的原因吧。为此,准备仔细阅读下这书,写篇博客记录奥,这里是第一章 一文读懂CPU之三生三世。


2、CPU的众生相


01 指令集架构

手里有这本书的朋友,看到这大标题可能反应差不多,可能这本书偏趣味性,不知道了,继续看下。

CPU:Central Processing Unit,全称中央处理器单元,简称处理器。

CPU和Core的区别,平时我们讲的CPU通常指的是一块完整的SoC(处理器核Core+内部外设),在没有系统学习嵌入式的时候,很少有人会听到这个概念,因为习惯的原因,很多人也会把CPU误认为就是处理器核,忽略了内部外设,这是很糟糕的想法。
总之,我们平时多遇到的也是SoC(System on Chip),记住就好了。

CPU的核心-指令集架构,书上给了一张知名CPU指令集架构的诞生表,里面有吸引我的是这几个,我记录下:
Intel 8086的CPU指令集架构-1978年
ARM的CPU指令集架构–1985年
MIPS的CPU指令集架构–1985年(单字长定点指令平均执行速度)
Alpha的CPU指令集架构–1992年(阿尔法)
AMD64的CPU指令集架构(EMT64)–2003年

指令:一组处理器进行操作的最小单元(比如:加减乘除、读写存储器等)。

指令集架构:有时也说是“架构”或“处理器架构”,这个东西课本上没有定义,个人认为可以理解为在指令集(指令集合)的基础上,进一步添加一些规则之类的构成的一个层。注意,这里出现了分层的概念,简简单单的先分了三个层:硬件层、指令集架构层和软件层。
不难发现,其实位于中间一层的指令集架构实际上是对一种相似硬件的描述,只要这个指令集架构是一样的(具体硬件层的实现方案微架构性能和成本会有不同),软件都无需做任何修改地能在同一款指令集架构的处理器上去运行。
这点特别重要,因为软件是很复杂的,如果让硬件去适应软件,那么带来的第一个问题就是,硬件层出不穷,设计不便。因此,这种设计是合理的,我们需要让软件去适应硬件,在给定指令集架构的帮助下,完成对各种顶层功能的实现。

指令集架构不仅仅是一组指令的集合,它还要定义任何软件程序员需要了解的硬件信息,包括:数据类型、存储模型、软件可见的处理器状态、指令集、系统模型和外部接口(课本上有图,看着挺详细的)。

其实,从这点就不难发现,汇编语言难学的主要原因在于,我们学的时候,需要和相应的CPU指令集架构进行一对一的学习,不同指令集架构设计的CPU,汇编语言是不一样的,需要记忆的东西比较多,这里我想到了两款架构:X86和ARM。

X86架构:泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构。最早的8086处理器于1978年由Intel推出,为16位微处理器。
ARM:一个32位元精简指令集中央处理器架构。
现在我在学习的基本上都是ARM架构的,以后又没有机会去碰X86的就不知道了,也许有吧,应该也有类似点。


02 CISC和RISC

CISC:复杂指令集(Complex Instruction Set Computer),不仅包含处理器常用的指令集,还包含了许多不常用的特殊指令,指令数目比较多,我记得好像有200多条。
RISC:精简指令集(Reduced Instruction Set Computer),只包含常有处理器常有的指令,对于不常用的操作,需要通过执行多条常有指令的方式来达到同样的效果。

读到这里,我开始有些想法了,这两个概念在听朱老师的视频时,讲的特别详细。首先,Intel是CISC,ARM是RISC的,RISC的诞生其实是迫不得已的,当时那个年代,基本上都是CISC的天下,很多事情,设计CPU的人已经实现了,我们只需要在这个基础上进行指令背诵和开发就好了,而RISC不一样,CPU只实现了一小部分,很多东西,其实需要程序员自己去实现,提高了灵活性。

当时的ARM被迫设计了RISC,却收获了意想不到的成绩,因为CISC随着发展,出现了很多问题,其中最为明显的就是功耗和面积:当今社会,电子产品如果不谈功耗,基本上就是一个废品,以前还行,现在人们日常的移动设备,耗电迅速的产品很快就会被市场淘汰,要不然低功耗算法设计的相关职位,也成为现在的热门。CISC由于指令越来越多,实现的功能越来越复杂,但是实际开发过程中,可能不会用到这么多指令,按书上说的,基本上只用到了20%,剩下的80%只能说是以备不时之需啊,可这些东西都是硬件电路实现的,如果一插上电源,CPU就会运转相关的电路,难免有无需损耗的电能流失,不经耗电快,发热也快,造成CPU老化迅速,并且设计硬件的时间成本和面积都是需要着重考虑的。


你可能感兴趣的:(读书专题)