欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

連續(xù)流程處理器流水線的制作方法

文檔序號(hào):6656883閱讀:347來源:國知局
專利名稱:連續(xù)流程處理器流水線的制作方法
背景對(duì)多處理器支持單芯片上的多核的要求日益高漲。為了保持設(shè)計(jì)成果與成本削減并能適于將來的應(yīng)用,設(shè)計(jì)人員通常試圖設(shè)計(jì)能夠滿足從移動(dòng)膝上型計(jì)算機(jī)到高端服務(wù)器的整個(gè)產(chǎn)品范圍的需求的多核微處理器。這一設(shè)計(jì)目標(biāo)給處理器設(shè)計(jì)人員帶來了兩難問題在保持對(duì)膝上型和臺(tái)式計(jì)算機(jī)中的微處理器很重要的單線程性能的情況下還同時(shí)提供對(duì)服務(wù)器內(nèi)的微處理器很重要的系統(tǒng)吞吐量。傳統(tǒng)上,設(shè)計(jì)人員試圖使用帶有單個(gè)大而復(fù)雜的核的芯片來達(dá)到高單線程性能的目標(biāo)。另一方面,設(shè)計(jì)人員試圖通過在單個(gè)芯片上提供相較之下更小、更簡單的多個(gè)核來實(shí)現(xiàn)高系統(tǒng)吞吐量的目標(biāo)。然而因?yàn)樵O(shè)計(jì)人員需要面對(duì)芯片尺寸和功耗的限制,所以在同一芯片上同時(shí)提供高單線程性能和高系統(tǒng)吞吐量是一個(gè)巨大的挑戰(zhàn)。更具體地,單芯片將無法容納多個(gè)大型核,而小型核傳統(tǒng)上無法提供高單線程性能。
嚴(yán)重影響吞吐量的一個(gè)因素是需要執(zhí)行依賴于長等待時(shí)間操作的指令,諸如對(duì)高速緩存未命中的維修。處理器內(nèi)的指令在被稱為“調(diào)度程序”的邏輯結(jié)構(gòu)中等待執(zhí)行。在調(diào)度程序中,被分配了目標(biāo)寄存器的指令等待它們的源操作數(shù)變?yōu)榭捎?,之后這些指令就能夠離開該調(diào)度程序、執(zhí)行并引退。
與處理器中的任何結(jié)構(gòu)類似,調(diào)度程序受到面積限制,因此具有有限個(gè)數(shù)的條目。依賴于高速緩存未命中的維修的指令在未命中得到維修之前必須等待幾百個(gè)周期。當(dāng)它們等待時(shí),它們的調(diào)度程序條目保持被分配并由此無法為其他指令所用。這一情形會(huì)對(duì)調(diào)度程序造成壓力并會(huì)導(dǎo)致性能損失。
因?yàn)樵谡{(diào)度程序中等待的指令保持其目標(biāo)寄存器被分配由此就無法為其他指令所用,所以也會(huì)類似地對(duì)寄存器文件造成壓力。這一情形還會(huì)對(duì)性能造成損害,特別是考慮到寄存器文件可能需要維持幾千條指令并且通常是耗能、周期關(guān)鍵、連續(xù)性的定時(shí)結(jié)構(gòu)這一事實(shí)的情況下。
附圖簡述

圖1示出了根據(jù)本發(fā)明實(shí)施例的含有時(shí)間片處理單元的處理器的元件;
圖2示出了根據(jù)本發(fā)明實(shí)施例的過程流程;以及圖3示出了根據(jù)本發(fā)明實(shí)施例的含有處理器的系統(tǒng)。
詳細(xì)描述本發(fā)明的實(shí)施例涉及一種通過將依賴于長等待時(shí)間操作的指令從處理器流水線流程中轉(zhuǎn)出并在上述長等待時(shí)間操作完成時(shí)將這些指令重新引入流程中來顯著增加處理器吞吐量及存儲(chǔ)器等待時(shí)間容限,并減輕對(duì)調(diào)度程序以及對(duì)寄存器文件的壓力的系統(tǒng)和方法。由此,這些指令就不會(huì)阻礙資源并且流水線內(nèi)的總指令吞吐量就能有顯著的增加。
更具體地,本發(fā)明的實(shí)施例涉及標(biāo)識(shí)在此被稱為“時(shí)間片(slice)”指令的依賴于長等待時(shí)間操作的指令,并且將它們連同執(zhí)行時(shí)間片指令所需信息的至少一部分一并從流水線移至“時(shí)間片數(shù)據(jù)緩沖器”。這些時(shí)間片指令的調(diào)度程序條目和目標(biāo)寄存器隨后可被回收以供其他指令使用。獨(dú)立于長等待時(shí)間操作的指令能夠使用這些資源并繼續(xù)程序執(zhí)行。當(dāng)時(shí)間片數(shù)據(jù)緩沖器內(nèi)的時(shí)間片指令所依賴的長等待時(shí)間操作完成時(shí),該時(shí)間片指令可被重新引入流水線,并且被執(zhí)行并引退。本發(fā)明的實(shí)施例由此就能實(shí)現(xiàn)無阻塞的連續(xù)流程處理器流水線。
圖1示出了根據(jù)本發(fā)明實(shí)施例的的系統(tǒng)的示例。該系統(tǒng)可包括根據(jù)本發(fā)明實(shí)施例的“時(shí)間片處理單元”100。時(shí)間片處理單元100包括時(shí)間片數(shù)據(jù)緩沖器101、時(shí)間片重命名過濾器102和時(shí)間片重映射器103。如下將進(jìn)一步詳述與這些元件相關(guān)聯(lián)的操作。
時(shí)間片處理單元100可以與處理器流水線相關(guān)聯(lián)。流水線可以包括用于解碼指令并耦合至分配和寄存器重命名邏輯105的指令解碼器104。眾所周知的是處理器可以包括將物理寄存器分配給指令并將指令的邏輯寄存器映射至物理寄存器的邏輯,諸如分配和寄存器重命名邏輯105。在此使用的“映射”指的是定義或指定之間的對(duì)應(yīng)關(guān)系(概念上來講,邏輯寄存器標(biāo)識(shí)符被“重命名”為物理寄存器標(biāo)識(shí)符)。更具體地,由于在流水線內(nèi)的短暫跨度,所以在按照處理器的邏輯(也可稱為“架構(gòu)的”)寄存器組的寄存器的標(biāo)識(shí)符指定指令的源和目標(biāo)操作數(shù)時(shí),這些指令的源和目標(biāo)操作數(shù)被賦值給物理寄存器以便這些指令能夠在處理器中實(shí)際執(zhí)行。物理寄存器組通常在數(shù)量上要遠(yuǎn)多于邏輯寄存器組,于是多個(gè)不同的物理寄存器組能夠被映射至同一邏輯寄存器。
分配和寄存器重命名邏輯105可以耦合至用于將指令排隊(duì)以供執(zhí)行的μop(“微”操作,即指令)隊(duì)列106,而μop隊(duì)列106可以耦合至用于調(diào)度指令以供執(zhí)行的調(diào)度程序107。由分配和寄存器重命名邏輯105執(zhí)行的從邏輯寄存器到物理寄存器的映射(其后稱為“物理寄存器映射”)可以被記錄在用于等待執(zhí)行的指令的重排序緩沖器(ROB)(未示出)內(nèi)或調(diào)度程序107內(nèi)。根據(jù)本發(fā)明的實(shí)施例,如下將進(jìn)一步詳述的,物理寄存器映射可以被復(fù)制到用于被標(biāo)識(shí)為時(shí)間片指令的指令的時(shí)間片數(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)由存儲(chǔ)器接口111從存儲(chǔ)器子系統(tǒng)(未示出)中檢索出的數(shù)據(jù)。
如上所述,可以認(rèn)為對(duì)L2高速緩存中未命中的加載的高速緩存未命中維修是長等待時(shí)間操作。長等待時(shí)間操作的其他示例包括浮點(diǎn)操作以及浮點(diǎn)操作的依賴性鏈。當(dāng)由流水線處理指令時(shí),依賴于長等待時(shí)間操作的指令可以根據(jù)本發(fā)明的實(shí)施例被分類為時(shí)間片指令并給予特殊的處理以防止時(shí)間片指令阻塞或減緩流水線的吞吐量。時(shí)間片指令可以是獨(dú)立指令,諸如生成高速緩存未命中的加載,或是依賴于另一時(shí)間片指令的指令,諸如讀取由加載指令加載的寄存器的指令。
當(dāng)時(shí)間片指令出現(xiàn)在流水線中時(shí),可以按調(diào)度程序107確定的指令調(diào)度次序?qū)⒃摃r(shí)間片指令存儲(chǔ)在時(shí)間片數(shù)據(jù)緩沖器101中。調(diào)度程序通常按照數(shù)據(jù)依賴性次序來調(diào)度指令。時(shí)間片指令可以連同執(zhí)行該指令所需信息的至少部分被一并存儲(chǔ)在時(shí)間片數(shù)據(jù)緩沖器中。例如,上述信息可以包括可用的源操作數(shù)的值以及該指令的物理寄存器映射。物理寄存器映射保存與該指令相關(guān)聯(lián)的數(shù)據(jù)依賴性信息。通過將任何可用源值以及物理寄存器映射連同該時(shí)間片指令一起存儲(chǔ)在時(shí)間片數(shù)據(jù)緩沖器內(nèi),則能夠甚至在時(shí)間片指令完成之前為其他指令釋放并回收相應(yīng)的寄存器。此外,當(dāng)隨后將時(shí)間片指令重新引入流水線以完成其執(zhí)行時(shí),對(duì)其至少一個(gè)源操作數(shù)無需重新求值,同時(shí)物理寄存器映射確保該指令在時(shí)間片指令序列中的正確位置上被執(zhí)行。
根據(jù)本發(fā)明的實(shí)施例,通過跟蹤長等待時(shí)間操作的寄存器和存儲(chǔ)器依賴性就能夠動(dòng)態(tài)地執(zhí)行時(shí)間片指令的標(biāo)識(shí)。更具體地,通過經(jīng)由物理寄存器和存儲(chǔ)隊(duì)列條目傳播時(shí)間片指令指示符就能夠標(biāo)識(shí)時(shí)間片指令。存儲(chǔ)隊(duì)列是處理器中用于保持被排隊(duì)等待寫入存儲(chǔ)器的存儲(chǔ)指令的結(jié)構(gòu)(圖1中未示出)。加載和存儲(chǔ)指令可以分別讀出或?qū)懭氪鎯?chǔ)隊(duì)列條目內(nèi)的字段。時(shí)間片指令指示符可以是一位,在此被稱為“非值”(NAV)位,并且該位與每個(gè)物理寄存器和存儲(chǔ)隊(duì)列條目相關(guān)聯(lián)。該位最初可以不被置位(例如,它具有邏輯“0”的值),而是在相關(guān)聯(lián)的指令依賴于長等待時(shí)間操作時(shí)被置位(例如,置為邏輯“1”)。
該位最初可以為獨(dú)立時(shí)間片指令置位,并在隨后傳播給直接或間接依賴于該獨(dú)立指令的指令。更具體地,調(diào)度程序內(nèi)的獨(dú)立時(shí)間片指令(諸如,未命中高速緩存的加載)的目標(biāo)寄存器的NAV位可以被置位。具有該目標(biāo)寄存器作為源的后續(xù)指令可以“繼承”該NAV位,因?yàn)镹AV位在其各自的目標(biāo)寄存器內(nèi)也可以被置位。如果存儲(chǔ)指令的源操作數(shù)使其NAV位置位,則對(duì)應(yīng)于該存儲(chǔ)的存儲(chǔ)隊(duì)列條目的NAV位可以被置位。從該存儲(chǔ)隊(duì)列條目中讀取或被預(yù)測從該存儲(chǔ)隊(duì)列條目轉(zhuǎn)發(fā)的后續(xù)加載指令可以在其各自的目標(biāo)內(nèi)將NAV位置位。也可以向調(diào)度程序中的指令條目提供用于其源和目標(biāo)操作數(shù)的NAV位,其中這些NAV位對(duì)應(yīng)于物理寄存器文件和存儲(chǔ)隊(duì)列條目內(nèi)的NAV位。因?yàn)槲锢砑拇嫫骱痛鎯?chǔ)隊(duì)列條目內(nèi)相應(yīng)的NAV位被置位,所以調(diào)度程序條目內(nèi)的NAV位可被置位以將這些調(diào)度程序條目標(biāo)識(shí)為含有時(shí)間片指令。時(shí)間片指令的依賴性鏈可通過前述過程在調(diào)度程序內(nèi)形成。
在流水線內(nèi)的正常操作過程中,指令可以離開調(diào)度程序并在其源寄存器準(zhǔn)備好,即含有執(zhí)行該指令所需的值并能產(chǎn)生有效結(jié)果時(shí)被執(zhí)行。例如,源寄存器在源指令已被執(zhí)行并將一值寫入寄存器時(shí)準(zhǔn)備好。這一寄存器在此被稱為“已完成源寄存器”。根據(jù)本發(fā)明的實(shí)施例,可以在源寄存器是已完成源寄存器時(shí),或在其NAV位被置位時(shí)認(rèn)定該源寄存器準(zhǔn)備好。這樣,時(shí)間片指令在其任一源寄存器是已完成源寄存器,以及在其任一源寄存器雖不是已完成源寄存器但是其NAV位被置位時(shí),能夠離開調(diào)度程序。因此就能夠在連續(xù)的流程中將時(shí)間片指令和非時(shí)間片指令“排出”流水線,而沒有因?qū)﹂L等待時(shí)間操作的依賴性所引起的延遲,并且允許后續(xù)指令獲得調(diào)度程序條目。
在時(shí)間片指令離開調(diào)度程序時(shí)執(zhí)行的操作可以包括將該指令的任何已完成源寄存器的值連同該指令本身一并記錄在時(shí)間片數(shù)據(jù)緩沖器內(nèi),并且將任何已完成源寄存器標(biāo)記為讀取。這就允許已完成源寄存器被回收以供其他指令使用。指令的物理寄存器映射也可以被記錄在時(shí)間片數(shù)據(jù)緩沖器內(nèi)。多條時(shí)間片指令(“時(shí)間片”)可以連同相應(yīng)的已完成源寄存器值和物理寄存器映射被一并記錄在時(shí)間片數(shù)據(jù)寄存器內(nèi)??紤]前述內(nèi)容,可以將時(shí)間片視為自給式程序,其中該時(shí)間片能夠在其依賴的長等待時(shí)間操作完成時(shí)被重新引入流水線并被有效地執(zhí)行,因?yàn)閳?zhí)行該時(shí)間片所需的唯一的外部輸入是來自加載的數(shù)據(jù)(假設(shè)長等待時(shí)間操作是高速緩存未命中的維修)。其他輸入則已經(jīng)作為已完成源寄存器的值被復(fù)制到時(shí)間片數(shù)據(jù)緩沖器內(nèi),或在該時(shí)間片內(nèi)部生成。
此外,如前所述,可以釋放時(shí)間片指令的目標(biāo)寄存器以供其他指令回收和使用,從而減輕寄存器文件的壓力。
在各實(shí)施例中,時(shí)間片數(shù)據(jù)緩沖器可以包括多個(gè)條目。每個(gè)條目可以包括與每條時(shí)間片指令相對(duì)應(yīng)的多個(gè)字段,包括用于時(shí)間片指令本身的字段、用于已完成源寄存器值的字段以及用于時(shí)間片指令的源和目標(biāo)寄存器的物理寄存器映射的字段。如上所述,當(dāng)時(shí)間片指令離開調(diào)度程序時(shí)可以分配時(shí)間片數(shù)據(jù)緩沖器,并且在時(shí)間片數(shù)據(jù)緩沖器內(nèi)以其在調(diào)度程序內(nèi)的次序來存儲(chǔ)這些時(shí)間片指令。這些時(shí)間片指令可以在適當(dāng)?shù)臅r(shí)候以相同的次序返回流水線。例如,在各實(shí)施例中,可以經(jīng)由μop隊(duì)列107將指令重新插入到流水線中,但是其他排列也是可行的。在各實(shí)施例中,時(shí)間片數(shù)據(jù)緩沖器可以是與L2高速緩存類似的實(shí)現(xiàn)長等待時(shí)間、高帶寬陣列的高密度SRAM(靜態(tài)隨機(jī)存取存儲(chǔ)器)。
現(xiàn)重新參考圖1。如圖1所示并如前所述,根據(jù)本發(fā)明實(shí)施例的時(shí)間片處理單元100可以包括時(shí)間片重命名過濾器102和時(shí)間片重映射器103。時(shí)間片重映射器103可以用與分配和寄存器重命名邏輯105將邏輯寄存器映射至物理寄存器相類似的方式,將新的物理寄存器映射至?xí)r間片數(shù)據(jù)緩沖器內(nèi)的物理寄存器映射的物理寄存器標(biāo)識(shí)符。可能會(huì)需要該操作是因?yàn)橐讶缜八鲠尫帕嗽嘉锢砑拇嫫饔成涞募拇嫫?。這些寄存器在時(shí)間片準(zhǔn)備好被重新引入流水線時(shí)很可能已經(jīng)被回收且已被其他指令使用。
時(shí)間片重命名過濾器102可用于與檢查點(diǎn)(推測性處理器中的一種已知過程)相關(guān)聯(lián)的操作??梢詧?zhí)行檢查點(diǎn)以保存給定點(diǎn)處的給定線程的架構(gòu)寄存器的狀態(tài),以便在需要時(shí)能夠容易地恢復(fù)該狀態(tài)。例如,可以在低置信度分支處執(zhí)行檢查點(diǎn)。
如果時(shí)間片指令寫入設(shè)檢查點(diǎn)的物理寄存器,則該指令將不應(yīng)由重映射器103賦值給新的物理寄存器。作為代替,該設(shè)檢查點(diǎn)的物理寄存器必須被映射至最初由分配和寄存器重命名邏輯105賦值給它的同一物理寄存器,否則該檢查點(diǎn)將被破壞或變?yōu)闊o效。時(shí)間片重命名過濾器102向時(shí)間片重映射器103提供有關(guān)哪些物理寄存器設(shè)了檢查點(diǎn)的信息,使得時(shí)間片重映射器102能夠?qū)⑵湓加成滟x值給設(shè)檢查點(diǎn)的物理寄存器。當(dāng)寫入設(shè)檢查點(diǎn)的寄存器的時(shí)間片指令的結(jié)果可用時(shí),這些結(jié)果可與寫入早先完成的設(shè)檢查點(diǎn)的寄存器的獨(dú)立指令的結(jié)果合并或集成。
根據(jù)本發(fā)明的實(shí)施例,時(shí)間片重映射器103可以用來向時(shí)間片指令的物理寄存器映射賦值的物理寄存器比分配和寄存器重命名邏輯105可用的物理寄存器要多。這可以防止由檢查點(diǎn)導(dǎo)致的死鎖。更具體地,因?yàn)槲锢砑拇嫫鞅粰z查點(diǎn)阻礙而無法被重映射至?xí)r間片指令。另一方面,情況也可以是只有當(dāng)時(shí)間片指令完成時(shí)由檢查點(diǎn)阻礙的物理寄存器才能夠被釋放。這種情形會(huì)導(dǎo)致死鎖。
因此,如上所述,時(shí)間片重映射器具有的可用于映射的物理寄存器的范圍要超過對(duì)分配和寄存器重命名邏輯105可用的范圍并在其之上。例如,處理器內(nèi)可以有192個(gè)實(shí)際物理寄存器;可以使其中的128個(gè)可由分配和寄存器重命名邏輯105用來映射至指令,而整個(gè)范圍的192個(gè)都可用于時(shí)間片重映射器。于是在此示例中,額外的64個(gè)物理寄存器可由時(shí)間片重映射器用來確保因?yàn)榧拇嫫髟?28的基礎(chǔ)組中不可用而導(dǎo)致的死鎖情形不會(huì)出現(xiàn)。
現(xiàn)將參考圖1中的元素給出示例。假設(shè)已經(jīng)為如下指令(1)和(2)的序列中的每條指令分配了調(diào)度程序107內(nèi)的相應(yīng)的調(diào)度程序條目。為簡明起見,還假設(shè)所指示出的寄存器標(biāo)識(shí)符表示物理寄存器映射;即,它們指的是指令所分配的已經(jīng)向其映射了這些指令的邏輯寄存器的物理寄存器。這樣,對(duì)應(yīng)的邏輯寄存器對(duì)每個(gè)物理寄存器標(biāo)識(shí)符而言是隱式的。
(1)R1←Mx(將地址是Mx的存儲(chǔ)器位置的內(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(shí),指令(1)和(2)能夠離開調(diào)度程序并執(zhí)行,從而使得它們各自在調(diào)度程序107內(nèi)的條目對(duì)其他指令可用。加載指令(1)的源操作數(shù)是存儲(chǔ)器位置,于是指令(1)要求來自該存儲(chǔ)器位置的正確數(shù)據(jù)在L1高速緩存(未示出)或L2高速緩存110中存在。指令(2)依賴于指令(1),這是因?yàn)橹噶?2)需要指令(1)的成功執(zhí)行以便使正確數(shù)據(jù)在寄存器R1中存在。假設(shè)寄存器R3是已完成源寄存器。
現(xiàn)進(jìn)一步假設(shè)該加載指令,即指令(1)未命中L2高速緩存110。通常情況下需要幾百個(gè)周期來維修高速緩存未命中。在這段時(shí)間內(nèi),在常規(guī)處理器中,由指令(1)和(2)所占有的調(diào)度程序條目不能為其他指令所用,從而約束了吞吐量并降低了性能。此外,物理寄存器R1、R2和R3在維修高速緩存未命中期間仍保持被分配,從而對(duì)寄存器文件產(chǎn)生了壓力。
相反,根據(jù)本發(fā)明的實(shí)施例,指令(1)和(2)可以被轉(zhuǎn)移至?xí)r間片處理單元100,并且其相應(yīng)的調(diào)度程序和寄存器文件資源可被釋放以供流水線中的其他指令使用。更具體地,當(dāng)指令(1)未命中高速緩存時(shí)在R1內(nèi)將NAV位置位,并在隨后基于指令(2)讀取R1的事實(shí),也在R2內(nèi)將該NAV位置位。后續(xù)的那些將R1或R2用作源的指令(未示出)也將在它們各自的目標(biāo)寄存器內(nèi)將該NAV位置位。調(diào)度程序條目內(nèi)與這些指令相對(duì)應(yīng)的NAV位也被置位,從而將它們標(biāo)識(shí)為時(shí)間片指令。
更具體地,指令(1)是獨(dú)立時(shí)間片指令,因?yàn)樗痪哂屑拇嫫骰虼鎯?chǔ)隊(duì)列條目作為源。另一方面,指令(2)是依賴的時(shí)間片指令,因?yàn)樗哂蠳AV位被置位的寄存器作為源。
因?yàn)镹AV位在R1內(nèi)被置位,所以指令(1)就退出調(diào)度程序107。依據(jù)從調(diào)度程序107的退出,指令(1)就連同其(對(duì)某些邏輯寄存器的)物理寄存器映射R1被一并寫入時(shí)間片數(shù)據(jù)緩沖器101。類似地,因?yàn)镹AV位在R1內(nèi)被置位并且因?yàn)镽3是已完成源寄存器,所以指令(2)可退出調(diào)度程序107,于是指令(2)、R3的值以及(對(duì)某些邏輯寄存器的)物理寄存器映射R1、(對(duì)某些邏輯寄存器的)R2和(對(duì)某些邏輯寄存器的)R3被寫入時(shí)間片數(shù)據(jù)緩沖器101。時(shí)間片數(shù)據(jù)緩沖器中指令(2)就像它在調(diào)度程序中那樣緊跟指令(1)。先前由指令(1)和(2)占用的調(diào)度程序條目,以及寄存器R1、R2和R3現(xiàn)在能夠被回收并對(duì)其他指令可用。
當(dāng)維修由指令(1)產(chǎn)生的高速緩存未命中時(shí),可以將指令(1)和(2)以其原始調(diào)度次序插回到流水線內(nèi),并且由時(shí)間片重映射器103執(zhí)行的一新物理寄存器映射。指令可以攜帶已完成源寄存器值作為中間操作數(shù)。隨后可執(zhí)行這些指令。
考慮以上的描述,圖2示出了根據(jù)本發(fā)明實(shí)施例的過程流程。如框200所示,該過程可包括將處理器流水線內(nèi)的指令標(biāo)識(shí)為依賴于長等待時(shí)間操作的指令。例如,該指令可以是產(chǎn)生高速緩存未命中的加載指令。
如框201所示,基于該標(biāo)識(shí),可使得該指令在未被執(zhí)行的情況下離開流水線并連同執(zhí)行該指令所需的信息的至少一部分一并放置在時(shí)間片數(shù)據(jù)緩沖器內(nèi)。該信息的至少一部分可包括源寄存器的值和物理寄存器映射。如框202所示,由該指令分配的調(diào)度程序條目和物理寄存器可以被釋放并回收以供其他指令使用。
在長等待時(shí)間操作完成之后,如框203所示將指令重新插入到流水線中。該指令可以是基于被標(biāo)識(shí)為依賴于長等待時(shí)間操作的指令而從流水線移至?xí)r間片數(shù)據(jù)緩沖器的多條指令中的一條。多條指令可以按調(diào)度次序移至?xí)r間片數(shù)據(jù)緩沖器,并按相同次序重新插入到流水線中。隨后如框204所示執(zhí)行該指令。
注意,為了允許在檢查點(diǎn)處理和實(shí)現(xiàn)連續(xù)流程流水線的恢復(fù)架構(gòu)上精確的異常處理和分支恢復(fù),有兩種寄存器應(yīng)該在不再需要檢查點(diǎn)之后才被釋放,這兩種寄存器是屬于檢查點(diǎn)的架構(gòu)狀態(tài)的寄存器,以及對(duì)應(yīng)于架構(gòu)“活躍出口(live-out)”的寄存器。公知的活躍出口寄存器是反映程序當(dāng)前狀態(tài)的邏輯寄存器和相應(yīng)的物理寄存器。更具體地,活躍出口寄存器對(duì)應(yīng)于程序中要寫入處理器的邏輯指令集的給定邏輯寄存器中的最后或最近的指令。然而,活躍出口和設(shè)檢查點(diǎn)的寄存器與物理寄存器文件相比在數(shù)量上較小(與邏輯寄存器相當(dāng))。
能夠回收其他物理寄存器的條件為(1)讀取這些寄存器的所有后續(xù)指令都已讀取這些寄存器,以及(2)這些物理寄存器已經(jīng)在隨后被重映射,即被重寫。根據(jù)本發(fā)明實(shí)施例的連續(xù)流程流水線能夠確保條件(1),這是因?yàn)榧幢闶窃跁r(shí)間片指令完成之前,但只要是在它們已讀取了已完成源寄存器的值之后,就可以將這些已完成源寄存器標(biāo)記為時(shí)間片指令已讀。而條件(2)則是在正常處理本身期間得到滿足,即對(duì)L個(gè)邏輯寄存器而言,要求新物理寄存器映射的第(L+1)條指令將重寫更早的物理寄存器映射。這樣,對(duì)于離開流水線的帶目標(biāo)寄存器的每N條指令而言,將有N-L個(gè)物理寄存器被重寫,由此就能滿足條件(2)。
于是,通過確保為時(shí)間片記錄已完成源寄存器的值和物理寄存器映射,就能夠以只要指令要求一物理寄存器,這一寄存器就總是可用的速率來回收寄存器,由此就能實(shí)現(xiàn)連續(xù)流程特性。
還應(yīng)注意到,時(shí)間片數(shù)據(jù)緩沖器能夠含有由多個(gè)獨(dú)立加載導(dǎo)致的多個(gè)時(shí)間片。如前所述,時(shí)間片本質(zhì)上是僅等待加載未命中數(shù)據(jù)值返回以便準(zhǔn)備好執(zhí)行的自給式程序。一旦加載未命中數(shù)據(jù)值可用,就能夠按任何次序?qū)r(shí)間片排出(重新插入到流水線中)。對(duì)加載未命中的維修可能會(huì)不按序完成,于是例如,屬于時(shí)間片數(shù)據(jù)緩沖器內(nèi)后一未命中的時(shí)間片就可能會(huì)在時(shí)間片數(shù)據(jù)緩沖器內(nèi)的前一時(shí)間片之前準(zhǔn)備好被重新插入到流水線中。處理這一情形可有多種選擇(1)等待直到最早的時(shí)間片準(zhǔn)備好并按先進(jìn)先出的次序排空時(shí)間片數(shù)據(jù)緩沖器中;(2)當(dāng)時(shí)間片數(shù)據(jù)緩沖器中任何未命中返回時(shí)按先進(jìn)先出的次序排空時(shí)間片數(shù)據(jù)緩沖器;以及(3)從被維修的未命中開始順序地排空時(shí)間片數(shù)據(jù)緩沖器(不一定會(huì)導(dǎo)致最先排出最早的時(shí)間片)。
圖3是可以包括一架構(gòu)狀態(tài)的計(jì)算機(jī)系統(tǒng)的框圖,包括用于根據(jù)本發(fā)明的實(shí)施例來使用的一個(gè)或多個(gè)處理器封裝和存儲(chǔ)器。在圖3中,計(jì)算機(jī)系統(tǒng)300可包括耦合至處理器總線320的一個(gè)或多個(gè)處理器封裝310(1)-310(n),而該處理器總線320則可以耦合至系統(tǒng)邏輯330。一個(gè)或多個(gè)處理器封裝310(1)-310(n)中的每一個(gè)都可以是N位處理器封裝并且可以包括解碼器(未示出)以及一個(gè)或多個(gè)N位寄存器(未示出)。系統(tǒng)邏輯330可以通過總線350耦合至系統(tǒng)存儲(chǔ)器340并通過外圍總線360耦合至非易失性存儲(chǔ)器370以及一個(gè)或多個(gè)外圍設(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);以及類似的外圍總線。非易失性存儲(chǔ)器370可以是靜態(tài)存儲(chǔ)器設(shè)備,諸如只讀存儲(chǔ)器(ROM)或閃存。外圍設(shè)備380(1)-380(m)例如可以包括鍵盤;鼠標(biāo)或其他定點(diǎn)設(shè)備;大容量存儲(chǔ)設(shè)備,諸如硬盤驅(qū)動(dòng)器、致密盤(CD)驅(qū)動(dòng)器、光盤和數(shù)字視頻盤(DVD)驅(qū)動(dòng)器;顯示器等等。
在此具體示出和/或描述了本發(fā)明的若干實(shí)施例。然而應(yīng)該認(rèn)識(shí)到本發(fā)明的修改和變化由上述教示所覆蓋并落入所附權(quán)利要求書的范圍內(nèi),而不背離本發(fā)明的精神和期望范圍。
權(quán)利要求
1.一種方法,包括將處理器流水線內(nèi)的一指令標(biāo)識(shí)為依賴于長等待時(shí)間操作的指令;基于所述標(biāo)識(shí),使得所述指令連同執(zhí)行所述指令所需的信息的至少一部分一并被放置在數(shù)據(jù)存儲(chǔ)區(qū)內(nèi);以及釋放由所述指令分配的物理寄存器。
2.如權(quán)利要求1所述的方法,其特征在于,還包括釋放由所述指令占用的調(diào)度程序條目。
3.如權(quán)利要求1所述的方法,其特征在于,還包括在所述長等待時(shí)間操作完成之后,將所述指令重新插入到所述流水線中。
4.如權(quán)利要求1所述的方法,其特征在于,所述信息的至少一部分包括所述指令的源寄存器的值。
5.如權(quán)利要求1所述的方法,其特征在于,所述信息的至少一部分包括所述指令的物理寄存器映射。
6.如權(quán)利要求1所述的方法,其特征在于,所述指令是所述流水線中依賴于長等待時(shí)間操作的多條指令中的一條,并且所述多條指令按所述指令的調(diào)度次序被放置在所述數(shù)據(jù)存儲(chǔ)區(qū)內(nèi)。
7.如權(quán)利要求6所述的方法,其特征在于,還包括在所述長等待時(shí)間操作完成之后,將所述多條指令按所述調(diào)度次序重新插入到所述流水線中。
8.一種處理器,包括存儲(chǔ)被標(biāo)識(shí)為依賴于長等待時(shí)間操作的指令的數(shù)據(jù)存儲(chǔ)區(qū),所述數(shù)據(jù)存儲(chǔ)區(qū)對(duì)每條指令包括用于所述指令的字段、用于所述指令的源寄存器的值的字段、以及用于所述指令的寄存器的物理寄存器映射的字段。
9.如權(quán)利要求8所述的處理器,其特征在于,還包括耦合至所述數(shù)據(jù)存儲(chǔ)區(qū)的重映射器,用于將物理寄存器映射至所述數(shù)據(jù)存儲(chǔ)區(qū)的所述物理寄存器映射的物理寄存器標(biāo)識(shí)符。
10.如權(quán)利要求8所述的處理器,其特征在于,還包括為所述重映射器標(biāo)識(shí)設(shè)檢查點(diǎn)的物理寄存器的過濾器。
11.一種系統(tǒng),包括存儲(chǔ)指令的存儲(chǔ)器;以及耦合至所述存儲(chǔ)器以執(zhí)行所述指令的處理器,其中所述處理器包括存儲(chǔ)被標(biāo)識(shí)為依賴于長等待時(shí)間操作的指令的數(shù)據(jù)存儲(chǔ)區(qū),所述數(shù)據(jù)存儲(chǔ)區(qū)對(duì)每條指令包括用于所述指令的字段、用于所述指令的源寄存器的值的字段、以及用于所述指令的寄存器的物理寄存器映射的字段。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述處理器還包括耦合至所述數(shù)據(jù)存儲(chǔ)區(qū)的重映射器,用于將物理寄存器映射至所述數(shù)據(jù)存儲(chǔ)區(qū)的所述物理寄存器映射的物理寄存器標(biāo)識(shí)符。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述處理器還包括為所述重映射器標(biāo)識(shí)設(shè)檢查點(diǎn)的物理寄存器的過濾器。
14.一種方法,包括執(zhí)行產(chǎn)生高速緩存未命中的加載指令;在分配給所述加載指令的目標(biāo)寄存器內(nèi)設(shè)置一指示符來指示所述加載指令依賴于長等待時(shí)間操作;將所述加載指令連同執(zhí)行所述加載指令所需的信息的至少一部分一并移入數(shù)據(jù)存儲(chǔ)區(qū)內(nèi);以及釋放分配給所述加載指令的所述目標(biāo)寄存器。
15.如權(quán)利要求14所述的方法,其特征在于,還包括基于在所述加載指令的所述目標(biāo)寄存器內(nèi)設(shè)置的所述指示符,在另一指令的目標(biāo)寄存器內(nèi)設(shè)置一指示符;將所述另一指令連同執(zhí)行所述另一指令所需的信息的至少一部分一并移入所述數(shù)據(jù)存儲(chǔ)區(qū)內(nèi);以及釋放分配給所述另一指令的物理寄存器。
16.如權(quán)利要求15所述的方法,其特征在于,還包括釋放由所述加載指令和所述另一指令分配的調(diào)度程序條目。
17.如權(quán)利要求15所述的方法,其特征在于,所述信息的至少一部分包括所述另一指令的物理寄存器映射。
18.如權(quán)利要求15所述的方法,其特征在于,還包括在所述長等待時(shí)間操作完成之后,將所述加載指令和所述另一指令按調(diào)度次序重新插入到處理器流水線中。
全文摘要
本發(fā)明的實(shí)施例涉及一種通過將依賴于長等待時(shí)間操作的指令從處理器流水線的流程中轉(zhuǎn)出并在上述長等待時(shí)間操作完成時(shí)將其重新引入到該流程中來顯著提升處理器吞吐量并緩解該處理器調(diào)度程序和寄存器文件的壓力的系統(tǒng)和方法。由此,這些指令就不會(huì)阻礙資源的使用并且流水線內(nèi)總指令吞吐量能夠得到顯著增加。
文檔編號(hào)G06F9/38GK101027636SQ200580032341
公開日2007年8月29日 申請(qǐng)日期2005年9月21日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者H·阿卡瑞, R·拉杰瓦, S·斯里尼瓦桑 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
高碑店市| 图木舒克市| 聂拉木县| 双牌县| 汉沽区| 嘉黎县| 兴城市| 景德镇市| 顺平县| 修文县| 峡江县| 咸丰县| 阳江市| 溧阳市| 宽甸| 永昌县| 邵阳县| 内乡县| 和顺县| 潮安县| 迁西县| 嘉禾县| 西乡县| 太谷县| 新昌县| 武鸣县| 平远县| 安宁市| 泸定县| 武强县| 屏边| 长春市| 邛崃市| 井研县| 利辛县| 东乡县| 石台县| 金阳县| 望奎县| 葵青区| 昆山市|