該版本用作系統寄存器的實現,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為好。