新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > RISC CPU對轉(zhuǎn)移指令的處理方法及仿真

        RISC CPU對轉(zhuǎn)移指令的處理方法及仿真

        作者: 時(shí)間:2010-12-09 來源:網(wǎng)絡(luò) 收藏

        2.3.2 BTC存儲(chǔ)

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

        2.3.3 BTC命中

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

        本文引用地址:http://www.104case.com/article/173094.htm

        2.3.4 BTC檢查

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


        3 結(jié)論

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


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 托里县| 丹凤县| 探索| 万宁市| 金溪县| 延吉市| 屏东市| 家居| 北川| 睢宁县| 丰城市| 千阳县| 衡水市| 义乌市| 民和| 镇原县| 丰城市| 通许县| 五家渠市| 北辰区| 黄骅市| 故城县| 卓尼县| 英德市| 迁安市| 东光县| 西峡县| 当涂县| 图们市| 石阡县| 襄城县| 龙岩市| 华安县| 巫溪县| 嵊州市| 咸阳市| 宜兰县| 东宁县| 稻城县| 虹口区| 仁化县|