设计应用

一种超低功耗的RISC-V处理器流水线结构

0 引言

    经过几十年的处理器设计技术的演变和大规模集成电路设计技术的发展,高性能处理器的硬件调度能力已经非常强,主频率已经非常高,所以硬件设计师希望指令集能够结构化和简单化,以便来设计更高频率和更低功耗的处理器。另一方面,对于应用于可穿戴系统和医疗保健[1-2]等IoT(Internet of Thing)应用和其他IoT应用如智能城市[3]、智能交通[4]的处理器对低功耗和小面积的要求更高。然而,由于商业原因以及知识产权保护,传统的指令集架构如ARM和X86架构需要高昂的授权费。开源的指令集架构RISC-V[5]架构是一种新的指令集架构,是活的、无专利的、无历史的指令集架构,并且是在BSD许可下发布的。RISC-V指令集架构具备极简、模块化和可定制扩展等优点。这也使得RISC-V指令集架构可以通过组合或扩展指令集在几乎所有领域都可以构建微处理器,比如云计算、存储、并行计算、虚拟化/容器、MCUs、应用处理器和DSP处理器。

1 蜂鸟E203的总体结构设计

    E203处理器核的结构示意图如图1所示,流水线的第一级为“取指”(由IFU完成)。“译码”(由EXU完成)、“执行”(由EXU完成)和“写回”(由WB完成)均处于同一个时钟周期,位于流水线的第二级。而“访问”(由LSU完成)阶段处于EXU之后的第三级流水线,但是LSU写回的结果仍然需要通过WB模块写回通用寄存器组(Register File,Regfile)。因此,严格来说,蜂鸟E203是一个变长的流水线结构。但是蜂鸟E203处理器核的按序主体是位于第一级的“取指”和位于第二级的“执行”及“写回”,因此本文非严谨地定义蜂鸟E203处理器核的流水线长度为二级。

wdz1-t1.gif

2 蜂鸟E203的单元设计

2.1 取指(IFU)单元的设计思路

    IFU微架构如图2所示,Mini-Decode模块主要用于对取回的指令进行译码。Simple-BPU模块主要用于对取回的指令通过Mini-Decode模块进行译码后发现的分支跳转指令进行分支预测。PC生成逻辑用于产生下一个待取指令的PC。地址判断和ICB总线控制会根据PC的地址访问ITCM或BIU。ITCM作为指令存储,而如果取指令的地址不落在ITCM所在的区间,IFU则会通过BIU访问外部的存储器。

wdz1-t2.gif

    IFU在取出指令后,会将其放置于和EXU单元接口的IR(Instruction Register)寄存器中。该指令的PC值也会被放置于和EXU单元接口的PC寄存器中,EXU单元将使用此IR和PC进行后续的执行操作。

2.2 执行(EXU)单元的设计思路

    EXU微架构如图3所示,EXU单元的功能主要有:将IFU通过寄存器发送给EXU的指令进行译码和派遣;通过译码出的操作数寄存器索引读取Regfile;维护指令的数据相关性;将指令派遣给不同的运算单元;将指令交付;将指令运算的结果写回Regfile。

wdz1-t3.gif

2.2.1 译码与派遣模块

    译码(Decode)模块主要用于将IFU通过IR寄存器发送给EXU的指令进行译码。译码模块完全由组合逻辑组成,其主要逻辑即根据RISC-V指令的编码规则进行译码,产生不同的指令类型信息、操作数寄存器索引等。

    蜂鸟E203是简单的两级流水线架构,派遣(Dispatch)发生在流水线的执行阶段,表示指令经过译码且从寄存器组中读取了操作数之后被派遣到不同的运算单元(ALU、Long Pipes、LSU和EAI)执行的过程。

2.2.2 整数通用寄存器模块

    整数通用寄存器组(Integer Register File,简称Integer-Regfile)模块主要用于实现RISC-V架构定义的整数通用寄存器组,其微架构如图4所示。RISC-V的整数指令都是单操作数或两操作数指令,且蜂鸟E203属于单发射(一次发射派遣一条指令)的微架构,因此Integer-Regfile模块只需要支持最多两个读端口。同时,蜂鸟E203的写回策略是按顺序每次写回一条指令的微架构,因此Integer-Regfile模块只用支持一个端口。

wdz1-t4.gif

2.2.3 ALU模块

    如图5所示,蜂鸟E203的ALU单元包括5个功能子单元。普通ALU运算主要负责普通的ALU指令(逻辑运算、加减法移位等指令)的执行;访问地址生成主要负责Load、Store和“A”扩展指令的地址生成;分支预测解析主要负责Branch和Jump指令的结果解析和执行;CSR读写控制主要负责CSR指令的执行;多周期乘除法器主要负责乘法和除法指令的执行。以上5个功能子单元只负责具体指令执行的控制,它们均共享一份实际的运算数据通路,因此主要数据通路的面积开销只有一份,这也是蜂鸟E203追求低功耗和小面积的一大亮点。

wdz1-t5.gif

