Rocket - core - take_pc对流水线的影响

https://mp.weixin.qq.com/s/HicRl6t-4lKN0uOzBG2f7w

 

简单介绍take_pc对流水线的影响。

 

1. take_pc是线型变量,其值变化即时生效

 

take_pc意为指示if阶段take新的pc,从新的pc开始取指。其定义为:

从中可知其类型依赖于take_pc_wb和take_pc_mem。此二者的定义皆为Wire:

所以take_pc也是一个线型的变量,其值的变化会立即对与其相连的逻辑产生影响。

 

2. take_pc_wb: wb阶段要求take pc

 

take_pc_wb的意为wb阶段要求take pc,wb阶段之前的流水线阶段都会被废弃。

 

 

3. take_pc_mem: mem阶段要求take_pc

 

take_pc_mem意为mem阶段要求take_pc,mem阶段之前的流水线都会被废弃。

从中也可以看出,take_pc_mem不会对wb阶段产生影响。

 

4. take_pc_wb对take_pc_mem的影响

 

反过来,take_pc_wb会触发killm,导致mem阶段被废弃。

 

5. take_pc_mem_wb:mem或者wb阶段要求take pc

 

take_pc_mem和take_pc_wb或在一起,组成take_pc_mem_wb。因为id/ex阶段不要求重新取指,所以take_pc_mem_wb就是take_pc。

 

6. take_pc_mem_wb对ex阶段的影响

 

如果mem/wb阶段要求重新取指,则ex阶段被废弃(kill):

 

7. take_pc_mem_wb对id阶段的影响

 

如果mem/wb阶段要求重新取指,则id阶段被废弃(kill):

 

8. take_pc对if阶段的影响

 

if阶段要重新取指:

 

posted @ 2022-03-12 00:02  wjcdx  阅读(90)  评论(0编辑  收藏  举报