TWI476686B - 用於處理器指令集中之述語計算之設備及方法、一處理器及一積體電路 - Google Patents

用於處理器指令集中之述語計算之設備及方法、一處理器及一積體電路 Download PDF

Info

Publication number
TWI476686B
TWI476686B TW102115530A TW102115530A TWI476686B TW I476686 B TWI476686 B TW I476686B TW 102115530 A TW102115530 A TW 102115530A TW 102115530 A TW102115530 A TW 102115530A TW I476686 B TWI476686 B TW I476686B
Authority
TW
Taiwan
Prior art keywords
multiplexer
condition code
instruction
condition
flag
Prior art date
Application number
TW102115530A
Other languages
English (en)
Other versions
TW201403473A (zh
Inventor
Rajat Goel
Sandeep Gupta
Yamini Modukuru
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of TW201403473A publication Critical patent/TW201403473A/zh
Application granted granted Critical
Publication of TWI476686B publication Critical patent/TWI476686B/zh

Links

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 or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

用於處理器指令集中之述語計算之設備及方法、一處理器及一積體電路
本發明係有關處理器,且更特定而言,係有關用於處置分支指令之述語計算的方法及設備實施例。
許多現代處理器利用諸如分支預測及分支述語化(branch predication)之執行技術以增加效能。分支預測為提前預測具有條件分支之指令之結果的技術。可以推測方式執行預測路徑中在分支指令之後的指令。若預測為正確的,則以推測方式執行之指令的結果為可用的,以便在需要該等結果時即刻提交至暫存器。否則,捨棄自預測路徑中之指令之推測性執行而獲得的結果,而可執行正確路徑中之指令。
作為對分支預測之替代,分支述語化為以推測方式執行條件分支之兩個可能路徑之指令的技術。正確路徑可隨後藉由執行具有條件分支之指令來判定。一旦判定了正確路徑,便可將來自對應指令之結果提交至暫存器,而可捨棄來自不正確路徑中之指令的結果。
對於一些指令,可在該等指令之執行期間設定旗標位元。條件碼亦可與某些指令相關聯。對於具有條件分支之彼等指令,條件碼指示將檢查哪些旗標以判定是否採用分支。在一些指令集架構中,根據條件碼設定旗標且檢查旗標之指令可進行組合。因此,旗標之設定及 特定條件之判定可在單一循環中發生。此等經組合之指令可用於分支述語化。
揭示一種用於計算旗標位元之設備及方法。該等旗標位元可用於利用分支述語化之一處理器中。更特定而言,該設備及該方法可用以計算可由一分支單元使用以評估是否將採用一分支之一述語。在一項實施例中,該設備經耦接以接收與一指令相關聯之一條件碼及回應於該指令之執行而產生的旗標位元。該條件碼指示由於該指令之執行而待檢查之一條件。該設備可接著提供該條件是否為真之一指示。
在一項實施例中,一種用於述語計算之設備包括數個多工器。該等多工器中之每一者包括經耦接以接收一對應經修改條件碼之資料輸入。該等多工器進一步包括選擇輸入,該等選擇輸入經耦接以接收在與一未修改條件碼(經修改條件碼係基於未修改條件碼)相關聯之指令的執行期間產生之旗標位元。經耦接以自該等多工器接收輸出之輸出邏輯電路可提供指示由該條件碼指示之一條件是否為真的一輸出。用於述語計算之該設備亦可包括經配置以計算否則使用多工器無法判定之條件的一或多個額外邏輯電路。一或多個額外邏輯電路可具有亦耦接至該輸出邏輯電路之最終輸出。
一分支單元可經耦接以自用於述語計算之該設備接收該最終輸出。基於該條件是否為真,該分支單元可判定是否在一指令序列中採用一分支。此外,用於述語計算之該設備可供以推測方式執行之指令使用。舉例而言,取決於與一分支指令相關聯之一特定條件的結果,一指令序列可包括兩個可能路徑。該兩個可能路徑之指令可皆以推測方式執行,其中對應結果留存於一暫存器檔案中。該分支指令可為包括兩個操作之一指令,該兩個操作中之第一者判定一或多個旗標位元之狀態,且該兩個操作中之一第二者基於該一或多個旗標位元之該狀 態而判定一條件是否為真(如由條件碼所定義)。該分支指令之執行可因此判定採用哪一路徑。一旦判定了正確路徑,便可捨棄來自另一路徑之結果,而可留存來自正確路徑之結果以待提交至經架構設計之暫存器。
雖然本發明易受各種修改及替代形式之影響,但在圖式中藉由實例展示其特定實施例,且將在本文中對其進行詳細描述。然而,應理解,該等圖式及對圖式之詳細描述並非意欲將本發明限於所揭示之特定形式,而正相反,意欲涵蓋屬於如由附屬申請專利範圍所界定之本發明之精神及範疇內的所有修改、等效物及替代。本文中所使用之標題僅為達成組織性目的,且不意謂用以限制描述之範疇。如貫穿本申請案所使用,詞語「可」係在允許意義(亦即,意謂有可能)而非強制意義(亦即,意謂必須)上使用。類似地,詞語「包括」意謂包括但不限於。
可將各種單元、電路或其他組件描述為「經組態以」執行一或多項任務。在此等情況下,「經組態以」係對結構之廣泛敍述,一般意謂「具有」在操作期間執行該一或多項任務之「電路」。因而,單元/電路/組件可經組態以甚至在單元/電路/組件當前未接通時仍執行任務。一般而言,形成對應於「經組態以」之結構之電路可包括硬體 電路。類似地,為了描述之方便起見,各種單元/電路/組件可描述為執行一或多項任務。此等描述應解譯為包括片語「經組態以」。敍述經組態以執行一或多項任務之單元/電路/組件明確地不意欲援引35 U.S.C.§ 112第六段對於彼單元/電路/組件之解譯。
5‧‧‧積體電路
10‧‧‧處理器
12‧‧‧提取控制單元
14‧‧‧指令快取記憶體
16‧‧‧解碼單元
18‧‧‧映射程式
20‧‧‧排程器
22‧‧‧暫存器檔案
24‧‧‧執行核心
30‧‧‧述語計算單元(PCU)
31A‧‧‧多工器
31B‧‧‧多工器
32‧‧‧修改單元
33‧‧‧邏輯單元
150‧‧‧系統
154‧‧‧周邊裝置
156‧‧‧電源供應器
158‧‧‧外部記憶體
221‧‧‧狀態暫存器
242‧‧‧算術邏輯單元(ALU)
245‧‧‧分支單元
A0‧‧‧資料輸入
A1‧‧‧資料輸入
A2‧‧‧資料輸入
A3‧‧‧資料輸入
A4‧‧‧資料輸入
A5‧‧‧資料輸入
A6‧‧‧資料輸入
A7‧‧‧資料輸入
C‧‧‧旗標位元
CC0‧‧‧四位元未修改條件碼
CC1‧‧‧四位元未修改條件碼
CC2‧‧‧四位元未修改條件碼
CC3‧‧‧四位元未修改條件碼
G1‧‧‧XOR閘
G2‧‧‧AND閘
G3‧‧‧OR閘
I1‧‧‧反相器
N‧‧‧旗標位元
V‧‧‧旗標位元
Z‧‧‧旗標位元
以下【實施方式】參看隨附圖式,現簡要描述該等隨附圖式。
圖1為處理器之一項實施例的方塊圖。
圖2為說明述語化之分支操作之例示性指令流程的圖式。
圖3為述語計算單元之一項實施例的邏輯圖。
圖4為各種條件碼及對應經修改條件碼之計算的說明。
圖5為說明用於執行述語計算之方法之一項實施例的流程圖。
圖6為例示性系統之一項實施例的方塊圖。
現轉向圖1,展示處理器10之一項實施例的方塊圖。處理器10可為實施於積體電路上之一或多個處理器中的一者。在所說明之實施例中,處理器10包括提取控制單元12、指令快取記憶體14、解碼單元16、映射程式18、排程器20、暫存器檔案22,及執行核心24。在所說明之實施例中,執行核心24包括算術邏輯單元(ALU)242、述語計算單元(PCU)30,及分支單元245。提取控制單元12經耦接以提供用於自指令快取記憶體14進行提取之程式計數器(PC)。指令快取記憶體14經耦接以將指令提供至解碼單元16,該解碼單元16經耦接將微操作提供至映射程式18。映射程式18經耦接以將微操作、排程器編號(SCH#)及源運算元編號(SO#)提供至排程器20。排程器20經耦接以自執行核心24接收重新執行信號以及SCH#及例外狀況指示,且亦耦接至暫存器檔案22。暫存器檔案22經耦接以將運算元提供至執行核心,且經耦接以自執行核心接收待寫入至暫存器檔案22之結果。此外,暫存器檔案22亦可包括儲存關於特定指令之各種資訊的一或多個狀態暫存器221。條件碼以及一或多個位元可包括在此資訊中,該一或多個位元在設定時指示何時回應於對應指令之執行而檢查與特定條件碼相關聯之條件。可檢查此等條件以用於(連同其他原因)判定是否採用指令序列中之條件分支。
提取控制單元12可包含用以產生用於提取指令之PC的任何電路。提取控制單元12可包括(例如)用以預測分支指令且沿著預測路徑進行提取之分支預測硬體。提取控制單元12亦可經重新導向(例如, 經由錯誤預測、例外狀況、中斷、清空等)。
指令快取記憶體14可為用於儲存待由處理器10執行之指令的快取記憶體。指令快取記憶體14可具有任何容量及建構(例如,直接映射、集合關聯、完全關聯等)。指令快取記憶體14可具有任何快取行大小。舉例而言,在一項實施例中,可實施64位元組之快取行。其他實施例可使用更大或更小之快取行大小。回應於來自提取控制單元12之給定PC,指令快取記憶體14可輸出至多最大數目個指令。舉例而言,在一項實施例中,可輸出至多4個指令。其他實施例可使用更多或更少指令作為最大值。
解碼單元16可一般經組態以針對自指令快取記憶體14提供之每一指令產生微操作。微操作可為指令操作之實例。一般而言,指令操作可為包括於執行核心24中之硬體能夠執行之操作。每一指令可轉譯成一或多個指令操作(例如,微操作),該一或多個指令操作在執行時產生根據指令集架構針對彼指令定義之操作的效能。解碼單元16可包括電路及/或微編碼之任何組合以便產生指令之微操作。舉例而言,相對簡單之微操作產生(例如,每指令一或兩個微操作)可以硬體進行處置,而更廣泛微操作產生(例如,指令之三個以上微操作)可以微碼進行處置。硬體對微碼之每指令產生之微操作的數目可在實施例間變化。
可將由解碼單元16產生之微操作提供至映射程式18。映射程式18可實施暫存器重新命名以將來自微操作之識別經重新命名之源暫存器的源暫存器位址映射至源運算元編號(SO#)。另外,映射程式18可指派由SCH#識別之排程器項目以儲存每一微操作。在一項實施例中,SCH#亦可識別指派至微操作之目的地的重新命名暫存器。在其他實施例中,映射程式18可指派單獨目的地暫存器編號。
映射程式18可將微操作連同每一微操作之SCH#、SO#及LSQ#(若 適用)提供至排程器20。排程器20可將微操作連同SO#及LSQ#儲存於由各別SCH#識別之排程器項目中。排程器20可排程微操作以供在執行核心24中執行。當排程微操作時,排程器20可自暫存器檔案22讀取其源運算元,且可將源運算元提供至執行核心24。對於載入/儲存操作,源運算元包括用以產生藉由載入/儲存操作存取之記憶體位置之位址的位址運算元。載入/儲存操作之位址運算元可包括自暫存器檔案22提供之暫存器運算元以及編碼於載入/儲存微操作自身中之位移運算元。
在所展示之實施例中,ALU 242可包含經組態以執行指令之一或多個執行單元。在一項實施例中,ALU 242可包括用於藉由定點運算元執行指令之定點單元、用於藉由浮點運算元執行指令之浮點單元,及用於藉由整數運算元執行指令之整數單元。又,ALU 242亦可包括其他類型之電路,諸如載入/儲存單元、一或多個移位器等。
在所展示之實施例中,處理器10可支援指令之推測性執行。除經架構設計之暫存器外,暫存器檔案22亦可包括暫存器中之每一者的額外複本。映射程式18可在任何給定時間指示暫存器檔案22之暫存器中的哪些暫存器為邏輯暫存器且哪些暫存器為實體暫存器,且此映射可在操作期間頻繁地改變。邏輯暫存器可定義為儲存經架構設計之暫存器之非推測性狀態的彼等暫存器。實體暫存器可定義為當前並不儲存經架構設計之暫存器之非推測性狀態的彼等暫存器。實體暫存器可因此包括儲存由以推測方式執行之指令產生之推測性狀態的彼等暫存器。隨著指令序列執行,實體暫存器中之一些可經重新命名以變為邏輯暫存器,此係由於其各別儲存之狀態變為非推測性的。
在處理器10上執行之一些指令序列可包括條件分支指令。回應於條件分支指令之執行,所得條件可判定可採用兩個路徑中之哪一路徑。在一些狀況下,可以推測方式執行一或兩個路徑中在分支指令之 後的指令,其中該等指令之對應結果儲存於實體暫存器中。所展示實施例中之處理器10經組態以針對一些分支執行分支述語化。藉由使用分支述語化,在分支指令之前以推測方式執行兩個路徑中在條件分支指令之後的指令。此等指令之結果可儲存於實體暫存器中。回應於分支指令之執行,正確路徑(亦即,由分支採用之路徑)之結果可保持儲存於實體暫存器中,該等實體暫存器可隨後重新命名為邏輯暫存器。可捨棄與未採用之路徑相關聯之指令的結果。
在所展示之實施例中,一些條件分支指令可被稱作述語化之分支指令。述語化之分支指令可為與述語化之分支相關聯的條件分支指令(與預測分支形成對比)。如上文所論述,可以推測方式執行兩個可能路徑中在述語化之分支指令之後的數個指令。述語化之分支指令可包括兩個操作(且可稱作融合分支指令)。第一操作之執行可使數個不同旗標位元之狀態被設定。第二操作之執行可基於旗標位元之狀態判定條件。條件可藉由條件碼來定義,且因此第二操作可有效地為條件碼相對於所產生之旗標位元中之一或多者的比較。舉例而言,若操作之結果大於給定值,則可定義導致採用分支之條件碼。第一操作之執行可設定旗標位元中之一或多者以指示所得值是否大於給定值。第二操作之執行可執行比較操作以判定條件(例如,該值大於給定值)是否為真。在所展示之實施例中,PCU 30可在一個指令循環中實現述語化之分支指令之執行,同時仍滿足時序要求。
在所展示之實施例中,PCU 30經耦接以自ALU 242接收四個旗標位元(N、Z、C及V)。此實施例之旗標可定義如下:N=來自ALU之負結果,Z=來自ALU之零結果,C=來自ALU之進位操作,V=來自ALU之溢位操作。使用不同及/或額外旗標之實施例為可能的且受到預期。
PCU 30亦經耦接以自暫存器檔案22之狀態暫存器221接收條件 碼。如上文所提到,條件碼可指示回應於述語化之分支指令之執行而待檢查的條件。在一項實施例中,條件碼可包括四個位元,且可因此檢查至多十六個不同條件中之一者的存在。可藉由PCU 30比較此等條件碼與由融合分支指令之第一操作之執行而產生的條件,如由旗標位元所指示。回應於評估條件是否為真,PCU 30可產生提供至分支單元245之指示。取決於條件是否為真,分支單元245可指示是否採用分支,且產生對應指示。執行核心24可將由分支單元245產生之指示傳送至暫存器檔案22,該指示可使對應於來自未採用之路徑之結果的實體暫存器無效。
現將結合圖2至圖4來解釋PCU 30之一項實施例的操作。圖2說明PCU 30之一項實施例。在所展示之實施例中,PCU 30包括一對多工器31A及31B、修改單元32、邏輯單元33,及實施為「或」(OR)閘G3之輸出電路。多工器31A及31B使用所產生之旗標位元作為選擇輸入,同時使用經修改條件碼作為資料輸入。
所展示實施例中之修改單元32經耦接以自狀態暫存器接收四位元未修改條件碼(CC3至CC0)。基於接收到之條件碼,修改單元32可產生提供至多工器31A及31B之對應經修改條件碼。
如上文所提到,圖1中所展示之實施例中的處理器10包括經組態以產生旗標位元N、Z、C及V之ALU 242。在圖2中所展示之PCU 30的實施例中,將Z及C位元提供至多工器31A之選擇輸入,而將N及V位元提供至多工器31B之選擇輸入。另外,邏輯單元33經耦接以接收N、V及Z位元。
多工器31A及31B之輸出連同邏輯電路33之輸出可由OR閘G3組合以產生此處標示為「條件」之信號。若由條件碼指示之條件為真,則條件信號可被確證為邏輯1。否則,若條件為假,則條件信號可被撤銷確證為邏輯0。可將條件信號提供至分支單元245,分支單元245可 取決於自PCU 30接收之結果而使或不使分支被採用。
圖3為展示例示性分支指令之可能路徑的說明。在所展示之實例中,藉由條件碼(「Branch[CC]」)關聯之條件分支指令展示為繼之以I1至I6之指令序列。若除了條件分支指令之執行結果外已滿足所有先前相依性,則可以推測方式執行指令I1至I6。在此實例中,若採用了分支,則指令序列跳過指令I1、I2及I3,且替代地引起直接跳至指令I4。若未採用分支,則以所展示之序列執行I1至I4。如圖1中所展示之處理器10可因此如同已採用分支且如同未採用分支而以推測方式執行指令序列。可將此等狀況中之兩者的結果寫入至暫存器檔案22中之實體暫存器中,且儲存於該等實體暫存器中,直至已執行了條件分支指令為止。若條件分支指令之執行判定採用了分支,則可留存來自經分支路徑之結果且隨後將其提交至邏輯暫存器,而可捨棄與未經分支路徑相關聯之結果。若未採用分支,則可留存來自未經分支路徑之結果以隨後提交至邏輯暫存器,而捨棄對應於經分支路徑之結果。
如上文所提到,由條件碼指示之條件可用以判定是否採用分支。如圖4中所展示,可將條件分成三個不同集合,一個集合適用於多工器31A,一個集合適用於多工器31B,且特殊條件適用於邏輯電路33A。對於多工器31A及31B,在此實施例中提供至修改單元32之給定未修改條件碼導致經修改條件碼被提供至多工器中之一者,且所有邏輯零被提供至另一多工器。舉例而言,若未修改條件碼為彼等條件碼中列出為與多工器31A相關聯的一條件碼,則對應經修改條件碼被提供至多工器31A(輸入A3至A0),同時所有邏輯零被提供至多工器31B(輸入A7至A4)。若未修改條件碼對應於與邏輯單元33相關聯之特殊條件,則所有邏輯零被提供至兩個多工器。
圖4亦包括指示條件之數個方程式,該等條件係基於由條件分支指令之執行產生之旗標位元的設定來檢查。舉例而言,在多工器31A 中,若Z及C(Z and C)皆為邏輯1,則選擇輸入A3;而若Z為邏輯1且C為邏輯0(Z and C_),則選擇輸入A2。因此,若條件分支指令之執行導致Z旗標(Z=1)之設定,則取決於C旗標之狀態,提供輸入A3或A2中之一者的狀態作為來自多工器31A之輸出。若待檢查之條件係Z旗標是否為Z=1,則不管C之值,修改單元32可接著將A3及A2兩者設定為邏輯1。若待檢查之條件為Z=1,則修改單元32亦可將輸入A1及A0設定為邏輯0(由於A1=Z_ and C,而A0=Z_ and C_)。若指令之執行導致Z=1,則邏輯1因此提供於多工器31A之Z選擇輸入上。由於在此實例中待檢查之條件為是否Z=1,因此邏輯1傳播至多工器31A之輸出(在此特定實例中無關於C旗標),且因此經由OR閘G3傳播至條件輸出。因此,在此實例中,條件輸出確證為邏輯1指示:對應於未修改條件碼之條件為真。
若在此實例中指令之執行導致Z=0,則邏輯0被提供至多工器31A之Z輸入。再次,由於此實例中待檢查之條件為是否Z=1(無關於C),則Z=0之結果因此導致邏輯0自A1或A0傳播至多工器31A之輸出,且因此經由OR閘G3傳播至PCU 30之輸出。OR閘G3之輸出上的邏輯0指示經檢查之條件(Z=1)不為真。
作為另一實例,考慮條件何時對應於輸入條件碼1000,其中C=1且Z=0。此條件對應於A1=1,其中A3、A3及A0各自為邏輯0。因而,若此條件輸入至修改單元32中,則A1設定為邏輯1,A3、A2及A0設定為邏輯0,且至多工器31B之資料輸入(A7至A4)中的每一者亦設定為邏輯0。若對應分支指令之執行導致將C旗標設定為邏輯1且將Z旗標設定為邏輯0,則來自A1之邏輯1經由多工器31A傳播至PCU 30之條件輸出,從而指示藉由條件碼指定之輸入條件為真。若Z及C之任何其他組合(例如,Z=1及/或C=0)由對應分支指令之執行產生,則邏輯0經由多工器31A轉遞輸出至條件輸出,藉此指示由未修改條 件碼指定之輸入條件的檢查為假。
當N之值不等於V之值(N!=V)時,PCU 30之操作之第三實例發生。對於N!=V,當N=1時,V=0;且當N=0時,V=1。在查看圖4之右下部分中的方程式時,可看出此等兩個狀況對應於A6=N and V_且A5=N_ and V。因此,若接收到對應於N!=V之條件碼(1011),則修改單元32可藉由將邏輯1提供至多工器31B之A6及A5同時將邏輯0提供至A7及A4來作出回應。修改單元32亦可回應於接收到對應於N!=V之條件碼而將所有邏輯0提供至多工器31A之資料輸入(A3至A0)。當將旗標位元提供至選擇輸入時,在N=1且V=0時將選擇A6,而若N=0且V=1,則選擇A5。若選擇了A6或A5,則N!=V之條件為真,且因此邏輯1將經由多工器31B傳播至PCU 30之條件輸出。
現論述利用邏輯單元33之特殊條件作為最終實例。對於多工器31A及31B,提供旗標位元作為兩個互斥群組中之選擇輸入(Z及C至多工器31A,N及V至多工器31B)。對於邏輯單元33,提供來自此等群組中之每一者的旗標位元。更特定而言,所展示實施例中之邏輯單元33經耦接以自一個群組接收N及V位元且自另一群組接收Z位元。邏輯單元33可用以檢查「大於」條件(其對應於條件碼1100),其中Z=0且N!=V。回應於接收到條件碼1100,修改單元32可將所有邏輯0作為資料輸入提供至多工器31A及31B中之兩者。
所展示實施例中之邏輯單元33包括經耦接以接收N及V旗標位元之「互斥或」(XOR)閘G1,及經耦接以接收Z旗標位元之反相器I1。XOR閘G1及反相器I1之各別輸出耦接至「及」(AND)閘G2之對應輸入。若N及V旗標位元係以邏輯互補狀態來提供(例如,N=1且V=0),則XOR閘G1輸出邏輯1。類似地,若Z作為邏輯0來提供,則反相器I1將Z_作為邏輯1來輸出。當AND閘G2之兩個輸入皆為邏輯1時, AND閘G2對應地輸出邏輯1。因此,若回應於與條件碼1100相關聯之分支指令之執行產生的旗標位元導致Z=0且N!=V,則邏輯單元33輸出邏輯1,該邏輯1傳播至條件輸出且指示條件為真。若Z=1,或N及V在邏輯上等效(例如,兩個邏輯1),則邏輯單元33輸出邏輯0,且因此條件指示為並非真。
一般而言,PCU 30之操作可描述如下。如上文所提到,融合分支指令包括兩個操作,產生旗標位元之一個操作及按照旗標位元對條件進行檢查之另一操作。所展示實施例中之PCU 30經組態以執行第二操作。在執行融合分支指令之前,可將對應條件碼提供至PCU 30,且更特定而言,提供至修改單元32。回應於接收到未修改條件碼,修改單元32可產生作為資料輸入提供至多工器31A及31B之對應經修改條件碼。當執行融合分支指令之第一操作時,可產生旗標位元,且因此將旗標位元作為選擇輸入提供至多工器31A及31B以及提供至邏輯單元33之輸入。因此,融合分支指令之第二操作的執行可回應於旗標位元之產生而發生,此情形又使PCU 30提供由所接收之條件碼指示之條件是否為真的指示。
相對於先前技術實施例,展示於圖2中之配置可允許述語化之分支指令的更快述語計算。在一個先前技術實施例中,16-1多工器經耦接以接收條件碼作為選擇輸入,同時接收所計算條件之指示(由第一操作之執行產生)作為資料輸入。在此實施例中,由第一操作之執行產生之可能條件中之每一者的計算係在將條件碼輸入至選擇輸入之前執行。在此實施例中,存在最少七個閘延遲,其可不利地影響滿足時序目標之能力。相比之下,在圖2之實施例中,有效地交換資料輸入及選擇輸入,其中提供條件碼(呈修改形式)作為資料輸入,且提供由指令執行產生之旗標位元作為選擇輸入。由於條件碼不取決於第一操作之執行,因此條件碼可先於融合分支指令至ALU 242中之執行單元 的分派而提供。此外,該配置允許使各種狀況分離至多個多工器而非全部經由單一多工器來執行。結果,閘延遲可自最少七個閘延遲減小至四個閘延遲,從而允許融合分支指令之更快執行。
請注意,可能不將PCU 30用於不為述語化之分支指令的指令。因此,在一些實施例中,對於此等指令之執行,可停用PCU 30。儘管未明確展示,但PCU 30可包括啟用輸入,該啟用輸入上之信號經確證以啟用PCU 30之操作且經撤銷確證以停用PCU 30之操作。此實施例中之信號輸入可基於儲存於狀態暫存器項目中之位元來確證或撤銷確證,該狀態暫存器項目與給定指令相關聯。可針對每一述語化之分支指令來設定該位元,藉此啟用PCU 30。
現轉向圖5,展示用於執行述語計算之方法之一項實施例的流程圖。方法500可應用於PCU之各種實施例,包括如圖2中所展示且上文所論述之PCU 30。
方法500以將條件碼提供至PCU開始(區塊505)。此操作可在將對應述語化之分支指令分派至執行單元之前發生。此情形可允許在開始執行述語化之分支指令之前(或在完成指令之第一操作之前)產生經修改條件碼(區塊510)。
在產生經修改條件碼且將其作為資料輸入提供至PCU之一或多個多工器的情況下,述語化之分支指令之第一操作的執行可發生(區塊515)。回應於執行述語化之分支指令之第一操作,可產生旗標位元且將其作為選擇輸入提供至PCU之多工器(區塊520)。基於作為資料提供至多工器之經修改條件碼及旗標位元之狀態(對於特殊狀況,亦可將其提供至單獨邏輯單元),可產生指示對應於所接收(未修改)條件碼之條件是否為真的指示(區塊525)。
在執行述語化之分支指令之前,與所採用之分支及未採用之分支相關聯的指令序列可皆以推測方式執行。來自此等指令序列中之兩 者的結果可儲存於實體暫存器中。若如由PCU判定之條件之狀態對應於分支條件(亦即,採用分支;區塊530,是),則可留存來自所採用分支之路徑的推測性結果,而可捨棄來自未採用分支之路徑的推測性結果(區塊535)。否則,若條件對應於未採用之分支(區塊530,否),則捨棄來自所採用分支之路徑的結果,而留存來自未採用分支之路徑的結果。無關於是否採用分支,所留存結果可最終提交至邏輯暫存器。
例示性系統:
接下來轉向圖6,展示系統150之一項實施例的區塊圖。在所說明之實施例中,系統150包括耦接至一或多個周邊裝置154及外部記憶體158之IC 5(例如,實施圖1之處理器10)的至少一例項。亦提供將供電電壓供應至IC 5以及將一或多個供電電壓供應至外部記憶體158及/或周邊裝置154之電源供應器156。在一些實施例中,可包括IC 5之一個以上例項(且亦可包括一個以上外部記憶體158)。
取決於系統150之類型,周邊裝置154可包括任何所要電路。舉例而言,在一項實施例中,系統150可為行動裝置(例如,個人數位助理(PDA)、智慧型手機等),且周邊裝置154可包括用於各種類型之無線通信(諸如,wifi、藍芽、蜂巢式、全球定位系統等)的裝置。周邊裝置154亦可包括額外儲存器,包括RAM儲存器、固態儲存器,或磁碟儲存器。周邊裝置154可包括使用者介面裝置,諸如顯示螢幕(包括觸控顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入裝置、麥克風、揚聲器等。在其他實施例中,系統150可為任何類型之計算系統(例如,桌上型個人電腦、膝上型電腦、工作站、迷你桌上型電腦(net top)等)。
外部記憶體158可包括任何類型之記憶體。舉例而言,外部記憶體158可為SRAM,諸如同步DRAM(SDRAM)、雙資料速率(DDR、 DDR2、DDR3、LPDDR1、LPDDR2等)SDRAM、RAMBUS DRAM之動態RAM(DRAM)等。外部記憶體158可包括記憶體裝置掛裝至之一或多個記憶體模組,諸如單列記憶體模組(SIMM)、雙列記憶體模組(DIMM)等。
對於熟習此項技術者而言,一旦已完全瞭解了上述揭示內容,眾多變化及修改便將變得顯而易見。意欲將以下申請專利範圍解譯為涵蓋所有此等變化及修改。
30‧‧‧述語計算單元(PCU)
31A‧‧‧多工器
31B‧‧‧多工器
32‧‧‧修改單元
33‧‧‧邏輯單元
A0‧‧‧資料輸入
A1‧‧‧資料輸入
A2‧‧‧資料輸入
A3‧‧‧資料輸入
A4‧‧‧資料輸入
A5‧‧‧資料輸入
A6‧‧‧資料輸入
A7‧‧‧資料輸入
C‧‧‧旗標位元
CC0‧‧‧四位元未修改條件碼
CC1‧‧‧四位元未修改條件碼
CC2‧‧‧四位元未修改條件碼
CC3‧‧‧四位元未修改條件碼
G1‧‧‧XOR閘
G2‧‧‧AND閘
G3‧‧‧OR閘
I1‧‧‧反相器
N‧‧‧旗標位元
V‧‧‧旗標位元
Z‧‧‧旗標位元

Claims (20)

  1. 一種用於處理器指令集中之述語計算之設備,其包含:第一多工器及第二多工器,其經組態以分別接收各自與一指令之一條件碼相關聯的第一複數個資料位元及第二複數個資料位元;一執行單元,其經組態以回應於該指令之執行而將旗標位元之一第一集合作為選擇位元提供至該第一多工器,且將旗標位元之一第二集合作為選擇位元提供至該第二多工器;及一第一邏輯電路,其經組態以基於自該第一多工器及該第二多工器接收之輸出而輸出與該條件碼相關聯之一條件是否為真的一指示。
  2. 如請求項1之設備,其進一步包含經耦接以接收該條件碼之一修改單元,其中該修改單元經組態以基於該條件碼而產生該第一複數個資料位元及該第二複數個資料位元。
  3. 如請求項1之設備,其進一步包含一第二邏輯電路,該第二邏輯電路經耦接以接收旗標位元之該第一集合中之至少一旗標位元及旗標位元之該第二集合中之至少一旗標位元。
  4. 如請求項3之設備,其中該第一邏輯電路經組態以基於來自該第二邏輯電路、該第一多工器及該第二多工器之輸出而輸出與該條件碼相關聯之一條件為真抑或假的該指示。
  5. 如請求項1之設備,其進一步包含經耦接以接收該第一邏輯電路之該輸出的一分支單元,其中該分支單元經組態以基於該第一邏輯電路之該輸出而判定是否將採用一條件分支。
  6. 一種用於處理器指令集中之述語計算之方法,其包含:將第一複數個資料位元及第二複數個資料位元分別提供至第 一多工器及第二多工器,其中該第一複數個資料位元及該第二複數個資料位元與一指令之一條件碼相關聯;回應於該指令之執行而將旗標位元之一第一集合提供至該第一多工器之選擇輸入;回應於該指令之執行而將旗標位元之一第二集合提供至該第二多工器之選擇輸入;基於由該第一多工器及該第二多工器提供之輸出而產生與該條件碼相關聯之一條件是否為真的一指示。
  7. 如請求項6之方法,其進一步包含執行該條件碼之一第一修改以產生該第一複數個位元,且執行該條件碼之一第二修改以產生該第二複數個位元。
  8. 如請求項6之方法,其中一第一邏輯電路經組態以產生該指示,且其中該方法進一步包含:一第二邏輯電路接收旗標位元之該第一集合中之至少一旗標位元及旗標位元之該第二集合中之至少一旗標位元。
  9. 如請求項8之方法,其進一步包含基於由該第一多工器、該第二多工器及該第二邏輯電路提供之輸出而產生該指示。
  10. 如請求項6之方法,其進一步包含一分支單元基於該指示而判定是否採用與該指令相關聯之一條件分支。
  11. 一種處理器,其包含:一狀態暫存器,其經組態以提供與一指令相關聯之一條件碼;一執行單元,其經組態以回應於該指令之執行而產生複數個旗標位元;及一述語單元,其包括:複數個多工器,其各自經耦接以接收基於該條件碼而產生 之各別複數個資料位元,且其中該複數個多工器中之每一者經進一步組態以接收該等旗標位元中之一或多者作為選擇輸入;及一輸出單元,其經組態以基於來自該複數個多工器中之每一者的各別輸出而設定指示出由該條件碼指示之一條件是否為真的一輸出位元。
  12. 如請求項11之處理器,其中提供至該複數個多工器中之一第一者的該等資料位元為該條件碼之一第一經修改版本,且其中提供至該複數個多工器中之一第二者的該等資料位元為該條件碼之一第二經修改版本。
  13. 如請求項12之處理器,其中該複數個多工器中之該第一者經耦接以接收旗標位元之一第一集合作為選擇輸入,且其中該等多工器中之該第二者經耦接以接收與該第一集合之旗標位元互斥的旗標位元之一第二集合作為選擇輸入。
  14. 如請求項13之處理器,其進一步包含經耦接以接收旗標位元之該第一集合中之至少一旗標位元及該等第二旗標位元中之至少一旗標位元的一邏輯電路,其中該輸出單元經組態以基於來自該複數個多工器中之每一者及該邏輯電路的各別輸出而設定指示出由該條件碼指示之該條件是否為真的該輸出位元。
  15. 如請求項13之處理器,其進一步包含一修改單元,該修改單元經組態以將該條件碼轉換成待由該複數個多工器中之該第一者接收的第一複數個資料位元,且經進一步組態以將該條件碼轉換成待由該複數個多工器中之該第二者接收的第二複數個資料位元。
  16. 一種積體電路,其包含:一第一多工器,其具有經耦接以接收一第一經修改條件碼之 各別複數個資料輸入,及經耦接以接收複數個旗標位元之一第一集合的各別複數個選擇輸入;一第二多工器,其具有經耦接以接收一第二經修改條件碼之各別複數個資料輸入,及經耦接以接收該複數個旗標位元之一第二集合的各別複數個選擇輸入;一邏輯單元,其經組態以接收該複數個旗標位元中的若干選定者,包括來自該第一集合之至少一旗標位元及來自該第二集合之至少一旗標位元;及一輸出單元,其經組態以基於來自該第一多工器、該第二多工器及該邏輯單元之輸出而提供由一未修改條件碼指示之一特定條件是否為真的一指示。
  17. 如請求項16之積體電路,其進一步包含經耦接以接收一未修改條件碼之一修改電路,其中該修改電路經組態以基於該未修改條件碼而產生該第一經修改條件碼及該第二經修改條件碼。
  18. 如請求項17之積體電路,其進一步包含經耦接以將該未修改條件碼提供至該修改電路之一狀態暫存器。
  19. 如請求項17之積體電路,其進一步包含一執行單元,該執行單元經組態以執行與該未修改條件碼相關聯之一指令,且經進一步組態以回應於該指令之執行而產生該複數個旗標位元。
  20. 如請求項16之積體電路,其進一步包含經耦接以自該輸出單元接收該指示之一分支電路,其中該分支電路經組態以回應於接收到該指示而判定是否將在一指令序列中採用一分支。
TW102115530A 2012-05-02 2013-04-30 用於處理器指令集中之述語計算之設備及方法、一處理器及一積體電路 TWI476686B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/461,950 US9652242B2 (en) 2012-05-02 2012-05-02 Apparatus for predicate calculation in processor instruction set

Publications (2)

Publication Number Publication Date
TW201403473A TW201403473A (zh) 2014-01-16
TWI476686B true TWI476686B (zh) 2015-03-11

Family

ID=48193169

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102115530A TWI476686B (zh) 2012-05-02 2013-04-30 用於處理器指令集中之述語計算之設備及方法、一處理器及一積體電路

Country Status (6)

Country Link
US (1) US9652242B2 (zh)
EP (1) EP2660717A3 (zh)
KR (1) KR101716014B1 (zh)
CN (1) CN104272248B (zh)
TW (1) TWI476686B (zh)
WO (1) WO2013165845A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9684514B2 (en) 2014-09-10 2017-06-20 International Business Machines Corporation Inference based condition code generation
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387158B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9904546B2 (en) * 2015-06-25 2018-02-27 Intel Corporation Instruction and logic for predication and implicit destination
US10503507B2 (en) * 2017-08-31 2019-12-10 Nvidia Corporation Inline data inspection for workload simplification
US10553207B2 (en) * 2017-12-29 2020-02-04 Facebook, Inc. Systems and methods for employing predication in computational models

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349671A (en) * 1989-03-23 1994-09-20 Matsushita Electric Industrial Co., Ltd. Microprocessor system generating instruction fetch addresses at high speed
US7146487B2 (en) * 1998-01-28 2006-12-05 Altera Corporation Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
TW200937283A (en) * 2008-01-09 2009-09-01 Nec Electronics Corp Processor apparatus and conditional branch processing method

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1134780B (it) 1980-12-18 1986-08-13 Honeywell Inf Systems Unita' di controllo microprogrammata con rete di salti multipli
EP0365188B1 (en) * 1988-10-18 1996-09-18 Hewlett-Packard Company Central processor condition code method and apparatus
JP2580396B2 (ja) * 1991-01-31 1997-02-12 富士通株式会社 パイプラインにおける分岐命令制御方式
US5504867A (en) * 1992-09-29 1996-04-02 Texas Instruments Incorporated High speed microprocessor branch decision circuit
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5958046A (en) 1996-11-26 1999-09-28 Texas Instruments Incorporated Microprocessor with reduced microcode space requirements due to improved branch target microaddress circuits, systems, and methods
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
US6981131B2 (en) * 2002-09-04 2005-12-27 Arm Limited Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
JP2006270735A (ja) 2005-03-25 2006-10-05 Fujitsu Ltd 符号変換回路
US20090113174A1 (en) 2007-10-31 2009-04-30 Texas Instruments Incorporated Sign Operation Instructions and Circuitry

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349671A (en) * 1989-03-23 1994-09-20 Matsushita Electric Industrial Co., Ltd. Microprocessor system generating instruction fetch addresses at high speed
US7146487B2 (en) * 1998-01-28 2006-12-05 Altera Corporation Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
TW200937283A (en) * 2008-01-09 2009-09-01 Nec Electronics Corp Processor apparatus and conditional branch processing method

Also Published As

Publication number Publication date
EP2660717A2 (en) 2013-11-06
TW201403473A (zh) 2014-01-16
CN104272248B (zh) 2017-06-09
WO2013165845A1 (en) 2013-11-07
US9652242B2 (en) 2017-05-16
KR20150006004A (ko) 2015-01-15
US20130297918A1 (en) 2013-11-07
KR101716014B1 (ko) 2017-03-13
EP2660717A3 (en) 2013-12-25
CN104272248A (zh) 2015-01-07

Similar Documents

Publication Publication Date Title
TWI476686B (zh) 用於處理器指令集中之述語計算之設備及方法、一處理器及一積體電路
US9639369B2 (en) Split register file for operands of different sizes
TWI654562B (zh) 藉由演算法匹配、停用特徵或限制效能之回溯相容性
US9471322B2 (en) Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9201658B2 (en) Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
JP5748800B2 (ja) ループバッファのパッキング
US9405544B2 (en) Next fetch predictor return address stack
US20130138931A1 (en) Maintaining the integrity of an execution return address stack
US10838729B1 (en) System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction
US11928467B2 (en) Atomic operation predictor to predict whether an atomic operation will complete successfully
US10678542B2 (en) Non-shifting reservation station
US9626185B2 (en) IT instruction pre-decode
US10120690B1 (en) Reservation station early age indicator generation
US11468168B1 (en) Systems and methods for optimizing authentication branch instructions
US20190220417A1 (en) Context Switch Optimization
US11294684B2 (en) Indirect branch predictor for dynamic indirect branches
US11422821B1 (en) Age tracking for independent pipelines
US8171258B2 (en) Address generation unit with pseudo sum to accelerate load/store operations
US11036514B1 (en) Scheduler entries storing dependency index(es) for index-based wakeup
US7783692B1 (en) Fast flag generation
US10514925B1 (en) Load speculation recovery
US11914511B2 (en) Decoupling atomicity from operation size
US10628164B1 (en) Branch resolve pointer optimization
US10452434B1 (en) Hierarchical reservation station
US20200241876A1 (en) Range Mapping of Input Operands for Transcendental Functions

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees