系列文章目录

上一节:从零开始的RISCV架构CPU设计(1)-CPU开源资料说明


文章目录

  • 系列文章目录
  • 前言
  • 一、什么是CISC
  • 二、什么是RISC
  • 三、CISC与RISC
    • 3.1 指令集实现架构
    • 3.2 指令长度
    • 3.3 访存与寻址
    • 3.4 指令周期
    • 3.5 编译器
    • 本节总结
  • 四、RISC-V架构指令集
  • 五、RISC-V的大道至简
  • 总结

前言

  从指令集架构的角度来看,现在流行的两种指令集架构为复杂指令集(Complex Instruction Set Computer)即CISC以及精简指令集(Reduced Instruction Set Computer,)即RISC。
  在CPU发展早期,CISC作为主流,凭借其灵活、指令集易拓展等优点,占据了CPU领域的半边江山,但随着其不断发展,指令集不断壮大,CISC的缺点也越来越多。针对其缺点,在20世纪80年代,无病一身轻的CPU界新星RISC架构便诞生了。


一、什么是CISC

  CISC(Complex Instruction Set Computer)指令集是由Intel公司推出的,Intel 8086处理器为最典型的代表;
  CISC的指令系统十分庞大,一般CISC架构CPU包含的指令可达300条以上,其中除了处理器常用的指令外,还包含了许多的不常用指令,一方面这使得CPU在进行相关的软件设计时更加简单灵活,功能也可更加强大,比如我们如今所熟悉的Windows系统就是在以CISC架构的CPU上运行的;但另一方面来看,实际上在CPU运行程序时,仅使用了指令集中的20%,其余80%的指令集虽已设计,但却很少用到。
  一方面,这会导致硬件利用效率不高,计算机的高性能往往通过增加硬件复杂度,压榨硬件性能所得到的,如今设计了这么多的指令,但真正常用的指令仅20%,这些很少用到的指令,增加了CPU设计的难度和开发时间,也大大增加了硬件设计的面积。
  另一方面,这也对开发者造成困扰。经过几十年的发展,CISC架构的CPU文档篇幅可以多大几千页,难以想象这么多的文档打印出来可以垒到一个桌子这么高。


二、什么是RISC

  RISC(Reduced Instruction Set Computer)架构是由Berkeley大学的David Patterson教授提出的。
  RISC架构指令集处处体现着大道至简的思想,在指令集上采用了等长指令集的设计,且仅保留了常用指令。这使得有关RISC的指令集文档在篇幅上大大减少,相较于CISC的1000多页指令集文档,RISC仅100多页;其次,在摒弃了冗长的指令后,RISC在芯片的面积上也大大降低,第一款搭载了RISC架构指令集的CPU RISC-I仅由44420个晶体管组成,而同年代的CISC设计消耗的晶体管平均在100000个左右。
  除此之外,RISC还具有一个最大的优势即开源,其相当于电脑操作系统界的Linux、手机操作系统界的Android,这一巨大优势必然能使得RISC蓬勃发展。
  但RISC是无法取代CISC的,就目前来说,RISC的发展还是不如CISC,其面临无数的挑战,如市场等,目前RISC主打的市场领域为微处理器(MCU)。


三、CISC与RISC

3.1 指令集实现架构

  · CISC
  CISC在实现指令的过程中依靠存于只读存贮器(ROM)中的微程序实现,其核心的部件为微程序控制器。一条指令会由多条微程序来实现。
· 微指令表(部分)

·微程序流程
  · RISC
  RISC采用了硬布线逻辑,其将程序控制部件专门做成由固定时序信号控制的逻辑电路,所以不存在CISC中类似的微指令控制器部件。

3.2 指令长度

  · CISC
  CISC的指令长度不等长,如:
  IN R0,SW-DATA的机器码是001xxxxx;
  ADD R0,[n]的机器码长为010xxxxx_n;

  · RISC
  RISC指令的长度往往是相同的;各指令间指令码格式也大同小异;

