本文主要是介绍CPU设计——Triumphcore——MP_work版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
该版本用作系统寄存器的实现,M/S/U状态的实现与切换,以及load/store的虚实地址转换
设计指标
- 2023.12.8
- 2023.12.9
不实现mideleg和medeleg,因此一旦出现异常,直接切换至M态,
调试记录
到存储区中取PTE要额外至少一拍,需要使用store buffer
如果PTE在boot data ram中,拍数为一拍;但如果PTE在总线上的axi_sram中,则需要更多拍数。
首先,没有store buffer,如果两条连续的store axi_sram空间的操作,第二条会丢失;
其次,store buffer可以保证store完成后,后续的load或另一条store才会再次执行;如果不用store buffer,由于取PTE多出来的一拍(两级页表则要两拍),虚实地址转换至少在一拍内完成,load/store的指令执行至少会多出一拍来,导致流水线不同步。
load指令还好,如果不写回,流水线会始终stall,但对store来讲,机器认为store会在4拍内完成,但却使用了5拍,如果后面发出一条load指令,此时会不会出错。
无论如何,在没有cache、流水线只有五级的情况下,还是加上store buffer为好。
这篇关于CPU设计——Triumphcore——MP_work版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!