專利名稱:高性能推測性未對齊加載操作的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體關(guān)于計算機(jī)處理器的領(lǐng)域,具體地,有關(guān)被集成到一個單個微處理器芯片上的處理器。更加具體地,本發(fā)明有關(guān)未對齊的存儲數(shù)據(jù)的推測性存取。
提供更加快速的微處理器是當(dāng)今處理器設(shè)計的一個主要目標(biāo)。已經(jīng)采用了許多不同的技術(shù),來改善處理器性能。極大地改善了處理器性能的一個技術(shù)是高速緩沖存儲器(cache)的使用。正如此處所使用的,高速緩沖存儲器指的是一組存儲器存儲單元,它們在微處理器本身上形成,所以比位于微處理器芯片之外的其它類型的存儲器(例如RAM或磁盤)有更快的存取時間。通過將頻繁使用的數(shù)據(jù)的一個拷貝存儲在高速緩存中,處理器能夠在需要這些數(shù)據(jù)時存取高速緩存,而不必到“芯片外”去獲得信息,這大大增強(qiáng)了處理器的性能。
不過,有些問題與高速緩沖存儲器相關(guān)。其中一個問題出現(xiàn)在高速緩存中的數(shù)據(jù)相對于高速緩存邊界未對齊的時候。盡管許多較新的軟件編譯器都盡力避免未對齊的問題,然而仍有某些類型的操作,例如FORTRAN編程語言中慣用的COMMON語句,會頻繁地引起高速緩存未對齊,所以,為保持整個軟件的能力,一個處理器必須具有處理未對齊的高速緩存數(shù)據(jù)的能力。參照
圖1A和1B,將更詳細(xì)地描述了高速緩存中未對齊數(shù)據(jù)的問題。
圖1A是一個描述常規(guī)高速緩存的內(nèi)容的圖形,該高速緩存例如是在IBM公司的POWER PC處理器家族中使用的高速緩存。如圖所示,高速緩存100包含一些“高速緩存行”,每個高速緩存行是128字節(jié)寬。不過,在任何單次存取中,最多能從高速緩存中讀8個字節(jié)。正如此處所用的,術(shù)語“字”指的是一個四字節(jié)數(shù)據(jù)塊,術(shù)語“雙字”指的是一個八字節(jié)數(shù)據(jù)塊。圖1A示出了高速緩存行0中的一個雙字。第一個字是xxab,第二個字是cdxx,其中a,b,c,d是需要的數(shù)據(jù)字節(jié),“x”代表不需要的數(shù)據(jù)字節(jié)。一般地,處理器被設(shè)計為允許在處理器執(zhí)行單元和高速緩存間進(jìn)行n位寬的傳送。為了舉例,假設(shè)存取圖1A所示高速緩存的處理器允許32位或一個字寬的數(shù)據(jù)傳輸。高速緩存100的任何高速緩存行中的任何字,都可由單個裝入指令取出。類似地,任何高速緩存行中的任何字都可由單個存儲指令寫入。若處理器請求包含字節(jié)a,b,c,d的字,則由以上可見,只需單個裝入指令來從高速緩存中得到數(shù)據(jù)的全部四個字節(jié),這是因為所有的所要求數(shù)據(jù)都位于高速緩存行的單個雙字中。
現(xiàn)參照圖1B,示出了存儲在高速緩存100中的同一數(shù)據(jù),不過,這次它相對于高速緩存邊界來說是未對齊的。特別地,可以看到,所要求字的a,b,c字節(jié)都存儲在高速緩存行0中,而字節(jié)d被存儲在高速緩存行1中?,F(xiàn)在,處理器必須對高速緩存做兩次存取以獲得數(shù)據(jù)的所有四個字節(jié)。而且,因為數(shù)據(jù)是在兩次分開的存取操作中從高速緩存中取出的,所以,在它被寫入處理器的一個結(jié)構(gòu)寄存器中之前,必須被重組。
圖1C大致示出了用于重組由一個高速緩存存取返回的未對齊數(shù)據(jù)的一個常規(guī)電路。電路300一般被稱為一個裝入格式化器。格式化器包括格式化器控制邏輯302,它提供所需的控制信號以操作電路300的其它部件。格式化器300中還包括一個旋轉(zhuǎn)器304,歸并鎖存器306和一個多路復(fù)用器308。旋轉(zhuǎn)器從高速緩存中接收數(shù)據(jù),并依據(jù)從格式控制邏輯302接收的信號,將數(shù)據(jù)組織成8字節(jié)的塊,在旋轉(zhuǎn)器304中數(shù)據(jù)能被移位到任何期望的八位位置。在當(dāng)前情況下,被旋轉(zhuǎn)到旋轉(zhuǎn)器最左邊位置的字節(jié)a,b和c被送到歸并鎖存器306中,它在處理器對高速緩存的行1做第二次存取時,保存該數(shù)據(jù)。在處理器存取高速緩存行1時,處理器取出字節(jié)d并將它送給旋轉(zhuǎn)器304,旋轉(zhuǎn)器304將該字節(jié)旋轉(zhuǎn)到左邊第四個字節(jié)位置。然后,字節(jié)d與來自歸并鎖存器306的字節(jié)a,b和c一起被直接送到多路復(fù)用器308中。以這種方式,數(shù)據(jù)被正確地重組并隨后送到處理器的結(jié)構(gòu)寄存器中。
超標(biāo)量處理器能得到超過常規(guī)標(biāo)量處理器的性能優(yōu)勢,是因為它們允許不按程序順序執(zhí)行指令。以這種方式,一個執(zhí)行較慢的指令將不會使隨后的指令停止執(zhí)行,該隨后的指令可以在較慢指令未決時,利用處理器上的其它資源執(zhí)行。
不過,對高速緩存的未對齊存取不能用于超標(biāo)量處理,因為存在數(shù)據(jù)不按順序從高速緩存中返回的可能性。特別地,再參照以上例子,如果由于某種原因,第二個裝入指令在第一個裝入指令之前完成,則包含字節(jié)d的數(shù)據(jù)將首先進(jìn)入格式化器,然后是包含字節(jié)a,b,c的數(shù)據(jù)。在這種情況下,當(dāng)數(shù)據(jù)被重組時,字節(jié)的順序是錯誤的。對該問題的一個解決方法是禁止未對齊高速緩存指令被推測地執(zhí)行。換句話說,當(dāng)超標(biāo)量處理器認(rèn)識到要出現(xiàn)一個對高速緩存未對齊存取時,它停止發(fā)布該未對齊高速緩存存取指令之后的指令,并停下來等待在該高速緩存存取指令之前發(fā)布的指令結(jié)束。然后,它按順序處理這兩個高速緩存存取指令。這種方式可以保證未對齊高速緩存存取按順序完成。盡管解決了以上所提問題,但它也降低了處理器性能。于是,本發(fā)明的一個目的是提供一個超標(biāo)量處理器,它允許推測地執(zhí)行未對齊高速緩存存取指令。下面的描述將進(jìn)一步揭示本發(fā)明的目的和優(yōu)點。
在本發(fā)明的一個方案中,高速緩存存取指令,例如裝入和存儲,被提供有一個標(biāo)記,將每條指令標(biāo)記為第一個,最后一個或非未對齊指令。在調(diào)度時,若認(rèn)識到指令是一個未對齊高速緩存存取,則由裝入/存儲單元控制邏輯將其標(biāo)記為“第一”。同時,未對齊/忙鎖存器中的一位被置位,該鎖存器是由裝入/存儲單元邏輯操作的。在調(diào)度所需數(shù)據(jù)存取的第二條高速緩存存取指令時,該指令被標(biāo)記為“最終”。一旦調(diào)度“最終”高速緩存存取指令,則不再調(diào)度其它的未對齊高速緩存存取指令,直到已完成“第一”和“最終”指令。不過,允許執(zhí)行并完成其它對齊的高速緩存存取指令。以這種方式,處理器在第一和最終高速緩存存取指令未決時,允許指令的推測執(zhí)行。
對齊的指令不要求使用歸并鎖存器,從而可以通過格式化器并進(jìn)入處理器寄存器,而不干擾第一和最終指令的處理。當(dāng)?shù)谝恢噶罱Y(jié)束時,它被送給格式化器,格式化器將數(shù)據(jù)存入歸并鎖存器。在來自第一存取的數(shù)據(jù)被存入歸并鎖存器中時,可以有任意數(shù)量的對齊高速緩存存取通過格式化器。在“最終”指令結(jié)束并被送給格式化器時,裝入/存儲單元控制邏輯認(rèn)識到,該數(shù)據(jù)要與歸并鎖存器中存儲的數(shù)據(jù)合并。執(zhí)行歸并操作,隨后重組好的數(shù)據(jù)被送到處理器上的寄存器中。然后,未對齊/忙鎖存器被清零以允許調(diào)度任何隨后的未對齊高速緩存存取指令。因為在任何給定時間,在處理器中只允許有一個未對齊高速緩存存取指令未決,所以不存在歸并鎖存器被誤用的危險。如果最終高速緩存存取指令在第一高速緩存存取指令之前結(jié)束并被送給格式化器,則只需簡單地將該數(shù)據(jù)丟棄。在本發(fā)明的一個特定方案中,若最終指令在第一指令之前完成,則使用失中隊列表來保存最終指令的數(shù)據(jù)。
圖1A描述了展示對齊數(shù)據(jù)的一個高速緩存中的邏輯內(nèi)容。
圖1B描述了一個高速緩存,它有跨越兩個高速緩存行的未對齊高速緩存數(shù)據(jù)。
圖1C是一個簡圖,展示了用來重組從高速緩存中取出的未對齊數(shù)據(jù)的一個格式化器。
圖1D是根據(jù)本發(fā)明一個實施方案給出的處理器的方塊圖。
圖2是一個電路的簡圖,該電路用來執(zhí)行按本發(fā)明的一個實施方案的未對齊高速緩存存取。
圖3是一個表,示出了按本發(fā)明一個實施方案的第一/最終標(biāo)記的操作。
圖4A-4B分別舉例說明了按本發(fā)明的一個實施方案的對齊和未對齊高速緩存存取。
圖5舉例說明了第一和最終標(biāo)記在一對基本裝入指令中的應(yīng)用,該指令是隨著對一個裝入指令的調(diào)度而產(chǎn)生的。
圖6舉例說明了按本發(fā)明一個實施方案的一個失中隊列表的邏輯內(nèi)容。
圖1D是依照本發(fā)明用來處理信息的處理器系統(tǒng)10的方塊圖。在優(yōu)選實施方案中,處理器10是一個單集成電路超標(biāo)量微處理器,例如德克薩斯州奧斯丁IBM公司的Power PC處理器。相應(yīng)地,如以下要進(jìn)一步描述的,處理器10包括多種不同的單元,寄存器,緩沖器,存儲器和其它部分,所有這些都是由集成電路形成的。還有,在優(yōu)選實施方案中,處理器10按精減指令集計算(‘RISC’)技術(shù)操作。如在圖1中所示的,系統(tǒng)總線11連接到處理器10的一個總線接口單元(“BIU”)12上。BIU12控制處理器10和系統(tǒng)總線11間的信息傳輸。
BIU12連接到指令高速緩存14和處理器10的數(shù)據(jù)高速緩存16上。指令高速緩存14向一個定序器單元18輸出指令。根據(jù)來自指令高速緩存14的指令,定序器單元18有選擇地把指令輸出到處理器10的其它執(zhí)行電路。
除了包含調(diào)度單元46和完成單元48這些執(zhí)行單元的定序器單元18以外,在優(yōu)選實施方案中,處理器10的執(zhí)行電路還包括多個執(zhí)行單元,稱為分支單元20,定點單元A(“FXUA”)22,定點單元B(“FXUB”)24,復(fù)雜定點單元(“CFXU”)26,裝入/存儲單元(“LSU”)28和浮點單元(“FPU”)30。FXUA22,FXUB24,CFXU26和LSU28從通用結(jié)構(gòu)寄存器(“GPR”)32和定點更名緩沖器34中輸入它們的源操作數(shù)信息。另外,F(xiàn)XUA22和FXUB24從進(jìn)位位(“CA”)寄存器42中輸入“進(jìn)位位”。FXUA22,FXUB24,CFXU26和LSU28將它們的操作的結(jié)果(目的操作數(shù)信息)輸出,以便存儲在定點更名緩沖器34的選定項中。CFXU26也向/從專用寄存器(“SPR”)40輸入源操作數(shù)信息和輸出目的操作數(shù)信息。
FPU300從浮點結(jié)構(gòu)寄存器(“FPR”)26和浮點更名緩沖器38中輸入其源操作數(shù)信息。FPU300輸出其操作的結(jié)果(目的操作數(shù)信息)以存儲在浮點更名緩沖器38的選定項中。
定序器單元18向/從GPR32和FPR36輸入和輸出信息。分支單元20從定序器單元18輸入指令和指示處理器10的當(dāng)前狀態(tài)的信號。根據(jù)這些指令和信號,分支單元20向定序器單元18輸出信號,指示存儲一系列由處理器10執(zhí)行的指令的合適的存儲器地址。根據(jù)來自分支單元20的信號,定序器單元18從指令高速緩存14中輸入指定的指令序列。如果指令序列中的一個或多個指令沒有存儲在指令高速緩存14中,則指令高速緩存14從連接到系統(tǒng)總線11上的系統(tǒng)存儲器39中(通過BIU12和系統(tǒng)總線11)輸入該指令。
根據(jù)從指令高速緩存14輸入的指令,定序器單元18通過調(diào)度單元46,有選擇地將指令調(diào)度給執(zhí)行單元20,22,24,26,28和30中選定的一個。每個執(zhí)行單元執(zhí)行特定指令類中的一個或多個指令。例如,F(xiàn)XUA22和FXUB24執(zhí)行源操作數(shù)上的第一類定點算術(shù)操作,例如加法,減法,與,或和異或。CFXU26執(zhí)行源操作數(shù)上的第二類定點操作,例如定點乘和除。FPU30執(zhí)行源操作數(shù)的浮點操作,例如浮點乘和除。
通過同時在不同的執(zhí)行單元20,22,24,26,28和30中處理多條指令,處理器10獲得了高的性能。相應(yīng)地,每條指令的執(zhí)行都被分為一系列階段,每個階段都可以與其它指令的一些階段并行執(zhí)行。這種技術(shù)被稱為“流水線技術(shù)”。在優(yōu)選實施方案的一個典型方面,一條指令通常以六個階段執(zhí)行,稱為取指令,解碼,調(diào)度,執(zhí)行,完成和回寫。
在優(yōu)選實施方案中,每條指令都要求一個機(jī)器周期來完成指令處理的每個階段。然而,有些指令(例如由CFXU26執(zhí)行的復(fù)雜定點指令)可能要求多于一個周期。因此,根據(jù)指令處理完成所需時間的不同,在一個特定指令的執(zhí)行和完成階段之間會出現(xiàn)不同的延遲。
響應(yīng)一條裝入指令,LSU28從數(shù)據(jù)高速緩存26中輸入信息并將該信息拷貝到更名緩沖器34和38中選定的一個。如果該信息沒有存儲在數(shù)據(jù)高速緩存16中,則數(shù)據(jù)高速緩存16(通過BIU12和系統(tǒng)總線11)從連接到系統(tǒng)總線11上的一個系統(tǒng)存儲器39中輸入該信息。另外,數(shù)據(jù)高速緩存16能夠從數(shù)據(jù)高速緩存中向連接到系統(tǒng)總線11上的系統(tǒng)存儲器39(通過BIU12和系統(tǒng)總線11)輸出信息。響應(yīng)存儲指令,LSU28從GPR32和FPR36中選定的一個輸入信息并將該信息拷貝到數(shù)據(jù)高速緩存16或存儲器。
舉一個執(zhí)行單元,例如FXUA22,FXUB24,更名緩沖器34和調(diào)度單元46間交互作用的例子,從調(diào)度單元46向FXUA22調(diào)度一條指令“addc,a,b”。正如本領(lǐng)域?qū)I(yè)人士所熟知的,調(diào)度單元46向FXUA22提供操作數(shù)“a”和“b”的標(biāo)記,以告知FXUA22到哪里取出操作數(shù)的數(shù)據(jù)。例如,在一個有六個更名緩沖器的系統(tǒng)中,調(diào)度單元46可能適當(dāng)?shù)貙⑽挥谝粋€更名緩沖器1中的操作數(shù)“a”標(biāo)記為一個六位標(biāo)記100000。標(biāo)記010000可能適用于指明操作數(shù)“b”是在更名緩沖器2中。因為FXUA22不寫入GPR32,調(diào)度單元46必須為操作的目標(biāo)使用一個更名緩沖器標(biāo)記,例如001000,以使“add”指令的結(jié)果被放入更名緩沖器3中。
現(xiàn)參照圖2,這里簡要示出了按本發(fā)明一個優(yōu)選實施方案中用于處理裝入指令的電路。電路200包括例如加法器202這樣的邏輯,它被用于計算存取高速緩存206中的數(shù)據(jù)所需的有效地址。自然,本發(fā)明適用于本領(lǐng)域中已知的任意數(shù)量的存儲器尋址模式。為舉例的目的,以PowerPC微處理器結(jié)構(gòu)為例描述本發(fā)明操作。Power PC結(jié)構(gòu)在不同出版物中已有全面描述,例如Power PC微處理器家族編程環(huán)境,它可從IBM微電子學(xué)中查到,出版號NO.MPRPP CFPE-01,在此引入以供參考。由加法器202產(chǎn)生的有效地址被傳送給數(shù)據(jù)單元204,它包含物理存取高速緩存206所需的控制邏輯。數(shù)據(jù)單元204還包括一個未對齊/忙鎖存器208,它跟蹤電路200是否正在處理一個未對齊裝入指令。本發(fā)明的這一特征將在下面更詳細(xì)地介紹。
在本例中,高速緩存206有一個連接到一條64位數(shù)據(jù)線上的輸出端口,該數(shù)據(jù)線將數(shù)據(jù)從高速緩存206傳送給格式化器210。格式化器的設(shè)計和操作在本領(lǐng)域中是眾所周知的,此處僅描述說明本發(fā)明所需要的內(nèi)容。在所示實施方案中,格式化器210包括一個旋轉(zhuǎn)器212,采用它來將來自64位數(shù)據(jù)線的數(shù)據(jù)沿任何給定的8位邊界重定位或“旋轉(zhuǎn)”。換句話說,從64位數(shù)據(jù)線接收的任何數(shù)據(jù)字節(jié)在旋轉(zhuǎn)器212中都可被重新放置雙字中的較低或較高順序位置。正如此處所用的,術(shù)語“雙字”指數(shù)據(jù)的一個八字節(jié)段,術(shù)語“字”指的是四字節(jié)段。
旋轉(zhuǎn)器212的輸出被連接到歸并鎖存器214和多路復(fù)用器216上。歸并鎖存器214僅協(xié)同未對齊數(shù)據(jù)裝入一起使用。多路復(fù)用器216從旋轉(zhuǎn)器,且如果需要,也從歸并鎖存器214將數(shù)據(jù)傳送到更名寄存器文件218中。多路復(fù)用器216被設(shè)計為同時從旋轉(zhuǎn)器212和歸并鎖存器214傳送數(shù)據(jù)。這樣,多路復(fù)用器在將由一條未對齊裝入指令取出的數(shù)據(jù)傳送給更名寄存器文件之前,重組該數(shù)據(jù)。
最后,如常規(guī)地,在裝入指令完成之后,來自更名寄存器文件218中適當(dāng)寄存器的用于已完成指令的數(shù)據(jù)被傳送給GPR寄存器文件220中相應(yīng)的寄存器。當(dāng)然,那些本領(lǐng)域?qū)I(yè)人士可以理解,更名寄存器218和GPR寄存器文件220不必是物理上分開的寄存器文件,而可以是統(tǒng)一的寄存器文件,根據(jù)與寄存器相關(guān)的狀態(tài)位的狀態(tài),存儲在寄存器中的數(shù)據(jù)被指定為更名或GPR數(shù)據(jù)。
按本發(fā)明實施方案,在裝入/存儲單元(未示出)執(zhí)行一個裝入指令時,它還將一個第一/最終標(biāo)記與指令聯(lián)系起來,在指令通過電路200時,該標(biāo)記用來跟蹤指令。在一個特定實施方案中,該第一/最終標(biāo)記是一個2位寬數(shù)據(jù)段,它被附加在指令上。圖3是一個表,說明了按本發(fā)明的一個方案的第一/最終標(biāo)記的操作。在該實施方案中,不允許第一和最終位同時為低。如果第一位為低且最終位為高,則裝入指令被標(biāo)記為“最終”,并代表未對齊指令所要求的對高速緩存206的第二次數(shù)據(jù)存取。若第一位為高且最終位為低,則指令被標(biāo)記為“第一”,并代表未對齊指令對高速緩存206的第一次數(shù)據(jù)存取。若第一和最終位均為高,則指令不是未對齊的,并可正確地通過電路200。
圖4A和4B更詳細(xì)地描述了本發(fā)明的操作。圖4A示出了高速緩存206中一部分邏輯內(nèi)容。在本例中,高速緩存206的每一行是128字節(jié)寬且是雙字可尋址的。需要明白的是,在高速緩存行400中,僅僅給出了一個雙字。在該例中,希望從高速緩存行400中存取包含字節(jié)a,b,c和d的字。在高速緩存行400中,數(shù)據(jù)是對齊的,可發(fā)出單個裝入指令來取出它。
現(xiàn)參照圖2和4B,數(shù)據(jù)是未對齊的,因為它跨過了一個高速緩存行邊界。不過,應(yīng)該明白,如果數(shù)據(jù)對一個雙字邊界是未對齊的,則該數(shù)據(jù)在同一高速緩存行中也可以是未對齊的。還應(yīng)該明白,按Power PC結(jié)構(gòu),對高速緩存的每次存取返回一個雙字。若調(diào)度一條試圖裝入字節(jié)a,b,c,d的指令,可以看到,要求對高速緩存206做兩次存取,一次是對高速緩存行400,另一次是對高速緩存行402。在這種情況下,數(shù)據(jù)單元204中的邏輯認(rèn)識到,指令所要求的數(shù)據(jù)是未對齊的。邏輯電路依次生成兩個獲得數(shù)據(jù)所需的“基本”指令LD1和LD2?;局噶顑H由LSU內(nèi)部使用以執(zhí)行必要的高速緩存存取。如圖5所示,LD1將被標(biāo)記為“第一”,LD2被標(biāo)記為“最終”。同時,數(shù)據(jù)單元204確立未對齊/忙鎖存器208的一位。這使得調(diào)度單元暫停發(fā)出其它的未對齊指令。不過,電路200仍可以調(diào)度并執(zhí)行其它指令,包括對齊的裝入指令。這是因為對齊指令不要求使用歸并鎖存器214。這樣,如果未對齊指令已事先由第一高速緩存存取將數(shù)據(jù)寫入歸并鎖存器214,并且正在等待由第二次存取取回數(shù)據(jù),則一條對齊指令仍可通過多路復(fù)用器216將該數(shù)據(jù)從旋轉(zhuǎn)器212傳送到更名寄存器中,而不干擾存儲在歸并鎖存器214中的數(shù)據(jù)。在其他實施方案中,本發(fā)明的這一特性被擴(kuò)展為可以提供多個歸并鎖存器,以允許多個未對齊指令同時在處理器中未決。自然,為每個未對齊指令跟蹤第一和最終標(biāo)記的裝置也可被類似地擴(kuò)展。
當(dāng)格式化器210接收到來自LD1的數(shù)據(jù)時,該數(shù)據(jù)按要求在旋轉(zhuǎn)器212中旋轉(zhuǎn)并被放入歸并鎖存器214,該數(shù)據(jù)被儲存在鎖存器214中并等待由最終裝入指令裝入的數(shù)據(jù)。如前面所述對齊指令可以繼續(xù)使用格式化器處理它們的數(shù)據(jù)。當(dāng)格式化器接收了來自LD2的數(shù)據(jù)時,它旋轉(zhuǎn)該數(shù)據(jù)并傳送給多路復(fù)用器216。同時,歸并鎖存器214中的數(shù)據(jù)也被傳送給多路復(fù)用器216,在那里,數(shù)據(jù)被重組為所需的包含字節(jié)a,b,c和d的字。然后,按常規(guī)超標(biāo)量技術(shù),它被傳送到更名寄存器文件218和GPR220中。
因為處理器提供無序指令執(zhí)行,所以,有可能出現(xiàn)來自最終裝入指令的數(shù)據(jù)在來自第一指令的數(shù)據(jù)之前被傳送給格式化器210。這時,格式化器210中的邏輯認(rèn)識到歸并鎖存器214中不包含任何有效數(shù)據(jù),于是丟棄最終裝入指令傳送給它的數(shù)據(jù)。在來自第一指令的數(shù)據(jù)被存入歸并鎖存器之后,來自最終指令的數(shù)據(jù)被再次傳送給格式化器。當(dāng)然,在這種情況下,處理器必須提供一些用來重發(fā)來自最終指令的數(shù)據(jù)的裝置,而不要求調(diào)度單元重新發(fā)出原始的未對齊裝入指令。對那些本領(lǐng)域?qū)I(yè)人士來說,可以有很多完成這一任務(wù)的合適方式。例如,在本發(fā)明的一個實施方案中,如果在歸并鎖存器中沒出現(xiàn)來自第一指令的數(shù)據(jù),則使用一個“失中隊列”表來重發(fā)來自最終指令的數(shù)據(jù)。這將參照圖6進(jìn)行更詳細(xì)的介紹。
圖6描述了按本發(fā)明的一個實施例的一個失中隊列表中的邏輯內(nèi)容。如所示出的,失中隊列表中的每項包括指令的第一/最終標(biāo)記及指令的實際地址。其它信息,例如有效位,狀態(tài)位等,可以根據(jù)設(shè)計選擇提供。在本發(fā)明的一個實施方案中,每調(diào)度一條指令,就創(chuàng)建失中隊列表600中的一項。若指令在數(shù)據(jù)高速緩存中命中,則在隨后的周期中,從失中隊列表600中移去該指令的那一項。不過,若指令在數(shù)據(jù)高速緩存中落空,則它的實際地址和其它信息保留在失中隊列表600中。處理器連續(xù)地掃描失中隊列表中的項目,并且在每個周期,處理器都試圖按存儲在表中的實際地址存取高速緩存。最后,對于失中隊列表中的每項高速緩存中的數(shù)據(jù)都變?yōu)榭色@得的,并被傳送給寄存器文件。
按本發(fā)明的一個實施方案,來自最終存取的數(shù)據(jù)在來自第一存取的數(shù)據(jù)之前被送給格式化器這一事件被認(rèn)為與高速緩存落空類似。這樣,在每個周期,處理器掃描失中隊列表600,按失中隊列600中所存最終指令的地址存取高速緩存數(shù)據(jù),并將其送給格式化器。格式化器響應(yīng)從高速緩存控制邏輯接收的有效性信號。如果高速緩存在來自第一指令的數(shù)據(jù)可用之前向格式化器傳送最終指令的數(shù)據(jù),則撤銷該數(shù)據(jù)的有效性信號。從而,格式化器將丟棄該數(shù)據(jù)且該最終指令的項被保留在失中隊列表600中。在來自第一指令的數(shù)據(jù)成為可用并被傳送給格式化器以后,在隨后的一個周期,來自最終指令的數(shù)據(jù)被再次傳送給格式化器,但這次要確立有效性信號。于是,格式化器處理來自第一和最終指令的數(shù)據(jù)并向完成表邏輯傳回一個信號以從失中隊列表600中消去第一和最終項。
在最終存取已從高速緩存中取出其數(shù)據(jù)以后,裝入指令準(zhǔn)備結(jié)束。在結(jié)束時,未對齊/忙鎖存器208中的位被清零,現(xiàn)在,裝入/存儲單元可以發(fā)布隨后的未對齊指令。
按照另一實施方案,格式化器可以這樣設(shè)計,如果在第一數(shù)據(jù)被接收之前,接收到最終數(shù)據(jù),則最終數(shù)據(jù)被保存在歸并鎖存器中。在接收到第一數(shù)據(jù)時,將它與最終數(shù)據(jù)重新組合并送入更名寄存器文件。如果以這種方式實現(xiàn)格式化器,則可以避免使用失中隊列表600。
盡管上面是按照特定實施方案描述本發(fā)明,但本領(lǐng)域?qū)I(yè)人士應(yīng)能認(rèn)識到,在不脫離本發(fā)明精神和范圍的情況下,可以做形式和細(xì)節(jié)上的不同變換,例如,按本發(fā)明的其他實施方案,可以在處理指令時并行使用多個裝入/存儲單元。
權(quán)利要求
1.在具有一個數(shù)據(jù)高速緩存和一個寄存器文件的超標(biāo)量處理器中處理裝入指令的方法,其特征在于包括調(diào)度一條未對齊裝入指令,存取在高速緩存中未對齊的一個數(shù)據(jù)塊;繼續(xù)調(diào)度對齊指令;根據(jù)該未對齊裝入指令,對高速緩存產(chǎn)生一個第一存取和一個最終存??;存儲從第一存取取出的數(shù)據(jù),直到來自最終存取的數(shù)據(jù)可用;將來自第一和最終存取的數(shù)據(jù)按裝入指令所需的順序重組;將重組好的數(shù)據(jù)存入寄存器文件。
2.如權(quán)利要求1的方法,其特征在于生成一個第一存取和一個最終存取包含將多個位與存取相關(guān)聯(lián),以表明該存取是第一還是最終存取。
3.如權(quán)利要求1的方法,其特征在于,它還包括這樣的步驟,即根據(jù)對未對齊裝入指令的調(diào)度,確立一個信號,以使處理器停止對隨后的未對齊指令的調(diào)度。
4.如權(quán)利要求3的方法,其特征在于,它還包括根據(jù)未對齊裝入指令的完成確立一個信號的步驟,它使得處理器重新開始對未對齊指令的調(diào)度。
5.在有一個數(shù)據(jù)高速緩存和一個寄存器文件的超標(biāo)量處理器中處理裝入指令的電路,其特征在于包括用來調(diào)度指令的裝置;檢測一個未對齊指令的調(diào)度的裝置,該指令存取高速緩存中未對齊的數(shù)據(jù)塊;用來在檢測到未對齊裝入指令時,停止調(diào)度隨后的未對齊裝入指令,同時調(diào)度隨后的對齊指令的裝置;根據(jù)未對齊裝入指令,對高速緩存產(chǎn)生一個第一存取和一個最終存取的裝置;用來存儲由第一存取取出的數(shù)據(jù),直到來自最終存取的數(shù)據(jù)可用的裝置;用來將來自第一和最終存取的數(shù)據(jù)按裝入指令所需的順序重組的裝置;用來將重組的數(shù)據(jù)存儲到寄存器文件中的裝置。
6.如權(quán)利要求5的電路,其特征在于,用來停止對隨后的未對齊裝入指令的調(diào)度的裝置,包含一個鎖存器,后者有一個響應(yīng)該未對齊指令的調(diào)度而被確立并在該未對齊指令結(jié)束時撤銷的位。
7.如權(quán)利要求5的電路,其特征在于,產(chǎn)生一個第一存取和一個最終存取的裝置包含生成與第一和最終存取相關(guān)的標(biāo)記的邏輯電路。
8.如權(quán)利要求7的電路,其特征在于標(biāo)記包含多個位,它們根據(jù)相應(yīng)的存取是第一存取還是最終存取而被確立。
9.如權(quán)利要求1的電路,其特征在于重組數(shù)據(jù)的裝置包含一個鎖存器,它用來存儲來自第一存取的數(shù)據(jù),直到可以得到來自第二存取的數(shù)據(jù)。
10.如權(quán)利要求1的電路,其特征在于重組數(shù)據(jù)的裝置包含一個鎖存器,它用來存儲來自第二存取的數(shù)據(jù),直到可以得到來自第一存取的數(shù)據(jù)。
全文摘要
本發(fā)明的一個方面有關(guān)在具有數(shù)據(jù)高速緩存和寄存器文件的超標(biāo)量處理器中處理裝入指令的一種方法。在一個實施方案中,該方法包括以下步驟:調(diào)度一條未對齊裝入指令,以存取在高速緩存中未對齊的一個數(shù)據(jù)塊;在繼續(xù)調(diào)度對齊指令時,根據(jù)未對齊裝入指令,對高速緩存生成一個第一存取和一個最終存取,存儲從第一存取取回的數(shù)據(jù),直到可以得到來自最終存取的數(shù)據(jù);將來自第一和最終存取的數(shù)據(jù)按裝入指令所要求的順序重組;把重組好的數(shù)據(jù)存儲到寄存器文件。
文檔編號G06F12/08GK1226700SQ9910104
公開日1999年8月25日 申請日期1999年1月8日 優(yōu)先權(quán)日1998年2月10日
發(fā)明者D·S·雷, B·D·威廉森, S·H·S·通 申請人:國際商業(yè)機(jī)器公司