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

用于在奇存器堆和存儲(chǔ)器之間傳送數(shù)據(jù)值的數(shù)據(jù)處理設(shè)備和方法

文檔序號(hào):6486198閱讀:202來(lái)源:國(guó)知局
專利名稱:用于在奇存器堆和存儲(chǔ)器之間傳送數(shù)據(jù)值的數(shù)據(jù)處理設(shè)備和方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于在寄存器堆和存儲(chǔ)器之間傳送數(shù)據(jù)值的數(shù)據(jù)處理設(shè)備和方法。
背景技術(shù)
數(shù)據(jù)處理設(shè)備一般含有可用于對(duì)數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作的數(shù)據(jù)處理單元。數(shù)據(jù)處理單元可使用含有多個(gè)寄存器的寄存器堆,所述多個(gè)寄存器可設(shè)為存儲(chǔ)數(shù)據(jù)處理單元在執(zhí)行那些數(shù)據(jù)處理操作期間所需的數(shù)據(jù)值。由數(shù)據(jù)處理單元執(zhí)行的用于那些數(shù)據(jù)處理操作的指令,一般將指定寄存器堆內(nèi)其中包含要用作那些數(shù)據(jù)處理操作的操作數(shù)的數(shù)據(jù)值的的寄存器。
寄存器堆向數(shù)據(jù)處理單元提供對(duì)數(shù)據(jù)值的快速存取,但是寄存器堆相對(duì)較小,所以不能保存數(shù)據(jù)處理單元可能需要的所有數(shù)據(jù)值。因此,一般設(shè)置具有較長(zhǎng)期限的數(shù)據(jù)值存儲(chǔ)量的存儲(chǔ)系統(tǒng),需要數(shù)據(jù)值時(shí),就在寄存器堆和存儲(chǔ)系統(tǒng)之間傳送數(shù)據(jù)值。通過(guò)該方法,當(dāng)數(shù)據(jù)處理單元不再需要寄存器堆中的數(shù)據(jù)值時(shí),就可將這些數(shù)據(jù)值存儲(chǔ)到存儲(chǔ)器,當(dāng)需要時(shí),也可將數(shù)據(jù)值從存儲(chǔ)器裝入到寄存器堆,使得它們?nèi)缓罂捎糜跀?shù)據(jù)處理單元。用于將數(shù)據(jù)值裝入寄存器堆的典型裝入指令可如下表示LDR RX,[RZ,#OFFSET]寄存器R7設(shè)置成包含基址(base address),該基址被加上偏移值以產(chǎn)生包含所需數(shù)據(jù)值的存儲(chǔ)地址。執(zhí)行該裝入指令時(shí),從存儲(chǔ)器中檢索出在那個(gè)地址上的數(shù)據(jù)值,并將該數(shù)據(jù)值寫入寄存器堆的寄存器RX。
典型的存儲(chǔ)指令可如下表示
STR RX,[RZ,#OFFSET]如前,通過(guò)將偏移值加在寄存器RZ內(nèi)存儲(chǔ)的數(shù)據(jù)值上可得出相關(guān)的存儲(chǔ)地址,但是在此例中,存儲(chǔ)在寄存器RX內(nèi)的數(shù)據(jù)值然后被寫入存儲(chǔ)器內(nèi)的那個(gè)存儲(chǔ)地址。
可以理解,在數(shù)據(jù)處理設(shè)備上要執(zhí)行的典型程序中,會(huì)存在很多這種裝入和存儲(chǔ)指令,多個(gè)這種裝入或存儲(chǔ)指令采用代碼序列一個(gè)接一個(gè)的出現(xiàn)以存取相鄰存儲(chǔ)單元,這實(shí)在很普通,例如當(dāng)存取64位“l(fā)ong long”或“double”數(shù)據(jù)類型時(shí),或者當(dāng)存取相鄰的結(jié)構(gòu)字段時(shí),就會(huì)使用許多32位的裝入或存儲(chǔ)。因此,舉例來(lái)說(shuō),可能發(fā)生下面的兩個(gè)裝入指令序列LDR RX,[RZ,#OFFSET]LDR RY,[RZ,#OFFSET±INCR]在這兩個(gè)裝入指令中,使用了相同的基址,但是對(duì)于第二裝入指令將偏移量增加或減少等于各數(shù)據(jù)值中字節(jié)數(shù)的字節(jié)數(shù)。舉例來(lái)說(shuō),如果數(shù)據(jù)值是32位的數(shù)據(jù)值、即4字節(jié)長(zhǎng),那么第一裝入指令的偏移量可為0,而第二裝入指令的偏移量在這種情況下即為+/-4。
為了增加處理速度,近來(lái)數(shù)據(jù)處理設(shè)備的體系結(jié)構(gòu)已提供了用于寄存器堆的多個(gè)讀和/或多個(gè)寫端口,以允許在每個(gè)時(shí)鐘周期內(nèi)存取多于一個(gè)寄存器。為了利用該點(diǎn),已經(jīng)開發(fā)了在某種情況下允許由單一指令取代兩個(gè)或兩個(gè)以上連續(xù)裝入或存儲(chǔ)指令的新指令。一個(gè)實(shí)例是可用于由ARM有限公司設(shè)計(jì)的微處理器的裝入多指令,它可如下表示LDMIA RZ,{RX,RY}約束條件1)RY>RX2)基址偏移量從0開始上例假設(shè)試圖以單一的裝入多重指令取代前面已識(shí)別的兩個(gè)裝入指令。該指令會(huì)使由寄存器RZ的內(nèi)容識(shí)別的存儲(chǔ)單元處的數(shù)據(jù)值寫到寄存器RX,然后將存儲(chǔ)在寄存器RZ的內(nèi)容加上等于數(shù)據(jù)值大小的增量值后所認(rèn)定的存儲(chǔ)單元處的數(shù)據(jù)值寫到寄存器RY。因此,來(lái)自相繼的存儲(chǔ)地址的兩個(gè)數(shù)據(jù)值將被存儲(chǔ)在寄存器RX和RY中。
上述的LDMIA指令不限于執(zhí)行如上所述的兩個(gè)裝入操作。裝入操作的目的寄存器由位屏蔽指定,因此舉例來(lái)說(shuō),如果寄存器堆包含16個(gè)寄存器,則位屏蔽可作為16位字段的指令提供,位屏蔽的每一位與對(duì)應(yīng)的寄存器關(guān)聯(lián)。假設(shè)寄存器RX為寄存器0且寄存器RY為寄存器2,那么上例LDMIA指令的位屏蔽可為如下

在此例中,假設(shè)值“1”識(shí)別應(yīng)當(dāng)裝入數(shù)據(jù)值的寄存器,值“0”指示不應(yīng)裝入數(shù)據(jù)值的寄存器。
雖然該LDMIA指令可能允許作為使用單一指令的結(jié)果而使很多寄存器被裝入,但是存在限制其使用的多個(gè)約束條件。首先,該位屏蔽對(duì)使用的寄存器進(jìn)行排序。在第一地址上的數(shù)據(jù)值會(huì)裝入到由位屏蔽識(shí)別為目的寄存器的第一寄存器,下一相繼地址的數(shù)據(jù)值會(huì)裝入到由位屏蔽識(shí)別為目的寄存器的下一寄存器,等等。因此,該單一指令僅可用來(lái)組合存儲(chǔ)器存取,這些存取既確定增加的地址也確定增加的目的寄存器。因此,考慮兩個(gè)LDR指令的先例,若寄存器RX為寄存器0且寄存器RY為寄存器2,則有可能使用該指令,如果偏移量增加的話。然而,若寄存器RX為寄存器2且寄存器RY為寄存器0,則該指令不能使用。
另外,因?yàn)槲黄帘握加昧酥付ㄖ噶钣玫拇罅课豢臻g,所以在指令內(nèi)沒(méi)有足夠的可用空間來(lái)指定偏移量,因此這進(jìn)一步限制了可使用LDMIA指令的場(chǎng)合的數(shù)量。因此,考慮前述的兩個(gè)LDR指令的序列,如果第一LDR指令的偏移量為0,則它可能使用LDMIA指令,但如果第一偏移量為非0,則一般不能使用LDMIA指令。
除LDMIA指令之外,也可提供對(duì)應(yīng)的STMIA指令,用以將寄存器堆中的眾多數(shù)據(jù)值存儲(chǔ)到存儲(chǔ)器。然而,具有完全相同的約束條件。為了緩和與LDMIA和STMIA指令相關(guān)聯(lián)的一些約束條件,開發(fā)了用于ARM有限公司設(shè)計(jì)的微處理器的寄存器對(duì)裝入與存儲(chǔ)指令。寄存器對(duì)裝入指令可如下表示LDRD RX,[RZ,#OFFSET]約束條件1)只能裝入RX和RX+1,即Y=X+1(且RX偶數(shù))2)基址+偏移量必須為8字節(jié)對(duì)準(zhǔn)的。
該指令使兩個(gè)寄存器能裝入數(shù)據(jù)值,并含有類似上述的單寄存器裝入(LDR)指令的偏移量字段。該指令將存儲(chǔ)器中位于偏移量與寄存器RZ的內(nèi)容相加得出的地址處的數(shù)據(jù)值裝入寄存器RX。然后將相鄰即相繼的數(shù)據(jù)值地址處的數(shù)據(jù)值裝入寄存器RX+1。而且,因?yàn)樵撝噶畋辉O(shè)計(jì)成用于其寄存器堆被認(rèn)為是由能夠存儲(chǔ)兩個(gè)分離的單數(shù)據(jù)字或一個(gè)雙數(shù)據(jù)字的寄存器對(duì)組成的系統(tǒng)中,所以該指令只能用于寄存器RX為偶數(shù)寄存器例如寄存器0、寄存器2、寄存器4等的情況,并且通過(guò)將基址與偏移量相加得出的地址值必須在存儲(chǔ)器中以8字節(jié)的邊界對(duì)準(zhǔn)。
雖然該LDRD指令能在假定已適當(dāng)設(shè)置的硬件中具有良好的性能,但是,由于上述約束條件的關(guān)系,要編寫總是能夠利用這種指令的軟件是困難的。
也可提供類似的寄存器對(duì)存儲(chǔ)指令(稱為STRD指令),但是這仍受制于與LDRD指令完全相同的約束條件。
從上面討論中可看出,允許由單一指令指定的多裝入或存儲(chǔ)的上述兩種方法都對(duì)可為每次傳送識(shí)別的寄存器施加了重要約束條件。特別是,用于第一次傳送的寄存器的選擇會(huì)限制可用于隨后傳送的選擇。舉例來(lái)說(shuō),考慮LDMIA指令,如果在位屏蔽內(nèi)識(shí)別的第一寄存器是寄存器R4,則下一次傳送不能由寄存器R0到R4中的任一個(gè)執(zhí)行,而必須由含有較高寄存器編號(hào)的寄存器進(jìn)行。而且,考慮LDRD指令,無(wú)論指定哪一個(gè)寄存器用于第一次傳送,用于下一次傳送的寄存器是偶數(shù)/奇數(shù)寄存器對(duì)中的相鄰寄存器。
因此,本發(fā)明的目的是提供一種技術(shù),該技術(shù)允許數(shù)據(jù)處理設(shè)備響應(yīng)單一傳送指令以在寄存器堆和存儲(chǔ)器之間執(zhí)行多傳送,同時(shí)緩和與公知技術(shù)相關(guān)聯(lián)的一些約束條件。

