欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置、方法和處理器的制作方法

文檔序號:6340055閱讀:171來源:國知局
專利名稱:一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置、方法和處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器體系結(jié)構(gòu)技術(shù)領(lǐng)域,特別是指一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置、方法和處理器。
背景技術(shù)
微處理器體系結(jié)構(gòu)中,在一些對實時要求特別嚴厲的場合,比如有些數(shù)據(jù)處理及通訊中,實時要求較一些其它場合更為嚴格,這些微處理器中的控制器的設(shè)計通常以設(shè)計簡單,易于實現(xiàn),流水線效率高為主要設(shè)計目標(biāo)。在這類控制器的指令設(shè)計中,通常以較常見的5級流水的精簡指令集處理器為藍本對其進行設(shè)計。5級流水的精簡指令集處理器是一種經(jīng)典結(jié)構(gòu)的處理器,技術(shù)成熟,實現(xiàn)簡單,指令處理高效。這類處理器的跳轉(zhuǎn)指令通??梢苑Q為兩分支指令,即當(dāng)跳轉(zhuǎn)條件為真時跳轉(zhuǎn)到分支地址執(zhí)行;否則,當(dāng)跳轉(zhuǎn)條件為假時,程序繼續(xù)向下執(zhí)行。參照圖1的示例,假設(shè)某一程序有類似圖1的判斷分支結(jié)構(gòu)即程序有6個分支C、 E、G、I和H分支,每個分支都在一定的條件下執(zhí)行,其中
C分支執(zhí)行的條件是A節(jié)點為真,否則不予執(zhí)行; E分支執(zhí)行的條件是B節(jié)點為真,否則不予執(zhí)行; G分支執(zhí)行的條件是D節(jié)點為真,否則不予執(zhí)行; I分支執(zhí)行的條件是F節(jié)點為真,否則執(zhí)行H分支。A、B、D和F節(jié)點構(gòu)成了 CEGIH分支執(zhí)行的條件。在兩分支指令的處理方式中,I分支的判決路徑由ABDF構(gòu)成,具體判斷過程如下 首先判斷A節(jié)點,由A節(jié)點決定是否要執(zhí)行C分支,接著判斷B節(jié)點,由B節(jié)點決定是
否要執(zhí)行E分支,緊接著判斷D節(jié)點,由D節(jié)點決定是否要執(zhí)行G分支,最后判斷F節(jié)點,來決定是否要進入I分支??梢?,I分支的執(zhí)行路徑是類似A (C)B (E)D (G)F (I)的路徑,在最壞情況下, A、B、D節(jié)點均為假,此時判斷路徑最長,即經(jīng)過A、B、D三次判斷為假后最后才判斷到I,這是比較大的浪費。圖1僅僅是示出了帶有4個節(jié)點的分支路徑情況,在更多的分支路徑中,類似的判斷浪費更加嚴重。在數(shù)據(jù)處理及通訊中,對實時解碼的要求常常使得這樣的判斷浪費顯得不能接受,有效地縮短這樣的判斷浪費就顯得特別重要。圖2是應(yīng)用適用于超長跳轉(zhuǎn)路徑的高效分支跳轉(zhuǎn)指令的判斷路徑圖,該判斷路徑是實現(xiàn)圖1相同的功能,依然是假設(shè)I分支要執(zhí)行的情況,在A節(jié)點中I分支位為真時,立刻就可執(zhí)行I分支,I分支執(zhí)行完成后,進入B節(jié)點判斷,在B節(jié)點判斷到一個真值分支后, 進入該真值分支,該真值分支執(zhí)行完成后,再進入下一個節(jié)點D判斷,在D節(jié)點判斷到一個真值分支,進入該真值分支,該真值分支執(zhí)行完成后,再進入下一個節(jié)點F判斷,在F節(jié)點判斷下一個真值分支,執(zhí)行完成后,最后進入退出分支。上面A,B,D,F(xiàn)節(jié)點判斷過程中,有任何一個節(jié)點假的話,即刻進入退出分支,有任何一個節(jié)點中有真值位,即刻進入該真值分值。事實上,在上面A節(jié)點的判斷中,一但進入I分支隨后從I分支退出后,已不會再進入D、 F節(jié)點的判斷,因為進入B節(jié)點時會發(fā)現(xiàn)所有節(jié)點位均已為假,隨即會進入退出分支。因此在應(yīng)用了適用于超長跳轉(zhuǎn)路徑的高效分支跳轉(zhuǎn)指令后,程序的判斷路徑上雖然仍有四個節(jié)點A、B、D和F節(jié)點,但與圖1不同的是,每個節(jié)點有兩個及以上的分支,每次A、B、D和F節(jié)點的判斷都能夠進入一個有效的分支,從而極大的縮短了圖1中兩分支指令造成的判斷浪費;但該圖2所示的路徑圖中,I分支要執(zhí)行時還是存在四個節(jié)點均判斷的情況;因此,現(xiàn)有兩分支指令技術(shù)在超長跳轉(zhuǎn)路徑中存在嚴重的判斷浪費。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置、方法和處理器,使得每次判斷都會進入一個有效的分支,在超長跳轉(zhuǎn)路徑可以有效減少兩分支跳轉(zhuǎn)指令造成的判斷浪費。為解決上述技術(shù)問題,本發(fā)明的實施例提供一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置, 包括
節(jié)點標(biāo)志寄存器單元,用于保存節(jié)點判斷信息;
節(jié)點預(yù)測寄存器單元,用于根據(jù)第一指令,加載所述節(jié)點標(biāo)志寄存器單元中保存的所述節(jié)點判斷信息;
查找單元,用于在所述節(jié)點預(yù)測寄存器單元中查找所述節(jié)點判斷信息的第一個被置位的位;
執(zhí)行單元,用于將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行; 清零單元,用于在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)第二指令,將所述節(jié)點預(yù)測寄存器單元中該分支對應(yīng)的所述第一個被置位的位清零。其中,所述查找單元具體用于,在所述節(jié)點預(yù)測寄存器單元中,按照從高位到低位的順序,查找所述節(jié)點判斷信息的第一個被置位的位。其中,所述第一指令為所述路徑的入口指令;所述分支跳轉(zhuǎn)處理裝置還包括 入口指令地址寄存器單元,用于存放所述第一指令的地址;
所述執(zhí)行單元將所述查找單元找到的所述第一個被置位的位相對于所述第一指令的地址偏移量,與所述第一指令的地址相加,得到所述第一個被置位的位對應(yīng)的分支的絕對地址,將所述跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述絕對地址對應(yīng)的所述分支執(zhí)行。其中,所述第一指令為CASE指令。其中,所述第二指令為NEXT指令,所述NEXT指令為所述跳轉(zhuǎn)路徑中查找下一個分支的指令;
所述清零單元在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)所述NEXT指令, 將所述節(jié)點預(yù)測寄存器單元中的該分支對應(yīng)的所述第一個被置位的位清零。本發(fā)明的實施例還提供一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理方法,包括如下步驟 根據(jù)第一指令,獲取跳轉(zhuǎn)路徑中的節(jié)點判斷信息;
查找所述節(jié)點判斷信息中的第一個被置位的位; 將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行;
在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)第二指令,將執(zhí)行完畢的所述
5分支對應(yīng)的所述第一個被置位的位清零,并繼續(xù)查找所述節(jié)點判斷信息中的第一個被置位的位。其中,查找所述節(jié)點判斷信息中的第一個被置位的位的步驟具體為 按照從高位到低位的順序,查找所述節(jié)點判斷信息的第一個被置位的位。其中,所述第一指令為所述路徑的入口指令;
所述將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行具體為 將所述第一個被置位的位相對于所述第一指令的地址偏移量,與所述第一指令的地址相加,得到所述第一個被置位的位對應(yīng)的分支的絕對地址,將所述跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述絕對地址對應(yīng)的所述分支執(zhí)行。其中,所述第一指令為CASE指令。其中,所述第二指令為NEXT指令,所述NEXT指令為所述跳轉(zhuǎn)路徑中查找下一個分支的指令。其中,所述節(jié)點判斷信息為分支執(zhí)行的邏輯值,當(dāng)所述邏輯值為真時,所述分支對應(yīng)的位為第一個被置位的位。本發(fā)明的實施例還提供一種處理器,該處理器包括上述的分支跳轉(zhuǎn)處理裝置。本發(fā)明的上述技術(shù)方案的有益效果如下
上述方案中,節(jié)點預(yù)測寄存器單元根據(jù)第一指令,加載所述節(jié)點標(biāo)志寄存器單元中保存的所述節(jié)點判斷信息,然后查找所述節(jié)點判斷信息的第一個被置位的位,并將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行;與現(xiàn)有技術(shù)中,每一個節(jié)點都需要參與判斷的方案相比;本發(fā)明的方案可以在超長路輕的分支跳轉(zhuǎn)設(shè)計中,直接跳轉(zhuǎn)到一個有效的分支進行執(zhí)行,即上述第一個被置位的位對應(yīng)的分支執(zhí)行,使得每次判斷都會進入一個有效的分支,從而有效減少兩分支跳轉(zhuǎn)指令在超長跳轉(zhuǎn)路徑中造成的判斷浪費。


