码迷,mamicode.com
首页 > 其他好文 > 详细

Rocket - decode - Inst Decode - 1

时间:2019-01-16 23:51:28      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:href   span   trim   coder   sim   技术分享   指令   bit   name   

 
介绍RocketChip Instruction解码逻辑的实现。
 
1. RISC-V
 
RocketChip实现了RISCV ISA:
 
?技术分享图片?
 
作为RISC-V的官方实现,实现的规范版本比较新,使用的编码技术也比较激进。
 
 
2. decode_table
 
在RocketImpl类中,定义了decode_table解码表:
?技术分享图片?
 
里面定义了每个指令的key与译码结果(包含许多参数)的映射表,如IDecode里面的table定义:
?技术分享图片?
 
key为指令的编码,以BitPat的形式定义的:
?技术分享图片?
 
值亦即译码结果是一组BitPat,如:
?技术分享图片?
 
其结构定义为类IntCtrlSigs
?技术分享图片?
 
默认值为:
?技术分享图片?
 
 
3. 指令解码(ID)的输入与输出
 
解码的输入即是指令本身,指令从内存中读入;
解码的输出即是IntCtrlSigs中定义的各个信号;
 
解码的过程:
根据输入指令,使用decode_table中定义的映射表,查找出与其对应的IntCtrlSigs这一组信号。
 
因为decode_table过大,译码逻辑需要简化,简化的理论根据是布尔代数,方法类似于卡诺图化简。
 
4. id_ctrl
 
?技术分享图片?
其中:
a. id_inst(0)为需要解码的指令;
b. id_ctrl为解码的输出;
c. decode_table为查找表;
 
5. IntCtrlSigs
 
?技术分享图片?
a. 调用DecodeLogic解出译码结果;
b. decoder中的比特组成及顺序与sigs序列中定义的顺序一一对应:
?技术分享图片?
c. 把decoder中的各个比特组成部分与sigs中的信号一一连接:
?技术分享图片?
 
 
6. DecodeLogic
 
?技术分享图片?
a. mappingIn即为decode_table,其中为key(BitPat)到values(Seq[BitPat])的映射;
b. mapping(i)为key(BitPat)到values中第i个BitPat(如:rocc, br, jal等)的映射表;
c. 调用另外一个apply,每次解出一个value,即每次生成解出一个value的逻辑:
?技术分享图片?
 
7. 解码单个信号
 
代码为提高可读性,已做重构:
?技术分享图片?
 
 
 

Rocket - decode - Inst Decode - 1

标签:href   span   trim   coder   sim   技术分享   指令   bit   name   

原文地址:https://www.cnblogs.com/wjcdx/p/10280036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!