專利名稱:在長等待時間指令執(zhí)行期間允許存儲轉(zhuǎn)發(fā)的技術的制作方法
技術領域:
本發(fā)明的實施例涉及微處理器和微處理器系統(tǒng)。更為具體地,本發(fā)明的實施例涉及能夠存儲要轉(zhuǎn)發(fā)的數(shù)據(jù),以便加載指令必須搜索隊列以查找要轉(zhuǎn)發(fā)的存儲的的技術。
背景技術:
當執(zhí)行加載和存儲指令時,通?,F(xiàn)有技術微處理器依賴于包含內(nèi)容可編址存儲器(CAM)邏輯的可查找隊列,以增強存儲器操作間的排序,并且在高等待時間指令從存儲器存取數(shù)據(jù)時(“未決”)用于將與存儲指令相對應的數(shù)據(jù)轉(zhuǎn)發(fā)到加載指令。如果相應數(shù)據(jù)沒有出現(xiàn)在相對較快的存儲結(jié)構(gòu)中、例如高速緩沖存儲器,那么必須借助于具有相對較慢的存取時間的存儲器結(jié)構(gòu)如動態(tài)隨機存取存儲器(DRAM)的指令,可能產(chǎn)生高延遲指令。在特定存儲結(jié)構(gòu)中缺少所需數(shù)據(jù)通常稱為“未命中”,而存儲結(jié)構(gòu)中存在所述數(shù)據(jù)通常稱為“命中”。
圖1說明現(xiàn)有技術處理器結(jié)構(gòu)體系,包括用于執(zhí)行指令的邏輯,所述指令獨立于高等待時間指令(high-latency instruction)。圖1的現(xiàn)有技術結(jié)構(gòu)體系能夠不斷地執(zhí)行指令而不用停止處理器,包括獨立于長等待時間指令的指令,諸如從相對較慢的存儲資源(例如DRAM)存取數(shù)據(jù)的加載。特別地,由指令解碼器解碼的指令以及由分配和寄存器換名單元分配的寄存器都作為微指令(uop)存儲在微指令隊列中,從微指令隊列中調(diào)度這些微指令用于由功能單元執(zhí)行并將這些微指令發(fā)送至寄存器文件。
圖1的現(xiàn)有技術結(jié)構(gòu)體系允許獨立于未命中的指令通過強制長等待時間指令來使用寄存器文件和調(diào)度程序資源,并且那些指令依賴于長等待時間指令來緩和調(diào)度和寄存器文件資源,直到未命中能夠能得到服務。這使得獨立于未命中的指令執(zhí)行和完成,而不被長等待時間指令或他們的從屬指令阻塞。
在圖1中,依賴于長等待時間指令的指令暫時存儲在等待緩沖器中,而獨立指令在長等待時間指令的未決期間得到服務。然而,為了確保正確的存儲排序,必須在長等待時間指令的未決期間存儲所有并行進行(“在處理”)中的存儲指令,通常需要大的存儲隊列(例如,L1和L2存儲隊列)。這些存儲隊列能夠隨指令處理的增多而增大。
而且,為了查找這些存儲隊列,諸如CAM邏輯之類的額外邏輯是必需的。特別是,加載操作(查找具有數(shù)據(jù)的相應存儲操作以滿足加載操作)通常利用隨隊列大小而增長的CAM邏輯來查找相對較大的存儲隊列。
查找具有CAM邏輯的大存儲隊列能夠潛在增加周期時間或增加存取存儲隊列所花費的周期數(shù)量。而且,在處理長等待時間指令過程中,當正在處理的指令數(shù)量增加的時候,使用可查找存儲隊列將存儲數(shù)據(jù)轉(zhuǎn)發(fā)到合適的加載指令會變得日益困難,例如服務未命中的加載。而且,諸如CAM邏輯之類的、通常與可查找存儲隊列相關聯(lián)的查找邏輯為了在未決長等待時間操作期間滿足獨立的加載操作可能需要額外的能量、芯片空間和處理周期。
發(fā)明內(nèi)容
一種裝置,包括第一存儲設備,用于在高等待時間操作從第二存儲設備存取數(shù)據(jù)期間記錄多個存儲操作的程序順序。
一種方法,包括發(fā)布高等待時間指令;將按照程序順序在高等待時間指令之后的多個存儲指令存儲在先入先出隊列中;在高等待時間指令檢索數(shù)據(jù)時,利用獨立于高等待時間指令的存儲指令的數(shù)據(jù)來滿足獨立于高等待時間指令的加載指令。
一種系統(tǒng),包括存儲器,用于存儲第一數(shù)據(jù);處理器,用于執(zhí)行高等待時間指令以檢索第一數(shù)據(jù);隊列,用于在高等待時間操作檢索第一數(shù)據(jù)時,按照程序順序存儲多個存儲指令;高速緩存,用于暫時包括與多個存儲指令中的至少一個相對應的存儲數(shù)據(jù),存儲數(shù)據(jù)滿足獨立于高等待時間操作的加載指令;組相關加載緩沖器,用于存儲與加載指令相對應的存儲地址,存儲地址要與存儲指令的目標地址相比較。
一種機器可讀介質(zhì),具有存儲在其上的一組指令,如果由機器執(zhí)行指令,則使機器執(zhí)行一種方法,該方法包括響應需要執(zhí)行多于最小時間的存儲器存取指令,將多個存儲操作按照程序順序存儲在先入先出(FIFO)隊列中;響應存儲器存取指令的完成,從FIFO隊列中檢索多個存儲操作并將它們的數(shù)據(jù)按照程序順序存儲在數(shù)據(jù)高速緩存中而不必查找FIFO隊列。
通過舉例而非限定的方式說明本發(fā)明的實施例,附圖中相同的標記表示相似的元件,其中圖1示出微處理器內(nèi)的現(xiàn)有技術體系結(jié)構(gòu),用于在未決長等待時間存儲器存取操作(諸如加載操作)期間滿足獨立操作。
圖2示出根據(jù)本發(fā)明一個實施例的體系結(jié)構(gòu),使得滿足獨立操作而不使用可查找存儲結(jié)構(gòu)。
圖3是示出可以包含在本發(fā)明一個實施例中的操作的流程圖。
圖4示出根據(jù)一個實施例的體系結(jié)構(gòu),包括弱檢測過濾器(loose-checkfilter),使得滿足獨立操作而不使用可查找存儲結(jié)構(gòu)。
圖5是共享總線計算機系統(tǒng),在其中可以使用本發(fā)明的一個實施例。
圖6是點對點計算機系統(tǒng),在其中可以使用本發(fā)明的一個實施例。
圖7示出根據(jù)一個實施例的體系結(jié)構(gòu),使用加載緩沖器來存儲與匹配存儲地址相對應的加載地址。
圖8示出根據(jù)一個實施例的圖7的加載緩沖器的條目。
具體實施例方式
本發(fā)明的實施例涉及向獨立于高等待時間指令(high-latency instruction)(諸如存取DRAM來檢索加載數(shù)據(jù)的加載指令)的指令提供服務的技術。更為具體地,本發(fā)明的實施例涉及在高等待時間操作未決時,將存儲數(shù)據(jù)匹配于加載操作,而不使用可查找存儲設備的技術。
本發(fā)明的至少一個實施例替換了具有相關內(nèi)容可尋址存儲器(CAM)邏輯的第二級(“L2”)隊列而支持先入先出(FIFO)隊列,所述FIFO隊列在特定時間正執(zhí)行的一個或多個長等待時間操作的影響下保持存儲操作(從屬的和獨立的)。FIFO隊列很可能使用更少的能量,因為FIFO隊列不需要像一般的CAM結(jié)構(gòu)那樣的查找以及相關的查找邏輯。而且在至少一個實施例中,獨立加載從L1數(shù)據(jù)高速緩沖存儲器轉(zhuǎn)發(fā)數(shù)據(jù)以有助于保持性能。
圖2示例了本發(fā)明的一個實施例,其中FIFO隊列用于由于高速緩存未命中而在一個或多個操作正存取相對較慢存取存儲器(例如動態(tài)隨機存取存儲器(DRAM))時進行存儲。更為具體地,圖2示例了第一級(“L1”)存儲隊列201,其中存儲了各種指令或微操作。如果諸如指令或微操作之類的操作不能從相對較快存取存儲器(例如數(shù)據(jù)高速緩沖存儲器)中檢索到所需要的數(shù)據(jù),從而創(chuàng)建高速緩存未命中條件,那么可以借助于其他存儲器如DRAM或更高級別并通常更慢的高速緩沖存儲器來檢索數(shù)據(jù)。下文中對相對較慢存取存儲資源(例如DRAM)進行存取的操作(例如命令或微操作)稱為“高等待時間”操作、指令或微操作。在高等待時間操作試圖檢索另一源中的存儲器期間,獨立于高等待時間操作的操作(下文稱為“獨立操作”)不應該由高等待時間操作或依賴于高等待時間操作的操作(下文稱為“從屬操作”)選通,但應該允許獨立操作完成,因為它們不依賴于高等待時間操作。
相應地,圖2示出以程序順序存儲在長等待時間操作之后發(fā)生的操作的再存儲邏輯(SRL)(store redo log)205。不象現(xiàn)有技術,SRL不包含CAM邏輯或者查找SRL所需的任何其他邏輯,而是SRL按照獨立和從屬存儲操作在程序中出現(xiàn)的順序?qū)λ鼈冞M行存儲,這樣在需要時可按程序順序?qū)⑺鼈冏x出。在一個實施例中,SRL是FIFO隊列。而在其他實施例中,SRL可以是為了從存儲結(jié)構(gòu)中檢索出指令或微操作而不必對其查找的其他存儲結(jié)構(gòu)。
在本發(fā)明的一個實施例中,通過將所需的獨立存儲數(shù)據(jù)存儲在L1存儲隊列或存儲在L1數(shù)據(jù)高速緩沖存儲器210中,在滿足高等待時間操作之前,可以通過L1存儲隊列201或者L1數(shù)據(jù)高速緩沖存儲器210中的獨立存儲操作來滿足獨立加載操作。數(shù)據(jù)高速緩沖存儲器能夠作為要由獨立加載操作使用的數(shù)據(jù)的暫時存儲位置,并且取決于程序順序,在長等待時間操作結(jié)束之后,可以由對應于長等待時間操作或從屬操作的數(shù)據(jù)替換。而且,之前存儲在數(shù)據(jù)高速緩沖存儲器中的位置上的由獨立存儲操作寫入的任何數(shù)據(jù)(“臟塊”)都能夠被存儲至其他存儲結(jié)構(gòu)中,例如L2高速緩沖存儲器,并且在長等待時間操作結(jié)束之后返回至數(shù)據(jù)高速緩沖存儲器。
圖2也示例了等待緩沖器,在高等待時間操作仍未決時存儲從屬操作。在一些實施例中等待緩沖器可以是FIFO。然而在其他實施例中,等待緩沖器可以是其他類型的存儲結(jié)構(gòu)。在滿足了高等待時間操作之后,在數(shù)據(jù)高速緩存中以程序順序重新裝配從屬和獨立數(shù)據(jù)(包括已經(jīng)寫入數(shù)據(jù)高速緩存中以滿足加載操作的數(shù)據(jù))。在本發(fā)明的一個實施例中,通過將SRL的數(shù)據(jù)按照程序順序?qū)懭氩⒃跀?shù)據(jù)高速緩存中重新裝配數(shù)據(jù)。在將與高等待時間操作對應的數(shù)據(jù)寫入數(shù)據(jù)高速緩存中的適當位置之后,存儲在SRL中的存儲操作的數(shù)據(jù)可以被順序地從SRL中讀出并存儲至數(shù)據(jù)高速緩存中的適當位置,而不必搜索SRL以查找適當?shù)臄?shù)據(jù)。
因為與獨立和從屬操作對應的所有數(shù)據(jù)都能從SRL中順序地讀出,所以相對于使用諸如L2存儲隊列的存儲結(jié)構(gòu)來存儲獨立和從屬指令或微操作的現(xiàn)有技術而言,能夠更快檢索到數(shù)據(jù)并且消耗更少的能量。而且,SRL可以小于現(xiàn)有技術的結(jié)構(gòu),因為SRL不包含諸如CAM邏輯的查找邏輯。
圖3是示出可以在本發(fā)明一個實施例中使用以實現(xiàn)實施例(如圖2實施例)的一系列操作的流程圖。在操作301,遇到高等待時間指令或者微操作,使得指令借助于相對較高等待時間存儲器(例如DRAM)來檢索指令或微操作需要的數(shù)據(jù)。當高等待時間指令或微操作存取它需要的數(shù)據(jù)(即指令或者微操作“未決”)時,在操作305,依賴于高等待時間指令的指令或微操作都存儲在等待緩沖器中,而依賴于和獨立于高等待時間指令或微操作的存儲指令或微操作存儲于SRL中。
在操作310,獨立于高等待時間指令的指令或微操作可以將適當數(shù)據(jù)暫時地寫入數(shù)據(jù)高速緩存中,獨立指令或者微操作可以從該數(shù)據(jù)高速緩存讀取數(shù)據(jù)。如果在操作315與獨立指令相對應的數(shù)據(jù)被寫入臟塊中,那么在操作320,臟塊中的數(shù)據(jù)被暫時存儲至其他存儲器中,例如L2高速緩存。在操作325,在高等待時間指令已經(jīng)檢索到它的數(shù)據(jù)之后,可以通過將來自等待緩沖器中存儲的指令或者微操作的數(shù)據(jù)拷貝到SRL中其適當?shù)奈恢枚凑粘绦蝽樞蛑匦卵b配獨立數(shù)據(jù)和從屬數(shù)據(jù),接著將SRL中存儲的存儲指令或者微操作的數(shù)據(jù)寫入數(shù)據(jù)高速緩存中的相應位置,使得以程序順序存儲數(shù)據(jù)。
圖4示例了本發(fā)明的一個實施例,其中使用弱檢測過濾器(LCF)403來識別SRL 405是否包含具有滿足特定加載操作的數(shù)據(jù)的指令或者微操作。LCF的輸出連接到多路復用器407,多路復用器407能夠直接從SRL中選擇數(shù)據(jù)而不必如圖3所說明的實施例那樣首先將數(shù)據(jù)拷貝到數(shù)據(jù)高速緩存410。如圖3的實施例,數(shù)據(jù)可以經(jīng)由多路復用器413從L1隊列401或者數(shù)據(jù)高速緩存中被選擇并被寫入寄存器文件(未示出)。
在本發(fā)明的一個實施例中,LCF是按存儲地址的散列函數(shù)索引的、直接映射非標記計數(shù)器數(shù)組。將存儲操作插入到SRL中使相應的LCF計數(shù)器遞增,而從SRL中刪除存儲操作使LCF計數(shù)器遞減。非零LCF計數(shù)器值意味著SRL中可能匹配的存儲操作,而零LCF計數(shù)值保證沒有匹配的存儲操作。通過允許加載操作通過LCF匹配SRL中的數(shù)據(jù),加載操作可以只停止在與非零值的LCF匹配上。
LCF可以導致一些加載操作沒有必要地停止,但是為了減少這種停止情況,可以在SRL中使用索引的轉(zhuǎn)發(fā)。因為許多停止的加載操作是最近獲取的在高等待時間操作之后出現(xiàn)的加載操作,但是在SRL中的所有存儲操作都已經(jīng)將其數(shù)據(jù)存儲在數(shù)據(jù)高速緩存中之前,SRL中的轉(zhuǎn)發(fā)存儲操作通常是最后插入到SRL中的匹配存儲操作。因此,在一個實施例中,LCF被擴展以存儲與相應LCF計數(shù)器相關聯(lián)的最后插入的存儲操作的SRL索引。在該實施例中,需要對應于SRL中的存儲操作的存儲數(shù)據(jù)的到達的加載操作能夠快速地在SRL中定位最后可能匹配的存儲數(shù)據(jù)條目。加載操作能夠讀取該條目并且執(zhí)行完全的地址和年限檢測,而不需要經(jīng)由CAM邏輯或者一些其他邏輯查找SRL。而且,在該實施例中整個SRL只需要一個地址比較器。
在一些情況下,加載可以被預測為獨立于高等待時間指令,但是可以最終依賴于從屬存儲指令。例如,如果高等待時間指令是加載指令,那么不依賴于高等待時間加載指令的后來的加載指令可能依賴于從屬存儲指令。在這種情況下,如果存在按照程序順序出現(xiàn)在符合的加載指令之前的、比符合加載的數(shù)據(jù)具有符合加載指令的更新數(shù)據(jù)的從屬存儲操作,那么由獨立存儲指令的數(shù)據(jù)滿足的加載指令可能會由錯誤的數(shù)據(jù)來滿足。
圖7示例了本發(fā)明的一個實施例,具有加載緩沖器來存儲加載指令的目標地址,所述加載指令的目標地址可以與正在處理中的的并將被存儲到SRL705或隊列701中的存儲指令的目標地址相比較,以確定符合的加載指令是否真正具有最新的存儲數(shù)據(jù)。具體而言,加載緩沖器703用于存儲與加載操作相對應的目標加載地址,并且能夠?qū)⒛繕思虞d地址與發(fā)送到SRL或者隊列的存儲指令的目標存儲地址相比較,有效地“監(jiān)聽”正在處理中的存儲目標地址。
將加載緩沖器中存儲的目標地址與發(fā)送到SRL或者隊列的存儲指令的目標地址相比較,并且按照程序順序在存儲指令之后、共享相同目標地址的加載緩沖器內(nèi)的匹配條目指示加載指令從數(shù)據(jù)高速緩存中檢索的數(shù)據(jù)不能使它得到滿足。在一個實施例中,加載緩沖器是組相聯(lián)緩沖器,而在其他實施例中也可以使用其他存儲結(jié)構(gòu)。
如果在SRL內(nèi)遇到這樣的存儲與加載操作從數(shù)據(jù)高速緩存中檢索的存儲數(shù)據(jù)不對應,并且按照程序順序在與從數(shù)據(jù)高速緩存檢索的數(shù)據(jù)對應的指令之后而按照程序順序在加載操作之前,那么可以使用錯誤預測恢復機制來檢索最新存儲數(shù)據(jù)。在一個實施例中,SRL中最新存儲數(shù)據(jù)可能使加載指令得到滿足,通過將指令的處理管線沖刷回執(zhí)行順序中由加載緩沖器內(nèi)存儲在條目中的檢驗點指示的特定點,從而將加載指令與最新存儲數(shù)據(jù)對應。
圖8示出根據(jù)一個實施例的加載緩沖器的條目,其中每個加載緩沖器條目都包含物理地址標記801,物理地址標記801與SRL中的存儲操作的相應地址字段相比較。每個條目還包括有效位805,指示該條目是否包含有效加載地址;標識字段810,指示在加載操作錯誤地滿足于數(shù)據(jù)高速緩存中的存儲數(shù)據(jù)之后執(zhí)行重新開始的位置(“檢驗點”);以及存儲緩沖器標識字段815,指示按照程序順序與加載指令最近的前一存儲指令的地址;以及存儲緩沖器標識字段817,指示以前滿足了加載的存儲。
在本發(fā)明的一個實施例中,在要滿足的每個加載操作從數(shù)據(jù)高速緩存讀取數(shù)據(jù)之前,相對于SRL中存儲的存儲操作檢驗加載緩沖器條目。在其他實施例中,該檢驗是在加載操作從數(shù)據(jù)高速緩存中檢索數(shù)據(jù)之后實現(xiàn)的。由于加載緩沖器是組相聯(lián)的,而不是全相聯(lián)的,例如至少一個實施例能夠相對較快地將加載地址和SRL中的相應存儲地址相比較,這樣該比較就可以在高等待時間加載操作的存儲器存取周期期間進行。
圖5示例了前端總線(FSB)計算機系統(tǒng),在其中可以使用本發(fā)明的一個實施例。處理器205從一級(L1)高速緩沖存儲器510和主存儲器515中存取數(shù)據(jù)。在本發(fā)明的其他實施例中,高速緩沖存儲器可以是計算機系統(tǒng)存儲層次中的二級(L2)高速緩存或者其他存儲器。而且,在一些實施例中,圖5的計算機系統(tǒng)可以既包括L1高速緩存又包括L2高速緩存,所述L1和L2高速緩存包括內(nèi)含的高速緩存層次,其中相干數(shù)據(jù)在L1和L2高速緩存之間共享。
圖5的處理器內(nèi)示例的是本發(fā)明的一個實施例506。在一些實施例中,圖5的處理器可以是多內(nèi)核處理器。
主存儲器可以由各種存儲器源實現(xiàn),例如動態(tài)隨機存取存儲器(DRAM)、硬盤驅(qū)動器(HDD)520或者包含各種存儲設備和技術的、經(jīng)由網(wǎng)絡接口530遠離計算機系統(tǒng)設置的存儲器資源。高速緩沖存儲器可以設置在處理器內(nèi)或者處理器的鄰近處,例如在處理器的本地總線507上。而且,高速緩沖存儲器可以包含相對較快的存儲器單元,例如六晶體管(6T)單元或者大約相同或者更快存取速度的其他存儲器單元。
圖5的計算機系統(tǒng)可以是總線代理例如微處理器的點對點(PtP)網(wǎng)絡,總線代理經(jīng)由專用于PtP網(wǎng)絡上每個代理的總線信號進行通信。本發(fā)明506的至少一個實施例在每個總線代理內(nèi)或者至少與每個總線代理相關聯(lián),這樣在總線代理之間能夠以迅速的方式便于存儲操作。
圖6示例了以點對點(PtP)配置設置的計算機系統(tǒng)。特別地,圖6顯示了這樣的系統(tǒng),其中處理器、存儲器和輸入/輸出設備由多個點對點接口互連。
圖6的系統(tǒng)也可以包括多個處理器,為了簡潔只示出了兩個處理器670、680。處理器670、680每個可以包括本地存儲控制器集線器(MCH)672、682來連接存儲器62、64。處理器670、680可以使用PtP接口電路678、688經(jīng)由點對點(PtP)接口650交換數(shù)據(jù)。處理器670、680均可以使用點對點接口電路676、694、686、698經(jīng)由各個PtP接口652、654與芯片組690交換數(shù)據(jù)。芯片組690也可以經(jīng)由高性能圖形接口639與高性能圖形電路638交換數(shù)據(jù)。
本發(fā)明的至少一個實施例可以設置在處理器670、680內(nèi)。然而本發(fā)明的其他實施例可以存在于圖6的系統(tǒng)中的其他電路、邏輯單元、或者設備之中。而且,本發(fā)明的其他實施例可以分布在圖6所示的多個電路、邏輯單元或者設備。
本文所描述的本發(fā)明的多個實施例可以利用使用互補金屬氧化物半導體設備或者“硬件”的電路、或者使用介質(zhì)中存儲的一組指令(當由機器例如處理器執(zhí)行時,執(zhí)行與本發(fā)明實施例相關聯(lián)的操作)或者“軟件”來實現(xiàn)。或者,本發(fā)明的實施例可以使用硬件和軟件的組合來實現(xiàn)。
雖然已經(jīng)參照實施例描述了本發(fā)明,但是該描述并不意味著限制意義。對于本發(fā)明所屬領域的技術人員而言顯而易見的是,對示出實施例以及其他實施例的各種修改都被認為是落入本發(fā)明的精神和范圍之內(nèi)。
權利要求
1.一種裝置,包括第一存儲設備,用于在高等待時間操作從第二存儲設備存取數(shù)據(jù)期間記錄多個存儲操作的程序順序。
2.根據(jù)權利要求1所述的裝置,進一步包括等待緩沖器,用于存儲依賴于所述高等待時間操作的操作。
3.根據(jù)權利要求2所述的裝置,進一步包括第三存儲設備,用于在所述高等待時間操作已經(jīng)從第二存儲設備存取數(shù)據(jù)之后存儲與所述多個存儲操作相關聯(lián)的數(shù)據(jù)。
4.根據(jù)權利要求3所述的裝置,其中獨立加載操作是在高等待時間操作已經(jīng)發(fā)布之后并在高等待時間操作從第二存儲設備檢索到數(shù)據(jù)之前檢索與獨立存儲操作相對應的數(shù)據(jù)。
5.根據(jù)權利要求4所述的裝置,其中所述獨立加載操作是存取與第四存儲設備中存儲的操作相對應的數(shù)據(jù)。
6.根據(jù)權利要求5所述的裝置,其中第一存儲設備包括先進先出隊列而第四存儲設備包括1級(L1)存儲隊列。
7.根據(jù)權利要求6所述的裝置,其中第二存儲設備包括動態(tài)隨機存取存儲器(DRAM)。
8.根據(jù)權利要求7所述的裝置,進一步包括弱計數(shù)過濾器,以允許使獨立加載操作得到滿足而不用從第三設備讀取數(shù)據(jù)。
9.一種方法,包括發(fā)布高等待時間指令;將按照程序順序在所述高等待時間指令之后的多個存儲指令存儲在先入先出隊列中;在所述高等待時間指令檢索數(shù)據(jù)時,利用獨立于所述高等待時間指令的存儲指令的數(shù)據(jù)來滿足獨立于所述高等待時間指令的加載指令。
10.根據(jù)權利要求9所述的方法,進一步包括在所述高等待時間指令檢索數(shù)據(jù)時將數(shù)據(jù)暫時存儲在數(shù)據(jù)高速緩存或1級(L1)存儲隊列中,使得所述加載指令能夠讀取暫時存儲的數(shù)據(jù)。
11.根據(jù)權利要求10所述的方法,進一步包括在所述高等待時間指令檢索數(shù)據(jù)時將從屬存儲指令存儲在等待緩沖器中。
12.根據(jù)權利要求11所述的方法,進一步包括在所述數(shù)據(jù)高速緩存中按照程序順序重新裝配與所述等待緩沖器中存儲的所述從屬存儲指令相關聯(lián)的數(shù)據(jù)以及與所述先入先出隊列中存儲的存儲指令相關聯(lián)的數(shù)據(jù)。
13.根據(jù)權利要求9所述的方法,其中所述先入先出緩沖器按照程序順序存儲獨立和從屬存儲指令,使得可將緩沖器內(nèi)容按照程序順序存儲在數(shù)據(jù)高速緩沖中。
14.根據(jù)權利要求13所述的方法,其中所述高等待時間指令從動態(tài)隨機存取存儲器中檢索數(shù)據(jù)。
15.根據(jù)權利要求10所述的方法,其中如果所述數(shù)據(jù)被存儲到與之前存儲的有效數(shù)據(jù)相對應的所述數(shù)據(jù)高速緩存的區(qū)域,那么所述之前存儲的有效數(shù)據(jù)被暫時存儲在另一個存儲位置并且隨后被恢復到所述數(shù)據(jù)高速緩存的區(qū)域。
16.根據(jù)權利要求10所述的方法,其中用于滿足所述加載指令的所述數(shù)據(jù)是與所述L1存儲隊列中存儲的指令相對應的數(shù)據(jù)。
17.根據(jù)權利要求16所述的方法,其中具有用于滿足所述加載指令的數(shù)據(jù)的所述先入先出隊列中存儲的指令獨立于所述高等待時間指令。
18.一種系統(tǒng),包括存儲器,用于存儲第一數(shù)據(jù);處理器,用于執(zhí)行高等待時間指令以檢索第一數(shù)據(jù);隊列,用于在所述高等待時間操作檢索第一數(shù)據(jù)時,按照程序順序存儲多個存儲指令;高速緩存,用于暫時包括與所述多個存儲指令中的至少一個相對應的存儲數(shù)據(jù),所述存儲數(shù)據(jù)滿足獨立于所述高等待時間操作的加載指令;組相關加載緩沖器,用于存儲與所述加載指令相對應的存儲地址,所述存儲地址要與所述存儲指令的目標地址相比較。
19.根據(jù)權利要求18所述的系統(tǒng),其中所述高速緩存在所述高等待時間指令完成之后并在已經(jīng)從所述隊列中讀取出所述多個存儲指令之后按照程序順序存儲與所述存儲指令相對應的多個數(shù)據(jù)。
20.根據(jù)權利要求18所述的系統(tǒng),進一步包括弱計數(shù)過濾器,以允許由所述隊列中存儲的數(shù)據(jù)滿足所述加載操作,而不是在所述數(shù)據(jù)已經(jīng)被存儲在所述數(shù)據(jù)高速緩存中之后讀取所述數(shù)據(jù)。
21.根據(jù)權利要求19所述的系統(tǒng),進一步包括等待緩沖器存儲,用于存儲依賴于所述高等待時間指令的指令。
22.根據(jù)權利要求21所述的系統(tǒng),其中存儲第一數(shù)據(jù)的存儲器包括動態(tài)隨機存取存儲器。
23.根據(jù)權利要求22所述的系統(tǒng),其中所述隊列是先入先出隊列。
24.根據(jù)權利要求23所述的系統(tǒng),其中所述弱計數(shù)過濾器包括按存儲器地址的散列函數(shù)索引的直接映射非標記計數(shù)器數(shù)組。
25.根據(jù)權利要求24所述的系統(tǒng),其中如果存儲指令存儲在所述隊列之中,則使所述弱計數(shù)過濾器中的相應計數(shù)器遞增。
26.根據(jù)權利要求25所述的系統(tǒng),其中所述隊列、所述數(shù)據(jù)高速緩存、所述等待緩沖器以及所述弱計數(shù)過濾器都包含在微處理器內(nèi)。
27.一種機器可讀介質(zhì),具有存儲在其上的一組指令,如果由機器執(zhí)行所述指令,則使所述機器執(zhí)行一種方法,所述方法包括響應需要執(zhí)行多于最小時間的存儲器存取指令,將多個存儲操作按照程序順序存儲在先入先出(FIFO)隊列中;響應所述存儲器存取指令的完成,從所述FIFO隊列中檢索所述多個存儲操作并將它們的數(shù)據(jù)按照程序順序存儲在數(shù)據(jù)高速緩存中而不必查找所述FIFO隊列。
28.根據(jù)權利要求27所述的機器可讀介質(zhì),其中在執(zhí)行所述存儲器存取指令時,獨立于所述存儲器存取指令的加載操作要存取與1級(L1)存儲隊列中存儲的存儲指令相對應的存儲數(shù)據(jù)。
29.根據(jù)權利要求28所述的機器可讀介質(zhì),其中所述加載操作是從所述數(shù)據(jù)高速緩存中存取存儲數(shù)據(jù)。
30.根據(jù)權利要求28所述的機器可讀介質(zhì),其中如果弱計數(shù)過濾器指示數(shù)據(jù)存在于所述FIFO隊列之中,則所述加載操作將從所述FIFO隊列存取所述存儲數(shù)據(jù)。
31.根據(jù)權利要求28所述的機器可讀介質(zhì),其中所述方法進一步包括將與所述加載操作的至少一個相關聯(lián)的地址與所述存儲操作的地址相比較來確定哪個存儲操作對應于與至少一個加載操作相對應的最新數(shù)據(jù)。
32.根據(jù)權利要求31所述的機器可讀介質(zhì),其中所述方法進一步包括從按照程序順序出現(xiàn)在至少一個加載操作之前的操作所對應的檢驗點開始執(zhí)行操作。
33.根據(jù)權利要求32所述的機器可讀介質(zhì),其中與所述加載操作相關聯(lián)的地址要存儲在組相關緩沖器中。
全文摘要
一種技術,允許在高等待時間指令處理期間滿足獨立加載。本發(fā)明的實施例涉及這樣的技術其中在處理高等待時間指令過程中,當滿足獨立加載指令時,存儲結(jié)構(gòu)用于按照程序順序保存存儲操作。在處理高等待時間指令之后,能夠按照程序順序恢復存儲操作而無需查找存儲結(jié)構(gòu)。
文檔編號G06F9/38GK1804792SQ20051011915
公開日2006年7月19日 申請日期2005年12月15日 優(yōu)先權日2004年12月16日
發(fā)明者R·拉瓦, S·斯里尼瓦桑, H·阿卡里, A·甘地 申請人:英特爾公司