亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

在回退階段期間合并部分寫結(jié)果的系統(tǒng)和方法

文檔序號(hào):10724534閱讀:403來源:國知局
在回退階段期間合并部分寫結(jié)果的系統(tǒng)和方法
【專利摘要】一種處理器,包括物理寄存器文件、重命名表、映射邏輯、尺寸跟蹤邏輯和合并邏輯。重命名表映射對(duì)應(yīng)較大索引和較小索引的結(jié)構(gòu)寄存器。映射邏輯檢測(cè)部分寫指令,其中部分寫指令所指定的結(jié)構(gòu)寄存器已經(jīng)被重命名表內(nèi)的現(xiàn)有條目為先前寫指令標(biāo)示,且先前寫指令的寫尺寸大于部分寫指令,則映射邏輯分配第一物理寄存器并以第一物理寄存器的第一物理寄存器索引更新現(xiàn)有條目的較小物理寄存器索引位置。如果先前寫指令的寫寸較大,則尺寸跟蹤邏輯為部分寫指令提供合并指示。合并邏輯響應(yīng)于合并指示在部分寫指令的回退期間合并部分寫指令的結(jié)果與第二物理寄存器。
【專利說明】
在回退階段期間合并部分寫結(jié)果的系統(tǒng)和方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明一般地涉及解決處理器中所存儲(chǔ)的結(jié)果尺寸問題的物理寄存器重命名,以 及更加具體地涉及在回退(retire)階段合并后續(xù)的部分寫的結(jié)果與先前的較大寫的結(jié)果。
【背景技術(shù)】
[0002] 處理器包含一組寄存器以存儲(chǔ)寫操作的結(jié)果。由處理器的標(biāo)準(zhǔn)指令集架構(gòu)(ISA) (比如Inter的x86架構(gòu)等)的子集執(zhí)行寫操作。在包括X86的許多架構(gòu)中,執(zhí)行寫操作的指 令可以引用的一組預(yù)定義的結(jié)構(gòu)寄存器(architecture register)中的至少一個(gè)用于存儲(chǔ) 結(jié)果。越來越多新的處理器配置采用了物理寄存器文件(Physical Register File,PRF)重 命名方式,其使得處理器設(shè)計(jì)更簡明和實(shí)現(xiàn)更方便的設(shè)計(jì)擴(kuò)展。具有PRF重命名的處理器包 含用于存儲(chǔ)操作結(jié)果的物理寄存器文件(PRF)和用于映射結(jié)構(gòu)寄存器到物理寄存器 (physical register)的重命名結(jié)構(gòu)。PRF是一組物理寄存器,每一個(gè)使用一組索引或者指 針等中的唯一一個(gè)來標(biāo)識(shí)。重命名結(jié)構(gòu)將一個(gè)指令引用的結(jié)構(gòu)寄存器映射到相應(yīng)的物理寄 存器的索引。
[0003] 在軟件程序或者應(yīng)用的執(zhí)行期間,當(dāng)遇到一個(gè)指令,其引用一結(jié)構(gòu)寄存器存儲(chǔ)指 令的結(jié)果,處理器從物理寄存器索引的"空閑列表"(Freelist)當(dāng)中分配可用的物理寄存 器,附加或者以其他方式分配所選的索引給該指令,并更新重命名結(jié)構(gòu)的一推測(cè)性部分以 將該結(jié)構(gòu)寄存器映射到所選的物理寄存器。當(dāng)執(zhí)行指令時(shí),該索引用于訪問物理寄存器以 存儲(chǔ)結(jié)果。當(dāng)回退指令時(shí),該索引可能被移動(dòng)到該重命名結(jié)構(gòu)的一回退部分(或者另外移動(dòng) 到一不同的重命名結(jié)構(gòu))以將物理寄存器映射到指定的結(jié)構(gòu)寄存器。該物理到結(jié)構(gòu)寄存器 映射可以由后續(xù)的讀操作使用直到重寫或者重新定義為止。不需要單獨(dú)的一組物理結(jié)構(gòu)寄 存器;代替地,僅簡單地將結(jié)構(gòu)標(biāo)識(shí)符等映射到物理寄存器。因?yàn)楹唵蔚匾苿?dòng)或者重新映射 索引而不是必須在寄存器之間移動(dòng)存儲(chǔ)值,所以PRF重命名方式更有效率。
[0004] 當(dāng)架構(gòu)使用允許僅修改整個(gè)寄存器的一部分的部分寫操作的復(fù)雜操作數(shù)尺寸時(shí), 會(huì)出現(xiàn)定尺寸(sizing)問題。例如,x86架構(gòu)使用這種復(fù)雜操作數(shù)尺寸,雖然本發(fā)明不限于 x86架構(gòu)。作為復(fù)雜操作數(shù)尺寸的示例,可以執(zhí)行寫指令以修改64位寄存器的8位、16位、32 位或者64位,其中每一較大尺寸合并較小的寫尺寸(因?yàn)閺募拇嫫鞯南嗤膊块_始引用)。 即使引用同一結(jié)構(gòu)寄存器,每一指令也被分配一個(gè)單獨(dú)的物理寄存器。寫到同一結(jié)構(gòu)寄存 器的相同尺寸或者大于在先寫操作的后續(xù)寫操作在該系統(tǒng)中被適當(dāng)?shù)靥幚恚挥眠M(jìn)一步 修改。但是,寫到同一結(jié)構(gòu)寄存器的小于在先寫操作的后續(xù)寫操作則會(huì)造成引用同一結(jié)構(gòu) 寄存器的一后續(xù)讀操作的問題,因?yàn)槿绻猛唤Y(jié)構(gòu)寄存器的讀操作的源大于該后續(xù)寫 操作,則其沒有保存完整的結(jié)果。
[0005] 多源相關(guān)技術(shù)可以解決該問題,但是需要PRF的讀端口至少加一倍。另一可能的解 決方案是在讀指令之前合并物理寄存器中存儲(chǔ)的值,但是這要求在同一周期檢測(cè)到發(fā)射的 指令的所有源,這對(duì)于復(fù)雜情況可能減小發(fā)射帶寬。該初步合并解決方案可能導(dǎo)致另外的 無效率且可能強(qiáng)加關(guān)鍵的時(shí)序問題。

【發(fā)明內(nèi)容】

