TWI701590B - 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法 - Google Patents

管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法 Download PDF

Info

Publication number
TWI701590B
TWI701590B TW105127329A TW105127329A TWI701590B TW I701590 B TWI701590 B TW I701590B TW 105127329 A TW105127329 A TW 105127329A TW 105127329 A TW105127329 A TW 105127329A TW I701590 B TWI701590 B TW I701590B
Authority
TW
Taiwan
Prior art keywords
pipeline
stage
training
item
configuration
Prior art date
Application number
TW105127329A
Other languages
English (en)
Other versions
TW201723806A (zh
Inventor
西望姆 普立亞達爾西
阿尼爾 克裡希納
瑞谷藍 達莫達倫
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW201723806A publication Critical patent/TW201723806A/zh
Application granted granted Critical
Publication of TWI701590B publication Critical patent/TWI701590B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • G06F15/7878Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本發明揭示基於階段訓練及預測之失序(OOO)電腦處理器之重組態執行管線。在一項態樣中,一管線重組態電路以通信方式耦接至提供多個可選擇管線組態之一執行管線。該管線重組態電路基於一前一階段而產生針對一階段之一階段識別碼(ID)。該階段ID作為至一管線組態預測(PCP)表之一項目之一索引用於判定針對該階段之訓練是否正在進行。若針對該階段之訓練正在進行,則該管線重組態電路執行多個訓練循環,每一訓練循環將來自該等可選擇管線組態之一管線組態用於該執行管線,以判定用於該階段之一較佳管線組態。若針對該階段之訓練完成,則該管線重組態電路在執行該階段之前將該執行管線重組態成由該項目指示之該較佳管線組態。

Description

管線重組態電路、基於失序(OOO)處理器之系統及重組態一執行管線之方法
本發明之技術大體而言係關於失序(OOO)電腦處理器中之執行管線之最佳化,且特定而言,係關於執行管線之選擇性重組態。
失序(OOO)電腦處理器為能夠以由每一指令之輸入運算元之可用性判定之次序執行電腦程式指令的處理器,而不論電腦程式中之指令的出現次序如何。藉由無序執行指令,OOO電腦處理器可能夠充分利用原本在OOO電腦處理器等待資料存取操作完成時被浪費掉之處理器時脈循環。舉例而言,替代在擷取用於較舊程式指令之輸入資料時不得不「暫停」(亦即,有意引入處理延遲)指令,OOO電腦處理器可繼續進行執行最近擷取之能夠立即執行的指令。以此方式,OOO電腦處理器可更有效地利用處理器時脈循環,從而致使OOO電腦處理器每處理器時脈循環能夠處理之指令的數目增加。
在習知OOO電腦處理器中,每一執行管線之「後端管線」包括硬體,該硬體將此功能性實施為暫存器重命名、暫存器檔案存取、登記至保留站(RSV)中、登記至指令排序結構中及自指令排序結構交付、自RSV之指令 喚醒及選擇及由執行單元(例如,算術邏輯單元(ALU))進行之指令執行。作為非限制性實例,因為後端管線經設計成在所有程式階段提取最大效能,所以其可能在具有低指令級平行性、大量錯估分支及/或由於危害所致之大量指令重新擷取之程式階段中過度提供。此可導致較高處理器功率消耗,較高處理器功率消耗繼而可減少電池壽命及可靠性,且可增加功率遞送網路設計、封包及冷卻的成本。
用於減少功率消耗之一種習知技術為成比例地減少OOO電腦處理器之效能。然而,處理器效能要求已隨每新一代OOO電腦處理器而增加。因此,有意使處理器效能有意降級作為節能技術並非理想解決方案。因此,期望提供用於藉由以最小效能損失減少OOO電腦處理器中之後端管線之節能來改良能量效率之機制。
實施方式中所揭示之態樣包括基於階段訓練及預測而重組態失序(OOO)電腦處理器之執行管線。應認識到,由OOO電腦處理器執行之指令串流內之不同階段(亦即,給定數目個所交付指令之群組)可使用不同執行管線組態實現高效效能。因此,就此而言,管線重組態電路經提供作為OOO電腦處理器之元件。該管線重組態電路以通信方式耦接至OOO電腦處理器之提供多個可選擇管線組態的執行管線。作為非限制性實例,可選擇管線組態可包括多個執行管線發出寬度組態、多個保留站記憶庫組態,及/或多個指令排序組態。
針對每一階段,管線重組態電路首先針對前一階段產生階段識別碼(ID)。根據一些態樣,階段ID可包括前一階段內之一或多個所交付指令之雜湊(作為非限制性實例,諸如未採用條件反向分支指令、反向呼叫指令, 及/或反向傳回指令),且亦可併有先前產生之階段ID形式之路徑歷史。階段ID被用作用以存取由管線重組態電路提供之管線組態預測(PCP)表中之項目的索引。基於項目之訓練狀態指示符,管線重組態電路判定針對該階段之訓練是否正在進行。若針對該階段之訓練正在進行,則該管線重組態電路執行多個訓練循環,每一訓練循環將來自該等可選擇管線組態之一管線組態用於該執行管線,以判定用於該階段之一較佳管線組態。在一些態樣中,用於執行該等訓練循環之操作可包括:將該執行管線重組態成所選擇管線組態,且在執行該階段之後量測一效能量度。該管線重組態電路可接著將訓練狀態指示符更新至下一訓練狀態。若項目之訓練狀態指示符指示針對該階段之訓練完成,則該管線重組態電路在執行該階段之前將該執行管線重組態成由該項目指示之該較佳管線組態。以此方式,管線重組態電路可使用前一階段之階段ID來預測即將發生之階段,且基於訓練循環之結果,可將執行管線組態成即將發生之階段之最佳組態,因此在使對處理器效能之影響最小化同時改良功率效率。
在另一態樣中,提供OOO電腦處理器之管線重組態電路。該管線重組態電路包含PCP表,該PCP表包含複數個項目。該管線重組態電路以通信方式耦接至提供複數個可選擇管線組態之執行管線。針對執行管線內之所交付指令之複數個階段中之每一階段,該管線重組態電路經組態以產生針對緊接在該階段之前的前一階段的階段ID。該管線重組態電路經進一步組態以判定該PCP表之該複數個項目間之對應於該階段ID之一項目之訓練狀態指示符是否指示針對該階段之訓練正在進行。該管線重組態電路亦經組態以回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環,每一訓練循環使用自執行管線之複數個可選擇 管線組態間選擇之管線組態來判定較佳管線組態。該管線重組態電路經進一步組態以回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,將該執行管線重組態成由該項目指示之該較佳管線組態。
在另一態樣中,提供一種基於OOO處理器之系統。該基於OOO處理器之系統包含提供複數個可選擇管線組態之執行管線。該基於OOO處理器之系統進一步包含管線重組態電路,該管線重組態電路包含PCP表且以通信方式耦接至該執行管線,該PCP表包含複數個項目。針對執行管線內之所交付指令之複數個階段中之每一階段,該管線重組態電路經組態以產生針對緊接在該階段之前的前一階段的階段ID。該管線重組態電路經進一步組態以判定該PCP表之該複數個項目間之對應於該階段ID之一項目之訓練狀態指示符是否指示針對該階段之訓練正在進行。該管線重組態電路亦經組態以回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環,每一訓練循環使用自執行管線之複數個可選擇管線組態間選擇之管線組態來判定較佳管線組態。該管線重組態電路經進一步組態以回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,將該執行管線重組態成由該項目指示之該較佳管線組態。
在另一態樣中,提供OOO電腦處理器之管線重組態電路。該管線重組態電路包含:針對OOO電腦處理器之執行管線內之所交付指令之複數個階段中之每一階段,用於產生針對緊接在該階段之前的前一階段之階段ID的構件。該管線重組態電路進一步包含用於判定PCP表之複數個項目間之對應於該階段ID之一項目之訓練狀態指示符是否指示針對該階段之訓練正在進行的構件。該管線重組態電路亦包含用於回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環的構件, 每一訓練循環使用自該執行管線之複數個可選擇管線組態間選擇之管線組態來判定一較佳管線組態。該管線重組態電路進一步包含用於回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行而將該執行管線重組態成由該項目指示之該較佳管線組態的構件。
在另一態樣中,提供一種重組態OOO電腦處理器之執行管線之方法。該方法包含:針對OOO電腦處理器之執行管線內之所交付指令之複數個階段中之每一階段,由管線重組態電路產生針對緊接在該階段之前的前一階段之階段ID。該方法進一步包含:判定PCP表之複數個項目間之對應於該階段ID之一項目之訓練狀態指示符是否指示針對該階段之訓練正在進行。該方法亦包含:回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環,每一訓練循環使用自執行管線之複數個可選擇管線組態間選擇之管線組態來判定較佳管線組態。該方法進一步包含:回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,將該執行管線重組態成由該項目指示之該較佳管線組態。
100:失序(OOO)電腦處理器
102:管線重組態電路
104:記憶體介面電路
106:指令快取記憶體
108:資料快取記憶體
110:執行管線
112:前端執行管線
114:後端執行管線
116:擷取/解碼管線級
118:指令佇列級
120:重命名級/元件
122:暫存器存取級/元件
124:保留級/元件
128:執行單元/元件
130:暫存器檔案
132(0):暫存器
132(1):暫存器
132(2):暫存器
132(X):暫存器
134:架構暫存器
136:暫存器映射表
138(0):發出路徑
138(B):發出路徑
140(0):保留站(RSV)記憶庫
140(C):保留站(RSV)記憶庫
142(0):分派單工通道
142(D):分派單工通道
144:管線組態預測(PCP)表
146(0):階段識別碼(ID)
146(A):階段識別碼(ID)
148:階段識別碼(ID)移位暫存器
150:需要更新指示符
200(0):項目
200(1):項目
200(Z):項目
202(0):訓練狀態指示符
202(Z):訓練狀態指示符
204(0):量度追蹤指示符
204(Z):量度追蹤指示符
206(0):較佳管線組態
206(Z):較佳管線組態
208(0):重新使用計數指示符
208(Z):重新使用計數指示符
300(0):階段
300(1):階段
300(X):階段
302(0):所交付指令
302(1):所交付指令
302(Y):所交付指令
304(0):所交付指令
304(1):所交付指令
304(Y):所交付指令
306(0):所交付指令
306(1):所交付指令
306(Y):所交付指令
308(0):程式計數器(PC)
308(1):程式計數器(PC)
308(Y):程式計數器(PC)
310(0):程式計數器(PC)
310(1):程式計數器(PC)
310(Y):程式計數器(PC)
312(0):程式計數器(PC)
312(1):程式計數器(PC)
312(Y):程式計數器(PC)
314:箭頭
316:階段識別碼(ID)
318:箭頭
320:箭頭
322:箭頭
324:箭頭
400:表
402:管線組態
404:管線組態
406:列
408:列
410:列
500:效能量度
600:區塊
602:區塊
604:區塊
606:區塊
608:區塊
610:區塊
612:區塊
614:區塊
616:區塊
618:區塊
620:區塊
622:區塊
624:區塊
626:區塊
628:區塊
630:區塊
700:區塊
702:區塊
704:區塊
706:區塊
708:區塊
800:基於處理器之系統
802:中央處理單元(CPU)
804:處理器
806:快取記憶體
808:系統匯流排
810:記憶體控制器
812:記憶體系統
814:輸入裝置
816:輸出裝置
818:網路介面裝置
820:顯示控制器
822:網路
824(0):記憶體單元
824(N):記憶體單元
826:顯示器
828:視訊處理器
圖1為包括用於基於階段訓練及預測而重組態執行管線之管線重組態電路之例示性失序(OOO)電腦處理器的方塊圖;圖2為說明圖1之管線重組態電路之管線組態預測(PCP)表之例示性內容的方塊圖;圖3為說明用於在執行階段之前產生階段識別碼(ID)之圖1之管線重組態電路內之例示性通信流程的方塊圖;圖4為說明用於藉由圖1之管線重組態電路執行訓練循環之例示性邏輯的方塊圖; 圖5為說明用於在執行階段之後更新PCP表內的項目之圖1之管線重組態電路內之例示性通信流程的方塊圖; 圖6A至圖6D為說明基於階段訓練及預測而重組態執行管線之例示性操作的流程圖;圖7為說明用於藉由圖1之管線重組態電路執行訓練循環之例示性操作的流程圖;及圖8為可包括圖1之管線重組態電路之例示性基於處理器之系統的方塊圖。
現在參考圖式圖,描述本發明之數個例示性態樣。措詞「例示性」在本文中用於意指「用作實例、例項或說明」。本文中描述為「例示性」之任一態樣未必解釋為比其他態樣較佳或有利。
實施方式中所揭示之態樣包括基於階段訓練及預測而重組態失序(OOO)電腦處理器之執行管線。就此而言,管線重組態電路經提供作為OOO電腦處理器之元件。針對指令串流內的每一階段,管線重組態電路首先針對前一階段產生階段識別碼(ID),且使用階段ID之索引來存取管線組態預測(PCP)表中之項目。基於項目之訓練狀態指示符,管線重組態電路判定針對該階段之訓練是否正在進行。若針對該階段之訓練正在進行,則該管線重組態電路執行多個訓練循環,每一訓練循環將來自可選擇管線組態之一管線組態用於該執行管線,以判定用於該階段之一較佳管線組態。若項目之訓練狀態指示符指示針對該階段之訓練完成,則該管線重組態電路在執行該階段之前將該執行管線重組態成由該項目指示之該較佳管線組態。
就此而言,圖1為包括提供階段訓練及預測之管線重組態電路102之例 示性OOO電腦處理器100的方塊圖,如本文中所揭示。OOO電腦處理器100包括記憶體介面電路104、指令快取記憶體106及資料快取記憶體108。OOO電腦處理器100除其他元件外亦可囊括已知數位邏輯元件、半導體電路、處理核心及/或記憶體結構中之任一者,或其組合。本文中所描述之態樣並不限於任何特定元件配置,且所揭示技術可容易擴展至半導體晶粒或封包上之各種結構及佈局。
OOO電腦處理器100進一步包含執行管線110,執行管線110可被細分成前端執行管線112及後端執行管線114。如本文中所使用,「前端執行管線112」可係指習知地位於執行管線110之「起點」處且提供擷取、解碼及/或指令排佇列功能性的管線級。就此而言,圖1之前端執行管線112包括一或多個擷取/解碼管線級116及一或多個指令佇列級118。作為非限制性實例,一或多個擷取/解碼管線級116可包括F1、F2及/或F3擷取/解碼級(未展示)。「後端執行管線114」在本文中係指執行管線110之用於以下操作之隨後管線級:發出供執行之指令,實施指令之實際執行,及/或載入及/或儲存由指令執行需要或產生之資料。在圖1之實例中,後端執行管線114包含重命名級120、暫存器存取級122、保留級124及一或多個執行單元128。應理解,圖1中所展示之前端執行管線112之級116、118及後端執行管線114之元件120、122、124、128係僅出於說明目的提供,且OOO電腦處理器100之其他態樣可含有額外管線級或相較本文中所說明更少之管線級。
OOO電腦處理器100另外包括暫存器檔案130,該暫存器檔案提供用於複數個暫存器132(0)至132(X)之實體儲存器。在一些態樣中,暫存器132(0)至132(X)可包含一或多個通用暫存器(GPR)、程式計數器及/或鏈路暫存器。在由OOO電腦處理器100執行電腦程式期間,可使用暫存器映射 表136將暫存器132(0)至132(X)映射至一或多個架構暫存器134。
在例示性操作中,執行管線110之前端執行管線112自指令快取記憶體106擷取指令(未展示),該指令快取記憶體作為非限制性實例在一些態樣中可為一晶載層級1(L1)快取記憶體。指令可由前端執行管線112之一或多個擷取/解碼管線級116進一步解碼且傳遞到一或多個指令佇列級118以等待發出到後端執行管線114。在將指令發出到後端執行管線114之後,後端執行管線114之元件120、122、124、128接著執行所發出指令,且淘汰經執行指令。
如上文所論述,OOO電腦處理器100可提供指令之OOO處理以增加指令處理平行性。為較佳地裁適執行管線110對具有變化特性之工作負載的處理能力,執行管線110可支援多個不同管線組態。舉例而言,在一些態樣中,執行管線110可支援多個執行管線發出寬度組態,其中一或多個發出路徑138(0)至138(B),經由該一或多個發出路徑,指令可進入後端執行管線114,且可啟用或停用重命名級120及/或暫存器存取級122之對應內部元件(未展示)。針對具有低指令級平行性之階段,可藉由使用具有減少發出寬度之執行管線發出寬度組態來在不使處理器效能降級之情況下減少後端執行管線114之功率要求。減少發出寬度亦可藉由限制「錯誤」路徑指令進入後端執行管線114且藉由減少對暫存器檔案130之不必要讀取來針對具有高分支錯估位準之階段節省能量。
執行管線110之一些態樣可支援多個不同保留站(RSV)記憶庫組態。後端執行管線114之保留級124可包括複數個RSV記憶庫140(0)至140(C),該RSV記憶庫中之每一者可包括多個用作等待執行之指令的緩衝器之RSV(未展示)。每一指令可保持在一RSV中直至所有其源運算元(未展示)可用為 止,此時可經由複數個分派單工通道142(0)到142(D)中之一者將指令用於分派至執行單元128。藉由選擇其中停用RSV記憶庫140(0)至140(C)中之一或多者的執行管線110之RSV記憶庫組態,可以多個不同方式實現功率節省。可消除與每一經停用RSV記憶庫140(0)至140(C)相關聯之選擇邏輯的能量消耗,同時可節省將指令登記至經停用RSV記憶庫140(0)至140(C)中及對經停用RSV記憶庫140(0)至140(C)執行喚醒操作所使用的功率。另外,藉由停用RSV記憶庫140(0)至140(C),可防止來自執行單元128中之指令存器檔案(PRF)標籤廣播,藉此節省相關聯互連切換功率。可藉由防止結果資料廣播自完成指令至經停用RSV記憶庫140(0)至140(C)來進一步減少互連切換功率。
根據一些態樣,執行管線110可支援多個指令排序組態(亦即,有序對失序指令分派)。雖然失序分派指令可針對具有高度指令層級平行性(ILP)之階段改良OOO電腦處理器100之效能,但失序指令分派需要增加排程邏輯,此導致較高功率消耗。若階段具有非常低ILP,則指令分派可自然為串列化,且由用於支援失序分派之排程邏輯之功率可被浪費。因此,藉由使用提供有序分派之指令排序組態,可在低ILP階段中實現節能。
應理解,在一些態樣中,執行管線110可支援使用上文以組合方式所描述之管線組態中之多於一者。舉例而言,在一些態樣中此,發出寬度之減少可與停用RSV記憶庫140(0)至140(C)中之一些協同,此係因為較窄發出寬度可減少RSV記憶庫140(0)至140(C)上之壓力。因此,執行管線110可連同多個不同RSV記憶庫組態之使用提供多個不同發出寬度組態之使用。除了上文所論述之管線組態外或替代上文所論述之管線組態,執行管線110亦可提供額外管線組態。作為非限制性實例,提供硬體預先擷取器(未 展示)、分支預測器(未展示)及/或記憶體相依預測器(未展示)之執行管線110之態樣可分別支援多個硬體預先擷取器設定組態、多個分支預測器設定組態及/或多個記憶體相依預測器企圖心設定組態。
上文所論述之管線組態中之每一者可改良針對由執行管線110執行之指令之一些階段之能量效率。然而,因為所提供之節能取決於每一階段之特定特性,所以期望選擇給定階段之適當管線組態以實現能量效率同時使對處理器效能之影響最小化。
就此而言,OOO電腦處理器100提供管線重組態電路102。如下文更詳細所論述,管線重組態電路102經組態以針對由執行管線110處理之所交付指令之每一階段執行多個訓練循環,其中每一訓練循環使用由執行管線110提供之多個管線組態中之一者。管線重組態電路102提供含有項目(未展示)之PCP表144以儲存中間結果(例如,作為非限制性實例,在每一訓練循環期間所量測之效能量度),及儲存基於訓練循環所判定之較佳管線組態。在對階段之隨後偵測時,管線重組態電路102使用針對該階段之較佳管線組態來重組態執行管線110,如由PCP表144中之對應項目所指示。
使用階段ID對PCP表144中之項目加索引,階段ID在一些態樣中可基於緊接在針對其將執行訓練之階段之前的前一階段內之所交付指令之程式計數器(PC)之雜湊。一些態樣亦可藉由使階段ID基於儲存在選用之階段ID移位暫存器148中之複數個所產生階段ID 146(0)至146(A)(例如,針對先前階段所產生之階段ID)而併有路徑歷史。管線重組態電路102可進一步提供選用的需要更新指示符150。如下文更詳細所描述,需要更新指示符150可在管線重組態電路102之一些態樣中用於藉由避免在階段之執行之後對PCP表144之不必要更新來使效能最佳化。
在詳細描述用於基於階段訓練及預測而執行執行管線重組態之管線重組態電路102之操作之前,將關於圖2論述例示性PCP表144之內部結構。接著將分別關於圖3、圖4及圖5論述用於以下各項之操作:在執行階段之前產生階段ID,針對該階段執行訓練循環以判定較佳管線組態及在執行階段之後更新PCP表144內之項目。
就此而言,圖2說明包含例示性PCP表144之欄位。如圖2中所見,PCP表144包括多個項目200(0)至200(Z),每一項目對應於可能追蹤ID值。項目200(0)至200(Z)中之每一者包括對應訓練狀態指示符202(0)至202(Z),其表示針對與項目200(0)至200(Z)相關聯之階段之當前訓練狀態。在一些態樣中,每一訓練狀態指示符202(0)至202(Z)可包含用於區分預定數目個訓練狀態之複數個位元。舉例而言,可使用包含三(3)個位元之訓練狀態指示符202(0)至202(Z)來區分七(7)個訓練狀態,其可包括三(3)個使用「寬」管線組態(例如,具有全發出寬度及/或RSV記憶庫利用)之訓練狀態、使用「窄」管線組態(例如,具有減少之發出寬度及/或RSV記憶庫利用)之三(3)個訓練狀態,及用以指示訓練完成之一(1)個訓練狀態。應理解,訓練狀態指示符202(0)至202(Z)可指示比上文所描述訓練狀態更多或更少之訓練狀態。
PCP表144之項目200(0)至200(Z)中之每一者亦包括對應量度追蹤指示符204(0)至204(Z)。每一量度追蹤指示符204(0)至204(Z)用於維持在每一訓練循環期間所追蹤之所量測效能量度之執行平均及用於比較管線組態。作為非限制性實例,所量測效能量度可包含執行循環計數。在一些態樣中,量度追蹤指示符204(0)至204(Z)中之每一者可包含十四(14)個位元以具有所量測效能量度平均數之足夠保真度以擷取針對階段之平均執行循環計數之百分之一(1%)的改變。
PCP表144之項目200(0)至200(Z)進一步包括對應較佳管線組態206(0)至206(Z)。在訓練期間,較佳管線組態206(0)至206(Z)可基於對應訓練狀態指示符202(0)至202(Z)而指示將使用下一管線組態。一旦訓練針對項目200(0)至200(Z)完成,較佳管線組態206(0)至206(Z)即可指示由訓練循環判定之管線組態適於對應於項目200(0)至200(Z)之階段。較佳管線組態206(0)至206(Z)中之每一者含有足夠位元以表示在訓練循環期間欲使用之所有可能管線組態。作為非限制性實例,若訓練循環將僅使用兩個(2)管線組態(例如,上文所提及之「寬」及「窄」管線組態),則較佳管線組態206(0)至206(Z)中之每一者可包含單個位元。
在一些態樣中,隨著PCP表144中之項目200(0)至200(Z)中之每一者經訓練,將訓練狀態指示符202(0)至202(Z)重設回至初始狀態以起始階段之重新訓練可由於需要容量或相關聯性原因而需要項目200(0)至200(Z)之不規則替換。因此,管線重組態電路102可提供一或多個重新訓練策略以再新項目200(0)至200(Z)。在一種方法下,管線重組態電路102可實施全域重新訓練,其中藉由初始化所有訓練狀態指示符202(0)至202(Z)以迫使重新訓練來週期性地使PCP表144之所有項目200(0)至200(Z)無效。
一些態樣可提供另一更細微方法,在該方法下,針對PCP表144之項目200(0)至200(Z)提供選用重新使用計數指示符208(0)至208(Z)。重新使用計數指示符208(0)至208(Z)可在一些態樣中用於在規定數目次使用之後提供對項目200(0)-200(Z)之選擇性重新訓練。在例示性操作,重新使用計數指示符208(0)至208(Z)中之每一者可每當在對相關聯項目200(0)至200(Z)之訓練完成之後使用對應較佳管線組態206(0)至206(Z)時遞增。當重新使用計數指示符208(0)至208(Z)達到臨限值時(例如,當重新使用計數 指示符208(0)至208(Z)飽和時),可由圖1之管線重組態電路102使對應項目200(0)至200(Z)無效。舉例而言,此可藉由將相關聯訓練狀態指示符202(0)至202(Z)重設為初始狀態及重設重新使用計數指示符208(0)至208(Z)自身,因此迫使重新學習較佳管線組態206(0)至206(Z)來完成。
應理解,一些態樣可提供管線重組態電路102及/或PCP表144之項目200(0)至200(Z)除圖2中所說明之欄位外亦可包括其他欄位。作為非限制性實例,可在一些態樣中提供暫存器來計數用於執行階段之執行循環之數目。在此些態樣中,暫存器可包含與PCP表144之項目200(0)至200(Z)之量度追蹤指示符204(0)至204(Z)相同之數目個位元。應進一步理解,例示性PCP表144在一些態樣中可實施為根據此項技術者已知之相關聯性及替換政策組態之快取記憶體。在圖2之實例中,例示性PCP表144經說明為單個資料結構。然而,在一些態樣中,例示性PCP表144亦可包含多於一個資料結構或快取記憶體。
圖3為說明圖1之管線重組態電路102內之用於在階段之執行之前產生階段ID及用於基於階段ID而存取圖2之PCP表144中關於訓練之對應項目200(0)至200(Z)之例示性通信流程的方塊圖。在圖3之實例中,執行管線110處理系列階段300(0)、300(1)及300(X),分別包含所交付指令302(0)至302(Y)、304(0)至304(Y)及306(0)至306(Y)。所交付指令302(0)至302(Y)、304(0)至304(Y)、306(0)至306(Y)與對應PC 308(0)至308(Y)、310(0)至310(Y)及312(0)至312(Y)相關聯。
隨著階段300(1)之執行即將在由箭頭314指示之執行點處開始,管線重組態電路102產生針對前一階段300(0)之階段ID 316。應注意,階段ID 316係基於前一階段300(0)而非階段300(1)產生,此係因為在由箭頭314所 指示之執行點處僅與前一階段300(0)之內容相關之資訊可用。根據一些態樣,管線重組態電路102可藉由雜湊前一階段300(0)之複數個所交付指令302(0)至302(Y)之複數個PC 308(0)至308(Y)來產生階段ID 316。在圖3之實例中,階段ID 316係藉由雜湊對應於所交付指令302(0)及302(Y)之PC 308(0)及308(Y)而產生,如由箭頭318及320所指示。所交付指令302(0)及302(Y)用於產生階段ID 316,此係因為其包含獨特反向分支(BB)指令302(0)及302(Y)(例如,未採用之條件反向分支指令、反向呼叫指令及/或反向傳回指令),其可往往在階段之執行期間充當整體收斂點。僅使用反向分支指令302(0)及302(Y)可使得階段ID 316能夠較簡潔而不損害階段識別,藉此維持良好預測準確度、提供快速預測器暖機及限制頻疊之機會。在一些態樣中,階段300(0)內之所有獨特反向分支指令302(0)及302(Y)可被併入至階段ID 316,而一些態樣可提供階段ID 316係僅基於最近的反向分支指令302(0)及302(Y)之子集。
為了添加更多內容脈絡至階段ID 316,根據一些態樣之管線重組態電路102亦可併有由階段ID移位暫存器148提供之複數個所產生階段ID 146(0)至146(A),如由箭頭322指示。以此方式,路徑歷史內容脈絡(亦即,通至階段300(0)之系列較舊階段300)可影響階段ID 316,說明此路徑歷史內容脈絡可影響針對階段300(1)之較佳管線組態206(0)之可能性。
管線重組態電路102接著使用階段ID 316作為至PCP表144之索引來存取項目200(0),如由箭頭324所指示。在一些態樣中,管線重組態電路102可判定對應於階段ID 316之項目200(0)是否當前在使用中。若對應於階段ID 316之項目200(0)當前未使用,則管線重組態電路102可初始化項目200(0)之訓練狀態指示符202(0)。
圖4說明在存取PCP表144中之項目200(0)時可由管線重組態電路102應用以判定對項目200(0)之較佳管線組態206(0)之訓練是否正在進行或針對階段300(1)訓練是否完成的邏輯規則的表400。在圖4之實例中,假設存在兩(2)個管線組態402及404,藉以將執行對應於圖3之項目200(0)之階段300(0)之訓練。在一些態樣中,管線組態402及404可對應於上文所提及之「寬」及「窄」管線組態。
在此實例中,將使用管線組態402對階段300(0)進行訓練三(3)次,且使用管線組態404對其進行訓練三(3)次。因此,如表400之列406中所展示,若管線重組態電路102判定項目200(0)之訓練狀態指示符202(0)之值的範圍介於自零(0)至二(2),則管線重組態電路102將選擇管線組態402用於訓練。如在表400之列408中所見,若項目200(0)之訓練狀態指示符202(0)之值的範圍介於自三(3)至五(5),則管線重組態電路102將選擇管線組態404用於訓練。最終,如列410中所展示,若項目200(0)之訓練狀態指示符202(0)之值為六(6),則訓練已完成,且將選擇由較佳管線組態206(0)指示的管線組態402、404。
圖5為說明圖1之管線重組態電路102內之用於使用圖4中所說明之邏輯作為實例在階段300(1)之執行之後更新PCP表144內之項目200(0)之例示性通信流程的方塊圖。在一些態樣中,管線重組態電路102可使用如所上文所描述所選擇之管線組態402、404或較佳管線組態206(0)來重組態圖3之執行管線110。在階段300(1)已在由箭頭324指示之點時完成執行之後,管線重組態電路102可使用在階段300(1)之開始時產生之相同階段ID 316來存取項目200(0)之訓練狀態指示符202(0)。若訓練狀態指示符202(0)指示訓練正在進行(亦即,訓練狀態指示符202(0)之值介於自零(0)至五(5)範 圍中),則管線重組態電路102可量測所使用之所選擇管線組態402、404之效能量度500。在一些態樣中,所量測效能量度500可包含用於執行階段300(1)之執行循環之計數。
可接著基於所量測效能量度500來更新對應於在階段300(1)之開始時所產生之相同階段ID 316之項目200(0)之量度追蹤指示符204(0)。一些態樣可提供更新量度追蹤指示符204(0)可包含基於所量測效能量度500及量度追蹤指示符204(0)而計算平均值,及將該平均值儲存作為量度追蹤指示符204(0)。管線重組態電路102可接著更新項目200(0)之訓練狀態指示符202(0)以指示下一訓練狀態。
在一些態樣中,若所量測效能量度500指示在使用管線組態404之訓練循環期間已發生過量效能降級則訓練循環可提早終止。舉例而言,若訓練狀態指示符202(0)為三(3)或四(4),且管線重組態電路102判定所量測效能量度500已相對於量度追蹤指示符204(0)降級多於特定百分比(例如,作為非限制性實例,百分之一(1%)),則管線重組態電路102可更新較佳管線組態206(0)以指示管線組態402較佳。管線重組態電路102可使訓練狀態指示符202(0)進一步更新至值六(6)以指示訓練完成。然而,若訓練狀態指示符202(0)達到值五(5)而無需所量測效能量度500降級低於規定百分比,則管線重組態電路102可使較佳管線組態206(0)更新以指示管線組態404為較佳的。
應注意,若訓練狀態指示符202(0)具有值六(6),則PCP表144在圖5之實例中不需要更新。因此管線重組態電路102之效能可在一些態樣中藉由使用需要更新指示符150來指示在產生階段ID 316及首次存取PCP表144之項目200(0)時訓練狀態指示符202(0)是否已達到值六(6)來改良。在階段300(1)結束時更新PCP表144之項目200(0)之前,管線重組態電路102可查 詢需要更新指示符150,且在設定需要更新指示符150之條件下才可更新PCP表144。
圖6A至圖6D為說明用於基於階段訓練及預測而重組態執行管線之例示性操作的流程圖。在描述圖6A至圖6D時,為清晰起見參考圖1至圖5之元件。可針對OOO電腦處理器100之執行管線110內之所交付指令302(0)至302(Y)之複數個階段300(0)至300(X)中之每一階段300(1)實施圖6A至圖6D中所說明之操作。在圖6A中,操作以管線重組態電路102產生針對緊接在階段300(1)之前的前一階段300(0)之階段ID 316(區塊600)而開始。就此而言,管線重組態電路102可在本文中被稱作「用於產生針對緊接在階段之前的前一階段之階段ID的構件」。在一些態樣中,區塊600之操作可包括:管線重組態電路102雜湊前一階段300(0)內之複數個所交付指令302(0)至302(Y)之複數個PC 308(0)至308(Y)(區塊602)。因此,管線重組態電路102可在本文中被稱作「用於雜湊前一階段內之複數個所交付指令之複數個程式計數器的構件」。一些態樣可提供區塊600之操作可包括:管線重組態電路102雜湊儲存在階段ID移位暫存器148中之一或多個所產生階段ID 146(0)至146(A)(區塊604)。管線重組態電路102因此可在本文中被稱作「用於雜湊儲存在階段ID移位暫存器中之一或多個所產生階段ID的構件」。
根據一些態樣,管線重組態電路102可判定PCP表144之複數個項目200(0)至200(Z)間之對應於階段ID 316之項目200(0)是否處於作用中(區塊606)。就此而言,管線重組態電路102可在本文中被稱作「用於在判定PCP表之複數個項目間之對應於階段ID之項目之訓練狀態指示符指示針對該階段之訓練是否正在進行之前判定PCP表中之對應於階段ID之項目是否在使用中的構件」。若在決策區塊606處判定項目200(0)非處於使用中,則管線 重組態電路102可初始化項目200(0)之訓練狀態指示符202(0)(區塊608)。因此,管線重組態電路102可在本文中被稱作「用於回應於判定對應於階段ID之項目非處於使用中而初始化項目之訓練狀態指示符的構件」。處理接著在圖6B之區塊610處繼續。若在決策區塊606處判定項目200(0)處於使用中,則處理繼續進行至圖6B之區塊610。
現在參考圖6B,管線重組態電路102接下來判定PCP表144之複數個項目200(0)至200(Z)間之對應於階段ID 316之項目200(0)之訓練狀態指示符202(0)是否指示針對階段300(0)之訓練正在進行(區塊610)。管線重組態電路102因此可在本文中被稱作「用於判定管線組態預測(PCP)表之複數個項目間之對應於階段ID之項目之訓練狀態指示符是否指示針對該階段之訓練正在進行的構件」。若在決策區塊610處判定訓練非正在進行,則處理在圖6C之區塊612處繼續。然而,若在決策區塊610處判定訓練正在進行,則管線重組態電路102在一些態樣中可設定需要更新指示符150(區塊614)。就此而言,管線重組態電路102可在本文中被稱作「用於回應於判定項目之訓練狀態指示符指示針對該階段之訓練正在進行而設定需要更新指示符的構件」。在訓練正在進行時,管線重組態電路102執行複數個訓練循環,每一訓練循環使用自執行管線110之複數個可選擇管線組態402、404間所選擇之管線組態402、404中之一者來判定較佳管線組態206(0)(區塊616)。因此,管線重組態電路102可在本文中被稱作「用於執行複數個訓練循環的構件,每一訓練循環使用自執行管線之複數個可選擇管線組態間選擇之管線組態來判定較佳管線組態」。如下文關於圖7更詳細所論述,在一些態樣中,複數個訓練循環中之每一者可取決於訓練狀態指示符202(0)之值與管線組態402、404中之單個者相關聯。應進一步理解,可回應於OOO電腦處理器 100之執行管線110內之階段300(1)之發生而起始複數個訓練循環中之單個訓練循環。
在一些態樣中,管線重組態電路102可接下來判定是否設定需要更新指示符150(區塊618)。若在決策區塊618處判定設定需要更新指示符150(或若需要更新指示符150未由給定態樣使用),則管線重組態電路102更新項目200(0)之訓練狀態指示符202(0)以指示下一訓練狀態(區塊620)。就此而言,管線重組態電路102可在本文中被稱作「用於回應於設定需要更新指示符而更新項目[is]之訓練狀態指示符的構件」。處理接著在圖6D之區塊622處繼續。若在決策區塊618處判定未設定需要更新指示符150,則處理在圖6D之區塊622處繼續。
如上文所註明,若由管線重組態電路102在決策區塊610處判定訓練非正在進行,則處理在圖6C之區塊612處繼續。管線重組態電路102將執行管線110重組態成由項目200(0)指示之較佳管線組態206(0)(區塊612)。因此,管線重組態電路102可在本文中被稱作「用於將執行管線重組態成由項目指示之較佳管線組態的構件」。根據一些態樣之管線重組態電路102可接著清除需要更新指示符150(區塊624)。管線重組態電路102因此可在本文中被稱作「用於清除需要更新指示符的構件」。在一些態樣中,管線重組態電路102亦可使項目200(0)之重新使用計數指示符208(0)遞增(區塊626)。就此而言,管線重組態電路102可在本文中被稱作「用於使項目之重新使用計數指示符遞增的構件」。處理接著在圖6D之區塊622處繼續。
現在轉向至圖6D,管線重組態電路102在一些態樣中可判定重新使用計數指示符208(0)是否已達到臨限值(區塊622)。因此,管線重組態電路102可在本文中被稱作「用於判定項目之重新使用計數指示符是否已達到臨限 值的構件」。若重新使用計數指示符208(0)經判定為已達到臨限值,則管線重組態電路102可使項目200(0)無效(區塊628)。管線重組態電路102因此可在本文中被稱作「用於回應於判定項目之重新使用計數指示符已達到臨限值而使項目無效的構件。」根據一些態樣,管線重組態電路102可週期性地使PCP表144之複數個項目200(0)至200(Z)無效以迫使重新訓練(區塊630)。就此而言,管線重組態電路102可在本文中被稱作「用於週期性地使PCP表之複數個項目無效以迫使重新訓練的構件」。
圖7為說明用於由圖1之管線重組態電路102執行訓練循環之例示性操作的流程圖。在一些態樣中,本文中所說明之操作可對應於圖6B之區塊616之操作。為清晰起見,描述圖7中參考圖1到圖5之元件。在圖7中,管線重組態電路102基於項目200(0)之訓練狀態指示符202(0)而自執行管線110之複數個可選擇管線組態402、404間選擇管線組態402、404(區塊700)。因此,管線重組態電路102可在本文中被稱作「用於基於項目之訓練狀態指示符而自執行管線之複數個可選擇管線組態間選擇管線組態的構件」。管線重組態電路102接著將執行管線110重組態成所選擇管線組態402、404(區塊702)。管線重組態電路102因此可在本文中被稱作「用於將執行管線重組態成所選擇管線組態的構件」。
管線重組態電路102接下來在階段300(1)之執行之後量測效能較佳管線組態206(0)之效能量度500(區塊704)。就此而言,管線重組態電路102可在本文中被稱作「用於在階段之執行之後量測所選擇管線組態之效能量度的構件」。管線重組態電路102基於所量測效能量度500而更新對應於階段ID 316之項目200(0)(區塊706)。因此,管線重組態電路102可在本文中被稱作「用於基於所量測效能量度而更新對應於階段ID的項目的構件」。 管線重組態電路102接著更新項目200(0)之訓練狀態指示符202(0)以指示下一訓練狀態(區塊708)。管線重組態電路102因此可在本文中被稱作「用於更新項目之訓練狀態指示符以指示下一訓練狀態的構件」。
根據本文中所揭示之態樣基於階段訓練及預測而重組態OOO電腦處理器之執行管線可經提供於任何基於處理器之裝置中或整合至其中。實例但非限制包括機上盒、娛樂單元、導航裝置、通信裝置、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、智慧型電話、平板、平板手機、電腦、可攜式電腦、桌上型電腦、個人數位助理(PDA)、監視器、電腦監視器、電視、調諧器、收音機、衛星收音機、音樂播放器、數位音樂播放器、可攜式音樂播放器、數位視訊播放器、視訊播放器、數位視訊光碟(DVD)播放器、可攜式數位視訊播放器及汽車。
就此而言,圖8說明可使用圖1中所說明之管線重組態電路(PRC)102之基於處理器之系統800的實例。基於處理器之系統800包括一或多個中央處理單元(CPU)802,每一中央處理單元包括一或多個處理器804。CPU 802在一些態樣中可對應於圖1中之OOO電腦處理器100。CPU 802可具有耦接至處理器804之快取記憶體806供用於快速存取暫時儲存資料。CPU 802耦接至系統匯流排808且可相互耦接包括在基於處理器之系統800之主控裝置及從控裝置。如眾所周知,CPU 802藉由經由系統匯流排808交換位址、控制及資料資訊來與此等其他裝置進行通信。舉例而言,CPU 802可將匯流排異動請求傳達至作為從控裝置之實例之記憶體控制器810。
其他主控裝置及從控裝置可連接至系統匯流排808。如圖8中所說明,作為實例,此等裝置可包括記憶體系統812、一或多個輸入裝置814、一或多個輸出裝置816、一或多個網路介面裝置818及一或多個顯示控制器 820。輸入裝置814可包括任何類型之輸入裝置,包括但不限於輸入鍵、開關、語音處理器等。輸出裝置816可包括任何類型之輸出裝置,包括但不限於音訊、視訊、其他視覺指示器等。網路介面裝置818可為經組態以允許交換往返網路822之資料的任何裝置。網路822可為任何類型之網路,包括但不限於有線或無線網路、私用或公用網路、區域網路(LAN)、無線區域網路(WLAN)、廣域網路(WAN)、BLUETOOTHTM網路及網際網路。網路介面裝置818可經組態以支援所要之任何類型之通信協定。記憶體系統812可包括一或多個記憶體單元824(0至N)。
CPU 802亦可經組態以經由系統匯流排808來存取顯示控制器820以控制發送至一或多個顯示器826之資訊。顯示控制器820將資訊發送至顯示器826以經由一或多個視訊處理器828顯示,該一或多個視訊處理器處理資訊以將其顯示成適於顯示器826之格式。顯示器826可包括任何類型之顯示器,包括但不限於陰極射線管(CRT)、液晶顯示器(LCD)、電漿顯示器等。
熟習此項技術者將進一步瞭解,結合本文中所揭示之態樣所描述之各種說明性邏輯區塊、模組、電路及演算法可實施為電子硬體。作為實例,本文中所描述之主控裝置及從控裝置可用於任何電路、硬體組件、積體電路(IC)或IC晶片中。本文中所揭示之記憶體可為任何類型及大小之記憶體且可經組態以儲存所要之任何類型之資訊。為清楚地說明此可互換性,上文通常已就其功能性方面描述了各種說明性組件、區塊、模組、電路及步驟。如何實施此類功能取決於特定應用、設計選擇及/或強加於整個系統之設計約束。雖然所屬領域的技術人員可針對每一特定應用以變化方式實施所描述功能性,但不應將此些實施方案決策解釋為導致對本發明的範圍的脫離。
結合本文中所揭示之態樣所描述之各種說明性邏輯區塊、模組及電路可藉助以下各項來實施或執行:處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其經設計以執行本文中所描述之功能之任一組合。處理器可為微處理器,但在替代方案中,處理器可為任何習知處理器、控制器、微控制器或狀態機。亦可將處理器實施為計算裝置之組合(例如DSP與微處理器之組合、複數個微處理器、一或多個微處理器連同DSP核心或任一其他此類組態)。
亦應注意,本文中之例示性態樣中之任一者中所描述之可操作步驟經描述以提供實例及論述。所描述之操作可以除所說明次序外之眾多不同次序執行。此外,單個操作步驟中所描述之操作可實質上以多個不同步驟執行。另外,可組合例示性態樣中所論述之一或多個操作步驟。應理解,流程圖中所說明之操作步驟可經受眾多不同修改,如對熟習此項技術者將容易顯而易見。熟習此項技術者亦將理解,可使用各種不同技藝及技術來表示資訊及信號。舉例而言,可藉由電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子或其任何組合來表示可貫穿以上描述所參考之資料、指令、命令、資訊、信號、位元、符號及碼片。
本發明之前述描述經提供以使得熟習此項技術者能夠製作或使用本發明。對本發明之各種修改對於熟習此項技術者而言將易於顯而易見,且在不脫離本發明之精神或範疇的情況下,本文中所定義之一般原理可應用於其他變化形式。因此,本發明並不意欲限於本文中所描述之實例及設計,而是欲賦予其與本文中所揭示之原理及新穎特徵相一致之最寬廣範疇。
102:管線重組態電路
110:執行管線
144:管線組態預測(PCP)表
146(0):階段識別碼(ID)
146(A):階段識別碼(ID)
148:階段識別碼(ID)移位暫存器
150:需要更新指示符
200(0):項目
200(1):項目
200(Z):項目
300(0):階段
300(1):階段
300(X):階段
302(0):所交付指令
302(1):所交付指令
302(Y):所交付指令
304(0):所交付指令
304(1):所交付指令
304(Y):所交付指令
306(0):所交付指令
306(1):所交付指令
306(Y):所交付指令
308(0):程式計數器(PC)
308(1):程式計數器(PC)
308(Y):程式計數器(PC)
310(0):程式計數器(PC)
310(1):程式計數器(PC)
310(Y):程式計數器(PC)
312(0):程式計數器(PC)
312(1):程式計數器(PC)
312(Y):程式計數器(PC)
314:箭頭
316:階段識別碼(ID)
318:箭頭
320:箭頭
322:箭頭
324:箭頭

Claims (33)

  1. 一種屬於一失序(OOO)電腦處理器之管線重組態電路,該管線重組態電路包含一管線組態預測(PCP)表,該PCP表包含複數個項目,且該管線重組態電路以通信方式耦接至提供複數個可選擇管線組態之一執行管線;且該管線重組態電路經組態以針對該執行管線內之所交付指令之複數個階段中之每一階段進行以下操作:藉由在該前一階段內雜湊複數個所交付反向分支指令之複數個程式計數器來產生針對緊接在該階段之前的一前一階段之一階段識別碼(ID);判定該PCP表之該複數個項目間之對應於該階段ID之一項目之一訓練狀態指示符是否指示針對該階段之訓練正在進行,其中該階段ID被用作至該PCP表之一索引以存取對應於在該PCP表之該複數個項目間之該階段ID之該項目;回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環,每一訓練循環使用自該執行管線之該複數個可選擇管線組態間選擇之一管線組態來判定一較佳管線組態;及回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,將該執行管線重組態成由該項目指示之該較佳管線組態。
  2. 如請求項1之管線重組態電路,其經組態以執行該複數個訓練循環, 每一訓練循環使用自該執行管線之該複數個可選擇管線組態間選擇之該管線組態來藉由以下操作而判定該較佳管線組態:基於該項目之該訓練狀態指示符而自該執行管線之該複數個可選擇管線組態間選擇該管線組態;將該執行管線重組態成該所選擇管線組態;在該階段之執行之後量測該所選擇管線組態之一效能量度;基於該所量測效能量度而更新對於該階段ID之該項目;及更新該項目之該訓練狀態指示符以指示一下一訓練狀態。
  3. 如請求項2之管線重組態電路,其中該所量測效能量度包含一執行循環計數。
  4. 如請求項1之管線重組態電路,其中該前一階段內之該複數個所交付反向分支指令係選自由以下各項組成之群組:一或多個最新反向未採用條件分支指令、一或多個最新反向呼叫指令,及一或多個最新反向傳回指令,及其組合。
  5. 如請求項1之管線重組態電路,其進一步包含經組態以儲存複數個所產生階段ID之一階段ID移位暫存器;該執行管線經組態以藉由雜湊儲存於該階段ID移位暫存器中之一或多個所產生階段ID來產生該階段ID。
  6. 如請求項1之管線重組態電路,其中該複數個可選擇管線組態係選自 由以下各項組成之群組:複數個執行管線發出寬度組態、複數個保留站記憶庫組態、複數個指令排序組態、複數個硬體預先擷取器設定組態、複數個分支預測器設定組態及複數個記憶相依預測器企圖心設定組態,及其組合。
  7. 如請求項1之管線重組態電路,其經進一步組態以在判定該PCP表之該複數個項目間之對應於該階段ID之該項目之該訓練狀態指示符是否指示針對該階段之訓練正在進行之前進行以下操作:判定該PCP表中之對應於該階段ID之該項目是否處於使用中;及回應於判定對應於該階段ID之該項目非處於使用中,初始化該項目之該訓練狀態指示符。
  8. 如請求項1之管線重組態電路,其經進一步組態以週期性地使該PCP表之該複數個項目無效以迫使重新訓練。
  9. 如請求項1之管線重組態電路,其經進一步組態以進行以下操作:回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,使該項目之一重新使用計數指示符遞增;判定該項目之該重新使用計數指示符是否已達到一臨限值;及回應於判定該項目之該重新使用計數指示符已達到該臨限值,使該項目無效。
  10. 如請求項1之管線重組態電路,其進一步包含一需要更新指示符; 該管線重組態電路經進一步組態以進行以下操作:回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行,設定該需要更新指示符;回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,清除該需要更新指示符;及回應於該需要更新指示符在一設定狀態中而更新該項目之該訓練狀態指示符。
  11. 如請求項1之管線重組態電路,其經整合至一積體電路(IC)中。
  12. 如請求項1之管線重組態電路,其經整合至選自由以下各項組成之群組之一裝置中:一機上盒;一娛樂單元;一導航裝置;一通信裝置;一固定位置資料單元;一行動位置資料單元;一行動電話;一蜂巢式電話;一智慧型電話;一平板;一平板手機;一電腦;一可攜式電腦;一桌上型電腦;一個人數位助理(PDA);一監視器;一電腦監視器;一電視;一調諧器;一收音機;一衛星收音機;一音樂播放器;一數位音樂播放器;一可攜式音樂播放器;一數位視訊播放器;一視訊播放器;一數位視訊光碟(DVD)播放器;一可攜式數位視訊播放器;及一汽車。
  13. 一種基於失序(OOO)處理器之系統,其包含:一執行管線,其提供複數個可選擇管線組態;一管線重組態電路,其包含一管線組態預測(PCP)表,該PCP表包含複數個項目,且該管線重組態電路以通信方式耦接至該執行管線;且 該管線重組態電路經組態以針對該執行管線內之所交付指令之複數個階段中之每一階段進行以下操作:藉由在該前一階段內雜湊複數個所交付反向分支指令之複數個程式計數器來產生針對緊接在該階段之前的一前一階段之一階段識別碼(ID);判定該PCP表之該複數個項目間之對應於該階段ID之一項目之一訓練狀態指示符是否指示針對該階段之訓練正在進行,其中該階段ID被用作至該PCP表之一索引以存取對應於在該PCP表之該複數個項目間之該階段ID之該項目;回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環,每一訓練循環使用自該執行管線之該複數個可選擇管線組態間選擇之一管線組態來判定一較佳管線組態;及回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,將該執行管線重組態成由該項目指示之該較佳管線組態。
  14. 一種屬於一失序(OOO)電腦處理器之管線重組態電路,其包含:針對該OOO電腦處理器之一執行管線內之所交付指令之複數個階段中之每一階段:用於藉由在該前一階段內雜湊複數個所交付反向分支指令之複數個程式計數器來產生針對緊接在該階段之前的一前一階段之一階段識別碼(ID)的一構件;用於判定一管線組態預測(PCP)表之複數個項目間之對應於該階段 ID之一項目之一訓練狀態指示符是否指示針對該階段之訓練正在進行的一構件,其中該階段ID被用作至該PCP表之一索引以存取對應於在該PCP表之該複數個項目間之該階段ID之該項目;用於回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環的構件,每一訓練循環使用自該執行管線之複數個可選擇管線組態間選擇之一管線組態來判定一較佳管線組態;及用於回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行而將該執行管線重組態成由該項目指示之該較佳管線組態的構件。
  15. 如請求項14之管線重組態電路,其中用於執行該複數個訓練循環的該構件包含以下各項,每一訓練循環使用自該執行管線之該複數個可選擇管線組態間選擇之該管線組態來判定該較佳管線組態:用於基於該項目之該訓練狀態指示符而自該執行管線之該複數個可選擇管線組態間選擇該管線組態的一構件;用於將該執行管線重組態成該所選擇管線組態的一構件;用於在該階段之執行之後量測該所選擇管線組態之一效能量度的一構件;用於基於該所量測效能量度而更新對於該階段ID之該項目的一構件;及用於更新該項目之該訓練狀態指示符以指示一下一訓練狀態的一構件。
  16. 如請求項15之管線重組態電路,其中該所量測效能量度包含一執行循環計數。
  17. 如請求項14之管線重組態電路,其中該前一階段內之該複數個所交付反向分支指令係選自由以下各項組成之群組:一或多個最新反向未採用條件分支指令、一或多個最新反向呼叫指令,及一或多個最新反向傳回指令,及其組合。
  18. 如請求項14之管線重組態電路,其中用於產生該階段ID的該構件包含用於雜湊儲存於一階段ID移位暫存器中之一或多個所產生階段ID的一構件。
  19. 如請求項14之管線重組態電路,其中該複數個可選擇管線組態係選自由以下各項組成之群組:複數個執行管線發出寬度組態、複數個保留站記憶庫組態、複數個指令排序組態、複數個硬體預先擷取器設定組態、複數個分支預測器設定組態及複數個記憶相依預測器企圖心設定組態,及其組合。
  20. 如請求項14之管線重組態電路,其進一步包含:用於在判定該PCP表之該複數個項目間之對應於該階段ID之該項目之該訓練狀態指示符是否指示針對該階段之訓練正在進行之前判定該PCP表中之對應於該階段ID之該項目是否在使用中的一構件;及 用於回應於判定對應於該階段ID之該項目非處於使用中而初始化該項目之該訓練狀態指示符的一構件。
  21. 如請求項14之管線重組態電路,其進一步包含用於週期性地使該PCP表之該複數個項目無效以迫使重新訓練的一構件。
  22. 如請求項14之管線重組態電路,其進一步包含:用於回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行而使該項目之一重新使用計數指示符遞增的一構件;用於判定該項目之該重新使用計數指示符是否已達到一臨限值的一構件;及用於回應於判定該項目之該重新使用計數指示符已達到該臨限值而使該項目無效的一構件。
  23. 如請求項14之管線重組態電路,其進一步包含:用於回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而設定一需要更新指示符的一構件;用於回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行而清除該需要更新指示符的一構件;及用於回應於該需要更新指示符在一設定狀態中而更新該項目之該訓練狀態指示符的一構件。
  24. 一種重組態一失序(OOO)電腦處理器之一執行管線之方法,其包含: 針對該OOO電腦處理器之一執行管線內之所交付指令之複數個階段中之每一階段:藉由在該前一階段內雜湊複數個所交付反向分支指令之複數個程式計數器來藉由一管線重組態電路來產生針對緊接在該階段之前的一前一階段之一階段識別碼(ID);判定一管線組態預測(PCP)表之複數個項目間之對應於該階段ID之一項目之一訓練狀態指示符是否指示針對該階段之訓練正在進行,其中該階段ID被用作至該PCP表之一索引以存取對應於在該PCP表之該複數個項目間之該階段ID之該項目;回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行而執行複數個訓練循環,每一訓練循環使用自該執行管線之複數個可選擇管線組態間選擇之一管線組態來判定一較佳管線組態;及回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,將該執行管線重組態成由該項目指示之該較佳管線組態。
  25. 如請求項24之方法,其中執行該複數個訓練循環包含以下各項,每一訓練循環使用自該執行管線之該複數個可選擇管線組態間選擇之該管線組態來判定該較佳管線組態:基於該項目之該訓練狀態指示符而自該執行管線之該複數個可選擇管線組態間選擇該管線組態;將該執行管線重組態成該所選擇管線組態;使用該所選擇管線組態來執行該階段;量測該所選擇管線組態之一效能量度; 基於該所量測效能量度而更新對於該階段ID之該項目;及更新該項目之該訓練狀態指示符以指示一下一訓練狀態。
  26. 如請求項25之方法,其中該所量測效能量度包含一執行循環計數。
  27. 如請求項24之方法,其中該前一階段內之該複數個所交付反向分支指令係選自由以下各項組成之群組:一或多個最新反向未採用條件分支指令、一或多個最新反向呼叫指令,及一或多個最新反向傳回指令,及其組合。
  28. 如請求項24之方法,其中產生該階段ID包含:雜湊儲存在一階段ID移位暫存器中之一或多個所產生階段ID。
  29. 如請求項24之方法,其中該複數個可選擇管線組態係選自由以下各項組成之群組:複數個執行管線發出寬度組態、複數個保留站記憶庫組態、複數個指令排序組態、複數個硬體預先擷取器設定組態、複數個分支預測器設定組態及複數個記憶相依預測器企圖心設定組態,及其組合。
  30. 如請求項24之方法,其進一步包含:在判定該PCP表之該複數個項目間之對應於該階段ID之該項目之該訓練狀態指示符是否指示針對該階段之訓練正在進行之前判定該PCP表中之對應於該階段ID之該項目是否在使用中;及回應於判定對應於該階段ID之該項目非處於使用中,初始化該項目之 該訓練狀態指示符。
  31. 如請求項24之方法,其進一步包含:週期性地使該PCP表之該複數個項目無效以迫使重新訓練。
  32. 如請求項24之方法,其進一步包含:回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,使針對該項目之一重新使用計數指示符遞增;判定該項目之該重新使用計數指示符是否已達到一臨限值;及回應於判定該項目之該重新使用計數指示符已達到該臨限值,使該項目無效。
  33. 如請求項24之方法,其進一步包含:回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練正在進行,設定一需要更新指示符;回應於判定該項目之該訓練狀態指示符指示針對該階段之訓練非正在進行,清除該需要更新指示符;及回應於該需要更新指示符在一設定狀態中而更新該項目之該訓練狀態指示符。
TW105127329A 2015-09-24 2016-08-25 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法 TWI701590B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/863,755 2015-09-24
US14/863,755 US10635446B2 (en) 2015-09-24 2015-09-24 Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction

Publications (2)

Publication Number Publication Date
TW201723806A TW201723806A (zh) 2017-07-01
TWI701590B true TWI701590B (zh) 2020-08-11

Family

ID=56940463

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105127329A TWI701590B (zh) 2015-09-24 2016-08-25 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法

Country Status (3)

Country Link
US (1) US10635446B2 (zh)
TW (1) TWI701590B (zh)
WO (1) WO2017053092A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10620960B2 (en) * 2018-08-20 2020-04-14 Arm Limited Apparatus and method for performing branch prediction
US11681533B2 (en) 2019-02-25 2023-06-20 Intel Corporation Restricted speculative execution mode to prevent observable side effects
JP2023009354A (ja) * 2021-07-07 2023-01-20 富士通株式会社 演算処理装置および演算処理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078832B1 (en) * 2005-04-28 2011-12-13 Massachusetts Institute Of Technology Virtual architectures in a parallel processing environment
WO2013181012A1 (en) * 2012-05-30 2013-12-05 Apple Inc. Load-store dependency predictor using instruction address hashing
TW201403463A (zh) * 2012-05-04 2014-01-16 Apple Inc 載入儲存相依性預測器內容管理
US20140181487A1 (en) * 2012-12-20 2014-06-26 Ruchira Sasanka Method, apparatus, system for continuous automatic tuning of code regions
US20150154021A1 (en) * 2013-11-29 2015-06-04 The Regents Of The University Of Michigan Control of switching between execution mechanisms

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6427206B1 (en) * 1999-05-03 2002-07-30 Intel Corporation Optimized branch predictions for strongly predicted compiler branches
US6502188B1 (en) * 1999-11-16 2002-12-31 Advanced Micro Devices, Inc. Dynamic classification of conditional branches in global history branch prediction
US7124277B2 (en) * 2003-08-22 2006-10-17 Intel Corporation Method and apparatus for a trace cache trace-end predictor
US7809932B1 (en) 2004-03-22 2010-10-05 Altera Corporation Methods and apparatus for adapting pipeline stage latency based on instruction type
JP2006018413A (ja) * 2004-06-30 2006-01-19 Fujitsu Ltd プロセッサおよびパイプライン再構成制御方法
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US7962770B2 (en) * 2007-12-19 2011-06-14 International Business Machines Corporation Dynamic processor reconfiguration for low power without reducing performance based on workload execution characteristics
US7814300B2 (en) 2008-04-30 2010-10-12 Freescale Semiconductor, Inc. Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access
US8806181B1 (en) 2008-05-05 2014-08-12 Marvell International Ltd. Dynamic pipeline reconfiguration including changing a number of stages
US8291201B2 (en) 2008-05-22 2012-10-16 International Business Machines Corporation Dynamic merging of pipeline stages in an execution pipeline to reduce power consumption
US8489745B2 (en) * 2010-02-26 2013-07-16 International Business Machines Corporation Optimizing power consumption by dynamic workload adjustment
US8656408B2 (en) * 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
US8909879B2 (en) * 2012-06-11 2014-12-09 International Business Machines Corporation Counter-based entry invalidation for metadata previous write queue

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078832B1 (en) * 2005-04-28 2011-12-13 Massachusetts Institute Of Technology Virtual architectures in a parallel processing environment
TW201403463A (zh) * 2012-05-04 2014-01-16 Apple Inc 載入儲存相依性預測器內容管理
WO2013181012A1 (en) * 2012-05-30 2013-12-05 Apple Inc. Load-store dependency predictor using instruction address hashing
US20140181487A1 (en) * 2012-12-20 2014-06-26 Ruchira Sasanka Method, apparatus, system for continuous automatic tuning of code regions
US20150154021A1 (en) * 2013-11-29 2015-06-04 The Regents Of The University Of Michigan Control of switching between execution mechanisms

Also Published As

Publication number Publication date
US20170090930A1 (en) 2017-03-30
US10635446B2 (en) 2020-04-28
TW201723806A (zh) 2017-07-01
WO2017053092A1 (en) 2017-03-30

Similar Documents

Publication Publication Date Title
WO2017030692A1 (en) Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor
KR102239229B1 (ko) 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어
US10684859B2 (en) Providing memory dependence prediction in block-atomic dataflow architectures
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
WO2016140756A1 (en) Register renaming in multi-core block-based instruction set architecture
TWI701590B (zh) 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法
EP3433728B1 (en) Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor
US20160019061A1 (en) MANAGING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US9552033B2 (en) Latency-based power mode units for controlling power modes of processor cores, and related methods and systems
JP2015535634A (ja) 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体
WO2016014239A1 (en) ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US20160274915A1 (en) PROVIDING LOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
EP2856304B1 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
US20190286567A1 (en) System, Apparatus And Method For Adaptively Buffering Write Data In A Cache Memory
EP3335111B1 (en) Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)
WO2019045940A1 (en) INSERTING INSTRUCTION BLOCK HEADER DATA CACHING IN SYSTEMS BASED ON BLOCK ARCHITECTURE PROCESSOR
US11467844B2 (en) Storing multiple instructions in a single reordering buffer entry
EP4078361A1 (en) Renaming for hardware micro-fused memory operations
US20160291981A1 (en) Removing invalid literal load values, and related circuits, methods, and computer-readable media
US20160092219A1 (en) Accelerating constant value generation using a computed constants table, and related circuits, methods, and computer-readable media