標籤:or1200 軟核處理器 or1200 openrisc 軟核處理 處理器 軟核 cache
以下內容摘自《步步驚芯——軟核處理器內部設計分析》一書
13.7 DCache使用情景之一——儲存指令執行階段DCache失靶
儲存指令執行階段DCache失靶這種情景在通寫法、回寫法策略下有不同的執行過程,在通寫法策略下直接寫儲存空間中對應的地址,不操作DCache。在回寫法策略下,首先判斷目的地址對應的DCache中目錄表的line是否被修改,如果是(Dirty為1),則將該line寫回到記憶體,然後將目的地址所在的記憶體塊讀入DCache,填充到對應line,然後再修改DCache中對應目的地址的資料;如果目的地址對應的line沒有被修改(Dirty為0),那麼直接將目的地址所在的記憶體塊讀入DCache,填充到對應line,然後再修改DCache中對應目的地址的資料。13.7所示。
(具體分析過程參考書中本文)
13.8 DCache使用情景之二——儲存指令執行階段DCache命中
儲存指令執行階段DCache命中這種情景在通寫法、回寫法策略下也有不同的執行過程,在通寫法策略下,既要寫DCache中目錄表對應的line,還要寫記憶體中對應的地址,在回寫法策略下,只是寫DCache中目錄表對應的line。13.11所示。
(具體分析過程參考書中本文)
13.9 DCache使用情景之三——l.mtspr指令寫DCache中特殊寄存器
DCache中有三個特殊寄存器:DCBIR、DCBFR、DCBWR,其作用在13.3節已說明。從程式碼分析中可以發現,在通寫法策略下,只能使用DCBIR、DCBFR,在回寫法策略下,可以使用全部三個特殊寄存器。這也是很好理解的,在通寫法策略下,DCache目錄表中line的標誌位Dirty始終為0,所以DCBIR、DCBFR的作用是一樣,並且沒必要存在DCBWR寄存器,所以本章將指令l.mtspr寫DCache中特殊寄存器這一情景又分為如下四種情景:
(1)通寫法策略下,指令l.mtspr寫DCBIR、DCBFR
(2)回寫法策略下,指令l.mtspr寫DCBIR
(3)回寫法策略下,指令l.mtspr寫DCBWR
(4)回寫法策略下,指令l.mtspr寫DCBFR
(具體分析過程參考書中本文)
13.10 DCache分析小結
DCache有多種使用情景,本章只是分析了其中的三種,但這已經足夠我們瞭解DCache的工作過程了,其餘情景的處理過程與此是類似的。筆者個人感覺DCache模組是OR1200中最複雜的模組,因為要考慮到載入、儲存指令,還要考慮採用的寫策略是通寫法、回寫法,還要考慮DCache中對應目錄項的標誌位V、Dirty的情況,所以很複雜。為此,在本章最後分別給出在通寫法、回寫法情況下,DCache的工作流程圖,13.18、13.19所示,其中也給出了DC_FSM模組中有限狀態機器各個狀態之間的轉換情況。