两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

具有分支控制的數(shù)據(jù)處理系統(tǒng)及其方法

文檔序號(hào):6416577閱讀:263來(lái)源:國(guó)知局
專利名稱:具有分支控制的數(shù)據(jù)處理系統(tǒng)及其方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及數(shù)據(jù)處理,更確切地說(shuō),涉及具有優(yōu)化分支控制的數(shù)據(jù)處理系統(tǒng)及其方法。
由于廣泛使用便攜式和手持應(yīng)用裝置,所以低功率設(shè)計(jì)技術(shù)在微處理器和微控制器設(shè)計(jì)中越來(lái)越重要。以上應(yīng)用裝置需要長(zhǎng)電池壽命和低系統(tǒng)成本。便攜式應(yīng)用裝置通常在兩種操作模式之間交替運(yùn)行(i)猝發(fā)模式,在該模式中執(zhí)行有效計(jì)算;和(ii)斷電模式(即睡眠模式),在該模式中系統(tǒng)睡眠等待出現(xiàn)新的計(jì)算事件。如果子系統(tǒng)(包括微處理器)僅僅消耗整個(gè)系統(tǒng)功耗的一小部分,則低成本和高性能就是子系統(tǒng)的設(shè)計(jì)目標(biāo)。
長(zhǎng)期以來(lái),分支被認(rèn)為是降低流水線處理機(jī)性能的主要因素。這是由于分支中斷了連續(xù)指令流這一事實(shí)。此外,通常僅能將分支深深轉(zhuǎn)化為執(zhí)行流水線。廣泛采用諸如分支預(yù)測(cè)和推測(cè)執(zhí)行之類的技術(shù)以降低分支的不利影響。不幸的是,這些技術(shù)通常需要大量硬件實(shí)現(xiàn)。其他的可選低成本方法需要改進(jìn)有關(guān)分支的性能。
用于優(yōu)化微處理器獲取的分支路徑的現(xiàn)有方法一直在使用。一種優(yōu)化執(zhí)行分支指令的現(xiàn)有方法叫作軟件循環(huán)回繞。在編譯時(shí),當(dāng)已知某個(gè)特定循環(huán)將執(zhí)行許多次時(shí),產(chǎn)生軟件循環(huán)回繞。軟件循環(huán)回繞復(fù)制循環(huán)內(nèi)的代碼,循環(huán)的迭代次數(shù)下降的倍數(shù)等于該代碼的復(fù)制次數(shù)。例如,如果在編譯時(shí)已知某個(gè)特定軟件循環(huán)將執(zhí)行100次,則可以放置兩份回繞循環(huán)內(nèi)包含的代碼,并且僅需執(zhí)行實(shí)際分支50次。然而,盡管這種技術(shù)能夠節(jié)省每次迭代的周期,但是創(chuàng)建了更大的靜態(tài)程序長(zhǎng)度。
另一種眾所周知的優(yōu)化分支處理的現(xiàn)有技術(shù)使用專用循環(huán)指令。將現(xiàn)有技術(shù)專用循環(huán)指令設(shè)計(jì)為在單一指令內(nèi)出現(xiàn)分支和遞減(或遞增)循環(huán)計(jì)數(shù)。因此,每次迭代節(jié)省一個(gè)時(shí)鐘周期。然而,每條專用循環(huán)指令需要唯一指令操作碼。因此,盡管使用專用分支指令能夠在每次迭代中節(jié)省一個(gè)時(shí)鐘周期,但其實(shí)現(xiàn)是以較大指令集為代價(jià)的。
另一種現(xiàn)有技術(shù)方法合并循環(huán)模式與專用循環(huán)指令。循環(huán)模式為一條指令,該指令表示上一條指令需要重復(fù)指定次數(shù)。這種實(shí)現(xiàn)避免獲取需要順序執(zhí)行許多次的指令。然而,這種技術(shù)需要存在專用循環(huán)指令,并且循環(huán)體只能包含一條指令。
因此,需要一種更通用的分支處理方法,該方法能夠?qū)?zhí)行程序循環(huán)所需的時(shí)鐘周期數(shù)降到最低。


