專利名稱:在具有限制性存儲(chǔ)器模型的系統(tǒng)中多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在微處理器中的存儲(chǔ)緩沖器轉(zhuǎn)發(fā)(forwarding),更具體的,涉及具有限制性存儲(chǔ)器模型的微處理器系統(tǒng)中的存儲(chǔ)緩沖器轉(zhuǎn)發(fā)。
背景許多現(xiàn)代微處理器實(shí)施一種存儲(chǔ)緩沖器轉(zhuǎn)發(fā),它是一種機(jī)制,該機(jī)制通過使用來自較舊的(older)、完全重疊的存儲(chǔ)操作的數(shù)據(jù)完成較新的(younger)相關(guān)的加載操作來改善微處理器性能。當(dāng)存儲(chǔ)操作是推測(cè)性的(speculative)或者已經(jīng)經(jīng)過推測(cè)點(diǎn)并且是提交的(committed)機(jī)器狀態(tài)的一部分的同時(shí),這能夠發(fā)生。在任一種的情況下,當(dāng)加載操作執(zhí)行可以直接從緩沖器中讀出它的數(shù)據(jù)而不需要等待所述數(shù)據(jù)變?yōu)槿挚梢姷?globally observed)(GO)時(shí),加載操作執(zhí)行是延時(shí)最小的。對(duì)于多存儲(chǔ)操作,現(xiàn)有的處理器,例如IntelPentiumIII,以及在這些處理器上運(yùn)行的相關(guān)的指令集體系結(jié)構(gòu)(ISA)停止加載操作的執(zhí)行,直到較舊的多存儲(chǔ)操作變?yōu)槿挚梢姷摹ntelPentiumIII由加利福尼亞的Santa Clara的Intel公司制造。
因?yàn)榇鎯?chǔ)緩沖器轉(zhuǎn)發(fā)具有隱含的順序,在多線程或多處理器系統(tǒng)中的所有進(jìn)程按照上述的順序觀察其它進(jìn)程的存儲(chǔ)操作,所以處理器的體系結(jié)構(gòu)必須仔細(xì)規(guī)定哪種存儲(chǔ)緩沖器轉(zhuǎn)發(fā)可能在其下發(fā)生的規(guī)則。例如,Intel32位ISA(IA-32)體系結(jié)構(gòu)的產(chǎn)品家族已經(jīng)基本實(shí)現(xiàn)了來自加利福尼亞的Santa Clara的SPARC國(guó)際有限公司TM的可伸縮(scalable)處理器結(jié)構(gòu)(SPARC)總存儲(chǔ)順序(total store order)(TSO)存儲(chǔ)器模型。
TSO存儲(chǔ)器模型具有兩個(gè)關(guān)于存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的限制1.較新的加載操作只能從單個(gè)較舊的存儲(chǔ)緩沖器條目接收轉(zhuǎn)發(fā)的數(shù)據(jù)以及
2.較舊的存儲(chǔ)緩沖器條目必須完全覆蓋處于較新的加載操作讀取之中的存儲(chǔ)區(qū)域。
許多現(xiàn)有的IA-32代碼序列產(chǎn)生在其中這兩個(gè)TSO限制顯著降低處理器的性能的情況。當(dāng)?shù)湫偷腎A-32處理器執(zhí)行遇到上面所列的條件之一的加載操作時(shí),處理器就停止加載操作的執(zhí)行,直到該超規(guī)的條件清除為止。盡管在等待存儲(chǔ)緩沖器條目的內(nèi)容變?yōu)镚O,但是所述加載操作和依賴所述加載操作的所有指令卻是停止的,由此降低了處理器的性能。
附圖簡(jiǎn)要說明
圖1是根據(jù)本發(fā)明的實(shí)施例,用于提供多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的方法的流程圖。
圖2是根據(jù)本發(fā)明的實(shí)施例,可以在其中實(shí)現(xiàn)多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的寫入組合緩沖器配置的原理框圖。
圖3是根據(jù)本發(fā)明的實(shí)施例,可以在其中實(shí)現(xiàn)多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的計(jì)算機(jī)系統(tǒng)的框圖。
詳細(xì)介紹在根據(jù)本發(fā)明的實(shí)施例中,系統(tǒng)和方法提供了一種新穎的機(jī)制,該機(jī)制使完全被兩個(gè)或多個(gè)存儲(chǔ)操作所覆蓋的加載操作能夠通過存儲(chǔ)緩沖器轉(zhuǎn)發(fā)以保留兩個(gè)TSO限制的副作用的方式來接收數(shù)據(jù),從而提高處理器的性能而不背離限制性存儲(chǔ)器模型。為了更加清楚,用某些樣例程序的執(zhí)行來介紹該問題。
Archetypical存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的例子下面樣例代碼段說明TSO存儲(chǔ)器模型所特別允許的存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的類型MOV EBX,0x1000 ;建立基地址MOV[EBX],0x00001234 ;向存儲(chǔ)單元0x1000存入個(gè)4字節(jié)(0x00001234)…;零或多個(gè)其它指令MOV EAX,[EBX];從存儲(chǔ)單元0x1000加載4個(gè)字節(jié)在本例中,存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的硬件允許繞過存儲(chǔ)數(shù)據(jù)值(0x00001234)直接到達(dá)較新的加載操作,即使在其它處理器觀察所述存儲(chǔ)數(shù)據(jù)值之前。注意,上面的單個(gè)存儲(chǔ)操作的數(shù)據(jù)完全重疊,即,覆蓋,加載操作所參考的存儲(chǔ)區(qū)。換句話說,在本例中,在存儲(chǔ)器中被存儲(chǔ)操作作為存儲(chǔ)數(shù)據(jù)值使用的相同的四個(gè)字節(jié)也被加載操作使用。
不允許的存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的例子該樣例代碼段說明IA-32限制性存儲(chǔ)器模型(TSO)所不允許的存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的類型MOV EBX,0x1000;建立基地址MOV[EBX],0x0000 ;向存儲(chǔ)單元0x1000存入2個(gè)字節(jié)(0x0000)MOV[EBX]+2,0x1234 ;向存儲(chǔ)單元0x1002存入2個(gè)字節(jié)(0x1234)… ;零或多個(gè)其它指令MOV EAX,[EBX] ;從存儲(chǔ)單元0x1000加載4個(gè)字節(jié)在本例中,因?yàn)槊總€(gè)存儲(chǔ)操作只提供加載操作所需要的數(shù)據(jù)的一半,所以希望將存儲(chǔ)數(shù)據(jù)從兩個(gè)存儲(chǔ)操作轉(zhuǎn)發(fā)到單個(gè)加載操作。不幸的是,在TSO存儲(chǔ)器模型中這種多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)被特別禁止,因此,加載操作必須等待直到兩個(gè)存儲(chǔ)操作變?yōu)槿挚梢姷?GO)才能完成。多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)被TSO存儲(chǔ)器模型禁止,以保證這樣的可靠和一致的順序,按照這種順序存儲(chǔ)操作對(duì)于系統(tǒng)中的其它處理器能夠全局可見。
從多個(gè)存儲(chǔ)緩沖器條目中存儲(chǔ)轉(zhuǎn)發(fā)的問題用下面在多處理器系統(tǒng)中在兩個(gè)獨(dú)立的處理器上執(zhí)行的代碼序列進(jìn)行說明處理器0P0_1)MOV EBX,0x1000;建立基地址P0_2)MOV[EBX],0x0102 ;向存儲(chǔ)單元0x0102存入2個(gè)字節(jié)(0x0102)P0_3)MOV[EBX]+2,0x0304 ;向存儲(chǔ)單元0x0304存入2個(gè)字節(jié)(0x0304)P0_4)MOV EAX,[EBX] ;從存儲(chǔ)單元0x1000加載4個(gè)字節(jié)P0_5)MOV EAX,[EBX] ;從存儲(chǔ)單元0x1000加載4個(gè)字節(jié)處理器1P1_1)MOV EBX,0x1000 ;建立基地址P1_2)MOV[EBX],0xFFFFFFFF;向位置0x1000存入4個(gè)字節(jié)(0xFFFFFFFF)樣例執(zhí)行1在本例中,處理器0具有兩個(gè)加載操作P0_4和P0_5,根據(jù)TSO,它們必須等待兩個(gè)較舊的存儲(chǔ)緩沖器條目,P0_2和P0_3變?yōu)镚0,才可以執(zhí)行加載操作。在以該限制實(shí)現(xiàn)TSO的系統(tǒng)中,下面的總順序,即,兩個(gè)處理器操作在時(shí)間上發(fā)生的順序是可能的
該樣例的執(zhí)行結(jié)果與TSO存儲(chǔ)器模型相一致,原因在于加載P0_4或P0_5都沒有直接從處理器0的存儲(chǔ)緩沖器中接收數(shù)據(jù)。
樣例執(zhí)行2下面樣例的執(zhí)行代表在允許從多個(gè)存儲(chǔ)緩沖器條目進(jìn)行存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的另一種可能的總順序,但是卻不能在本發(fā)明中實(shí)現(xiàn)。
注意,加載操作P0_5的結(jié)果與加載P0_4的結(jié)果不一致。如果加載P0_4看到值0x01020304,則加載P0_5應(yīng)當(dāng)已經(jīng)看到該值或0xFFFFFFFF中的一個(gè)。加載P0_5實(shí)際看到的結(jié)果0xFFFF0304使得其表現(xiàn)為好像存儲(chǔ)P0_3發(fā)生了兩次。
樣例執(zhí)行3如果存儲(chǔ)P0_2和P0_3已經(jīng)在相同的時(shí)間點(diǎn)變?yōu)槿挚梢?即,原子地),則就不會(huì)出現(xiàn)樣例執(zhí)行2中所示的情況。根據(jù)本發(fā)明的實(shí)施例,下面的樣例執(zhí)行表示在實(shí)施本發(fā)明的系統(tǒng)中可能的總順序。
如上所示,加載操作P0_5現(xiàn)在看到與TSO存儲(chǔ)器模型相一致的結(jié)果。因此,本發(fā)明的實(shí)施例提供這樣一種機(jī)制,該機(jī)制采用本發(fā)明能保證存儲(chǔ)緩沖器項(xiàng)在單個(gè)時(shí)間點(diǎn)更新系統(tǒng)存儲(chǔ)器(即,變?yōu)槿挚梢?的方式從多個(gè)存儲(chǔ)緩沖器條目轉(zhuǎn)發(fā)數(shù)據(jù)。
根據(jù)本發(fā)明的實(shí)施例,系統(tǒng)和方法可以利用寫組合緩沖器(WCB)。WCB是這樣一種結(jié)構(gòu),該結(jié)構(gòu)通常包含對(duì)數(shù)據(jù)的幾個(gè)高速緩存線(cacheline)的緩沖和使各個(gè)存儲(chǔ)操作能夠“組合”為更大單元的數(shù)據(jù)的控制邏輯,所述更大單元的數(shù)據(jù)大小一般等于高速緩存線的大小。當(dāng)該數(shù)據(jù)單元被寫回系統(tǒng)存儲(chǔ)器或處理器高速緩存器時(shí),它是原子地通過單個(gè)事務(wù)來實(shí)現(xiàn)的。這就通過節(jié)省總線事務(wù)和高速緩存器的帶寬改善了處理器性能,原因在于,如果沒有WCB,每一單個(gè)的存儲(chǔ)操作就會(huì)不得不單獨(dú)訪問系統(tǒng)總線或高速緩存器端口。這比在大量存儲(chǔ)操作能夠被預(yù)先分組為單個(gè)事務(wù)的情況下使用系統(tǒng)資源的效率要低些。
圖1是根據(jù)本發(fā)明的實(shí)施例,用于提供多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的方法的流程圖。在圖1中,通常執(zhí)行多存儲(chǔ)指令100將來自多存儲(chǔ)指令的數(shù)據(jù)值組合為單個(gè)值。根據(jù)本發(fā)明的實(shí)施例,該單個(gè)值可以組合為處理器存儲(chǔ)器的條目,例如在WCB中的條目,該條目對(duì)于系統(tǒng)中的所有其它的處理器是不可見的,直到所有的多存儲(chǔ)指令都已完成執(zhí)行。執(zhí)行加載指令120,以便從連接到系統(tǒng)的存儲(chǔ)器中加載數(shù)據(jù)??梢詧?zhí)行檢查以確定由加載指令尋址的存儲(chǔ)區(qū)是否與任何存儲(chǔ)在WCB中的高速緩存線相匹配130。如果發(fā)現(xiàn)匹配,則執(zhí)行檢查以確定是否所有由加載指令尋址的所有存儲(chǔ)區(qū)被多存儲(chǔ)指令所存儲(chǔ)的數(shù)據(jù)覆蓋140。如果所有的存儲(chǔ)區(qū)都被來自多存儲(chǔ)指令的數(shù)據(jù)覆蓋,則可以產(chǎn)生存儲(chǔ)轉(zhuǎn)發(fā)“OK”信號(hào)150。此時(shí),加載指令可以通過從WCB條目讀取所述數(shù)據(jù)而完成執(zhí)行。
如果未發(fā)現(xiàn)匹配,則不需要該方法,并結(jié)束該方法。如果不是所有的存儲(chǔ)區(qū)都被來自多存儲(chǔ)指令的數(shù)據(jù)覆蓋,則該方法返回到再次執(zhí)行120加載指令。通常,在再次執(zhí)行加載指令之前,以前的加載指令的執(zhí)行120和所有隨后的相關(guān)指令被從系統(tǒng)中沖掉。
根據(jù)本發(fā)明的實(shí)施例,可以將新的硬件加到WCB中以實(shí)現(xiàn)允許從多存儲(chǔ)操作的存儲(chǔ)轉(zhuǎn)發(fā)所要求的功能而不背離IA-32 TSO存儲(chǔ)器模型的精神和目的。通常,實(shí)現(xiàn)該功能所必需的兩個(gè)要求包括1.存儲(chǔ)操作必須完全覆蓋由較新的加載操作尋址的存儲(chǔ)區(qū);以及2.將數(shù)據(jù)轉(zhuǎn)發(fā)到加載操作的存儲(chǔ)操作必須同時(shí)(即,原子地)變?yōu)槿挚梢姟?br>
根據(jù)本發(fā)明的實(shí)施例,該系統(tǒng)通過在WCB緩沖器中添加將由加載操作尋址的存儲(chǔ)區(qū)與WCB中可用的存儲(chǔ)數(shù)據(jù)進(jìn)行以字節(jié)為基礎(chǔ)的比較的硬件能夠?qū)崿F(xiàn)第一要求。如果允許轉(zhuǎn)發(fā)數(shù)據(jù),則讀出數(shù)據(jù)以滿足加載操作。根據(jù)本發(fā)明的其它實(shí)施例,可以從任何包含所述數(shù)據(jù)的存儲(chǔ)器,例如,WCB、存儲(chǔ)緩沖器、其它緩沖器、寄存器、存儲(chǔ)器和高速緩存器中讀取數(shù)據(jù)。圖2是根據(jù)本發(fā)明的實(shí)施例,可以在其中實(shí)現(xiàn)多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的寫入組合緩沖器配置的原理框圖。
在圖2中,高速緩存線地址比較元件205可以連接到WCB地址和數(shù)據(jù)緩沖器210??梢耘渲酶咚倬彺婢€地址比較元件205以接收新來的加載操作202,并將在新來的加載操作202中的高速緩存線地址與WCB地址和數(shù)據(jù)緩沖器210中的現(xiàn)有的條目的高速緩存線地址進(jìn)行比較。WCB地址和數(shù)據(jù)緩沖器210可以連接到指示在WCB地址和數(shù)據(jù)緩沖器210中已經(jīng)被存儲(chǔ)操作寫過的數(shù)據(jù)字節(jié)的WCB數(shù)據(jù)有效位矢量緩沖器220。在本發(fā)明的實(shí)施例中,在WCB地址和數(shù)據(jù)緩沖器210和WCB數(shù)據(jù)有效位矢量緩沖器220中的數(shù)據(jù)條目通常具有相同的大小,例如,每個(gè)條目64個(gè)數(shù)據(jù)字節(jié)。WCB數(shù)據(jù)有效位矢量緩沖器220可以連接到多路器230,可以配置多路器230以從WCB數(shù)據(jù)有效位矢量緩沖器220接收數(shù)據(jù)有效位矢量,并且可以配置多路器230以從新來的加載操作202中接收加載操作地址位。例如,多路器230可以是4∶1多路器,可以配置多路器230以選擇在從加載操作地址位指定的8位邊界的數(shù)據(jù)有效位矢量中的16個(gè)存儲(chǔ)字節(jié)有效位的組。多路器230可以連接到比較電路240,可以配置比較電路240以便接收線232上的16個(gè)存儲(chǔ)字節(jié)有效位的組和線235上的新來的加載操作字節(jié)屏蔽,并且如果存儲(chǔ)指令數(shù)據(jù)完全覆蓋由新來的加載操作所引用的WCB條目,則產(chǎn)生“存儲(chǔ)轉(zhuǎn)發(fā)OK”信號(hào)。在比較電路240中的粗線表示16位數(shù)據(jù)通路。比較電路240包括連接到第一16位與-或邏輯250的16位反相器邏輯242。可以配置反相器242,接收由多路器230選擇的在線232上的16個(gè)存儲(chǔ)字節(jié)有效位的組,并將反相后的16個(gè)存儲(chǔ)字節(jié)有效位的組輸出到線244上??梢杂?6個(gè)與門實(shí)現(xiàn)16位與或邏輯,與門可被配置用于接收或者來自232上的16個(gè)存儲(chǔ)字節(jié)有效位的組或者線244上的自16個(gè)存儲(chǔ)字節(jié)有效位的組反相的位中的一個(gè)位以及線235上的新來的加載操作字節(jié)屏蔽中的一個(gè)位??梢耘渲玫谝?6位與-或邏輯250,以便接收線244上的反相的16個(gè)存儲(chǔ)字節(jié)有效位,并且可以連接到與非門270,可以配置第一16位與-或邏輯250,以便接收線235上的新來的加載操作字節(jié)屏蔽。第二與-或16位邏輯260也可以連接到與非門270,并且可以配置第二16位與-或邏輯260,以便接收線232上由多路器230選擇的16個(gè)存儲(chǔ)字節(jié)有效位的組和線235上新來的加載操作字節(jié)屏蔽??梢耘渲门c非門270,以便分別接收線262和252上來自第一和第二16位與或邏輯260和250的信號(hào),如果存儲(chǔ)指令數(shù)據(jù)完全覆蓋由新來的加載操作所引用的WCB條目,則產(chǎn)生“存儲(chǔ)轉(zhuǎn)發(fā)OK”信號(hào)。
本發(fā)明通過利用每個(gè)WCB的大小被定為與系統(tǒng)一致性的粒度(即,高速緩存線的大小)相匹配的事實(shí)的優(yōu)點(diǎn)來滿足第二個(gè)要求。組合到單個(gè)WCB條目條目的所有的單個(gè)存儲(chǔ)操作同時(shí)變?yōu)槿挚梢姟1景l(fā)明的實(shí)施例利用該事實(shí)使在具有限制性存儲(chǔ)器模型的系統(tǒng)中能夠進(jìn)行多存儲(chǔ)緩沖器轉(zhuǎn)發(fā),由此,提高了系統(tǒng)的性能。
本發(fā)明的實(shí)施例可以顯著改善在其中加載操作依賴于兩個(gè)或更多暫時(shí)結(jié)束的存儲(chǔ)操作的具有高度并發(fā)的指令序列的代碼的性能?,F(xiàn)有的IA-32處理器以及具有限制性存儲(chǔ)器模型的其它處理器,往往停止加載操作的執(zhí)行,直到超規(guī)的的存儲(chǔ)操作離開存儲(chǔ)緩沖器并變?yōu)槿挚梢姷臑橹埂T诒景l(fā)明的一個(gè)實(shí)施例中,通過只在存儲(chǔ)操作被WCB接受之前停止加載操作來改進(jìn)該方法,這就取消了在加載操作能夠得到滿足之前存儲(chǔ)操作必須變?yōu)槿挚梢?能夠花費(fèi)許多數(shù)以百計(jì)的周期的進(jìn)程)的限制。
這不僅是理論上的性能改善,因?yàn)樵S多編譯器產(chǎn)生的情況本發(fā)明可能有利。例如,編譯器通??梢蕴峁﹥?yōu)化,以便盡可能多的去掉停止加載操作的情況。不幸的是,這些優(yōu)化通常導(dǎo)致程序占用更大的存儲(chǔ)器需求容量,以及更慢的執(zhí)行時(shí)間,這導(dǎo)致編譯器優(yōu)化不能總是處于使用之中。因此,采用本發(fā)明的實(shí)施例可以產(chǎn)生更快的、更有效的和緊湊的程序。
一個(gè)顯然的編譯器不能優(yōu)化掉的問題的情況是在多媒體代碼中,多媒體代碼有規(guī)律地產(chǎn)生具有兩個(gè)32位存儲(chǔ)操作隨后緊跟著一個(gè)完全重疊的64位加載操作的代碼序列。該序列用來將數(shù)據(jù)從整數(shù)寄存器文件移到MMX(浮點(diǎn))寄存器文件中。本發(fā)明具有能夠極大的提高用戶的“因特網(wǎng)體驗(yàn)(Internet experience)”并增強(qiáng)其它多媒體應(yīng)用的潛力。
圖3是適于實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)100的框圖。在圖3中,計(jì)算機(jī)系統(tǒng)100包括連接到可以連接到系統(tǒng)邏輯330的處理器總線320的一個(gè)或多個(gè)處理器310(1)-310(n)。一個(gè)或多個(gè)處理器310(1)-310(n)中的每一個(gè)為N位處理器并包括一個(gè)或多個(gè)N位寄存器(未示出)。系統(tǒng)邏輯330可以通過總線350連接到系統(tǒng)存儲(chǔ)器340,并通過外圍總線360連接到非易失性存儲(chǔ)器370以及連接到一個(gè)或多個(gè)外圍設(shè)備380(1)-380(m)。外圍總線360代表,例如,一個(gè)或多個(gè)外圍部件互連(PCI)總線(PCI特別興趣組(SIG)PCI局部總線規(guī)范,版本2.2,1998年12月18日出版);工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線;擴(kuò)展ISA(EISA)總線(BCRP服務(wù)公司EISA規(guī)范,版本3.12,1992,1992年出版);通用串行總線(USB),(USB規(guī)范,版本1.1,1998年9月23日出版);以及類似的外圍總線。非易失性存儲(chǔ)器370可以是例如只讀存儲(chǔ)器(ROM)或快閃存儲(chǔ)器等靜態(tài)存儲(chǔ)器件。外圍設(shè)備380(1)-380(m)包括,例如,鍵盤;鼠標(biāo)或其它指向裝置;大容量存儲(chǔ)設(shè)備,例如硬盤驅(qū)動(dòng)器,光盤(CD)驅(qū)動(dòng)器,光盤以及數(shù)字視頻盤(DVD)驅(qū)動(dòng)器;顯示器等。
根據(jù)本發(fā)明的實(shí)施例,用在具有限制性存儲(chǔ)器模型的系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的方法包括執(zhí)行多存儲(chǔ)指令,執(zhí)行加載指令,確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址,確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令尋址的存儲(chǔ)區(qū),以及發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
根據(jù)本發(fā)明的實(shí)施例,上面存儲(chǔ)了用在具有限制性存儲(chǔ)器模型的系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的多個(gè)可執(zhí)行指令的機(jī)器可讀介質(zhì),多個(gè)指令包括執(zhí)行多個(gè)存儲(chǔ)的指令,執(zhí)行加載的指令,確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址,確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指定的在存儲(chǔ)器中的存儲(chǔ)單元,以及發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
根據(jù)本發(fā)明的實(shí)施例,處理器系統(tǒng)包括處理器,連接到處理器的系統(tǒng)存儲(chǔ)器,以及連接到處理器的非易失性存儲(chǔ)器,其中存儲(chǔ)包括適于處理器執(zhí)行的指令的制造物品,當(dāng)編碼在指令集中的指令執(zhí)行時(shí),允許在具有限制性存儲(chǔ)器模型的系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)。制造物品包括指令,用來執(zhí)行多個(gè)存儲(chǔ)指令,執(zhí)行加載指令,確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址,確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令指定的在存儲(chǔ)器中的存儲(chǔ)單元,并發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
當(dāng)然,應(yīng)當(dāng)理解,雖然本發(fā)明主要以微處理器和基于多處理器的個(gè)人計(jì)算機(jī)為主進(jìn)行了介紹,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到本發(fā)明的原理可以方便地用在涉及其它集成處理器芯片和計(jì)算機(jī)系統(tǒng)的其它實(shí)施例中。因此,所有落在附帶的權(quán)利要求書的精神和范圍中的實(shí)現(xiàn)將被本發(fā)明包含。
權(quán)利要求
1.一種用在具有限制性存儲(chǔ)器模型的系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的方法,該方法包括執(zhí)行多個(gè)存儲(chǔ)指令;執(zhí)行加載指令;確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址;確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令尋址的存儲(chǔ)區(qū);并發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
2.根據(jù)權(quán)利要求1的方法,其中執(zhí)行多個(gè)存儲(chǔ)指令包括執(zhí)行多個(gè)存儲(chǔ)操作,以在存儲(chǔ)器中相鄰的存儲(chǔ)單元中存儲(chǔ)多個(gè)數(shù)據(jù)值,其中相鄰存儲(chǔ)單元的大小等于由加載指令尋址的存儲(chǔ)區(qū)的大小。
3.根據(jù)權(quán)利要求2的方法,其中執(zhí)行加載指令包括從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù);以及產(chǎn)生存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
4.根據(jù)權(quán)利要求3的方法,其中從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù)在執(zhí)行多個(gè)存儲(chǔ)操作開始之后開始,并且從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù)在系統(tǒng)中多個(gè)存儲(chǔ)操作變?yōu)槿挚梢娭巴瓿伞?br>
5.根據(jù)權(quán)利要求1的方法,其中執(zhí)行加載指令包括從寫入組合緩沖器中加載數(shù)據(jù);以及產(chǎn)生存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
6.根據(jù)權(quán)利要求1的方法,其中確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址包括比較存儲(chǔ)區(qū)的地址和高速緩存線的地址;以及確定存儲(chǔ)區(qū)的地址與高速緩存線的地址相同。
7.根據(jù)權(quán)利要求1的方法,其中確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令尋址的存儲(chǔ)區(qū)包括確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)的大小等于由加載指令尋址的存儲(chǔ)區(qū)的大小。
8.根據(jù)權(quán)利要求1的方法,還包括如果在存儲(chǔ)區(qū)的地址與中存儲(chǔ)器中的高速緩存線的地址不同,則終止。
9.根據(jù)權(quán)利要求1的方法,還包括如果存儲(chǔ)區(qū)沒有完全被多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)所覆蓋,則重新執(zhí)行加載操作。
10.根據(jù)權(quán)利要求1的方法,其中多個(gè)存儲(chǔ)指令所導(dǎo)致的的中間結(jié)果對(duì)于其他并發(fā)的進(jìn)程是不可見的。
11.根據(jù)權(quán)利要求1的方法,其中該方法工作在限制性存儲(chǔ)器模型中。
12.一種機(jī)器可讀介質(zhì),上面存儲(chǔ)了用在具有限制性存儲(chǔ)器模型的系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的多個(gè)可執(zhí)行指令,多個(gè)指令包括用于執(zhí)行如下操作的指令執(zhí)行多個(gè)存儲(chǔ)指令;執(zhí)行加載指令;確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址;確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令所指定的在存儲(chǔ)器中的存儲(chǔ)單元;以及發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
13.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),其中執(zhí)行多個(gè)存儲(chǔ)指令的指令包括進(jìn)行如下操作的指令執(zhí)行多個(gè)存儲(chǔ)操作以便在存儲(chǔ)器中相鄰的存儲(chǔ)單元中存儲(chǔ)多個(gè)數(shù)據(jù)值,其中相鄰存儲(chǔ)單元的大小等于由加載指令尋址的存儲(chǔ)區(qū)的大小。
14.根據(jù)權(quán)利要求13的機(jī)器可讀介質(zhì),其中執(zhí)行加載指令的指令包括進(jìn)行如下操作的指令從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù);以及產(chǎn)生存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
15.根據(jù)權(quán)利要求14的機(jī)器可讀介質(zhì),其中從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù)的指令在執(zhí)行多個(gè)存儲(chǔ)操作指令開始執(zhí)行之后開始執(zhí)行,并且從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù)的指令在系統(tǒng)中多個(gè)存儲(chǔ)操作變?yōu)槿挚梢娭巴瓿蓤?zhí)行。
16.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),其中執(zhí)行加載指令的指令包括進(jìn)行如下操作的指令從寫入組合緩沖器中加載數(shù)據(jù);以及產(chǎn)生存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
17.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),其中確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址的指令包括進(jìn)行如下操作的指令比較存儲(chǔ)區(qū)的地址和高速緩存線的地址;以及確定存儲(chǔ)區(qū)的地址與高速緩存線的地址相同。
18.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),其中確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令指定的在存儲(chǔ)器中的存儲(chǔ)單元的指令包括進(jìn)行如下操作的指令確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)的大小等于由加載指令尋址的存儲(chǔ)區(qū)的大小。
19.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),還包括進(jìn)行如下操作的指令如果在存儲(chǔ)器中存儲(chǔ)區(qū)的地址與高速緩存線的地址不同,則終止。
20.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),還包括進(jìn)行如下操作的指令如果存儲(chǔ)區(qū)沒有完全被由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)所覆蓋,則重新執(zhí)行加載操作。
21.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),其中執(zhí)行多個(gè)存儲(chǔ)指令的指令包括進(jìn)行如下操作的執(zhí)行多個(gè)存儲(chǔ)指令以產(chǎn)生對(duì)于其它并發(fā)進(jìn)程是不可見的中間結(jié)果。
22.根據(jù)權(quán)利要求12的機(jī)器可讀介質(zhì),其中多個(gè)可執(zhí)行指令工作在限制性存儲(chǔ)器模型中。
23.一種處理器系統(tǒng),包括處理器;連接到處理器的系統(tǒng)存儲(chǔ)器;以及連接到處理器的非易失性存儲(chǔ)器,其中存儲(chǔ)了包括適于處理器執(zhí)行的指令的制造物品,當(dāng)編碼在指令集中的指令執(zhí)行時(shí),允許在具有限制性存儲(chǔ)器模型的系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā),所述制造物品包括進(jìn)行如下操作的指令執(zhí)行多個(gè)存儲(chǔ)指令;執(zhí)行加載指令;確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址;確定由多個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令指定的在存儲(chǔ)器中的存儲(chǔ)單元;以及發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
24.根據(jù)權(quán)利要求23的處理器系統(tǒng),處理器包括寫入組合緩沖器,所述寫入組合緩沖器包括比較器,所述比較器被配置用于接收并比較新來的加載操作目標(biāo)地址與現(xiàn)有的寫入組合緩沖器條目條目的所有高速緩存線地址;連接到比較器的地址和數(shù)據(jù)緩沖器;連接到地址和數(shù)據(jù)緩沖器的數(shù)據(jù)有效位緩沖器;連接到數(shù)據(jù)有效位緩沖器的多路器;以及連接到多路器的比較電路。
25.根據(jù)權(quán)利要求24的處理器系統(tǒng),所述多路器被配置用于進(jìn)行如下操作從數(shù)據(jù)有效位緩沖器接收字節(jié)有效矢量;從加載操作和輸出的有效位接收地址位;從字節(jié)有效矢量中選擇有效位的組;以及輸出有效位的組。
26.根據(jù)權(quán)利要求24的處理器系統(tǒng),所述比較電路被配置用于進(jìn)行如下的操作接收有效位的組;接收新來的加載操作字節(jié)屏蔽;確定用效位的組和新來的加載操作字節(jié)屏蔽來轉(zhuǎn)發(fā)數(shù)據(jù)是可接受的;以及產(chǎn)生轉(zhuǎn)發(fā)OK信號(hào)。
27.根據(jù)權(quán)利要求23的產(chǎn)品,其中執(zhí)行多個(gè)存儲(chǔ)指令的指令包括進(jìn)行如下操作的指令執(zhí)行多個(gè)存儲(chǔ)操作以便在存儲(chǔ)器中相鄰的存儲(chǔ)單元中存儲(chǔ)多個(gè)數(shù)據(jù)值,其中相鄰存儲(chǔ)單元的大小等于由加載指令尋址的存儲(chǔ)區(qū)的大小。
28.根據(jù)權(quán)利要求27的機(jī)器可讀介質(zhì),其中執(zhí)行加載指令的指令包括進(jìn)行如下操作的指令從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù);以及產(chǎn)生存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
29.根據(jù)權(quán)利要求28的機(jī)器可讀介質(zhì),其中從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù)的指令在執(zhí)行多個(gè)存儲(chǔ)操作指令開始執(zhí)行之后開始執(zhí)行,并且從存儲(chǔ)器中相鄰的存儲(chǔ)單元加載數(shù)據(jù)指令在系統(tǒng)中多個(gè)存儲(chǔ)操作變?yōu)槿挚梢娭巴瓿蓤?zhí)行。
30.根據(jù)權(quán)利要求23的處理器系統(tǒng),其中所述處理器被實(shí)施為這樣的多處理器,其中所述多處理器中的每個(gè)與獨(dú)立的硬件資源集相關(guān)聯(lián)。
全文摘要
本發(fā)明涉及具有限制性存儲(chǔ)器模型的微處理器系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的應(yīng)用。根據(jù)本發(fā)明的實(shí)施例,系統(tǒng)和方法允許被兩個(gè)或更多存儲(chǔ)操作覆蓋的加載操作通過存儲(chǔ)緩沖器轉(zhuǎn)發(fā)以保留限制性存儲(chǔ)器模型的副作用的方式接收數(shù)據(jù),從而提高處理器的性能而不背離限制性存儲(chǔ)器模型。根據(jù)本發(fā)明的實(shí)施例,用在具有限制性存儲(chǔ)器模型的系統(tǒng)中的多存儲(chǔ)緩沖器轉(zhuǎn)發(fā)的方法包括執(zhí)行多存儲(chǔ)指令,執(zhí)行加載指令,確定由加載指令尋址的存儲(chǔ)區(qū)匹配存儲(chǔ)器中的高速緩存線地址,確定由多存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)完全覆蓋由加載指令尋址的存儲(chǔ)區(qū),并發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)OK信號(hào)。
文檔編號(hào)G06F9/38GK1511280SQ01820954
公開日2004年7月7日 申請(qǐng)日期2001年12月18日 優(yōu)先權(quán)日2000年12月21日
發(fā)明者L·塔特徹爾, B·D·波爾特賴特, R·帕特爾, L 塔特徹爾, 囟, 波爾特賴特 申請(qǐng)人:英特爾公司