3.3 访存与寻址

  · CISC
  具有的访存指令,访存方式较多,搭配较多;
  寻址方式也较多,有寄存器寻址、立即寻址、直接寻址、间接寻址、变址寻址、基址寻址、基址+变址寻址;
  · RISC
  访存指令仅有Load/Store(加载/存储)指令;

3.4 指令周期

  · CISC
  不同指令执行需要的时钟周期相差很大,指令的执行往往需要多个时钟周期;
  · RISC
  大部分指令的执行所需时钟周期相同,在采用流水线技术的前提下,大部分指令可以在一个时钟周期内完成;

3.5 编译器

  · CISC
  编译器优化实现高效代码困难;
  · RISC
  优化编译实现容易;

本节总结

  相对规整的指令形式使得RISC指令集更容易通过硬件实现,且能够在使用更少资源的情况下,达到较高的性能;
  但这种实现方式基于硬布线逻辑,这就意味着指令集架构一旦实现就不再好修改了,因为若要增删改查指令,需要对硬件重新实现;而CISC的微指令控制器相对灵活,只需要烧写存储微指令表的ROM即可实现指令的修改和拓展;


四、RISC-V架构指令集

  RISC-V是在RISC的思想上,通过若干次迭代更新后,实现的产物,自此,大量基于RISC-V指令集架构的CPU、SOC等设计涌现出来。
  目前已有许多RISC-V架构CPU:
  1)Rocket Core
  2) BOOM Core
  3)Freedom Soc
  4)蜂鸟E200系列
  大多数CPU也秉承了RISC的开源理念,在各平台上开源。详细的RISC-V指令集将在后续介绍。


五、RISC-V的大道至简

  或许通过上面的描述,大家对两种指令集架构CPU的优缺点有了一定的了解,但对RISC-V大道至简的思想还很模糊。这边我通过几个例子来给大家体现一下:
  在RISC-V中,仅设计了sub指令,并没有设计立即数减;
  立即数减通过立即数加addi来实现,如addi x2,x1,imm,该指令表示x2 = x1 + imm,imm为立即数若为负数则完成了立即数减法,因为1-2等于1+(-2),RISC-V以这样的方式用一个addi完成了两条指令的功能;addi指令还可以用于加载立即数,如addi x1,x0,imm表示x1 = x0 + imm。由于x0寄存器永远为0,所以x1 = imm;
  这样的思想在很多地方都有体现,再如条件分支跳转指令,在CISC上,我们是通过判断状态寄存器来实现的,而在RISC中不存在状态寄存器,直接通过分支跳转指令实现,且RISC-V 架构特地定义了所有的带条件跳转指令跳转目标的偏移量(相对于当前指令的地址〉都是有符号数,并且其符号位被编码在固定的位置,这使得静态预测很容易实现

  同样在产生异常时(上溢、下溢、除法除0等),RISC-V均不会产生异常,而是将当前的运算结果或目的寄存器置数为某个特定值,推荐通过软件的方法来发现这些错误。


总结

  总之,无论从架构上来看还是从指令实现上来看,RISC都透露着简单即是美的思想,这也是笔者为什么选择RISC作为本次设计的CPU架构。由于篇幅限制,本篇也仅总结了两种架构CPU的特点,每种CPU涉及的知识也仅仅是冰山一角,若对此想深入研究,也可以阅读下RISC的指令集文档。
  在下一篇系列文章,将对CPU的两种实现方式单周期(状态机)、多周期(流水线)进行介绍。

《手把手教你设计CPU——RISC-V处理器篇》

从零开始的RISCV架构CPU设计(2)-CISC与RISC相关推荐

  1. RISC-V架构P扩展指令集的研究与实现(一)

    本专栏旨在介绍RISC-V指令集架构中P指令集扩展的相关内容,包括指令集的主要特点.应用场景,译码.执行的实现方式,以及如何提升CPU内核的性能,并以阿里巴巴旗下半导体公司平头哥推出的玄铁E906开源 ...

  2. 大道至简——RISC-V架构之魂(上)

    本文为<RISC-V CPU设计>专栏和<RISC-V嵌入式软件开发>专栏系列文章之一. 注:本文节选自"硅农亚历山大"所著国内第一本系统介绍CPU与RIS ...

  3. RISC-V架构下 DSA - AI算力的更多可能性

    责编 | 王子彧 出品 |进迭时空SpacemiT AI 应用出现在我们日常的生产生活当中,赋能各行各业的劲头势不可挡.近些年,AI 算力芯片领域群雄逐鹿,通过对芯片.算力与 AI 三者发展迭代过程的 ...

  4. FPGA学习日志——Risc-V架构的cpu设计

    FPGA学习日志 坚持每天写总结 2021.2.18 Risc-V学习 FPGA学习日志 前言 一.RISC-V是什么? 二.学习RISC-V的探索过程 1.<手把手教你设计CPU--RISC- ...

  5. 逃离x86架构-----CPU体系结构CISC与RISC之争

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 转载:h ...

  6. 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)

    在VIVADO上实现的非常简易的RISC-V CPU设计 一.实验要求重述: 1.实验目的 2.实验要求: 二.学习准备: 1.什么cpu? 2.cpu需要具有哪些部件? 3.什么是RISC_CPU? ...

  7. Risc-V单周期CPU设计思考

    Risc-V单周期CPU设计思考 今年学校课程改革,计算机组成课开始教学Risc-V,写单周期CPU的时候发现网上好像大多都是MIPS的CPU设计,所以就把自己关于设计Verilog的一些思路整理出来 ...

  8. 基于RISC-V指令集的CPU设计和FPGA实现(二)

    RISC-V 指令集分析 其实接下来的指令介绍我刚开始不太确定要不要写,因为对于 CPU 设计和实现而言略有拖沓,但是熟练掌握指令格式还是对写 CPU 有帮助的.接下来的部分假如学过 RISC-V 指 ...

  9. 从零开始构建矽璓工业物联操作系统:使用risc-v架构的hifive1 emulator

    hifive1 emulator XiUOS (X Industrial Ubiquitous Operating System) 矽璓XiUOS是一款面向智慧车间的工业物联网操作系统,主要由一个极简 ...