[0006] 根據(jù)一個(gè)實(shí)施例的處理器包括物理寄存器文件、重命名表、映射邏輯、尺寸跟蹤邏 輯和合并邏輯。物理寄存器文件包括多個(gè)物理寄存器,每一個(gè)由相應(yīng)的物理寄存器索引標(biāo) 識(shí)。重命名表包括多個(gè)條目,多個(gè)條目中的每個(gè)存儲(chǔ)結(jié)構(gòu)標(biāo)識(shí)符、較大物理寄存器索引和較 小物理寄存器索引,其中結(jié)構(gòu)標(biāo)識(shí)符標(biāo)識(shí)多個(gè)結(jié)構(gòu)寄存器其中之一,其中結(jié)構(gòu)標(biāo)識(shí)符標(biāo)識(shí) 多個(gè)結(jié)構(gòu)寄存器其中之一。映射邏輯探測(cè)部分寫指令,其中部分寫指令所指定的結(jié)構(gòu)寄存 器已經(jīng)被重命名表內(nèi)的現(xiàn)有條目為先前寫指令標(biāo)示,且先前寫指令的寫尺寸大于部分寫指 令,其中,映射邏輯分配第一物理寄存器并以第一物理寄存器的第一物理寄存器索引更新 現(xiàn)有條目的較小物理寄存器索引。如果先前寫指令的寫尺寸大于部分寫指令,則尺寸跟蹤 邏輯為部分寫指令設(shè)置合并指示。合并邏輯響應(yīng)于合并指示在部分寫指令的回退期間合并 部分寫指令的結(jié)果與第二物理寄存器。第二物理寄存器由現(xiàn)有條目的較大物理寄存器索引 標(biāo)識(shí)。
[0007] 尺寸跟蹤邏輯可以訪問現(xiàn)有條目的最后寫尺寸位置以確定讀指令是否指定源為 映射到先前寫指令和部分寫指令兩者的結(jié)構(gòu)寄存器,其中,最后寫尺寸位置存儲(chǔ)最后寫指 令的寫尺寸,其中最后寫指令是先前寫指令和部分寫指令中較晚的一個(gè)。如果讀指令的源 的尺寸大于最后寫指令的寫尺寸,則尺寸跟蹤邏輯確定讀指令是否指定源為映射到先前寫 指令和部分寫指令兩者的結(jié)構(gòu)寄存器。
[0008] 如果尺寸跟蹤邏輯確定讀指令指定源為映射到先前寫指令和部分寫指令兩者的 結(jié)構(gòu)寄存器,則尺寸跟蹤邏輯標(biāo)記讀指令為自串行化并設(shè)置讀指令為依賴于先前寫指令。。
[0009] 處理器可以進(jìn)一步包括重命名切換邏輯,其在部分寫指令回退時(shí)將第一物理寄存 器變換到回退的非結(jié)構(gòu)狀態(tài),并在先前寫指令回退時(shí)將第二物理寄存器變換到回退的結(jié)構(gòu) 狀態(tài)。重命名切換邏輯可以當(dāng)后續(xù)指令重新映射在重命名表的現(xiàn)有條目中標(biāo)識(shí)的結(jié)構(gòu)寄存 器時(shí),回收第一和第二物理寄存器。
[0010] 處理器可以進(jìn)一步包括部分寫緩沖器,其在部分寫指令的寫回期間存儲(chǔ)部分寫指 令的結(jié)果,且其中,合并邏輯從部分寫緩沖器讀取部分寫指令的結(jié)果。
[0011]先前寫指令的寫尺寸存儲(chǔ)在現(xiàn)有條目的較大寫尺寸位置中,且其中,映射邏輯訪 問較大寫尺寸位置以確定是否更新現(xiàn)有條目的較小物理寄存器索引。此外,先前寫指令的 寫尺寸存儲(chǔ)在現(xiàn)有條目的較大寫尺寸位置中,且其中,尺寸跟蹤邏輯訪問較大寫尺寸位置 以確定是否提供合并指示。合并指示存儲(chǔ)為用于部分寫指令的重新排序緩沖器的條目中的 合并位。
[0012] -種在處理器中解決尺寸問題的合并部分寫結(jié)果的方法,包括:從寄存器文件為 第一寫指令分配第一物理寄存器,并且映射第一物理寄存器到結(jié)構(gòu)寄存器;從寄存器文件 為引用結(jié)構(gòu)寄存器的第二寫指令分配第二物理寄存器;比較第二寫指令的寫尺寸與第一寫 指令的寫尺寸;根據(jù)比較的結(jié)果映射第二物理寄存器到結(jié)構(gòu)寄存器;如果第二寫指令的寫 尺寸小于第一寫指令的寫尺寸,則為第二寫指令提供合并指示;和在第二寫指令回退時(shí),響 應(yīng)于合并指示將第二寫指令的結(jié)果合并到第一物理寄存器中。
[0013] 該方法可以包括在用于結(jié)構(gòu)寄存器的重命名表的條目的較大位置中存儲(chǔ)第一索 弓丨。該方法可以包括如果第二寫指令的寫尺寸小于第一寫指令的寫尺寸,則在條目的較小 位置中存儲(chǔ)第二索引,以及如果第二寫指令的寫尺寸不小于第一寫指令的寫尺寸,則在條 目的較大位置中存儲(chǔ)第二索引。該方法可以包括讀取映射到第二寫指令的重命名表的條目 中存儲(chǔ)的第二寫指令的尺寸值。該方法可以包括當(dāng)讀指令指定源為映射到第一寫指令和第 二寫指令兩者的結(jié)構(gòu)寄存器時(shí),標(biāo)記讀指令為自串行化和使得讀指令依賴于第一寫指令。
[0014] 方法可以進(jìn)一步包括在第二寫指令回退時(shí),將第一物理寄存器轉(zhuǎn)變到已回退非結(jié) 構(gòu)狀態(tài);和在第一寫指令回退時(shí),將第二物理寄存器轉(zhuǎn)變到已回退結(jié)構(gòu)狀態(tài)。該方法可以包 括當(dāng)后續(xù)指令重新映射結(jié)構(gòu)寄存器時(shí)回收第一和第二物理寄存器。
[0015] 該方法可以進(jìn)一步包括如果第二寫指令的寫尺寸小于第一寫指令的寫尺寸,則在 第二寫指令的寫回期間將第二寫指令的結(jié)果存儲(chǔ)到部分寫緩沖器中,并且在合并期間從部 分寫緩沖器讀取第二寫指令的結(jié)果。該方法可以包括存儲(chǔ)第一寫指令的寫尺寸,以及比較 第二寫指令的寫尺寸與所存儲(chǔ)的第一寫指令的寫尺寸。該方法可以包括存儲(chǔ)合并指示為在 用于第二寫指令的重新排序緩沖器的條目中的合并位。
【附圖說明】
[0016] 本發(fā)明的益處、特征和優(yōu)點(diǎn)將關(guān)于以下描述和附圖而變得更好理解,在附圖中:
[0017] 圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例實(shí)現(xiàn)的超標(biāo)量、流水線處理器的簡化框圖;
[0018] 圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的圖1的重命名表的圖;
[0019] 圖3是圖示根據(jù)一個(gè)實(shí)施例的在圖1的處理器的不同處理階段期間每一指令μορ?、 μ〇ρ2和μ〇ρ3的操作的一系列圖;
[0020] 圖4是圖示根據(jù)一個(gè)實(shí)施例的比如在RAT階段期間在圖1的RAT內(nèi)的在前端的操作 和比如在回退階段期間在圖1的R0B內(nèi)的在后端的操作以執(zhí)行尺寸分析、合并操作、指令依 賴性確定以及物理寄存器的狀態(tài)的框圖;
[0021] 圖5是圖示由圖4的重命名切換邏輯控制的圖1的物理寄存器文件的每個(gè)物理寄存 器的狀態(tài)的狀態(tài)圖;和
[0022] 圖6是圖示根據(jù)本發(fā)明一個(gè)實(shí)施例的在寫指令的回退階段期間合并部分寫結(jié)果的 方法的流程圖。
【具體實(shí)施方式】
[0023]本發(fā)明人已經(jīng)認(rèn)識(shí)到由使用復(fù)雜操作數(shù)尺寸的指令集架構(gòu)引起的PRF重命名方式 的定尺寸問題。他因此開發(fā)了存儲(chǔ)部分寫結(jié)果和在回退階段合并結(jié)果的系統(tǒng)和方法。重命 名表中的每一結(jié)構(gòu)條目包括一較大寫索引位置和一較小寫索引位置。在一些實(shí)施例中,每 一結(jié)構(gòu)條目進(jìn)一步包括一較大寫尺寸位置和一最后寫尺寸位置。映射邏輯對(duì)每一寫指令分 配一物理寄存器,并相應(yīng)地更新重命名表。尺寸跟蹤邏輯監(jiān)控重命名表并為一部分寫指令 提供合并指示,該部分寫指令將較小的部分寫到與一先前的較大寫指令相同的結(jié)構(gòu)寄存 器。在一些實(shí)施例中,提供一部分寫緩沖器以臨時(shí)存儲(chǔ)僅修改完整寄存器尺寸的一部分的 部分寫指令的結(jié)果。當(dāng)?shù)诙逸^小尺寸的寫指令回退時(shí),如果有合并指示提供給該第二寫 指令,則在回退階段中,合并邏輯合并第二且較小尺寸的寫指令的結(jié)果與較大寫操作的物 理寄存器。讀取該結(jié)構(gòu)寄存器的后續(xù)指令將自身標(biāo)記為自串行化(Self-Seriali Zing,SS), 意味著其被標(biāo)記為將最后被分派用于執(zhí)行,且如果該讀指令指定的源為同時(shí)映射到該較小 寫指令和該較大寫指令兩者的結(jié)構(gòu)寄存器,則設(shè)置其依賴于該較大寫操作。
[0024]在更特定的配置中,映射邏輯將對(duì)第一寫指令分配的物理寄存器的索引存儲(chǔ)到一 指定的結(jié)構(gòu)條目的一較大寫索引位置中。當(dāng)映射邏輯檢測(cè)到對(duì)同一結(jié)構(gòu)寄存器的第二、后 續(xù)且較小尺寸的寫指令時(shí),其將對(duì)第二寫指令分配的另一物理寄存器的索引存儲(chǔ)到該指定 的結(jié)構(gòu)條目的一較小寫索引位置中。在更特定的配置中,映射邏輯進(jìn)一步將該第一寫指令 的相應(yīng)的尺寸存儲(chǔ)到該指定的結(jié)構(gòu)條目的一較大寫尺寸位置中。以該方式,尺寸跟蹤邏輯 通過比較該第二寫指令的尺寸與該較大寫尺寸位置中存儲(chǔ)的該第一寫指令的尺寸來檢測(cè) 定尺寸問題,且然后如果該第二寫指令的尺寸小于該第一寫指令的尺寸,則提供上述合并 指示,以使得在該第二寫指令的回退時(shí)將部分寫結(jié)果與結(jié)構(gòu)寄存器合并。在更特定的配置 中,映射邏輯進(jìn)一步將一"最后寫指令"的相應(yīng)的尺寸存儲(chǔ)到該指定的結(jié)構(gòu)條目的一最后寫 尺寸位置中,其中該"最后寫指令"是該第一寫指令和該第二寫指令中較晚的那一個(gè)。
[0025]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例實(shí)現(xiàn)的超標(biāo)量、流水線處理器100的簡化框圖。如在 此使用的術(shù)語"處理器"指的是任何類型的處理單元,包括微處理器、中央處理單元(CPU)、 處理核心、微控制器等。如在此使用的術(shù)語"處理器"還包括任何類型的處理器配置,比如在 芯片上集成的處理單元或者包括并入片上系統(tǒng)(S0C)內(nèi)的處理單元的集成電路(1C)等。
[0026] 處理器100包括高速緩存指令集架構(gòu)(ISA)(比如,x86指令集架構(gòu)等)的宏指令的 指令高速緩存102。預(yù)期另外的或者替換的指令集架構(gòu)。處理器100包括接收并翻譯宏指令 為微指令的指令翻譯器104。然后將微指令提供給寄存器別名表(RAT)106,該寄存器別名表 (RAT) 106生成微指令依賴性并以程序次序發(fā)射微指令到保留站(RS) 108和重新排序緩沖器 (ROB) 110,該重新排序緩沖器(ROB) 110為每個(gè)從RAT 106發(fā)射的指令存儲(chǔ)一條目(Entry)并 保證指令的按次序的回退。對(duì)于微指令示出了示例性條目117,示為"μορχ"。從RAT 106發(fā)射 的微指令可以典型地被稱為微指令,但是更一般地在這里被簡稱為"指令"。
[0027] RS 108,另外地被稱為分派器,分派指令到多個(gè)執(zhí)行單元112中適當(dāng)?shù)囊粋€(gè)。雖然 未特別地示出,執(zhí)行單元112可以包括一個(gè)或多個(gè)整數(shù)執(zhí)行單元,比如整數(shù)算術(shù)/邏輯單元 (ALU)等,一個(gè)或多個(gè)浮點(diǎn)執(zhí)行單元,比如包括單指令多數(shù)據(jù)(SIMD)執(zhí)行單元,比如MMX和 SSE單元等,存儲(chǔ)器次序緩沖器(Μ0Β),等等。寫指令的任何結(jié)果被經(jīng)由寫回(Write Back, WB)路徑寫到物理寄存器文件(PRF)114內(nèi)的物理寄存器。與寫指令對(duì)應(yīng)的ROB 110條目存儲(chǔ) 到用于寫結(jié)果的物理寄存器的索引。在一些實(shí)施例中,每一部分寫指令的R0B 110條目另外 存儲(chǔ)一個(gè)合并位(M),其當(dāng)部分寫指令通過RAT 106且該合并指示MI被聲明(asserted)時(shí)由 RAT 106設(shè)置。在一個(gè)實(shí)施例中,進(jìn)一步包括一部分寫緩沖器113用于在寫回期間臨時(shí)存儲(chǔ) 部分寫結(jié)果,以緩解在部分寫指令的回退期間進(jìn)行合并時(shí)請(qǐng)求使用PRF 114的讀端口的壓 力。在其他實(shí)施例中,如果PRF 114的讀端口足夠,則可以省略部分寫緩沖器113,且僅在PRF 114中存儲(chǔ)部分寫結(jié)果。在一個(gè)實(shí)施例中,即使可能沒不指示合并也在部分寫緩沖器113中 存儲(chǔ)每一部分寫指令的結(jié)果。如在這里進(jìn)一步描述的,R0B 110包括合并邏輯115,該合并邏 輯115響應(yīng)于被置位的合并位,將部分寫結(jié)果合并到PRF 114內(nèi)的物理寄存器中。
[0028] RAT 106包括重命名表116、映射邏輯118、空閑列表120和尺寸跟蹤邏輯122。重命 名表116交叉引用或者映射結(jié)構(gòu)寄存器到PRF 114的物理寄存器??臻e列表120存儲(chǔ)相應(yīng)于 未分配的物理寄存器的索引的列表。當(dāng)寫操作引用一個(gè)結(jié)構(gòu)寄存器用于存儲(chǔ)結(jié)果時(shí),映射 邏輯118查閱空閑列表120并選擇和分配一個(gè)物理寄存器。映射邏輯118然后將分配的物理 寄存器的索引存儲(chǔ)到與該寫指令引用的結(jié)構(gòu)寄存器對(duì)應(yīng)的重命名表116的條目中。以該方 式,物理寄存器最初映射到該結(jié)構(gòu)寄存器和該寫指令兩者。如在這里另外描述的,重命名表 116的每一條目包括用于存儲(chǔ)對(duì)應(yīng)到同一結(jié)構(gòu)寄存器的較小的和較大的寫的物理寄存器索 引的位置。尺寸跟蹤邏輯122檢測(cè)一合并條件是否滿足,在該合并條件中,第一物理寄存器 (和/或部分寫緩沖器113,如果提供部分寫緩沖器113的話)中存儲(chǔ)的部分寫結(jié)果要與映射 到與第一物理寄存器相同的結(jié)構(gòu)寄存器的第二物理寄存器合并。當(dāng)檢測(cè)到這樣的合并條件 時(shí),尺寸跟蹤邏輯122聲明用于部分寫指令的MI信號(hào)且RAT 106在ROB 110中設(shè)置相應(yīng)的條 目的Μ位。注意到,該Μ位可以在被推入ROB 110條目中的指令信息中預(yù)先設(shè)置好,或者可以 在ROB 110的條目內(nèi)直接設(shè)置。在一個(gè)實(shí)施例中,當(dāng)比較部分寫指令的寫尺寸與先前且較大 的寫指令的寫尺寸,且比較結(jié)果是前者較小時(shí),則滿足前述合并條件。
[0029]圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的重命名表116的圖。用于處理器100的ISA,比如圖 示的配置中的x86,允許使用復(fù)雜操作數(shù)尺寸對(duì)每一結(jié)構(gòu)寄存器進(jìn)行部分寫。x86結(jié)構(gòu)包括 可以以多個(gè)尺寸訪問的若干結(jié)構(gòu)寄存器。64位版本包括寄存器標(biāo)號(hào)RAX、RBX、RCX、RDX等, (64位使用前綴為'R'的標(biāo)號(hào)),其中使用這些64位標(biāo)號(hào)中的任意的寫操作是到整個(gè)寄存器 的寫。這些寄存器分別包括32位標(biāo)號(hào)EAX、EBX、ECX、EDX等,(32位使用前綴為'E'的標(biāo)號(hào))以 及分別包括16位標(biāo)號(hào)4乂、8乂、0乂、0乂等,(16位僅使用寄存器名而沒有前綴的字母)。也可以定 義8位標(biāo)號(hào),但是每一典型地是寫到16位版本的最高有效字節(jié)(MSB)或者最低有效字節(jié) (LSB)且不進(jìn)一步描述。重命名表116中的結(jié)構(gòu)標(biāo)識(shí)符僅需要包括單個(gè)引用以用于任何給定 寄存器或者其部分。
[0030] 在討論重命名表116的新穎的配置之前,首先描述傳統(tǒng)的配置。在傳統(tǒng)的配置中, 每一表?xiàng)l目的推測(cè)性部分僅包括用于存儲(chǔ)所分配的物理寄存器的索引的單個(gè)位置,且結(jié)構(gòu) 標(biāo)識(shí)符可以標(biāo)識(shí)包括部分寄存器標(biāo)號(hào)的每一寄存器。在傳統(tǒng)的配置的操作中,映射邏輯118 檢測(cè)引用結(jié)構(gòu)寄存器的寫指令,選擇并分配用于存儲(chǔ)寫操作的結(jié)果的物理寄存器,并查閱 重命名表116以確定對(duì)于該結(jié)構(gòu)寄存器是否有條目已經(jīng)存在。如果還未存在條目,則映射邏 輯118分配重命名表116中的新條目,并將結(jié)構(gòu)寄存器標(biāo)識(shí)符寫到新條目的ARCH位置中。映 射邏輯118然后將所分配的物理寄存器的索引寫到新條目或者更新的條目的推測(cè)性部分 中。RETIRE(回退)位置的值尚未確定。假定寫指令以相同的結(jié)構(gòu)和物理寄存器映射回退,則 映射邏輯118通過將物理寄存器的索引從該結(jié)構(gòu)寄存器的推測(cè)性位置移動(dòng)或者以其他方式 復(fù)制到回退位置來改變結(jié)構(gòu)映射。注意到,各種配置可以包括不同推測(cè)性和回退的重命名 表,但是操作實(shí)質(zhì)上類似。
[0031] 當(dāng)一系列指令采用其中多個(gè)物理寄存器存儲(chǔ)同一結(jié)構(gòu)寄存器的各部分的復(fù)雜操 作數(shù)尺寸時(shí),傳統(tǒng)配置面臨挑戰(zhàn)。作為示例,考慮以下指令模式:
[0032] μορ?) MOV ΕΑΧ,ΕΒΧ
[0033] μ〇ρ2) MOV AX,CX
[0034] μ〇ρ3) MOV ESP,EAX
[0035]其中每一指令圖示為微指令或者微操作(μορ)。為第一 MOV指令(μορ?)分配第一物 理寄存器,且所分配的物理寄存器映射到ΕΑΧ結(jié)構(gòu)寄存器。第一 M0V指令μορ?指示處理器100 將32位寄存器ΕΒΧ的內(nèi)容移動(dòng)到32位寄存器ΕΑΧ中。在實(shí)際操作中,分配給ΕΒΧ的物理寄存器 的內(nèi)容移動(dòng)到為ΕΑΧ分配的物理寄存器中。為第二M0V指令(μ〇ρ2)分配第二物理寄存器,且 第二物理寄存器映射到ΑΧ結(jié)構(gòu)寄存器。第二MOV指令μ〇ρ2指示處理器100將16位寄存器CX的 內(nèi)容移動(dòng)到16位寄存器AX中。在實(shí)際操作中,內(nèi)容根據(jù)映射從一個(gè)物理寄存器移動(dòng)到另一 物理寄存器。但是,注意到結(jié)構(gòu)寄存器AX是結(jié)構(gòu)寄存器EAX的最低有效部分(下半部),以使 得有效地EAX結(jié)構(gòu)寄存器的內(nèi)容意在被μ〇ρ2修改。因此,第一和第二物理寄存器都不保存 ΕΑΧ結(jié)構(gòu)寄存器的完整內(nèi)容;代替地,每個(gè)中存儲(chǔ)一部分。為第三MOV指令(μ〇ρ3)分配第三物 理寄存器,且第三物理寄存器映射到ESP結(jié)構(gòu)寄存器(例如,棧指針寄存器)。第三MOV指令意 在將EAX的內(nèi)容移動(dòng)到ESP中。但是,EAX的內(nèi)容在兩個(gè)不同物理寄存器之間分布,以使得μ 〇ρ3不能從單個(gè)物理寄存器取出EAX的完整內(nèi)容。已經(jīng)使用各種方法來解決該情況,比如多 源依賴技術(shù)和預(yù)合并操作,但是這些方法具有顯著的缺點(diǎn)。
[0036]如在這里描述的在回退階段期間合并部分寫結(jié)果的系統(tǒng)和方法解決了所存儲(chǔ)的 結(jié)果尺寸問題的情況而不引入相同缺點(diǎn)。如在這里進(jìn)一步描述的對(duì)于重命名表116及處理 器100的其他部分操作的修改。重命名表116的每一行形成對(duì)應(yīng)于一個(gè)被引用的結(jié)構(gòu)寄存器 的條目,且每個(gè)條目包括用于存儲(chǔ)該條目的相應(yīng)值的多個(gè)存儲(chǔ)位置。對(duì)于每一條目,第一列 (在左邊)包括用于存儲(chǔ)該條目的結(jié)構(gòu)寄存器(ARCH)標(biāo)識(shí)符的位置,接下來三列包括用于存 儲(chǔ)用于該條目的推測(cè)性操作值的位置,且最后一列提供用于存儲(chǔ)用于該條目的操作的 RETIRE階段的物理寄存器索引的位置。這些推測(cè)性操作值包括用于存儲(chǔ)較大的寫指令的物 理寄存器索引的LARGER("較大")位置和用于存儲(chǔ)較小的寫指令的物理寄存器索引的 SMALLER "較小")位置。在一些實(shí)施例中,這些推測(cè)性操作值進(jìn)一步包括用于存儲(chǔ)指示該條 目的最后寫尺寸的尺寸值的LAST WRITE SIZE("最后寫尺寸")位置。
[0037]如圖所示,第一條目202將由索引PRA標(biāo)識(shí)的物理寄存器(或者簡稱為物理寄存器 PRA)映射到結(jié)構(gòu)寄存器EBX,且第二條目204將物理寄存器PRB映射到結(jié)構(gòu)寄存器ECX。這些 映射可以是已經(jīng)完成的在先指令的結(jié)果,其中條目202和204的RETIRE位置分別存儲(chǔ)索引 PRA和PRB,其指示EBX映射到物理寄存器PRA和ECX映射到物理寄存器PRB。第三條目206和第 四條目208圖示如上所述的MOV指令μ〇ρ1、μ〇ρ2和μ〇ρ3的結(jié)果。響應(yīng)于μορ?,映射邏輯118分 配重命名表116中的條目206并將標(biāo)識(shí)符ΕΑΧ存儲(chǔ)到ARCH位置中以標(biāo)識(shí)用于32位配置的結(jié)構(gòu) 寄存器EAX。對(duì)于64位配置,標(biāo)識(shí)符可以代替地是RAX。映射邏輯118查閱空閑列表120,分配 使用索引PRC訪問的可用的物理寄存器,和在條目206的LARGER位置中存儲(chǔ)索引PRC。映射邏 輯118進(jìn)一步檢測(cè)寫的尺寸為32位,并在條目206的LAST WRITE SIZE位置中存儲(chǔ)尺寸值 SZ1,其指示最后寫尺寸(其是迄今為止的第一寫尺寸)是32位。此時(shí)條目206的SMALLER和 RET IRE位置尚未定義。以該方式,由索引PRC標(biāo)識(shí)的物理寄存器推測(cè)性地映射到結(jié)構(gòu)寄存器 EAX和到第一 M0V指令μορ?。
[0038]第二M0V指令μ〇ρ2引用結(jié)構(gòu)寄存器ΑΧ,其是結(jié)構(gòu)寄存器ΕΑΧ的最低有效部分。映射 邏輯118查閱空閑列表120,分配使用索引PRD訪問的可用的物理寄存器,和當(dāng)映射邏輯118 檢測(cè)到第二M0V指令μ〇ρ2( 16位)的寫尺寸小于第一M0V指令μορ? (32位)時(shí)在條目206的 SMALLER位置中存儲(chǔ)索引PRD。注意到如果映射邏輯118檢測(cè)到第二M0V指令μ〇ρ2的寫尺寸 (例如,如果μ〇ρ2的寫尺寸是32位)大于或者等于第一M0V指令μ〇ρ1(32位),則在條目206的 LARGER位置中存儲(chǔ)PRD以覆寫索引PRC。也就是,條目206的LARGER位置總是記錄引用同一結(jié) 構(gòu)寄存器EAX的最大的寫指令的尺寸。映射邏輯118進(jìn)一步將條目206的LAST WRITE SIZE中 的值SZ1更新為值SZ2,其指示引用結(jié)構(gòu)寄存器EAX的寫指令的最后寫尺寸是16位。如圖所 示,SZ1由SZ2替代。條目206的RETIRE位置仍然尚未定義。響應(yīng)于μ〇ρ3,映射邏輯118分配重 命名表116中的條目208,并將標(biāo)識(shí)符ESP存儲(chǔ)到ARCH位置中以標(biāo)識(shí)結(jié)構(gòu)寄存器ESP。映射邏 輯118查閱空閑列表120,分配使用索引PRE訪問的可用的物理寄存器,和在條目208的 LARGER位置中存儲(chǔ)索引PRE。映射邏輯118進(jìn)一步檢測(cè)寫的尺寸為32位,并在條目208的LAST WRITE SIZE中存儲(chǔ)尺寸值SZ3。
[0039] 與傳統(tǒng)的配置類似,第一和第二物理寄存器PRC和PRD都不保存EAX結(jié)構(gòu)寄存器的 完整內(nèi)容。最后的第三MOV指令μ〇ρ3不能從單個(gè)物理寄存器取出EAX的完整內(nèi)容。如果第二 MOV指令μ〇ρ2的寫尺寸小于或者等于第一 MOV指令μορ?,則尺寸跟蹤邏輯122監(jiān)視重命名表 116是否檢測(cè)到一合并條件,即檢測(cè)第二MOV指令μ〇ρ2的寫尺寸是否小于或者等于第一 MOV 指令μορ?。先前的較大的寫結(jié)果要存儲(chǔ)在物理寄存器PRC中,然而后續(xù)的較小的寫結(jié)果要存 儲(chǔ)在物理寄存器PRD中。因此尺寸跟蹤邏輯122提供用于第二M0V指令μ〇ρ2的合并指示MI。當(dāng) μ〇ρ2通過RAT階段時(shí),當(dāng)被指示時(shí),合并指示存儲(chǔ)為對(duì)第二M0V指令μ〇ρ2分配的R0B 110的相 應(yīng)的條目中的Μ位。
[0040] 當(dāng)該部分寫指令回退時(shí),如果R0B條目的Μ位是被置位的話則會(huì)引起合并操作。如 在這里進(jìn)一步描述的,在執(zhí)行μ〇ρ3之前,合并邏輯115檢測(cè)R0B條目的Μ位被置位,并合并物 理寄存器PRD與物理寄存器PRC的部分結(jié)果。在一個(gè)實(shí)施例中,如果檢測(cè)到μ〇ρ2的寫尺寸小 于與LARGER位置對(duì)應(yīng)的寫指令的尺寸,則在μ〇ρ2的寫回階段期間,部分結(jié)果存儲(chǔ)在物理寄 存器PRD中,或者部分寫緩沖器113(如果提供的話)中,或者兩者中。在提供部分寫緩沖器 113以緩解對(duì)于PRF 114的讀端口的需要的壓力的實(shí)施例中,當(dāng)進(jìn)行合并時(shí),合并邏輯115從 部分寫緩沖器113讀取μ〇ρ2的部分寫指令的結(jié)果,而不是從PRD讀取。在不提供部分寫緩沖 器113的其他實(shí)施例中,在μ〇ρ2的寫回階段期間部分結(jié)果僅存儲(chǔ)到PRF 114的物理寄存器 PRD中。在這種實(shí)施例中,當(dāng)進(jìn)行合并操作時(shí),合并邏輯115從PRF 114中的物理寄存器PRD讀 取部分寫指令μ〇ρ2的結(jié)果。要合并的部分寫結(jié)果的尺寸由在R0B 110的相應(yīng)的條目中提供 的部分寫指令μ〇ρ2本身指示。
[0041] 圖3是圖示根據(jù)一個(gè)實(shí)施例的處理器100的不同處理階段期間每一指令μ0ρ1、μ0ρ2 和μ〇ρ3的操作的一系列圖。圖中的RAT階段302示出由RAT 106執(zhí)行的操作和結(jié)果。每一指令 包括多個(gè)字段,比如指令標(biāo)識(shí)符ID、源標(biāo)識(shí)符SRC、目的地標(biāo)識(shí)符DST和自串行化字段SS。雖 然未示出,但是還可以包括一合并字段,用于存儲(chǔ)合并指示位M。尺寸跟蹤邏輯122檢測(cè)其中 讀指令讀取未包括在單個(gè)物理寄存器內(nèi)而是代替地分布到多個(gè)物理寄存器中的值的定尺 寸問題,以使得需要在讀操作之前將值合并在一起。如果是這樣的話,尺寸跟蹤邏輯122通 過將SS字段中的值聲明為邏輯"Γ來標(biāo)記指令為自串行化??梢园ǖ皇境隽硗獾淖侄?。 此外,任何給定指令可以不使用所有提供的字段。例如,一個(gè)存儲(chǔ)立即數(shù)到寄存器或者存儲(chǔ) 器位置中的存儲(chǔ)指令可以包括目的地值但不包括源值。
[0042] 如在RAT階段302中所示的,μορ?的源是映射至IjEBX的物理寄存器PRA,且目的地是 映射到EAX的物理寄存器PRC^opl不標(biāo)記為自串行化以使得它的SS值是"Ο'μ〇ρ2的源是映 射到ECX的物理寄存器PRB,且目的地是映射到ΕΑΧ的物理寄存器PRD。此外,μ〇ρ2不標(biāo)記為自 串行化以使得它的SS值是"0" 4〇p3的源是映射到ΕΑΧ的物理寄存器PRC,且目的地是映射到 ESP的物理寄存器PRE。如果尺寸跟蹤邏輯122從重命名表116檢測(cè)到μ〇ρ3的源的尺寸(32位) 大于LAST WRITE SIZE位置的值SZ2(16位),則確定讀指令μ〇ρ3指定它的源ΕΑΧ為映射到μ op2和μορ?兩者的目的地。也就是,兩個(gè)不同物理寄存器PRC和PRD保存指令μ〇ρ3要讀取的值 而不是僅最后寫指令μ〇ρ2的物理寄存器PRD。在那種情況下,尺寸跟蹤邏輯122標(biāo)記μ〇ρ3為 自串行化以使得它的SS值是"Γ。當(dāng)μ〇ρ3被發(fā)射到RS 108時(shí),在指令μορ?和μ〇ρ2已經(jīng)回退之 前,RS 108不分派μ〇ρ3用于執(zhí)行。此外,尺寸跟蹤邏輯122設(shè)置μ〇ρ3為依賴于μορ?而不是μ ορ2〇
[0043] RS/EU/WB階段304集中地示出RS 108、EU 112中和每一指令μ〇ρ1-μ〇ρ3的WB期間的 操作的結(jié)果。示出PRF 114的一部分,包括物理寄存器?1^11^、?1^、?1^和?1^。在以〇?1的執(zhí) 行期間,以交叉陰影底紋示出的物理寄存器PRA的內(nèi)容移動(dòng)到物理寄存器PRC。在μ〇ρ2的執(zhí) 行期間,以陰影線底紋示出的物理寄存器PRB的部分內(nèi)容移動(dòng)到物理寄存器PRD。在包括部 分寫緩沖器113的一些實(shí)施例中,部分內(nèi)容也移動(dòng)到部分寫緩沖器113內(nèi)的位置305以便如 果被指示的話,便利后續(xù)的合并操作。在一個(gè)實(shí)施例中,如果部分寫緩沖器113已滿,則處理 器100的前端可以臨時(shí)停轉(zhuǎn)直到部分寫緩沖器113中存儲(chǔ)位置可用為止。在μ〇ρ3的執(zhí)行期 間,物理寄存器PRC的內(nèi)容移動(dòng)到物理寄存器PRE。但是,當(dāng)檢測(cè)到μ〇ρ3的源大于LAST WRITE SIZE位置的值SZ2時(shí),暫不執(zhí)行μ〇ρ3,直到在RETIRE階段306中執(zhí)行合并操作之后為止。當(dāng) 然,如果檢測(cè)到μ〇ρ3的源不大于LAST WRITE SIZE值SZ2,則設(shè)置μ〇ρ3依賴于最后寫指令,例 如μ〇ρ2。
[0044] RETIRE階段306圖示在μορ?的回退期間,ROB 110通過將用于物理寄存器PRC(具有 索引PRC)的索引PRC復(fù)制到重命名表116內(nèi)的條目206的RETIRE位置,來改變EAX的結(jié)構(gòu)映 射。在μ〇ρ2的回退期間,如果合并邏輯115檢測(cè)到μ〇ρ2的R0B條目中Μ位被置位,則合并邏輯 115將物理寄存器PRD的部分內(nèi)容或者部分寫緩沖器113的位置305中存儲(chǔ)的部分內(nèi)容合并 到物理寄存器PRC的相應(yīng)的部分中。μ〇ρ2的R0B條目中存儲(chǔ)的值指示要合并的部分寫的尺 寸。當(dāng)μ〇ρ3根據(jù)其R0B條目將物理寄存器PRC的內(nèi)容移動(dòng)到物理寄存器PRE時(shí),物理寄存器 PRC的內(nèi)容已經(jīng)與來自部分寫緩沖器113(或者來自物理寄存器PRD)的μ〇ρ2的部分寫合并, 以使得物理寄存器PRE存儲(chǔ)正確結(jié)果。在μ〇ρ3的回退期間,R0B 110通過將用于物理寄存器 PRE的索引PRE復(fù)制到重命名表116內(nèi)的條目208的RET IRE位置,來改變ESP的結(jié)構(gòu)映射。以該 方式,結(jié)構(gòu)寄存器ESP映射到存儲(chǔ)μ〇ρ1-μ〇ρ3的正確結(jié)果的物理寄存器PRE。
[0045] 在一個(gè)實(shí)施例中,部分寫緩沖器113由對(duì)于R0B 110的每一條目提供的R0B索引來 索引。部分寫緩沖器113的條目在RAT階段302分配且使用R0B索引提前占據(jù)條目。在WB階段 期間,結(jié)果被根據(jù)指令的R0B索引寫入到部分寫緩沖器113中。此外,合并操作需要的任何附 加信息,比如μ〇ρ2的合并尺寸、μορ?的合并尺寸等,存儲(chǔ)在回退的指令的R0B條目中。R0B 110檢測(cè)到μ〇ρ2正在回退,且如果合并邏輯115檢測(cè)到設(shè)置μ〇ρ2的ROB條目的Μ位,則合并邏 輯115進(jìn)行合并操作。注意到,如果合并條件滿足,比如當(dāng)μ〇ρ2的寫尺寸SZ2小于μορ?的"較 大的寫尺寸" SZ1時(shí),則尺寸跟蹤邏輯122置位μ〇ρ2的R0B條目中的Μ位。
[0046]在如圖2進(jìn)一步所示的一些實(shí)施例中,先前且較大的寫指令(例如,μορ?)的寫尺寸 被存儲(chǔ)在條目206的一LARGER WRITE SIZE位置,其LARGER位置已經(jīng)由先前且較大的寫指令 (例如,μορ?)寫過至少一次。當(dāng)前寫指令(例如,μ〇ρ2)的寫尺寸與LARGER WRITE SIZE位置 的值比較,且如果當(dāng)前寫指令的寫尺寸較小,則SMALLER位置由μ〇ρ2的物理寄存器PRD的索 引更新,且μ〇ρ2的R0B條目的Μ位被置位以指示μ〇ρ2是部分寫指令且在RETIRE階段306期間 需要合并操作。
[0047]圖4是圖示根據(jù)一個(gè)實(shí)施例的在RAT階段302期間在RAT 106內(nèi)的在前端的操作和 比如回退階段306期間在R0B 110內(nèi)的在后端的操作,以執(zhí)行尺寸分析、合并操作、指令依賴 性確定以及物理寄存器的狀態(tài)的框圖。如前所述,尺寸跟蹤邏輯122監(jiān)視重命名表116的改 變并在RAT階段302期間在R0B條目中聲明MI信號(hào)以指示合并操作。重命名切換邏輯402也跟 蹤來自重命名表116和尺寸跟蹤邏輯122的信息以設(shè)置指令的依賴性并且指示所述映射邏 輯118回收物理寄存器回到空閑列表120。合并邏輯115包括(經(jīng)由合并位Μ等)檢測(cè)MI信號(hào)的 回退分析邏輯404和用于便利和控制PRF 114的不同物理寄存器和部分寫緩沖器113之間的 合并操作的合并控制邏輯406?;赝朔治鲞壿?04也與映射邏輯118通信以更新重命名表 116,比如在RETIRE階段306期間更新結(jié)構(gòu)寄存器映射。
[0048]圖5是圖示由重命名切換邏輯402控制的PRF 114的每一物理寄存器的狀態(tài)的狀態(tài) 圖。每一物理寄存器具有空閑(I)狀態(tài)502、未完成(NC)狀態(tài)504、完成(C)狀態(tài)、回退和等待 回收(RR)狀態(tài)508和回退結(jié)構(gòu)(RA)狀態(tài)510??臻e列表120中標(biāo)識(shí)的每一物理寄存器最初處 于I狀態(tài)502。當(dāng)分配物理寄存器時(shí),寄存器的狀態(tài)變換到NC狀態(tài)504。在寫回(WB)階段期間 相應(yīng)的寫指令的執(zhí)行之后,相應(yīng)的寄存器的狀態(tài)變換到C狀態(tài)506。在正常操作期間,在相應(yīng) 的指令的回退時(shí),寄存器的狀態(tài)變換到RA狀態(tài)510。例如,分別映射到結(jié)構(gòu)寄存器EBX和ECX 的重命名表116中示出的物理寄存器PRA和PRB處于RA狀態(tài)510。在重新定義結(jié)構(gòu)寄存器到另 一物理寄存器的后續(xù)指令回退時(shí),使得先前映射到同一結(jié)構(gòu)寄存器的物理寄存器被回收或 者去分配,其狀態(tài)回到I狀態(tài)502。
[0049] RR狀態(tài)508是用于當(dāng)回退相應(yīng)的指令時(shí)不回退到RA狀態(tài)510的,且保存部分寫結(jié)果 的物理寄存器的附加狀態(tài)?;旧?,這意味著該物理寄存器不映射到任何結(jié)構(gòu)寄存器,而是 作為用于轉(zhuǎn)發(fā)結(jié)果的臨時(shí)寄存器。作為示例,在μ〇ρ2的回退時(shí),重命名表116的條目206中示 出的物理寄存器PRD不映射到結(jié)構(gòu)寄存器ΕΑΧ,以使得它不變換到RA狀態(tài)510。代替地,在μ 〇ρ2的回退時(shí),物理寄存器PRD變換到RR狀態(tài)508。當(dāng)對(duì)同一結(jié)構(gòu)寄存器發(fā)生后續(xù)寫時(shí),處于 RR狀態(tài)508或者RA狀態(tài)510的物理寄存器以與傳統(tǒng)方法中同樣的方式回收。例如,到結(jié)構(gòu)寄 存器EAX(當(dāng)前映射到如重命名表116的條目206中所示的物理寄存器PRC)的后續(xù)寫使得物 理寄存器PRC和PRD兩者回收。在處理器100的清洗(flush)的情況下,處于NC狀態(tài)504或者C 狀態(tài)506的任何物理寄存器返回到I狀態(tài)502。
[0050] 圖6是圖示根據(jù)本發(fā)明一個(gè)實(shí)施例的在寫指令的回退階段期間合并部分寫結(jié)果的 方法的流程圖。在第一步驟602,從PRF 114為第一寫指令分配第一物理寄存器。在先前示例 中,映射邏輯118為第一寫指令μορ?分配物理寄存器PRC。在下一步驟604,將第一物理寄存 器映射到一個(gè)結(jié)構(gòu)寄存器。比如μορ?的指令指定比如ΕΑΧ的結(jié)構(gòu)寄存器,并且在PRC和ΕΑΧ之 間的映射存儲(chǔ)在重命名表116中。假定用于ΕΑΧ的映射先前不存在,則在重命名表116中做出 新條目(例如,條目206)且將索引PRC寫到該條目的LARGER位置中。LARGER位置用于寫入第 一寫指令和相同尺寸或者更大的任何后續(xù)寫指令的物理寄存器的索引。
[00511 在下一步驟606,從PRF 114對(duì)第二寫指令分配第二物理寄存器。繼續(xù)上述的示例, 映射邏輯118對(duì)第二寫指令μ0ρ2分配理寄存器PRD。假定第二寫指令引用同一結(jié)構(gòu)寄存器 (例如,ΕΑΧ或者其子集或者超集),則在下一步驟608,比較第二寫指令的寫尺寸與第一寫指 令的寫尺寸。在下一步驟610,第二物理寄存器根據(jù)比較第一和第二指令的尺寸的結(jié)果映射 到結(jié)構(gòu)寄存器。如果第二寫指令的尺寸與第一寫指令的尺寸相同或者大于第一寫指令的尺 寸,則用于第一寫指令的條目中的索引被用于第二寫指令的索引覆寫。但是,如果第二寫指 令的尺寸小于第一寫指令的尺寸,則用于第二寫指令的索引寫到用于同一結(jié)構(gòu)寄存器的同 一條目的SMALLER位置中。例如,如重命名表116中所示,用于第二寫指令μ0ρ2的索弓丨PRD存 儲(chǔ)在用于ΕΑΧ的條目206的SMALLER位置中。
[0052]如在下一步驟612中所述的,如果第二寫指令的尺寸小于第一寫指令的尺寸,則為 第二寫指令提供合并指示。如圖1所示,當(dāng)滿足該條件時(shí)聲明合并指示信號(hào)MI。在如圖所示 的一個(gè)實(shí)施例中,MI信號(hào)用于設(shè)置R0B 110中第二寫指令μ〇ρ2對(duì)應(yīng)的條目中的合并位M。在 最后步驟614,在第二寫指令的回退時(shí),第二寫指令的結(jié)果響應(yīng)于合并指示與第一物理寄存 器合并。如在第二寫指令μ〇ρ2的RETIRE階段306期間的圖3所示,例如,用于第二寫指令μ〇ρ2 的物理寄存器PRD中存儲(chǔ)的部分結(jié)果由合并邏輯115與分配給第一寫指令μορ?的物理寄存 器PRC合并。替代地,第二寫指令μ〇ρ2的部分結(jié)果存儲(chǔ)在部分寫緩沖器113中(如果提供),則 從部分寫緩沖器113檢索該部分結(jié)果。
[0053]該方法可以包括附加的步驟,比如標(biāo)記后續(xù)讀指令(例如,μ〇ρ3)為自串行化和當(dāng) 讀指令指定同一結(jié)構(gòu)為源時(shí)使得讀指令依賴于第一寫指令。方法可以另外包括在第二寫指 令的回退時(shí)將第一物理寄存器變換到回退的非結(jié)構(gòu)狀態(tài),并在第一寫指令的回退時(shí)將第二 物理寄存器變換到回退的結(jié)構(gòu)狀態(tài)。該方法可以包括當(dāng)后續(xù)指令重新映射重命名表中的結(jié) 構(gòu)寄存器時(shí)回收第一和第二物理寄存器。該方法可以包括如果第二寫指令的寫尺寸小于第 一寫指令的寫尺寸則在第二寫指令的寫回期間將第二寫指令的結(jié)果存儲(chǔ)到部分寫緩沖器 中,以及在合并操作期間從部分寫緩沖器讀取第二寫指令的結(jié)果。該方法可以包括存儲(chǔ)第 一寫指令的寫尺寸,以及比較第二寫指令的寫尺寸與所存儲(chǔ)的第一寫指令的寫尺寸。該方 法可以包括在重新排序緩沖器(例如,R0B 110)中第二寫指令對(duì)應(yīng)的條目中存儲(chǔ)合并指示 為合并位。
[0054]已經(jīng)呈現(xiàn)前述描述以使本領(lǐng)域技術(shù)人員能夠做出和使用如在特定的申請(qǐng)的上下 文和其需要內(nèi)提供的本發(fā)明。雖然已經(jīng)參考其某些優(yōu)選的版本相當(dāng)多詳細(xì)描述了本發(fā)明, 但其他版本和變化是可能的且被預(yù)見。對(duì)優(yōu)選實(shí)施例的各種修改將是對(duì)本領(lǐng)域技術(shù)人員顯 然的,且在這里定義的通用原理可以應(yīng)用于其他實(shí)施例。例如,在這里描述的塊可以以包括 邏輯器件或者電路等的任何適當(dāng)?shù)姆绞綄?shí)現(xiàn)。本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識(shí)到,他們?yōu)榱诉M(jìn)行 本發(fā)明的相同目的可以容易地使用公開的概念和特定實(shí)施例作為設(shè)計(jì)或者修改其他結(jié)構(gòu) 的基礎(chǔ),而不脫離本發(fā)明的精神和保護(hù)范圍。因此,本發(fā)明不意在限于在這里示出和描述的 特定的實(shí)施例,而是根據(jù)按照在這里公開的原理和新穎特征的最寬范圍。
【主權(quán)項(xiàng)】
1. 一種處理器,包括: 物理寄存器文件,包括多個(gè)物理寄存器,每個(gè)由多個(gè)物理寄存器索引中的相應(yīng)一個(gè)標(biāo) 識(shí); 具有多個(gè)條目的重命名表,所述多個(gè)條目中的每個(gè)存儲(chǔ)結(jié)構(gòu)標(biāo)識(shí)符、較大物理寄存器 索引和較小物理寄存器索引,其中所述結(jié)構(gòu)標(biāo)識(shí)符標(biāo)識(shí)多個(gè)結(jié)構(gòu)寄存器其中之一; 映射邏輯,其探測(cè)部分寫指令,其中所述部分寫指令所指定的結(jié)構(gòu)寄存器已經(jīng)被所述 重命名表內(nèi)的現(xiàn)有條目為先前寫指令標(biāo)示,且所述先前寫指令的寫尺寸大于所述部分寫指 令,其中,所述映射邏輯分配第一物理寄存器并以所述第一物理寄存器的第一物理寄存器 索引更新所述現(xiàn)有條目的所述較小物理寄存器索引; 尺寸跟蹤邏輯,如果所述先前寫指令的所述寫尺寸大于所述部分寫指令,則為所述部 分寫指令設(shè)置合并指示;和 合并邏輯,響應(yīng)于所述合并指示在所述部分寫指令的回退期間合并所述部分寫指令的 結(jié)果與第二物理寄存器,其中,所述第二物理寄存器由所述現(xiàn)有條目的所述較大物理寄存 器索引標(biāo)識(shí)。2. 如權(quán)利要求1所述的處理器,其中,所述尺寸跟蹤邏輯訪問所述現(xiàn)有條目的最后寫尺 寸位置以確定讀指令是否指定源為映射到所述先前寫指令和所述部分寫指令兩者的所述 結(jié)構(gòu)寄存器,其中,所述最后寫尺寸位置存儲(chǔ)最后寫指令的寫尺寸,其中所述最后寫指令是 所述先前寫指令和所述部分寫指令中較晚的一個(gè)。3. 如權(quán)利要求2所述的處理器,其中,如果所述讀指令的所述源的尺寸大于所述最后寫 指令的所述寫尺寸,則所述尺寸跟蹤邏輯確定所述讀指令是否指定所述源為映射到所述先 前寫指令和所述部分寫指令兩者的所述結(jié)構(gòu)寄存器。4. 如權(quán)利要求1所述的處理器,其中,如果所述尺寸跟蹤邏輯確定讀指令指定源為映射 到所述先前寫指令和所述部分寫指令兩者的所述結(jié)構(gòu)寄存器,則所述尺寸跟蹤邏輯標(biāo)記所 述讀指令為自串行化并設(shè)置所述讀指令為依賴于所述先前寫指令。5. 如權(quán)利要求1所述的處理器,進(jìn)一步包括重命名切換邏輯,其在所述部分寫指令回退 時(shí)將所述第一物理寄存器變換到回退的非結(jié)構(gòu)狀態(tài),并在所述先前寫指令回退時(shí)將所述第 二物理寄存器變換到回退的結(jié)構(gòu)狀態(tài)。6. 如權(quán)利要求5所述的處理器,其中,當(dāng)后續(xù)指令重新映射在所述重命名表的所述現(xiàn)有 條目中標(biāo)識(shí)的所述結(jié)構(gòu)寄存器時(shí),所述重命名切換邏輯回收所述第一和第二物理寄存器。7. 如權(quán)利要求1所述的處理器,進(jìn)一步包括部分寫緩沖器,其在所述部分寫指令的寫回 期間存儲(chǔ)所述部分寫指令的所述結(jié)果,且其中,所述合并邏輯從所述部分寫緩沖器讀取所 述部分寫指令的所述結(jié)果。8. 如權(quán)利要求1所述的處理器,其中,所述先前寫指令的所述寫尺寸存儲(chǔ)在所述現(xiàn)有條 目的較大寫尺寸位置中,且其中,所述映射邏輯訪問所述較大寫尺寸位置以確定是否更新 所述現(xiàn)有條目的所述較小物理寄存器索引。9. 如權(quán)利要求1所述的處理器,其中,所述先前寫指令的所述寫尺寸存儲(chǔ)在所述現(xiàn)有條 目的較大寫尺寸位置中,且其中,所述尺寸跟蹤邏輯訪問所述較大寫尺寸位置以確定是否 提供所述合并指示。10. 如權(quán)利要求1所述的處理器,其中,所述合并指示存儲(chǔ)為用于所述部分寫指令的重 新排序緩沖器的條目中的合并位。11. 一種解決處理器中的尺寸問題的合并部分寫結(jié)果的方法,包括: 從寄存器文件為第一寫指令分配第一物理寄存器,并且映射第一物理寄存器到結(jié)構(gòu)寄 存器; 從寄存器文件為引用所述結(jié)構(gòu)寄存器的第二寫指令分配第二物理寄存器; 比較所述第二寫指令的寫尺寸與所述第一寫指令的寫尺寸; 根據(jù)所述比較的結(jié)果映射所述第二物理寄存器到所述結(jié)構(gòu)寄存器; 如果所述第二寫指令的寫尺寸小于所述第一寫指令的寫尺寸,則為所述第二寫指令提 供合并指示;和 在所述第二寫指令回退時(shí),響應(yīng)于合并指示將所述第二寫指令的結(jié)果合并到所述第一 物理寄存器中。12. 如權(quán)利要求11所述的方法,其中,所述映射第一物理寄存器到結(jié)構(gòu)寄存器的步驟包 括在用于所述結(jié)構(gòu)寄存器的重命名表的條目的較大位置中存儲(chǔ)第一索引。13. 如權(quán)利要求12所述的方法,其中,所述根據(jù)所述比較的結(jié)果映射所述第二物理寄存 器到所述結(jié)構(gòu)寄存器的步驟包括:如果所述第二寫指令的寫尺寸小于所述第一寫指令的寫 尺寸,則在所述條目的較小位置中存儲(chǔ)第二索引,以及如果所述第二寫指令的寫尺寸不小 于所述第一寫指令的寫尺寸,則在所述條目的所述較大位置中存儲(chǔ)所述第二索引。14. 如權(quán)利要求11所述的方法,其中,所述將所述第二寫指令的結(jié)果合并到所述第一物 理寄存器中的步驟包括讀取映射到所述第二寫指令的重命名表的條目中存儲(chǔ)的所述第二 寫指令的尺寸值。15. 如權(quán)利要求11所述的方法,進(jìn)一步包括當(dāng)讀指令指定源為映射到所述第一寫指令 和所述第二寫指令兩者的結(jié)構(gòu)寄存器時(shí),標(biāo)記所述讀指令為自串行化和使得所述讀指令依 賴于所述第一寫指令。16. 如權(quán)利要求11所述的方法,進(jìn)一步包括: 在所述第二寫指令回退時(shí),將所述第一物理寄存器轉(zhuǎn)變到已回退非結(jié)構(gòu)狀態(tài);和 在所述第一寫指令回退時(shí),將所述第二物理寄存器轉(zhuǎn)變到已回退結(jié)構(gòu)狀態(tài)。17. 如權(quán)利要求16所述的方法,進(jìn)一步包括當(dāng)后續(xù)指令重新映射所述結(jié)構(gòu)寄存器時(shí)回 收所述第一和第二物理寄存器。18. 如權(quán)利要求11所述的方法,進(jìn)一步包括如果所述第二寫指令的寫尺寸小于所述第 一寫指令的寫尺寸,則在所述第二寫指令的寫回期間將所述第二寫指令的結(jié)果存儲(chǔ)到部分 寫緩沖器中,并且在所述合并期間從所述部分寫緩沖器讀取所述第二寫指令的結(jié)果。19. 如權(quán)利要求11所述的方法,進(jìn)一步包括存儲(chǔ)所述第一寫指令的寫尺寸,以及比較所 述第二寫指令的寫尺寸與所存儲(chǔ)的所述第一寫指令的寫尺寸。20. 如權(quán)利要求11所述的方法,進(jìn)一步包括存儲(chǔ)所述合并指示為在用于所述第二寫指 令的重新排序緩沖器的條目中的合并位。
【文檔編號(hào)】G06F9/30GK106095393SQ201610455541
【公開日】2016年11月9日
【申請(qǐng)日】2016年6月22日
【發(fā)明人】費(fèi)曉龍
【申請(qǐng)人】上海兆芯集成電路有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1