發(fā)明內(nèi)容
從第一方面看,本發(fā)明提供一種數(shù)據(jù)處理設(shè)備,包括一種數(shù)據(jù)處理設(shè)備,包括數(shù)據(jù)處理單元,可用于對(duì)數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;寄存器堆,含有可用于存儲(chǔ)所述數(shù)據(jù)值供數(shù)據(jù)處理單元存取的多個(gè)寄存器,數(shù)據(jù)處理單元響應(yīng)單一傳送指令,執(zhí)行所述寄存器堆的對(duì)應(yīng)的多個(gè)所述寄存器與存儲(chǔ)器中相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送,單一傳送指令提供從中可導(dǎo)出所述相繼數(shù)據(jù)值地址的地址標(biāo)識(shí)符,還為各所述數(shù)據(jù)值傳送提供識(shí)別所述多個(gè)寄存器中是數(shù)據(jù)值傳送對(duì)象的寄存器,用于各所述數(shù)據(jù)值傳送的所述寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它所述數(shù)據(jù)值傳送指定的寄存器標(biāo)識(shí)符而被指定。
根據(jù)本發(fā)明,定義了單一傳送指令,該指令在數(shù)據(jù)處理單元上執(zhí)行時(shí)會(huì)引起執(zhí)行在寄存器堆中對(duì)應(yīng)的多個(gè)寄存器與存儲(chǔ)器中相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送。單一傳送指令提供從中可導(dǎo)出相繼數(shù)據(jù)值地址的地址標(biāo)識(shí)符。一般,地址標(biāo)識(shí)符會(huì)提供可從中導(dǎo)出一個(gè)數(shù)據(jù)值地址的信息,例如與第一次傳送相關(guān)聯(lián)的數(shù)據(jù)值地址,并且通過(guò)對(duì)地址增加或減少或乘以數(shù)據(jù)值長(zhǎng)度,可從該數(shù)據(jù)值地址導(dǎo)出任一個(gè)相繼數(shù)據(jù)值地址。
單一傳送指令還為各數(shù)據(jù)值傳送提供識(shí)別多個(gè)寄存器中是數(shù)據(jù)值傳送對(duì)象的那個(gè)寄存器。而且,用于各數(shù)據(jù)值傳送的寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它數(shù)據(jù)值傳送指定的寄存器標(biāo)識(shí)符而被指定,這在使用單一傳送指令時(shí)提供了很多靈活性,因此允許將顯著經(jīng)常發(fā)生的多條單獨(dú)的指令(每條用于傳送一個(gè)數(shù)據(jù)值)由該新的單一傳送指令取代。
特別地,可看出,當(dāng)比較該新的單一傳送指令與上述的LDMIA指令時(shí),現(xiàn)在不存在每個(gè)隨后執(zhí)行的傳送寄存器編號(hào)必須增長(zhǎng)這樣的限制。而且,當(dāng)與上述的LDRD指令比較時(shí),不要求傳送對(duì)應(yīng)于兩個(gè)相鄰寄存器發(fā)生,也不要求第一寄存器為偶數(shù)寄存器。結(jié)果,對(duì)于用一個(gè)或多個(gè)該新的單一傳送指令取代一系列均傳送單數(shù)據(jù)值的指令,這顯然存在更大的余地。
可以理解,所發(fā)生的傳送可以從寄存器到存儲(chǔ)器或從存儲(chǔ)器到寄存器。因此,在一個(gè)實(shí)施例中,單一傳送指令是一裝入指令,數(shù)據(jù)處理單元響應(yīng)該裝入指令而執(zhí)行從所述存儲(chǔ)器中相繼數(shù)據(jù)值地址到所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器的所述多個(gè)數(shù)據(jù)值傳送。通過(guò)這種方法,可由一個(gè)單一裝入指令引起將多數(shù)據(jù)值從存儲(chǔ)器裝入寄存器的操作,因此在碼長(zhǎng)中產(chǎn)生了改善,也為允許多個(gè)數(shù)據(jù)值并行裝入寄存器的硬件中的性能改善創(chuàng)造了條件。
在一個(gè)實(shí)施例中,為允許從寄存器到存儲(chǔ)器的傳送,單一傳送指令是存儲(chǔ)指令,數(shù)據(jù)處理單元響應(yīng)該存儲(chǔ)指令而執(zhí)行從所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器到所述存儲(chǔ)器中相繼數(shù)據(jù)值地址的所述多個(gè)數(shù)據(jù)值傳送。因此,這允許由單存儲(chǔ)指令指定從寄存器到存儲(chǔ)器的多個(gè)數(shù)據(jù)值傳送,因此可以再次減少碼長(zhǎng),同時(shí)也促進(jìn)硬件性能的增長(zhǎng),假定該硬件允許寄存器堆向存儲(chǔ)器并行輸出多于一個(gè)的數(shù)據(jù)值。
可以理解,地址標(biāo)識(shí)符可采用各種形式。然而,在一個(gè)實(shí)施例中,地址標(biāo)識(shí)符包括基址和偏移值??梢岳斫?,通過(guò)允許提供偏移值,該單一傳送指令可比上述的LDMIA指令具有更顯著的靈活性,LDMIA指令由于指令內(nèi)可用空間數(shù)被位屏蔽占用,所以不能指定任何偏移量。因此,與上述的LDMIA指令相比,不需要用基址直接識(shí)別序列中第一次傳送所需的地址。因?yàn)榛芬话阌梢粋€(gè)寄存器的內(nèi)容提供,這減少了在能執(zhí)行多傳送之前可能需要更新該寄存器內(nèi)容的情況。而且,與上述的LDRD指令相比,不要求地址為8字節(jié)對(duì)準(zhǔn)的。實(shí)際上,在本發(fā)明的一個(gè)實(shí)施例中,根據(jù)新的單一傳送指令確定的地址可為任何多個(gè)數(shù)據(jù)值長(zhǎng)度,因此,如果數(shù)據(jù)值長(zhǎng)度為32位,則地址可為4字節(jié)的任何倍數(shù)。
在一個(gè)實(shí)施例中,在單一傳送指令內(nèi)基址由用以識(shí)別設(shè)為存儲(chǔ)基址的所述多個(gè)寄存器之一的基址寄存器標(biāo)識(shí)符指定。一般,在指令本身存在足夠的空間用以直接指定基址,從而,此法減少了指令內(nèi)為指定基址所需的空間量。
在一個(gè)實(shí)施例中,偏移值在單一傳送指令內(nèi)由用以識(shí)別設(shè)為存儲(chǔ)偏移值的所述多個(gè)寄存器之一的偏移值寄存器標(biāo)識(shí)符指定。然而,因?yàn)槠浦狄话闶潜然沸『芏嗟闹?,所以?jīng)常發(fā)現(xiàn)指令本身有足夠的空間可用于直接指定偏移量,因此在備選實(shí)施例中,由設(shè)在單一傳送指令內(nèi)的立即值來(lái)指定偏移值。通過(guò)作為立即值來(lái)提供偏移值,避免了寄存器為確定偏移值而進(jìn)行查找的需要,這樣就可提高指令執(zhí)行的性能。另外,碼長(zhǎng)由于不需要附加指令來(lái)將偏移值裝入寄存器,碼長(zhǎng)較小。
可以理解,可由單一傳送指令執(zhí)行的多個(gè)數(shù)據(jù)值傳送的次數(shù)將取決于每次傳送該指令內(nèi)指定寄存器標(biāo)識(shí)符的可用空間。在一個(gè)實(shí)施例中,數(shù)據(jù)處理單元響應(yīng)單一傳送指令而執(zhí)行兩個(gè)數(shù)據(jù)值傳送。在一個(gè)特定實(shí)例中,單一傳送指令為32位指令,在這種情況下發(fā)現(xiàn)有足夠的空間可允許指定兩個(gè)寄存器標(biāo)識(shí)符,因此在單一傳送指令內(nèi)定義兩次傳送。然而,可以理解,隨著可用于指定指令的位數(shù)的增加,這勢(shì)必會(huì)增加可在指令內(nèi)識(shí)別的寄存器標(biāo)識(shí)符的數(shù)目,使單一傳送指令能定義更多的多個(gè)數(shù)據(jù)值傳送。更多的位會(huì)允許定義更大的偏移值,這可作為備選或另增的方式。
可以理解,數(shù)據(jù)值可為任意預(yù)定長(zhǎng)度。一般,各數(shù)據(jù)值可具有與寄存器堆中的各寄存器相同的長(zhǎng)度,因此,例如若各寄存器是32位長(zhǎng),則數(shù)據(jù)值一般可為32位數(shù)據(jù)值。然而,可以理解,如果需要,數(shù)據(jù)值實(shí)際上可小于寄存器長(zhǎng)度。在一個(gè)實(shí)施例中,各數(shù)據(jù)值包含一個(gè)32位數(shù)據(jù)字,所述相繼數(shù)據(jù)值地址可識(shí)別存儲(chǔ)器中一系列相鄰的32位數(shù)據(jù)字的地址。
盡管單一傳送指令的使用會(huì)直接實(shí)現(xiàn)軟件中碼長(zhǎng)的減少,但是當(dāng)軟件在硬件上執(zhí)行時(shí)也會(huì)發(fā)生所需傳送操作的增加,假定該硬件支持并行的多個(gè)數(shù)據(jù)值傳送。因此,在一個(gè)實(shí)施例中,數(shù)據(jù)處理設(shè)備還包含一個(gè)所述寄存器堆和所述存儲(chǔ)器之間的接口,以促進(jìn)所述多數(shù)據(jù)值的并行傳送性能。
本領(lǐng)域技術(shù)人員理解,由于數(shù)據(jù)處理設(shè)備內(nèi)其它邏輯單元的存在,“接口”一般會(huì)比寄存器堆和存儲(chǔ)器之間的單連接路徑更復(fù)雜,事實(shí)上存儲(chǔ)器一般是含有一個(gè)或多個(gè)高速緩存層、隨機(jī)存取存儲(chǔ)器(RAM)層等的多級(jí)存儲(chǔ)器系統(tǒng)。然而,假設(shè)經(jīng)由寄存器堆和存儲(chǔ)器之間的各種互連路徑在寄存器堆和存儲(chǔ)器之間并行傳送兩個(gè)或兩個(gè)以上數(shù)據(jù)值,則這會(huì)允許實(shí)現(xiàn)顯著的性能效益。例如,利用具有為寄存器堆提供兩個(gè)寫端口和兩個(gè)讀端口的硬件裝置,就有可能在以其它方式僅執(zhí)行數(shù)據(jù)值的單一裝入或存儲(chǔ)的相同時(shí)鐘周期數(shù)內(nèi),讓兩個(gè)數(shù)據(jù)值裝入寄存器堆,或者將兩個(gè)數(shù)據(jù)值從寄存器堆中存儲(chǔ)到存儲(chǔ)器。一般,如果將高速緩存用作存儲(chǔ)器,這會(huì)占用一個(gè)周期。
從第二方面看,本發(fā)明提供一種操作數(shù)據(jù)處理設(shè)備從而在寄存器堆和存儲(chǔ)器之間傳送數(shù)據(jù)值的方法,該寄存器堆含有多個(gè)寄存器,可用于存儲(chǔ)供對(duì)所述數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作的數(shù)據(jù)處理單元存取的所述數(shù)據(jù)值,所述方法包括響應(yīng)單一傳送指令,通過(guò)以下步驟執(zhí)行所述寄存器堆的對(duì)應(yīng)的多個(gè)所述寄存器與存儲(chǔ)器中相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送從單一傳送指令提供的地址標(biāo)識(shí)符中導(dǎo)出所述相繼數(shù)據(jù)值地址;參照所述單一傳送指令提供的對(duì)應(yīng)的寄存器標(biāo)識(shí)符,為各所述數(shù)據(jù)值傳送確定所述多個(gè)寄存器內(nèi)是數(shù)據(jù)值傳送的對(duì)象的寄存器,用于各所述數(shù)據(jù)值傳送的寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它所述數(shù)據(jù)值傳送所指定的寄存器標(biāo)識(shí)符而被指定;并執(zhí)行多個(gè)數(shù)據(jù)值傳送。
可以理解,由上述方法的各步驟規(guī)定的處理的某些部分可并行執(zhí)行,因此例如沒(méi)有必要在確定各數(shù)據(jù)值傳送的對(duì)象寄存器之前,導(dǎo)出所有的相繼數(shù)據(jù)值地址。而是,例如,可在進(jìn)行第一數(shù)據(jù)值傳送的同時(shí)確定下一傳送的數(shù)據(jù)值地址和寄存器。
從第三方面看,本發(fā)明提供一種含有可在數(shù)據(jù)處理設(shè)備上執(zhí)行的計(jì)算機(jī)程序的計(jì)算機(jī)程序產(chǎn)品,所述數(shù)據(jù)處理設(shè)備含有可用于對(duì)數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作的數(shù)據(jù)處理單元和具有可用于存儲(chǔ)所述數(shù)據(jù)值供數(shù)據(jù)處理單元存取的多個(gè)寄存器的寄存器堆,該計(jì)算機(jī)程序包括單一傳送指令,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行所述單一傳送指令時(shí),可通過(guò)以下步驟引起所述寄存器堆中對(duì)應(yīng)的多個(gè)所述寄存器與存儲(chǔ)器中相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送從單一傳送指令提供的地址標(biāo)識(shí)符中導(dǎo)出所述相繼數(shù)據(jù)值地址;參照所述單一傳送指令提供的對(duì)應(yīng)的寄存器標(biāo)識(shí)符,為各所述數(shù)據(jù)值傳送確定所述多個(gè)寄存器內(nèi)成為數(shù)據(jù)值傳送對(duì)象的寄存器,用于各所述數(shù)據(jù)值傳送的寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它所述數(shù)據(jù)值傳送指定的寄存器標(biāo)識(shí)符而被指定;并執(zhí)行多個(gè)數(shù)據(jù)值傳送。


