日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1 引言 在RISC CPU的設(shè)計(jì)當(dāng)中,轉(zhuǎn)移指令的處理對(duì)處理器的性能的影響非常關(guān)鍵。轉(zhuǎn)移指令決定著程序的執(zhí)行順序,在程序中的使用頻率很高。RISC CPU中程序是以流水線(xiàn)的方式執(zhí)行的,當(dāng)程序順序執(zhí)行時(shí),下一條指令的地

1 引言

RISC CPU的設(shè)計(jì)當(dāng)中,轉(zhuǎn)移指令的處理對(duì)處理器的性能的影響非常關(guān)鍵。轉(zhuǎn)移指令決定著程序的執(zhí)行順序,在程序中的使用頻率很高。RISC CPU中程序是以流水線(xiàn)的方式執(zhí)行的,當(dāng)程序順序執(zhí)行時(shí),下一條指令的地址與前一條指令的內(nèi)容無(wú)關(guān) ;而在執(zhí)行轉(zhuǎn)移指令時(shí)要根據(jù)轉(zhuǎn)移指令的執(zhí)行結(jié)果來(lái)確定下一條指令的地址,也就是說(shuō)下一條指令的地址在轉(zhuǎn)移指令執(zhí)行之前是未知的,造成流水線(xiàn)的不連貫,影響了CPU的效率。

轉(zhuǎn)移指令處理的方法很多,可分為預(yù)測(cè)法和非預(yù)測(cè)法,預(yù)測(cè)法又包含靜態(tài)預(yù)測(cè)和動(dòng)態(tài)預(yù)測(cè),靜態(tài)預(yù)測(cè)如總預(yù)測(cè)跳轉(zhuǎn)、正向不跳轉(zhuǎn)反向跳轉(zhuǎn),動(dòng)態(tài)預(yù)測(cè)如2比特計(jì)數(shù)器(2BC) 、BTC;非預(yù)測(cè)法如延時(shí)跳轉(zhuǎn)等[1]。這些基本方法合理組合之后可以得到很好的效果。

本文介紹的RISC CPU對(duì)轉(zhuǎn)移指令的處理方法,為5級(jí)流水線(xiàn)作業(yè),分別是取指、譯碼、執(zhí)行、訪存、回寫(xiě),對(duì)轉(zhuǎn)移指令的處理在取指級(jí)和譯碼級(jí)完成;譯碼級(jí)給出轉(zhuǎn)移指令所包含的詳細(xì)信息,取指級(jí)包含有地址計(jì)算單元,轉(zhuǎn)移目標(biāo)Cache (BTC),跳轉(zhuǎn)判斷單元等。對(duì)轉(zhuǎn)移指令的處理使用了延時(shí)跳轉(zhuǎn)、2BC以及BTC方法。

2 轉(zhuǎn)移指令的原理

該RISC CPU的指令集中包含有條件轉(zhuǎn)移指令和非條件轉(zhuǎn)移指令。所有的轉(zhuǎn)移指令均使用延時(shí)轉(zhuǎn)移,每條轉(zhuǎn)移指令后面跟隨一條延時(shí)槽指令;采用2BC預(yù)測(cè)條件轉(zhuǎn)移是否跳轉(zhuǎn),而B(niǎo)TC則保存轉(zhuǎn)移目標(biāo)為固定地址的轉(zhuǎn)移指令執(zhí)行后的信息。以下分別介紹在該RISC CPU設(shè)計(jì)中轉(zhuǎn)移指令的設(shè)計(jì)以及延時(shí)轉(zhuǎn)移、BTC、2BC的具體實(shí)現(xiàn)方法。

2.1 轉(zhuǎn)移指令類(lèi)型及格式

該RISC CPU的指令集中包含條件轉(zhuǎn)移指令(BCC)和非條件轉(zhuǎn)移指令(CALL和RET),其編碼格式為圖1所示。CALL指令包含2位的操作碼和30位的絕對(duì)地址。BCC指令包含8位操作碼, 4位條件碼(Condition Code),19位偏移量以及1位用來(lái)區(qū)分指令是否帶A參數(shù)(即ANNUL操作)。所有的BCC指令使用相同的操作碼,不同的BCC指令用條件碼來(lái)區(qū)分,共有16類(lèi)BCC指令;偏移量為帶符號(hào)數(shù),在低位用00擴(kuò)展后可以對(duì)±220的相對(duì)地址尋址。RET指令包含8位的操作碼和兩個(gè)5位的寄存器地址。


2.2 延時(shí)轉(zhuǎn)移

