重点在第二部分

代码风格也很重要,一定要能够带着这种风格看代码,不然根本看不懂

第六章:E203流水线

流水线每一级之间都需要握手

数字芯片设计--握手与反压

E203支持V型指令吗?Rocket core支持V型指令吗?如果不支持,我自己要怎么把它加上去呢?能否加到NCIE接口处,也就是在译码结束后吧V型指令当做长指令,就像NICE接口的那些自定义指令一样 不支持

流水线中的数据冲突:

  1. 寄存器重命名?
  2. Tomasulo算法中的ROB?

第七章:取指

处理地址不对齐的指令

由于读取32位指令时,使用的地址都是*4后的,也就是只能读取0,4,8,12,这种地址,因此如果中间插入了一个16位的指令,就只能通过读取两个32位指令然后拼接了

预测分支

两级预测器通过PHT来索引不同的分支的历史记录,但是它怎么把分支情况与历史记录对应上的呢?还要记录跳转地址的历史吗?

GShare算法通过将PC值的一部分与历史缓冲区(应该类似于cache,比如第一次跳转的时候,这时的历史缓冲区就是0,第二次就是1)进行异或,得到PHT

分支延迟槽

不管分支如何跳转,后面几条指令都会运行,在运行完这后面的几条指令后在运行目标分支指令

【Verilog语法】分支延迟槽 - 程序员大本营