利用生成重命名的計算機信息處理器的制造方法
【專利說明】
[0001] 相關(guān)申請的交叉引用
[0002] 本申請要求于2014年4月25日提交的題為"Branch Prediction"的美國臨 時申請?zhí)?1/984, 711、和于2014年10月31日提交的題為"Computer Processor With Generation Renaming"的美國非臨時申請?zhí)?4/530, 038的權(quán)益,通過引用將其全部內(nèi)容結(jié) 合于此。
技術(shù)領(lǐng)域
[0003] 本公開整體涉及計算機處理器。
【背景技術(shù)】
[0004] 半導(dǎo)體制造的發(fā)展使得可以將大量邏輯電路結(jié)合到集成電路上。反過來,這導(dǎo)致 數(shù)字系統(tǒng)架構(gòu)的進步。大大得益于該性能而在單個集成電路上包括各種邏輯電路陣列的數(shù) 字系統(tǒng)架構(gòu)的一個特定領(lǐng)域是處理器設(shè)計。
【發(fā)明內(nèi)容】
[0005] 根據(jù)本公開的實施方式,提供了一種處理器,包括:預(yù)約隊列(reservation queue);重命名器(renamer),耦接至所述預(yù)約隊列并被配置為產(chǎn)生生成數(shù)并將所述生成 數(shù)(generation number)傳遞至所述預(yù)約隊列;寄存器,親接至所述預(yù)約隊列并被配置為 存儲值;執(zhí)行流水線(execution pipe),親接至所述預(yù)約隊列;以及緩沖器,親接至所述執(zhí) 行流水線并被配置為接收所述執(zhí)行流水線的輸出,并且所述緩沖器進一步耦接至所述預(yù)約 隊列并被配置為將所述執(zhí)行流水線的輸出傳遞至所述預(yù)約隊列。
[0006] 進一步地,所述處理器包括:小重置DHL Gshare分支預(yù)測單元。
[0007] 進一步地,所述處理器包括:加載/存儲單元,被配置成為多個排隊的加載指令和 存儲指令的每一個調(diào)度對內(nèi)存的訪問;其中,所述加載/存儲單元包括資源鎖定電路,所述 資源鎖定電路被配置為防止同時調(diào)度沖突的內(nèi)存操作。
[0008] 根據(jù)本公開的另一實施方式,提供了一種處理器,包括:指令高速緩存;指令解碼 器,耦接至所述指令高速緩存;預(yù)約隊列,耦接至所述指令解碼器;寄存器,耦接至所述預(yù) 約隊列并被配置為存儲值;小重置DHL Gshare分支預(yù)測單元,耦接至所述指令高速緩存并 被配置為生成地址并將所述地址傳遞給所述指令高速緩存;執(zhí)行流水線,耦接至所述預(yù)約 隊列;緩沖器,耦接至所述執(zhí)行流水線并被配置為接收所述執(zhí)行流水線的輸出,并且所述緩 沖器進一步耦接至所述預(yù)約隊列并被配置為將所述執(zhí)行流水線的輸出傳遞至所述預(yù)約隊 列。
[0009] 根據(jù)本公開的又一實施方式,提供了一種處理器,包括:指令高速緩存;指令解碼 器,耦接至所述指令高速緩存;分支預(yù)測單元,耦接至所述指令高速緩存并被配置為生成指 令地址并將所述指令地址提供至所述指令高速緩存;寄存器文件,被耦接以接收寄存器地 址;重命名器單元,耦接至所述指令高速緩存和所述指令解碼器;多個預(yù)約隊列,所述多個 預(yù)約隊列的每個預(yù)約隊列耦接至所述寄存器文件、所述指令解碼器、和所述重命名器單元; 多個執(zhí)行流水線,所述多個執(zhí)行流水線的每個執(zhí)行流水線耦接至所述多個預(yù)約隊列的相應(yīng) 一個預(yù)約隊列,并且所述多個執(zhí)行流水線的每個執(zhí)行流水線被配置為從所述多個預(yù)約隊列 的相應(yīng)一個預(yù)約隊列接收指令和數(shù)據(jù)并且執(zhí)行所述指令;解讀機構(gòu)(stunt box),親接至所 述多個執(zhí)行流水線的每個執(zhí)行流水線,并被配置為接收所述多個執(zhí)行流水線的每個執(zhí)行流 水線的輸出;其中,響應(yīng)于所述指令解碼器的輸出,所述寄存器文件被配置為提供指令中指 定為源的寄存器的內(nèi)容;并且響應(yīng)于所述指令解碼器的輸出,所述重命名被配置為同時提 供生成數(shù)。
[0010] 其中,所述分支預(yù)測單元包括小重置DHL Gshare分支預(yù)測器。
[0011] 其中,所述指令高速緩存被配置為接收和存儲VLIW指令。
[0012] 其中,所述解讀機構(gòu)的輸出耦接至所述多個執(zhí)行流水線的每個執(zhí)行流水線的輸 入,并且所述解讀機構(gòu)的輸出進一步耦接至所述多個預(yù)約隊列的每個預(yù)約隊列的輸入。
[0013] 進一步地,所述處理器包括:加載/存儲單元,耦接至所述解讀機構(gòu)和所述寄存器 文件;以及存儲器(memory,內(nèi)存),親接至所述加載/存儲單元;其中,所述加載/存儲單元 被配置為從所述解讀機構(gòu)接收輸入并從所述寄存器文件接收輸入。
[0014] 其中,所述多個預(yù)約隊列的每個預(yù)約隊列被配置為存儲指令操作碼、目的地寄存 器地址、和目的地寄存器生成數(shù)。
[0015] 其中,所述多個預(yù)約隊列的每個預(yù)約隊列進一步被配置為存儲第一源寄存器地 址、第一寄存器生成數(shù)、第一寄存器值、第一有效位、第二源寄存器地址、第二寄存器生成 數(shù)、第二寄存器值、和第二有效位。
[0016] 其中,所述指令解碼器識別指定配對寄存器操作的指令。
[0017] 其中,所述寄存器文件包括多個寄存器;并且所述重命名器單元包括用于所述多 個寄存器的每一個的寄存器重命名模塊。
[0018] 其中,所述解讀機構(gòu)被配置為同時將配對的寬輸出(pair-wide output)和單個寬 輸出(single-wide output)放置到所述操作數(shù)復(fù)制網(wǎng)絡(luò)。
[0019] 進一步地,所述處理器包括指令獲取單元。
[0020] 其中,所述指令獲取單元包括:循環(huán)計數(shù)寄存器,被配置為存儲循環(huán)計數(shù)值或投機 性循環(huán)計數(shù)值(speculative loop count value,推測的循環(huán)計數(shù)值);循環(huán)開始寄存器,被 配置為存儲循環(huán)開始地址;以及循環(huán)匹配寄存器,被配置為存儲循環(huán)匹配地址。
[0021] 其中,所述指令獲取單元耦接至所述所述指令解碼器和SIN分配器,并且所述所 述指令獲取單元被配置成為所述SIN分配器提供指示循環(huán)計數(shù)值的信號,所述循環(huán)計數(shù)值 表示投機循環(huán)執(zhí)行。
[0022] 其中,所述指令解碼器耦接至所述循環(huán)計數(shù)寄存器、所述循環(huán)開始寄存器和所述 循環(huán)匹配寄存器。
[0023] 其中,所述指令獲取單元被配置為生成循環(huán)匹配信號。
[0024] 其中,所述指令解碼器被配置為從所述指令獲取單元接收所述循環(huán)匹配信號。
【附圖說明】
[0025] 參考附圖已描述示例性實施方式。在附圖中,相同的附圖標記表示相同的或功能 相似的元件。此外,參考標號最左邊的數(shù)字表示該參考標號首次出現(xiàn)的附圖。
[0026] 圖1是示例性處理器的高級框圖。
[0027] 圖2是實施寄存器重命名的示例性處理器的高級框圖。
[0028] 圖3是示出根據(jù)實例實施方式的寄存器重命名過程的流程圖。
[0029] 圖4是具有資源鎖定(resource locking)的示例性處理器的高級框圖。
[0030] 圖5是示出根據(jù)實例實施方式的狀態(tài)確定過程的流程圖。
[0031] 圖6是示出根據(jù)實例實施方式的指令狀態(tài)更新過程的流程圖。
[0032] 圖7是實施解讀機構(gòu)(stunt box)的示例性處理器的高級框圖。
[0033] 圖8是實施解讀機構(gòu)的另一示例性處理器的高級框圖。
[0034] 圖9是示出根據(jù)實例實施方式的結(jié)果選擇過程的流程圖。
[0035] 圖10示出了根據(jù)本公開的實施方式的實例分支預(yù)測單元(branch prediction unit)〇
[0036] 圖11更詳細地示出了根據(jù)本公開實施方式的分支預(yù)測單元。
[0037] 圖12示出了根據(jù)本公開實施方式的全局分支歷史記錄寄存器的實例更新。
[0038] 圖13示出了根據(jù)本公開實施方式的全局分支歷史記錄寄存器的預(yù)設(shè)置。
[0039] 圖14示出了根據(jù)本公開實施方式的用于提供索引以訪問大分支歷史記錄表中的 條目的實例系統(tǒng)。
[0040] 圖15示出了根據(jù)本公開實施方式的用于提供索引以訪問小分支歷史記錄表、混 合選擇器、和更新計數(shù)器的每個中的條目的系統(tǒng)。
[0041] 圖16示出了根據(jù)本公開實施方式的用于更新存儲于大分支歷史記錄表和小分支 歷史記錄表中的分支預(yù)測條目的實例狀態(tài)機。
[0042] 圖17示出了根據(jù)本公開實施方式的實施零開銷循環(huán)(zero overhead loop)的架 構(gòu)的一部分。
[0043] 圖18示出了根據(jù)本公開實施方式的用于實施零開銷循環(huán)的架構(gòu)的一部分。
[0044] 圖1至圖18示出了各個組件、它們的布置、以及相互連接,并且如同在本領(lǐng)域中大 家所熟知的那樣,附圖不一定是按比例繪制。
【具體實施方式】
[0045] 以下【具體實施方式】參考附圖以說明示例性實施方式。在【具體實施方式】中,對"一個 示例性實施方式"、"示意性實施方式"、"示例性實施方式"等的引用是指所描述的示例性實 施方式可包括特定的特征、結(jié)構(gòu)或特性,但每個示例性實施方式可不一定包括特定的特征、 結(jié)構(gòu)或特性。而且,這些短語不一定指相同的示例性實施方式。此外,當(dāng)結(jié)合示例性實施方 式描述具體的特征、結(jié)構(gòu)或特性時,結(jié)合其他示例性實施方式來影響這些特征、結(jié)構(gòu)或特性 在相關(guān)領(lǐng)域的技術(shù)人員的知識范圍內(nèi),而不管是否明確說明。
[0046] 提供本文所述的示例性實施方式是用于說明的目的而非用于限制。其他示例性實 施方式也是可行的,并且可在本發(fā)明的精神和范圍內(nèi)對示例性實施方式進行修改。
[0047] 應(yīng)當(dāng)理解,本文中的措辭或術(shù)語是為了描述而非限制,因此,本說明書的術(shù)語或措 辭應(yīng)由相關(guān)領(lǐng)域的技術(shù)人員根據(jù)本文中的教導(dǎo)進行解釋。
[0048] 術(shù)語
[0049] 在電子領(lǐng)域,術(shù)語芯片、管芯、集成電路、半導(dǎo)體器件、及微電子器件通??苫Q使 用。
[0050] 如在本文中使用的,F(xiàn)ET是指金屬氧化物半導(dǎo)體場效應(yīng)晶體管(MOSFET)。在本文 中η-溝道FET是指NFET。在本文中P-溝道FET是指PFET。
[0051] CMOS是代表互補金屬氧化物半導(dǎo)體的縮略詞,并且是指NFET和PFET形成在相同 的芯片中的半導(dǎo)體制造工藝。
[0052] CMOS電路是指其中NFET和PFET兩者一起使用的電路。
[0053] SoC是代表片上系統(tǒng)的縮略詞,并且是指包括兩個或更多個通常由總線相互連 接的電路模塊的芯片,其中,那些電路模塊提供這種高級功能,先前這些塊被看作系統(tǒng)級 別組件。舉例來說,迄今為止具有所需級別的功能的電路模塊包括標量(scalar)、超標量 (superscalar)、以及超長指令字處理器;DRAM控制器(例如,DDR3、DDR4和DDR5);閃存控 制器;通用串行總線(USB)控制器等。該列舉是示例性而非限制性的。描述SoC的另一常 見方法例如是包括實施電子系統(tǒng)所需的所有組件的芯片,諸如,計算機系統(tǒng)或基于計算機 的系統(tǒng)。
[0054] VLIW是超長指令字的縮寫。
[0055] 如在本文的示例性實施方式的描述中使用的,VLIW指令是指組合在一起以呈 現(xiàn)給指令解碼器的指令集。指令集中的各個指令被分配為用以執(zhí)行的多個執(zhí)行流水線 (execution pipe,執(zhí)行管線)之一。
[0056] ICO是指在指令高速緩存的輸入上的偽階段(pseudo-stage)。
[0057] ICl是指指令高速緩存階段。在該周期做出對指令高速緩存的獲取(fetch)請求, 并伴隨有計算以確定下一次存取哪個PC。在該階段上供應(yīng)先前請求的VLIW指令。
[0058] DEl是指指令解碼器的第一階段。
[0059] DE l_operation是指由指令解碼器的第一階段執(zhí)行的邏輯操作。
[0060] DE 是指其中出現(xiàn) DEl_operation 的周期。
[0061] DE2是指指令解碼器的第二階段。
[0062] DE 2_operati〇n是指由指令解碼器的第二階段執(zhí)行的邏輯操作。
[0063] DE 2_time是指其中出現(xiàn)通用寄存器文件(GRF)和預(yù)測寄存器文件(predicate register file) (PREG)的讀取和重命名的周期。
[0064] RS是指預(yù)約站。存在能夠排隊的幾個不同的預(yù)約站。在最好的情況下,這是單個 循環(huán)階段,然而操作可結(jié)束在此的很多周期的排隊。
[0065] EXn是指執(zhí)行流水線的第η階段。執(zhí)行流水線的實例包括ALU短流水線和長流水 線,分支和負載存儲單元。
[0066] SHP是指短執(zhí)行流水線。短執(zhí)行流水線用以執(zhí)行單循環(huán)運算。
[0067] LOP是指長執(zhí)行流水線。長執(zhí)行流水線用于執(zhí)行需要完成2-8個循環(huán)的指令。
[0068] LSU是指加載存儲單元。
[0069] DTCM 是指數(shù)據(jù)緊密親合內(nèi)存(data tightly coupled memory)。
[0070] PBUS是指連接至外圍存儲器的總線。
[0071] DCACHE是指用于緩存對外圍存儲器的訪問的數(shù)據(jù)緩存。
[0072] 排隊(enqueue)是指DE2中的VLIW指令被分成其分量操作(component operat ion)后沿流水線向前移至預(yù)約站的動作。
[0073] 發(fā)布(issue,下發(fā))是指將操作從預(yù)約站移動到執(zhí)行單元。操作是指當(dāng)從預(yù)約站 移動至執(zhí)行單元時被發(fā)布。操作是VLIW指令的構(gòu)成部分。
[0074] 當(dāng)前PC是指當(dāng)前在給定階段中的指令的程序計數(shù)器(PC)的值。流水線的每個階 段會具有其自身版本的當(dāng)前PC。
[0075] 下一 PC是指從Icache取出的下一 PC。對于直線式代碼(straight line code), 這將是當(dāng)前PC+當(dāng)前指令寬度,對于重定向代碼(redirected code),它將是新目標PC。
[0076] 循環(huán)開始地址是指循環(huán)體中第一指令的地址,即,開始新循環(huán)迭代的分支的地址。
[0077] 循環(huán)結(jié)束地址是指在循環(huán)體之后第一指令的地址,即,自然退出循環(huán)的分支的地 址。
[0078] 循環(huán)體是指始于循環(huán)開始地址并終于循環(huán)匹配地址(loop match address)的指 令。
[0079] 循環(huán)匹配地址是指循環(huán)體中最后一個指令的地址。
[0080] 循環(huán)計數(shù)是指應(yīng)當(dāng)執(zhí)行的循環(huán)的迭代數(shù)量。這來自用于LOOP操作的立即字段 (immediate field)或者用于ZL00P和ZL00PS操作的通用寄存器。
[0081] SIN是指投機(Speculation)索引號,其被用于識別在分支的附近投機性地排隊 的指令。
[0082] SIN解析(resolution)是指確定分支是否正確投機。在EXl中進行SIN解析。
[0083] SIN驗證是指正確投機的EXl中的分支,其反過來將驗證與在正確投機的分支附 近的操作相關(guān)的SIN。驗證操作是將更新架構(gòu)狀態(tài)的操作。
[0084] SIN取消是指錯誤投機的EXl中的分支,其反過來將取消所有突出的SIN,并進行 EXl重定向,有效地從執(zhí)行流水線中清除分支附近的所有操作。在一個實施方式中,清除錯 誤投機的分支附近中的操作包括改變與執(zhí)行流水線中的那些指令中的每個指令相關(guān)的位 的狀態(tài)。
[0085] 狀態(tài)相干執(zhí)行(State coherency enforcement) (SCE)是指由內(nèi)部機構(gòu)執(zhí)行的以 防止將來的操作看見不連貫的機器狀態(tài)的動作。
[0086] 陷講事件(Trap event)是指同步、異步及故障事件的設(shè)置。
[0087]同步陷阱事件涉及具體指令并及時檢測以防止引起事件的指令排隊。監(jiān)管程序調(diào) 用(SVC)指令適合這種類型。這些如它們在指令流中總體定義的地方中發(fā)生的一樣精確。
[0088] 從當(dāng)前指令序列中獨立出現(xiàn)異步陷阱事件(中斷)。異步異常適合這種情況。
[0089] 故障陷阱事件防止程序流恢復(fù)。故障陷阱事件的實例是錯位的PC和數(shù)據(jù)中止。具 有寄存器目的的故障操作必須完成寄存器值。
[0090] 處理器概述
[0091] 公開了一種處理器架構(gòu),包括具有多個寄存器的寄存器文件,并被配置為亂序指 令執(zhí)行,該處理器架構(gòu)進一步包括重命名器單元,其產(chǎn)生與寄存器文件地址相關(guān)的生成數(shù) 以提供暫時偏離現(xiàn)有版本的寄存器的重命名版本的寄存器而不是分配非編程可見物理寄 存器作為重命名的寄存器。處理器架構(gòu)包括小重置雙歷史記錄長度(DHL)Gshare分支預(yù)測 單元,其耦接至指令高速緩存并被配置為為指令高速緩存提供投機地址。處理器架構(gòu)適于 在集成電路中實施。這種集成電路通常但不一定利用CMOS電路實現(xiàn)。
[0092] 在一個示例性實施方式中,在集成電路中實現(xiàn)根據(jù)本公開的處理器作為嵌入式處 理器。
[0093] 圖1是示出根據(jù)本公開的示例性處理器的主要模塊的高級框圖。示例性處理器包 括指令高速緩存102,該指令高速緩存耦接為從分支預(yù)測單元104接收VLIW指令地址并進 一步耦接成為分支預(yù)測單元104、指令解碼器106、寄存器文件108、以及生成重命名110提 供輸出。生成重命名110耦接至分支執(zhí)行單元118以接收SIN控制信號,耦接至SIN分配 器以接收SIN數(shù),耦接至解讀機構(gòu)124以從操作數(shù)復(fù)制網(wǎng)絡(luò)接收輸出,并耦接至分支預(yù)約隊 列112、執(zhí)行流水線預(yù)約隊列114A、114B、114C、114D,以及加載/存儲預(yù)約隊列116。寄存器 文件108耦接至解讀機構(gòu)124以從操作數(shù)復(fù)制網(wǎng)絡(luò)接收輸入,并進一步耦接至分支預(yù)約隊 列112、執(zhí)行流水線預(yù)約隊列114A、114B、114C、114D,以及加載/存儲預(yù)約隊列116。分支預(yù) 約隊列112耦接至分支執(zhí)行單元118。執(zhí)行流水線預(yù)約隊列114A、114B、114C、114D各自分 別耦接至相應(yīng)的執(zhí)行流水線12(^、12(?、120(:、以及1200。執(zhí)行流水線12(^、12(?、120(:、和 120D各自耦接為向解讀機構(gòu)124提供輸出。每個執(zhí)行流水線120A、120B、120C、以及120D 分別耦接以將它們的輸出提供回到它們的輸入,并且各自被進一步耦接以輸出分支執(zhí)行單 元118的輸出以接收SIN控制信號。內(nèi)存122耦接至加載/存儲單元116。加載/存儲單 元116進一步耦接至系統(tǒng)總線126。
[0094] 指令高速緩存102保持先前由指令獲取單元(未示出)取出的VLIW指令。通常 從布置在處理器本身以外的內(nèi)存取出VLIW指令。分支