查看: 956|回复: 0
收起左侧

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

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-8-24 11:50:24 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 皋陶 于 2020-8-27 14:18 编辑

    本文目录


      • 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老化迅速,并且设计硬件的时间成本和面积都是需要着重考虑的。


    本篇完,感谢关注:RISC-V单片机中文网





    上一篇:risc-v 支持spike和qemu虚拟器的一些例程的编译和运行
    下一篇:RISC-V 开发工具链的使用
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-11-6 07:55 , Processed in 0.592417 second(s), 45 queries .

    快速回复 返回顶部 返回列表