SI-RISCV / e200_opensource

Deprecated, please go to next generation Ultra-Low Power RISC-V Core https://github.com/riscv-mcu/e203_hbirdv2

Home Page:https://github.com/riscv-mcu/e203_hbirdv2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

e203_itcm_ctrl 模块里面访问优先级顺序

qian-gu opened this issue · comments

从代码和注释看,LSU和EXT的优先级要高于IFU,应该IFU的优先级最高才比较合理?

commented

个人理解:
LSU要访问ITCM说明有load/store指令要访问ITCM, IFU要访问ITCM说明要从ITCM中取指令,而load/store指令的执行顺序一定是比IFU要取的指令在前的,所以LSU/EXT优先级高于IFU

LSU 访问 ITCM 的目的是为了上电初始化时向其中写程序和数据。在程序初始化完成之后,LSU 不应该再访问 ITCM,所以为了保证能即使读出指令来执行,IFU 的优先级应该最高。
虽然这里写错了优先级,实际中也不会有问题,因为程序运行的时候 LSU 不会和 IFU 抢带宽。

commented

@guqian110 如果使用了Self-Modifying-Code则需load/store指令也要访问ITCM

@hyf6661669 学习了,thx~

从代码和注释看,LSU和EXT的优先级要高于IFU,应该IFU的优先级最高才比较合理?

对单一的存储器接口来说,取数据的优先级要高于取指令,否则前一条指令的取数步骤未做完就取下一条指令再取数会出现“hazard“。

从代码和注释看,LSU和EXT的优先级要高于IFU,应该IFU的优先级最高才比较合理?

对单一的存储器接口来说,取数据的优先级要高于取指令,否则前一条指令的取数步骤未做完就取下一条指令再取数会出现“hazard“。

如果都是读操作,就不会有 hazard,而且指令和数据是分开存放的,相互之间没有干扰。虽然数据也可以放到 ITCM 中,但是一般不会这么做,因为会影响到性能