專利名稱:處理器和信息處理設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的一個方面涉及處理器和信息處理設(shè)備。
背景技術(shù):
有時使用叫做軟件流水線的方法,以便編譯器可以改善處理器中處理程 序的性能。圖1顯示了軟件流水線的概念。例如,當(dāng)描述粗序源中的具有
依賴關(guān)系的進(jìn)程A并且硬件執(zhí)行正如程序所描述的進(jìn)程時,進(jìn)程A按順 序執(zhí)行,這可能會降低性能。在此情況下,在匯編程序源時編譯器優(yōu)化指令 行的順序,以便與進(jìn)程A沒有依賴關(guān)系并且要在進(jìn)程A之后執(zhí)行的進(jìn)程 B被插入在進(jìn)程A的指令行之間。從而,硬件可以并行地執(zhí)行進(jìn)程A和 B.此最優(yōu)化叫做"軟件流水線"。
根據(jù)當(dāng)程序包絲如"if,語句之類的糾語句的情況下的糾,是否執(zhí) 行指令大致有兩種方式。 一種U于糾是真還是假的糾轉(zhuǎn)移指令,它是 i據(jù)是否JW行指令行如圖2所示的那樣切換的。然而,如圖2所示,為 其確定是否^MNH^批阡它的指令行不能是軟件流水線的目標(biāo)'
根據(jù)條件執(zhí)行指令的另 一種方式是根據(jù)條件是真還是假在寄存器之間 移動數(shù)據(jù)的糾寄存器移動指令,或使用糾存儲指令的技術(shù),通過該技術(shù), 信息從寄存器中被讀取,并向存儲器中寫入。這些可以是軟件流水線的工具. 這些指令確U否要根據(jù)4Hf是真還是假來更新結(jié)果。換句話說,不管M 如何,指令行不會變化,相應(yīng)地,這些指4H^吏得甚至在包括M語句的部分 使用軟件流水線也成為可能(圖3和4)。
某些指令集只包括條件寄存器移動指令的定義,而不包括條件存儲指 令。當(dāng)使用這類指令集在處理器中的單一核或單一線程中執(zhí)行單一程序時, 按如下方式而不是使用M存儲指令來旨處理。首先,將存儲器數(shù)據(jù)加載 到寄存器中。此后,通過使用4H^寄存器移動指令,確定是否要更新存儲器,
并JJi過佳月存儲指令將該寄存器中的信息M在存儲器中。如果確定不應(yīng)
該更新程序中的存儲器,則再次向存儲器中寫入已經(jīng)加載到寄存器的數(shù)據(jù)。圖5顯示了使用條件移動指令代^Hf存儲指令的流程圖,
有一種通過在一個程序中使用多個核(線程并行性)來提高并行處理的
iUL的方法。當(dāng)執(zhí)行此方法時,有時共享存儲器中的數(shù)據(jù)。當(dāng)多個核用于線 程并行性時,條件存儲指令不能替換為條件寄存器移動指令。
下面將參考圖6 ^兌明其理由。
在圖6中假設(shè),核0執(zhí)行M是假的情況,核1執(zhí)行M是真的情 況,而其中一個核更新存儲器。如^目應(yīng)的核將數(shù)據(jù)從寄存器中加載到存儲 器中,核1首先將新的數(shù)據(jù)存儲在存儲器中,此后,核0再次將相同的數(shù) 據(jù)##在存儲器中,然后,數(shù)據(jù)在存儲器中變?yōu)榕f的數(shù)據(jù)。這會導(dǎo)致在處理 時出錯。
導(dǎo)致了圖6所示的問題,因為一旦核將數(shù)據(jù)加載到寄存器中,該數(shù)據(jù) 不能被另一個核共享,換句話說,不能執(zhí)行既能提高逸變又能共享存儲器數(shù) 據(jù)的線程并行性。此問題可以通過使用^ft存儲指令來加以解決。
如果使用^Hf存儲指令,則數(shù)據(jù)不加栽到寄存器上,而當(dāng)M是真時, 核1 ^!^NHt指4M!W的數(shù)據(jù),而當(dāng)M是假時,核0不存儲數(shù)據(jù), 相應(yīng)地,新的數(shù)據(jù)可以反映在存儲器中。
甚至在定義了對應(yīng)于條件存儲指令的指令的情況下,除浮點寄存器之 外,還有一個具有專用于屏蔽(mask)的寄存器的指令集。在此情況下,可 以通過使用屏蔽的存儲,執(zhí)行上面的線程并行性。然而,必須檢測屏蔽寄存 器的依賴關(guān)系,這會增大硬件大小。并非所有的程序都需要屏蔽,因此,硬 件大小的增大會降低成本效率.
在諸如SPARC-V9 (SPARC是注冊商標(biāo))的條件指令中,ICC或 XCC被用作整數(shù)的條件碼,而fcc0、 fccl、 fcc2以及fcc3被用作浮點的條 件碼。當(dāng),例如在浮點的條件下執(zhí)行條件指令時,只有四個獨立條件(即, fcc0, fccl, fcc2,以及fcc3),相應(yīng)地,不能執(zhí)行具有五個或更多個條件的 ##進(jìn)程。這種對可以被保持的條件的數(shù)量的限制還使得通過編譯器不可能 實現(xiàn)并行性。圖8顯示了當(dāng)M碼的最大數(shù)量是2時的示例。
近年來, 一直使用SIMD(單指令多數(shù)據(jù))擴展處理,其中多個寄存器 的數(shù)據(jù)是作為單一指令的輸入數(shù)據(jù)的向量元素并行地處理的;采用了 SIMD 以改善標(biāo)量處理器的性能。當(dāng)定義了條件指令的SIMD處理時,必須根據(jù) 某一M執(zhí)行條件SIMD指令,從而,必須使M代碼或屏蔽寄存器以這樣的方式展開,以使得它們新對應(yīng)于每一個元素的SIMD。
如上文所描述的,在處理器的常規(guī)條件指令中,^Hf進(jìn)程的數(shù)量是受條 件碼的數(shù)量限制的,這是有問題的。
發(fā)明內(nèi)容
本發(fā)明的一個方面的目的是提供執(zhí)行存儲指令而不受條件指令中的條 件碼的數(shù)量限制的處理器,
此外,為了響應(yīng)作為本發(fā)明的一個方面的目的的處理器,要求定義用于 改善標(biāo)量處理器的性能的SIMD指令的條件指令的SIMD進(jìn)程。
根據(jù)本發(fā)明的一個方面,處理器在浮點寄存器中存儲4Hf數(shù)據(jù),操作單 元船糾浮點存儲指令,根據(jù)糾數(shù)據(jù)確狄否將存儲數(shù)據(jù)存儲在存儲器 中。如果浮點寄存器采用SIMD配置,則處理器可以將條件數(shù)據(jù)存儲在 S1MD的每一個元素的浮點寄存器中,而搮作單元執(zhí)行條件浮點存儲指令, 根據(jù)^Hf數(shù)據(jù)確U否存儲SIMD ##指令的每一個元素的數(shù)據(jù)。
il^將公開的處理器能夠執(zhí)行M進(jìn)程而不受M碼的數(shù)量的限制.此 外,處理器還能夠通過用于普通浮點運算的讀取端口讀取M數(shù)據(jù),還能夠 使用浮點寄存器的,關(guān)系檢測電路a測依賴關(guān)系。從而,可以實現(xiàn)成本 降低的M浮點存儲指令。
圖1顯示了軟/降流水線;
圖2顯示了當(dāng)存在^轉(zhuǎn)移指令時的軟件流水線;
圖3顯示了4Ht轉(zhuǎn)移指令和條件指令;
圖4顯示了當(dāng)存在條件指令時的軟件流水線;
圖5是顯示了當(dāng)使用條件移動指令代^H^存儲指令時的操作的流程
圖6顯示了當(dāng)使用條件移動指令代替M存儲指令用于以多核配置執(zhí) 行并行處理時發(fā)生的問題;
圍7顯示了M存儲指令;圖8顯示了當(dāng)至多有兩段M數(shù)據(jù)時根據(jù)條件指令的軟件流水線;
圖9顯示了包括浮點寄存器和運算符的配置;
圖10顯示了 SIMD浮點寄存器和運算符的配置;
圖11顯示了^iL據(jù)本發(fā)明的實施例的處理器的^Mt;
圖12顯示了響應(yīng)于SIMD條件浮點存儲指令的處理器的IMt;
圖13顯示了^l據(jù)本發(fā)明的實施例的處理器的配置;
圖14顯示了M浮點存儲指令的格式;
圖15顯示了浮點比較運算指令和浮點比特邏輯運算指令的格式;
圖16顯示了浮點比較運算指令的處理;
圖17顯示了浮點比特邏輯運算指令的處理;
圖18顯示了非M浮點存儲指令的格式;
圖19顯示了存儲進(jìn)程;
圖20顯示了務(wù)降浮點存儲指令的即時字段的進(jìn)程;
圖21顯示了用于生成存儲使能信號的電路;
圖22顯示了 SIMD存儲進(jìn)程;
圖23顯示了浮點數(shù)據(jù)的格式;以及
圖24 M示了存儲數(shù)據(jù)的旁i^bypass)進(jìn)程的流港圖。
具體實施例方式
下面將參考
本發(fā)明的實施例。本發(fā)明的范圍不僅限于下面給出 的示例,在不偏離本發(fā)明的精神的情況下可以進(jìn)行各種更改。
首先,說明本發(fā)明的一個示例的概述。
在諸如服務(wù)器等等之類的信息處理設(shè)備中提供了本示例的處理器。在信 息處理設(shè)備中,各種輸"輸出設(shè)備、存儲器、>^盤設(shè)備等等通過總線連接到 處理器。
本示例中的處理器存儲用于執(zhí)行浮點寄存器中的條件存儲指令的條件 數(shù)據(jù)。處理器定義用于生成M數(shù)據(jù)的浮點比較運算指令,并將浮點比較運算指令的結(jié)果(真或假)存儲在浮點寄存器中。此外,處理器定義存儲^
數(shù)據(jù)的浮點寄存器之間進(jìn)行的諸如AND, OR, XOR以及NOT的比特邏 輯運算指令。
本示例中的處理器根據(jù)顯示了作為存儲在浮點寄存器中的浮點比較運 算指令或邏輯運算指令的結(jié)果的真或假的值,執(zhí)行4Hf存儲進(jìn)程。要求4Ht
存儲指令的4Ht數(shù)據(jù)存儲在浮點寄存器中,并且要求^H如上文所描述的浮
點寄存器中存儲的M數(shù)據(jù)的值(真或假)來處理浮點存儲的指令,在這里 簡稱為條件浮點存儲指令。
使用諸如屏蔽寄存器的專用寄存器iMHNHf數(shù)據(jù)的指令體系結(jié)構(gòu),除 浮點寄存器之外,還需要屏蔽寄存器的寄存器文件,并皿需要專用于屏蔽 寄存器的用**測依賴關(guān)系的電路。然而,在本實施例中,作為浮點比較運 算指令和浮點邏輯運算指令的結(jié)果的值(真/假)存儲在浮點寄存器中,從而,
可以如此使用浮點寄存器,使得可以使用檢測浮點數(shù)據(jù)的依賴關(guān)系的檢測電 路。從而,可以不必新提,何其M件。
圖11顯示了當(dāng)發(fā)出條件浮點存儲指令時本示例中的處理器的操作的 概述。
從浮點寄存器11的第一操作數(shù)(對應(yīng)于圖11中的操作數(shù)o)讀M
儲數(shù)據(jù),并將其##在存儲數(shù)據(jù)寄存器14中。從浮點寄存器11的第4 作數(shù)(對應(yīng)于圖11中的操作數(shù)1)讀取M數(shù)據(jù)。操作單元13引用從指 令控制單元12傳輸?shù)牟僮鞔a,如果操作碼表示^存儲指令,則操作單元 根據(jù)4Hf數(shù)據(jù)生成存儲使能信虧。生成的存儲使能信號存儲在存儲使能寄存 器15中。高速緩存單元16根據(jù)存儲使能寄存器15的值來務(wù)賭已經(jīng)存儲 在M數(shù)據(jù)寄存器14中的數(shù)據(jù)。
響應(yīng)于存儲指令,存儲器地址和存儲數(shù)據(jù)被轉(zhuǎn)送到高速緩沖存儲器。從 浮點寄存器11讀M儲數(shù)據(jù)需要一個讀取端口。作為科學(xué)計^L行的浮點 SOP(乘積之和)運算使用三段寄存器數(shù)據(jù)作為源,相應(yīng)地,寄存器文件可 以使用用于一個操作管道(operation pipe)的三個讀取端口(參見圖9中的浮 點寄存器和操作單元的配置)。相應(yīng)地,在示例中的條件浮點存儲指令中, 使用此操作管道的兩個讀取端口,以便與存儲數(shù)據(jù)同時讀取M數(shù)據(jù)。如上 文所描述的,可以使用浮點寄存器11的三個現(xiàn)有的讀取端口,而無需新的 硬件。
圖12顯示了當(dāng)需要對浮點寄存器11執(zhí)行SIMD展開時用于處理條件浮點存儲指令的處理器的操作。
也是在此情況下,同時對用于存儲條件的寄存器,即浮點寄存器11進(jìn)
行SIMD展開。圖12顯示了這樣的情況有SIMD的兩個元素,每一個 元素的配置與圖11中所顯示的相同。然而,在SIMD條件存儲指令的情 況下,從指令控制單元12傳輸?shù)牟僮鞔a被輸入到相應(yīng)的元素的操作單元 13-0, 13-1,13-N。
SIMD的每一個元素都具有操作管道,每一個操作管5MP具有用于寄存 器文件的三個讀取端口 (參見圖10中的浮點寄存器和操作單元的配置)。 每一個操作管道的兩個讀取管道用于與存儲數(shù)據(jù)同時地讀取^fr數(shù)據(jù),與圖 11所示的情況相似。
如圖11和12所示,^!存儲在本示例中的浮點寄存器的^ff數(shù)據(jù)來 執(zhí)行##進(jìn)程。通過將M數(shù)據(jù)存儲在浮點寄存器中,使得可執(zhí)行^M^ 指令,而不受^ff碼的數(shù)量的限制。具體來說,在具有擴展的浮點寄存器區(qū) 域和許多浮點寄存器的處理器中,可以利用較大數(shù)量的條件來執(zhí)行條件指 令。
接下來,將通過參考圖13比較詳細(xì)地描述本示例。
圖13中的處理器具有初級指令高速緩存33、次級高速緩存/存儲器單 元34、初級數(shù)據(jù)(primary data)高速緩存32、指令解碼單元35、操作處理 單元36、地址生成單元37、提交控制單元38、負(fù)載處理單元39、存儲處 理單元40、定點寄存器31,以及浮點寄存器30。
指令解碼單元35對從初級指令高速緩存33中讀取的指令進(jìn)行解碼。 操作處理單元36包括用于執(zhí)行運算的運算符等等。地址生成單元37生成 要用于從經(jīng)過解碼的指令進(jìn)#^問的地址。負(fù)載處理單元39處理負(fù)栽指 令。存儲處理單元40處理存儲指令。提交控制單元38控制寄存器和## 器的更新。
在本示例中,當(dāng)M為真時存儲數(shù)據(jù)的"真-M浮點存儲指令"以及當(dāng) 糾被假時絲數(shù)據(jù)的"假-糾浮點存儲指令"被定義為糾浮點存儲指令。
圖14顯示了條件浮點存儲指令的指令格式。在圖14所示的示例中, 條件浮點存儲指令包括用于指定指令類型的操作碼部分(OPCODE7:0)、用 于指定用來生成存儲器地址的定點寄存器地址的RS1 (RS1[4:0)、即時指 定比特(I[O])、帶符號的擴展即時字段(SIGNED-IMMOP7:0)、用于指定對存儲數(shù)據(jù)進(jìn)行存儲的浮點寄存器的RD字段(RD[4:0),以及用于指定用 來存儲M數(shù)據(jù)的浮點寄存器的RS2字段(4:0)。當(dāng)即時指定比特(0)是"1"時,可以通過下列等式獲得存儲器地址。存儲器地址=RS1數(shù)據(jù)+帶符號的擴展IMM (即時8比特< <2)浮點存儲數(shù)據(jù)是由RD代表的浮點寄存器的值。M數(shù)據(jù)是由RS2代表的浮點寄存器的最高有效位,即,符號位。如上文所描述的,根據(jù)條件浮點存儲指令,操作數(shù)2(RS2)的寄存器被 分配到M寄存器,相應(yīng)地,指定用于存儲數(shù)據(jù)的務(wù)睹器地址的方法是基于 操作數(shù)1和即時字段之和。條件浮點存儲指令可以將存儲數(shù)據(jù)限制到四字 節(jié)的單精度浮點長度和八字節(jié)的^度浮點長度。相應(yīng)地,指令操作數(shù)的即 時字段和兩個比特的移位一起使用。從而,可以^1^地址RS寄存器的 位移和即時字段相加,在寬范圍內(nèi)指定存儲器地址。接下來,參考圖15到17,說明本示例中的用于生成^Ht數(shù)據(jù)的浮點 比較運算指令和浮點比特邏輯運算指令。首先,fcompgt指令、fcompge指令、fcomplt指令、fcomple指令、 fcompeq指令和fcompne指令被定義為浮點比較運算指令。響應(yīng)于這些浮點運算指令,將兩個浮點寄存^i彼此進(jìn)行比較,并將比較的結(jié)果(真或假) 返回到浮點寄存器。當(dāng)RS1>RS2時,fcompgt指令向RD的最高有效位返回"1"當(dāng)RS1^RS2時,fcompge指令向RD的最高有效位返回"1"當(dāng)RSKRS2時,fcomplt指令向RD的最高有效位返回"1"當(dāng)RS1SRS2時,fcomple指令向RD的最高有效位返回"1"當(dāng)RS1 = RS2時,fcompeq指令向RD的最高有效位返回"1"當(dāng)RS1^RS2時,fcompne指令向RD的最高有效位返回"1"圖15顯示了浮點比較運算指令的格式。圖15所示的浮點比較運算指 令包括操作碼部分(OPCODE[7:0)、RSI字段(RS4:0])、帶符號的擴展 即時字段(SIGNED-IMMOP[8:0)、RD字段(RD[4:0),以及RS2字段 ([4:0),根據(jù)操作碼(OPCODE字段和SUB - OPECODE字段)識別諸 如fcompgt指令和fcompge指令的指令類型。圖16是顯示了浮點比較運算進(jìn)程的圖形。浮點比較運算符63比較來自浮點寄存器61的操作數(shù)0 (RS1)和操作數(shù)1(RS2),并將結(jié)果存儲在寄存器64中,還向RD寫入結(jié) 果。在本示例中,當(dāng)操作數(shù)的比較結(jié)果是真時,向包括RD的最高有效位 的所有比特寫入"1",而當(dāng)結(jié)果是假時,向包括RD的最高有效位的所有 比特寫入"0"。當(dāng)"if,語句包M如多個比較的多個4Hf時,必須執(zhí)行上面獲得的## 數(shù)據(jù)的比特的AND、 OR、 NOT,以及XOR的運算。相應(yīng)地,執(zhí)行RS1和 RS2的數(shù)據(jù)的比特的邏輯運算,定義了浮點比特邏輯運算指令fand指令、 for指令,fnot指令,以及fxor指令,用于向RD寫入結(jié)果。浮點比特邏 輯運算指令的格式與圖15所示的格式相似。圖17顯示了浮點比特邏輯運 算指令進(jìn)程。浮點比特邏輯運算符73比較操作數(shù)0 (RS1)和操作數(shù)1 (RS2),并將比較的結(jié)果M在運算結(jié)果寄存器74中,還向RD寫入結(jié)果。 類似于浮點比較運算指令,當(dāng)搮作數(shù)的比較結(jié)果是真,向包括RD的最高 有效位的所有比特寫入"1",而當(dāng)結(jié)果是假時,向包括RD的最高有效位 的所有比特寫入"0"。浮點運算比較指令和浮點比特邏輯運算指令分別定義了)5Ult度浮點(八 字節(jié))和單精度浮點(四字節(jié))。操作碼用于區(qū)別雙浙度浮點和單精度浮點。在上文中,已說明了本示例中的指令格式、浮點比較運算指令、以及浮 點邏輯運算指令的定義。接下來,將說明存儲進(jìn)程。首先,將說明非條件的浮點存儲指令'非條件的浮點存儲指令這里簡稱 為"非條件浮點存儲指令"。圖18顯示了非條件浮點存儲指令的格式。指4^格式包括IMt碼部分(OPCEOE[7:0)。此外,指令格式還包括用于 指^A否使用即時搮作數(shù)的即時指定比特(I[O])。當(dāng)1
表示指數(shù),而[22:0表示尾數(shù)。在xMt度浮點數(shù)據(jù)的格式中,63表示符號,62:52表示指數(shù),而[51:0表示尾數(shù)。通過使用4H^數(shù)據(jù) 的寄存器的最高有效位,即,通過使用圖23中的符號位,當(dāng)浮點數(shù)據(jù)的符 號(即,正的或負(fù)的)是唯一糾時,存儲了數(shù)據(jù)的寄存器翻作糾數(shù)據(jù), 并可以執(zhí)行條件浮點存儲指令。圖19中的初級數(shù)據(jù)高速緩存98的存儲緩沖區(qū)95從地址管道接收 諸如地址或操作碼的必需的信息,還從存儲數(shù)據(jù)的管道接收存儲數(shù)據(jù)和^ 使能信號。如圖22所示,在SIMD條件浮點存儲指令的情況下,初級數(shù) 據(jù)高速緩存98的存儲緩沖區(qū)95,接收存儲數(shù)據(jù)和存儲使能信號。在圖19和22中,提交控制單元96從初級數(shù)據(jù)高速緩存98接收 "進(jìn)程完成報告",指明對于存儲器地址沒有陷阱(trap),還接收一個^L告, 該報告指明存儲數(shù)據(jù)被從浮點運算符管道92傳輸?shù)匠跫墧?shù)據(jù)高速緩存 98,提交控制單元根據(jù)程序順序提交指令。當(dāng)提交指令時,提交控制單元96 將一個需要向高速緩存寫入名稱為"存儲提交"的存儲數(shù)據(jù)的信號傳輸?shù)酱鎯彌_區(qū)95。提交控制單元96不區(qū)別非M存儲指令和SIMD。當(dāng)圖19中的存儲緩沖區(qū)95接收存儲提交時,并且當(dāng)對應(yīng)于提交的請 求是IW存儲指令時,存儲緩沖區(qū)95引用存儲使能信號,并且當(dāng)存儲使能 信號是"l"時,將存儲數(shù)據(jù)存儲在高速緩存中。在非糾存儲指令的情況下, 存儲數(shù)據(jù)被存儲在高速緩存中,而不管存儲使能信號如何。當(dāng)已經(jīng)接收了存儲提交的端口的請求是SIMD時,圖22中的存儲緩 沖區(qū)95'引用相應(yīng)的元素的存儲使能信號,并存儲其存儲使能信號是"l"的元 素的存儲數(shù)據(jù)'在非4Ht存儲指令的情況下,存儲緩沖區(qū)95將存儲數(shù)據(jù)存 儲在高速緩存中,而不管存儲使能信號如何。接下來,將說明存儲指令進(jìn)程中的存儲數(shù)據(jù)的旁路進(jìn)程'響應(yīng)于非4Ht存儲指令,當(dāng)與存儲指令的地址相同的地址之后的加栽請 求被作出時,在存儲緩沖區(qū)中比較地址。當(dāng)這些地J^此不相同時,數(shù)據(jù)從 主高速緩存中被讀取,并被提供給寄存器單元。當(dāng)這些地i^目同時,在數(shù)據(jù) 被寫入到高速緩存單元之前,從保留了存儲數(shù)據(jù)的存儲數(shù)據(jù)緩沖區(qū)旁5Mm 數(shù)據(jù),加栽的數(shù)據(jù)被返回到寄存器單元中。然而,是否要將糾存儲的數(shù)據(jù)寫入到高速緩存中絲于存儲使能比特 來確定的。當(dāng)加載地址與4H^存儲指令中使用的地ib^同時,在存儲數(shù)據(jù)緩 沖區(qū)中設(shè)置存儲數(shù)據(jù)和存儲使能信號,此后,當(dāng)存儲使能信號是"l,,時,存 儲數(shù)據(jù)被旁路。另一方面,當(dāng)存儲使能信號是"0,,時,存儲數(shù)據(jù)不被旁路, 數(shù)據(jù)從高速緩存單元中被讀取,并被返回到寄存器單元。圖24是存儲數(shù)據(jù)的旁路(bypass)進(jìn)程的流艱圖。首先,在Sl中,將存儲緩沖區(qū)的存儲器地址與后續(xù)的加載請求地址進(jìn) 行比較。當(dāng)它們彼此相同時,進(jìn)程i^X S2。當(dāng)存儲器地址和后續(xù)的加載請 求地址不相同時,進(jìn)程進(jìn)入S5,作為加載的數(shù)據(jù),返回初級數(shù)據(jù)高速緩存 的數(shù)據(jù)。在S2中,確定存儲緩沖區(qū)的操作碼是否為IHf存儲指令。當(dāng)操作碼是 IHf存儲指令時(是),進(jìn)程l S3。當(dāng)操作碼是非M存儲指令時(否), 進(jìn)程i^X S4,作為加載的數(shù)據(jù),存儲緩沖區(qū)的數(shù)據(jù)被旁路。當(dāng)進(jìn)^ S2進(jìn) 入S3時,確定緩沖區(qū)的存儲使能信號是否是"l",當(dāng)存儲使能信號是"l" (是)時,進(jìn)程進(jìn)入S4,其中存儲緩沖區(qū)的數(shù)據(jù)作為加栽的數(shù)據(jù)被旁路。 當(dāng)存儲使能信號不是"l"(否)時,進(jìn)程ii^ S5,其中初級數(shù)據(jù)高速緩存的數(shù)據(jù)作為加載數(shù)據(jù)被返回,而無需旁路存儲緩沖區(qū)。基于存儲使能信號,確定是否要將每一個SIMD元素的數(shù)據(jù)寫入到高 速緩存中。相應(yīng)地,當(dāng)在SIMD4Hf存儲指令中使用的后續(xù)的加載請求和地 址彼此相同時,在存儲數(shù)據(jù)緩沖區(qū)中設(shè)置存儲數(shù)據(jù)和存儲使能信號,此后, 當(dāng)賴使能信號是"l"時,存儲數(shù)據(jù)被旁路。當(dāng)^ Mt使能信號是"0"時,存儲 數(shù)據(jù)不被旁路。此后,數(shù)據(jù)從高速緩存單元中被讀取,并被返回到寄存器單 元中。SIMD ^ff存儲指令的處理;j^與圖24中的處理'絲相同,因此省 略了其說明。在上面的對本發(fā)明的示例的說明中,對于上文所描述的條件浮點存儲指 令、浮點比較運算指令、浮點邏輯運算指令,以及相應(yīng)的SIMD指令的雙 精度浮點和單精度浮點執(zhí)行了定義和處理。上文所描述的處理器具有這樣的特征其中,4Hf數(shù)據(jù)存儲在浮點寄存 器本身中,操作單元^^Hf浮點存儲指令,根據(jù)^fr數(shù)據(jù)確^A否對存儲 數(shù)據(jù)進(jìn)行存儲。換句a,不提供專用于存儲^Hf浮點存儲指令的^Hf數(shù)據(jù) 的屏蔽寄存器,并且如此定義指令,使得糾數(shù)據(jù)存儲在浮點寄存器中。從 而,可以通過用于普通浮點運算的讀取端口讀取^ft數(shù)據(jù),并可以檢測, 關(guān)系而無需使用,關(guān)系檢測電路,從而,可在硬件方面以較低的成本實現(xiàn) 條件浮動存儲指令。此外,4Hf數(shù)據(jù)存儲在浮點寄存器中,相應(yīng)地,編譯器 可以被進(jìn)一步優(yōu)化,^Ht數(shù)據(jù)片的數(shù)量不受IHt碼的數(shù)量的P艮制。此外,執(zhí) 行浮點寄存器的SIMD展開,以便條件浮點存儲指令可以變成SIMD格 式。在某些程序中,通過定點數(shù)據(jù)的條件確定是存儲定點數(shù)據(jù)還是存儲浮點 數(shù)據(jù),而在其他程序中,通過浮點數(shù)據(jù)的糾確定是否存儲定點數(shù)據(jù),然而, 在科學(xué)計算領(lǐng)域使用的許多超級計算機處理浮點數(shù)據(jù),因而本發(fā)明在考慮到硬件的電路量和編譯器的最優(yōu)化的情況下取得巨大的效果。
權(quán)利要求
1.一種處理器,包括用于存儲條件數(shù)據(jù)的浮點寄存器;以及用于執(zhí)行根據(jù)浮點寄存器中存儲的條件數(shù)據(jù)來確定是否將存儲數(shù)據(jù)存儲在存儲器中的條件浮點存儲指令的操作單元。
2.根據(jù)權(quán)利要求1所述的處理器,其中 所述^^數(shù)據(jù)^ft在浮點寄存器的最高有效位中。
3. 根據(jù)權(quán)利要求2所述的處理器,其中所述操作單元通過比較兩個浮點寄存器的值并將比較的結(jié)果作為4Ht 數(shù)據(jù)存儲在浮點寄存器的最高有效位中,來進(jìn)一步執(zhí)行浮點比較運算指令。
4. 根據(jù)權(quán)利要求2所述的處理器,其中 所述^ft單itii一步在多>NHf數(shù)據(jù)片之間旨比特邏輯運^旨令。
5. 根據(jù)權(quán)利要求1所述的處理器,其中所述糾浮點>^#指令是當(dāng)糾數(shù)據(jù)為"真"時向賴器中寫數(shù)據(jù)的真-條 件浮點^f^^指令,或當(dāng)糾數(shù)據(jù)為"假"時向賴器寫數(shù)據(jù)的假-糾浮點絲 指令。
6. 才緣權(quán)利要求1所述的處理器,進(jìn)一步包括J^il:生成單元,用于通過將浮點寄存器的即時字段移動幾個比特來生成即 時數(shù)據(jù),以艦過朋所述即時數(shù)據(jù)生^iit。
7. 才N^5U'J要求1所述的處理器,進(jìn)一步包括 提交控制單元,用于4Ut指令,其中當(dāng)在由所述提交控制單元提交條件浮點存儲指令之前向相同存儲器地址 發(fā)出>^1^中后續(xù)的加載指令時當(dāng)滿足^^Hf時,^ft數(shù)糾為械的數(shù)據(jù)被返回到寄存器單元;以及當(dāng)不滿足存儲條件時,加載的數(shù)據(jù)從高速緩存單元被返回到寄存器。
8. —種用于在處理器中M^MM^指令的方法,包括##^數(shù)據(jù)^^在浮點寄存器中;以及才N^浮點寄存器中^ m6^Hf數(shù)據(jù),確^1否將^^數(shù)據(jù)^(^^^器中。
9. 一種具有處理器的信息處理設(shè)備,所i^h理器包括 用于存儲4Hf數(shù)據(jù)的浮點寄存器;用于執(zhí)行根據(jù)浮點寄存器中存儲的條件數(shù)據(jù)來確定是否將存儲數(shù)據(jù) 存儲在存儲器中的條件浮點存儲指令的操作單元。
全文摘要
提供了能夠執(zhí)行條件存儲指令而不被條件碼的數(shù)量限制的處理器、用于在處理器中執(zhí)行條件存儲指令的方法、以及具有處理器的信息處理設(shè)備。在根據(jù)本發(fā)明的處理器中,條件數(shù)據(jù)存儲在浮點寄存器中,操作單元執(zhí)行確定是否將存儲數(shù)據(jù)存儲高速緩存中的條件浮點存儲指令。
文檔編號G06F9/38GK101539852SQ20081017908
公開日2009年9月23日 申請日期2008年11月27日 優(yōu)先權(quán)日2008年3月21日
發(fā)明者吉田利雄 申請人:富士通株式會社