專利名稱:在多個(gè)并行的前端管道之間保持?jǐn)?shù)據(jù)的同步的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子學(xué)領(lǐng)域。更具體來(lái)說(shuō),本發(fā)明涉及一種對(duì)通過(guò)多個(gè)并行管道傳播的信息保持同步的系統(tǒng)和方法。
早期的微處理器包含被安排成能順著指令管道順序地處理指令的電路。為了提高效率,更新的微處理器(稱為“管道式微處理器”)已經(jīng)被設(shè)計(jì)成同時(shí)對(duì)幾個(gè)指令操作。這是通過(guò)重疊在指令管道的各“前端”階段(即最初幾個(gè)處理階段)所執(zhí)行的諸操作以及在指令管道的各“后端”階段(即最后幾個(gè)處理階段)所執(zhí)行的諸操作而實(shí)現(xiàn)的。此外,還可以將所選擇的處理階段劃分成若干子階段,以進(jìn)一步提高性能,正如在管道程度很深的微處理器(如位于美國(guó)加州Santa Clara的英特爾公司生產(chǎn)的Pentium Pro或Pentium Ⅱ處理器)中的那樣。
直到現(xiàn)在,對(duì)多前端管道的需求還沒(méi)有表現(xiàn)出來(lái)。目前,微處理器中缺少多前端管道的原因可能是復(fù)雜性或者與體系結(jié)構(gòu)的不適應(yīng)性。如果兩個(gè)或更多并行的前端管道在運(yùn)行(即執(zhí)行它們自己的任務(wù)但是針對(duì)的是相同的指令指針“IP”),這些前端管道的每個(gè)對(duì)應(yīng)階段都必須在有效性和信息內(nèi)容上匹配。所以,要求前端管道保持相互之間的同步關(guān)系。
如果要實(shí)行多前端管道,則支持前端管道的邏輯結(jié)構(gòu)的大小有可能會(huì)使它們不能被安置在互相非常鄰近的位置。這會(huì)導(dǎo)致從一個(gè)前端管道向另一個(gè)傳輸事件時(shí)的延遲?!笆录钡睦涌砂?1)阻塞條件,它中止信息(例如一個(gè)或多個(gè)指令指針“IP”)在這些前端管道中的傳播,直到該阻塞條件被撤銷;或者(2)清理?xiàng)l件,它通常導(dǎo)致在某前端管道的各前端階段中留下的所有信息被無(wú)效掉。由于事件是先由一個(gè)前端管道檢測(cè)到、再由另一個(gè)檢測(cè)到的,在一個(gè)前端管道中的信息會(huì)變得與該另一個(gè)前端管道的相應(yīng)信息不一致。這樣,這些前端管道就會(huì)變得不同步。
所以,最好能提供一種保持多個(gè)前端管道的各前端階段的同步、并在某個(gè)可能導(dǎo)致前端管道暫時(shí)變得彼此之間不同步的事件發(fā)生之后提供同步方案的系統(tǒng)和方法。
在一個(gè)實(shí)施例中,描述了一種對(duì)通過(guò)多個(gè)并行操作的前端管道傳播的信息保持同步的方法。概括來(lái)說(shuō),這些前端管道因某個(gè)事件而變得彼此之間不同步。之后,執(zhí)行若干操作,使這些前端管道彼此之間同步。
通過(guò)以下對(duì)本發(fā)明實(shí)施例的詳細(xì)說(shuō)明,本發(fā)明的特點(diǎn)和優(yōu)點(diǎn)將變得顯而易見(jiàn),其中
圖1是以適合處理多個(gè)并行前端管道的微處理器實(shí)現(xiàn)的電子系統(tǒng)的框圖。
圖2是圖1的微處理器中的多指令管道的前端部分的框圖。
圖3是在圖1的微處理器內(nèi)部實(shí)現(xiàn)的、用于重新同步圖2的多個(gè)并行前端管道的邏輯電路的框圖。
圖4是為保持多個(gè)并行前端管道之間的信息的同步而執(zhí)行的操作步驟的示意性流程圖。
圖5是響應(yīng)第一前端管道中起源的TLB_MISS阻塞條件的圖4的同步方案的示意性實(shí)施例。
圖6是響應(yīng)第二前端管道中起源的MIQ_FULL阻塞條件的圖4的同步方案的示意性實(shí)施例。
圖7是響應(yīng)第一前端管道中起源的ICACHE_MISS阻塞條件的圖4的同步方案的示意性實(shí)施例。
圖8是響應(yīng)轉(zhuǎn)移目標(biāo)緩沖器(BTB)預(yù)測(cè)與ICACHE_MISS阻塞條件的組合的圖4的同步方案的示意性實(shí)施例。
本說(shuō)明書(shū)描述一種對(duì)通過(guò)多個(gè)并行操作的指令管道的各前端階段傳播的信息進(jìn)行同步的系統(tǒng)和方法。概括來(lái)說(shuō),這些多個(gè)管道因某個(gè)阻塞條件而變得不同步,通過(guò)清理(flushing)兩個(gè)前端管道以及通過(guò)在不同時(shí)段有選擇地將這些前端管道從它們的阻塞條件中釋放,重新建立同步。
本文中經(jīng)常用若干術(shù)語(yǔ)來(lái)描述某些硬件和特征。例如,“微處理器”是具有信息處理功能的單一集成電路(IC)的部件或多IC的部件?!半娮酉到y(tǒng)”在廣義上被定義為特征是有微處理器的任何產(chǎn)品,諸如任何類型的計(jì)算機(jī)(例如桌面機(jī)、膝上型、手體式、服務(wù)器等等)、無(wú)線電話和任何其它外設(shè)?!靶盘?hào)線路”在廣義上被定義為任何信息載體,諸如一路或多路電線、總線(bus traces)、光纖以及無(wú)線通信頻道?!靶畔ⅰ卑〝?shù)據(jù)、有效性和/或地址(例如指令指針“IP”)和/或控制(例如操作碼)。IP“較年輕”和“較老”,分別用來(lái)表示某IP是在另一個(gè)IP之前還是之后插入同一個(gè)前端管道中的。
參看圖1,該圖顯示了具有本發(fā)明特點(diǎn)的電子系統(tǒng)100的示意性實(shí)施例。電子系統(tǒng)100包括至少一個(gè)與信號(hào)線150(諸如適合芯片集的處理機(jī)總線)相連的微處理器110。微處理器110包含的第一電路120和第二電路130,前者用于控制通過(guò)圖2的第一(增強(qiáng)模式“EM”)前端管道(稱為“第一前端管道”)200的前端階段的信息的傳播,后者用于控制通過(guò)圖2的第二(英特爾值引擎“IVE”)前端管道(稱為“第二前端管道”)250的各前端階段的信息的傳播。第一和第二電路120和130通過(guò)如圖3中所述的接口140連接在一起。如圖中虛線所示,在電子系統(tǒng)100中可以考慮實(shí)現(xiàn)“n”個(gè)微處理器(n是正整數(shù))。
如圖1中所示,第一電路120包括至少一個(gè)或多個(gè)信息存儲(chǔ)單元121(例如指令高速緩存“I-cache”和/或翻譯后備緩沖器“TLB”)和一個(gè)歷史隊(duì)列122。歷史隊(duì)列122用于向第一前端管道200某選定處理階段(諸如下面在圖2中所說(shuō)明的“IPG”階段)的IP插入。盡管圖中未予表示,歷史隊(duì)列122的一個(gè)實(shí)施例包含一個(gè)多路轉(zhuǎn)換器和一個(gè)存儲(chǔ)單元。多路轉(zhuǎn)換器包含至少兩個(gè)輸入-其中一個(gè)輸入被配置成接收未排隊(duì)的IP,另一個(gè)輸入與該存儲(chǔ)單元相連。多路轉(zhuǎn)換器的選擇,由第一電路120根據(jù)阻塞條件的激活或去激活來(lái)控制。存儲(chǔ)單元可以包含一個(gè)緩沖器,緩沖器中含有選定個(gè)數(shù)的比基準(zhǔn)IP更年輕的IP。這便于歷史隊(duì)列122保存一個(gè)前端管道階段中的至少兩個(gè)周期的信息。
第二電路130包括按指令提取單元(IFU)操作的電路、轉(zhuǎn)移目標(biāo)緩沖器(BTB)和溢出緩沖器131。IIP階段連續(xù)地生成一連串排列好的(aligned)、向前穿過(guò)第二前端管道250的IP。BTB單元除了轉(zhuǎn)移預(yù)測(cè)這個(gè)主要職責(zé)外,還處理同步。溢出緩沖器131臨時(shí)存儲(chǔ)最后一個(gè)時(shí)鐘周期中“FE3”階段的信息輸出,如圖2中所示。溢出緩沖器131提供了一種檢索過(guò)早“溢出”(即傳播出)圖2的第二前端管道250的信息的手段。
這些電路120和130與圖2的前端管道200和250相對(duì)應(yīng),它們相隔的一段物理距離,會(huì)導(dǎo)致涉及一個(gè)前端管道的某個(gè)事件(例如阻塞、清理等等)一直要到下一個(gè)時(shí)鐘周期才能被另一個(gè)前端管道檢測(cè)到。這導(dǎo)致這些前端管道變得異步,并且-如下文所述-要求有電路和相應(yīng)方法來(lái)重新同步這些前端管道。
現(xiàn)在參看圖2,該圖顯示了第一前端管道200和第二前端管道250二者中的各階段。在一個(gè)實(shí)施例中,第一前端管道200的處理階段包括輸入指令指針(IIP)階段210、指令指針生成(IPG)階段220、提取(FET)階段230和滾動(dòng)(ROT)階段240。在IIP階段210期間,指令指針(IP)被生成并插入第一前端管道200,供以后用于從存儲(chǔ)單元(諸如I-cache、TLB和/或任何其它類型的存儲(chǔ)器)獲取信息。
在IPG階段220期間,圖1的微處理器110可以在向FET階段230傳送期間置換比IIP階段210中的當(dāng)前IP更老的IP。這種替換通常要從歷史隊(duì)列122提供,以避免發(fā)生蓋寫(xiě)條件-如圖5中所示,當(dāng)?shù)谝磺岸斯艿?00即使在被阻塞之后也能接受新數(shù)據(jù)時(shí),就會(huì)發(fā)生蓋寫(xiě)條件。這就便于在發(fā)生阻塞條件期間落后第二前端管道250一個(gè)時(shí)鐘周期的第一前端管道200變得更加容易與第二前端管道250重新同步。
在FET階段230期間,用一個(gè)IP來(lái)從信息存儲(chǔ)單元121提取信息(例如操作碼)并且并行地進(jìn)行TLB查找。如果信息不能及時(shí)被訪問(wèn)或(由TLB)翻譯,就將在下一個(gè)周期斷言(assert)一個(gè)阻塞條件。如果信息能及時(shí)被訪問(wèn)或翻譯,就可以在ROT階段期間處置該結(jié)果信息,以便計(jì)算出電子系統(tǒng)100的硬件與電子系統(tǒng)100所處理的該結(jié)果信息之間大小的差別(以字節(jié)計(jì))。此外,在檢測(cè)到有動(dòng)態(tài)更新與飛行中的(inflight)IP相關(guān)聯(lián)的代碼空間的企圖時(shí),會(huì)發(fā)生一個(gè)自修改代碼(SMC)事件。然而SMC事件與其它事件不同,它不導(dǎo)致發(fā)生阻塞條件;相反,SMC事件是由第二前端管道250的相關(guān)電路專門(mén)處理的。
第二前端管道250包括若干前端管道階段,它們與第一前端管道200所關(guān)聯(lián)的那些階段相對(duì)應(yīng)。這些階段包括IIP階段260、第一前端階段(FE1) 270、第二前端階段(FE2)280和第三前端階段(FE3)290。類似地,在IIP階段260期間,一個(gè)與進(jìn)入第一前端管道200的IP相同的IP進(jìn)入第二前端管道250。其余的階段(FE1、FE2和FE3階段)被用來(lái)跟蹤有效位和分級(jí)(stage)IP信息。溢出緩沖器131被用來(lái)接收FE3階段290的信息輸出并將該信息存儲(chǔ)至少一個(gè)時(shí)鐘周期。
當(dāng)微處理器110處于IVE方式時(shí),第二管道250每個(gè)階段的有效的狀態(tài)代表第一管道200中對(duì)應(yīng)階段的狀態(tài)。例如,在IVE方式中,如果FE3階段被無(wú)效掉,則第一管道200的ROT階段的關(guān)聯(lián)信息將不被使用。另一方面,當(dāng)微處理器110處于EM方式時(shí),不使用第二管道250的內(nèi)容,而是使用第一管道200所提供的內(nèi)容。本文中的討論重點(diǎn)將放在微處理器100在IVE方式中的操作上,在這種方式中,兩個(gè)管道的同步至關(guān)重要。
參看圖3,該圖顯示了接口140的示意性實(shí)施例,該接口是在電路120與130之間實(shí)現(xiàn)的,目的是保持圖2的前端管道200和250的同步。接口140在信號(hào)線300、3101~3102和3201~3204上傳輸IP和代表事件(例如清理和阻塞)的發(fā)生的各種信號(hào)。更具體來(lái)說(shuō),第一信號(hào)線300提供一個(gè)線性IP,它代表從高速緩沖存儲(chǔ)器提取信息(例如代碼數(shù)據(jù))或執(zhí)行TLB查找的請(qǐng)求的地址。伴隨該IP可以是一個(gè)表示該IP有效的請(qǐng)求信號(hào)和/或一個(gè)清理信號(hào)。
本文中,“清理信號(hào)”一般指的是一種控制信號(hào),它表示發(fā)生了一個(gè)清理?xiàng)l件,導(dǎo)致第二前端管道250中信息的無(wú)效。所以,為了保持同步,第一前端管道200中相應(yīng)的信息需要被無(wú)效。如本實(shí)施例中所示,要用兩個(gè)清理信號(hào)與其它信號(hào)(未予示出)的結(jié)合,才能使兩個(gè)前端管道200和250上的信息無(wú)效。這些清理信號(hào)包括通過(guò)第二信號(hào)線3101傳送的“BAC_TYPE”清理信號(hào)和通過(guò)第三信號(hào)線3102傳送的“BTB_TYPE”清理信號(hào)。
根據(jù)圖2和3,BAC_TYPE清理信號(hào)的啟動(dòng)導(dǎo)致多個(gè)事件發(fā)生(1)在BAC_TYPE清理信號(hào)啟動(dòng)的同一個(gè)時(shí)鐘周期上的FE1、FE2和FE3階段270、280和290任一個(gè)中的信息的被無(wú)效;(2)FET階段230和ROT階段240中的信息的被無(wú)效,當(dāng)前駐留在IIP階段210中的IP前進(jìn)到IPG階段220,下一個(gè)時(shí)鐘周期上特定阻塞條件(例如指令高速緩存缺失或TLB缺失)的撤銷。然而,BTB_TYPE清理信號(hào)的啟動(dòng),導(dǎo)致(1)同一個(gè)時(shí)鐘周期上位于FE1和FE2階段270和280(用于預(yù)測(cè))的信息或位于FE1、FE2和FE3階段270、280和290(用于同步)的信息的被無(wú)效;(2)位于FET階段230的信息的被無(wú)效和在下一個(gè)時(shí)鐘周期駐留在IIP階段210中的IP前進(jìn)到IPG階段220??傊?,哪一個(gè)清理?xiàng)l件都將第一前端管道200認(rèn)可的阻塞條件廢棄一個(gè)時(shí)鐘(現(xiàn)在可以將各IP加載到IPG階段)。清理?xiàng)l件也將第二前端管道250認(rèn)可的阻塞條件廢棄兩個(gè)時(shí)鐘周期(可以將新的IP加載到FE2階段)。
如圖2~3中進(jìn)一步所示,接口140支持通過(guò)若干阻塞信號(hào)-即TLB_OP阻塞信號(hào)、TLB_MISS阻塞信號(hào)、ICACHE_MISS阻塞信號(hào)和MIQ_FULL阻塞信號(hào),通知在前端管道200與250之間發(fā)生了阻塞條件。與FET階段230相關(guān)聯(lián)的“TLB_OP”阻塞信號(hào),指示微處理器中的TLB已經(jīng)在使用,不能及時(shí)服務(wù)FET階段230中的飛行中的IP。其它三個(gè)阻塞條件與ROT階段240中的飛行中的IP相關(guān)聯(lián)。例如,“TLB_MISS”阻塞信號(hào)指示,某特定IP在TLB中沒(méi)有翻譯。當(dāng)對(duì)應(yīng)于特定IP的信息在指令高速緩存中不能獲得時(shí),“ICACHE_MISS”,阻塞信號(hào)是活動(dòng)的。“MIQ_FULL”阻塞信號(hào)指示,IAU(前端管道中FE3階段后的下一個(gè)塊)中的微指令隊(duì)列已滿,不能接受在FE3階段290中返回的指令高速緩存信息。
如圖4所示,現(xiàn)在說(shuō)明在某個(gè)導(dǎo)致多個(gè)并行前端管道變得不同步的事件之后重新同步這些前端管道的過(guò)程。首先,將多個(gè)前端管道置于互相同步的狀態(tài)(步驟410)。然后,某個(gè)事件要么由控制第一前端管道的電路要么由控制第二前端管道的電路啟動(dòng)(步驟420)。如果發(fā)生了一個(gè)事件,前端管道就變得互相不同步。例如,由控制第一前端管道的電路起源的阻塞條件導(dǎo)致第二前端管道領(lǐng)先第一前端管道至少一個(gè)周期。這種異步情況的發(fā)生,原因是控制前端管道的電路之間的信號(hào)延遲。
下一步,控制第二前端管道的電路(例如BTB)獲得一個(gè)從第二前端管道的FE3階段傳出的、要存儲(chǔ)到溢出緩沖器中的IP(步驟430)。然后,第一和第二管道被清理并被裝入用于重新同步目的的IP(步驟440)。如果在兩個(gè)前端管道都經(jīng)歷了清理?xiàng)l件后該事件仍然是活動(dòng)的,則阻塞條件依然作用于前端管道200和250,以防止各IP在第一前端管道的IPG階段以外和第二前端管道的FE2階段以外的傳播(步驟450-470)。
當(dāng)阻塞條件被撤銷時(shí)(步驟470),第一前端管道在第二前端管道變得活動(dòng)之前繼續(xù)信息的傳播,傳播的周期數(shù)是預(yù)定的“t”(例如t>=1)(步驟480和490)。這使第一前端管道能再次變得與第二前端管道同步。為了解釋的需要,在以下各附圖中敘述了這個(gè)過(guò)程的各個(gè)操作的例子。
現(xiàn)在參看圖5,該圖顯示的示意性表中給出了通過(guò)第一和第二前端管道200和250的各前端處理階段的信息流。本文中所說(shuō)的信息包括由字母“A”、“B”、“C”、“D”和“E”代表的各IP。這些IP是順序排列的IP,其中每個(gè)IP是前一個(gè)IP遞增預(yù)定數(shù)量的字節(jié)(例如32個(gè)字節(jié))后的結(jié)果。例如IP“B”是根據(jù)IP“A”得出的。
在第一周期(周期1)中,由第一電路啟動(dòng)一個(gè)TLB_MISS信號(hào)-此時(shí)第一(EM)前端管道與第二(IVE)前端管道是同步的。在第二周期(周期2),由于第一前端管道在周期1被阻塞,而第二前端管道直到周期2才檢測(cè)到TLB_MISS信號(hào),第一和第二前端管道就變得互相不同步。結(jié)果,第二前端管道的內(nèi)容現(xiàn)在不同于第一前端管道的內(nèi)容。所以,第一與第二前端管道之間的異步是由前端管道之間的信號(hào)延遲引起的。特別是,對(duì)于第二管道來(lái)說(shuō),IP“B”被迫被無(wú)效(由虛線表示),而IP“A”已經(jīng)從第二前端管道輸出到溢出緩沖器中。對(duì)于第一前端管道來(lái)說(shuō),IP“B”被阻塞在FET階段中而IP“A”則被裝入輔助管道(TLB_MISS管道)中。IP“A”在輔助管道中保持活動(dòng)狀態(tài),一直到TLB_MISS阻塞信號(hào)被撤銷。
在第三周期(周期3)中,第二電路發(fā)出BTB_TYPE清理,它將第二管道的FE1、FE2和FE3各階段上的數(shù)據(jù)無(wú)效(表中以“X”表示)并將IP“A”裝入第一和第二前端管道的IIP階段。在周期4,第一電路檢測(cè)到該BTB_TYPE清理信號(hào),同時(shí),IP“B”被裝入第一和第二前端管道的IIP階段。結(jié)果,當(dāng)前在FET階段中駐留的IP被無(wú)效,而在ROT階段駐留的IP則沒(méi)有意義-因?yàn)樵贗VE方式中,為了進(jìn)一步無(wú)效ROT階段,F(xiàn)E3階段已經(jīng)是無(wú)效的。
在下一個(gè)周期(周期5)中,TLB_MISS阻塞信號(hào)仍然是活動(dòng)的。將新的IP“C”裝入兩個(gè)前端管道的IIP階段,這是因?yàn)镮P“B”被裝入與IPG階段關(guān)聯(lián)的歷史隊(duì)列的存儲(chǔ)單元中。這將第一前端管道設(shè)置得滯后第二前端管道預(yù)定數(shù)量的周期(例如一個(gè)周期)。
在周期6中,TLB_MISS阻塞信號(hào)被第一電路去激活。結(jié)果,在周期7中,IP“A”被傳輸?shù)紽ET階段,而較年輕的IP(IP“B”)則留在IPG階段中。在周期8期間,第二電路檢測(cè)到TLB_MISS阻塞信號(hào)已經(jīng)被撤銷,于是前進(jìn)到第二前端管道。此時(shí),前端管道已經(jīng)重新建立了同步關(guān)系。
參看圖6,該圖表示的表中顯示了MIQ_FULL阻塞信號(hào)斷言時(shí)第一和第二前端管道的內(nèi)容。在第一周期(周期1)中,當(dāng)微指令隊(duì)列已滿、不能接收IP“A”的關(guān)聯(lián)信息時(shí),MIQ_FULL阻塞信號(hào)被啟動(dòng)。在第二周期(周期2)中,將新的IP“E”裝入第一和第二前端管道的IIP階段,并迫使ROT階段中含有的IP“B”無(wú)效,使得下一個(gè)階段將不處理IP“B”。相反,IP“B”隨后將被BTB單元重新插入這兩個(gè)前端管道中。
在周期2期間,第二電路發(fā)出一個(gè)BAC_TYPE清理信號(hào),它使第二前端管道的FE1、FE2和FE3階段上的信息無(wú)效并將IP“A”裝入第一和第二前端管道的IIP階段。在周期4,第一電路檢測(cè)到該BAC_TYPE清理信號(hào),以使FET和ROT階段中的飛行的IP無(wú)效并將IP“B”重新裝入第一和第二前端管道的IIP階段。在下一個(gè)周期(周期5)中,MIQ_FULL阻塞信號(hào)仍然是激活的,因?yàn)槲⒅噶铌?duì)列仍然是滿的。此時(shí),將IP“C”裝入兩個(gè)前端管道的IIP階段并將IP“B”裝入與IPG階段關(guān)聯(lián)的歷史隊(duì)列的某個(gè)存儲(chǔ)單元中。此時(shí),不能將其它IP裝入前端管道中,直到阻塞條件被去除,如周期6和7中所示。
例如在周期8,MIQ_FULL阻塞信號(hào)被去激活。結(jié)果,通過(guò)將IP“A”裝入FET階段同時(shí)將IP“B”保留在IPG階段,推進(jìn)第一前端管道繼續(xù)其信息傳播,如周期9中所示。之后,在周期10中,第一和第二前端管道開(kāi)始推進(jìn),以保持第一和第二前端管道之間的同步。
現(xiàn)在參看圖7,圖中的表表示的是根據(jù)ICACHE_MISS阻塞信號(hào)而產(chǎn)生的多個(gè)前端管道的內(nèi)容。這當(dāng)中的信息包括順序排列的、由字母“A”、“B”、“C”、“D”“E”、“F”和“G”代表的各IP。在第一周期(周期1),多個(gè)前端管道互相同步。在周期2期間,由第一電路啟動(dòng)一個(gè)ICACHE_MISS阻塞信號(hào)。這導(dǎo)致第一和第二前端管道變得互相不同步。更具體來(lái)說(shuō),在周期3,第一前端管道允許將新的IP“F”裝入其IIP階段-因?yàn)镮P“E”被裝入歷史隊(duì)列的存儲(chǔ)單元中。然而,由于第二前端管道在周期3之前沒(méi)有檢測(cè)到ICACHE_MISS阻塞信號(hào),所以IP“B”已經(jīng)從第二前端管道溢出到溢出緩沖器中。IP“B”一直在溢出緩沖器中保存到指令高速緩存返回代碼數(shù)據(jù)并且IAU將IP“B”與所提取的該代碼數(shù)據(jù)匹配。
例如在周期4~5,ICACHE_MISS阻塞信號(hào)仍然處于活動(dòng)狀態(tài)。在周期6,ICACHE_MISS阻塞信號(hào)被撤銷,導(dǎo)致IP“D”在周期7被裝入FET階段。然而在周期7期間,第二前端管道仍然被阻塞,以便讓第一前端管道與第二前端管道重新同步-如周期8所示。
參看圖8,圖中的表表示的是根據(jù)ICACHE_MISS阻塞信號(hào)和BTB預(yù)測(cè)的組合而產(chǎn)生的多個(gè)前端管道的內(nèi)容。通常,在阻塞條件有效期間,BTB單元不預(yù)測(cè)。然而,由于信號(hào)延遲,BTB單元有可能在忘卻有ICACHE_MISS阻塞信號(hào)被激活的事實(shí)的情況下開(kāi)始預(yù)測(cè)。在這種情況下,通過(guò)在下一個(gè)周期導(dǎo)致發(fā)生一個(gè)BTB_TYPE清理?xiàng)l件來(lái)使BTB預(yù)測(cè)得以繼續(xù)。這導(dǎo)致第一前端管道的特定階段中的信息毫無(wú)必要地變得無(wú)效-如下文所示。
在周期1,第一電路激活I(lǐng)CACHE_MISS阻塞信號(hào),通知在指令高速緩存中沒(méi)有找到IP“B”的內(nèi)容。然而,由于信號(hào)延遲,第二電路不知道這個(gè)阻塞條件而在周期2啟動(dòng)一個(gè)BTB_TYPE清理。BTB_TYPE清理導(dǎo)致將一個(gè)被預(yù)測(cè)的IP(稱為“TB”,它是與IP“B”相關(guān)聯(lián)的轉(zhuǎn)移預(yù)測(cè)的目標(biāo))裝入這兩個(gè)前端管道的IIP階段,并且導(dǎo)致與FE1和FE2階段相關(guān)聯(lián)的各IP被無(wú)效。由于ICACHE_MISS阻塞信號(hào)在周期2期間仍然是活動(dòng)的,第二電路使第一前端管道中的IP“B”無(wú)效。
在周期3,TB的后續(xù)IP(稱為“TB+1”)被裝入這兩個(gè)前端管道的IIP階段,與此同時(shí),第一前端管道的IP“B”被無(wú)效。在周期4,TB+1被推進(jìn)到與IPG階段相關(guān)聯(lián)的歷史隊(duì)列并推進(jìn)到第二前端管道的FE1階段,而下一個(gè)后繼IP(TB+2)現(xiàn)在則被裝入兩個(gè)IIP階段。在周期5,ICACHE_MISS阻塞信號(hào)仍然是活動(dòng)的。在周期6,ICACHE_MISS阻塞信號(hào)被撤銷,導(dǎo)致TB將在周期7被推進(jìn)到FET階段。
盡管前端管道看起來(lái)要被重新同步,IP“B”已經(jīng)被無(wú)效,由此擾亂了管道。所以,在周期8,激活一個(gè)BAC_TYPE清理,它使FE1、FE2和FE3階段的飛行中的各IP無(wú)效并將IP“B”重新裝入前端管道的IIP階段。自此以后,如果如周期9~11中所示的那樣沒(méi)有另外的事件產(chǎn)生阻塞或清理?xiàng)l件,則前端管道就變得同步。
顯然,在不偏離如后附的權(quán)利要求所陳述的更有概括性的精神和范圍的情況下,可以對(duì)本發(fā)明作出各種修改和變動(dòng)。所以本說(shuō)明書(shū)和附圖應(yīng)被視為是示例性的而不是限制性的。
權(quán)利要求
1.一種方法,包含的各步驟是沿多個(gè)前端管道推進(jìn)相應(yīng)的信息,多個(gè)前端管道是并行和互相同步的;多個(gè)前端管道每個(gè)經(jīng)歷一個(gè)事件,該事件導(dǎo)致多個(gè)前端管道變得互相不同步;執(zhí)行多個(gè)操作來(lái)使多個(gè)前端管道互相同步。
2.權(quán)利要求1的方法,其中,事件是阻塞條件。
3.權(quán)利要求2的方法,其中經(jīng)歷步驟包括步驟在第一周期期間阻塞多個(gè)前端管道的第一前端管道;在第二周期期間阻塞多個(gè)前端管道的第二前端管道,第二周期是在第一周期之后發(fā)生的。
4.權(quán)利要求3的方法,其中在阻塞第一前端管道之前,經(jīng)歷步驟進(jìn)一步包括由控制第一前端管道的電路在第一周期期間檢測(cè)事件的步驟。
5.權(quán)利要求4的方法,其中在阻塞第二前端管道之前,經(jīng)歷步驟進(jìn)一步包括向控制第二前端管道的電路提供表示事件已經(jīng)發(fā)生的信號(hào)的步驟。
6.權(quán)利要求3的方法,其中阻塞第二前端管道是在緊接著第一周期之后的第二周期期間發(fā)生的。
7.權(quán)利要求4的方法,其中的信息包括至少一個(gè)指令指針。
8.權(quán)利要求7的方法,其中的事件包括翻譯預(yù)備緩沖器(translation lookahead buffer)不能在第一前端管道的預(yù)定處理階段及時(shí)地服務(wù)至少一個(gè)指令指針的阻塞條件。
9.權(quán)利要求7的方法,其中的事件包括該至少一個(gè)指令指針的翻譯沒(méi)有駐留在翻譯預(yù)備緩沖器中的阻塞條件。
10.權(quán)利要求7的方法,其中的事件包括沒(méi)有與該至少一個(gè)指令指針關(guān)聯(lián)的信息駐留在預(yù)定高速緩沖存儲(chǔ)器中的阻塞條件。
11.權(quán)利要求2的方法,其中,執(zhí)行步驟包括步驟使多個(gè)前端管道每個(gè)的至少一個(gè)選定處理階段中的信息無(wú)效;將相應(yīng)的信息重新加載到多個(gè)前端管道的每一個(gè)中;在撤銷阻塞條件時(shí)推進(jìn)多個(gè)前端管道的第一前端管道,與此同時(shí),多個(gè)前端管道的第二前端管道保持閑置達(dá)預(yù)定的時(shí)間周期數(shù),直到第一前端管道變得與第二前端管道同步。
12.權(quán)利要求11的方法,其中的重新加載步驟包括步驟從溢出緩沖器檢索信息,溢出緩沖器接收第二前端管道的信息輸出;將從溢出緩沖器檢索的信息同時(shí)加載到第一前端管道和第二前端管道二者中。
13.一種電子系統(tǒng),包含總線;與總線相連的微處理器,微處理器包含控制信息沿第一前端管道的推進(jìn)并檢測(cè)阻塞條件的第一電路;控制信息沿第二前端管道的推進(jìn)并與第一電路協(xié)作運(yùn)行以保持第一前端管道與第二前端管道之間的同步關(guān)系的第二電路。
14.權(quán)利要求13的電子系統(tǒng),其中的信息包括多個(gè)順序的指令指針。
15.權(quán)利要求14的電子系統(tǒng),其中的第一電路包括一個(gè)歷史隊(duì)列,用于保留至少兩個(gè)指向第一前端管道的一個(gè)處理階段的指令指針。
16.權(quán)利要求15的電子系統(tǒng),其中的歷史隊(duì)列包含多路轉(zhuǎn)換器,多路轉(zhuǎn)換器包括(1)接收該至少兩個(gè)指令指針的第一指令指針的第一輸入和(2)與含有該至少兩個(gè)指令指針的至少第二指令指針的存儲(chǔ)單元相連的第二輸入,多路轉(zhuǎn)換器的輸出受阻塞條件的激活和去激活的控制。
17.權(quán)利要求15的電子系統(tǒng),其中的第一電路能訪問(wèn)高速緩沖存儲(chǔ)器的內(nèi)容。
18.權(quán)利要求13的電子系統(tǒng),其中的第二電路包括一個(gè)緩沖器,用于暫存第二前端管道在前一個(gè)時(shí)鐘周期中的信息輸出。
19.權(quán)利要求18的電子系統(tǒng),其中的第二電路進(jìn)一步包括轉(zhuǎn)移目標(biāo)緩沖器,用于從緩沖器獲得隨后要被重新加載到第一前端管道和第二前端管道二者中的信息。
20.一種微處理器,包含用于控制信息沿第一前端管道的推進(jìn)并檢測(cè)阻塞條件的第一電路;與第一電路相連的第二電路,第二電路用來(lái)控制信息沿第二前端管道的推進(jìn)并與第一電路協(xié)作運(yùn)行以保持第一前端管道與第二前端管道之間的同步關(guān)系。
21.權(quán)利要求20的微處理器,其中的第一電路包括一個(gè)歷史隊(duì)列,用于保留至少兩個(gè)指向第一前端管道的一個(gè)處理階段的指令指針。
22.權(quán)利要求21的微處理器,其中的第二電路包括一個(gè)緩沖器,用于暫存第二前端管道在前一個(gè)時(shí)鐘周期中的信息輸出。
23.權(quán)利要求22的微處理器,其中的第二電路進(jìn)一步包括轉(zhuǎn)移目標(biāo)緩沖器,用于從緩沖器獲得隨后要被重新加載到第一前端管道和第二前端管道二者中的信息。
全文摘要
本文敘述了一種對(duì)通過(guò)多個(gè)并行操作的前端管道(410)傳播的信息保持同步的系統(tǒng)和方法。概括來(lái)說(shuō),這些多個(gè)管道因某個(gè)阻塞條件(460)而變得不同步,通過(guò)清理兩個(gè)前端管道以及通過(guò)在不同時(shí)段有選擇地將這些前端管道(410)從它們的阻塞條件中釋放(470),重新建立同步。
文檔編號(hào)G06F9/38GK1285063SQ98812943
公開(kāi)日2001年2月21日 申請(qǐng)日期1998年12月22日 優(yōu)先權(quán)日1998年1月5日
發(fā)明者K·N·穆?tīng)柕? N·A·蔡迪, D·S·沙, T·Y·耶 申請(qǐng)人:英特爾公司