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