调试机制

对于处理器的调试功能而言,常用的两种:“交互式调试”、“追踪调试”。
交互式调试是指调试器软件(如GDB)能够直接对处理器取得控制权,进而对其以一种交互的方式进行调试,譬如
•下载或者启动程序
•通过设定各种特定条件来停止程序
•查看处理器的运行状态。包括通用寄存器的值、存储器地址的值等
•查看程序的状态。包括变量的值、函数的状态等
•改变处理器的运行状态。包括通用寄存器的值、存储器地址的值等
•改变程序的状态。包括变量的值、函数的状态等

交互性调试缺点:对处理器的运行具有打扰性。

跟踪调试,即调试器只跟踪记录处理器执行过的所有程序指令,而不会打断干扰处理器的执行过程。要记录所有指令(处理器速度快),对处理速度要求,数据压缩、传输和存储都是极大的挑战,通常只在高端的处理器中使用。

进入调试模式时
•将处理器PC跳转到0x800地址
•将处理器正在执行的指令PC保存到CSR寄存器dpc中
•将引发进入调试模式的触发原因保存到CSR寄存器dcsr中

手把手教你设计CPU-3
•Debug Host为主机PC端的调试平台

调试中断处理
调试中断作为一根输入信号输送给处理器的交付(Commit)模块
•交付模块接收来自调试模块的一根中断信号的请求,由于中断是一种异步异常,这种中断异常的“发生指令PC”将会由当前正在交付的指令承担,dpc寄存器中更新的PC值即为当前正在交付指令(来自ALU接口)
•调试一旦被接受,变化冲刷流水线,将后续的指令取消掉,并向IFU模块发送冲刷请求和重新取指的PC,值为0x800,用以重新从新的PC地址开始取指令

低功耗的诀窍

软件层面低功耗
软件层面的灵活性很高,其发掘低功耗的效果比硬件低功耗本身的效果更佳显著。
一套好的软件程序应该尽可能合理地调用处理器的硬件资源,譬如
•尽在关键的场景调用功耗高的硬件,在一般场景尽可能使用耗能低的硬件
•在处理器空闲的时刻,尽可能进入低功耗休眠模式

系统层面低功耗
设计硬件系统和芯片的SoC系统,常见低功耗技术
•SoC中划分不同的电源域,能够支持将SoC中的大部分硬件关闭电源
•SoC系统中划分不同的时钟域,能够支持小部分电路以低速低功耗的方式运行
•使用PMU控制进入或者退出不同的低功耗模式
•软件使用PMU功能

处理器层面低功耗
(1)指令集定义休眠指令
(2)深度休眠和浅度休眠
•浅度休眠将处理器时钟关闭,但不关闭电源
•深度休眠关闭时钟、电源
(3)处理器深度休眠断电后,其内部上下文状态可以有两种策略进行保存恢复
一:在处理器内部有低功耗维持能力的寄存器或者SRAM
二:使用软件的保存恢复机制
(4)处理器架构使用异构的方式

寄存器层面低功耗
(1)时钟门控
(2)减小翻转
(3)数据通路不复位

SRAM层面低功耗
(1)选择合适的SRAM(形状,单双口)
(2)尽量减少SRAM读写
(3)空闲时关闭SRAM
•空闲时关闭SRAM的时钟,以节省功耗
•省电模式下,关闭SRAM电源

组合逻辑层面低功耗
(1)减小面积
(2)减小翻转率

手把手教你设计CPU-3

蜂鸟E200划分为3个时钟域
手把手教你设计CPU-3
蜂鸟E200划分为3个电源域
手把手教你设计CPU-3

蜂鸟 E200 处理器核从各个层面使用严谨的方法进行低功耗设计,不逊色于任何其他商用的处理器核 IP 。

RISC-V可扩展协处理器

异构计算:是指不同指令集架构的集中处理器组合在一起进行运算。
典型的例子:CPU+GPU,CPU侧重于通用的控制和计算,GPU侧重于专用的图像处理。

RISC-V架构定义的标准指令集仅使用了少部分的指令编码空间,更多的指令编码空间被预留给用户作为扩展指令使用。
由于RISC-V 架构支持多种不同 的指令长度,不同的指令长度均预留有不同的编码空间 。
•每个指令的编码空间,除了用于寄存器操作数的索引之外,还剩余众多位的编码空间,对于这些没有使用的编码空间,用户均可以加以利用。
•另外对于某些特定的处理器实现,由于其往往不会实现所有的指令类型,对于没有实现的指令类型的编码空间,用户也可以加以利用。
•有一些没有定义的指令类型组,用户也可以加以利用。

EAI(Extension Accelerator Interface)
EAI指令编码格式如下
手把手教你设计CPU-3
(1)0位到6位为opcode编码端,根据RISC-V中的编码规则使用custom-0,custom-1,custom-2,custom-3指令组
(2)xs1、xs2和cd比特跟别用于控制是否需要读源寄存器 rs1、rs2和写目标寄存器rd。
•如果xs1位的值为1,则表示该指令需要读取由rs1比特位索引的通用寄存器作为源操作数1;如果xs1位的值为0,则表示该指令不需要源操作数。xs2同理。
•如果xd为1,则表示该指令需要写回结果至由比特rd比特位指示的目标寄存器;如果xd位的值为0,则表示该指令无需写回结果。
(3)指令的25-31bit为funct7空间,可作为额外的编码空间,用于编码更多的指令,因此一种Custom指令组可以使用funct7区间编码出128条指令。则 4 组 Custom 指令组共可 以编码出 512 条两读一写(读取两个源寄存器 , 写回一个目标寄存器) 的协处理器指令。如果有的协处理器指令仅读取一个源寄存器,或者无须写回目标寄存器, 则可以使用这些无用的比特位(譬如 rd 比特位)来编码出更多的协处理器指令。

EAI分为四个通道:
•请求通道:主要用于主处理器在EXU级将指令信息和源操作数派发给协处理器
•反馈通道:主要用于协处理器反馈主处理器告知其已经完成了该指令,并将给过写回主处理器
•存储区请求通道:主要用于协处理器向主处理器发起存储器读写操作
•存储器反馈通道:主要用于主处理器向协处理器返回存储器读写结果
手把手教你设计CPU-3
手把手教你设计CPU-3

相关文章:

  • 2021-07-24
  • 2021-09-25
  • 2021-08-09
  • 2021-12-10
  • 2021-12-08
  • 2019-02-27
  • 2021-08-20
  • 2020-07-07
猜你喜欢
  • 2021-12-28
  • 2021-09-07
  • 2021-09-16
  • 2021-11-11
  • 2021-12-13
  • 2021-12-15
  • 2021-08-20
  • 2021-09-06
相关资源
相似解决方案