以下,通過(guò)參照如附圖所說(shuō)明的本發(fā)明優(yōu)選實(shí)施例,僅以舉例方式進(jìn)一步描述本發(fā)明,其中圖1是示意說(shuō)明用于本發(fā)明一實(shí)施例的數(shù)據(jù)處理設(shè)備的相關(guān)部件的框圖;圖2是說(shuō)明在本發(fā)明一實(shí)施例的數(shù)據(jù)處理設(shè)備的部件之間的信號(hào)流的框圖;圖3是示意說(shuō)明在本發(fā)明另一實(shí)施例的數(shù)據(jù)處理設(shè)備的部件之間的信號(hào)流的框圖;圖4是說(shuō)明在圖2的設(shè)備上執(zhí)行本發(fā)明一實(shí)施例的裝入指令的流程圖;圖5是說(shuō)明在圖3的設(shè)備上執(zhí)行本發(fā)明一實(shí)施例的裝入指令的流程圖;圖6是說(shuō)明在圖2的設(shè)備上執(zhí)行本發(fā)明一實(shí)施例的存儲(chǔ)指令的流程圖;圖7是說(shuō)明在圖3的設(shè)備上執(zhí)行本發(fā)明一實(shí)施例的存儲(chǔ)指令的流程圖;圖8A至8E舉例說(shuō)明由兩個(gè)標(biāo)準(zhǔn)裝入指令構(gòu)成的序列,并表示那些裝入指令是否可由本發(fā)明實(shí)施例的單一裝入指令取代,且它們是否可由公知的現(xiàn)有技術(shù)單一裝入指令取代;以及圖9是示意說(shuō)明對(duì)本發(fā)明一實(shí)施例的單一裝入或存儲(chǔ)指令進(jìn)行編碼的示圖。
具體實(shí)施例方式
圖1是本發(fā)明的數(shù)據(jù)處理設(shè)備的示意框圖。在本例中,數(shù)據(jù)處理設(shè)備采用處理器內(nèi)核10的形式,處理器內(nèi)核中設(shè)置數(shù)據(jù)處理單元20和寄存器堆40。寄存器堆包含多個(gè)寄存器50和需要存取那些寄存器的各種其它邏輯單元,例如寫和讀端口。本領(lǐng)域的技術(shù)人員理解,數(shù)據(jù)處理單元一般在內(nèi)部包含多個(gè)功能性邏輯單元,例如算術(shù)邏輯單元(ALU)、浮點(diǎn)部件(FPU)、裝入/存儲(chǔ)單元(LSU)30等。LSU 30是數(shù)據(jù)處理單元20的一部分,負(fù)責(zé)控制寄存器堆40的寄存器50和數(shù)據(jù)存儲(chǔ)器60之間的數(shù)據(jù)值的傳送,因此LSU 30會(huì)用來(lái)執(zhí)行本發(fā)明優(yōu)選實(shí)施例的單一傳送指令。
當(dāng)數(shù)據(jù)處理單元20執(zhí)行指令時(shí),它一般會(huì)通過(guò)路徑24從寄存器50中檢索出數(shù)據(jù)值,并通過(guò)路徑22將數(shù)據(jù)值寫回到寄存器50。在本發(fā)明的一個(gè)實(shí)施例中,寄存器是32位寄存器,并且數(shù)據(jù)值是32位數(shù)據(jù)值(文中也稱為32位數(shù)據(jù)字)。
當(dāng)LSU 30執(zhí)行單一傳送指令時(shí),它可能通過(guò)路徑24從寄存器50檢索出某些數(shù)據(jù)、例如基址,然后一般通過(guò)路徑32向數(shù)據(jù)存儲(chǔ)器60輸出一個(gè)或多個(gè)地址,以識(shí)別傳送操作中涉及的存儲(chǔ)器地址。一般也將各種控制信號(hào)從LSU 30傳到寄存器堆40(后面將更詳細(xì)討論),以識(shí)別作為各種傳送操作對(duì)象的寄存器。在單一傳送指令是裝入指令時(shí),這會(huì)導(dǎo)致通過(guò)路徑34從數(shù)據(jù)存儲(chǔ)器60向寄存器堆40的相關(guān)寄存器50傳送數(shù)據(jù),反之,如果單一傳送指令是存儲(chǔ)指令,這會(huì)導(dǎo)致通過(guò)路徑36從寄存器堆40的相關(guān)寄存器50向數(shù)據(jù)存儲(chǔ)器60傳送數(shù)據(jù)。
圖2是說(shuō)明在為寄存器堆40設(shè)有單寫端口和單讀端口的示范性硬件實(shí)現(xiàn)中圖1討論的各種元件之間的信號(hào)流的框圖。用來(lái)執(zhí)行兩次裝入傳送的本發(fā)明優(yōu)選實(shí)施例的單一裝入指令可如下表示LDRDNEWRX,RY,[RZ,#OFFSET]將參照?qǐng)D4描述該指令在圖2的設(shè)備上的執(zhí)行。
如圖2所示,指令70被傳到LSU 30,在步驟200它被解碼以識(shí)別各種寄存器值RX、RY、RZ和偏移值,在該實(shí)施例中的偏移值作為L(zhǎng)DRDNEW指令內(nèi)的立即值提供。然后,在步驟205,一控制信號(hào)通過(guò)路徑100傳到寄存器堆40,從而引起從寄存器堆中讀取寄存器RZ,從而通過(guò)路徑110向LSU 30返回基址。
此后,在步驟210,寄存器RZ的內(nèi)容即基址被加到偏移值上以產(chǎn)生用于第一次傳送的地址??梢岳斫?,用以認(rèn)出用于第一次傳送的地址的基址與偏移量組合方式并不重要,因?yàn)橐粋€(gè)地址一旦已知,就可僅對(duì)該地址增加或減少字的大小來(lái)識(shí)別另一個(gè)地址。然而,以下方法可視為更有效將基址和偏移量設(shè)置得能認(rèn)出用于第一次傳送的地址。
在步驟210計(jì)算出地址,然后進(jìn)入步驟215,其中地址通過(guò)路徑120輸出到數(shù)據(jù)存儲(chǔ)器60,并且控制信號(hào)也通過(guò)路徑130輸出到存儲(chǔ)器60,以使存儲(chǔ)器認(rèn)出需要存儲(chǔ)器從所提供地址中讀取的數(shù)據(jù)值。
存儲(chǔ)器可采用多個(gè)周期來(lái)完成讀出過(guò)程,此后(假設(shè)在那個(gè)存儲(chǔ)器位置存在一有效數(shù)據(jù)值)將該數(shù)據(jù)值通過(guò)至寄存器堆40的路徑140而被認(rèn)定。因此,在步驟220,確定存儲(chǔ)器是否完成了讀出過(guò)程,如果完成了讀出過(guò)程,則進(jìn)入到步驟225,其中LSU 30被設(shè)置為通過(guò)路徑100向寄存器堆輸出控制信號(hào),從而使寄存器堆通過(guò)路徑140將從存儲(chǔ)器接收的數(shù)據(jù)字寫入寄存器RX。雖然路徑140和對(duì)應(yīng)的寫路徑150被示為數(shù)據(jù)存儲(chǔ)器60和寄存器堆40之間的單一互連線,但是本領(lǐng)域技術(shù)人員理解,由于數(shù)據(jù)處理設(shè)備內(nèi)其它邏輯單元的存在,數(shù)據(jù)存儲(chǔ)器60和寄存器堆40之間的互連一般是更復(fù)雜的,并不只是單連接路徑,事實(shí)上存儲(chǔ)器一般是多級(jí)存儲(chǔ)系統(tǒng)。圖2中的單路徑只是要說(shuō)明在特定時(shí)鐘周期內(nèi)僅有單一的數(shù)據(jù)值可從數(shù)據(jù)存儲(chǔ)器60傳送到寄存器堆40,類似地,圖2中的單寫路徑150是要說(shuō)明在特定時(shí)鐘周期內(nèi)單一的數(shù)據(jù)值可從寄存器堆40寫到數(shù)據(jù)存儲(chǔ)器60。
接收的數(shù)據(jù)值一旦寫入寄存器RX,過(guò)程就進(jìn)入步驟230,其中地址被增加字長(zhǎng)以產(chǎn)生一個(gè)相繼數(shù)據(jù)值地址,即鄰近用于第一次傳送的數(shù)據(jù)值地址的地址。前面提到的對(duì)指令進(jìn)行編碼以使得在此階段地址增加字長(zhǎng)并不是必需的,在一備選實(shí)施例中,可代之以采用以下方式在步驟230將地址減少字長(zhǎng)來(lái)識(shí)別下一地址。
一旦LSU 30在步驟230確定了新地址,就在步驟235將該地址通過(guò)路徑120輸出到數(shù)據(jù)存儲(chǔ)器60,同時(shí)將讀控制信號(hào)通過(guò)路徑130傳到數(shù)據(jù)存儲(chǔ)器60,從而使數(shù)據(jù)存儲(chǔ)器從經(jīng)識(shí)別的存儲(chǔ)器單元中讀出數(shù)據(jù)值。在步驟240一旦確定存儲(chǔ)器完成了讀出過(guò)程,LSU 30就在步驟245將控制信號(hào)通過(guò)路徑100輸出到寄存器堆,以使寄存器堆將通過(guò)路徑140從存儲(chǔ)器中接收的數(shù)據(jù)字寫入寄存器RY,過(guò)程隨后在步驟250結(jié)束。
以下參照?qǐng)D6討論可為本發(fā)明優(yōu)選實(shí)施例的單存儲(chǔ)指令執(zhí)行的一個(gè)類似過(guò)程,該指令可如下表示STRDNEWRX,RY,[RZ,#OFFSET]從圖6和圖4的比較中可看出,圖6的步驟400到410對(duì)應(yīng)于圖4的步驟200到210。在步驟415,地址通過(guò)路徑120輸出到數(shù)據(jù)存儲(chǔ)器60,并且寫控制信號(hào)也通過(guò)路徑130輸出。另外,在步驟420,LSU 30被設(shè)置為向寄存器堆40輸出控制信號(hào),從而使寄存器堆通過(guò)路徑150將寄存器RX中的數(shù)據(jù)字輸出到存儲(chǔ)器??梢岳斫?,步驟415和420可被并行執(zhí)行。在步驟425,確定存儲(chǔ)器是否完成了寫入過(guò)程(即已經(jīng)將從寄存器堆40接收的數(shù)據(jù)值寫入經(jīng)LSU 30識(shí)別的存儲(chǔ)單元),這一般由通過(guò)控制路徑130從存儲(chǔ)器60返回給LSU 30的信號(hào)指示。若存儲(chǔ)器完成了寫入過(guò)程,則過(guò)程進(jìn)入步驟430,其中LSU30用來(lái)將地址增加字長(zhǎng)。此后,在步驟435,通過(guò)路徑120輸出地址,同時(shí)通過(guò)路徑130輸出對(duì)應(yīng)的寫控制信號(hào)。另外,在步驟440,LSU 30通過(guò)路徑100將控制信號(hào)輸出到寄存器堆40,從而使寄存器堆通過(guò)路徑150將寄存器RY中的數(shù)據(jù)字輸出到存儲(chǔ)器。此后,在步驟445,確定存儲(chǔ)器是否完成了寫入過(guò)程,過(guò)程隨后在步驟450結(jié)束。
從上面對(duì)圖4和圖6的討論中可以理解,LDRDNEW和STRDNEW指令的使用有助于減少采用其它方式時(shí)可能需要的碼長(zhǎng),因?yàn)槿缟纤?,因?yàn)槟軌虮壬衔挠懻摰耐ㄟ^(guò)單一傳送指令執(zhí)行多傳送的任一現(xiàn)有技術(shù)更頻繁地被使用,但若在如圖2所示的設(shè)備上實(shí)現(xiàn),則不大可能產(chǎn)生顯著的性能效益,因?yàn)閳D2的設(shè)備不支持寄存器堆40和存儲(chǔ)器60之間的并行多傳送。LSU 30有可能以流水線方式設(shè)置,所以兩次裝入或存儲(chǔ)操作的發(fā)生一般會(huì)遍及兩個(gè)周期,而當(dāng)在寄存器堆和高速緩存之間發(fā)生單數(shù)據(jù)傳送時(shí),一般用一個(gè)周期。
然而,如果使用圖3的設(shè)備,則又可另外實(shí)現(xiàn)顯著的性能效益。從圖3與圖2的比較中顯見,設(shè)備基本上是相同的,但圖3中提供了兩個(gè)讀路徑140、150和兩個(gè)寫路徑150、155。因此,在圖3的例中,寄存器堆40設(shè)有兩個(gè)讀端口和兩個(gè)寫端口,從而允許并行地將兩個(gè)數(shù)據(jù)值裝入兩個(gè)寄存器,也允許寄存器堆40的兩個(gè)寄存器內(nèi)的數(shù)據(jù)值并行地輸出到存儲(chǔ)器。
圖5是說(shuō)明在圖3的設(shè)備上執(zhí)行LDRDNEW指令時(shí)由LSU 30執(zhí)行的處理的流程圖。通過(guò)比較圖5和圖4,可以看出圖5的步驟300到310對(duì)應(yīng)于圖4的步驟200到210。然而,在步驟310之后,過(guò)程進(jìn)入到步驟315,其中地址通過(guò)路徑120輸出到數(shù)據(jù)存儲(chǔ)器60,并且讀控制信號(hào)通過(guò)路徑130傳送,以指示存儲(chǔ)器讀取兩個(gè)相繼數(shù)據(jù)值(文中也稱為數(shù)據(jù)字)。在優(yōu)選實(shí)施例中,向存儲(chǔ)器暗示它應(yīng)當(dāng)從提供的地址讀取第一數(shù)據(jù)字并且從該地址的增加版本讀取第二數(shù)據(jù)字。
過(guò)程然后進(jìn)入步驟320,其中確定存儲(chǔ)器是否完成了對(duì)兩個(gè)字的讀取。這由通過(guò)路徑130從數(shù)據(jù)存儲(chǔ)器60返回給LSU 30的信號(hào)指示。如果完成了對(duì)兩個(gè)字的讀取,則過(guò)程進(jìn)入步驟355,其中LSU 30通過(guò)路徑100將兩個(gè)控制信號(hào)輸出給寄存器堆,從而使寄存器堆將從存儲(chǔ)器接收的數(shù)據(jù)字在第一寫端口寫入寄存器RX,同時(shí)將從存儲(chǔ)器接收的數(shù)據(jù)字在第二寫端口寫入寄存器RY。此后,過(guò)程在步驟360結(jié)束。通過(guò)這種方法,可實(shí)現(xiàn)顯著的性能效益,因?yàn)榭稍谄渌绞竭M(jìn)行單一裝入操作所需的時(shí)間內(nèi)執(zhí)行兩次裝入操作。
然而,可能的是,存儲(chǔ)器也許不總是能夠在特定時(shí)鐘周期內(nèi)讀取兩個(gè)字,例如因?yàn)槿绻刂肥?字節(jié)對(duì)準(zhǔn)的,則它在一個(gè)時(shí)鐘周期內(nèi)只能讀取兩個(gè)字,或者說(shuō)在該特定時(shí)鐘周期內(nèi)正好沒(méi)有時(shí)間讀取兩個(gè)數(shù)據(jù)字。因此,有必要規(guī)定兩個(gè)字未被讀取的情況。
因此,如果在步驟320確定存儲(chǔ)器未完成對(duì)兩個(gè)字的讀取,則在步驟322確定存儲(chǔ)器是否完成了對(duì)于第一數(shù)據(jù)字的讀取。這會(huì)再次由通過(guò)路徑130從數(shù)據(jù)存儲(chǔ)器60返回到LSU 30的信號(hào)指示。
如果在步驟322確定存儲(chǔ)器完成了對(duì)于第一字的讀取,則過(guò)程進(jìn)入到步驟325,其中LSU 30通過(guò)路徑100將控制信號(hào)輸出到寄存器堆40,從而使寄存器堆將從存儲(chǔ)器接收的數(shù)據(jù)字寫入寄存器RX中。此后,步驟330到350類似于圖4的步驟230到250,導(dǎo)致第二數(shù)據(jù)字存入寄存器RY。
從圖4與圖5的比較中可看出,當(dāng)LDRDNEW指令在圖3的設(shè)備上執(zhí)行時(shí),在任何場(chǎng)合存儲(chǔ)器能夠在同一時(shí)鐘周期內(nèi)完成對(duì)兩個(gè)字的讀取,于是提高了性能,從而在步驟355能夠使兩個(gè)字并行存入寄存器堆(即從兩個(gè)周期減為一個(gè)周期)。另外,通過(guò)設(shè)置步驟322到345,也適合存儲(chǔ)器不能在同一時(shí)鐘周期內(nèi)完成對(duì)兩個(gè)字的讀取的情況。
圖7是與圖6類似的流程圖,但是用于STRDNEW指令在圖3的設(shè)備上執(zhí)行的情況。圖7的步驟500-510類似于圖6的步驟400-410。然而,在步驟515,LSU 30將地址連同指示存儲(chǔ)器寫入兩個(gè)相繼的數(shù)據(jù)字的控制信號(hào)輸出到存儲(chǔ)器60,第一數(shù)據(jù)字寫入指定地址,第二數(shù)據(jù)字寫入由第一地址和數(shù)據(jù)字長(zhǎng)相加所確定地址的增加版本。
另外,在步驟520,LSU 30設(shè)置成通過(guò)路徑100向寄存器堆40輸出兩個(gè)控制信號(hào),從而使該寄存器堆將寄存器RX中的數(shù)據(jù)字通過(guò)第一讀端口輸出并將寄存器RY中的數(shù)據(jù)字通過(guò)第二讀端口輸出,結(jié)果,兩個(gè)數(shù)據(jù)字分別通過(guò)路徑150、155輸出到數(shù)據(jù)存儲(chǔ)器60。不難理解,步驟515和520可并行執(zhí)行。
在步驟525,確定存儲(chǔ)器是否完成了兩個(gè)字的寫入,這由通過(guò)路徑130返回給LSU 30的控制信號(hào)指示。如果已完成,則過(guò)程直接進(jìn)入步驟555,過(guò)程結(jié)束。否則,在步驟530,確定存儲(chǔ)器是否完成了第一字的寫入,如果沒(méi)有,則過(guò)程返回到步驟525。
然而,如果在步驟530確定存儲(chǔ)器已經(jīng)完成了第一字的寫入但沒(méi)有寫入第二字,則過(guò)程進(jìn)入步驟535,其中LSU設(shè)置為增加地址一字長(zhǎng)。此后,步驟540到555類似于圖6的步驟435到450,結(jié)果使第二數(shù)據(jù)字寫入到存儲(chǔ)器。
通過(guò)比較圖7與圖6可看出,當(dāng)STRDNEW指令在如圖3所示的設(shè)備上執(zhí)行時(shí),在存儲(chǔ)器能在同一時(shí)鐘周期內(nèi)完成兩個(gè)字的寫入的場(chǎng)合,可實(shí)現(xiàn)顯著的性能效益(即,一般從兩個(gè)周期減為一個(gè)周期,其中高速緩存用作存儲(chǔ)器)。
圖8A到8E給出兩個(gè)分離的裝入指令的說(shuō)明例,它們各使單一數(shù)據(jù)字傳送,它們是可由單一裝入指令替代的候選指令,并且相對(duì)于上述的已知LDMIA和LDRD指令特別說(shuō)明了由優(yōu)選實(shí)施例的LDRDNEW指令提供的附加的靈活性。
從圖8A可看出,圖8A中的兩條LDR指令可由單LDMIA指令、單LDRD指令或本發(fā)明優(yōu)選實(shí)施例的單LDRDNEW中的任一個(gè)取代。對(duì)于LDMIA指令,這是可能的,因?yàn)榧拇嫫骶幪?hào)對(duì)于兩個(gè)裝入操作是增加的且初始偏移量為0。對(duì)于LDRD指令,這是可能的,因?yàn)閮蓚€(gè)裝入指令供給一個(gè)的偶-奇寄存器對(duì)(even-odd pair ofregisters)。
從圖8B可看出,這個(gè)序列的兩個(gè)LDR指令不能由LDMIA指令取代,因?yàn)槌跏计屏繛榉?,而LDMIA指令不能指定非0的偏移量。然而,仍可使用LDRD指令,因?yàn)閮蓷lLDRD指令仍供給一個(gè)偶-奇寄存器對(duì)。另外,可使用LDRDNEW指令。
如圖8C所示,可使用LDMIA指令,因?yàn)閷?duì)于每次傳送寄存器是增加的,且初始偏移量為0。然而,不能使用LDRD指令,因?yàn)閭魉筒还┙o一個(gè)的偶-奇寄存器對(duì)。然而,仍可使用LDRDNEW指令,因?yàn)樗皇苁┘佑贚DRD指令上的約束條件的限制。
如圖8D所示,這對(duì)特定的LDR指令不能由LDMIA指令取代,因?yàn)樵谘b入之間寄存器沒(méi)有增長(zhǎng),另外初始偏移量為非0。而且,不能使用LDRD指令,因?yàn)榧拇嫫髋c一個(gè)偶奇寄存器對(duì)無(wú)關(guān)。然而,仍可使用LDRDNEW指令,因?yàn)樗皇苁┘佑贚DMIA或LDRD指令上的約束條件的限制。
再次,如圖8E所示,僅有LDRDNEW指令可代表兩條LDR指令的這個(gè)特定序列。不能使用LDMIA指令,因?yàn)槌跏计屏繛榉?,另外不能使用LDRD指令,因?yàn)橥ㄟ^(guò)將基址與偏移量相加后得出的地址不是如LDRD指令所需的8字節(jié)對(duì)準(zhǔn)的。然而,可使用LDRDNEW指令,因?yàn)樵趦?yōu)選實(shí)施例中該指令只需要地址是4字節(jié)的倍數(shù)。
因此,從圖8A到8E可看出,本發(fā)明優(yōu)選實(shí)施例的LDRDNEW指令比公知現(xiàn)有技術(shù)的多傳送指令更具靈活性,因此在任何給定代碼分段內(nèi)能夠更頻繁地實(shí)現(xiàn)碼密度和性能效益??梢岳斫?,對(duì)于存儲(chǔ)指令也可提供一些類似的示例,以說(shuō)明STRDNEW指令比已知STMIA或STRD指令更具靈活性。
如前所述,在本發(fā)明的一個(gè)實(shí)施例中,LDRDNEW和STRDNEW指令限定偏移值為8位長(zhǎng)。假定在一個(gè)實(shí)施例中還要求地址為4字節(jié)的倍數(shù),這意味著偏移值被乘以4,因此實(shí)際上提供了10位的偏移。
圖9說(shuō)明在一個(gè)特定實(shí)施例中LDRDNEW和STRDNEW指令的編碼格式,這些指令是32位指令。左邊的最初5位(11-15)是主解碼位,另3位(在半字1中的位10、9和6)指定該指令是LDRD/STRD,并且PUWL位表示是開始于基址或是開始于基址加上偏移量(P),是將基址加上還是減去偏移量(U),是裝入還是存儲(chǔ)(L),以及修改的地址是否寫回到原始寄存器中(W)。可看出,剩余的20位用于指定包含基址(Rbase)的寄存器、偏移值(imm8)和傳送中涉及的兩個(gè)寄存器(RXf和RXf2)。
從上面的描述中,可看出本發(fā)明實(shí)施例的LDRDNEW和STRDNEW指令與已知的裝入或存儲(chǔ)數(shù)據(jù)用的多傳送指令相比具有顯著的優(yōu)點(diǎn)。由于這些新指令顯著增強(qiáng)的靈活性,它們可比采用已知的現(xiàn)有技術(shù)的指令更頻繁地使用,因此使得在代碼密度和性能中的增加能夠比利用已知的現(xiàn)有技術(shù)指令以其它方式可能的代碼密度和性能中的增加更顯著。
雖然本文描述了特定實(shí)施例,但可以理解本發(fā)明不限于這些特定實(shí)施例,在本發(fā)明的范圍內(nèi)可進(jìn)行很多修改和添加。例如,從屬權(quán)利要求的特征可與其獨(dú)立權(quán)利要求的特征作出各種組合而不偏離本發(fā)明的范圍。
權(quán)利要求
1.一種數(shù)據(jù)處理設(shè)備,包括數(shù)據(jù)處理單元,可用于對(duì)數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;寄存器堆,含有可用于存儲(chǔ)所述數(shù)據(jù)值供所述數(shù)據(jù)處理單元存取的多個(gè)寄存器;所述數(shù)據(jù)處理單元響應(yīng)單一傳送指令,執(zhí)行所述寄存器堆的對(duì)應(yīng)的多個(gè)所述寄存器與存儲(chǔ)器中相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送,所述單一傳送指令提供從中可導(dǎo)出所述相繼數(shù)據(jù)值地址的地址標(biāo)識(shí)符,還為各所述數(shù)據(jù)值傳送提供識(shí)別所述多個(gè)寄存器中作為數(shù)據(jù)值傳送對(duì)象的寄存器,用于各所述數(shù)據(jù)值傳送的所述寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它所述數(shù)據(jù)值傳送所指定的寄存器標(biāo)識(shí)符而被指定。
2.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中,所述單一傳送指令是裝入指令,數(shù)據(jù)處理單元響應(yīng)裝入指令而執(zhí)行從所述存儲(chǔ)器中的相繼數(shù)據(jù)值地址到所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器的所述多個(gè)數(shù)據(jù)值傳送。
3.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中,所述單一傳送指令是存儲(chǔ)指令,數(shù)據(jù)處理單元響應(yīng)存儲(chǔ)指令而執(zhí)行從所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器到所述存儲(chǔ)器中的相繼數(shù)據(jù)值地址的所述多個(gè)數(shù)據(jù)值傳送。
4.如任一上述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,所述地址標(biāo)識(shí)符包含基址和偏移值。
5.如權(quán)利要求4所述的數(shù)據(jù)處理設(shè)備,其中,所述基址在單一傳送指令內(nèi)由基址寄存器標(biāo)識(shí)符指定,該標(biāo)識(shí)符用以識(shí)別所述多個(gè)寄存器中的一個(gè)用來(lái)存儲(chǔ)基址的寄存器。
6.如權(quán)利要求4或權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中,所述偏移值在單一傳送指令內(nèi)由一偏移值寄存器標(biāo)識(shí)符指定,該標(biāo)識(shí)符用以識(shí)別所述多個(gè)寄存器中的一個(gè)用來(lái)存儲(chǔ)偏移值的寄存器。
7.如權(quán)利要求4或權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中,所述偏移值由設(shè)在單一傳送指令內(nèi)的立即值指定。
8.如任一上述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,所述數(shù)據(jù)處理單元響應(yīng)單一傳送指令而執(zhí)行兩個(gè)數(shù)據(jù)值傳送。
9.如任一上述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,各所述數(shù)據(jù)值包括一個(gè)32位數(shù)據(jù)字,并且所述相繼數(shù)據(jù)值地址可識(shí)別所述存儲(chǔ)器中一系列相鄰的32位數(shù)據(jù)字的地址。
10.如任一上述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,還包含所述寄存器堆和所述存儲(chǔ)器之間的接口,該接口便于所述多數(shù)據(jù)值傳送的并行執(zhí)行。
11.一種操作數(shù)據(jù)處理設(shè)備以在寄存器堆和存儲(chǔ)器之間傳送數(shù)據(jù)值的方法,所述寄存器堆含有多個(gè)寄存器,用來(lái)存儲(chǔ)所述數(shù)據(jù)值供能夠?qū)λ鰯?shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作的數(shù)據(jù)處理單元存取,所述方法包括以下步驟響應(yīng)單一傳送指令,執(zhí)行所述寄存器堆的對(duì)應(yīng)的多個(gè)所述寄存器與存儲(chǔ)器中相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送,其過(guò)程如下從單一傳送指令提供的地址標(biāo)識(shí)符中導(dǎo)出所述相繼數(shù)據(jù)值地址;參照所述單一傳送指令提供的對(duì)應(yīng)的寄存器標(biāo)識(shí)符,為各所述數(shù)據(jù)值傳送確定所述多個(gè)寄存器內(nèi)作為數(shù)據(jù)值傳送對(duì)象的寄存器,用于各所述數(shù)據(jù)值傳送的寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它所述數(shù)據(jù)值傳送所指定的寄存器標(biāo)識(shí)符而被指定;執(zhí)行多個(gè)數(shù)據(jù)值傳送。
12.如權(quán)利要求11所述的方法,其中,所述單一傳送指令是裝入指令,響應(yīng)該裝入指令,所述方法執(zhí)行從所述存儲(chǔ)器中的相繼數(shù)據(jù)值地址到所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器的所述多個(gè)數(shù)據(jù)值傳送。
13.如權(quán)利要求11所述的方法,其中,所述單一傳送指令是存儲(chǔ)指令,響應(yīng)該存儲(chǔ)指令,所述方法執(zhí)行從所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器到所述存儲(chǔ)器中的相繼數(shù)據(jù)值地址的所述多個(gè)數(shù)據(jù)值傳送。
14.如權(quán)利要求11至13中任一項(xiàng)所述的方法,其中,所述地址標(biāo)識(shí)符包含基址和偏移值。
15.如權(quán)利要求14所述的方法,其中,所述基址在單一傳送指令內(nèi)由基址寄存器標(biāo)識(shí)符指定,該標(biāo)識(shí)符識(shí)別所述多個(gè)寄存器中的一個(gè)用來(lái)存儲(chǔ)所述基址的寄存器。
16.如權(quán)利要求14或權(quán)利要求15所述的方法,其中,所述偏移值在單一傳送指令內(nèi)由偏移值寄存器標(biāo)識(shí)符指定,該標(biāo)識(shí)符識(shí)別所述多個(gè)寄存器中的一個(gè)用來(lái)存儲(chǔ)所述偏移值的寄存器。
17.如權(quán)利要求14或權(quán)利要求15所述的方法,其中,所述偏移值由設(shè)在單一傳送指令內(nèi)的立即值指定。
18.如權(quán)利要求11至17中任一項(xiàng)所述的方法,其中,所述方法響應(yīng)單一傳送指令而執(zhí)行兩個(gè)數(shù)據(jù)值傳送。
19.如權(quán)利要求11至18中任一項(xiàng)所述的方法,其中,各所述數(shù)據(jù)值包含一個(gè)32位數(shù)據(jù)字,并且所述相繼數(shù)據(jù)值地址識(shí)別所述存儲(chǔ)器中的一系列相鄰的32位數(shù)據(jù)字的地址。
20.如權(quán)利要求11至19中任一項(xiàng)所述的方法,其中,所述寄存器堆和所述存儲(chǔ)器之間的所述多個(gè)數(shù)據(jù)值傳送并行地執(zhí)行。
21.一種含有可在數(shù)據(jù)處理設(shè)備上執(zhí)行的計(jì)算機(jī)程序的計(jì)算機(jī)程序產(chǎn)品,所述數(shù)據(jù)處理設(shè)備包括能夠?qū)?shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作的數(shù)據(jù)處理單元和含有用以存儲(chǔ)供所述數(shù)據(jù)處理單元存取的所述數(shù)據(jù)值的多個(gè)寄存器的寄存器堆,所述計(jì)算機(jī)程序包含單一傳送指令,所述單一傳送指令在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí)能夠引起所述寄存器堆中對(duì)應(yīng)的多個(gè)所述寄存器與存儲(chǔ)器中相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送,其過(guò)程如下從單一傳送指令提供的地址標(biāo)識(shí)符中導(dǎo)出所述相繼數(shù)據(jù)值地址;參照所述單一傳送指令提供的對(duì)應(yīng)的寄存器標(biāo)識(shí)符,為各所述數(shù)據(jù)值傳送確定所述多個(gè)寄存器內(nèi)作為數(shù)據(jù)值傳送對(duì)象的寄存器,用于各所述數(shù)據(jù)值傳送的寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它所述數(shù)據(jù)值傳送所指定的寄存器標(biāo)識(shí)符而被指定;執(zhí)行多個(gè)數(shù)據(jù)值傳送。
22.如權(quán)利要求21所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述單一傳送指令是裝入指令,該指令在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí)能夠使得從所述存儲(chǔ)器中的相繼數(shù)據(jù)值地址到所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器的所述多個(gè)數(shù)據(jù)值傳送被執(zhí)行。
23.如權(quán)利要求21所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述單一傳送指令是存儲(chǔ)指令,該指令在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí)能夠使得從所述寄存器堆中所述對(duì)應(yīng)的多個(gè)所述寄存器到所述存儲(chǔ)器中的相繼數(shù)據(jù)值地址的所述多個(gè)數(shù)據(jù)值傳送被執(zhí)行。
24.如權(quán)利要求21至23中任一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述地址標(biāo)識(shí)符包含基址和偏移值。
25.如權(quán)利要求24所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述基址在單一傳送指令內(nèi)由基址寄存器標(biāo)識(shí)符指定,該標(biāo)識(shí)符識(shí)別所述多個(gè)寄存器中的一個(gè)用來(lái)存儲(chǔ)所述基址的寄存器。
26.如權(quán)利要求24或權(quán)利要求25所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述偏移值在單一傳送指令內(nèi)由偏移值寄存器標(biāo)識(shí)符指定,該標(biāo)識(shí)符識(shí)別所述多個(gè)寄存器中的一個(gè)用來(lái)存儲(chǔ)所述偏移值的寄存器。
27.如權(quán)利要求24或權(quán)利要求25所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述偏移值由設(shè)在單一傳送指令內(nèi)的立即值指定。
28.如權(quán)利要求21至27中任一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中,當(dāng)所述單一傳送指令在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),進(jìn)行兩個(gè)數(shù)據(jù)值傳送。
29.如權(quán)利要求21至28中任一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中,各所述數(shù)據(jù)值包含一個(gè)32位數(shù)據(jù)字,并且所述相繼數(shù)據(jù)值地址識(shí)別存儲(chǔ)器中一系列相鄰的32位數(shù)據(jù)字的地址。
30.如權(quán)利要求21至29中任一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述多個(gè)數(shù)據(jù)值傳送在所述寄存器堆和所述存儲(chǔ)器之間并行地執(zhí)行。
31.一種計(jì)算機(jī)程序,可用來(lái)配置數(shù)據(jù)處理設(shè)備以使之執(zhí)行如權(quán)利要求11至20中任一項(xiàng)所述的方法。
32.一種載體,其中包含如權(quán)利要求31所述的計(jì)算機(jī)程序。
全文摘要
本發(fā)明提供用于在寄存器堆和存儲(chǔ)器之間傳送數(shù)據(jù)值的數(shù)據(jù)處理設(shè)備和方法。所述數(shù)據(jù)處理設(shè)備包含可用來(lái)對(duì)數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作的數(shù)據(jù)處理單元,以及設(shè)有用來(lái)存儲(chǔ)供數(shù)據(jù)處理單元存取的數(shù)據(jù)值的多個(gè)寄存器的寄存器堆。所述數(shù)據(jù)處理單元響應(yīng)單一傳送指令而執(zhí)行在寄存器堆中對(duì)應(yīng)的多個(gè)寄存器與存儲(chǔ)器中的相繼數(shù)據(jù)值地址之間的多個(gè)數(shù)據(jù)值傳送。所述單一傳送指令提供可從中導(dǎo)出相繼數(shù)據(jù)值地址的地址標(biāo)識(shí)符,還為各數(shù)據(jù)值傳送提供用以識(shí)別多個(gè)寄存器中作為數(shù)據(jù)值傳送對(duì)象的寄存器的寄存器標(biāo)識(shí)符。而且,用于各數(shù)據(jù)值傳送的寄存器標(biāo)識(shí)符能夠獨(dú)立于為其它數(shù)據(jù)值傳送指定的寄存器標(biāo)識(shí)符而被指定,從而提供了使用該單一傳送指令的顯著增強(qiáng)的靈活性。
文檔編號(hào)G06F9/312GK1802630SQ200480016078
公開日2006年7月12日 申請(qǐng)日期2004年2月11日 優(yōu)先權(quán)日2003年6月12日
發(fā)明者W·迪克斯特拉 申請(qǐng)人:Arm有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
囊谦县| 九龙坡区| 防城港市| 越西县| 宜兰县| 新乐市| 独山县| 东乡县| 富宁县| 广水市| 姚安县| 银川市| 汝南县| 金坛市| 岳普湖县| 武安市| 姚安县| 长宁区| 玉环县| 垫江县| 沙河市| 滦南县| 海城市| 将乐县| 湖南省| 图木舒克市| 闽清县| 丰都县| 汶川县| 来宾市| 大关县| 宁明县| 甘肃省| 江门市| 庆阳市| 大宁县| 锦屏县| 年辖:市辖区| 林周县| 秦安县| 榆社县|