在該RISC CPU中,由于轉(zhuǎn)移指令只有在譯碼級(jí)才被識(shí)別,跳轉(zhuǎn)與否在譯碼級(jí)才能決定,因此在取下一條指令之前必須等待一個(gè)時(shí)鐘周期。為了減少流水線(xiàn)中的氣泡,緊跟轉(zhuǎn)移指令后面插一條與跳轉(zhuǎn)不相關(guān)的指令,即延時(shí)槽指令,不管跳轉(zhuǎn)是否發(fā)生,該指令都執(zhí)行。延時(shí)槽指令的插入由編譯器完成,當(dāng)編譯器找不出這樣的指令時(shí),就插一條NOP指令??紤]到減輕編譯器的難度,我們也采用了帶 A參數(shù)的轉(zhuǎn)移:當(dāng)指令帶有A參數(shù)時(shí),延時(shí)槽指令從轉(zhuǎn)移目標(biāo)程序中取出,因此轉(zhuǎn)移發(fā)生時(shí),延時(shí)槽指令執(zhí)行,而轉(zhuǎn)移不發(fā)生時(shí),則禁止延時(shí)槽指令進(jìn)入譯碼級(jí)。因一般而言非條件轉(zhuǎn)移指令出現(xiàn)的頻率遠(yuǎn)低于條件轉(zhuǎn)移指令出現(xiàn)的頻率,非條件轉(zhuǎn)移指令的延時(shí)槽指令相對(duì)來(lái)說(shuō)容易找到,所以非條件轉(zhuǎn)移指令不采用A參數(shù)選項(xiàng),而條件轉(zhuǎn)移指令采用A參數(shù)選項(xiàng)。

2.3 2BC與BTC的設(shè)計(jì)

2BC與BTC對(duì)提高轉(zhuǎn)移指令的執(zhí)行效率起重要的作用。在RISC CPU中,轉(zhuǎn)移指令執(zhí)行一次后,有很大的概率會(huì)執(zhí)行更多次。對(duì)于轉(zhuǎn)移目標(biāo)為固定地址的轉(zhuǎn)移指令(BCC和CALL),在其第一次執(zhí)行時(shí)使用BTC存儲(chǔ)相關(guān)的信息,當(dāng)再次執(zhí)行時(shí),直接讀出這些信息,控制程序的執(zhí)行順序,而不需要轉(zhuǎn)移指令本身進(jìn)流水線(xiàn)。這可大大提高效率,但對(duì)于轉(zhuǎn)移目標(biāo)不確定的間接轉(zhuǎn)移指令(如RET),BTC是無(wú)效的。另外,條件轉(zhuǎn)移指令(BCC)是否跳轉(zhuǎn)也是不確定的,本設(shè)計(jì)中采用2BC進(jìn)行預(yù)測(cè)。

BTC為全相聯(lián)Cache,總共有16個(gè)單元,每個(gè)單元包含的信息有:TAG存儲(chǔ)執(zhí)行過(guò)的轉(zhuǎn)移指令的地址、DI存儲(chǔ)延時(shí)槽指令、CC存儲(chǔ)條件碼、TP 存儲(chǔ)轉(zhuǎn)移指令類(lèi)型、AN存儲(chǔ)A參數(shù)攜帶標(biāo)志,HI存儲(chǔ)轉(zhuǎn)移執(zhí)行情況的歷史記錄,即2BC,VI指示行數(shù)據(jù)是否有效。BTC包含BTC存儲(chǔ)、BTC命中以及BTC檢查三種工作任務(wù)。以下分別介紹2BC以及每種任務(wù)下BTC的工作情況?!?

2.3.1 2BC的作用及工作原理

因?yàn)檗D(zhuǎn)移指令執(zhí)行一次之后,轉(zhuǎn)移目標(biāo)地址、延時(shí)槽指令都保存在BTC中了,當(dāng)該指令再次執(zhí)行時(shí),這些信息就直接從Cache讀出,因此在取指級(jí)就可以得到跳轉(zhuǎn)目標(biāo)地址和延時(shí)槽指令。對(duì)于非條件轉(zhuǎn)移指令,跳轉(zhuǎn)總是執(zhí)行,因此BTC命中時(shí)就可以直接決定下一條指令的地址為轉(zhuǎn)移目標(biāo)地址,而當(dāng)前周期DI被送到指令總線(xiàn)上;但對(duì)于條件轉(zhuǎn)移指令,跳轉(zhuǎn)與否是根據(jù)條件碼和ALU的標(biāo)志位來(lái)決定的。如果轉(zhuǎn)移指令前面一條指令的執(zhí)行結(jié)果改變標(biāo)志位,而當(dāng)BTC命中時(shí)該指令還在譯碼級(jí),則跳轉(zhuǎn)與否需要等待一個(gè)時(shí)鐘周期才能決定。為了避免因?yàn)榈却斐闪魉€(xiàn)的停頓,采用2BC當(dāng)前的狀態(tài)預(yù)測(cè)跳轉(zhuǎn)是否執(zhí)行,在接下來(lái)的時(shí)鐘周期,標(biāo)志位有效之后,再檢查預(yù)測(cè)是否正確,如果不正確,就進(jìn)行更正。當(dāng)預(yù)測(cè)準(zhǔn)確時(shí),采用2BC 與BTC可以使轉(zhuǎn)移指令的執(zhí)行時(shí)間縮短一個(gè)周期。即使預(yù)測(cè)不準(zhǔn)確,與不采用預(yù)測(cè)相比也不會(huì)有損失。2BC的工作原理如圖2所示,初始值為Nx(第一次不跳轉(zhuǎn)執(zhí)行)或Tx(第一次跳轉(zhuǎn)執(zhí)行),t表示跳轉(zhuǎn)執(zhí)行,n表示跳轉(zhuǎn)不執(zhí)行。當(dāng)HI為N或Nx時(shí),預(yù)測(cè)跳轉(zhuǎn)不發(fā)生;當(dāng)HI為T(mén)或Tx時(shí),預(yù)測(cè)跳轉(zhuǎn)發(fā)生。


2.3.2 BTC存儲(chǔ)

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

2.3.3 BTC命中

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


2.3.4 BTC檢查

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


3 結(jié)論

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

本文中,小編將對(duì)CPU中央處理器予以介紹,如果你想對(duì)它的詳細(xì)情況有所認(rèn)識(shí),或者想要增進(jìn)對(duì)CPU中央處理器的了解程度,不妨請(qǐng)看以下內(nèi)容哦。

關(guān)鍵字: CPU 中央處理器 頻率

在這篇文章中,小編將為大家?guī)?lái)CPU的相關(guān)報(bào)道。如果你對(duì)本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: CPU 中央處理器 倍頻

今天,小編將在這篇文章中為大家?guī)?lái)CPU中央處理器的有關(guān)報(bào)道,通過(guò)閱讀這篇文章,大家可以對(duì)它具備清晰的認(rèn)識(shí),主要內(nèi)容如下。

關(guān)鍵字: CPU 中央處理器 外頻

CPU中央處理器將是下述內(nèi)容的主要介紹對(duì)象,通過(guò)這篇文章,小編希望大家可以對(duì)它的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: CPU 中央處理器 緩存

北京2022年10月19日 /美通社/ -- 隨著云計(jì)算、大數(shù)據(jù)的普及發(fā)展,過(guò)去的"云"是服務(wù)于大企業(yè)的計(jì)算模型,而十多年過(guò)去了,越來(lái)越多的應(yīng)用及業(yè)務(wù)走上"云端",對(duì)計(jì)算核心數(shù)需求...

關(guān)鍵字: ARM 大數(shù)據(jù) 云游戲 CPU

摘要:為解決傳統(tǒng)自動(dòng)化生產(chǎn)線(xiàn)生產(chǎn)效率低、自動(dòng)化程度低、生產(chǎn)線(xiàn)復(fù)雜等問(wèn)題,設(shè)計(jì)了一種自動(dòng)化程度高且簡(jiǎn)單的自動(dòng)化機(jī)械手臂,并根據(jù)設(shè)計(jì)進(jìn)行仿真實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,該設(shè)計(jì)在自動(dòng)化生產(chǎn)實(shí)踐中取得了較好的效果,提高了生產(chǎn)效率,達(dá)到了...

關(guān)鍵字: 機(jī)械手臂 設(shè)計(jì) 仿真

在這篇文章中,小編將對(duì)CPU中央處理器的相關(guān)內(nèi)容和情況加以介紹以幫助大家增進(jìn)對(duì)CPU中央處理器的了解程度,和小編一起來(lái)閱讀以下內(nèi)容吧。

關(guān)鍵字: CPU 中央處理器 晶圓

在桌面級(jí)處理器上,AMD多年來(lái)一直在多核上有優(yōu)勢(shì),不過(guò)12代酷睿開(kāi)始,Intel通過(guò)P、E核異構(gòu)實(shí)現(xiàn)了反超,13代酷睿做到了24核32線(xiàn)程,核心數(shù)已經(jīng)超過(guò)了銳龍7000的最大16核。在服務(wù)器處理器上,AMD優(yōu)勢(shì)更大,64...

關(guān)鍵字: AMD CPU Intel EUV

華為麒麟芯片(HUAWEI Kirin)是華為技術(shù)有限公司于2019年9月6日在德國(guó)柏林和北京同時(shí)發(fā)布的一款新一代旗艦芯片。華為麒麟在3G芯片大戰(zhàn)中,扮演了“黑馬”的角色。

關(guān)鍵字: 麒麟 CPU 華為Mate 50

據(jù)業(yè)內(nèi)信息,近日ADM的一份內(nèi)部報(bào)告顯示,ADM正在計(jì)劃降低其銳龍 7000 CPU的生產(chǎn)計(jì)劃?,F(xiàn)階段全球市場(chǎng)PC的低迷和銷(xiāo)量下滑,再加上AM5平臺(tái)整體反響不佳等等一系列原因?qū)е翧DM采取這一行動(dòng)計(jì)劃。

關(guān)鍵字: PC ADM 銳龍 7000 CPU

單片機(jī)

21600 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