專利名稱:寄存器移動操作的制作方法
背景本發(fā)明涉及計算機的寄存器移動操作。
諸如數(shù)字信號處理器(DSP)之類的許多傳統(tǒng)的可編程處理器包括在處理數(shù)據(jù)時使用的各種內部寄存器。稱為數(shù)據(jù)寄存器的一類寄存器主要用于存儲當前操作的結果并將結果提供給后續(xù)操作。數(shù)據(jù)寄存器常組合成稱為寄存器堆的一組寄存器。
第二類寄存器是通常用于存儲地址的指針寄存器。不同于由數(shù)據(jù)寄存器存儲并直接提供給處理器內的執(zhí)行單元的數(shù)據(jù),由指針寄存器存儲的地址主要用于從存儲器系統(tǒng)中檢索數(shù)據(jù)。一組指針寄存器組常包括堆棧指針,幀指針和若干通用指針寄存器。
圖1是示出根據(jù)本發(fā)明的流水線可編程處理器的例子的框圖。
圖2是示出用于可編程處理器的流水線的例子的框圖。
圖3和圖4是說明根據(jù)本發(fā)明的寄存器移動指令的示例性實施的流程圖。
描述圖1是示出具有一個或多個流水線4和一控制單元6的可編程處理器2。如下詳述的處理器2支持用于在指針寄存器和數(shù)據(jù)寄存器之間移動數(shù)據(jù)的機器指令。尤其是,處理器2支持稱之為CC MOVE指令的機器指令,它在指針寄存器和數(shù)據(jù)寄存器之間移動數(shù)據(jù)。
流水線4包括具有若干硬件流水線,它們具有若干用于處理指令的階段。階段能與其它階段同時進行處理,并按照時鐘周期將結果傳到下一階段。指令的結果以很快的順序出現(xiàn)在最后的流水線4。
控制單元6可以控制經(jīng)過流水線4的各階段的指令流和數(shù)據(jù)流。例如,在處理指令期間,控制單元6可控制流水線的各部分取出并解碼指令,完成相應的操作并將結果寫回到存儲器或局部寄存器。
圖2示出流水線處理器的例子,該流水線處理器具有根據(jù)本發(fā)明的一個實施例安排的數(shù)據(jù)地址生成(DAG)流水線12,執(zhí)行單元(EU)流水線14和加載/存儲(L/S)流水線16。例如,每條流水線具有5個階段取指令(IF),解碼(DEC),地址計算和取數(shù)據(jù)(AC),執(zhí)行(EX)和寫回(WB)。
在DAG流水線12中,在IF階段期間由取數(shù)單元21從存儲器或指令高速緩沖存儲器取出指令,并在DEC階段解碼。此外,DAG流水線12的DEC階段可包括用于存放存儲器地址的一組指針寄存器22。在下一時鐘周期,經(jīng)解碼的指令和由該指令使用的任何指針地址可傳送到AC階段,經(jīng)DAG流水線12送到數(shù)據(jù)地址產(chǎn)生器(DAG)23。DAG 23可計算完成操作所必須的附加的存儲器地址。這些地址沿DAG流水線12傳送,以被寫回到指針寄存器22。作為替代,指令也能經(jīng)路徑15傳送到EU流水線14,為執(zhí)行單元25所用,或經(jīng)路徑17送到L/S流水線16,用于從存儲器18加載數(shù)據(jù)。在一個實施例中,DAG 23可包括環(huán)形緩沖器尋址寄存器,用作指針寄存器,如變址寄存器,基址寄存器和長度寄存器。
在EX階段期間,執(zhí)行單元25可完成指定的操作,如加或乘兩個數(shù)。執(zhí)行單元25可包含用于執(zhí)行操作的專門硬件,如包括一個或多個算術邏輯單元(ALU),浮點單元(FPU),和桶形移位器。數(shù)據(jù)寄存器24位于流水線4的EX階段之內,并可直接向執(zhí)行單元25提供本地存儲的數(shù)據(jù)。此外,根據(jù)由DAG23產(chǎn)生的存儲器地址或根據(jù)存在指針寄存器22中的地址,從數(shù)據(jù)存儲器18檢索數(shù)據(jù),并將數(shù)據(jù)傳送到WB階段。在WB階段期間,操作的結果被寫到目的地。WB階段有兩條路徑用于存儲結果。當結果被寫到數(shù)據(jù)存儲器18或寫到數(shù)據(jù)寄存器24時,可使能輸出26。當結果被寫到指針寄存器22時,可使能輸出27。
由處理器2支持的CC MOVE指令使軟件應用程序能直接在指針寄存器和數(shù)據(jù)寄存器之間移動數(shù)據(jù)。此外,CC MOVE指令使處理器能根據(jù)條件標記(CC_FLAG) 29的狀態(tài)來移動數(shù)據(jù),該狀態(tài)通常由諸如比較指令(CMP)之類的前一指令、其他邏輯操作置位,或由直接置位CC_FLAG 29的操作置位。CC_FLAG 29可以在如狀態(tài)寄存器或觸發(fā)器之類的存儲器電路中按單個數(shù)據(jù)位存儲,并可以在如CMP指令退出EX階段時得到置位。
圖3是說明按照一個實施例的示例性過程30的流程圖,借助此過程控制單元6在源寄存器是指針寄存器22而目標寄存器是數(shù)據(jù)寄存器24的情況下實施CC MOVE機器指令。參考以CC_FLAG 29的置位為條件的移動指令來說明過程30;然而移動指令可以CC_FLAG 29的清除為條件而進行,雖然本發(fā)明的范圍并不限于這方面。
因為在先前的指令退出EX階段時CC_FLAG 29常常被置位,因此在寫CC_FLAG之前流水線4能部分地處理CC MOVE指令。具體來說,當CC MOVE指令在DEC階段,控制單元6可推測移動可能發(fā)生,并使能指針寄存器22的輸出,并將存儲的地址在下一個時鐘周期傳送到AC階段(31)。
在AC階段期間,控制單元6可控制DAG 23將地址傳送到EX階段而不加修改(32)。作為替代,對DAG 23中的指針寄存器(未顯示),控制單元6可在AC階段使能它們的輸出。
在EX階段期間,地址可經(jīng)路徑15傳送到執(zhí)行單元25。控制單元可控制執(zhí)行單元25將地址傳送到WB階段而不加修改(33)。
在WB階段中,控制單元6可以在執(zhí)行單元25中判斷CC_FLAG 29的狀態(tài)并根據(jù)該狀態(tài)決定使能或禁止對數(shù)據(jù)寄存器24的寫入。若CC_FLAG被置位,則控制單元6選擇合適的數(shù)據(jù)寄存器24并經(jīng)過輸出26寫此地址(34)。這樣,響應于CC MOVE指令,可從指針寄存器22復制地址到寄存器24。值得注意的是,為了從指針寄存器22移動數(shù)據(jù)到數(shù)據(jù)寄存器24,地址能傳送通過流水線4。具體來說,地址可以從第一流水線,即DAG流水線12傳送到第二流水線,即EU流水線,若條件標記置位,則在EU流水線14中把地址寫到數(shù)據(jù)寄存器24。因為各流水線在處理器內可以物理上分開,當數(shù)據(jù)從一個流水線傳送到另一個時可能有延時。因此,為了減少地址被正確地寫到數(shù)據(jù)寄存器24的危險,地址在WB階段之前從DAG流水線12傳送到EU流水線14。
圖4是按照一個實施例示出的示例性過程40的流程圖,借此過程控制單元6在源寄存器是數(shù)據(jù)寄存器24而目標寄存器是指針寄存器的情況下可實現(xiàn)CC MOVE機器指令。
在EX階段期間,控制單元6可以使能數(shù)據(jù)寄存器24的輸出,使存儲的數(shù)據(jù)能經(jīng)過路徑19從EU流水線14傳送到DAG流水線12(41)。在WB階段期間,控制單元6可以在EU流水線14的執(zhí)行單元25中判斷CC_FLAG 29的狀態(tài)(42)。根據(jù)CC_FLAG的狀態(tài),控制單元6可經(jīng)輸出27將數(shù)據(jù)寫到適當?shù)闹羔樇拇嫫?2(43)。如上所述,為了使地址能寫到指針寄存器22,數(shù)據(jù)可在WB階段之前從EU流水線14傳送到DAG流水線12。在一個實施例中,EX階段能包括三個子階段,以在WB階段提供數(shù)據(jù)。
下述例子示出調用CC MOVE機器指令的語法,雖然本發(fā)明的范圍不限于這方面if CC p1=r1;從數(shù)據(jù)寄存器移動到指針寄存器if!CC r0=p1;當CC假時,從指針寄存器移動到數(shù)據(jù)寄存器在典型應用中,程序員開發(fā)軟件應用程序或子程序,它調用涉及指針寄存器和數(shù)據(jù)寄存器的寄存器移動操作,如上述CC MOVE指令。程序員能以如上例所示的匯編語言編寫軟件應用程序,或以高級軟件語言編寫。通常調用編譯器來處理高級軟件應用程序,并產(chǎn)生用于處理器2的適當?shù)臋C器指令,包括用于在指針寄存器和數(shù)據(jù)寄存器之間有條件地移動數(shù)據(jù)的CC MOVE機器指令。
已經(jīng)描述了本發(fā)明的各種實施例。例如,已經(jīng)描述了在指針寄存器和數(shù)據(jù)寄存器之間有條件地移動數(shù)據(jù)的單條機器指令。該處理器能在各種系統(tǒng)中實現(xiàn),包括通用計算系統(tǒng),數(shù)字處理系統(tǒng),膝上型計算機,個人數(shù)字助理(PDA)和蜂窩電話。在這類系統(tǒng)中,處理器能連接到存儲設備,如閃存設備或靜態(tài)隨機存取存儲器(SRAM),它存儲操作系統(tǒng)和其他軟件應用程序。這些和其他實施例將落入下面的權利要求的范圍之中。
權利要求
1.一種方法,其特征在于包括接收一條機器指令;以及響應該條機器指令,根據(jù)條件標記的狀態(tài)在指針寄存器和數(shù)據(jù)寄存器之間移動數(shù)據(jù)。
2.如權利要求1的方法,其特征在于移動數(shù)據(jù)包括從指針寄存器復制存儲器地址到數(shù)據(jù)寄存器。
3.如權利要求1的方法,其特征在于移動數(shù)據(jù)包括從數(shù)據(jù)寄存器復制數(shù)據(jù)到指針寄存器。
4.如權利要求1的方法,其特征在于指針寄存器和數(shù)據(jù)寄存器位于處理器的不同流水線單元的不同階段之中。
5.如權利要求1的方法,其特征在于還包括當指針寄存器是數(shù)據(jù)源時選第一路徑,而當數(shù)據(jù)寄存器是數(shù)據(jù)源時選第二路徑。
6.如權利要求1的方法,其特征在于還包括傳送數(shù)據(jù)通過執(zhí)行單元而不加修改。
7.一種方法,其特征在于包括接收一條機器指令;使能由該機器指令指定的指針寄存器的輸出,其中指針寄存器適應于存放存儲器地址;傳送存儲器地址通過執(zhí)行單元而不加修改;判斷條件標記的狀態(tài);和根據(jù)該狀態(tài)將存儲器地址寫到數(shù)據(jù)寄存器。
8.如權利要求7的方法,其特征在于還包括從第一流水線到第二流水線傳送地址。
9.如權利要求7的方法,其特征在于還包括在前一指令執(zhí)行期間設置條件標記。
10.一種在具有多條流水線的處理器內移動數(shù)據(jù)的方法,其特征在于包括使能第一流水線中的數(shù)據(jù)寄存器的輸出;在第一流水線的寫回階段之前從數(shù)據(jù)寄存器傳送數(shù)據(jù)到第二流水線;以及把該數(shù)據(jù)寫到位于第二流水線內的指針寄存器。
11.如權利要求10的方法,其特征在于還包括判斷條件標記的狀態(tài);以及根據(jù)該狀態(tài)把數(shù)據(jù)寫到指針寄存器。
12.如權利要求10的方法,其特征在于該指針寄存器和數(shù)據(jù)寄存器占據(jù)第一和第二流水線的不同階段。
13.一種在具有多條流水線的處理器中移動數(shù)據(jù)的方法,每條流水線具有寫回階段,其特征在于該方法包括使能第一流水線中的指針寄存器的輸出;在第一流水線的寫回階段之前從第一流水線移動一地址到第二流水線;以及把該地址寫到位于第二流水線內的數(shù)據(jù)寄存器。
14.如權利要求13的方法,其特征在于還包括判斷條件標記的狀態(tài);以及根據(jù)該狀態(tài)把數(shù)據(jù)寫到指針寄存器。
15.如權利要求13的方法,其特征在于指針寄存器和數(shù)據(jù)寄存器占據(jù)第一和第二流水線的不同階段。
16.如權利要求13的方法,其特征在于指針寄存器位于數(shù)據(jù)寄存器之前的一個階段中。
17.一種裝置,其特征在于包括指針寄存器;數(shù)據(jù)寄存器;以及適應于響應單條機器指令,在數(shù)據(jù)寄存器和指針寄存器之間有條件地移動數(shù)據(jù)的控制單元。
18.如權利要求17的裝置,其特征在于指針寄存器位于第一流水線中,而數(shù)據(jù)寄存器位于第二流水線中。
19.如權利要求18的裝置,其特征在于第一和第二流水線具有多個階段,進一步,指針寄存器和數(shù)據(jù)寄存器位于各自流水線的不同階段。
20.如權利要求18的裝置,其特征在于還包括連接第一和第二流水線的路徑,以將地址從第一流水線的指針寄存器傳送到第二流水線的數(shù)據(jù)寄存器。
21.如權利要求18的裝置,其特征在于還包括連接第一和第二流水線的路徑,以將數(shù)據(jù)從第二流水線的數(shù)據(jù)寄存器送到第一流水線的地址寄存器。
22.如權利要求20的裝置,其特征在于每條流水線包括寫回階段,進一步,在寫回階段以前,所述路徑將地址傳送到第二流水線。
23.如權利要求21的裝置,其特征在于每條流水線包括寫回階段,進一步,在寫回階段以前,所述路徑將數(shù)據(jù)傳送到第一流水線。
24.如權利要求17的裝置,其特征在于還包括適應于將數(shù)據(jù)從指針寄存器傳送到寫回階段而不加修改的執(zhí)行單元。
25.一種包含具有用于編譯軟件程序的計算機可執(zhí)行指令的媒體的產(chǎn)品,所述指令存儲于該媒體上,其特征在于計算機可執(zhí)行指令適應于產(chǎn)生單條機器指令,以是可編程處理器在指針寄存器和數(shù)據(jù)寄存器之間有條件地移動數(shù)據(jù),其中該指令引起可編程處理器從第一流水線傳送數(shù)據(jù)到第二流水線。
26.如權利要求25的產(chǎn)品,其特征在于該指令引起可編程處理從數(shù)據(jù)寄存器移動數(shù)據(jù)到指針寄存器。
27.如權利要求25的產(chǎn)品,其特征在于處理器包括一流水線,機器指令使處理器在指針寄存器是數(shù)據(jù)源時選擇通過該流水線的第一路徑,而在數(shù)據(jù)寄存器是數(shù)據(jù)源時選擇通過該流水線的第二路徑。
28.一種系統(tǒng),包括存儲器設備;以及連接存儲器設備的處理器,其特征在于,處理器包括指針寄存器,數(shù)據(jù)寄存器,和適應于響應單條機器指令而在數(shù)據(jù)寄存器和指針寄存器之間有條件地移動數(shù)據(jù)的控制單元。
29.如權利要求28的系統(tǒng),其其特征在于指針寄存器位于第一流水線而數(shù)據(jù)寄存器位于第二流水線。
30.如權利要求29的系統(tǒng),其特征在于第一和第二流水線具有多個階段,進一步,其中指針寄存器和數(shù)據(jù)寄存器位于各自流水線的不同階段。
31.如權利要求29的系統(tǒng),其特征在于還包括連接第一和第二流水線的路徑,以將一地址從第一流水線的指針寄存器傳送到第二流水線的數(shù)據(jù)寄存器。
32.如權利要求29的系統(tǒng),其特征在于還包括連接第一和第二流水線的路徑,以將數(shù)據(jù)從第二流水線的數(shù)據(jù)寄存器送到第一流水線的地址寄存器。
33.如權利要求31的系統(tǒng),其特征在于每條流水線包括寫回階段,進一步,在寫回階段以前所述路徑將地址傳送到第二流水線。
34.如權利要求32的系統(tǒng),其特征在于每條流水線包括寫回階段,進一步,在寫回階段以前所述路徑將數(shù)據(jù)送到第一流水線。
35.如權利要求28的系統(tǒng),其特征在于還包括適應于將數(shù)據(jù)從指針寄存器傳送到寫回階段而不加以修改的執(zhí)行單元。
36.如權利要求28的系統(tǒng),其特征在于存儲器設備包括靜態(tài)隨機存取存儲器。
37.如權利要求28的系統(tǒng),其特征在于存儲器設備包括閃存存儲器。
全文摘要
在一個實施例中,可編程處理器適應于響應單條機器指令而有條件地在指針寄存器和數(shù)據(jù)寄存器之間移動數(shù)據(jù)。處理器具有多條流水線。響應該機器指令,控制單元控制流水線經(jīng)過流水線而傳送數(shù)據(jù),以便在寄存器之間移動數(shù)據(jù)。
文檔編號G06F9/30GK1468397SQ01817011
公開日2004年1月14日 申請日期2001年10月5日 優(yōu)先權日2000年10月6日
發(fā)明者C·P·洛斯, R·P·辛格, G·A·奧弗坎普, R·伊諾, C P 洛斯, 奧弗坎普, 辛格 申請人:英特爾公司, 模擬設備股份有限公司