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阶段要重新取指: