从零开始的RISCV架构CPU设计(3)- 状态机与流水线

本文深入介绍了RISC-V架构CPU设计中的流水线和状态机技术。通过王大妈和李大妈的餐饮店经营比喻,阐述了流水线提高效率的原理。文章详细讲解了状态机的概念、设计实例以及流水线的工作模式,并对比了两者的优缺点。此外,还讨论了CPU设计框架,包括指令执行流程、单周期与多周期CPU的区别以及流水线冒险问题,如结构冒险和数据冒险的解决方案。最后,指出虽然流水线带来了复杂性,但其性能提升显著。

系列文章目录

上一节:从零开始的RISCV架构CPU设计(2)-CISC与RISC



前言

  流水线与状态机是数字电路设计中两种重要的技术,本节将由浅入深对这两种技术作简要介绍,并探讨在该RV CPU软核的实现框架。


一、举个例子

  在进行对流水线与状态机的介绍之前,首先为大家引入一个生活实例:
  王大妈与李大妈现打算各自开设一家餐饮店,她们俩分别采用了不同的经营模式。
  王大妈开设的餐饮店不招收员工,店内所有工作需要王大妈一个人负责完成,这些工作包括接单、需求分析、后厨制作、餐饮配送;假设这些工作每项需要十分钟,我们不难得出,王大妈一个处理订单的速度为这些工作时间的总和共计40分钟;并且假设王大妈在进行其中一项工作时无法同时进行其他工作,因此王大妈只有在处理完当前订单后才能对下一个订单做处理;我们对王大妈的这种模式画一个时间轴,如下所示:请添加图片描述  王大妈处理三个订单花费了120分钟,我们可以看出,这种运营方式处理订单的效率并不高。
  我们再来看李大妈,李大妈选择招收一个前台柜员、一个服务员、一个厨师、一个骑手来分别负责接单、需求分析、后厨制作、餐饮配送。在这种情况下,前台柜员将接收到的订单给服务员后,便可以接收下一份订单,同理服务员在
对订单进行分析后,将顾客的需求反应给厨师后,就可以转去处理柜员传递的下一份订单,以此类推,这种工作模式的时间轴如下所示:
请添加图片描述  从整体上来看,整个餐厅在处理上一份订单的需求时,可以进行下一份订单的接单任务,在处理上一份订单的后厨制作时,可以进行下一份订单的需求分析;同理在上一份订单配送时,下一份订单处于后厨制作阶段;
  李大妈的这种模式,虽然单个订单的处理时间仍然是40分钟,但整体上来看,三个订单的处理时间仅花费了60分钟。

  我们再来综合看下这两种经营模式,王大妈的经营模式简单来说就是划分好了每个时刻的任务,第一个10分钟干什么,第二个十分钟干什么;李大妈人多力量大,所有工作在每个十分钟都可以同时进行。其实前者的工作模式就是一种状态机,后者就是流水线;
  两种模式各有优缺点,王大妈虽然减少了店内员工的开销,但是处理订单的效率不高,适合订单不多的情况;李大妈虽然处理订单的效率提高了,但其在员工上的开销也增大了,适合订单较多的情况;


二、状态机

2.1 状态机概念

  正如上述我们举的实例,状态机所做的就是将一个复杂的任务分为若干个阶段,每个阶段去完成其中的一小部分。由于状态机在每个时钟周期到来时处理的任务是唯一的,做事是“一心一意”的,所以各个状态对应逻辑是允许逻辑复用的,所以状态机是一种以性能换面积的手段;

2.2 状态机设计

  从状态机的类型上来看,状态机可以分为moore型和mealy型;
  从状态机的代码实现上来看,状态机可以是一段式、二段式或三段式;
  moore型状态机的特点是状态机的输入与输出无关,输出仅与当前状态有关,如下图所示:
在这里插入图片描述

  mealy型状态机的特点是状态机的输入会影响输出;
在这里插入图片描述

2.3 设计实例

  我们这边举一个二段式状态机的设计实例;计算y=12*x + (x - 6) + x / 4;

module state_machine_test(
	input  wire            clk,
	input  wire           nrst,
	input  wire [15:0]       x,
	output wire [31:0]       y
);
	reg [31:0] y_temp;
	reg [31:0] y_buff;
	reg [1:0]  state;
	localparam integer MUL0 = 0;
	localparam integer SUB0 = 1;
	localparam integer DIV0 = 2
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PPRAM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值