圖1表示短反向分支(SBB)指令的指令格式。
圖2表示短正向分支(SFB)指令的指令格式。
圖3表示循環(huán)尾含有一條SBB的程序循環(huán)。
圖4以框圖的形式表示根據(jù)本發(fā)明的數(shù)據(jù)處理系統(tǒng)。
圖5以框圖的形式表示圖4的CPU 12。
圖6以部分框圖和部分邏輯圖的形式更詳細(xì)地表示圖5的地址生成單元30。
圖7以部分框圖和部分邏輯圖的形式更詳細(xì)地表示圖5的分支控制34。
圖8表示用于描述分支控制34的狀態(tài)機(jī)的操作的部分狀態(tài)圖。
圖9表示根據(jù)本實(shí)施方式的圖4的數(shù)據(jù)處理系統(tǒng)的各種信號(hào)的定時(shí)圖。
圖10表示含有一個(gè)SBB和一個(gè)SFB的程序循環(huán)。
圖11以部分框圖和部分邏輯圖的形式表示另一實(shí)施方式的圖5的分支控制34。
圖12表示根據(jù)本實(shí)施方式采用另一實(shí)施方式的圖4的數(shù)據(jù)處理系統(tǒng)的各種信號(hào)的定時(shí)圖。
圖1表示短反向分支指令(記為SBB)的指令格式。圖2表示短正向分支指令(記為SFB)的指令格式。SBB和SFB為條件或無(wú)條件PC相關(guān)分支指令??梢詫⒉煌种е噶?具有不同操作碼)統(tǒng)稱為SBB指令集或SFB指令集。
可以將以上指令劃分為兩個(gè)字段(i)操作碼,操作碼確定分支的類型;和(ii)分支位移-為形成分支目標(biāo)地址而添加到程序計(jì)數(shù)器(PC)的位移。對(duì)于SBB指令集而言,分支位移具有前導(dǎo)1,前導(dǎo)1表示該指令具有一個(gè)負(fù)的分支位移,當(dāng)添加到PC中時(shí),產(chǎn)生反向分支目標(biāo)。同樣,對(duì)于SFB指令集而言,分支位移具有前導(dǎo)0,前導(dǎo)0表示該指令具有一個(gè)正的分支位移。
可以將分支位移字段進(jìn)一步劃分為兩個(gè)字段(i)高位移字段,記為UD;和(ii)低位移字段,記為L(zhǎng)D。對(duì)于SBB而言,高位移字段全為1,對(duì)于SFB而言,高位移字段全為0。在某個(gè)實(shí)施方式中,SBB的LD字段與SFB的LD字段的寬度相同,即同為w位寬。根據(jù)定義,一條SBB具有有限的反向分支距離,用2w表示,其中w為L(zhǎng)D字段的寬度。同樣,一條SFB具有有限的正向分支距離,用2w表示。
圖3表示循環(huán)尾含有一條SBB指令的程序循環(huán)。SBB指令位于地址ASBB。SBB指令之后的指令表示位于地址AFT的失敗指令(IFT)。同樣,指令I(lǐng)FT之后的指令為位于地址AFT+1的指令I(lǐng)FT+1。
圖4以框圖的形式表示根據(jù)本發(fā)明之某一實(shí)施方式的數(shù)據(jù)處理器10。在某個(gè)實(shí)施方式中,數(shù)據(jù)處理器10包括一個(gè)中央處理機(jī)(CPU)12,存儲(chǔ)器14,總線接口組件16,以及其他組件18,這些部件利用總線20相互雙向連接??梢岳猛獠靠偩€26將總線接口組件16外連接到數(shù)據(jù)處理機(jī)10。利用一個(gè)或多個(gè)集成電路終端28可選地將其他組件18外連接到數(shù)據(jù)處理機(jī)10。利用一個(gè)或多個(gè)集成電路終端24可選地將存儲(chǔ)器14外連接到數(shù)據(jù)處理機(jī)10。利用一個(gè)或多個(gè)集成電路終端22可選地將中央處理機(jī)12外連接到數(shù)據(jù)處理機(jī)10。
仍然參照?qǐng)D4,本發(fā)明的其他實(shí)施方式可以使用任意結(jié)構(gòu)類型的數(shù)據(jù)處理機(jī)10。此外,數(shù)據(jù)處理機(jī)10可以完成各種各樣的操作。例如,數(shù)據(jù)處理機(jī)10可以使用RISC(精簡(jiǎn)指令集計(jì)算機(jī))體系結(jié)構(gòu),可以使用Harvard體系結(jié)構(gòu),可以為向量處理機(jī),可以為SIMD(單指令多數(shù)據(jù)流)處理機(jī),可以進(jìn)行浮點(diǎn)算術(shù)運(yùn)算,可以進(jìn)行數(shù)字信號(hào)處理計(jì)算等。
圖5以框圖的形式表示根據(jù)本發(fā)明的CPU 12。CPU 12包括地址生成單元30,控制單元32,指令寄存器(IR)36,多路復(fù)用器38,失敗指令寄存器(IRFT)40,指令譯碼器42,執(zhí)行單元44,數(shù)據(jù)輸入緩沖器46和數(shù)據(jù)輸出緩沖器48。控制單元32包括分支控制34。
將存儲(chǔ)器14連接到地址總線以接收標(biāo)記為“地址”的地址,并將存儲(chǔ)器14連接到數(shù)據(jù)總線以接收和提供標(biāo)記為“數(shù)據(jù)”的數(shù)據(jù)。存儲(chǔ)器14可以為任意類型的常規(guī)存儲(chǔ)器,包括諸如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)和動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)之類的易失性存儲(chǔ)器,或諸如電可編程只讀存儲(chǔ)器(EPROM)和閃爍存儲(chǔ)器之類的非易失性存儲(chǔ)器。此外,存儲(chǔ)器14可以與CPU 12在同一塊集成電路上或者位于CPU 12的外部。地址生成單元30具有第一眾多輸入終端、第二眾多輸入終端和眾多輸出終端,第一輸入終端從執(zhí)行單元44接收標(biāo)記為“操作數(shù)地址”的操作數(shù)地址,第二輸入終端從指令寄存器36接收分支位移字段,輸出終端向存儲(chǔ)器14提供地址信號(hào)“地址”??刂茊卧?2利用標(biāo)記為“控制”的控制信號(hào)控制地址生成單元和存儲(chǔ)器14。
多路復(fù)用器38具有第一眾多輸入終端、第二眾多輸入終端和眾多輸出終端,第一輸入終端從數(shù)據(jù)輸入緩沖器46接收指令,第二輸入終端與失敗指令寄存器(IRFT)40的輸出終端相連,輸出終端提供來(lái)自數(shù)據(jù)輸入緩沖器46中的指令或寄存器40中存儲(chǔ)的失敗指令。分支控制34提供控制信號(hào),以便控制指令寄存器36、多路復(fù)用器38以及失敗指令寄存器40的操作。
數(shù)據(jù)輸入緩沖器46從存儲(chǔ)器14接收數(shù)據(jù),并且向執(zhí)行單元44提供緩沖數(shù)據(jù)和/或向多路復(fù)用器38的第一眾多輸入終端提供指令。數(shù)據(jù)輸出緩沖器48從執(zhí)行單元44接收輸出數(shù)據(jù),并提供將要寫入存儲(chǔ)器14中的數(shù)據(jù)。利用控制單元32提供的控制信號(hào)控制數(shù)據(jù)輸入緩沖器46和數(shù)據(jù)輸出緩沖器48。
將指令譯碼器42連接到指令寄存器36以便接收指令。將指令譯碼器42連接到執(zhí)行單元44。將執(zhí)行單元44連接到數(shù)據(jù)輸入緩沖器46以便從存儲(chǔ)器14接收數(shù)據(jù)。同樣,將執(zhí)行單元44連接到數(shù)據(jù)輸出緩沖器48以便向存儲(chǔ)器14提供數(shù)據(jù)。執(zhí)行單元44選擇執(zhí)行經(jīng)指令譯碼器42譯碼的指令,并將結(jié)果提供給數(shù)據(jù)輸出緩沖器48或地址生成單元30。例如,執(zhí)行單元44可以包括算術(shù)與邏輯部件(ALU)。
將控制單元32連接到指令寄存器36以便接收指令,并且作為響應(yīng),提供標(biāo)記為“控制”的控制信號(hào)以便控制地址生成單元30和存儲(chǔ)器14的操作。將控制單元32連接到指令譯碼器42和執(zhí)行單元44。執(zhí)行單元44向控制單元32提供條件代碼信息。
數(shù)據(jù)處理系統(tǒng)10以4級(jí)流水線的形式執(zhí)行指令。4級(jí)流水線包括取階段、譯碼階段、執(zhí)行階段和回寫階段。在取指令階段中,從存儲(chǔ)器(例如從存儲(chǔ)器14)中檢索一條指令。隨后在指令譯碼器42中對(duì)該指令進(jìn)行譯碼。經(jīng)過(guò)譯碼的指令被提供給執(zhí)行單元44并控制執(zhí)行單元44的操作。然后執(zhí)行單元44經(jīng)過(guò)數(shù)據(jù)輸出緩沖器48將指令的執(zhí)行結(jié)果回寫到存儲(chǔ)器14中。
圖6以部分框圖和部分邏輯圖的形式更詳細(xì)地表示圖5的地址生成單元30。地址生成單元30包括地址多路復(fù)用器50,寄存器52,程序計(jì)數(shù)器54,目標(biāo)地址寄存器58,加法器56,SBB地址寄存器60,多路復(fù)用器62,多路復(fù)用器64,加法器66和多路復(fù)用器68。地址多路復(fù)用器50具有第一眾多輸入終端,與加法器66的輸出終端相連的第二眾多輸入終端,與多路復(fù)用器68的輸出終端相連的第三眾多輸入終端以及與寄存器52的輸入終端相連的眾多輸出終端,其中第一輸入終端用于接收標(biāo)記為“操作數(shù)地址”的地址。寄存器52具有眾多輸出終端,以便向程序計(jì)數(shù)器54的輸入終端和寄存器58的輸入終端提供標(biāo)記為“地址”的地址信號(hào)。程序計(jì)數(shù)器54具有與加法器56的第一眾多輸入終端以及多路復(fù)用器62的第一眾多輸入終端相連的眾多輸出終端。加法器56將程序計(jì)數(shù)器54的輸出加“2”,并向多路復(fù)用器68的第二眾多輸入終端以及寄存器60的輸入終端提供輸出終端上的結(jié)果。由于指令寬度為兩個(gè)字節(jié),所以將“2”加到程序計(jì)數(shù)器54中。請(qǐng)注意,盡管在所示實(shí)施方式中,將“2”加到程序計(jì)數(shù)器值中,但是具有不同指令寬度的其他實(shí)施方式將使用不同的數(shù)值。將標(biāo)記為“ASBB”的寄存器60的輸出終端連接到多路復(fù)用器62的第二眾多輸入終端。多路復(fù)用器64具有第一眾多輸入終端和與指令寄存器36相連的第二眾多輸入終端,第一輸入終端接收“4”作為輸入,第二輸入終端接收指令的分支位移字段。將“4”加到ASBB中從而可以向存儲(chǔ)器14提供AFT+1。 AFT+1是指令I(lǐng)FT+1的地址,指令I(lǐng)FT+1是SBB之后的兩條指令。在其他實(shí)施方式中,可以使用其他方法生成AFT+1。多路復(fù)用器64具有與加法器66的第二眾多輸入終端相連的眾多輸出終端。將標(biāo)記為“分支地址”的加法器66的輸出終端連接到地址多路復(fù)用器50的輸入終端。
圖7以部分框圖和部分邏輯圖的形式更詳細(xì)地表示圖5的分支控制34。分支控制34包括一個(gè)狀態(tài)機(jī)(在該圖中未示出),LD寄存器70,多路復(fù)用器72,計(jì)數(shù)寄存器74,加法器76和比較器78。LD寄存器70具有眾多輸入終端以及與多路復(fù)用器72的第一眾多輸入終端相連的眾多輸出終端,輸入終端接收來(lái)自指令寄存器36的指令的分支位移字段的較低位移位。多路復(fù)用器72還具有第二眾多輸入終端以及與加法器76的輸出相連的第三眾多輸入終端,其中第二輸入終端從指令寄存器36接收較低位移位。將標(biāo)記為“計(jì)數(shù)”的多路復(fù)用器72的眾多輸出終端連接到計(jì)數(shù)寄存器74的輸入終端。將計(jì)數(shù)寄存器74的輸出終端連接到加法器76的第一眾多輸入終端。加法器76具有第二眾多輸入終端用于接收“1”。從控制單元32控制寄存器70、74以及多路復(fù)用器72。比較器78具有與多路復(fù)用器72的輸出相連的第一眾多輸入終端,用于接收“-1”的第二眾多輸入終端以及一個(gè)輸出,其中輸出用于向控制單元32提供標(biāo)記為“采取預(yù)測(cè)”的循環(huán)尾信號(hào)。在其他實(shí)施方式中,可以使用其他方法,例如使用地址比較方法以生成采取預(yù)測(cè)信號(hào)。
圖8表示用于描述圖5的分支控制34的狀態(tài)機(jī)的操作的簡(jiǎn)化狀態(tài)圖。分支控制34的狀態(tài)機(jī)具有兩種操作狀態(tài)。第一狀態(tài),即空閑狀態(tài)40,表示未檢測(cè)到短反向分支(SBB)。一旦檢測(cè)到SBB,并且獲取了SBB,分支控制34的狀態(tài)機(jī)就退出空閑狀態(tài)40并進(jìn)入活動(dòng)狀態(tài)42。在某個(gè)實(shí)施方式中,當(dāng)處于活動(dòng)狀態(tài)時(shí),如果檢測(cè)到另一SBB并獲取了該SBB,則狀態(tài)機(jī)將返回到空閑狀態(tài)。在另一實(shí)施方式中,當(dāng)處于活動(dòng)狀態(tài)時(shí),如果檢測(cè)到另一SBB并獲取了該SBB,則狀態(tài)機(jī)將保持活動(dòng)狀態(tài)。此時(shí),將利用新遇到的SBB的LD字段重新加載圖7的LD寄存器70和計(jì)數(shù)。當(dāng)滿足以下兩條件之一時(shí),即滿足(1)沒(méi)有取得所檢測(cè)到的SBB指令,其中SBB指令觸發(fā)從空閑狀態(tài)轉(zhuǎn)換到活動(dòng)狀態(tài);或(2)出現(xiàn)流程改變并且該改變并不是由觸發(fā)SBB引起時(shí),狀態(tài)機(jī)將返回到空閑狀態(tài)。條件(1)對(duì)應(yīng)于以下情況,即循環(huán)經(jīng)過(guò)循環(huán)尾的SBB順序退出。條件(2)對(duì)應(yīng)于以下情況,某一目的地可能在也可能不在該循環(huán)體內(nèi),而循環(huán)體內(nèi)有流程改變。
圖9表示根據(jù)本發(fā)明的圖4的數(shù)據(jù)處理系統(tǒng)的各種信號(hào)的定時(shí)圖?,F(xiàn)在將參照?qǐng)D1至圖9,說(shuō)明數(shù)據(jù)處理系統(tǒng)10的操作。
通常數(shù)據(jù)處理系統(tǒng)10執(zhí)行從存儲(chǔ)器14中順序檢索的指令,直至遇到諸如分支指令之類的改變流程指令。圖9表示在連續(xù)時(shí)鐘周期中生成地址A0到A2。同時(shí),在連續(xù)時(shí)鐘周期中檢索與各生成地址相對(duì)應(yīng)的數(shù)據(jù),例如,在周期2從存儲(chǔ)器中檢索與地址A0相對(duì)應(yīng)的指令I(lǐng)0,在生成地址A1之后的周期3中檢索指令I(lǐng)1,等等。在時(shí)鐘周期4,向存儲(chǔ)器14發(fā)出與SBB指令相對(duì)應(yīng)的地址,即ASBB。在時(shí)鐘周期6檢測(cè)SBB指令。作為對(duì)檢測(cè)到的SBB指令的響應(yīng),將目標(biāo)地址,即地址A0加載到寄存器58中。同時(shí),將失敗指令I(lǐng)FT加載到IRFT寄存器40中。IFT指令是靜態(tài)程序順序中緊跟SBB指令的指令。
正如圖9所示,在向存儲(chǔ)器14提供了各個(gè)地址以便檢索指令的半個(gè)時(shí)鐘周期后,在程序計(jì)數(shù)器54中鎖存該地址。請(qǐng)注意,時(shí)鐘周期3到時(shí)鐘周期7定義第一次迭代。在譯碼階段進(jìn)行SBB檢測(cè)。當(dāng)發(fā)現(xiàn)需要在稍后的周期中獲取SBB時(shí),控制單元32的狀態(tài)機(jī)就從空閑狀態(tài)轉(zhuǎn)換到活動(dòng)狀態(tài)。同時(shí),當(dāng)檢測(cè)到SBB時(shí),就從指令寄存器36中將低位移字段LD加載到LD寄存器70(圖7)中。對(duì)于隨后執(zhí)行的每一條指令,將圖4的計(jì)數(shù)(即循環(huán)值)加1。從比較器78向控制單元32提供循環(huán)尾信號(hào)采取預(yù)測(cè)(圖7)。當(dāng)圖7的計(jì)數(shù)到達(dá)-1時(shí),確認(rèn)采取預(yù)測(cè)。
繼續(xù)該循環(huán)的第二次迭代,直至計(jì)數(shù)在時(shí)鐘周期9到達(dá)值-1。在時(shí)鐘周期9,當(dāng)相對(duì)于控制單元32確認(rèn)采取預(yù)測(cè)信號(hào)時(shí),進(jìn)行預(yù)測(cè),結(jié)果從目標(biāo)地址寄存器58中將目標(biāo)地址A0加載到地址總線上,從而到達(dá)存儲(chǔ)器14。
同時(shí),在時(shí)鐘周期9,程序計(jì)數(shù)器54包含地址A2。利用加法器56將該地址加2,產(chǎn)生結(jié)果為ASBB。隨后將以上結(jié)果地址加載到SBB地址寄存器60中。程序流程繼續(xù)通過(guò)第三次迭代直至進(jìn)行另一次預(yù)測(cè)的周期12。再次從目標(biāo)地址寄存器58中獲取地址A0并提供給存儲(chǔ)器14。正如該示例所示,在時(shí)鐘周期14的末端,確定該分支被錯(cuò)誤預(yù)測(cè)。根據(jù)條件編碼的值以及分支的類型來(lái)確定某個(gè)分支被錯(cuò)誤預(yù)測(cè)。當(dāng)在周期14識(shí)別出一個(gè)錯(cuò)誤預(yù)測(cè)時(shí),已經(jīng)獲取了指令I(lǐng)0并且對(duì)該指令進(jìn)行了譯碼。將先前加載到SBB地址寄存器60中的地址加4以產(chǎn)生結(jié)果AFT+1。隨后將以上結(jié)果地址加載到地址總線上,從而到達(dá)存儲(chǔ)器14。致使開始從地址AFT+1取指令,從而防止出現(xiàn)執(zhí)行氣泡。恢復(fù)啟動(dòng)錯(cuò)誤預(yù)測(cè)后的一個(gè)時(shí)鐘周期,此時(shí)指令I(lǐng)0處于執(zhí)行階段。I0的執(zhí)行將被終止。在終止執(zhí)行I0之后,作為對(duì)錯(cuò)誤預(yù)測(cè)的響應(yīng),將指令I(lǐng)FT從IRFT40加載到指令寄存器36中。然后利用IFT繼續(xù)執(zhí)行指令。同時(shí),以上錯(cuò)誤預(yù)測(cè)使圖8的狀態(tài)機(jī)從活動(dòng)狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。
通過(guò)在作為恢復(fù)周期(即周期15)的同一周期中同時(shí)向指令寄存器36提供指令I(lǐng)FT并發(fā)出地址AFT+1,實(shí)現(xiàn)了零周期錯(cuò)誤預(yù)測(cè)損失。同時(shí),請(qǐng)注意,在圖9中描述的循環(huán)的第一次迭代占用5個(gè)周期。具有正確預(yù)測(cè)的第二次迭代僅占用3個(gè)周期,比不采用折疊分支的迭代正常占用的周期少兩個(gè)周期。具有錯(cuò)誤預(yù)測(cè)的第三次迭代占用4個(gè)周期(不包括恢復(fù)周期,盡管在該周期中對(duì)IFT進(jìn)行譯碼)。
在上述實(shí)施方式中,當(dāng)處于活動(dòng)狀態(tài)時(shí),如果有流程改變而此流程改變并不是由觸發(fā)從空閑狀態(tài)轉(zhuǎn)換到活動(dòng)狀態(tài)的SBB造成的,并且流程改變的目標(biāo)位于循環(huán)體內(nèi),則狀態(tài)機(jī)將退出活動(dòng)狀態(tài)。盡管流程改變的目的地可能仍在循環(huán)體內(nèi),也會(huì)出現(xiàn)以上情況。為了克服以上限制,下面的實(shí)施方式提供增強(qiáng)分支折疊處理技術(shù)。
圖10表示循環(huán)尾含有一個(gè)SBB的程序循環(huán)。它還在循環(huán)體內(nèi)的位置A1包含一個(gè)SFB。SFB的目的地為A4,并且正向分支距離為+3。以下將聯(lián)合使用圖10和圖12,說(shuō)明增強(qiáng)分支折疊處理操作。
圖11以部分框圖和部分邏輯圖的形式更詳細(xì)地表示圖5的分支控制34。分支控制34包括一個(gè)狀態(tài)機(jī)(在該圖中未示出),LD寄存器94,多路復(fù)用器90,計(jì)數(shù)寄存器82,加法器80,比較器98,非負(fù)檢測(cè)器100,校正計(jì)數(shù)寄存器92和加法器96。寄存器94具有眾多輸入終端以及與多路復(fù)用器90的第一眾多輸入終端相連的眾多輸出終端,輸入終端接收來(lái)自指令寄存器36的指令的分支位移字段的較低位移位。多路復(fù)用器90還具有第二眾多輸入終端,與加法器80的輸出相連的第三眾多輸入終端以及與校正計(jì)數(shù)寄存器92的輸出相連的眾多第四輸入終端,其中第二輸入終端從指令寄存器36接收較低位移位。將標(biāo)記為“計(jì)數(shù)”的多路復(fù)用器90的眾多輸出終端連接到計(jì)數(shù)寄存器82的輸入終端。
將計(jì)數(shù)寄存器82的輸出終端連接到加法器80的第一眾多輸入終端。加法器80具有第二眾多輸入終端以便接收“1”。從控制單元32控制LD寄存器94、計(jì)數(shù)寄存器82、校正計(jì)數(shù)寄存器92以及多路復(fù)用器90。比較器98具有與多路復(fù)用器90的輸出相連并標(biāo)記為“計(jì)數(shù)”的第一眾多輸入終端,用于接收“-1”的第二眾多輸入終端以及一個(gè)輸出,其中輸出用于向控制單元32提供標(biāo)記為“采取預(yù)測(cè)”的循環(huán)尾信號(hào)。非負(fù)檢測(cè)器100具有與多路復(fù)用器90的輸出相連的眾多輸入終端以及一個(gè)輸出,其中輸出向控制單元32提供標(biāo)記為“使無(wú)效”的信號(hào)。校正計(jì)數(shù)寄存器92具有與加法器96的輸出相連的眾多輸入終端。計(jì)數(shù)寄存器82具有與加法器96的第二眾多輸入終端相連并標(biāo)記為“LATCH_CNT”的眾多輸出終端。在其他實(shí)施方式中,可以使用其他方法,例如使用地址比較方法,生成采取預(yù)測(cè)信號(hào)。
圖12表示根據(jù)增強(qiáng)操作的圖4的數(shù)據(jù)處理系統(tǒng)的各種信號(hào)的定時(shí)圖。現(xiàn)在將參照?qǐng)D10至圖12,說(shuō)明用于增強(qiáng)模式的數(shù)據(jù)處理系統(tǒng)10的操作。
在執(zhí)行第一次迭代時(shí),檢測(cè)到(在周期2)位于地址ASBB的一條SBB。將其低位移字段加載到圖11的計(jì)數(shù)中。發(fā)現(xiàn)需要在隨后的周期內(nèi)獲取SBB。狀態(tài)機(jī)在同一周期(周期3)中進(jìn)入活動(dòng)狀態(tài)。從I0開始連續(xù)執(zhí)行。在周期5,檢測(cè)到一條SFB。在該周期中,計(jì)數(shù)為-4并且LATCH_CNT為-5。將SFB的低位移字段(為+3)加到LATCH_CNT中。在靠近第二次迭代的末端,為SBB進(jìn)行預(yù)測(cè)(在周期7中)。利用LD寄存器94中的-6重新加載計(jì)數(shù)。由于正確預(yù)測(cè)了需要獲取的SBB,所以從I0開始連續(xù)執(zhí)行。在周期10中,再次檢測(cè)到同一SFB。在該示例中,沒(méi)有發(fā)現(xiàn)在周期11中獲取該SFB。因此,多路復(fù)用器90仍然選擇將加法器80的輸出而不是校正計(jì)數(shù)寄存器92的輸出作為其輸入源。因此,對(duì)于執(zhí)行的每一條指令,計(jì)數(shù)連續(xù)加1。在計(jì)數(shù)到達(dá)-1的周期13,為SBB進(jìn)行另一次預(yù)測(cè)。按上述方式繼續(xù)執(zhí)行。
通常,本發(fā)明允許分支折疊處理而無(wú)需取分支指令。對(duì)單出口4級(jí)流水線數(shù)據(jù)處理系統(tǒng)而言,如果迭代次數(shù)小于等于2,則節(jié)省的周期數(shù)為零。對(duì)于三次迭代而言,節(jié)省的周期數(shù)為2,對(duì)于四次迭代而言,節(jié)省的周期數(shù)為4,并且對(duì)于五次迭代而言,節(jié)省的周期數(shù)為6??梢岳?m-4表示節(jié)省的周期數(shù),其中m為迭代次數(shù)。同時(shí),正如現(xiàn)有分支預(yù)測(cè)技術(shù)一樣,當(dāng)預(yù)測(cè)為“錯(cuò)誤預(yù)測(cè)”時(shí),沒(méi)有周期損失。
通過(guò)添加最少的硬件實(shí)現(xiàn)了周期數(shù)節(jié)省。同時(shí),由于在第一次迭代之后沒(méi)有獲取、譯碼和執(zhí)行分支指令和失敗指令,所以節(jié)省了能量并且提高了性能。
盡管這里以特定實(shí)施方式說(shuō)明了本發(fā)明,熟練的技術(shù)人員顯然能夠以各種各樣的方式修改本發(fā)明并且可以采用除上述具體實(shí)施方式
之外的許多實(shí)施方式。例如,計(jì)數(shù)寄存器中存儲(chǔ)的計(jì)數(shù)值(即循環(huán)值)實(shí)際上可以為一個(gè)遞增并與第二地址值進(jìn)行比較的地址值,因此,附屬權(quán)利要求書意在覆蓋屬于本發(fā)明實(shí)質(zhì)和范圍內(nèi)的本發(fā)明的所有改進(jìn)。
權(quán)利要求
1.一種控制數(shù)據(jù)處理系統(tǒng)的方法,其特征在于包括以下步驟獲取位于分支地址的反向分支指令,反向分支指令具有一個(gè)偏移值,其中反向分支指令用于在存儲(chǔ)器中向后面的目標(biāo)地址執(zhí)行分支以便定義程序循環(huán);以及根據(jù)反向分支指令設(shè)置循環(huán)值。
2.權(quán)利要求1的方法,其中根據(jù)反向分支指令設(shè)置循環(huán)值的步驟還包括將循環(huán)值設(shè)置為偏移值。
3.權(quán)利要求1的方法,其特征還在于包括以下步驟每當(dāng)在程序循環(huán)中取指令時(shí),通過(guò)將某個(gè)預(yù)定值加到循環(huán)值中而修改循環(huán)值。
4.權(quán)利要求3的方法,其中預(yù)定值是以指令的長(zhǎng)度為基礎(chǔ)的。
5.一種控制數(shù)據(jù)處理系統(tǒng)的方法,其特征在于包括以下步驟獲取位于分支地址的反向分支指令,反向分支指令具有一個(gè)偏移值,其中反向分支指令用于在存儲(chǔ)器中向后面的目標(biāo)地址執(zhí)行分支以便定義程序循環(huán);根據(jù)反向分支指令設(shè)置循環(huán)值;獲取位于目標(biāo)地址的目標(biāo)指令,其中目標(biāo)地址是以偏移值為基礎(chǔ)的;確定循環(huán)值是否滿足預(yù)定條件,并且當(dāng)循環(huán)值滿足預(yù)定條件時(shí)獲取位于后繼地址的后繼指令,其中后繼地址為目標(biāo)地址;并且根據(jù)偏移值重新設(shè)置循環(huán)值;當(dāng)循環(huán)值不滿足預(yù)定條件時(shí)獲取位于后繼地址的后繼指令,其中后繼地址為程序序列中的下一條指令地址重復(fù)獲取步驟,并進(jìn)行確定直至程序流程轉(zhuǎn)移到程序循環(huán)的外部。
6.數(shù)據(jù)處理系統(tǒng)中的一種循環(huán)方法,其特征在于包括以下步驟提供包含指令I(lǐng)br-1和分支指令I(lǐng)br的指令存儲(chǔ)器,其中指令I(lǐng)br-1直接在指令存儲(chǔ)器地址空間中分支指令I(lǐng)br之前;獲取并處理分支指令I(lǐng)br;在獲取并處理分支指令I(lǐng)br的步驟之后,獲取并處理位于目標(biāo)地址的目標(biāo)指令;獲取指令I(lǐng)br-1,并且在獲取指令I(lǐng)br-1的步驟之后,立即獲取位于目標(biāo)地址的目標(biāo)指令。
7.數(shù)據(jù)處理系統(tǒng)中的一種循環(huán)方法,其特征在于提供包含指令I(lǐng)br-1、分支指令I(lǐng)br的指令存儲(chǔ)器,其中直接在指令存儲(chǔ)器地址空間中分支指令I(lǐng)br之前存儲(chǔ)指令I(lǐng)br-1,并且緊接在指令存儲(chǔ)器地址空間中分支指令I(lǐng)br之后存儲(chǔ)指令I(lǐng)br+1;獲取并處理分支指令I(lǐng)br,其中獲取并處理分支指令I(lǐng)br包括存儲(chǔ)目標(biāo)地址的子步驟;獲取并保存指令I(lǐng)br+1;根據(jù)獲取并保存指令I(lǐng)br+1的步驟之后的分支預(yù)測(cè),獲取并處理位于目標(biāo)地址的目標(biāo)指令,其中獲取并處理目標(biāo)指令包括在寄存器中存儲(chǔ)目標(biāo)指令的子步驟;并且確定分支預(yù)測(cè)錯(cuò)誤,并且利用指令I(lǐng)br+1重寫指令寄存器。
8.權(quán)利要求7的方法包括向地址總線提供值br+(2*inc),其中inc表示指令的字節(jié)長(zhǎng)度。
9.一種具有一個(gè)地址生成單元數(shù)據(jù)處理系統(tǒng),其特征在于具有一個(gè)第一輸入、一個(gè)第二輸入和一個(gè)輸出的第一多路復(fù)用器;具有一個(gè)輸入和一個(gè)輸出的程序計(jì)數(shù)寄存器,其中輸入與第一多路復(fù)用器的輸出相連;具有一個(gè)第一輸入、一個(gè)第二輸入以及一個(gè)輸出的第二多路復(fù)用器,其中第二輸入與程序計(jì)數(shù)寄存器的輸出相連;具有一個(gè)輸入和一個(gè)輸出的目標(biāo)地址寄存器,其中輸入與第一多路復(fù)用器的輸出相連;具有一個(gè)第一輸入、一個(gè)第二輸入以及一個(gè)輸出的第一加法器,其中第一輸入與程序計(jì)數(shù)寄存器的輸出相連,第二輸入用于接收第一遞增值;具有一個(gè)輸入、一個(gè)輸出的分支地址寄存器,其中輸入與第一加法器的輸出相連,輸出與第二多路復(fù)用器的第一輸入相連;以及具有一個(gè)第一輸入、一個(gè)第二輸入和一個(gè)輸出的第三多路復(fù)用器,其中第一輸入與目標(biāo)地址寄存器的輸出相連,第二輸入與第一加法器的輸出相連,輸出與第一多路復(fù)用器的第一輸入相連。
10.一種具有一個(gè)地址生成單元的數(shù)據(jù)處理系統(tǒng),其特征在于具有一個(gè)第一輸入和一個(gè)第二輸入的多路復(fù)用裝置,用于提供獲取地址;連接以接收獲取地址的程序計(jì)數(shù)器;與多路復(fù)用裝置的第一輸入相連用于提供分支目標(biāo)地址的分支目標(biāo)地址生成裝置,其中分支目標(biāo)地址表示獲取分支后的分支目的地地址;以及與多路復(fù)用裝置的第二輸入相連用于提供分支指令之后的第二指令地址的跳過(guò)下一個(gè)順序的地址生成裝置。
全文摘要
流水線數(shù)據(jù)處理系統(tǒng)(10)包括一個(gè)地址生成單元(30)。地址生成單元(30)包括一個(gè)目標(biāo)地址寄存器(58),一個(gè)短反向分支(SBB)地址寄存器(60)以及一個(gè)計(jì)數(shù)寄存器(70),從而使小循環(huán)的執(zhí)行更有效并且允許分支折疊處理而無(wú)需獲取分支指令。
文檔編號(hào)G06F9/32GK1240279SQ99108648
公開日2000年1月5日 申請(qǐng)日期1999年6月18日 優(yōu)先權(quán)日1998年6月19日
發(fā)明者李利煌, 威廉姆·C·默耶, 杰夫特·W·斯科特, 約翰·H·阿蘭德斯 申請(qǐng)人:摩托羅拉公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大同市| 涡阳县| 博湖县| 澄迈县| 淳化县| 奉节县| 信宜市| 绵竹市| 丹东市| 民县| 策勒县| 长兴县| 庆元县| 涟水县| 郁南县| 临泽县| 乐亭县| 抚顺县| 阿克| 弋阳县| 淮北市| 彰化县| 石林| 东至县| 大同市| 邵阳县| 屏东县| 丰都县| 建平县| 德清县| 安康市| 闸北区| 长武县| 桂林市| 花莲市| 娄烦县| 淅川县| 车致| 临夏县| 北票市| 东山县|