新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 適用于RISC CPU的轉(zhuǎn)移指令的原理及仿真

適用于RISC CPU的轉(zhuǎn)移指令的原理及仿真

作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏


本文引用地址:http://m.butianyuan.cn/article/201612/324824.htm

2.3.2 BTC存儲

當轉(zhuǎn)移指令第一次執(zhí)行時,BTC在當前時鐘啟動存儲任務,把該指令執(zhí)行的信息寫入對應的單元中,對于BCC指令,確定2BC的初始狀態(tài)。同時也把該行的VI置為有效。BTC采用隨機替換策略確定數(shù)據(jù)入口:在復位或Cache清零之后,按順序填充Cache,如果BTC寫滿,則隨機選通一行進行替換。

2.3.3 BTC命中

在取指周期開始時如果發(fā)現(xiàn)當前取指地址包含在BTC的TAG中,并且對應行的VI也有效,則認為BTC命中,從而啟動命中任務:讀出命中行的數(shù)據(jù),把DI送到指令總線,如果是CALL指令,轉(zhuǎn)移目標地址作為下一條指令的地址;如果是BCC 指令則需要判斷跳轉(zhuǎn)是否發(fā)生:當標志位有效時,根據(jù)條件碼與標志位判斷,否則根據(jù)HI進行預測,然后確定下一條指令的地址:跳轉(zhuǎn)時為轉(zhuǎn)移目標地址,不跳轉(zhuǎn)為PC+2。對于帶A參數(shù)的BCC指令,在跳轉(zhuǎn)不執(zhí)行時,要禁止DI在下一時鐘進入譯碼級。BTC命中的流程如圖3。


2.3.4 BTC檢查

如果前一周期BTC命中,則在當前周期開始時啟動BTC檢查任務;如果前一周期BTC是根據(jù)HI預測BCC的跳轉(zhuǎn),那么在當前時鐘標志位有效后,要重新判斷跳轉(zhuǎn)決定是否正確,如果不正確就要進行更正,給出正確的取指地址,請求在下一時鐘禁止譯碼級或執(zhí)行級。同時還要根據(jù)最終的跳轉(zhuǎn)情況和HI的更新算法更新HI。BTC檢查的流程圖如圖4。


3 結(jié)論

整個RISC CPU用VerilogHDL語言進行了描述,并針對標準程序進行了仿真,仿真結(jié)果表明,采用上述方法處理轉(zhuǎn)移指令可以明顯提高流水線的吞吐率。由于在轉(zhuǎn)移指令后面插入了延時槽指令,轉(zhuǎn)移指令的執(zhí)行與程序順序執(zhí)行時完全相同; BTC的使用雖然在硬件上增加了一些開銷,但使轉(zhuǎn)移指令再次執(zhí)行時基本不占用流水線資源,大大提高了CPU的效率。

上一頁 1 2 下一頁

關(guān)鍵詞: RISCCPU轉(zhuǎn)移指

評論


技術(shù)專區(qū)

關(guān)閉