从零开始的RISCV架构CPU设计(2)-CISC与RISC
系列文章目录
上一节:从零开始的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相关推荐
- RISC-V架构P扩展指令集的研究与实现(一)
本专栏旨在介绍RISC-V指令集架构中P指令集扩展的相关内容,包括指令集的主要特点.应用场景,译码.执行的实现方式,以及如何提升CPU内核的性能,并以阿里巴巴旗下半导体公司平头哥推出的玄铁E906开源 ...
- 大道至简——RISC-V架构之魂(上)
本文为<RISC-V CPU设计>专栏和<RISC-V嵌入式软件开发>专栏系列文章之一. 注:本文节选自"硅农亚历山大"所著国内第一本系统介绍CPU与RIS ...
- RISC-V架构下 DSA - AI算力的更多可能性
责编 | 王子彧 出品 |进迭时空SpacemiT AI 应用出现在我们日常的生产生活当中,赋能各行各业的劲头势不可挡.近些年,AI 算力芯片领域群雄逐鹿,通过对芯片.算力与 AI 三者发展迭代过程的 ...
- FPGA学习日志——Risc-V架构的cpu设计
FPGA学习日志 坚持每天写总结 2021.2.18 Risc-V学习 FPGA学习日志 前言 一.RISC-V是什么? 二.学习RISC-V的探索过程 1.<手把手教你设计CPU--RISC- ...
- 逃离x86架构-----CPU体系结构CISC与RISC之争
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 转载:h ...
- 在VIVADO上实现的非常简易的RISC-V CPU设计(来自《Verilog数字系统设计》夏宇闻著)
在VIVADO上实现的非常简易的RISC-V CPU设计 一.实验要求重述: 1.实验目的 2.实验要求: 二.学习准备: 1.什么cpu? 2.cpu需要具有哪些部件? 3.什么是RISC_CPU? ...
- Risc-V单周期CPU设计思考
Risc-V单周期CPU设计思考 今年学校课程改革,计算机组成课开始教学Risc-V,写单周期CPU的时候发现网上好像大多都是MIPS的CPU设计,所以就把自己关于设计Verilog的一些思路整理出来 ...
- 基于RISC-V指令集的CPU设计和FPGA实现(二)
RISC-V 指令集分析 其实接下来的指令介绍我刚开始不太确定要不要写,因为对于 CPU 设计和实现而言略有拖沓,但是熟练掌握指令格式还是对写 CPU 有帮助的.接下来的部分假如学过 RISC-V 指 ...
- 从零开始构建矽璓工业物联操作系统:使用risc-v架构的hifive1 emulator
hifive1 emulator XiUOS (X Industrial Ubiquitous Operating System) 矽璓XiUOS是一款面向智慧车间的工业物联网操作系统,主要由一个极简 ...
最新文章
- 五项挑战获四项第一,地平线霸榜Waymo自动驾驶算法挑战赛
- 【数学专题】莫比乌斯反演与积性函数
- ASP.NET学习6 XML文档的操作
- [Jarvis OJ - PWN]——[XMAN]level2
- C语言中有bool变量吗?
- 对抗机器学习(Adversarial Machine Learning)发展现状
- efcore 批量_EFCore批量操作内幕
- virtualbox 安装kali linux虚拟机,kali Linux安装virtualbox虚拟机之爬坑经历
- 如何求地球上两点之间的最短距离_高三数学这样复习“最高效”,稳稳120+!...
- 区块链核心技术演进之路-共识机制演进
- PVT论文精读:Pyramid Vision Transformer: A Versatile Backbone for Dense Predictionwithout Convolutions
- MapGuide 和 Google Map
- 用C#.NET 与Webdriver写的抓取网页信息的小工具
- 区块链日记——【译】用Java创建你的第一个区块链-part2:可交易
- 冲击GCT——考试法宝
- 深度剖析整数在内存中存储的问题
- MySQL/Hive 常用窗口函数详解及相关面试题
- Ubuntu右上角不显示网络的图标解决办法
- 第一次参加CCF心得
- 工控机IP地址规划 妙用保留地址 169.254.x.x