專利名稱:連續(xù)流程處理器流水線的制作方法
背景對多處理器支持單芯片上的多核的要求日益高漲。為了保持設(shè)計成果與成本削減并能適于將來的應(yīng)用,設(shè)計人員通常試圖設(shè)計能夠滿足從移動膝上型計算機(jī)到高端服務(wù)器的整個產(chǎn)品范圍的需求的多核微處理器。這一設(shè)計目標(biāo)給處理器設(shè)計人員帶來了兩難問題在保持對膝上型和臺式計算機(jī)中的微處理器很重要的單線程性能的情況下還同時提供對服務(wù)器內(nèi)的微處理器很重要的系統(tǒng)吞吐量。傳統(tǒng)上,設(shè)計人員試圖使用帶有單個大而復(fù)雜的核的芯片來達(dá)到高單線程性能的目標(biāo)。另一方面,設(shè)計人員試圖通過在單個芯片上提供相較之下更小、更簡單的多個核來實現(xiàn)高系統(tǒng)吞吐量的目標(biāo)。然而因為設(shè)計人員需要面對芯片尺寸和功耗的限制,所以在同一芯片上同時提供高單線程性能和高系統(tǒng)吞吐量是一個巨大的挑戰(zhàn)。更具體地,單芯片將無法容納多個大型核,而小型核傳統(tǒng)上無法提供高單線程性能。
嚴(yán)重影響吞吐量的一個因素是需要執(zhí)行依賴于長等待時間操作的指令,諸如對高速緩存未命中的維修。處理器內(nèi)的指令在被稱為“調(diào)度程序”的邏輯結(jié)構(gòu)中等待執(zhí)行。在調(diào)度程序中,被分配了目標(biāo)寄存器的指令等待它們的源操作數(shù)變?yōu)榭捎?,之后這些指令就能夠離開該調(diào)度程序、執(zhí)行并引退。
與處理器中的任何結(jié)構(gòu)類似,調(diào)度程序受到面積限制,因此具有有限個數(shù)的條目。依賴于高速緩存未命中的維修的指令在未命中得到維修之前必須等待幾百個周期。當(dāng)它們等待時,它們的調(diào)度程序條目保持被分配并由此無法為其他指令所用。這一情形會對調(diào)度程序造成壓力并會導(dǎo)致性能損失。
因為在調(diào)度程序中等待的指令保持其目標(biāo)寄存器被分配由此就無法為其他指令所用,所以也會類似地對寄存器文件造成壓力。這一情形還會對性能造成損害,特別是考慮到寄存器文件可能需要維持幾千條指令并且通常是耗能、周期關(guān)鍵、連續(xù)性的定時結(jié)構(gòu)這一事實的情況下。
附圖簡述
圖1示出了根據(jù)本發(fā)明實施例的含有時間片處理單元的處理器的元件;
圖2示出了根據(jù)本發(fā)明實施例的過程流程;以及圖3示出了根據(jù)本發(fā)明實施例的含有處理器的系統(tǒng)。
詳細(xì)描述本發(fā)明的實施例涉及一種通過將依賴于長等待時間操作的指令從處理器流水線流程中轉(zhuǎn)出并在上述長等待時間操作完成時將這些指令重新引入流程中來顯著增加處理器吞吐量及存儲器等待時間容限,并減輕對調(diào)度程序以及對寄存器文件的壓力的系統(tǒng)和方法。由此,這些指令就不會阻礙資源并且流水線內(nèi)的總指令吞吐量就能有顯著的增加。
更具體地,本發(fā)明的實施例涉及標(biāo)識在此被稱為“時間片(slice)”指令的依賴于長等待時間操作的指令,并且將它們連同執(zhí)行時間片指令所需信息的至少一部分一并從流水線移至“時間片數(shù)據(jù)緩沖器”。這些時間片指令的調(diào)度程序條目和目標(biāo)寄存器隨后可被回收以供其他指令使用。獨立于長等待時間操作的指令能夠使用這些資源并繼續(xù)程序執(zhí)行。當(dāng)時間片數(shù)據(jù)緩沖器內(nèi)的時間片指令所依賴的長等待時間操作完成時,該時間片指令可被重新引入流水線,并且被執(zhí)行并引退。本發(fā)明的實施例由此就能實現(xiàn)無阻塞的連續(xù)流程處理器流水線。
圖1示出了根據(jù)本發(fā)明實施例的的系統(tǒng)的示例。該系統(tǒng)可包括根據(jù)本發(fā)明實施例的“時間片處理單元”100。時間片處理單元100包括時間片數(shù)據(jù)緩沖器101、時間片重命名過濾器102和時間片重映射器103。如下將進(jìn)一步詳述與這些元件相關(guān)聯(lián)的操作。
時間片處理單元100可以與處理器流水線相關(guān)聯(lián)。流水線可以包括用于解碼指令并耦合至分配和寄存器重命名邏輯105的指令解碼器104。眾所周知的是處理器可以包括將物理寄存器分配給指令并將指令的邏輯寄存器映射至物理寄存器的邏輯,諸如分配和寄存器重命名邏輯105。在此使用的“映射”指的是定義或指定之間的對應(yīng)關(guān)系(概念上來講,邏輯寄存器標(biāo)識符被“重命名”為物理寄存器標(biāo)識符)。更具體地,由于在流水線內(nèi)的短暫跨度,所以在按照處理器的邏輯(也可稱為“架構(gòu)的”)寄存器組的寄存器的標(biāo)識符指定指令的源和目標(biāo)操作數(shù)時,這些指令的源和目標(biāo)操作數(shù)被賦值給物理寄存器以便這些指令能夠在處理器中實際執(zhí)行。物理寄存器組通常在數(shù)量上要遠(yuǎn)多于邏輯寄存器組,于是多個不同的物理寄存器組能夠被映射至同一邏輯寄存器。
分配和寄存器重命名邏輯105可以耦合至用于將指令排隊以供執(zhí)行的μop(“微”操作,即指令)隊列106,而μop隊列106可以耦合至用于調(diào)度指令以供執(zhí)行的調(diào)度程序107。由分配和寄存器重命名邏輯105執(zhí)行的從邏輯寄存器到物理寄存器的映射(其后稱為“物理寄存器映射”)可以被記錄在用于等待執(zhí)行的指令的重排序緩沖器(ROB)(未示出)內(nèi)或調(diào)度程序107內(nèi)。根據(jù)本發(fā)明的實施例,如下將進(jìn)一步詳述的,物理寄存器映射可以被復(fù)制到用于被標(biāo)識為時間片指令的指令的時間片數(shù)據(jù)緩沖器101調(diào)度程序107可以耦合至如圖1所示在框108中帶有旁路邏輯的包括處理器的物理寄存器在內(nèi)的寄存器文件。寄存器文件和旁路邏輯108可以與數(shù)據(jù)高速緩存和執(zhí)行被調(diào)度來執(zhí)行的指令的功能單元邏輯109接口。L2高速緩存110可與該數(shù)據(jù)高速緩存和功能單元邏輯109接口以便提供經(jīng)由存儲器接口111從存儲器子系統(tǒng)(未示出)中檢索出的數(shù)據(jù)。
如上所述,可以認(rèn)為對L2高速緩存中未命中的加載的高速緩存未命中維修是長等待時間操作。長等待時間操作的其他示例包括浮點操作以及浮點操作的依賴性鏈。當(dāng)由流水線處理指令時,依賴于長等待時間操作的指令可以根據(jù)本發(fā)明的實施例被分類為時間片指令并給予特殊的處理以防止時間片指令阻塞或減緩流水線的吞吐量。時間片指令可以是獨立指令,諸如生成高速緩存未命中的加載,或是依賴于另一時間片指令的指令,諸如讀取由加載指令加載的寄存器的指令。
當(dāng)時間片指令出現(xiàn)在流水線中時,可以按調(diào)度程序107確定的指令調(diào)度次序?qū)⒃摃r間片指令存儲在時間片數(shù)據(jù)緩沖器101中。調(diào)度程序通常按照數(shù)據(jù)依賴性次序來調(diào)度指令。時間片指令可以連同執(zhí)行該指令所需信息的至少部分被一并存儲在時間片數(shù)據(jù)緩沖器中。例如,上述信息可以包括可用的源操作數(shù)的值以及該指令的物理寄存器映射。物理寄存器映射保存與該指令相關(guān)聯(lián)的數(shù)據(jù)依賴性信息。通過將任何可用源值以及物理寄存器映射連同該時間片指令一起存儲在時間片數(shù)據(jù)緩沖器內(nèi),則能夠甚至在時間片指令完成之前為其他指令釋放并回收相應(yīng)的寄存器。此外,當(dāng)隨后將時間片指令重新引入流水線以完成其執(zhí)行時,對其至少一個源操作數(shù)無需重新求值,同時物理寄存器映射確保該指令在時間片指令序列中的正確位置上被執(zhí)行。
根據(jù)本發(fā)明的實施例,通過跟蹤長等待時間操作的寄存器和存儲器依賴性就能夠動態(tài)地執(zhí)行時間片指令的標(biāo)識。更具體地,通過經(jīng)由物理寄存器和存儲隊列條目傳播時間片指令指示符就能夠標(biāo)識時間片指令。存儲隊列是處理器中用于保持被排隊等待寫入存儲器的存儲指令的結(jié)構(gòu)(圖1中未示出)。加載和存儲指令可以分別讀出或?qū)懭氪鎯﹃犃袟l目內(nèi)的字段。時間片指令指示符可以是一位,在此被稱為“非值”(NAV)位,并且該位與每個物理寄存器和存儲隊列條目相關(guān)聯(lián)。該位最初可以不被置位(例如,它具有邏輯“0”的值),而是在相關(guān)聯(lián)的指令依賴于長等待時間操作時被置位(例如,置為邏輯“1”)。
該位最初可以為獨立時間片指令置位,并在隨后傳播給直接或間接依賴于該獨立指令的指令。更具體地,調(diào)度程序內(nèi)的獨立時間片指令(諸如,未命中高速緩存的加載)的目標(biāo)寄存器的NAV位可以被置位。具有該目標(biāo)寄存器作為源的后續(xù)指令可以“繼承”該NAV位,因為NAV位在其各自的目標(biāo)寄存器內(nèi)也可以被置位。如果存儲指令的源操作數(shù)使其NAV位置位,則對應(yīng)于該存儲的存儲隊列條目的NAV位可以被置位。從該存儲隊列條目中讀取或被預(yù)測從該存儲隊列條目轉(zhuǎn)發(fā)的后續(xù)加載指令可以在其各自的目標(biāo)內(nèi)將NAV位置位。也可以向調(diào)度程序中的指令條目提供用于其源和目標(biāo)操作數(shù)的NAV位,其中這些NAV位對應(yīng)于物理寄存器文件和存儲隊列條目內(nèi)的NAV位。因為物理寄存器和存儲隊列條目內(nèi)相應(yīng)的NAV位被置位,所以調(diào)度程序條目內(nèi)的NAV位可被置位以將這些調(diào)度程序條目標(biāo)識為含有時間片指令。時間片指令的依賴性鏈可通過前述過程在調(diào)度程序內(nèi)形成。
在流水線內(nèi)的正常操作過程中,指令可以離開調(diào)度程序并在其源寄存器準(zhǔn)備好,即含有執(zhí)行該指令所需的值并能產(chǎn)生有效結(jié)果時被執(zhí)行。例如,源寄存器在源指令已被執(zhí)行并將一值寫入寄存器時準(zhǔn)備好。這一寄存器在此被稱為“已完成源寄存器”。根據(jù)本發(fā)明的實施例,可以在源寄存器是已完成源寄存器時,或在其NAV位被置位時認(rèn)定該源寄存器準(zhǔn)備好。這樣,時間片指令在其任一源寄存器是已完成源寄存器,以及在其任一源寄存器雖不是已完成源寄存器但是其NAV位被置位時,能夠離開調(diào)度程序。因此就能夠在連續(xù)的流程中將時間片指令和非時間片指令“排出”流水線,而沒有因?qū)﹂L等待時間操作的依賴性所引起的延遲,并且允許后續(xù)指令獲得調(diào)度程序條目。
在時間片指令離開調(diào)度程序時執(zhí)行的操作可以包括將該指令的任何已完成源寄存器的值連同該指令本身一并記錄在時間片數(shù)據(jù)緩沖器內(nèi),并且將任何已完成源寄存器標(biāo)記為讀取。這就允許已完成源寄存器被回收以供其他指令使用。指令的物理寄存器映射也可以被記錄在時間片數(shù)據(jù)緩沖器內(nèi)。多條時間片指令(“時間片”)可以連同相應(yīng)的已完成源寄存器值和物理寄存器映射被一并記錄在時間片數(shù)據(jù)寄存器內(nèi)??紤]前述內(nèi)容,可以將時間片視為自給式程序,其中該時間片能夠在其依賴的長等待時間操作完成時被重新引入流水線并被有效地執(zhí)行,因為執(zhí)行該時間片所需的唯一的外部輸入是來自加載的數(shù)據(jù)(假設(shè)長等待時間操作是高速緩存未命中的維修)。其他輸入則已經(jīng)作為已完成源寄存器的值被復(fù)制到時間片數(shù)據(jù)緩沖器內(nèi),或在該時間片內(nèi)部生成。
此外,如前所述,可以釋放時間片指令的目標(biāo)寄存器以供其他指令回收和使用,從而減輕寄存器文件的壓力。
在各實施例中,時間片數(shù)據(jù)緩沖器可以包括多個條目。每個條目可以包括與每條時間片指令相對應(yīng)的多個字段,包括用于時間片指令本身的字段、用于已完成源寄存器值的字段以及用于時間片指令的源和目標(biāo)寄存器的物理寄存器映射的字段。如上所述,當(dāng)時間片指令離開調(diào)度程序時可以分配時間片數(shù)據(jù)緩沖器,并且在時間片數(shù)據(jù)緩沖器內(nèi)以其在調(diào)度程序內(nèi)的次序來存儲這些時間片指令。這些時間片指令可以在適當(dāng)?shù)臅r候以相同的次序返回流水線。例如,在各實施例中,可以經(jīng)由μop隊列107將指令重新插入到流水線中,但是其他排列也是可行的。在各實施例中,時間片數(shù)據(jù)緩沖器可以是與L2高速緩存類似的實現(xiàn)長等待時間、高帶寬陣列的高密度SRAM(靜態(tài)隨機(jī)存取存儲器)。
現(xiàn)重新參考圖1。如圖1所示并如前所述,根據(jù)本發(fā)明實施例的時間片處理單元100可以包括時間片重命名過濾器102和時間片重映射器103。時間片重映射器103可以用與分配和寄存器重命名邏輯105將邏輯寄存器映射至物理寄存器相類似的方式,將新的物理寄存器映射至?xí)r間片數(shù)據(jù)緩沖器內(nèi)的物理寄存器映射的物理寄存器標(biāo)識符??赡軙枰摬僮魇且驗橐讶缜八鲠尫帕嗽嘉锢砑拇嫫饔成涞募拇嫫?。這些寄存器在時間片準(zhǔn)備好被重新引入流水線時很可能已經(jīng)被回收且已被其他指令使用。
時間片重命名過濾器102可用于與檢查點(推測性處理器中的一種已知過程)相關(guān)聯(lián)的操作??梢詧?zhí)行檢查點以保存給定點處的給定線程的架構(gòu)寄存器的狀態(tài),以便在需要時能夠容易地恢復(fù)該狀態(tài)。例如,可以在低置信度分支處執(zhí)行檢查點。
如果時間片指令寫入設(shè)檢查點的物理寄存器,則該指令將不應(yīng)由重映射器103賦值給新的物理寄存器。作為代替,該設(shè)檢查點的物理寄存器必須被映射至最初由分配和寄存器重命名邏輯105賦值給它的同一物理寄存器,否則該檢查點將被破壞或變?yōu)闊o效。時間片重命名過濾器102向時間片重映射器103提供有關(guān)哪些物理寄存器設(shè)了檢查點的信息,使得時間片重映射器102能夠?qū)⑵湓加成滟x值給設(shè)檢查點的物理寄存器。當(dāng)寫入設(shè)檢查點的寄存器的時間片指令的結(jié)果可用時,這些結(jié)果可與寫入早先完成的設(shè)檢查點的寄存器的獨立指令的結(jié)果合并或集成。
根據(jù)本發(fā)明的實施例,時間片重映射器103可以用來向時間片指令的物理寄存器映射賦值的物理寄存器比分配和寄存器重命名邏輯105可用的物理寄存器要多。這可以防止由檢查點導(dǎo)致的死鎖。更具體地,因為物理寄存器被檢查點阻礙而無法被重映射至?xí)r間片指令。另一方面,情況也可以是只有當(dāng)時間片指令完成時由檢查點阻礙的物理寄存器才能夠被釋放。這種情形會導(dǎo)致死鎖。
因此,如上所述,時間片重映射器具有的可用于映射的物理寄存器的范圍要超過對分配和寄存器重命名邏輯105可用的范圍并在其之上。例如,處理器內(nèi)可以有192個實際物理寄存器;可以使其中的128個可由分配和寄存器重命名邏輯105用來映射至指令,而整個范圍的192個都可用于時間片重映射器。于是在此示例中,額外的64個物理寄存器可由時間片重映射器用來確保因為寄存器在128的基礎(chǔ)組中不可用而導(dǎo)致的死鎖情形不會出現(xiàn)。
現(xiàn)將參考圖1中的元素給出示例。假設(shè)已經(jīng)為如下指令(1)和(2)的序列中的每條指令分配了調(diào)度程序107內(nèi)的相應(yīng)的調(diào)度程序條目。為簡明起見,還假設(shè)所指示出的寄存器標(biāo)識符表示物理寄存器映射;即,它們指的是指令所分配的已經(jīng)向其映射了這些指令的邏輯寄存器的物理寄存器。這樣,對應(yīng)的邏輯寄存器對每個物理寄存器標(biāo)識符而言是隱式的。
(1)R1←Mx(將地址是Mx的存儲器位置的內(nèi)容載入物理寄存器R1)(2)R2←R1+R3(將物理寄存器R1和R3的內(nèi)容相加并將結(jié)果放置在物理寄存器R2內(nèi))在調(diào)度程序107內(nèi),指令(1)和(2)等待執(zhí)行。當(dāng)其源操作數(shù)變?yōu)榭捎脮r,指令(1)和(2)能夠離開調(diào)度程序并執(zhí)行,從而使得它們各自在調(diào)度程序107內(nèi)的條目對其他指令可用。加載指令(1)的源操作數(shù)是存儲器位置,于是指令(1)要求來自該存儲器位置的正確數(shù)據(jù)在L1高速緩存(未示出)或L2高速緩存110中存在。指令(2)依賴于指令(1),這是因為指令(2)需要指令(1)的成功執(zhí)行以便使正確數(shù)據(jù)在寄存器R1中存在。假設(shè)寄存器R3是已完成源寄存器。
現(xiàn)進(jìn)一步假設(shè)該加載指令,即指令(1)未命中L2高速緩存110。通常情況下需要幾百個周期來維修高速緩存未命中。在這段時間內(nèi),在常規(guī)處理器中,由指令(1)和(2)所占有的調(diào)度程序條目不能為其他指令所用,從而約束了吞吐量并降低了性能。此外,物理寄存器R1、R2和R3在維修高速緩存未命中期間仍保持被分配,從而對寄存器文件產(chǎn)生了壓力。
相反,根據(jù)本發(fā)明的實施例,指令(1)和(2)可以被轉(zhuǎn)移至?xí)r間片處理單元100,并且其相應(yīng)的調(diào)度程序和寄存器文件資源可被釋放以供流水線中的其他指令使用。更具體地,當(dāng)指令(1)未命中高速緩存時在R1內(nèi)將NAV位置位,并在隨后基于指令(2)讀取R1的事實,也在R2內(nèi)將該NAV位置位。后續(xù)的那些將R1或R2用作源的指令(未示出)也將在它們各自的目標(biāo)寄存器內(nèi)將該NAV位置位。調(diào)度程序條目內(nèi)與這些指令相對應(yīng)的NAV位也被置位,從而將它們標(biāo)識為時間片指令。
更具體地,指令(1)是獨立時間片指令,因為它不具有寄存器或存儲隊列條目作為源。另一方面,指令(2)是依賴的時間片指令,因為它具有NAV位被置位的寄存器作為源。
因為NAV位在R1內(nèi)被置位,所以指令(1)就退出調(diào)度程序107。依據(jù)從調(diào)度程序107的退出,指令(1)就連同其(對某些邏輯寄存器的)物理寄存器映射R1被一并寫入時間片數(shù)據(jù)緩沖器101。類似地,因為NAV位在R1內(nèi)被置位并且因為R3是已完成源寄存器,所以指令(2)可退出調(diào)度程序107,于是指令(2)、R3的值以及(對某些邏輯寄存器的)物理寄存器映射R1、(對某些邏輯寄存器的)R2和(對某些邏輯寄存器的)R3被寫入時間片數(shù)據(jù)緩沖器101。時間片數(shù)據(jù)緩沖器中指令(2)就像它在調(diào)度程序中那樣緊跟指令(1)。先前由指令(1)和(2)占用的調(diào)度程序條目,以及寄存器R1、R2和R3現(xiàn)在能夠被回收并對其他指令可用。
當(dāng)維修由指令(1)產(chǎn)生的高速緩存未命中時,可以將指令(1)和(2)以其原始調(diào)度次序插回到流水線內(nèi),并且由時間片重映射器103執(zhí)行的一新物理寄存器映射。指令可以攜帶已完成源寄存器值作為中間操作數(shù)。隨后可執(zhí)行這些指令。
考慮以上的描述,圖2示出了根據(jù)本發(fā)明實施例的過程流程。如框200所示,該過程可包括將處理器流水線內(nèi)的指令標(biāo)識為依賴于長等待時間操作的指令。例如,該指令可以是產(chǎn)生高速緩存未命中的加載指令。
如框201所示,基于該標(biāo)識,可使得該指令在未被執(zhí)行的情況下離開流水線并連同執(zhí)行該指令所需的信息的至少一部分一并放置在時間片數(shù)據(jù)緩沖器內(nèi)。該信息的至少一部分可包括源寄存器的值和物理寄存器映射。如框202所示,由該指令分配的調(diào)度程序條目和物理寄存器可以被釋放并回收以供其他指令使用。
在長等待時間操作完成之后,如框203所示將指令重新插入到流水線中。該指令可以是基于被標(biāo)識為依賴于長等待時間操作的指令而從流水線移至?xí)r間片數(shù)據(jù)緩沖器的多條指令中的一條。多條指令可以按調(diào)度次序移至?xí)r間片數(shù)據(jù)緩沖器,并按相同次序重新插入到流水線中。隨后如框204所示執(zhí)行該指令。
注意,為了允許在檢查點處理和實現(xiàn)連續(xù)流程流水線的恢復(fù)架構(gòu)上精確的異常處理和分支恢復(fù),有兩種寄存器應(yīng)該在不再需要檢查點之后才被釋放,這兩種寄存器是屬于檢查點的架構(gòu)狀態(tài)的寄存器,以及對應(yīng)于架構(gòu)“活躍出口(live-out)”的寄存器。公知的活躍出口寄存器是反映程序當(dāng)前狀態(tài)的邏輯寄存器和相應(yīng)的物理寄存器。更具體地,活躍出口寄存器對應(yīng)于程序中要寫入處理器的邏輯指令集的給定邏輯寄存器中的最后或最近的指令。然而,活躍出口和設(shè)檢查點的寄存器與物理寄存器文件相比在數(shù)量上較小(與邏輯寄存器相當(dāng))。
能夠回收其他物理寄存器的條件為(1)讀取這些寄存器的所有后續(xù)指令都已讀取這些寄存器,以及(2)這些物理寄存器已經(jīng)在隨后被重映射,即被重寫。根據(jù)本發(fā)明實施例的連續(xù)流程流水線能夠確保條件(1),這是因為即便是在時間片指令完成之前,但只要是在它們已讀取了已完成源寄存器的值之后,就可以將這些已完成源寄存器標(biāo)記為時間片指令已讀。而條件(2)則是在正常處理本身期間得到滿足,即對L個邏輯寄存器而言,要求新物理寄存器映射的第(L+1)條指令將重寫更早的物理寄存器映射。這樣,對于離開流水線的帶目標(biāo)寄存器的每N條指令而言,將有N-L個物理寄存器被重寫,由此就能滿足條件(2)。
于是,通過確保為時間片記錄已完成源寄存器的值和物理寄存器映射,就能夠以只要指令要求一物理寄存器,這一寄存器就總是可用的速率來回收寄存器,由此就能實現(xiàn)連續(xù)流程特性。
還應(yīng)注意到,時間片數(shù)據(jù)緩沖器能夠含有由多個獨立加載導(dǎo)致的多個時間片。如前所述,時間片本質(zhì)上是僅等待加載未命中數(shù)據(jù)值返回以便準(zhǔn)備好執(zhí)行的自給式程序。一旦加載未命中數(shù)據(jù)值可用,就能夠按任何次序?qū)r間片排出(重新插入到流水線中)。對加載未命中的維修可能會不按序完成,于是例如,屬于時間片數(shù)據(jù)緩沖器內(nèi)后一未命中的時間片就可能會在時間片數(shù)據(jù)緩沖器內(nèi)的前一時間片之前準(zhǔn)備好被重新插入到流水線中。處理這一情形可有多種選擇(1)等待直到最早的時間片準(zhǔn)備好并按先進(jìn)先出的次序排空時間片數(shù)據(jù)緩沖器中;(2)當(dāng)時間片數(shù)據(jù)緩沖器中任何未命中返回時按先進(jìn)先出的次序排空時間片數(shù)據(jù)緩沖器;以及(3)從被維修的未命中開始順序地排空時間片數(shù)據(jù)緩沖器(不一定會導(dǎo)致最先排出最早的時間片)。
圖3是可以包括一架構(gòu)狀態(tài)的計算機(jī)系統(tǒng)的框圖,包括用于根據(jù)本發(fā)明的實施例來使用的一個或多個處理器封裝和存儲器。在圖3中,計算機(jī)系統(tǒng)300可包括耦合至處理器總線320的一個或多個處理器封裝310(1)-310(n),而該處理器總線320則可以耦合至系統(tǒng)邏輯330。一個或多個處理器封裝310(1)-310(n)中的每一個都可以是N位處理器封裝并且可以包括解碼器(未示出)以及一個或多個N位寄存器(未示出)。系統(tǒng)邏輯330可以通過總線350耦合至系統(tǒng)存儲器340并通過外圍總線360耦合至非易失性存儲器370以及一個或多個外圍設(shè)備380(1)-380(m)。外圍總線360可以代表例如一條或多條遵守于1998年12月18日發(fā)布的PCI特殊利益集團(tuán)(SIG)PCI局部總線規(guī)范,版本2.2的外圍部件互連(PCI)總線;工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線;遵守BCPR Services公司于1992年發(fā)布的EISA規(guī)范,版本3.12,1992的擴(kuò)展ISA(EISA)總線;遵守于1998年9月23日發(fā)布的USB規(guī)范,版本1.1的通用串行總線(USB);以及類似的外圍總線。非易失性存儲器370可以是靜態(tài)存儲器設(shè)備,諸如只讀存儲器(ROM)或閃存。外圍設(shè)備380(1)-380(m)例如可以包括鍵盤;鼠標(biāo)或其他定點設(shè)備;大容量存儲設(shè)備,諸如硬盤驅(qū)動器、致密盤(CD)驅(qū)動器、光盤和數(shù)字視頻盤(DVD)驅(qū)動器;顯示器等等。
在此具體示出和/或描述了本發(fā)明的若干實施例。然而應(yīng)該認(rèn)識到本發(fā)明的修改和變化由上述教示所覆蓋并落入所附權(quán)利要求書的范圍內(nèi),而不背離本發(fā)明的精神和期望范圍。
權(quán)利要求
1.一種方法,包括將處理器流水線內(nèi)的一指令標(biāo)識為依賴于長等待時間操作的指令;基于所述標(biāo)識,使得所述指令連同執(zhí)行所述指令所需的信息的至少一部分一并被放置在數(shù)據(jù)存儲區(qū)內(nèi);以及釋放由所述指令分配的物理寄存器。
2.如權(quán)利要求1所述的方法,其特征在于,還包括釋放由所述指令占用的調(diào)度程序條目。
3.如權(quán)利要求1所述的方法,其特征在于,還包括在所述長等待時間操作完成之后,將所述指令重新插入到所述流水線中。
4.如權(quán)利要求1所述的方法,其特征在于,所述信息的至少一部分包括所述指令的源寄存器的值。
5.如權(quán)利要求1所述的方法,其特征在于,所述信息的至少一部分包括所述指令的物理寄存器映射。
6.如權(quán)利要求1所述的方法,其特征在于,所述指令是所述流水線中依賴于長等待時間操作的多條指令中的一條,并且所述多條指令按所述指令的調(diào)度次序被放置在所述數(shù)據(jù)存儲區(qū)內(nèi)。
7.如權(quán)利要求6所述的方法,其特征在于,還包括在所述長等待時間操作完成之后,將所述多條指令按所述調(diào)度次序重新插入到所述流水線中。
8.一種處理器,包括存儲被標(biāo)識為依賴于長等待時間操作的指令的數(shù)據(jù)存儲區(qū),所述數(shù)據(jù)存儲區(qū)對每條指令包括用于所述指令的字段、用于所述指令的源寄存器的值的字段、以及用于所述指令的寄存器的物理寄存器映射的字段。
9.如權(quán)利要求8所述的處理器,其特征在于,還包括耦合至所述數(shù)據(jù)存儲區(qū)的重映射器,用于將物理寄存器映射至所述數(shù)據(jù)存儲區(qū)的所述物理寄存器映射的物理寄存器標(biāo)識符。
10.如權(quán)利要求8所述的處理器,其特征在于,還包括為所述重映射器標(biāo)識設(shè)檢查點的物理寄存器的過濾器。
11.一種系統(tǒng),包括存儲指令的存儲器;以及耦合至所述存儲器以執(zhí)行所述指令的處理器,其中所述處理器包括存儲被標(biāo)識為依賴于長等待時間操作的指令的數(shù)據(jù)存儲區(qū),所述數(shù)據(jù)存儲區(qū)對每條指令包括用于所述指令的字段、用于所述指令的源寄存器的值的字段、以及用于所述指令的寄存器的物理寄存器映射的字段。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述處理器還包括耦合至所述數(shù)據(jù)存儲區(qū)的重映射器,用于將物理寄存器映射至所述數(shù)據(jù)存儲區(qū)的所述物理寄存器映射的物理寄存器標(biāo)識符。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述處理器還包括為所述重映射器標(biāo)識設(shè)檢查點的物理寄存器的過濾器。
14.一種方法,包括執(zhí)行產(chǎn)生高速緩存未命中的加載指令;在分配給所述加載指令的目標(biāo)寄存器內(nèi)設(shè)置一指示符來指示所述加載指令依賴于長等待時間操作;將所述加載指令連同執(zhí)行所述加載指令所需的信息的至少一部分一并移入數(shù)據(jù)存儲區(qū)內(nèi);以及釋放分配給所述加載指令的所述目標(biāo)寄存器。
15.如權(quán)利要求14所述的方法,其特征在于,還包括基于在所述加載指令的所述目標(biāo)寄存器內(nèi)設(shè)置的所述指示符,在另一指令的目標(biāo)寄存器內(nèi)設(shè)置一指示符;將所述另一指令連同執(zhí)行所述另一指令所需的信息的至少一部分一并移入所述數(shù)據(jù)存儲區(qū)內(nèi);以及釋放分配給所述另一指令的物理寄存器。
16.如權(quán)利要求15所述的方法,其特征在于,還包括釋放由所述加載指令和所述另一指令分配的調(diào)度程序條目。
17.如權(quán)利要求15所述的方法,其特征在于,所述信息的至少一部分包括所述另一指令的物理寄存器映射。
18.如權(quán)利要求15所述的方法,其特征在于,還包括在所述長等待時間操作完成之后,將所述加載指令和所述另一指令按調(diào)度次序重新插入到處理器流水線中。
全文摘要
本發(fā)明的實施例涉及一種通過將依賴于長等待時間操作的指令從處理器流水線的流程中轉(zhuǎn)出并在上述長等待時間操作完成時將其重新引入到該流程中來顯著提升處理器吞吐量并緩解該處理器調(diào)度程序和寄存器文件的壓力的系統(tǒng)和方法。由此,這些指令就不會阻礙資源的使用并且流水線內(nèi)總指令吞吐量能夠得到顯著增加。
文檔編號G06F9/38GK101027636SQ200580032341
公開日2007年8月29日 申請日期2005年9月21日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者H·阿卡瑞, R·拉杰瓦, S·斯里尼瓦桑 申請人:英特爾公司