最新文章

  1. 五项挑战获四项第一,地平线霸榜Waymo自动驾驶算法挑战赛
  2. 【数学专题】莫比乌斯反演与积性函数
  3. ASP.NET学习6 XML文档的操作
  4. [Jarvis OJ - PWN]——[XMAN]level2
  5. C语言中有bool变量吗?
  6. 对抗机器学习(Adversarial Machine Learning)发展现状
  7. efcore 批量_EFCore批量操作内幕
  8. virtualbox 安装kali linux虚拟机,kali Linux安装virtualbox虚拟机之爬坑经历
  9. 如何求地球上两点之间的最短距离_高三数学这样复习“最高效”,稳稳120+!...
  10. 区块链核心技术演进之路-共识机制演进
  11. PVT论文精读:Pyramid Vision Transformer: A Versatile Backbone for Dense Predictionwithout Convolutions
  12. MapGuide 和 Google Map
  13. 用C#.NET 与Webdriver写的抓取网页信息的小工具
  14. 区块链日记——【译】用Java创建你的第一个区块链-part2:可交易
  15. 冲击GCT——考试法宝
  16. 深度剖析整数在内存中存储的问题
  17. MySQL/Hive 常用窗口函数详解及相关面试题
  18. Ubuntu右上角不显示网络的图标解决办法
  19. 第一次参加CCF心得
  20. 工控机IP地址规划 妙用保留地址 169.254.x.x

热门文章

  1. 哪个服务器便宜又稳定,便宜又稳定的云服务器
  2. 基于ssm+vue的班级同学录网站管理系统 elementui
  3. AHB总线笔记(一)
  4. 支持向量机 一 :线性支持向量机介绍
  5. 牛客-郊区春游(状态压缩dp)(java)(c++)
  6. Android flac to wav
  7. 【No7.】Android 像素转换工具
  8. 百度的冬天:曾梦想成伟大公司 却为何陷入危机
  9. 华为 ensp 部分查询方法
  10. Daimayuan Online Judge 查重判断