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