2.2.4 状态寄存器(CSR)模块

    RISC-V架构中定义了一些控制和状态寄存器(Control and Status Register,CSR),用于配置或记录一些运行的状态。CSR寄存器是处理器核的内部寄存器,使用其自己的地址编码空间,与存储器寻址的地址区间完全无关系。蜂鸟E203的EXU单元中的CSR寄存器模块主要用于实现蜂鸟E203所支持的寄存器功能。如在ALU模块中的CSR读写寄存器模块会产生CSR读写控制信号。

2.2.5 OITF模块

    OITF本身只是一个先进先出的FIFO,FIFO的默认深度是2个表项。如图6所示,每条指令在派遣时,都会将本指令的源操作数寄存器索引和结果寄存器索引与OITF中的各个表项进行对比,从而判断本指令是否已经派遣出以及检查其是否与尚未写回的长指令产生RAW和WAW相关性。在整个过程中,由于蜂鸟E203主要侧重于低功耗和小面积,因此只采用了阻塞流水线而未使用快速旁路的方法。

wdz1-t6.gif

2.2.6 交付(Commit)模块

    RISC-V指令集架构具有指令没有条件码和所有的运算指令都不会产生异常这两个显著的特点,因此可以大幅度简化“交付”的硬件实现。无论是单周期指令还是多周期指令,在蜂鸟E203处理器中都将“交付”安排在“执行”阶段。

2.2.7 写回仲裁(WB-Arb)模块

    蜂鸟E203处理器的写回策略是一种因地制宜的混合策略。其核心思想是将指令划分为单周期指令和长指令两大类;以及将长指令的“交付”和“写回”分开,使得即便执行了多周期指令,仍然不会阻塞流水线,让后续的单周期指令仍然能够顺利地写回和交付。

    如图3所示,蜂鸟E203处理器有两级写回仲裁模块,其一是最终写回仲裁,主要用于仲裁所有单周期指令的写回(来自ALU模块)和所有长指令的写回(来自长指令写回仲裁模块),仲裁采用优先级仲裁的方式。在没有长指令写回的空闲周期,单周期指令可以随便写回。而对于长指令的写回,则由OITF和长指令写回仲裁模块协同完成所有长指令的写回操作。

3 综合仿真分析与跑分测试

    表1为蜂鸟E203 CPU的面积分布占比报告,其中CPU核的面积为233 329.695 5 μm2,占整个CPU面积的93.5%,CPU的其他部分的面积为16 334.17 μm2,占整个CPU的6.5%。

wdz1-b1.gif

    表2为CPU核的面积分布占比报告,BIU单元、EXU单元、IFU单元和LSU单元的面积占比分别为6.2%、73.2%、9.8%和4.3%,合计为CPU核的面积占比即93.5%。

wdz1-b2.gif

    表3为EXU单元的面积占比报告,译码、整数通用寄存器组、状态寄存器、派遣、ALU、交付、OITF、长指令写会仲裁、最终写回仲裁模块的面积占比分别为1.5%、36.5%、11.8%、0.6%、16.6%、2.5%、2.9%、0.4%和0.3%,合计为EXU单元的面积占比即73.2%。

wdz1-b3.gif

    对表1、2、3中的数据分析可以得出,蜂鸟E203在满足一定性能的情况下达到了小面积的设计目的。

    另外,为了衡量蜂鸟E203处理器的性能,本文通过跑分程序(Benchmarks)对其进行了跑分测试,并与ARM Cotex-M0+处理器进行比较。从表4可以看出,蜂鸟E203性能均不逊色于ARM的Cotex-M0+处理器(M0+是ARM面积最小的处理器核)。

wdz1-b4.gif

4 结论

    本文介绍了一种RISC-V处理器流水线架构,综合仿真和跑分测试结果表明蜂鸟E203可面向极低功耗与极小面积的场景,非常适合于替代传统的8051内核或者Cortex-M系列内核应用于IoT或其他低功耗场景。

参考文献

[1] ISLAM S M R,KWAK D,KABIR M H,et al.The Internet of Things for health care: a comprehensive survey[J].IEEE Access,2017,3:678-708.

[2] LAPLANTE P A,LAPLANTE N.The Internet of Things in healthcare: potential applications and challenges[J].IT Professional,2016,18(3):2-4.

[3] ZANELLA A,BUI N,CASTELLANI A,et al.Internet of Things for smart cities[J].IEEE Internet of Things Journal,2014,1(1):22-32.

[4] LU N,CHENG N,ZHANG N,et al.Connected vehicles:solutions and challenges[J].IEEE Internet of Things Journal,2014,1(4):289-299.

[5] WATERMAN A,LEE Y,PATTERSON D A,et al.The RISC-V instruction set manual, volume I:base user-level ISA[J].Eecs Department,2011,7(9):475.



作者信息:

邓天传1,2,胡振波2

(1.武汉大学 物理科学与技术学院,湖北 武汉430071;2.芯来科技有限公司,湖北 武汉430072)

流水线结构 低功耗 RISC-V架构 RISC-V处理器