本發(fā)明總的來說涉及在處理器中回收寄存器的處理,以及更加具體地涉及提供使得回收寄存器更加有效的從溢出空閑列表以滿足時序標準的處理器和方法。
背景技術(shù):
處理器包含一組寄存器以存儲寫操作的結(jié)果。由處理器的標準指令集架構(gòu)(ISA)(比如的x86架構(gòu)等)的子集執(zhí)行寫操作。在包括x86的許多架構(gòu)中,執(zhí)行寫操作的指令可以引用一組預(yù)定義的結(jié)構(gòu)寄存器中的至少一個用于存儲結(jié)果。更近的處理器配置采用物理寄存器文件(PRF)重命名方式,其使得處理器設(shè)計更簡明和使能更方便的設(shè)計擴展。具有PRF重命名的處理器包含用于存儲操作結(jié)果的物理寄存器文件(PRF)和用于映射結(jié)構(gòu)寄存器到物理寄存器的重命名結(jié)構(gòu)。PRF是一組物理寄存器,每個使用一組索引(或其它)中的唯一一個來標識。如在此使用的術(shù)語“索引”指的是標識或者可以以別的方式用于訪問相應(yīng)物理寄存器的任何類型的索引、地址值或者標識符等。重命名結(jié)構(gòu)將由指令引用的結(jié)構(gòu)寄存器映射到相應(yīng)物理寄存器的索引。
在軟件程序或者應(yīng)用的執(zhí)行期間,當遇到引用結(jié)構(gòu)寄存器用于存儲指令的結(jié)果的指令時,處理器從物理寄存器索引的“空閑列表(free list)”當中分配可用的物理寄存器,附加或者指派所選的物理寄存器索引給該指令,并更新一重命名結(jié)構(gòu)以推測性地將結(jié)構(gòu)寄存器映射到所選的物理寄存器。當執(zhí)行指令時,該索引用于訪問物理寄存器以存儲結(jié)果。當回退該指令時,該索引可以移動到該重命名結(jié)構(gòu)的回退部分(或者另外移動到另一個不同的重命名結(jié)構(gòu))以將物理寄存器映射到指定的結(jié)構(gòu)寄存器。該物理到結(jié)構(gòu)寄存器映射可以由后續(xù)的讀操作使用,直到覆寫或者重新定義為止。不需要單獨一組物理結(jié)構(gòu)寄存器;代替地,將結(jié)構(gòu)標識符等簡單地映射到物理寄存器。因為簡單地移動或者重新映射索引而不是不得不在寄存器之間移動值,所以PRF重命名方式更有效率。
處理器每個發(fā)射用于執(zhí)行的指令分配多至一個物理寄存器。比如讀指令等的許多指令不存儲信息因此不需要分配寄存器。在通常情況下,對于每個被回退的指令,多至一個寄存器可以被去分配或者回收到空閑列表中。超級標量處理器能夠并行地執(zhí)行多個指令,且因此應(yīng)該配置為能夠在每個處理器時鐘周期將整數(shù)“N”個物理寄存器回收到空閑列表中的N回退的微架構(gòu)。PRF重命名方式引入指令的大小問題,其中寄存器以高速率被回收。作為示例,具有不同大小的引用相同結(jié)構(gòu)寄存器的多個指令盡管被分配不同物理寄存器,以使得多個物理寄存器牽涉相同結(jié)構(gòu)寄存器。最終,當引用相同結(jié)構(gòu)寄存器的讀指令被發(fā)射時,可以合并一個或多個這種物理寄存器。后面可以在引用相同結(jié)構(gòu)寄存器的覆寫指令的回退時回收多至兩個寄存器。當在一個處理器周期中回收多于一個物理寄存器時存在溢出情況。
理論上,N回退的微架構(gòu)需要配置為每個處理器周期回退多至2N個寄存器以滿足時序限制。否則,處理器可能暫停(stall)一個或多個處理器周期以處理寄存器回收溢出。
技術(shù)實現(xiàn)要素:
根據(jù)本發(fā)明一個實施例的處理器包括物理寄存器、重排序緩沖器、主空閑列表、從空閑列表、主回收電路和從回收電路。每個物理寄存器由物理寄存器索引標識。重排序緩沖器包括多個指令條目,其中每個條目存儲多至兩個物理寄存器索引,用于回收相應(yīng)的物理寄存器。重排序緩沖器在每個處理器周期中回退多至N個指令。主和從空閑列表均包括N個輸入端口且每個存儲物理寄存器的相應(yīng)物理寄存器索引。在主空閑列表中存儲其相應(yīng)物理寄存器索引的物理寄存器將用于分配給正在發(fā)射的指令。當正在回退指令時,主回收電路將在指令的指令條目中存儲的第一物理寄存器索引路由到主空閑列表的N個輸入端口之一。當回退指令時,從回收電路將在指令的指令條目中存儲的第二物理寄存器索引路由到從空閑列表的N個輸入端口之一。
處理器可以包括傳送電路,該傳送電路對于其中主回收電路回收與N相差差值數(shù)目個物理寄存器的任何給定處理器周期,將從空閑列表中存儲的多至該差值數(shù)目的物理寄存器索引傳送到主空閑列表的可用輸入端口。處理器可以包括分配器,該分配器當發(fā)射在其回退時要回收相應(yīng)的第一物理寄存器的指令時將第一物理寄存器索引存儲至所述指令的所述指令條目中,且另外當發(fā)射在其回退時要回收相應(yīng)的第二物理寄存器的指令時將第二物理寄存器索引存儲至所述指令的所述指令條目中。每個指令條目可以存儲用于第一物理寄存器索引的第一有效值和用于第二物理寄存器索引的第二有效值,其中分配器設(shè)置第一有效值為指示當存儲第一物理寄存器索引時的有效性和設(shè)置第二有效值為指示當存儲第二物理寄存器索引時的有效性。
主回收電路可以從指令條目中對應(yīng)于正在被回退的多至N個指令的指令條目中,選擇多至N個第一物理寄存器索引中的有效第一物理寄存器索并將其轉(zhuǎn)發(fā)到相應(yīng)的N個回收路徑上。處理器可以進一步包括選擇電路,該選擇電路接收和提供多至N個第一物理寄存器索引中的有效第一物理寄存器索引到主空閑列表的N個輸入端口中的相應(yīng)輸入端口。主回收電路可以聲明N個選擇信號,該選擇信號指示N個回收路徑中的哪個提供多至N個第一物理寄存器索引中的有效第一物理寄存器索引中的相應(yīng)一個。處理器可以進一步包括傳送控制器,該傳送控制器接收N個選擇信號的中有效選擇信號,基于N和指示有效值的有效選擇信號的實際數(shù)目之間的差值確定差值數(shù)目,并且擷取多至所述差值數(shù)目的從空閑列表中存儲的多至差值數(shù)目的物理寄存器索引,并將其經(jīng)由N個傳送路徑傳送到選擇電路。從回收電路可以從指令條目中對應(yīng)于正在被回退的多至N個指令的指令條目中,選擇多至N個第二物理寄存器索引中的有效第二物理寄存器索引并將其轉(zhuǎn)發(fā)到耦合到從空閑列表的N個輸入端口的相應(yīng)N個回收路徑上。
根據(jù)本發(fā)明一個實施例的在處理器中回收物理寄存器的方法包括:由重排序緩沖器在每個處理器周期中回退多至N個指令,和對于正在回退的每個指令,當在指令回退時,第一物理寄存器標識為要回收時,將相應(yīng)第一物理寄存器索引路由到主空閑列表,以及當在指令回退時,第二物理寄存器標識為要回收時,將相應(yīng)第二物理寄存器索引路由到從空閑列表,和將其相應(yīng)物理寄存器索引存儲在主空閑列表中的物理寄存器分配給正在發(fā)射的指令。
該方法可以包括:當在處理器周期中回收小于N個第一物理寄存器時,確定N和正在回收到主空閑列表的第一物理寄存器的實際數(shù)目之間的差值數(shù)目,和將從空閑列表中存儲的多至該差值數(shù)目的物理寄存器索引傳送到主空閑列表。該方法可以包括:對于正在發(fā)射用于執(zhí)行的每個指令,當發(fā)射在其回退時要回收第一物理寄存器的指令時,將第一物理寄存器索引存儲至所述重排序緩沖器的指令條目中,以及當發(fā)射在其回退時要回收第二物理寄存器的指令時,將第二物理寄存器索引存儲至所述重排序緩沖器的所述指令條目中。該方法可以包括對于指令條目中存儲的每個物理寄存器索引更新有效位。該方法可以包括將每個有效第一物理寄存器索引轉(zhuǎn)發(fā)到N個回收路徑中的相應(yīng)一個上,和從N個轉(zhuǎn)發(fā)路徑當中選擇攜帶有效第一物理寄存器索引和將每個有效第一物理寄存器索引提供到主空閑列表的輸入端口的轉(zhuǎn)發(fā)路徑。該方法可以包括將每個有效第二物理寄存器索引轉(zhuǎn)發(fā)到從空閑列表的N個輸入端口中的相應(yīng)一個。
附圖說明
本發(fā)明的益處、特征和優(yōu)點將關(guān)于以下描述和附圖而變得更好地理解,在附圖中:
圖1是包括根據(jù)本發(fā)明一個實施例實現(xiàn)的物理寄存器回收系統(tǒng)的超標量、流水線處理器的簡化框圖;
圖2是圖示根據(jù)本發(fā)明一個實施例的通過圖1的RAT的指令的條目(指令條目)到圖1的ROB中的物理寄存器分配,和物理寄存器索引回收到空閑列表的簡化框圖;
圖3是與根據(jù)一個實施例的空閑列表和ROB的附加細節(jié)一起的,在ROB和空閑列表之間提供用于回收物理寄存器的、根據(jù)本發(fā)明一個實施例的圖1的回收系統(tǒng)的更具體的框圖;和
圖4是圖示比如由圖1的處理器執(zhí)行的,根據(jù)本發(fā)明一個實施例的在處理器中回收物理寄存器的方法的流程圖。
具體實施方式
發(fā)明人認識到其中以比通常更高速率回收物理寄存器的利用PRF重命名方式的處理器的時序問題。他因此開發(fā)了具有包括主空閑列表、從空閑列表和回收電路的空閑列表配置的處理器。在回收兩個物理寄存器的指令的回退時,相應(yīng)的第一物理寄存器索引路由到主空閑列表且相應(yīng)的第二物理寄存器索引路由到從空閑列表。以該方式,從空閑列表處理回收的寄存器的溢出。當處理器每個處理器周期回退多至預(yù)定數(shù)目N個指令時,可以回收多至2N個物理寄存器,其中多至N個物理寄存器被回收到主空閑列表且多至N個物理寄存器被回收到從空閑列表。在本發(fā)明的另一實施例中,處理器進一步包括傳送電路。在其中小于N個物理寄存器被回收到主空閑列表的任何給定處理器周期中,傳送電路可以將多至差值數(shù)目的物理寄存器索引從從空閑列表傳送到主空閑列表,其中該差值數(shù)目是N和回收到主空閑列表的物理寄存器的實際數(shù)目之間的差值。
圖1是包括根據(jù)本發(fā)明一個實施例實現(xiàn)的物理寄存器回收系統(tǒng)的超標量、流水線處理器100的簡化框圖。如在此使用的術(shù)語“處理器”指的是任何類型的處理單元,包括微處理器、中央處理單元(CPU)、處理核心、微控制器等。如在此使用的術(shù)語“處理器”還包括任何類型的處理器配置,比如集成在包括并入片上系統(tǒng)(SOC)內(nèi)的處理單元的芯片或集成電路(IC)上處理單元等。
處理器100包括高速緩存指令集架構(gòu)(ISA)(比如x86指令集架構(gòu)等)的宏指令的指令高速緩存102。預(yù)期另外的或者替換的指令集架構(gòu)。處理器100包括接收并翻譯宏指令為微指令的指令翻譯器104。微指令然后被提供給寄存器別名表(RAT)106,該RAT 106生成微指令依賴性并以程序順序發(fā)射微指令到保留站(RS)108和到重排序緩沖器(ROB)110。處理器100可以是每個處理器周期發(fā)射多至N個微指令的“N”發(fā)射核心,其中N是正整數(shù)。ROB 110存儲從RAT 106發(fā)射的每個指令的條目并保證指令的按次序回退。從RAT 106發(fā)射的微指令通??梢员环Q為微指令,但是更一般地在這里被簡稱為“指令”。
被另外稱為分派器的RS 108分派指令到多個執(zhí)行單元112中適當?shù)囊粋€。在一個實施例中,處理器100是無序(Out Of Order,OOO)處理器,其中RS 108可以在準備好時而不是嚴格地以程序次序分派指令到執(zhí)行單元112。雖然未特別地示出,但是執(zhí)行單元112可以包括比如整數(shù)算術(shù)/邏輯單元(ALU)等的一個或多個整數(shù)執(zhí)行單元、比如包括單指令多數(shù)據(jù)(SIMD)執(zhí)行單元(諸如MMX和SSE單元等)的一個或多個浮點執(zhí)行單元、存儲器次序緩沖器(MOB)等。寫指令的任何結(jié)果被經(jīng)由回寫(WB)路徑寫到物理寄存器文件(PRF)114內(nèi)的多個物理寄存器116中被分配的一個。與寫指令對應(yīng)的ROB 110的條目存儲到物理寄存器的索引用于寫結(jié)果。PRF 114包括整數(shù)“P”個物理寄存器116,每個由多個物理寄存器索引PR1、PR2、...、PRP(PR1-PRP)中相應(yīng)的一個標識、指向或者以其他方式引用或者尋址。提供空閑列表118以存儲標識空閑和可用于分配給由RAT 106發(fā)射的指令的那些物理寄存器的物理寄存器索引的列表。
RAT 106包括分配器120和重命名表122。重命名表122交叉引用或者映射結(jié)構(gòu)寄存器到PRF 114的物理寄存器。當寫操作引用一結(jié)構(gòu)寄存器用于存儲結(jié)果時,分配器120查閱空閑列表118并選擇和分配一個物理寄存器。分配器120然后將分配的物理寄存器的索引存儲到與寫指令中引用的結(jié)構(gòu)寄存器對應(yīng)的重命名表122的條目中。以該方式,物理寄存器最初映射到該結(jié)構(gòu)寄存器和該寫指令兩者。如在這里進一步描述的,即使后續(xù)寫指令引用相同結(jié)構(gòu)寄存器時,對于每個新的寫指令也分配不同物理寄存器。以該方式,一個結(jié)構(gòu)寄存器可以在任何給定時刻映射到多個物理寄存器。
用于處理器100的ISA,比如圖示的配置中的x86,使用允許對每一結(jié)構(gòu)寄存器進行部分寫的復(fù)雜操作數(shù)尺寸。x86結(jié)構(gòu)包括可以以多個尺寸訪問的若干結(jié)構(gòu)寄存器。64位版本包括寄存器標號RAX、RBX、RCX、RDX等,(64位使用前綴為‘R’的標號),其中使用這些64位標號中的任意的寫操作是到整個寄存器的寫。這些寄存器分別包括32位標號EAX、EBX、ECX、EDX等,(32位使用前綴為‘E’的標號)以及分別包括16位標號AX、BX、CX、DX等,(16位僅使用寄存器名而沒有前綴的字母)。也可以定義8位標號,但是每一典型地是寫到16位版本的最高有效字節(jié)(MSB)或者最低有效字節(jié)(LSB)。重命名表122可以包括用于映射到一個或多個物理寄存器的任何給定寄存器或者其部分的相應(yīng)結(jié)構(gòu)標識符。
假定處理器100包括一“N-回退”核心,其中ROB 110可以在任何給定處理器周期中回退多至N個指令,且N個指令中的每一個可以回收多至2個物理寄存器,則ROB 110在任何給定處理器周期期間可以回收多至2N個物理寄存器。作為示例,考慮以下指令模式:
μop1)ADD EAX,imm32
μop2)ADD AX,imm16
……
μop3)ADD EAX,imm32
其中每一指令圖示為微指令或者微操作(μop)。為第一ADD指令(μop1)分配第一物理寄存器,且所分配的物理寄存器映射到EAX結(jié)構(gòu)寄存器。作為示例,假定第一物理寄存器由索引PR1標識。為簡單起見,該第一物理寄存器可以被稱為“PR1”。第一ADD指令μop1指令處理器100將指令內(nèi)提供的32位立即數(shù)“imm32”加到32位寄存器EAX的現(xiàn)有內(nèi)容。稱為PR2的第二物理寄存器被分配用于第二ADD指令(μop2)并映射到AX結(jié)構(gòu)寄存器。該第二ADD指令μop2指令處理器100將指令內(nèi)提供的16位立即數(shù)“imm16”加到16位寄存器AX的現(xiàn)有內(nèi)容。但是,注意到結(jié)構(gòu)寄存器AX是EAX結(jié)構(gòu)寄存器的最低有效部分(下半部),因此實際上EAX寄存器的內(nèi)容的一部分會被μop2修改。第一和第二物理寄存器都不保存EAX結(jié)構(gòu)寄存器的完整內(nèi)容;代替地,每個中存儲一部分。稱為PR3的第三物理寄存器分配用于第三ADD指令(μop3)并映射到同一結(jié)構(gòu)寄存器EAX。第三ADD指令與第一相同,其中指令內(nèi)提供的另一(或者同一)立即數(shù)“imm32”被加到32位寄存器EAX的現(xiàn)有內(nèi)容。
兩個物理寄存器PR1和PR2被分配用于前兩個指令μop1和μop2以分別保存它們各自的結(jié)果。響應(yīng)于第三指令μop3,前兩個指令的結(jié)果由第三寄存器PR3的內(nèi)容覆寫。在第三指令μop3的回退時,可以回收前兩個寄存器PR1和PR2。因此,如果在任何給定處理器周期中回退N個指令,其中每個指令(例如,類似第三ADD指令μop3的指令)可以回收多至2個寄存器,則ROB 110在N個指令的回退階段期間可以回收多至2N個物理寄存器。
ROB 110包括每個處理器周期回退多至N個指令的回退電路124,其將物理寄存器回收回到空閑列表118。注意到在許多處理器周期中,可以回退小于N個指令,包括不回退指令的情況。如上所述,對于回退每個回收2個物理寄存器的N個指令的情況,回退電路124可以回收多至2N個物理寄存器。注意到在許多處理器周期中,回收小于2N個物理寄存器,甚至包括不回收物理寄存器的情況。雖然如此,處理器100處理回退多于N個和多至2N個物理寄存器的最壞情況條件以緩解回退時序壓力。如在這里進一步描述的,包括回收系統(tǒng)126,且空閑列表118配置為全體地保證用于最壞情況條件的回收帶寬以避免時序問題和保持處理器性能?;赝穗娐?24將正在回退的物理寄存器的物理寄存器索引轉(zhuǎn)發(fā)到回收系統(tǒng)126,然后當回收相應(yīng)的物理寄存器時,回收系統(tǒng)126將物理寄存器的物理寄存器索引傳送到空閑列表118,如在這里進一步描述的。
圖2是圖示根據(jù)本發(fā)明一個實施例的RAT 106對物理寄存器的分配、ROB 110中的指令的條目(指令條目),和到空閑列表118的物理寄存器索引回收的簡化框圖。RAT 106公式化每個接收的指令的指令條目202,且每個指令條目202包括用于存儲與指令一起攜帶的信息的字段以用于執(zhí)行和回退。指令條目202包括標識指令和/或指令類型的第一字段201。如果指令是寫指令或者存儲信息的任何其他指令,則指令條目202包括用于存儲物理寄存器索引的字段203,其為擁有該指令條目202的指令標識一個PRF 114內(nèi)的用于存儲信息的相應(yīng)的物理寄存器116。即使對于不分配物理寄存器的那些指令也包括字段203。指令條目202包括另一字段204,用于存儲一第一物理寄存器索引,其標識在指令的回退時要回收的物理寄存器116的相應(yīng)的第一個。指令條目202還包括另一字段208,用于存儲一第二物理寄存器索引,其標識在指令的回退時要回收的物理寄存器116的相應(yīng)的第二個。
當在其回退時要回收第一和/或第二物理寄存器的指令由RAT 106發(fā)射時,例如,當?shù)谌鼳DD指令μop3由RAT 106發(fā)射時,分配器120僅將有效物理寄存器索引存儲到字段204和/或208中。在許多或者甚至大多數(shù)情況下,在一個指令的回退時回收0或者1個物理寄存器。與字段204相關(guān)聯(lián)地提供有效字段206以指示字段204是否存儲有效條目,且另一有效字段210與字段208相關(guān)聯(lián)以指示字段208是否存儲有效條目。有效條目指的是在擁有指令條目202的指令的回退時將回收相應(yīng)的第一/第二物理寄存器??梢园ǜ郊拥淖侄魏椭档遣皇境龌蛘哌M一步描述。每一字段示出具有名稱或者相應(yīng)的助記符等以傳達存儲的信息,其中實際信息是二進制或者數(shù)字數(shù)等。RAT 106可以包括負責(zé)定義或者填充未示出的其他字段的其他邏輯(未示出)。分配器120負責(zé)填充與物理寄存器116的分配和回收相關(guān)聯(lián)的字段。
理解RAT 106中的指令條目202的許多字段可以保持空白或者以其他方式未定義。例如,對于不需要物理寄存器來寫入結(jié)果的讀類型指令,字段203可以保持空白或者未定義,雖然可以定義單獨的物理寄存器(未示出)用于存儲從系統(tǒng)存儲器等(未示出)讀取的數(shù)據(jù)。在指令的回退時不回收物理寄存器的情況下,兩個字段204和208都可以保持空白或者未定義,且字段206和210以分別指示字段204和208是無效的“無效”值標記。在一個實施例中,字段206和210是1個比特,其中邏輯“0”指示相應(yīng)的物理寄存器字段的無效性且邏輯“1”指示有效性。在許多指令情況下,沒有要回收的物理寄存器。在許多其他寫類型指令中,僅回收一個物理寄存器,則字段204保存相應(yīng)的物理寄存器索引,字段206被標記為有效的,不定義字段208且更新字段210以反映字段208無效。通常,絕大多數(shù)指令在回退時回收0或者1個物理寄存器,且僅很少指令在回退時回收兩個物理寄存器。
圖示的指令條目202通常表示先前提到的第三ADD指令μop3。在該情況下,分配器120分配物理寄存器PR3用于寫結(jié)果的存儲,以使得在字段203中存儲PR3。分配器120配置為標識出任何在該指令的回退時要回收的物理寄存器116中的任一。對于指令μop3,在μop3的回退時要回收分別指派給指令μop1和μop2的物理寄存器PR1和PR2。因此,分配器120將物理寄存器索引PR1存儲到字段204(示為PR1(REC))中,且字段206標記有效值V1以指示字段204保存有效值。此外,分配器120將物理寄存器索引PR2存儲到字段208中(示為PR2(REC))且字段210標記有效值V2以指示字段208保存有效值。
如上所述,當指令準備好執(zhí)行時,RAT 106發(fā)射指令到RS 108和ROB 110。如圖2所示,RAT 106中的指令條目202被作為相應(yīng)的條目212壓入ROB 110中。示出的指令條目202和212具有類似的格式,其可以或者可以不是用于給定配置的情況。雖然如此,壓入ROB 110中的指令條目212包括用于指令μop3的字段204、206、208和210(或者具有相同信息的類似字段)。當指令μop3準備好被回退時,回退電路124選擇指令μop3,且字段204、206、208和210被從ROB 110輸出到回收系統(tǒng)126。
空閑列表118配置有兩個不同空閑列表,示出為主空閑列表214和從空閑列表216,其存儲已回收的或者尚未使用的物理寄存器索引?;厥障到y(tǒng)126將第一物理寄存器索引PR1轉(zhuǎn)發(fā)到主空閑列表214并將第二物理寄存器索引PR2轉(zhuǎn)發(fā)到從空閑列表216。分配器120僅從主空閑列表214為要從RAT 106發(fā)射的指令分配空閑和可用的物理寄存器,且不從從空閑列表216分配。如上所述,回退電路124在任何給定處理器周期中回收多至N個指令,以使得多至N個物理寄存器索引可以回收到主空閑列表214且多至N個物理寄存器索引可以回收到從空閑列表216。如在這里更全面地描述的,主和從空閑列表214和216每個包括N個輸入端口以同時接收多至N個物理寄存器索引。但是,在大多數(shù)處理器周期中,回收的物理寄存器小于2N個。在大多數(shù)可實踐的配置中,2N個物理寄存器的回收的情況很少發(fā)送,以使得主空閑列表214通常比從空閑列表216更快地被填充。主空閑列表214由新分配清空;新分配不由空閑列表216提供。從空閑列表216通過將其溢出的索引傳送到主空閑列表214從而清空,如在這里進一步描述的。
示出從從空閑列表216通過回收系統(tǒng)126到主空閑列表214的傳送路徑218,用于將在從空閑列表216中存儲的物理寄存器索引傳送到主空閑列表214。當在任何給定的處理器周期中小于N個物理寄存器索引被回收到主空閑列表214時,可能發(fā)生物理寄存器索引從從空閑列表216到主空閑列表214的傳送。當在一處理器周期中小于N個物理寄存器索引被回收到主空閑列表214時,如果從空閑列表216中存在存儲的物理寄存器索引,則如在這里進一步描述的,可以經(jīng)由傳送路徑218將來自從空閑列表216的物理寄存器索引填充到主空閑列表214的未使用的或者可用的端口。在一個實施例中,即使在其中一個或多個物理寄存器索引正在相同處理器周期中回收到從空閑列表216的處理器周期期間,也是這樣。以該方式,在對于一個或多個正在回退的指令正在回收兩個物理寄存器的任何給定處理器周期中,在從空閑列表216中存儲每個回退的指令的第二物理寄存器索引。此外,在任何給定處理器周期中,通過從N減去正在回收到主空閑列表214的物理寄存器的實際數(shù)目(A)來確定差值數(shù)目(D),或者D=N-A。在任何給定處理器周期中,多至D個物理寄存器索引可以從從空閑列表216被傳送到主空閑列表214。
圖3是與根據(jù)一個實施例的附帶空閑列表118和ROB 110的更多細節(jié)的,在ROB 110和空閑列表118之間提供的用于回收物理寄存器116的回收系統(tǒng)126的更具體的框圖。示出ROB 110包括多個指令條目212,每個與如圖2所示的指令條目212相同地配置。每個指令條目212包括用于存儲用于對于每個相應(yīng)的指令要回收的任何物理寄存器的物理寄存器索引和相應(yīng)的有效性值的字段204、206、208和210?;赝穗娐?24執(zhí)行回退周期,其中該回退電路124在每個處理器周期中從對應(yīng)于準備好回退的指令的多個指令條目212當中選擇N個條目。示出由R1、R2、...、RN標記的箭頭訪問的所選的條目。ROB 110包括用于字段204、206、208和210的一組輸出端口301,其中每個輸出端口301為選擇用于回退的每個指令條目輸出多至N個索引或者多至N個相應(yīng)的有效值。具體來說,來自所選的字段204的多至N個第一物理寄存器索引在第一端口P1上輸出,來自所選的字段206的多至N個相應(yīng)的有效值在第二端口P2上輸出,來自所選的字段208的多至N個第二物理寄存器索引在第三端口P3上輸出,且來自所選的字段210的多至N個相應(yīng)的有效值在第四端口P4上輸出。
回收系統(tǒng)126包括主回收電路302、從回收電路320和傳送電路304。分別來自ROB 110的輸出端口P1和P2的來自所選的字段204和206的物理寄存器索引和相應(yīng)的有效值被提供給可以為了時序目的與回退電路124通信的主回收電路302的相應(yīng)的輸入。主回收電路302評估從端口P2接收的N個有效值中的每一個以確定(如果有的話)從端口P1接收到的N個第一物理寄存器索引的哪些是有效的。沿著N個主回收路徑306中相應(yīng)的主回收路徑306,將N個第一物理寄存器索引的任何有效的第一物理寄存器索引轉(zhuǎn)發(fā)到傳送電路304的選擇電路310的N個輸入中相應(yīng)的輸入。主回收電路302進一步沿著相應(yīng)的信號路徑308輸出提供來控制選擇電路310的輸入的N個VALID_SEL信號,其用于標識和選擇經(jīng)由主回收路徑306從主回收電路304接收到的有效的第一物理寄存器索引。
在圖示的配置中,選擇電路310配置為N個2輸入多路復(fù)用器(MUX)M1、M2、...、MN(M1-MN),其中每個主回收路徑306提供給MUX M1-MN中相應(yīng)的一個的第一輸入。一組N個傳送路徑330(即,圖2中的傳送路徑218)中的每一個提供給選擇電路310的N個MUX的相應(yīng)的一個的第二輸入。預(yù)期選擇電路310的其它替換實現(xiàn)。如圖所示,每個VALID_SEL信號可以提供給N個MUX的相應(yīng)的一個的控制輸入。當不選擇主回收路徑306時,代替地選擇傳送路徑330中相應(yīng)的一個。選擇電路310將在N個輸出端口312上的多至N個有效的物理寄存器索引輸出到主空閑列表214的N個輸入端口313。
示出主空閑列表214包括主控制電路(M_CTL)314,其用于經(jīng)由輸入端口313接收物理寄存器索引,并將接收的物理寄存器索引排隊到相應(yīng)的主隊列316中。主隊列316可以以任何適當?shù)姆绞綄崿F(xiàn)來用于存儲物理寄存器索引的自由列表,例如,先入先出(FIFO)隊列等,堆棧配置,環(huán)形緩沖器等。主隊列316可以以存儲任何適當數(shù)目的物理寄存器索引的任何適當?shù)拇笮∨渲谩T谝粋€實施例中,主隊列316存儲多至整數(shù)P個物理寄存器索引以匹配PRF 116的大小。主控制電路314配置為將物理寄存器索引輸入到主隊列316中和輸出到主隊列316之外。例如,分配器120接口連接主控制電路314以用于對于要發(fā)射的新指令分配多至M個物理寄存器(對于M-發(fā)射核心)。在大多數(shù)情況下,M等于N,也就是RAT 106的發(fā)射率等于ROB 110的回退率。但是,本發(fā)明不限于M等于N的情況。
分別來自ROB 110的輸出端口P3和P4的來自所選的字段208和210的物理寄存器索引和相應(yīng)的有效值被提供給可以為了時序目的與回退電路124通信的從回收電路320的相應(yīng)的輸入。從回收電路320評估從端口P4接收的N個有效值的每一個以確定(如果有的話)從端口P3接收到的N個第二物理寄存器索引中的哪些有效。N個第二物理寄存器索引中的任何有效的第二物理寄存器索引被沿著N個從回收路徑322中相應(yīng)的從回收路徑路由到從空閑列表216的N個輸入中相應(yīng)的輸入。
從空閑列表216以與主空閑列表214類似的方式配置,其包括用于經(jīng)由從回收路徑322接收第二物理寄存器索引并將所接收的第二物理寄存器索引排隊到相應(yīng)的從隊列326中的從控制電路(S_CTL)324。與主隊列316類似,從隊列326可以以任何適當?shù)姆绞綄崿F(xiàn)來用于存儲物理寄存器索引的空閑列表,諸如例如,先入先出(FIFO)隊列等,堆棧配置,環(huán)形緩沖器等。從隊列326的大小可以與主隊列316相同。但是注意到從隊列326的大小可以減小因為其僅需要包括溢出(或者第二)物理寄存器索引。例如,在當每個處理器周期回收2N個物理寄存器時的最壞情況下,僅一半的寄存器索引提供給從隊列326,以使得如果組合的總數(shù)至少是物理寄存器116的總數(shù)則其可以是主隊列316的大小的一半。因此,如果主隊列316具有包括多至P個條目的大小,則從隊列326僅需要包括多至P/2個條目,雖然本發(fā)明不限于該配置。與主控制電路314類似地配置從控制電路324以將物理寄存器索引輸入到從隊列326中和輸出到從隊列326之外。
分配器120不從從空閑列表216分配。代替地,傳送電路304包括傳送控制器328,該傳送控制器328從主回收電路302接收N個VALID_SEL信號以標識N個主回收路徑306中的哪些包括有效的第一物理寄存器索引和哪些不包括。如果N個VALID_SEL信號指示N個主回收路徑306中的每一個攜帶有效的物理寄存器索引,則傳送控制器328不傳送從隊列326中存儲的任何物理寄存器索引。但是,在一個或多個和多至N個主回收路徑306是空的或者以其他方式可用于接收數(shù)據(jù)的情況下,傳送控制器328確定可用回收路徑的差值數(shù)目D,并與從控制電路324通信以訪問從隊列326中存儲的多至D個物理寄存器索引。從從隊列326訪問的物理寄存器索引在N個傳送路徑330中相應(yīng)的傳送路徑上提供(即,圖2中的傳送路徑218),并提供給選擇電路310的相應(yīng)的輸入。如上所述,N個傳送路徑330中的每一個被提供給選擇電路310的N個MUX的第二輸入。當相應(yīng)的主回收路徑306不攜帶來自主回收電路302的有效的第一物理寄存器索引時,VALID_SEL信號已經(jīng)從主回收電路302輸出以選擇N個傳送路徑330中相應(yīng)的傳傳送路徑。
理解可能存在許多處理器周期,其中至少一個回收和/或傳輸路徑不包括有效的物理寄存器索引。例如,雖然可能ROB 110的輸出端口P3中的每一個包括有效的第二物理寄存器索引,在大多數(shù)處理器周期中,來自ROB 110的輸出端口P3的至少一個并且甚至多至所有輸出是無效的。在一個實施例中,從回收電路320與從控制電路324通信以標識從回收路徑322中的哪些包括有效的物理寄存器索引且哪些不包括。在該情況下,從控制電路324簡單地忽略不攜帶有效的物理寄存器索引的任意從回收路徑322。在替代實施例中,從回收電路320配置為將“偽”、無效或者另外的“空”值插入到不攜帶有效的物理寄存器索引的從回收路徑322上,且從控制電路324配置為忽略這種無效或者偽值。
同樣地,當小于N個主回收路徑306包括有效的物理寄存器索引,且從隊列326不包括足夠數(shù)目的存儲的物理寄存器索引時,傳送控制器328傳送小于差值數(shù)目D的有效物理寄存器索引到主空閑列表214。在該情況下,至少一個和多至所有N個輸出端口312不向主空閑列表214提供有效的物理寄存器索引。在一個實施例中,傳送控制器328與主控制電路314通信以標識N個輸入313中的哪些包括有效的物理寄存器索引且哪些不包括,以使得主控制電路314簡單地忽略其N個輸入313中的不攜帶有效物理寄存器索引的任意。在替代實施例,傳送控制器328配置為將“偽”無效或者另外的“空”值插入到選擇了但是不提供來自從隊列326的物理寄存器索引的傳送路徑330上,且主控制電路324配置為忽略這種無效或者偽值。
以該方式,理解當在任何給定處理器周期中正在回退的一個或多個指令包括標識要回收的相應(yīng)物理寄存器的第二物理寄存器索引時,從空閑列表216接收任何溢出物理寄存器索引。第二物理寄存器索引中的每一個都被認為是溢出索引。在小于N個第一物理寄存器正在被回收到主空閑列表214的任意處理器周期中,傳送電路304由從空閑列表216中存儲的任何溢出索引來填充此平衡。例如,傳送控制器328確定N與正在從ROB 110回收到主空閑列表214的實際數(shù)目之間的差值D,且將多至D個物理寄存器索引從從空閑列表216傳送到主空閑列表214。因此從空閑列表216使得溢出索引能夠被快速地回收以減輕回退時序壓力,同時在被傳送用于最終的重新分配。傳送控制器328和從空閑列表216與主回收電路302協(xié)同操作以保證在最壞情況條件下的回收帶寬,以使得最終所有回收的物理寄存器索引被轉(zhuǎn)發(fā)或者傳送到主隊列316以用于后續(xù)分配。
數(shù)目“N”根據(jù)特定實現(xiàn)的性能選擇,且可以對于不同配置不同。在一個非限制實施例中,例如,M=4且N=4,以使得每個處理器周期發(fā)射和/或回退多至4個指令且每個處理器周期可以回收多至8個物理寄存器。理解M和N每個可以是任何其他適當?shù)臄?shù)目。
圖4是圖示比如由處理器100執(zhí)行的,根據(jù)本發(fā)明一個實施例的在處理器中回收物理寄存器的方法的流程圖。如上所述,RAT 106每個時鐘周期一次發(fā)射多至N個指令用于執(zhí)行。第一塊402指示對于發(fā)射以用于執(zhí)行的每個指令的處理。在下一塊404,如果在指令的回退時不存在要回收的物理寄存器,則操作返回到塊402。但是,如果確定在指令的回退時要回收第一物理寄存器,則操作進行到下一塊406,其中第一物理寄存器的相應(yīng)的物理寄存器索引存儲到指令條目的第一字段中。如先前對于指令條目202所示的,提供字段204以用于存儲標識在指令的回退時要回收的物理寄存器116的第一個的第一物理寄存器索引。第一條目被標記為有效(例如,通過設(shè)置有效字段206)。在下一塊408,如果在指令的回退時不要回收第二物理寄存器,則操作返回到塊402。但是,如果確定在指令的回退時還要回收第二物理寄存器,則操作進行到下一塊410,其中第二物理寄存器的相應(yīng)的物理寄存器索引存儲到指令條目的第二字段中。如先前對于指令條目202所示的,提供字段208以用于存儲標識在指令的回退時要回收的物理寄存器116的第二個的第二物理寄存器索引。第二條目被標記為有效(例如,通過設(shè)置有效字段210)。對于發(fā)射用于執(zhí)行的每個指令操作在塊402-410之間循環(huán)。
同時,如由塊412指示的,ROB 110可以在任何給定處理器周期中回退多至N個指令。對于每個時鐘周期回退的每個指令,操作進行到塊414以確定在指令條目內(nèi)指示的指令的回退時是否要回收第一物理寄存器。如果不,則操作循環(huán)回到塊412以用于被回退的下一指令。如果如在塊414確定的要回收第一物理寄存器,則操作進行到塊416,其中來自指令條目的第一字段的第一物理寄存器的相應(yīng)物理寄存器索引被路由到主空閑列表214。操作然后進行到塊418以確定在指令條目內(nèi)指示的指令的回退時是否要回收第二物理寄存器。如果不,則操作循環(huán)回到塊412以用于被回退的下一指令。如果如在塊418確定的要回收第二物理寄存器,則操作進行到塊420,其中來自指令條目的第二字段的第二物理寄存器的相應(yīng)物理寄存器索引被路由到從空閑列表216。操作然后進行到塊422以確定在當前時鐘周期中是否正在回退另一指令。如果是的話,操作循環(huán)回到塊412以對于當前時鐘周期中正在回退的下一指令再次開始回收過程。
當如在塊422確定的在當前時鐘周期中不再有正在回退的指令時,則操作進行到塊424以確定回收到主空閑列表214的物理寄存器是否小于N個。如果否,則操作進行到塊412以開始下一時鐘周期的處理。但是,如果如在塊424確定在當前時鐘周期中回收到主空閑列表214的物理寄存器小于N個,則操作進行到塊426,其中確定N和回退到主空閑列表214的物理寄存器的實際數(shù)目之間的差值,且然后將多至該差值的數(shù)目的物理寄存器索引從從空閑列表216傳送到主空閑列表214。操作然后返回到塊412以用于下一時鐘周期。
已經(jīng)呈現(xiàn)前述描述以使本領(lǐng)域技術(shù)人員能夠做出和使用如在特定應(yīng)用請和其需要的背景內(nèi)提供的本發(fā)明。雖然已經(jīng)參考其某些優(yōu)選的版本相當詳細地描述了本發(fā)明,其他版本和變化是可能的且被預(yù)期的。對優(yōu)選實施例的各種修改對本領(lǐng)域技術(shù)人員將是顯而易見的,且在這里定義的通用原理可以應(yīng)用于其他實施例。例如,在這里描述的電路可以以任何適當?shù)姆绞綄崿F(xiàn),包括邏輯器件或者電路等。
本領(lǐng)域技術(shù)人員應(yīng)該認識到,他們可以容易地使用公開的概念和特定實施例作為設(shè)計或者修改其他結(jié)構(gòu)的基礎(chǔ),以進行本發(fā)明的相同目,而不脫離本發(fā)明的精神和保護范圍。因此,本發(fā)明不意在限于在這里示出和描述的特定的實施例,而是根據(jù)按照在這里公開的原理和新穎特征的最寬范圍。