TW201514850A - 用於控制推測向量運算效能的資料處理設備及方法 - Google Patents

用於控制推測向量運算效能的資料處理設備及方法 Download PDF

Info

Publication number
TW201514850A
TW201514850A TW103130434A TW103130434A TW201514850A TW 201514850 A TW201514850 A TW 201514850A TW 103130434 A TW103130434 A TW 103130434A TW 103130434 A TW103130434 A TW 103130434A TW 201514850 A TW201514850 A TW 201514850A
Authority
TW
Taiwan
Prior art keywords
speculative
vector
speculation
width
data processing
Prior art date
Application number
TW103130434A
Other languages
English (en)
Other versions
TWI649693B (zh
Inventor
瑞德亞勒斯特大衛
柯蕭丹尼爾
Original Assignee
Arm股份有限公司
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 Arm股份有限公司 filed Critical Arm股份有限公司
Publication of TW201514850A publication Critical patent/TW201514850A/zh
Application granted granted Critical
Publication of TWI649693B publication Critical patent/TWI649693B/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本文提供控制推測向量運算效能之資料處理設備及方法。該設備包括:用於對向量運算元執行推測向量運算序列之處理電路系統,每一向量運算元包括複數個向量元素;及用於維持推測寬度指示之推測控制電路系統,該推測寬度指示指示每一向量運算元中將經受推測向量運算之向量元素之數目。在推測向量運算序列之執行之前,推測寬度指示經設定為初值。處理電路系統在推測向量運算序列之執行期間產生進展指示,及推測控制電路系統藉由參考進展指示及推測縮減標準偵測到推測縮減狀態之存在。推測縮減狀態是一狀態,該狀態指示:相對於在推測寬度指示未縮減的情況下之連續運算,推測寬度指示之縮減預計將改良資料處理設備之至少一個效能特性。推測控制電路系統回應於對推測縮減狀態之偵測而縮減推測寬度指示。在執行推測向量運算時,此 舉可顯著增強效能(例如在產量及/或能量消耗方面之效能)。

Description

用於控制推測向量運算效能的資料處理設備及方法
本發明係關於用於控制推測向量運算效能的資料處理設備及方法。
用於提高資料處理設備效能之一項已知技術是提供電路系統以支援向量運算之執行。對至少一個向量運算元執行向量運算,其中每一向量運算元包括複數個向量元素。因此,向量運算之執行涉及對一或更多個向量運算元內之多個向量元素重複應用一運算。
在支援向量運算之執行的典型資料處理系統中,將提供向量暫存器庫以用於儲存向量運算元。因此,舉例而言,向量暫存器庫內之每一向量暫存器可儲存包括複數個向量元素之向量運算元。
在高效能實施中,亦已知提供向量處理電路系統(常被稱作單指令多資料(Single Instruction Multiple Data;SIMD)處理電路系統),該電路系統可對向量運算元內之多個向量 元素並行執行所需運算。在一替代性實施例中,標量處理電路系統仍可用以實施向量運算,但在此情況下,向量運算藉由迭代執行經由標量處理電路系統之運算而得以實施,每一迭代對向量運算元之不同向量元素進行運算。
經由使用向量運算,與等效的標量運算系列的效能相比可實現顯著之效能益處。
當設法獲得向量處理之效能益處時,已知設法以向量化一系列標量運算,以便將該等標量運算替換為等效的向量運算系列。例如,對於包含一系列標量指令之迴路而言,可能藉由將該標量指令系列替換為等效的向量指令系列來將迴路向量化,其中向量運算元包含與原始標量迴路之不同迭代相關之元素以作為向量元素。
儘管如此,儘管該種方法在經由原始標量迴路的所需迭代數目為預定之情況下可有效,但在迭代數目未經預定之情況下向量化該種迴路更困難。特定而言,由於迭代數目未經預定,因此不能預定每一向量運算元中將需要多少向量元素。
在上述類型之一些情況下,有可能執行推測向量處理,其中推測向量元素之所需數目,及當決定所需向量元素之精確數目時稍後採取矯正措施。
K Asanovic所著標題為「向量微處理器(Vector Microprocessors)」之博士論文(伯克利學院,1998年,第116-121頁)論述了對向量運算元之整體寬度執行推測,及額外追蹤在推測期間發生之架構事件(例如頁錯誤)。該種架構 事件將觸發異常,從而使作業系統執行異常例行常式以便解決該異常。所建議之方法記錄每一向量元素位置在偵測到該種架構事件之向量寬度內。隨後,當到達所需向量元素之位置集為已知之確定點時,每一所需向量元素位置與架構事件之此記錄相比較。由於與所需向量元素位置關連之任何架構事件將防礙向量處理電路系統正確地執行向量運算,因此在確定點觸發任何該種延遲異常。如若所需向量元素位置集中無一位置與架構事件關連,則更新向量長度及遮罩,及清除架構事件之記錄。
上述過程容許執行推測向量處理,同時藉由屏蔽確定點處之架構事件來確保正確運算。
儘管如此,儘管上述方法可在執行推測向量處理運算之同時確保正確運算,但存在可能影響執行推測向量處理之益處之其他因素。如前所說,當執行推測之時,所需之迭代數目未知,及因此存在執行某些可能對設備之效能特性(例如產量或能量消耗)產生不利影響之運算的可能性,只能在稍後察出原本不需要彼等運算。因此,將需要提供一機制以用於執行推測向量運算,同時管理該種推測向量處理對設備之效能特性之影響。
自第一態樣可見,本發明提供一種資料處理設備,該設備包括:處理電路系統,該電路系統經配置以對向量運算元執行推測向量運算序列,每一向量運算元包括複數個向量元素;推測控制電路系統,該電路系統經配置以維持推測 寬度指示,該推測寬度指示指示每一向量運算元中將經受該等推測向量運算之向量元素之數目,該推測寬度指示在該推測向量運算序列之執行之前經初始化至一初值;該處理電路系統經配置以在該推測向量運算序列之執行期間產生進展指示;推測控制電路系統,經進一步配置以藉由參考進展指示及推測縮減標準來偵測推測縮減狀態之存在,推測縮減狀態是一狀態,該狀態指示:相對於在推測寬度指示無縮減情況下之連續運算,推測寬度指示之縮減預期將改良資料處理設備之至少一個效能特性;推測控制電路系統進一步回應於對該推測縮減狀態之偵測而縮減推測寬度指示。
藉由配置處理電路系統以在推測向量運算之序列之執行期間產生進展指示,此舉容許推測控制電路系統相對於推測縮減標準(該等標準可為固定標準,或可為經儲存以便由推測控制電路系統存取及可經重配置之標準)評估彼等進展指示,以便決定當前推測寬度似乎對資料處理設備之所選效能特性(例如產量或能量消耗)具有顯著的不利效應之情況。在偵測到該種情況時,推測控制電路系統隨後經配置以縮減推測寬度指示,從而減少每一向量運算元中將經受推測向量運算之向量元素之數目。
通常情況下,進展指示將經排列以便容許推測控制電路系統辨識推測向量運算之執行對效能特性產生不利影響的任何向量元素位置。例如,每一進展指示可特定地辨識進展指示所相關之向量元素位置。
僅僅舉例而言,如若進展指示辨識出在推測向量加 載運算執行期間將自位於元素位置x之記憶體加載之特定向量元素已在系統之快取記憶體階層內之某個快取等級導致快取未中,則推測縮減標準可辨識將與該種快取未中事件相關連之預期潛時,或可直接辨識該種事件之發生指示推測縮減狀態。儘管推測向量處理仍可在當前規定之推測寬度正確地繼續執行,但此舉可能由於因快取未中而引入之潛時而顯著影響效能,及藉由在此處縮減推測寬度以排除元素位置x及更高位置可避免此潛時。隨後,如若需要則可重複向量運算序列以設法針對所省略之向量元素執行向量運算,及可能在重複該向量運算序列之時間之前不會產生相同之潛時問題(例如,在彼時間之前,所需資料元素可存在於快取記憶體中及因而可不產生快取未中)。
由此,經由使用本發明,資料處理設備之至少一個效能特性可在執行推測向量運算之同時,藉由設法避免以特定推測寬度執行推測向量運算將對彼所選之效能特性具有不利影響之情況而得以改良。
進展指示可採用多種形式。在一個實施例中,進展指示指示在推測向量運算之執行期間在處理電路系統內發生之產量影響事件。或者或此外,進展指示可指示在推測向量運算之執行期間在處理電路系統內發生之能量消耗影響事件。儘管在一個實施例中,由進展指示所指示之影響事件是對效能特性具有負面影響之事件,但在一個實施例中,影響事件亦可辨識對效能特性具有正面影響之事件,例如比預期更快地執行或消耗更少能量的特定運算。
觸發進展指示之產生之事件可採用多種形式。在一個實施例中,回應於在推測向量運算之執行期間在處理電路系統內發生之微架構事件而發出進展指示中之至少一些。
如若處理器之特徵、組件,或行為僅影響實施之品質(例如使處理器使用更多或更少時間或能量來執行程式)而不是實施之正確性(亦即是否正確地實施指令集架構),則處理器之特徵、組件,或行為可被視作「微架構」。例如,現代處理器使用分支預測器以加快分支,使用快取記憶體以加快記憶體讀取,使用寫入緩衝器以加快記憶體寫入,使用變換旁看緩衝器以加快頁表查找,及使用管線以加快指令序列之執行。該等特徵全部可被視作微架構特徵,因為該等特徵加快執行但卻不影響程式之最終輸出結果。
此情況應與影響實施正確性之處理器特徵、組件,或行為相反,該等特徵、組件,或行為被視「架構」。例如,現代處理器使用頁表及頁錯誤異常以實施虛擬記憶體,使用中斷以支援上下文切換,及使用算術異常以處置諸如「除以零」之算術錯誤狀態。架構特徵、組件,或行為例如藉由使額外指令被執行而產生通常會影響程式執行之架構事件。相反,微架構特徵、組件,或行為產生影響微架構之行為之微架構事件,但對架構等級則不具有任何影響。該等微架構特徵、組件,或行為可能例如使程式比原本情況運行稍慢,但不影響程式執行。
推測寬度指示可採用多種形式。例如,推測寬度指示可由遮罩規定或由辨識諸如開始元素位置及/或結束元素位 置之特定元素位置之一或更多個暫存器的內容規定。在一個實施例中,推測寬度指示不僅指示每一向量運算元中將經受推測向量運算之向量元素之數目,還進一步辨識每一向量運算元中將經受該推測向量運算之第一向量元素。
儘管將經受推測向量運算之向量元素之數目無需佔據一系列鄰接的向量元素位置,但在一個實施例中,推測寬度指示確實將每一向量運算元中將經受該推測向量運算之向量元素之數目辨識為自該第一向量元素開始之順序向量元素之規定數目。
在一個實施例中,處理電路系統經配置以執行指令向量迴路,向量迴路包括定義該向量運算序列之指令及在該向量運算序列之執行之後在向量迴路內之確定點處經執行之至少一個評估指令,該至少一評估指令之執行使得決定所需之向量寬度。進一步而言,推測控制電路系統回應於所需向量寬度之決定以藉由參考推測寬度指示之當前值而決定該向量運算序列之執行是導致推測過度還是推測不足,及倘若發生該推測不足,則設定重複旗標以使該指令向量迴路之進一步迭代得以執行。由此,推測寬度可在推測向量運算之執行期間按需要而變化,後續之推測向量運算序列之迭代按照需要而經執行以確保最終對全部所需向量元素都執行了向量運算。
在一個實施例中,在指令向量迴路之進一步迭代之後,推測控制電路系統經配置以在慮及在指令向量迴路之先前迭代期間經處理之向量元素數目之情況下將推測寬度指示 初始化至經修正之初值。
在一個實施例中,向量迴路包括一或更多個在確定點之後待執行之非推測指令,推測控制電路系統進一步經配置以設置遮罩值以辨識每一向量運算元中將經受由該一或更多個非推測指令定義之非推測運算之向量元素之數目。在一個實施例中,倘若發生推測不足,則此遮罩將經設定以辨識在該確定點處存在之推測寬度之值,而倘若發生推測過度,則遮罩將經設定以辨識該確定點所決定的所需向量寬度。
在一個實施例中,資料處理設備包括向量暫存器庫,該庫經配置以儲存向量運算元以用於由處理電路系統存取,及處理電路系統包括資料存取電路系統,該電路系統經配置以執行向量存取運算以便在向量暫存器庫與包括至少快取儲存器之一個等級之記憶體系統之間移動向量運算元。在該實施例中,資料存取電路系統可經配置以發出與在向量存取運算之執行期間發生之快取未中相關之資訊以作為進展指示。該種快取未中可產生顯著潛時,及因此可在決定是否縮減推測寬度時提供有用資訊。
在一個實施例中,資料處理設備進一步包括變換旁看緩衝器(translation lookaside buffer;TLB),資料存取電路系統在向量存取運算之執行期間參考TLB,資料存取電路系統經進一步配置以發出與在向量存取運算之執行期間發生之TLB未中相關之資訊以作為進展指示。TLB未中亦可產生顯著潛時,因為在此情況下可能必須執行「頁表移動」過程以便自記憶體擷取所需頁表資訊以用於儲存在TLB內,及由 此,TLB未中之指示亦可在決定是否縮減推測寬度時提供有用資訊。
儘管進展指示之上述兩個實例係關於資料存取電路系統之活動,但將瞭解,處理電路系統之其他組件亦可經排列以向推測控制電路系統提供進展指示。實際上,除由執行推測向量運算之處理電路系統所發出之進展指示之外,進展指示亦可由該系統內之其他組件發出,例如經配置以執行標量運算之標量電路系統,因為正執行之推測向量運算可能對該系統內之彼等其他組件具有效能影響。例如,如若推測迴路包含大量運算(無論是向量還是標量),則在推測寬度縮減過多之情況下將必須重複彼等運算。追蹤所執行之標量及向量運算之數目容許此潛在重複成本影響對縮減推測寬度之決定。
在一個實施例中,資料處理電路系統回應於推測寬度指示之縮減而改變每一向量運算元中經受所選之向量運算之向量元素數目,該等所選之向量運算在該序列發生,該序列自一向量運算開始,該向量運算之進展指示導致偵測到推測縮減狀態,該推測縮減狀態使推測寬度指示得以縮減。在一個特定實施例中,所選之向量運算包括向量運算(該向量運算之進展指示導致推測寬度縮減)及在序列中該向量運算隨後之全部向量運算。
此外,在一個實施例中,此方法可經擴展以額外改變每一向量運算元中經受未完成向量運算之向量元素之數目,該等未完成向量運算在序列中在一向量運算之前出現, 該向量運算之進展指示導致偵測到推測縮減狀態,該推測縮減狀態使推測寬度指示得以縮減。由此,此方法容許對經受先前發起之向量運算之向量元素之數目進行回顧修整,先前發起之該等向量運算在縮減推測寬度指示之時仍在進行中。此舉可由此降低在其他情況下完成彼等先前發起之推測向量運算時所消耗之能量消耗。
在一個實施例中,資料處理設備進一步包括控制電路系統,該控制電路系統經配置以回應於推測寬度指示之縮減而降低處理電路系統之一或更多個組件內之功率消耗。此舉可以多種方式達成,但在一個實施例中,控制電路系統採用時鐘閘控及功率閘控中之至少一者以降低該一或更多個組件內之功率消耗。由此,如若使用時鐘閘控機制,則處理電路系統內之某些組件可移除其時鐘訊號,以便防止該等組件在現位於已修正之推測寬度以外之元素位置上之推測向量運算執行中消耗功率。在一些情況下,功率閘控可改為用以自相關組件移除電源。在一個實施例中,控制電路系統可經配置以連續接收當前推測寬度之指示,或可經配置以僅在推測寬度已變更時接收指示。
有數種方式可規定推測寬度指示之初值及推測縮減標準。例如,在一個實施例中,由將由資料處理設備執行之指令規定推測寬度指示經初始化之初值及推測縮減標準中至少一者。該指令可為處理電路系統所執行之指令中之一者,或實際上可為推測控制電路系統所執行之特定指令,例如用以啟動推測之指令。在一替代性實施例中,預定推測寬度指 示經初始化之初值及推測縮減標準中至少一者。
在又一實施例中,資料處理設備可進一步包括預測電路系統,該電路系統經配置以維持關於推測寬度值之歷史資料,該等推測寬度值在確定點用於先前由處理電路系統執行之推測向量運算之序列。然後,預測電路系統可針對將由處理電路系統執行之推測向量運算之當前序列而經配置,以在執行推測向量運算之當前序列之前,藉由參考歷史資料而決定設定推測寬度指示之初值。或者或另外,預測電路系統可維持關於用於先前推測向量運算序列之推測縮減標準之歷史資料,且然後藉由參考該歷史資料而決定將用於推測向量運算之當前序列的推測縮減標準。
可以多種方式辨識推測向量運算之序列。例如,指令集可包括某些向量指令之非推測版本及推測版本,以便可將特定指令明確辨識為推測指令。或者,資料處理設備可經配置以進入及退出推測運算模式,在推測運算方法內遇到之全部指令以推測方式經執行。在支援該種推測運算模式之一個實施例中,推測控制電路系統回應於開始推測指令之執行以觸發推測運算模式,及處理電路系統經配置以回應於在該推測運算模式期間經執行之指令而執行推測向量運算。
在一個該種實施例中,推測控制電路系統進一步回應於確定指令之執行而終止推測運算模式。
在一個實施例中,推測控制電路系統回應於推測縮減狀態而修正推測寬度指示,以指示每一向量運算元中至少一向量元素將經受推測向量運算。藉由對推測寬度指示設置 最低限制以便處理每一向量運算元中至少一個向量元素,此舉確保進展始終為正向。當推測寬度指示辨識單個向量元素時,此情況實際上是沒有推測正在執行之情況。
儘管推測縮減標準可直接規定一或更多個標準,該等標準在得以滿足之情況下指示推測縮減狀態之存在,或者或另外,推測縮減標準可包括由推測控制電路系統維持之效能容限資訊,推測控制電路系統經配置以在慮及在推測向量運算序列之執行期間產生之進展指示的情況下調整效能容限資訊。在一個該種實施例中,效能容限資訊可被視作提供效能特性在推測向量運算之處理期間如何受影響之可用鬆弛指示,然後,依據接收到之進展指示而調整該鬆弛指示。在一個實施例中,進展指示可僅指示對所選之效能特性具有負面影響之事件,及因此,將僅在一個方向上調整鬆弛指示。然而,在替代性實施例中,進展指示可指示兼具負面影響及正面影響之事件,及在該種實施例中,可雙向調整鬆弛指示。無論效能容限資訊(鬆弛指示)經如何調整,推測控制電路系統都可經配置以在效能容限資訊到達觸發點之情況下偵測到推測縮減狀態。
在一個實施例中,推測控制電路系統在決定推測寬度指示將縮減之量時參考效能容限資訊。此舉使得能夠慮及超出效能容限的程度而動態管理推測寬度縮減量。
或者,可預定在偵測到推測縮減狀態時推測寬度指示將縮減之量。可藉由辨識推測寬度將縮減之元素位置預置數目來預定此量,或可藉由辨識在決定如何調整推測寬度時 使用之特定規則來預定此量。
自第二態樣可見,本發明提供控制推測向量運算之效能之一方法,該方法包括:對向量運算元執行推測向量運算序列,每一向量運算元包括複數個向量元素;維持指示每一向量運算元中將經受該推測向量運算之向量元素數目的推測寬度指示,該推測寬度指示在該推測向量運算序列之執行之前經初始化至一初值;在該推測向量運算序列之執行期間產生進展指示;藉由參考進展指示及推測縮減標準來偵測推測縮減狀態之存在,推測縮減狀態是一狀態,該狀態指示:相對於在推測寬度指示無縮減情況下之連續運算,推測寬度指示之縮減預期將改良資料處理設備之至少一個效能特性;及在偵測到該推測縮減狀態時,縮減推測寬度指示。
自第三態樣可見,本發明提供一種電腦程式產品,該電腦程式產品以非暫時形式儲存電腦程式,該電腦程式用於控制電腦以提供對應於根據本發明第一態樣之資料處理設備之程式指令的虛擬機執行環境。
自第四態樣可見,本發明提供一種資料處理設備,該設備包括:處理手段,用於對向量運算元執行推測向量運算序列,每一向量運算元包括複數個向量元素;推測控制手段,用於維持指示每一向量運算元中將經受該推測向量運算之向量元素數目的推測寬度指示,該推測寬度指示在該推測向量運算序列之執行之前經初始化至一初值;該處理手段用於在該推測向量運算序列之執行期間產生進展指示;推測控制手段,用於藉由參考進展指示及推測縮減標準來偵測推測 縮減狀態之存在,推測縮減狀態是一狀態,該狀態指示:相對於在推測寬度指示無縮減情況下之連續運算,推測寬度指示之縮減預期將改良資料處理設備之至少一個效能特性;推測控制手段,用於藉由縮減推測寬度指示來回應於對該推測縮減狀態之偵測。
5‧‧‧資料處理設備
10‧‧‧指令佇列
20‧‧‧解碼電路系統
30‧‧‧向量處理電路系統
35‧‧‧向量處理單元
40‧‧‧向量暫存器庫
50‧‧‧向量加載/儲存單元
55‧‧‧TLB儲存器
60‧‧‧推測控制電路系統
65‧‧‧控制暫存器
70‧‧‧推測縮減標準
72‧‧‧1級快取記憶體
74‧‧‧2級快取記憶體
76‧‧‧主記憶體
82‧‧‧路徑
85‧‧‧推測預估電路系統
87‧‧‧歷史儲存器
90‧‧‧路徑
92‧‧‧時鐘/功率閘控電路系統
100‧‧‧推測寬度值
105‧‧‧推測旗標
110‧‧‧第一元素位置暫存器
115‧‧‧推測寬度暫存器
120‧‧‧向量
130‧‧‧遮罩暫存器
200‧‧‧迭代
205‧‧‧迭代
210‧‧‧迭代
215‧‧‧第四迭代
220‧‧‧點
300‧‧‧步驟
305‧‧‧步驟
310‧‧‧步驟
315‧‧‧步驟
320‧‧‧步驟
325‧‧‧步驟
330‧‧‧步驟
340‧‧‧步驟
345‧‧‧步驟
350‧‧‧步驟
355‧‧‧步驟
360‧‧‧步驟
365‧‧‧步驟
370‧‧‧步驟
375‧‧‧步驟
380‧‧‧步驟
385‧‧‧步驟
390‧‧‧步驟
400‧‧‧步驟
405‧‧‧步驟
410‧‧‧步驟
420‧‧‧VOP1
430‧‧‧元件符號
435‧‧‧VOP3
440‧‧‧VOP4
445‧‧‧元件符號
450‧‧‧元件符號
460‧‧‧VOP1
465‧‧‧點
475‧‧‧元件符號
480‧‧‧元件符號
500‧‧‧點
510‧‧‧向量加載指令
515‧‧‧VOP1
520‧‧‧VOP2
525‧‧‧點
530‧‧‧向量加載運算
535‧‧‧VOP1
540‧‧‧VOP2
600‧‧‧步驟
605‧‧‧步驟
610‧‧‧步驟
615‧‧‧步驟
620‧‧‧步驟
625‧‧‧步驟
630‧‧‧步驟
635‧‧‧步驟
640‧‧‧步驟
655‧‧‧步驟
660‧‧‧步驟
665‧‧‧步驟
670‧‧‧步驟
675‧‧‧步驟
680‧‧‧步驟
685‧‧‧步驟
687‧‧‧斜坡
688‧‧‧點
689‧‧‧斜坡
690‧‧‧點
691‧‧‧線
700‧‧‧應用程式
710‧‧‧虛擬機程式
720‧‧‧主機作業系統
730‧‧‧主處理器
將藉由參考其實施例僅以舉例之方式進一步描述本發明,該等實施例如附圖中所圖示,該等附圖中:第1圖是根據一個實施例之資料處理設備之方塊圖;第2A圖至第2C圖示意地圖示在第1圖中根據一個實施例之推測控制電路系統內提供的多種控制暫存器;第3圖示意地圖示一標量指令迴路,該迴路可藉由使用本文描述的實施例之技術而經向量化;第4圖及第5圖示意地圖示用以向量化第3圖中根據一個實施例之標量迴路之向量指令序列;第6圖是一流程圖,該圖示意地圖示在推測向量運算序列之執行期間依據一個實施例之推測寬度縮減方式;第7圖是一流程圖,該圖圖示根據一個實施例在開始推測時執行之步驟;第8圖是一流程圖,該圖圖示根據一個實施例在確定(commit)過程期間採取之步驟;第9圖是一流程圖,該圖圖示根據一個實施例在向量運算序列之執行期間在條件性退出階段執行之步驟; 第10A圖及第10B圖示意地圖示,根據某些實施例,在推測寬度縮減之後,可如何改變擱置推測向量運算之操作;第11A圖及第11B圖示意地圖示,根據又一實施例,在推測寬度縮減之後,可如何改變擱置推測向量運算之操作;第12A圖及第12B圖示意地圖示與不使用本文描述之實施例之技術(第12A圖)情況下之推測向量運算之效能相比較,在使用本文描述之實施例之技術(第12B圖)時可實現之效能差異;第13圖是一流程圖,該圖圖示根據一個實施例在縮減標準包括鬆弛(slack)指示形式之效能容限資訊之實施例中可如何調整推測寬度;第14A圖及第14B圖示意地圖示,根據兩個實施例,在採用第13圖之方法時鬆弛指示可如何改變;及第15圖示意地圖示根據一個實施例之資料處理設備之虛擬機實施方式。
第1圖圖示根據一實施例之資料處理設備5之一部分。該圖僅圖示向量處理部分,及亦可能存在標量處理電路系統、標量加載/儲存單元,及標量暫存器庫,以便可解碼及執行向量指令及標量指令。
提供保持待執行之指令之指令佇列10,該等指令經路由至解碼電路系統20,該解碼電路系統經排列以解碼指令 及將控制訊號發送至第1圖中設備內之適當電路。特定而言,對於一般向量處理指令而言,解碼電路系統20會將控制訊號發出至向量處理電路系統30內之相關向量處理單元35,該等向量處理單元隨後將藉由參考儲存在向量暫存器庫40內之一或更多個向量來源運算元來執行所需之向量處理運算。通常情況下,彼等運算之結果亦儲存回向量暫存器庫40以作為一或更多個向量目標運算元。如第1圖中示意地圖示,向量處理單元可採用多種形式,例如一或更多個算術邏輯單元(arithmetic logic unit;ALU)、浮點單元(floating point unit;FPU)等。
對於任何向量資料存取指令而言,彼等指令之解碼將使控制訊號經發出至向量處理電路系統30內之向量加載/儲存單元50,該單元經配置以使一或更多個資料運算元在向量暫存器庫40與快取/記憶體(快取/記憶體在本文中被稱作記憶體系統)之間在雙向中任一方向移動。如為了說明所圖示,記憶體系統可包括階層式快取記憶體結構,該結構由位於向量暫存器庫與主記憶體76之間的1級快取記憶體72、2級快取記憶體74,及可能更多的快取記憶體等級所組成。
如若向量資料存取指令是向量加載指令,則加載/儲存單元50將自記憶體系統加載至少一個向量運算元至向量暫存器庫40。同樣,如若向量資料存取指令是向量儲存指令,則加載/儲存單元50將自向量暫存器庫40將至少一個向量運算元向外儲存至記憶體系統。
根據本文所述之實施例,處理電路系統30可經排列 以執行推測向量運算序列,提供推測控制電路系統60以維持指示每一向量運算元中將經受推測向量運算之向量元素數目之推測寬度指示。特定而言,推測控制電路系統具有數個控制暫存器65,該等控制暫存器控制經由路徑82經遞送至向量處理電路系統30之資訊,在一個實施例中,彼等控制暫存器之狀態辨識執行推測運算之時間及亦辨識當前推測寬度。
在第1圖中圖示之實施例中,儲存在指令佇列10中之指令序列將包括開始推測指令,該開始推測指令在由解碼電路系統20解碼時將使控制訊號經發出至推測控制電路系統60以啟動推測運算模式。特定而言,在一個實施例中,推測控制電路系統60將回應於該種控制訊號以設定控制暫存器65內之推測旗標,以辨識推測模式當前有效。然後,此資訊將經由路徑82經路由至向量電路系統30,且然後,將由向量處理電路系統30依據自解碼電路系統20接收到的控制訊號來執行之任何後續運算將以推測方式執行,直至推測運算模式退出之時為止。在一個實施例中,經由確定指令而退出推測模式,該指令在由解碼電路系統20解碼時使控制訊號經發送至推測控制電路系統60,從而使控制電路系統清除推測旗標。
儘管在所述之實施例中提供一特定推測運算模式,但並非必需特定推測運算模式。相反,在一替代性實施例中,可提供指令集中至少一指令子集之推測及非推測版本,以便可以推測方式執行序列內之各個指令。
對於由向量處理電路系統30執行之任何推測運算 而言,自推測控制電路系統60內之控制暫存器65經由路徑82遞送推測寬度指示,以辨識每一向量運算元中將經受彼等推測向量運算之向量元素之數目。當啟動推測時,推測寬度指示將經初始化至初值,該值在一個實施例中例如可為運算元之整個向量寬度。因此,僅僅舉例而言,如若向量運算元包含16個向量元素,則推測寬度指示之初值可設定為16。
在推測向量運算之執行期間,處理電路系統30經排列以經由路徑80將進展指示發出至推測控制電路系統60。進展指示提供有關由向量處理電路系統所正在執行之多個運算之進展的資訊。儘管進展指示可以多種方式發出,但在一個實施例中,向量處理電路系統內之數個事件引起輸出進展指示。在一個實施例中,該等進展指示將指示產量影響事件及/或能量消耗影響事件。在一個實施例中,該等事件是對產量或能量消耗具有負面影響之類型的事件。然而,在一替代性實施例中(如稍後將藉由參考第13圖而進行描述之實施例),該等事件亦可包括對產量或能量消耗具有正面影響之事件。
產生該種進展指示之事件的類型可採用多種形式,但在一個實施例中,該等事件是在推測向量運算之執行期間在處理電路系統30內出現之微架構事件。如前文所論述,該種微架構事件僅影響實施之品質(例如使處理電路系統在執行包含正在執行之指令的程式時使用更多或更少時間或能量),而不影響實施之正確性。因此,微架構事件之存在自身不需要改變電路系統運算。然而,如下文將更詳細地論述,根據所描述之實施例,推測控制電路系統使用進展指示以便 決定以下情況:相對於在未發生該種推測寬度縮減之情況下繼續運算,推測寬度之縮減可能改良資料處理設備之至少一個效能特性。
特定而言,推測控制電路系統60可存取縮減標準70,該標準可為固定標準,或可為例如經由指令串流內之指令執行而可經配置的標準。有數種方式可規定縮減標準。例如推測縮減標準可辨識將與經由進展指示而經報告之某些事件關連之預期潛時及/或能量消耗,推測控制電路系統60保持與隨時間而接收到之事件相關之潛時及/或能量消耗之標籤,及在達到某一觸發點時偵測到推測縮減狀態。或者,縮減標準70可直接辨識某些事件,該等事件出現時即指示推測縮減狀態之存在。
在偵測到推測縮減狀態時,經由對經由路徑80接收到之進展指示針對縮減標準70之分析,推測控制電路系統60經配置以縮減推測寬度,在此點處,控制暫存器65之內容經更新以辨識該縮減之推測寬度,從而將新推測寬度經由路徑82轉遞至向量處理電路系統30。此舉將使向量處理電路系統30減少經受正在進行之向量處理運算之向量元素的數目。特定而言,在通常情況下,至少將對數目減少之向量元素執行在產生進展指示(該進展指示導致推測寬度縮減)之運算之後執行之向量運算。在一個實施例中,假設產生了使推測寬度縮減發生之進展指示之運算仍在進行中,則縮減之推測寬度亦可應用於該運算。此外,在下文中將藉由參考第10B圖進行論述之一個實施例中,推測寬度縮減亦可影響當縮減發 生時仍在進行中之任何向量運算,即使彼等運算是在產生了使推測寬度縮減之進展指示之運算之前發出的亦如此。
藉由使用進展指示以偵測具有當前推測寬度之連續運算可能對諸如產量或能量消耗之效能特性具有不利影響之情況,推測控制電路系統可隨後縮減推測寬度以便設法避免該影響。如若隨後決定所需向量元素寬度大於縮減之推測寬度,則由於該推測寬度縮減而自推測運算中經排除之任何向量元素可因此成為推測向量運算之後續迭代之對象。
在推測寬度縮減時,為降低向量處理電路系統30之能量消耗,可選擇性地提供時鐘/功率閘控電路系統92,或該電路系統可經排列以經由路徑90接收當前推測寬度之指示。基於當前的推測寬度資訊,時鐘/功率閘控電路系統可改變供應至向量處理電路系統30內之多個組件之時鐘或功率。例如,如若由於推測寬度之縮減而決定處理電路系統內之某些組件在一或更多個時鐘週期中無需執行任何運算,則可自彼等組件中移除時鐘訊號以降低彼等組件所消耗之功率。如若在更長時段中無需彼等組件,則在設備支援動態電壓按比例縮放之技術之情況下,藉由移除或降低對彼等組件之電壓供應來使其處於低功率操作模式較為適當。
向量處理電路系統內之任何組件可經排列以經由路徑80產生進展指示。然而,慮及可能對產量具有不利影響之事件,該等事件常與在使用向量加載/儲存單元(load/store unit;LSU)50執行加載或儲存操作時出現之快取未中關連。特定而言,如若在執行向量加載或儲存操作時,LSU在與特定向量 元素位置關連之1級快取記憶體72或2級快取記憶體74內偵測到快取未中,則LSU可經由路徑80發送進展指示,該進展指示辨識在哪一快取記憶體等級中偵測到該未中,及發生快取未中之元素位置。由此,推測控制電路系統可使用該資訊,與縮減標準70關連以決定是否縮減推測寬度。縮減標準可例如辨識任何2級快取未中(此快取未中在通常情況下導致明顯的潛時)將導致推測寬度經縮減,以排除產生了2級快取未中之向量元素位置。或者,縮減標準70可有效地為不同元素位置提供不同標準。例如,隨著向量內之元素位置增加,此舉表示更高程度之推測,及由此,儘管與較高元素位置關連之快取未中可立即使推測寬度縮減,但與較低元素位置關連之快取未中無需使推測寬度縮減。
資料處理系統常在存取記憶體時使用虛擬位址,及TLB儲存器55用以將彼等虛擬位址轉變為實體位址以用於存取記憶體系統。將容易理解,TLB儲存器55具有數個項目,該等項目辨識特定虛擬位址、用以將每一虛擬位址轉換為實體位址之資訊,及諸如彼等地址係關於可快取記憶體區域還是可緩衝記憶體區域之某些許可屬性資訊。LSU將因此向TLB儲存器發出虛擬位址,及如若在TLB儲存器內偵測到該虛擬位址之命中,則所需之實體位址及許可屬性資訊可立即返回LSU。然而,倘若未中,則TLB儲存器將通常需要執行頁表移動過程以便自包含必需資訊之記憶體系統中擷取頁表,以賦能將虛擬位址轉變為實體位址及提供關連之許可屬性。在該過程期間,TLB儲存器55將按需求存取1級快取記 憶體72及更低等級之記憶體階層,以便擷取所需之頁表資訊。倘若在該過程期間發生快取未中,則此情況可再次經由路徑80作為進展指示而經報告至推測控制電路系統,及由推測控制電路系統用以決定是否縮減推測寬度。
在一個實施例中,可預定推測寬度指示的初始化初值及推測縮減標準。然而,該兩者可替代性地由經資料處理設備執行之指令中之至少一者規定。例如,開始推測指令可辨識將在控制暫存器65內設定之初始推測寬度。當在推測向量運算之執行期間評估是否縮減推測寬度時,該指令亦可辨識將由推測控制電路系統60使用之某些推測縮減標準。作為另一選項,可提供推測預估電路系統85,該電路系統用以維持關於用於先前的推測向量運算序列之推測寬度值及/或推測縮減標準之歷史資料。針對推測寬度值,歷史資料可辨識在先前的推測向量運算序列之執行期間在確定點之最終推測寬度值。預估電路系統可因此經排列以接收與啟動推測之指令關連之程式計數器值,及在慮及根據該程序計數器值啟動之任何先前推測向量運算序列之情況下基於該程式計數器值來參考歷史資料,以便決定用於推測寬度指示之初值,及若需要則決定將使用之推測縮減標準。歷史資料將儲存在可由推測預估電路系統85存取之歷史儲存器87內。
儘管在第1圖中,進展指示圖示為僅由向量處理電路系統30所發出,但在一替代性實施例中,推測控制電路系統60亦可自系統內之別處接收進展指示,例如自標量處理電路系統接收。
控制暫存器65可採用多種形式,及第2A圖圖示可儲存在控制暫存器內之數個參數。首先,維持推測寬度值100,及在一個實施例中,此值可採用1與16之間之值,該值指示每一向量運算元中將經受推測向量運算之向量元素之數目可在1與16個向量元素之間改變(在一個實施例中,16個向量元素向量元素表示向量運算元之全寬)。
在一個實施例中,控制暫存器65亦包括推測旗標105,該旗標經設定以指示推測是開啟還是關閉。當推測關閉時,以非推測方式執行向量運算。然而,當推測開啟時,以推測方式執行向量運算。
可以多種方式規定推測寬度指示100。然而,在一個實施例中,控制暫存器65同時包括第一元素位置暫存器110及推測寬度暫存器115。第一元素位置暫存器110辨識將經受向量處理運算之第一向量元素位置,而推測寬度暫存器115則辨識最終向量元素位置,然後,由該兩個暫存器之內容之間的差異指示向量運算元120內之推測寬度。
在向量運算序列之第一迭代期間,可能是第一元素位置暫存器指向向量120內之第一向量元素,及推測寬度暫存器115可例如指向最後之向量元素,由此規定整個向量寬度。在向量運算之執行期間,推測寬度暫存器內容可經縮減以辨識經縮減之推測寬度。如若在到達確定點之時,推測寬度已經縮減至確定點處決定之向量元素所需數目以下,則可執行向量運算之後續迭代,及此時,第一元素位置暫存器110將經設定以辨識尚未經由先前之推測向量運算迭代處理之第 一所需向量元素。然後,推測寬度暫存器115將經設定以辨識後續迭代所需之推測寬度。
儘管在第2B圖之實例中,維持兩個獨立暫存器,但在一替代性實施例中,可提供遮罩暫存器130以辨識推測寬度指示。特定而言,遮罩可包含向量運算元120內每一元素位置之位元,彼等位元經設定為零或一以辨識推測寬度。在一個實施例中,推測寬度將由遮罩內包含之一系列邏輯1值規定,方法是藉由某些彼等邏輯1值轉變為邏輯0值以辨識縮減之推測寬度,當推測寬度縮減時,該遮罩之內容在運算執行期間更新。將瞭解,在替代性實施例中,遮罩內之邏輯1及邏輯0值之含義可反轉。
第3圖示意地圖示可藉由使用上文所述之實施例而經向量化之標量迴路。標量指令之此迴路包括系列指令,該系列指令中之一些指令在經執行以決定是否退出迴路之狀態測試之前出現,及該系列指令中之一些指令在該狀態測試之後出現。在圖示之實例序列中,迴路經歷三個完整迭代200、205、210,且然後,狀態測試經評估為指示該迴路將在部分穿過第四迭代215之點220處結束。通常情況是:在狀態測試中,所需迭代數目未知,及因此,儘管在該實例中該迴路在部分穿過第四迭代時終止,但在其他實例中,迴路可能在執行更多迭代之後才終止,或甚至提早終止。
當執行推測向量運算以便向量化該種標量迴路時,每一標量指令由向量指令替代,在此情況下,所規定之向量運算元包括複數個向量元素,每一向量元素係關於一不同迭 代。因為並不知曉標量迴路將在哪一迭代退出,因此無法藉由規定具有特定數目之向量元素之向量運算元來向量化迴路。相反,如第4圖所圖示,對於在狀態測試之前出現之標量指令之等效向量指令而言,推測寬度用以推測所需之向量元素數目。如前文所論述,在一個實施例中,此推測寬度最初將經設定為諸如16之所選值,及由此,在該實例中,該等向量指令中之每一者之執行最初將複製16次等效的標量指令之執行(亦即16個單獨迭代中每一迭代為一次)。如若當前推測寬度產生進展指示,該等進展指示使推測縮減狀態被偵測到,則如前文所論述,推測寬度將縮減,同時確保每一向量運算元中至少一向量元素繼續被處理。
當隨後評估狀態測試時,則可決定需要多少向量元素。例如,可評估出等效標量迴路原本將在第三迭代結束,及由此,所需推測寬度是三。假設推測寬度仍大於三,則將已經處理全部所需向量元素。然而,如若當前推測寬度小於狀態測試指示之迭代數目,則隨後將需要執行向量運算序列之至少又一迭代以處理剩餘之所需向量元素。
在確定點之後,以非推測方式執行剩餘向量指令。然而,慮及在狀態測試分析期間所辨識之寬度,遮罩可經設定以確保僅處理所需數目之向量元素(或如若該推測寬度小於所需寬度,則相當於當前推測寬度之數目,及由此將需要又一迭代)。然後,處理將條件性退出。特定而言,如若狀態測試指示已寫入全部所需數據,則處理將退出,反之則處理將重複至少一次。
第5圖圖示針對使用特定推測指令及確定指令之情況的向量迴路。推測指令用以開啟推測及因此設定推測旗標105。隨後,以推測方式執行系列指令,其中推測寬度100用以辨識每一向量運算元中之向量元素數目。如前文所論述,推測寬度可在向量運算之執行期間依據對推測縮減狀態之偵測而經縮減。其後,將執行一或更多個指令以決定適當寬度以確定,且隨後,將執行單獨的確定指令以使推測關閉。在此之後,將執行系列的非推測指令,及如前文所論述,遮罩或長度值可與彼等指令關連使用,以在慮及在確定點之前所作決定之情況下適當地設定向量元素寬度。然後,可使用分支指令以便決定應重複迴路還是應退出迴路。
第6圖是一流程圖,該圖圖示根據一個實施例之所執行之推測寬度縮減過程。在步驟300中,推測控制電路系統等待進展指示之接收,及如若在步驟300中決定未接收到進展指示,及在步驟305中例如因為推測旗標經判定仍位於控制暫存器65內而決定推測未終止,則流程在步驟300處等候直至接收到進展指示。如若推測終止,則過程自步驟305前進至310,過程在步驟310處結束。
在接收到進展指示之後,在步驟315中,推測控制電路系統60藉由參考推測縮減標準70分析該進展指示,隨後在步驟320中決定是否已經偵測到推測縮減狀態。如若未偵測到,則過程返回步驟300。然而,如若偵測到推測縮減狀態,則在步驟325中,推測控制電路系統決定所需之推測縮減程度。此程度可為預定量,使推測控制電路系統縮減推測 寬度該預定量,或相反,此程度可在待應用之規則方面經預定,例如設定新的推測寬度以便最高有效元素位置是已辨識之產生進展指示之元素位置左側之位置,從而自經修正之推測寬度中排除彼已辨識之元素位置。
在一替代性實施例中,可在慮及推測縮減標準自身之情況下決定推測縮減程度。下文中將藉由參考第13圖描述該種方法之一實例,其中,縮減標準維持鬆弛值,該值指示在推測向量運算之處理期間在效能特性如何受影響方面可用的鬆弛,及在慮及超過鬆弛之程度之情況下而動態管理推測寬度縮減量。
在步驟325中決定推測縮減程度之後,在步驟330中,推測寬度經縮減,隨後,過程返回步驟300。如上所述,一旦推測寬度已經縮減,則此資訊經由路徑82經傳遞至向量處理電路系統30,及使在任何未完成推測運算的執行期間經處理之向量元素數目減少。
第7圖是一流程圖,該圖圖示在開始推測時執行之過程。儘管推測可以多種方式開始,但在一個實施例中提供一明確的開始推測指令,該指令在由解碼電路系統20解碼時使適當的控制訊號經發出至推測控制電路系統60。在步驟340中,藉由設定適當的控制暫存器65而決定及設定初始推測寬度。如先前所述,可預定初始推測寬度,可在自解碼電路系統轉遞之控制資訊內辨識初始推測寬度,或甚至初始推測寬度可由推測預估電路系統85提供。在步驟340之後,在步驟345中依據設備是否正在使用明確的推測模式而選擇性地開 啟推測模式。
第8圖是一流程圖,該圖圖示一確定過程,該過程在第5圖中向量迴路內之系列推測運算已經執行之後及在任何非推測運算之執行之前經執行。一或更多個指令可經執行以便執行第8圖中圖示之步驟。在步驟350中,狀態測試經執行以決定待處理之所需向量寬度,亦即所需之向量元素數目。隨後,在步驟355中,讀取當前推測寬度,及在步驟360中,比較當前推測寬度與所需向量寬度。
在步驟365中,隨後決定推測向量運算是否已導致推測不足。如若在到達確定點時,推測寬度已縮減至小於所需向量寬度之點處,則將發生此情況。否則,如若當前推測寬度大於所需向量寬度,則過程將已推測過度。
倘若推測過度,則過程前行至步驟385,在該步驟中清除重複旗標,從而指示不再需要更多向量迴路迭代。隨後,在步驟390中為非推測指令設定遮罩,以辨識所需之向量寬度。此舉將賦能向量迴路在無需另一迭代的情況下向量化等效的標量迴路。
然而,倘若推測不足,則在步驟370中,設定重複旗標以調用向量迴路之後續迭代。隨後,在步驟375中為非推測指令設定遮罩,以辨識當前之推測寬度。由此,一旦當前向量迴路完成,則推測向量運算及非推測運算皆將已處理相同數目之向量元素。由此,向量迴路可重複一或更多次以處置所需向量寬度內之剩餘向量元素。
在使用特定推測模式之實施例中,在步驟375或390 之後,推測模式在步驟380中關閉。此舉將確保以非推測方式執行向量迴路內隨後的指令。
第9圖圖示一條件性退出過程,該過程在通常情況下在一系列推測指令及非推測指令之執行之後由諸如第5圖中圖示之分支指令執行。在步驟400中,決定是否設定重複旗標。如若決定設定,則過程返回步驟405中向量迴路開始處之開始推測點,反之過程則在步驟410中結束。
第10A圖是示意地圖示推測向量運算之處理在推測寬度縮減時如何變更之圖。最初,執行推測指令以開啟推測模式及將推測寬度設定至規定量,在此實例中為16個向量元素。在圖示之實例中,假定向量處理電路系統內之組件在單個週期期間能夠處理來自每一來源運算元中之兩個向量元素,及由此,執行向量運算VOP1 420之組件將採用8個週期以完成全部所需運算。
在圖示之實例中,假定VOP1與VOP2之間存在資料相依性(在此實例中,VOP2是向量加載),以便VOP2之執行在VOP1之執行開始之後一個週期才開始。
如此實例中圖示,當LSU 50正在處理向量加載時,LSU偵測到與向量元素9(亦即元素位置10處之向量元素)相關連之微架構事件及發出進展指示,該進展指示辨識該事件及元素位置,如第10A圖中元件符號430所指示。該種微架構事件例如可為在設法加載向量元素9時發生之快取未中,及在此實例中,假定當相對於縮減標準70評估該進展指示時,推測控制電路系統60決定將推測寬度縮減至9個元素 之寬度,從而排除向量元素9(如前文提及,此向量元素位於元素位置10處)。向量運算VOP3圖示一向量運算之實例,該向量運算在進展指示發出及關連之推測寬度縮減之前已開始經處理,但該向量運算在推測寬度縮減時仍在進行中。如VOP3 435內之十字所圖示,回應於推測寬度之縮減,執行VOP3之組件可經排列以揀出在元素位置10或更高位置處向量元素中任何者。如前文藉由參考第1圖所論述,時鐘閘控及/或功率閘控技術可用以基於縮減之推測寬度來降低執行VOP3之組件之能量消耗。
向量運算VOP4說明僅在已進行推測寬度縮減之後才啟動之向量運算,及在此實例中,如元件符號440所示,此情況在該向量運算需要相對於前9個向量元素而經執行之最初便將為已知。
在第10A圖中圖示之實例中,假定向量運算VOP4 440是另一向量加載運算,及該向量加載在前一向量加載VOP2完成之後才可開始執行。
第10B圖圖示一替代性實施例,其中推測寬度之調整不僅影響今後之向量運算,亦影響先前之向量運算。特定而言,如元件符號450所示,當縮減推測寬度時,此情況可使執行VOP2(亦即產生推測縮減之向量運算)之組件亦終止一或更多個後續迭代之處理,在此情況下,兩個迭代相關於最後四個向量元素。
此外,在一個實施例中,過程可用以回顧性地修整甚至在VOP2之前已發出之向量運算之操作。在所示之該實 例中,如元件符號445所指示,VOP1之最終迭代亦基於縮減推測寬度而終止。再一次,時鐘及功率閘控技術可用以降低執行該等運算之組件之能量消耗。可實現之另一優勢是增強效能,因為組件將可用以更快地處理其他運算。例如,當與第10A圖之實例比較時,在第10B圖之實例中,慮及VOP4,LSU 50將提前兩個週期終止VOP2之執行,及由此,VOP4可提前兩個週期開始。
第11A圖及第11B圖圖示推測縮減如何在後續運算之執行中觸發修正之其他實例。在此實例中,假定執行VOP1及VOP2之組件在每一迭代中能夠處理每一來源向量運算元中之8個向量元素,及由此,可在兩個週期中處理原始規定之16個向量元素。如若當執行VOP1 460時推測縮減觸發在點465處發生,則此觸發可用以時鐘閘控(或甚至功率閘控)處置VOP2之某些組件(如元件符號475所指示),對於處理位於元素位置465上或上方之元素位置引起推測縮減之彼等組件尤其如此。然而,並不需要時鐘閘控產生了推測縮減之元素位置上或上方之全部元素位置,及如第11B圖所示,在替代性實施例中,可時鐘閘控僅一較高元素位置子集,如元件符號480所示。如下文中藉由參考第14圖所論述,此情況可能例如歸因於:推測控制電路系統60藉由參考縮減標準而決定推測寬度實際上僅應修整2,而非全部修整以排除向量元素位置465及更高位置。
第12A圖圖示在執行推測向量運算時,諸如2級快取未中之微架構事件可如何引入顯著的潛時。在此實例中, 在點500處執行推測指令,該點設定初始推測寬度為16。然後,執行向量加載指令510,但在此情況下,當設法加載向量元素6(亦即位於向量元素位置7處之資料元素)時,發生2級快取未中。在此實例中,此情況在向量加載運算能夠加載向量元素6及剩餘向量元素之前引入200個潛時週期。由於彼等多個向量運算之間的資料相依性,此情況對隨後兩個向量運算VOP1 515及VOP2 520具有衝擊性影響。由此,在執行確定過程時,在點525處消耗另一週期,推測寬度在此點處仍為16。如可見,此情況導致執行所需向量運算共需212個週期,每一向量元素需要平均13.25週期。
相比而言,第12B圖圖示當使用所述實施例中之適應性推測寬度方法時之情況。儘管在步驟500中,推測寬度再一次經初始設定為16,但當相關於向量加載運算530之資料元素6(元素位置7)偵測到2級快取未中時,此情況使推測控制電路系統60在較短延時(該延時歸因於相對於縮減標準而評估進展指示及決定將進行之縮減而消耗的時間)之後動態地將推測寬度縮減至6。由於縮減之推測寬度,VOP1 535及VOP2 540僅處理前6個元素位置,及由此,在已經執行VOP2之前6個元素之後,基於當前推測寬度6,隨即可在點525處執行確定過程。結果,該過程耗費7個週期以便處理6個元素,每一向量元素平均耗費1.167週期。
假定在確定點處決定所需推測寬度是6或6以下,則將不再需要向量迴路之更多迭代,及過程將完成。如若相反,所需向量寬度經決定為大於6,則將需要執行向量迴路之 一或更多個其他迭代以處理剩餘元素。然而,此舉仍可產生顯著的效能增強,因為在執行後續迭代之前,完全可能不再發生相關於向量元素6之2級快取未中,及由此,後續迭代更加有效的進行。
儘管推測縮減標準可直接規定一或更多個標準,該等標準在得以滿足之情況下指示推測縮減狀態之存在,或者或另外,推測縮減標準可包括由推測控制電路系統維持之效能容限資訊,及在慮及在推測向量運算序列之執行期間產生之進展指示之情況下調整該效能容限資訊。第13圖是一流程圖,該圖圖示根據一該種實施例之推測縮減過程之執行,其中,效能容限資訊採用鬆弛指示之形式,該鬆弛指示提供在推測向量運算之處理期間在效能特性如何受影響方面對可用鬆弛之指示。
在步驟600中,推測寬度在推測開始時經設定為初值,及在步驟605中,參數「鬆弛(slack)」經設定為一些規定預算值。此值可由開始推測之指令提供,可經預設,或可以其他方式提供,例如在包括此推測預估電路系統85之實施例中由該種推測預估電路系統提供。
在步驟610中,決定是否已經接收到進展指示,及如若未接收到,則在步驟615中決定推測是否已終止。如果已終止,則過程在步驟620結束,否則,過程則返回步驟610。
當接收到進展指示時,決定該進展指示指出對效能特性是負面影響還是正面影響。特定而言,在一個可選實施例中,處理電路系統30可提供進展指示,該等進展指示不僅 關於對效能特性具有負面影響之事件,而是亦關於具有正面影響之某些事件,例如指示某些運算已比預期更快地執行。倘若是正面進展指示,則在步驟630中,鬆弛值增大由進展指示指示之一量,隨後過程返回步驟610。
相反,倘若在步驟625中偵測到負面進展指示,則在步驟635中評估參數「成本(cost)」,此參數指示與該負面指示關連之效能成本。隨後,藉由自當前的鬆弛值中減去成本值來調整鬆弛值。然後,在步驟655中,決定鬆弛值當前是否為負,及如若不是,則過程返回步驟610。
如若在步驟655中決定鬆弛值為負,則藉由自當前的推測寬度中減去根據當前鬆弛值所決定之一值,來設定內部參數(SW)。函數可以多種方式設定,但在一個實例中,該函數將導致:負鬆弛值越大,則自推測寬度中減去的量越大。
在步驟665中,偵測到參數SW是否小於1。如若小於1,則在過程前進至步驟675之前,在步驟670中將SW設定為等於1,反之,過程則直接自步驟665進行至步驟675。步驟665、步驟670之目的是確保內部參數SW絕不低於1,以便確保向量迴路之當前迭代將始終產生一些正面進展。特定而言,在步驟685中,推測寬度將經設定為等於SW,及由此,在過程返回步驟610之前,推測寬度將經設定為值1或大於1。
步驟675及680是可選的,及在步驟675中,藉由自當前推測寬度(亦即在步驟685中調整之前的推測寬度)中減去內部參數SW來決定內部參數「縮減(reduction)」。隨 後,在步驟680中,鬆弛值增加已決定之「縮減」值。然後,在步驟685中縮減推測寬度。當使用可選步驟675、680時,將因此可見,每當縮減推測寬度時,依據推測寬度之縮減量而正向調整鬆弛值。
第14A圖及第14B圖示意地圖示在執行第13圖之過程時,鬆弛值可如何改變。在第14A圖之該實例中,假定執行可選步驟630。如斜坡687所示,在經由路徑80接收到一些正面指示之後,鬆弛值最初增大。負面指示使鬆弛值首次下降,且然後,第二負面指示使鬆弛值在點688處降至負值。在此點處,縮減推測寬度,及正向調整鬆弛值縮減量。如斜坡689所指示之連續之正面進展指示使鬆弛值增大更多,但在兩個負面進展指示之後,鬆弛值卻再次在點690處返回負值。此舉再一次使推測寬度縮減,及鬆弛值基於推測寬度之縮減而可選地增大。因此,正面進展指示使鬆弛值遵循線691。
在一個實施例中,在接收到正面指示時,正向調整鬆弛值之量依據推測寬度而定。特定而言,推測寬度越高,正面指示之整體效應越大,及由此,斜坡687比斜坡689具有更陡峭之坡度,及同樣地,斜坡689比斜坡691具有更陡峭之坡度。
在第14A圖中,假定不執行可選步驟675、680,及由此,未在正向上調整鬆弛值以補償推測寬度之縮減。然而,在一替代性實施例中,將執行步驟675及680,及因此在點688、690處,鬆弛值將在所遵循之斜坡689、691之前出現正 跳越。鬆弛值中之正跳躍可能或可能不再次採用鬆弛值正值,因為此舉將視在步驟660中應用之鬆弛值函數而定,及由此視所發生之推測寬度縮減之程度而定。
第14B圖圖示一實例,在該實例中未接收到正面進展指示,及由此,鬆弛值以初始預算值開始,然後在每次接收到負面指示時逐步降低。在鬆弛值變成負值之後,每當鬆弛值出現下降時,推測寬度便縮減。
第15圖圖示可使用之虛擬機實施。儘管前文所述實施例依照用於操作支援相關技術之特定處理硬體之設備及方法來實施本發明,但亦可能提供所謂的硬體裝置虛擬機實施。該等虛擬機實施在主處理器730上執行,該主處理器通常執行支援虛擬機程式710之主機作業系統720。通常情況下,要求功能強勁處理器提供以合理速度執行之虛擬機實施,但該種方法在某些情況下比較適合,如出於兼容或再使用之原因而需要執行另一處理器之本端代碼的情況。虛擬機程式710能夠執行應用程式(或作業系統)700,所得到之結果與由真實硬體裝置進行之程式執行所得到的結果相同。由此,可藉由使用虛擬機程式710而在應用程式700內執行包括上述推測向量指令在內之程式指令。
經由使用上述技術,資料處理設備之至少一個效能特性(如產量或能量消耗效能)可在執行推測向量運算之同時,藉由設法避免以特定推測寬度執行推測向量運算將對所選之效能特性具有過度不利影響之情況而得以改良。藉由該種方法,可動態調整推測寬度,以便設法避免進行耗時或耗 能過度卻可能並非必需之工作,從而節省時間及能量。為保證進展,在一個實施例中,禁止推測寬度縮減至1個元素以下。
儘管本文已描述特定實施例,但將瞭解,本發明並非限定於彼等實施例,及可在本發明之範疇內進行諸多潤飾及添加。例如,可在不背離本發明之範疇的前提下,由獨立項之特徵組成以下附屬請求項之特徵的多種組合。
5‧‧‧資料處理設備
10‧‧‧指令佇列
20‧‧‧解碼電路系統
30‧‧‧向量處理電路系統
35‧‧‧向量處理單元
40‧‧‧向量暫存器庫
50‧‧‧向量加載/儲存單元
55‧‧‧TLB儲存器
60‧‧‧推測控制電路系統
65‧‧‧控制暫存器
70‧‧‧推測縮減標準
72‧‧‧1級快取記憶體
74‧‧‧2級快取記憶體
76‧‧‧主記憶體
80‧‧‧路徑
82‧‧‧路徑
85‧‧‧推測預估電路系統
87‧‧‧歷史儲存器
90‧‧‧路徑
92‧‧‧時鐘/功率閘控電路系統

Claims (28)

  1. 一種資料處理設備,包括:處理電路系統,經配置以對向量運算元執行一推測向量運算序列,每一向量運算元包括複數個向量元素;推測控制電路系統,經配置以維持一推測寬度指示,該推測寬度指示指示每一向量運算元中將經受該等推測向量運算之向量元素之數目,該推測寬度指示在該推測向量運算序列之執行之前經初始化至一初值;該處理電路系統經配置以在該推測向量操作序列之執行期間產生進展指示;該推測控制電路系統經進一步配置以藉由參考該等進展指示及該等推測縮減標準來偵測一推測縮減狀態之存在,該推測縮減狀態是一種狀態,該狀態指示:相對於在該推測寬度指示無縮減情況下之連續操作,該推測寬度指示之一縮減預期將改良該資料處理設備之至少一個效能特性;該推測控制電路系統進一步回應於對該推測縮減狀態之偵測而縮減該推測寬度指示。
  2. 如請求項1所述之資料處理設備,其中該等進展指示指示在該等推測向量運算之執行期間在該處理電路系統內發生之產量影響事件。
  3. 如請求項1所述之資料處理設備,其中該等進展指示指示在該等推測向量運算之執行期間在該處理電路系統內發生之能量消耗影響事件。
  4. 如請求項1所述之資料處理設備,其中為了回應於在該等推測向量運算之執行期間在該處理電路系統內發生之微架構事件,發出該等進展指示。
  5. 如請求項1所述之資料處理設備,其中該推測寬度指示進一步辨識每一向量運算元中將經受該等推測向量運算之一第一向量元素。
  6. 如請求項5所述之資料處理設備,其中該推測寬度指示辨識每一向量運算元中將經受該等推測向量運算之該等向量元素之該數目,將該數目作為自該第一向量元素開始之順序向量元素之一規定數目。
  7. 如請求項1所述之資料處理設備,其中:該處理電路系統經配置以執行一指令向量迴路,該向量迴路包括定義該向量運算序列之指令及在該向量運算序列之執行之後在該向量迴路內之一確定點處經執行之至少一個評估指令,該至少一個評估指令之執行使得決定一所需之向量寬度; 該推測控制電路系統回應於對該所需向量寬度之決定,以藉由參考該推測寬度指示之一當前值而決定該向量運算序列之執行是導致一推測過度還是一推測不足,及倘若發生該推測不足,則設定一重複旗標以使得執行該指令向量迴路之又一迭代。
  8. 如請求項7所述之資料處理設備,其中在該指令向量迴路之又一迭代之後,該推測控制電路系統經配置以慮及在該指令向量迴路之該先前迭代期間經處理之該等向量元素之數目,初始化該推測寬度指示至經修正之一初值。
  9. 如請求項7所述之資料處理設備,其中該向量迴路包括在該確定點之後待執行之一或更多個非推測指令,該推測控制電路系統進一步經配置以設置一遮罩值以辨識每一向量運算元中將經受由該一或更多個非推測指令定義之該等非推測運算之向量元素之該數目。
  10. 如請求項1所述之資料處理設備,進一步包括:一向量暫存器庫,經配置以儲存該等向量運算元以用於由該處理電路系統存取;該處理電路系統,包括資料存取電路系統,該資料存取電路系統經配置以執行向量存取運算,以便使向量運算元在該向量暫存器庫與一記憶體系統之間移動,該記憶體系統包括至少一等級之快取儲存器; 該資料存取電路系統,經配置以將與在該等向量存取運算之執行期間發生之快取未中相關之資訊發出,作為該等進展指示。
  11. 如請求項10所述之資料處理設備,進一步包括一變換旁看緩衝器(translation lookaside buffer;TLB),該資料存取電路系統在該等向量存取運算之執行期間參考該TLB,該資料存取電路系統經進一步配置以將與在該等向量存取運算之執行期間發生之TLB未中相關之資訊發出以作為該等進展指示。
  12. 如請求項1所述之資料處理設備,其中該資料處理電路系統回應於該推測寬度指示之該縮減以改變每一向量運算元中經受所選之向量運算之向量元素之該數目,該所選之向量運算在該序列發生,該序列自向量運算開始,該向量運算之進展指示導致對該推測縮減狀態之偵測,該推測縮減狀態使該推測寬度指示得以縮減。
  13. 如請求項12所述之資料處理設備,其中該資料處理電路系統進一步回應於該推測寬度指示之該縮減以改變每一向量運算元中經受非完整向量運算之向量元素之該數目,該等非完整向量運算在該序列中該向量運算之前發生,該向量運算之進展指示導致對該推測縮減狀態之偵測,該推測縮減狀態使該推測寬度指示得以縮減。
  14. 如請求項1所述之資料處理設備,進一步包括控制電路系統,該控制電路系統經配置以回應於該推測寬度指示之縮減以降低該處理電路系統之一或更多個組件內之功率消耗。
  15. 如請求項14所述之資料處理設備,其中該控制電路系統採用時鐘閘控及功率閘控中之至少一者以減少該一或更多個組件內之功率消耗。
  16. 如請求項1所述之資料處理設備,其中該推測寬度指示之初始化初值及該等推測縮減標準中至少一者由將由該資料處理設備執行之一指令規定。
  17. 如請求項1所述之資料處理設備,其中預定該推測寬度指示之初始化初值及該等推測縮減標準中至少一者。
  18. 如請求項1所述之資料處理設備,進一步包括:一預估電路系統,經配置以維持關於推測寬度值之歷史資料,該等推測寬度值在一確定點處用於先前由該處理電路系統執行之推測向量運算序列;該預估電路系統針對將由該處理電路系統執行之一推測向量運算當前序列而經配置以在該推測向量運算當前序列之執行之前,藉由參考該歷史資料而決定該推測寬度指示將設定為之該初值。
  19. 如請求項1所述之資料處理設備,進一步包括:預估電路系統,經配置以維持關於推測縮減標準之歷史資料,該推測縮減標準用於先前由該處理電路系統執行之推測向量運算序列;該預估電路系統,針對將由該處理電路系統執行之一推測向量運算當前序列而經配置以藉由參考該歷史資料而決定用於該推測向量運算當前序列之執行之該等推測縮減標準。
  20. 如請求項1所述之資料處理設備,其中該推測控制電路系統回應於一開始推測指令之執行以觸發一推測運算模式,該處理電路系統經配置以回應於在該推測運算模式期間執行之指令而執行該等推測向量運算。
  21. 如請求項20所述之資料處理設備,其中該推測控制電路系統回應於一確定指令之執行以終止該推測運算模式。
  22. 如請求項1所述之資料處理設備,其中該推測控制電路系統回應於該推測縮減狀態而修正該推測寬度指示,以指示每一向量運算元中至少一個向量元素將經受該等推測向量運算。
  23. 如請求項1所述之資料處理設備,其中:該推測縮減標準包括效能容限資訊,該資訊由該推測控制電路系統維持; 該推測控制電路系統經配置以在慮及在該推測向量運算序列之執行期間產生之該等進展指示之情況下調整該效能容限資訊;及該推測控制電路系統經配置以在該效能容限資訊到達一觸發點時偵測到該推測縮減狀態。
  24. 如請求項23所述之資料處理設備,其中:該推測控制電路系統在決定該推測寬度指示將縮減之一量時參考該效能容限資訊。
  25. 如請求項1所述之資料處理設備,其中預定在偵測到該推測縮減狀態時該推測寬度指示將縮減之一量。
  26. 一種控制推測向量運算之效能的方法,該方法包括以下步驟:對向量運算元執行一推測向量運算序列,每一向量運算元包括複數個向量元素;維持一推測寬度指示,該推測寬度指示指示每一向量運算元中將經受該等推測向量運算之向量元素之數目,該推測寬度指示在該推測向量運算序列之執行之前經初始化至一初值;在該推測向量操作序列之執行期間產生進展指示;藉由參考該等進展指示及該等推測縮減標準來偵測一推測縮減狀態之存在,該推測縮減狀態是一種狀態,該狀態指 示:相對於在該推測寬度指示無縮減情況下之連續運算,該推測寬度指示之一縮減預期將改良該資料處理設備之至少一個效能特性;及在偵測到該推測縮減狀態時,縮減該推測寬度指示。
  27. 一種電腦程式產品,以一非暫時形式儲存一電腦程式以用於控制一電腦以為程式指令提供一虛擬機執行環境,該等程式指令對應於請求項1中主張之一資料處理設備。
  28. 一種資料處理設備,包括:處理手段,用於對向量運算元執行一推測向量運算序列,每一向量運算元包括複數個向量元素;一推測控制手段,用於維持一推測寬度指示,該推測寬度指示指示每一向量運算元中將經受該等推測向量運算之向量元素之數目,該推測寬度指示在該推測向量運算序列之執行之前經初始化至一初值;該處理手段用於在該推測向量運算序列之執行期間產生進展指示;該推測控制手段用於藉由參考該等進展指示及該等推測縮減標準來偵測一推測縮減狀態之存在,該推測縮減狀態是一狀態,該狀態指示:相對於在該推測寬度指示無縮減情況下之連續運算,該推測寬度指示之一縮減預期將改良該資料處理設備之至少一個效能特性; 該推測控制手段用於藉由縮減該推測寬度指示來回應於對該推測縮減狀態之一偵測。
TW103130434A 2013-10-09 2014-09-03 用於控制推測向量運算效能的資料處理設備、方法及電腦程式產品 TWI649693B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1317876.9A GB2519108A (en) 2013-10-09 2013-10-09 A data processing apparatus and method for controlling performance of speculative vector operations
??1317876.9 2013-10-09

Publications (2)

Publication Number Publication Date
TW201514850A true TW201514850A (zh) 2015-04-16
TWI649693B TWI649693B (zh) 2019-02-01

Family

ID=49630436

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103130434A TWI649693B (zh) 2013-10-09 2014-09-03 用於控制推測向量運算效能的資料處理設備、方法及電腦程式產品

Country Status (9)

Country Link
US (1) US10261789B2 (zh)
EP (1) EP3039532B1 (zh)
JP (1) JP6546584B2 (zh)
KR (1) KR102271992B1 (zh)
CN (1) CN105612494B (zh)
GB (1) GB2519108A (zh)
IL (1) IL244408B (zh)
TW (1) TWI649693B (zh)
WO (1) WO2015052485A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017185405A1 (zh) * 2016-04-26 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行向量外积运算的装置和方法
US10838877B2 (en) 2015-06-16 2020-11-17 Arm Limited Protected exception handling
US10936504B2 (en) 2015-06-16 2021-03-02 Arm Limited Apparatus and method for address translation and control of whether an access request is rejected based on an ownership table indicating an owner process for a block of physical addresses
TWI738042B (zh) * 2017-04-03 2021-09-01 美商谷歌有限責任公司 由向量縮減電路執行之方法
US11314658B2 (en) 2015-06-16 2022-04-26 Arm Limited Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2540942B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
GB2548602B (en) * 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
CN111651202B (zh) 2016-04-26 2023-09-22 中科寒武纪科技股份有限公司 一种用于执行向量逻辑运算的装置
US11372804B2 (en) * 2018-05-16 2022-06-28 Qualcomm Incorporated System and method of loading and replication of sub-vector values

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US6915395B1 (en) * 2000-05-03 2005-07-05 Sun Microsystems, Inc. Active address content addressable memory
WO2002084451A2 (en) 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
US20040123081A1 (en) * 2002-12-20 2004-06-24 Allan Knies Mechanism to increase performance of control speculation
US20040215941A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Method and system to handle register window fill and spill
US7149946B2 (en) 2003-06-13 2006-12-12 Microsoft Corporation Systems and methods for enhanced stored data verification utilizing pageable pool memory
US7149851B1 (en) 2003-08-21 2006-12-12 Transmeta Corporation Method and system for conservatively managing store capacity available to a processor issuing stores
US7500087B2 (en) 2004-03-09 2009-03-03 Intel Corporation Synchronization of parallel processes using speculative execution of synchronization instructions
US7395419B1 (en) 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture
US7961636B1 (en) * 2004-05-27 2011-06-14 Cisco Technology, Inc. Vectorized software packet forwarding
US20060259737A1 (en) * 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Vector processor with special purpose registers and high speed memory access
US7739456B1 (en) 2007-03-06 2010-06-15 Oracle America, Inc. Method and apparatus for supporting very large transactions
US8019977B2 (en) 2007-05-14 2011-09-13 Apple Inc. Generating predicate values during vector processing
US8060728B2 (en) 2007-05-14 2011-11-15 Apple Inc. Generating stop indicators during vector processing
US8078847B2 (en) * 2007-05-14 2011-12-13 Apple Inc. Detecting memory-hazard conflicts during vector processing
US8019976B2 (en) 2007-05-14 2011-09-13 Apple, Inc. Memory-hazard detection and avoidance instructions for vector processing
US8739141B2 (en) 2008-05-19 2014-05-27 Oracle America, Inc. Parallelizing non-countable loops with hardware transactional memory
US8291202B2 (en) * 2008-08-08 2012-10-16 Qualcomm Incorporated Apparatus and methods for speculative interrupt vector prefetching
JP5279046B2 (ja) * 2008-10-14 2013-09-04 国立大学法人 奈良先端科学技術大学院大学 データ処理装置
US8572341B2 (en) 2009-09-15 2013-10-29 International Business Machines Corporation Overflow handling of speculative store buffers
JP5491113B2 (ja) * 2009-09-18 2014-05-14 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置、ベクトル処理方法、およびプログラム
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
US8887171B2 (en) 2009-12-28 2014-11-11 Intel Corporation Mechanisms to avoid inefficient core hopping and provide hardware assisted low-power state selection
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
TWI636362B (zh) 2011-06-24 2018-09-21 林正浩 高性能快取方法和裝置
CN104025022B (zh) * 2011-12-23 2017-09-19 英特尔公司 用于具有推测支持的向量化的装置和方法
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9116686B2 (en) * 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9501276B2 (en) 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838877B2 (en) 2015-06-16 2020-11-17 Arm Limited Protected exception handling
TWI714582B (zh) * 2015-06-16 2021-01-01 英商Arm股份有限公司 受保護異常處置
US10936504B2 (en) 2015-06-16 2021-03-02 Arm Limited Apparatus and method for address translation and control of whether an access request is rejected based on an ownership table indicating an owner process for a block of physical addresses
US11314658B2 (en) 2015-06-16 2022-04-26 Arm Limited Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory
WO2017185405A1 (zh) * 2016-04-26 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行向量外积运算的装置和方法
US10831861B2 (en) 2016-04-26 2020-11-10 Cambricon Technologies Corporation Limited Apparatus and methods for vector operations
TWI738042B (zh) * 2017-04-03 2021-09-01 美商谷歌有限責任公司 由向量縮減電路執行之方法
TWI791262B (zh) * 2017-04-03 2023-02-01 美商谷歌有限責任公司 矩陣向量處理系統及用於執行向量縮減之方法
TWI828502B (zh) * 2017-04-03 2024-01-01 美商谷歌有限責任公司 矩陣向量處理系統及用於執行向量縮減之方法
US11940946B2 (en) 2017-04-03 2024-03-26 Google Llc Vector reduction processor

Also Published As

Publication number Publication date
TWI649693B (zh) 2019-02-01
EP3039532A1 (en) 2016-07-06
US10261789B2 (en) 2019-04-16
EP3039532B1 (en) 2020-11-11
KR102271992B1 (ko) 2021-07-05
CN105612494B (zh) 2019-07-12
KR20160065145A (ko) 2016-06-08
CN105612494A (zh) 2016-05-25
WO2015052485A1 (en) 2015-04-16
JP6546584B2 (ja) 2019-07-17
IL244408B (en) 2020-03-31
JP2016536665A (ja) 2016-11-24
GB201317876D0 (en) 2013-11-20
GB2519108A (en) 2015-04-15
US20150100755A1 (en) 2015-04-09
IL244408A0 (en) 2016-04-21

Similar Documents

Publication Publication Date Title
TW201514850A (zh) 用於控制推測向量運算效能的資料處理設備及方法
JP5137948B2 (ja) ローカル及びグローバル分岐予測情報の格納
US6907520B2 (en) Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US7471574B2 (en) Branch target buffer and method of use
KR101511837B1 (ko) 벡터 분할 루프들의 성능 향상
US20070288733A1 (en) Early Conditional Branch Resolution
US9483438B2 (en) Apparatus and method for controlling the number of vector elements written to a data store while performing speculative vector write operations
US8301871B2 (en) Predicated issue for conditional branch instructions
US20070288731A1 (en) Dual Path Issue for Conditional Branch Instructions
JP4134179B2 (ja) ソフトウエアによる動的予測方法および装置
US20070288734A1 (en) Double-Width Instruction Queue for Instruction Execution
US9098295B2 (en) Predicting a result for an actual instruction when processing vector instructions
US7130991B1 (en) Method and apparatus for loop detection utilizing multiple loop counters and a branch promotion scheme
US20230315471A1 (en) Method and system for hardware-assisted pre-execution
US8924693B2 (en) Predicting a result for a predicate-generating instruction when processing vector instructions
JP2020119504A (ja) 分岐予測器
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
US10963253B2 (en) Varying micro-operation composition based on estimated value of predicate value for predicated vector instruction
GB2416412A (en) Branch target buffer memory array with an associated word line and gating circuit, the circuit storing a word line gating value