圖1為跳轉(zhuǎn)路徑的第一種形態(tài)示例圖; 圖2為跳轉(zhuǎn)路徑的第二種形態(tài)示例圖3為本發(fā)明的跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置結(jié)構(gòu)框圖4為圖3所示分支跳轉(zhuǎn)處理裝置適用于超長跳轉(zhuǎn)路徑的高效分支跳轉(zhuǎn)指令CASE和 NEXT指令的程序執(zhí)行框架圖。
具體實施例方式為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例進行詳細描述。本發(fā)明針對現(xiàn)有技術(shù)中,兩分支指令技術(shù)在超長跳轉(zhuǎn)路徑中存在嚴重的判斷浪費的問題,提供一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置、方法和處理器,使得每次判斷都會進入一個有效的分支,在超長跳轉(zhuǎn)路徑可以有效減少兩分支跳轉(zhuǎn)指令造成的判斷浪費。如圖3所示,本發(fā)明的跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置,包括 節(jié)點標(biāo)志寄存器單元11,用于保存節(jié)點判斷信息;
節(jié)點預(yù)測寄存器單元12,用于根據(jù)第一指令,加載所述節(jié)點標(biāo)志寄存器單元11中保存的所述節(jié)點判斷信息;
查找單元13,用于在所述節(jié)點預(yù)測寄存器單元12中查找所述節(jié)點判斷信息的第一個被置位的位;
執(zhí)行單元16,用于將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行; 清零單元14,用于在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)第二指令,將所述節(jié)點預(yù)測寄存器單元12中該分支對應(yīng)的所述第一個被置位的位清零。本發(fā)明的該實施例,通過節(jié)點預(yù)測寄存器單元12根據(jù)第一指令,加載所述節(jié)點標(biāo)志寄存器單元11中保存的所述節(jié)點判斷信息,并查找所述節(jié)點判斷信息的第一個被置位的位,并將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行;與現(xiàn)有技術(shù)中,每一個節(jié)點都需要參與判斷的方案相比;本發(fā)明的該實施例可以在超長路輕的分支跳轉(zhuǎn)設(shè)計中, 直接跳轉(zhuǎn)到一個有效的分支進行執(zhí)行,即上述第一個被置位的位對應(yīng)的分支執(zhí)行,使得每次判斷都會進入一個有效的分支,在超長跳轉(zhuǎn)路徑可以有效減少兩分支跳轉(zhuǎn)指令造成的判斷浪費。具體來講,上述查找單元13具體用于,在所述節(jié)點預(yù)測寄存器單元12中,按照從高位到低位的順序,查找所述節(jié)點判斷信息的第一個被置位的位。其中,所述第一指令為所述路徑的入口指令;所述分支跳轉(zhuǎn)處理裝置還包括 入口指令地址寄存器單元15,用于存放所述第一指令的地址;
所述執(zhí)行單元16將所述查找單元13找到的所述第一個被置位的位相對于所述第一指令的地址偏移量,與所述第一指令的地址相加,得到所述第一個被置位的位對應(yīng)的分支的絕對地址,將所述跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述絕對地址對應(yīng)的所述分支執(zhí)行。其中,這里的第一指令在具體實現(xiàn)時,可以為CASE指令,此時該入口指令地址寄存器單元15可以為如圖中所示的CASE指令地址寄存器單元;當(dāng)然在具體實現(xiàn)時,還可以采用其它的指令,如BEGIN指令等,只要能表示路徑的入口指令,且該入口指令的地址可以作為整個路徑的起始基地址即可。所述第二指令為NEXT指令,所述NEXT指令為所述跳轉(zhuǎn)路徑中查找下一個分支的指令;
所述清零單元14在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)所述NEXT指令,將所述節(jié)點預(yù)測寄存器單元12中的該分支對應(yīng)的所述第一個被置位的位清零。該方案適用于CASE,NEXT指令的設(shè)計框架。下面結(jié)合具體的實施例來說明上述圖3所示裝置的具體實現(xiàn)過程
如圖4所示,為超長跳轉(zhuǎn)路徑的高效分支跳轉(zhuǎn)指令CASE和NEXT指令的程序執(zhí)行框架圖,其中,該程序跳轉(zhuǎn)分支入口組織為向量表形式,統(tǒng)一存放在CASE指令41的下一條指令地址處42,跳轉(zhuǎn)分支執(zhí)行體按照跳轉(zhuǎn)分支入口的形式順序放在隨后的位置43。上述各個單元具體實施步驟如下
(1)發(fā)出CASE指令,該CASE指令加載節(jié)點標(biāo)志寄存器單元11中的節(jié)點判斷信息到節(jié)點預(yù)測寄存器單元12中;
(2)查找單元13從高位到低位依次查找節(jié)點預(yù)測寄存器單元12中第一個被置位的位, 若找到,給出該第一個被置位的位在節(jié)點預(yù)測寄存器單元12中的偏移量,即該第一個被置位的位對應(yīng)的分支相對于路徑入口指令(CASE指令)的地址偏移量與CASE指令地址寄存
7器單元15中的CASE指令的地址相加,即為該第一個被置位的位對應(yīng)的分支的絕對地址;
(3)根據(jù)該絕對地址跳轉(zhuǎn)到該第一個被置位的位對應(yīng)的分支進行處理,同時由清零單元14將節(jié)點預(yù)測寄存器單元12中的所述第一個被置位的位清零,當(dāng)分支處理完成后,執(zhí)行 NEXT指令,找到下一個目標(biāo)分支(即下一個第一個被置位的位對應(yīng)的分支),
(4)重復(fù)上述(2)- (3)步驟,直到節(jié)點預(yù)測寄存器單元12中的其它位(除第0位外) 全部被清零單元14清零;轉(zhuǎn)至出口分支,節(jié)點判斷結(jié)束。下面通過分支判斷的具體過程來具體說明如何通過本發(fā)明的上述方案實現(xiàn)適應(yīng)于超長跳轉(zhuǎn)路徑的高效分支跳轉(zhuǎn)
例1 假設(shè)圖1中四個節(jié)點A,B, D,F(xiàn)在某刻其邏輯判斷真假情況如下
{A, B,D,F(xiàn) } = {0110}
即A,F(xiàn)為邏輯假,B,D為邏輯真,四個結(jié)點在程序中的先后順序排列為A,B,D,F(xiàn)。那么將節(jié)點標(biāo)志寄存器單元11中的高四位[n-l,n-2,n-3,n-4,exit]初始化為{0110},其余位 (除最低位外)[n-5,... 1]初始化0,而把最低位
置為1,那么程序可以按圖4所示框架進行
(1)首先執(zhí)行CASE指令41,實際上是將節(jié)點標(biāo)志寄存器單元11的內(nèi)容{011000···01} 加載到節(jié)點預(yù)測寄存器單元12中,同時CASE指令會通過查找單元13根據(jù)節(jié)點預(yù)測寄存器單元12的內(nèi)容判斷出第一個被置位的位,即第一個跳轉(zhuǎn)分支對應(yīng)的位,該判斷第一個被置位的位1的工作是由找查找單元13完成的,查找單元13僅需一個指令周期就可以發(fā)現(xiàn)第一個被置位的位1,判斷到節(jié)點預(yù)測寄存器單元12中從高位到低位的第2位即B_entry分支對應(yīng)的位為1 ;需要說明的是這里將節(jié)點判斷信息為真時,路徑可以跳轉(zhuǎn)的分支對應(yīng)的位設(shè)置為1,否則設(shè)置為0,這種設(shè)置方式僅作為一種實例進行說明,而不用于限定本發(fā)明的方案,也可以將該節(jié)點判斷信息為真時,路徑可以中轉(zhuǎn)的分支對應(yīng)的位設(shè)置為其它值,只要能夠表示該分支在該節(jié)點判斷信息為真時,可以被執(zhí)行即可。(2)查找單元13輸出B_entry分支偏移量2,該B_entry偏移量是以路徑的入口地址CASE指令的地址為基地址的偏移量,如CASE指令的地址為0,則該B_entry以該CASE 指令的地址為基地址的偏移量就為2 ;將該B_entry的偏移量與CASE地址寄存器中的CASE 指令的地址相加,得到B_entry分支的絕對地址;
(3)執(zhí)行單元16根據(jù)該B_entry分支的絕對地址.,進入B_entry42執(zhí)行,執(zhí)行完成后,執(zhí)行NEXT指令43,該NEXT指令通知清零單元14清掉節(jié)點預(yù)測寄存器單元12中從高位到低位的第2位即B_entry分支對應(yīng)的位,為后續(xù)判斷做準(zhǔn)備,同時由查找單元13根據(jù)節(jié)點預(yù)測寄存器單元12中的內(nèi)容判斷下一個被置位的位,即下一個真值分支。這次判斷第一個被置位的位1的工作是由NEXT指令通知查找單元13完成的,查找單元13僅需一個指令周期就可以發(fā)現(xiàn)第一個被置位的位,當(dāng)然此次會找到第3位即D_entry分支對應(yīng)的位,下次指令將進入D_entry執(zhí)行;
(4)查找單元13輸出D_entry分支偏移量3,執(zhí)行單元16將該D_entry偏移量與CASE 指令地址寄存器單元15中的CASE指令的地址相加,得到D_entry分支的絕對地址;
(5)執(zhí)行單元16根據(jù)該D_entry分支的絕對地址,進入D_entry執(zhí)行,執(zhí)行完成后,執(zhí)行NEXT指令,該NEXT指令通知清零單元14清掉節(jié)點預(yù)測寄存器單元12中從高位到低位的第3位即D_entry分支對應(yīng)的位,為后續(xù)判斷做準(zhǔn)備,同時由查找單元13根據(jù)節(jié)點預(yù)測寄存器單元12中的內(nèi)容判斷出下一個被置位的位,即下一個真值分支。這次判斷第一個被置位的位1的工作是由NEXT指令通知查找單元13完成的,查找單元13僅需一個指令周期就可以發(fā)現(xiàn)第一個被置位的位1,當(dāng)然這次會發(fā)現(xiàn)節(jié)點預(yù)測寄存器單元12的最低位為1, 該位對應(yīng)EXIT分支,下次指令將進入EXIT_entry執(zhí)行;
(6)進入EXIT_entry執(zhí)行,其中,EXIT_entry為出口分支,整個判斷流程結(jié)束。例2 假設(shè)圖2中四個節(jié)點A,B, D,F(xiàn).在某刻其邏輯判斷真假情況如下 {A, B, D, F } = {0001}
即A,B,D為邏輯假,F(xiàn)為邏輯真。四個結(jié)點在程序中的先后順序排列為A,B,D,F(xiàn)。那么將節(jié)點標(biāo)志寄存器單元11中的高四位[n-1,n-2, n-3, n-4]初始化為{0001},其余位 [n-5,. . . 1]初始化0,而把最低位
置為1。那么程序可以按圖4所示框架進行
(1)首先執(zhí)行CASE指令41,實際上是將節(jié)點標(biāo)志寄存器單元11的內(nèi)容{000100···01} 加載到節(jié)點預(yù)測寄存器單元12中,同時CASE指令會通過查找單元13根據(jù)節(jié)點預(yù)測寄存器單元12中的內(nèi)容,判斷第一個被置位的位,即第一個跳轉(zhuǎn)分支,當(dāng)然本次會判斷到節(jié)點預(yù)測寄存器單元12中從高位到低位的第4位為1,該位對應(yīng)F_entry分支;
(2)查找單元13輸出F_entry分支偏移量5,執(zhí)行單元16將該F_entry偏移量與CASE 指令地址寄存器單元15中的CASE指令的地址相加,得到F_entry分支的絕對地址;
(3)執(zhí)行單元16根據(jù)F_entry分支的絕對地址進入F_entry42分支執(zhí)行,執(zhí)行完成后,執(zhí)行NEXT指令43,該NEXT指令通知清零單元14清掉節(jié)點預(yù)測寄存器單元12中從高位到低位的第4位即F_entry分支對應(yīng)的位,為后續(xù)判斷做準(zhǔn)備,同時由查找單元13根據(jù)節(jié)點預(yù)測寄存器單元12中的內(nèi)容判斷下一個被置位的位,即下一個真值分支。這次判斷第一個被置位的位1的工作是由NEXT指令通知查找單元13完成的,查找單元13僅需一個指令周期就可以發(fā)現(xiàn)第一個被置位的位1,當(dāng)然會發(fā)現(xiàn)節(jié)點預(yù)測寄存器單元12的最低位為1, 該位對應(yīng)EXIT分支,下次指令將進入EXIT_entry執(zhí)行;
(4)進入EXIT_entry執(zhí)行,事實上,EXIT_entry為出口分支,這樣將繼續(xù)程序的后續(xù)進行。綜上所述,本發(fā)明的上述實施例,克服了傳統(tǒng)兩分支指令在超長判斷路徑中的不足,使得每次判斷都會進入一個有效的執(zhí)行分支,在超長跳轉(zhuǎn)路徑中可以有效減少兩分支跳轉(zhuǎn)指令造成的判斷浪費,分支判斷效率明顯提高,可行性好。需要說明的是上述例1、例2所示的實現(xiàn)實例僅僅用于說明本發(fā)明的裝置在分支跳轉(zhuǎn)處理中的原理,而不用于限定本發(fā)明的方案,在超長路徑的分支跳轉(zhuǎn)處理中,還可以舉出若干類似的實現(xiàn)實例,在此不再一一說明。與上述中轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置相應(yīng)的,本發(fā)明的實施例還提供一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理方法,包括如下步驟
步驟Si,根據(jù)第一指令,獲取跳轉(zhuǎn)路徑中的節(jié)點判斷信息; 步驟S2,查找所述節(jié)點判斷信息中的第一個被置位的位; 步驟S3,將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行; 步驟S4,在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)第二指令,將執(zhí)行完畢的所述分支對應(yīng)的所述第一個被置位的位清零,并繼續(xù)查找所述節(jié)點判斷信息中的第一個被置位的位。
其中,上述步驟S1-S4分別可以由相應(yīng)的寄存器來執(zhí)行,也可以由相應(yīng)的功能模塊來執(zhí)行,可根據(jù)實際情況進行設(shè)計。其中,上述步驟S2可以具體為
按照從高位到低位的順序,查找所述節(jié)點判斷信息的第一個被置位的位。進一步,在CASE指令和NEXT指令框架設(shè)計中,所述第一指令為CASE指令,所述 CASE指令為所述路徑的入口指令;
將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行具體為 將所述第一個被置位的位相對于所述CASE指令的地址偏移量,與所述CASE指令的地址相加,得到所述第一個被置位的位對應(yīng)的分支的絕對地址,將所述跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述絕對地址對應(yīng)的所述分支執(zhí)行。在具體實現(xiàn)時,第一指令當(dāng)然還可以采用其它的指令,如 BEGIN指令等,只要能表示路徑的入口指令,且該入口指令的地址可以作為整個路徑的起始基地址即可。所述第二指令為NEXT指令,所述NEXT指令為所述跳轉(zhuǎn)路徑中查找下一個分支的指令。所述節(jié)點判斷信息為分支執(zhí)行的邏輯值,當(dāng)所述邏輯值為真時,所述分支對應(yīng)的位為第一個被置位的位。需要說明的是上述裝置的具體實現(xiàn)方法和實例均適用于該方法實施例中,也能達到相同的技術(shù)效果,在此不再贅述。與此同時,本發(fā)明的實施例還提供一種處理器,該處理器可以包括上述圖3 —圖4 所示的跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置,其中,上述有關(guān)于跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置的所有實現(xiàn)方式均適用于該處理器的實施例中,也能達到相同的技術(shù)效果,在此不再贅述。以上所述是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
10
權(quán)利要求
1.一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置,其特征在于,包括節(jié)點標(biāo)志寄存器單元,用于保存節(jié)點判斷信息;節(jié)點預(yù)測寄存器單元,用于根據(jù)第一指令,加載所述節(jié)點標(biāo)志寄存器單元中保存的所述節(jié)點判斷信息;查找單元,用于在所述節(jié)點預(yù)測寄存器單元中查找所述節(jié)點判斷信息的第一個被置位的位;執(zhí)行單元,用于將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行;清零單元,用于在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)第二指令,將所述節(jié)點預(yù)測寄存器單元中該分支對應(yīng)的所述第一個被置位的位清零。
2.根據(jù)權(quán)利要求1所述的分支跳轉(zhuǎn)處理裝置,其特征在于,所述查找單元具體用于,在所述節(jié)點預(yù)測寄存器單元中,按照從高位到低位的順序,查找所述節(jié)點判斷信息的第一個被置位的位。
3.根據(jù)權(quán)利要求1所述的分支跳轉(zhuǎn)處理裝置,其特征在于,所述第一指令為所述路徑的入口指令;所述分支跳轉(zhuǎn)處理裝置還包括入口指令地址寄存器單元,用于存放所述第一指令的地址;所述執(zhí)行單元將所述查找單元找到的所述第一個被置位的位相對于所述第一指令的地址偏移量,與所述第一指令的地址相加,得到所述第一個被置位的位對應(yīng)的分支的絕對地址,將所述跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述絕對地址對應(yīng)的所述分支執(zhí)行。
4.根據(jù)權(quán)利要求3所述的分支跳轉(zhuǎn)處理裝置,其特征在于,所述第一指令為CASE指令。
5.根據(jù)權(quán)利要求3或4所述的分支跳轉(zhuǎn)處理裝置,其特征在于,所述第二指令為NEXT 指令,所述NEXT指令為所述跳轉(zhuǎn)路徑中查找下一個分支的指令;所述清零單元在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)所述NEXT指令, 將所述節(jié)點預(yù)測寄存器單元中的該分支對應(yīng)的所述第一個被置位的位清零。
6.一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理方法,其特征在于,包括如下步驟根據(jù)第一指令,獲取跳轉(zhuǎn)路徑中的節(jié)點判斷信息;查找所述節(jié)點判斷信息中的第一個被置位的位;將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行;在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)第二指令,將執(zhí)行完畢的所述分支對應(yīng)的所述第一個被置位的位清零,并繼續(xù)查找所述節(jié)點判斷信息中的第一個被置位的位。
7.根據(jù)權(quán)利要求6所述的分支跳轉(zhuǎn)處理方法,其特征在于,查找所述節(jié)點判斷信息中的第一個被置位的位的步驟具體為按照從高位到低位的順序,查找所述節(jié)點判斷信息的第一個被置位的位。
8.根據(jù)權(quán)利要求6或7所述的分支跳轉(zhuǎn)處理方法,其特征在于,所述第一指令為所述路徑的入口指令;所述將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行具體為將所述第一個被置位的位相對于所述第一指令的地址偏移量,與所述第一指令的地址相加,得到所述第一個被置位的位對應(yīng)的分支的絕對地址,將所述跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述絕對地址對應(yīng)的所述分支執(zhí)行。
9.根據(jù)權(quán)利要求8所述的分支跳轉(zhuǎn)處理方法,其特征在于,所述第一指令為CASE指令。
10.根據(jù)權(quán)利要求9所述的分支跳轉(zhuǎn)處理方法,其特征在于,所述第二指令為NEXT指令,所述NEXT指令為所述跳轉(zhuǎn)路徑中查找下一個分支的指令。
11.根據(jù)權(quán)利要求6所述的分支跳轉(zhuǎn)處理方法,其特征在于,所述節(jié)點判斷信息為分支執(zhí)行的邏輯值,當(dāng)所述邏輯值為真時,所述分支對應(yīng)的位為第一個被置位的位。
12.一種處理器,其特征在于,包括如權(quán)利要求1 一 5任一項所述的分支跳轉(zhuǎn)處理裝置。
全文摘要
本發(fā)明提供一種跳轉(zhuǎn)路徑的分支跳轉(zhuǎn)處理裝置、方法和處理器,其中,裝置包括節(jié)點標(biāo)志寄存器單元,用于保存節(jié)點判斷信息;節(jié)點預(yù)測寄存器單元,用于根據(jù)第一指令,加載所述節(jié)點標(biāo)志寄存器單元中保存的所述節(jié)點判斷信息;查找單元,用于在所述節(jié)點預(yù)測寄存器單元中查找所述節(jié)點判斷信息的第一個被置位的位;執(zhí)行單元,用于將跳轉(zhuǎn)路徑跳轉(zhuǎn)到所述第一個被置位的位對應(yīng)的分支執(zhí)行;清零單元,用于在所述第一個被置位的位對應(yīng)的分支執(zhí)行完畢后,根據(jù)第二指令,將所述節(jié)點預(yù)測寄存器單元中該分支對應(yīng)的所述第一個被置位的位清零。本發(fā)明的方案可以有效減少超長跳轉(zhuǎn)路徑中兩分支跳轉(zhuǎn)指令造成的判斷浪費。
文檔編號G06F9/38GK102566975SQ20101060721
公開日2012年7月11日 申請日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者李陸軍 申請人:北京國睿中數(shù)科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
浦江县| 高青县| 兴国县| 文水县| 东阿县| 浮梁县| 奎屯市| 确山县| 涟源市| 城市| 秀山| 蓬溪县| 武冈市| 丰城市| 沁水县| 武宁县| 泰和县| 郑州市| 安乡县| 湟中县| 新乡县| 兰州市| 邮箱| 神池县| 进贤县| 黄浦区| 江孜县| 日土县| 南乐县| 鄂伦春自治旗| 鄯善县| 子长县| 万荣县| 汤原县| 吴忠市| 日土县| 丹阳市| 文化| 汉寿县| 玉屏| 隆回县|