TW201738737A - 在執行向量操作時管理位址衝突的設備及方法 - Google Patents

在執行向量操作時管理位址衝突的設備及方法 Download PDF

Info

Publication number
TW201738737A
TW201738737A TW106113721A TW106113721A TW201738737A TW 201738737 A TW201738737 A TW 201738737A TW 106113721 A TW106113721 A TW 106113721A TW 106113721 A TW106113721 A TW 106113721A TW 201738737 A TW201738737 A TW 201738737A
Authority
TW
Taiwan
Prior art keywords
vector
address
execution
instructions
instruction
Prior art date
Application number
TW106113721A
Other languages
English (en)
Other versions
TWI733798B (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 TW201738737A publication Critical patent/TW201738737A/zh
Application granted granted Critical
Publication of TWI733798B publication Critical patent/TWI733798B/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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

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

Abstract

本案提供一種在執行向量操作時管理位址衝突的設備及方法。該設備具有:用於儲存向量運算元的暫存器儲存,各個向量運算元包含複數個元件;及用於執行指令以執行由該等指令規定之操作的執行電路。該執行電路具有用於執行記憶體存取操作以在該暫存器儲存與記憶體之間移動該等向量運算元的存取電路,及用於使用該等向量運算元執行資料處理操作的處理電路。該執行電路可經排列以迭代地執行一向量迴圈,其中在各個迭代期間,該執行電路執行指令序列以實施該向量迴圈。該序列包括識別複數個記憶體位址之檢查指令,並且該執行電路回應於執行該檢查指令以決定在該複數個記憶體位址中是否存在位址危險條件。針對該向量迴圈之各個迭代,該執行電路回應於執行決定無該危險位址條件之該檢查指令以當執行該指令序列以實施該向量迴圈時採用預設水平之向量化。相比之下,在存在位址危險條件時,當執行該指令序列以實施該向量迴圈時該執行電路採用降低水平之向量化。已發現此方法提供用於動態調節在該向量迴圈之各個迭代期間採用之向量化水平的低等待時間機制,使得能夠向量化代碼,同時在存在位址危險條件時仍實現高效效能。

Description

在執行向量操作時管理位址衝突的設備及方法
本技術係關於一種在執行向量操作時管理位址衝突的設備及方法。
一種用於改良資料處理設備效能之已知技術係提供用以支援向量操作執行之電路。對至少一個向量運算元執行向量操作,其中各個向量運算元包含複數個元件。執行向量操作隨後涉及在向量運算元(等)中跨過各種元件重複地應用操作。
在某些實施方式中,亦已知提供向量處理電路(通常稱為SIMD(單指令多資料)處理電路),該向量處理電路提供並行處理之多個通道以在向量運算元中各種元件上並行執行操作。
經由使用向量操作,當與一連串等效純量操作之效能相比時可實現顯著效能益處。
適用於SIMD之傳統程式通常執行常規記憶體存取並且經常遵循線性記憶體定址方案,這使得從純量代碼直接變換為向量代碼。在此等情況中,在迴圈迭代之間不存在依賴性且向量化係不複雜的,因為當同時處理向量元件時不存在可能之競態條件。遺憾地,在吾人期望向量化以獲取效能之眾多現實程式中,在純量代碼中的迭代之間存在非顯然量之依賴性。在此等情形中,可難以預測若向量化該代碼則可在運行時顯現的位址衝突之頻率。
由此,通常必須於編譯階段採取保守方法,由此若無法精確預測位址衝突之存在,則可不向量化代碼,並且由此將犧牲任何潛在效能增益。
試圖引入機制以在位址向量中動態分析位址衝突的先前嘗試具有顯著等待時間問題,這可限制由其等用途實現之任何潛在益處。
期望提供減輕上述問題之機制。
在一個示例配置中,提供一種設備,其包含:暫存器儲存,用以儲存向量運算元,各個向量運算元包含複數個元件;執行電路,用以執行指令以執行由該等指令規定之操作,該執行電路包含用以執行記憶體存取操作以在該暫存器儲存與記憶體之間移動該等向量運算元的存取電路;及用以使用該等向量運算元執行資料處理操作的處理電路;該執行電路經排列以迭代地執行向量迴圈,在各個迭代期間該執行電路經排列以執行指令序列來實施該向量迴圈,該序列包括識別複數個記憶體位址之檢查指令,且該執行電路回應於執行該檢查指令以決定在該複數個記憶體位址中是否存在位址危險條件;針對該向量迴圈之各個迭代,該執行電路回應於該檢查指令之執行決定無該位址危險條件以當執行該指令序列以實施該向量迴圈時採用預設水平之向量化,並且回應於該檢查指令之執行決定存在該位址危險條件以當執行該指令序列以實施該向量迴圈時採用降低水平之向量化。
在另一示例配置中,提供一種當在設備中執行向量操作時管理位址衝突之方法,該設備具有:用以儲存向量運算元的暫存器儲存,各個向量運算元包含複數個元件;及用以執行指令以執行由該等指令規定之操作的執行電路,該執行電路執行記憶體存取操作以在該暫存器儲存與記憶體之間移動該等向量運算元,及使用該等向量運算元執行資料處理操作,該方法包含:迭代地執行向量迴圈;在各個迭代期間,在該執行電路中執行指令序列以實施該向量迴圈,該序列包括識別複數個記憶體位址之檢查指令,且該執行電路回應於執行該檢查指令以決定在該複數個記憶體位址中是否存在位址危險條件;並且針對該向量迴圈之各個迭代,回應於該檢查指令之執行決定無該位址危險條件以當執行該指令序列以實施該向量迴圈時採用預設水平之向量化,且回應於該檢查指令之執行決定存在該位址危險條件以當執行該指令序列以實施該向量迴圈時採用降低水平之向量化。
在另一示例配置中,提供一種以非暫時形式儲存電腦程式的電腦程式產品,用於控制電腦以提供對應於根據上文所論述之配置之設備的用於程式指令之虛擬機執行環境。
在又一示例配置中,提供一種設備,其包含:暫存器儲存構件,用於儲存向量運算元,各個向量運算元包含複數個元件;執行構件,用於執行指令以執行由該等指令規定之操作,該執行構件包含用於執行記憶體存取操作以在該暫存器儲存構件與記憶體之間移動該等向量運算元的存取構件,及用於使用該等向量運算元執行資料處理操作的處理構件;該執行構件,用於迭代地執行向量迴圈,在各個迭代期間,該執行構件用於執行指令序列以實施該向量迴圈,該序列包括識別複數個記憶體位址之檢查指令,且該執行構件用於回應於執行該檢查指令決定在該複數個記憶體位址中是否存在位址危險條件;針對該向量迴圈之各個迭代,該執行構件回應於行該檢查指令之執行決定無該位址危險條件以當執行該指令序列以實施該向量迴圈時採用預設水平之向量化,並且回應於該檢查指令之執行決定存在該位址危險條件以當執行該指令序列以實施該向量迴圈時採用降低水平之向量化。
在參考附圖論述實施例之前,提供實施例之以下描述。
在一個實施例中,提供一種設備,其具有:用以儲存向量運算元的暫存器儲存,其中各個向量運算元包含複數個元件;及用以執行指令以執行由彼等指令規定之操作的執行電路。該執行電路具有用以執行記憶體存取操作以在該暫存器儲存與記憶體之間移動該等向量運算元的存取電路及用以使用該等向量運算元執行資料處理操作的處理電路。該執行電路可經排列以迭代地執行向量迴圈,並且在各個迭代期間將執行指令序列以實施該向量迴圈。根據所述之實施例,該序列包括識別複數個記憶體位址之檢查指令,並且該執行電路回應於執行該檢查指令以決定在複數個記憶體位址中是否存在位址危險條件。根據所述之實施例,針對向量迴圈之各個迭代,該執行電路回應於執行檢查指令決定無位址危險以當執行指令序列以實施該向量迴圈時採用預設水平之向量化。相比之下,回應於檢查指令之執行決定存在位址危險條件,該執行電路經排列以當執行該指令序列以實施該向量迴圈時採用降低水平之向量化。
所述之技術提供用於在向量迴圈之各個迭代期間動態決定存在或無位址危險條件之有效機制。該方法提供低等待時間之解決方案,藉由使在向量迴圈之任何特定迭代期間採用之該水平向量化受在向量迴圈之該迭代中執行該檢查指令之結果直接影響。特定言之,儘管提供預設水平之向量化,針對其中執行檢查指令決定存在位址危險條件之任何特定迭代,該執行電路可經排列以直接採用降低水平之向量化以處理該位址危險條件,該機制因此實現在該向量迴圈之各個迭代期間採用之向量化水平中的動態轉換。
此方法使代碼能夠向量化,並且針對所得位址危險而言,可出現以基於向量迴圈迭代有效處理向量迴圈迭代。歸因於與該機制相關之低等待時間,已發現當與等效純量處理相比時在位址衝突可在執行向量操作時出現之各種情況中提供顯著效能益處。由於所採用之向量化水平可在該向量迴圈之各個迭代上動態改變,在其中一些迭代具有位址衝突及其他迭代不具有之情況中此可提供顯著效能益處。
存在可實施預設水平之向量化及降低水平之向量化的數種方式。在一個實施例中,該執行電路回應於執行檢查指令決定無位址危險條件以藉由在指令序列中執行第一複數個指令以實施該向量迴圈來採用預設水平之向量化。相比之下,該執行電路回應於檢查指令之執行決定存在位址危險條件以藉由在指令序列中迭代地執行第二複數個指令以實施該向量迴圈來採用降低水平之向量化。
由此,在此實施例中,執行檢查指令之結果藉由當偵測到位址危險條件時提供含有第二複數個指令之有效後饋路徑來直接影響在該迴圈中之控制流。藉由有效提供後饋路徑,此方法實現原本認為不能經向量化之純量代碼之向量化。特定言之,純量代碼可經向量化,並且經由在該向量迴圈之各個迭代期間執行檢查指令,無論何時偵測到位址危險條件,處置皆可傳遞至後饋路徑。在該後饋路徑中迭代執行第二複數個指令可隨後藉由避免位址危險確保發生正確處理。
存在可導致該檢查指令之執行影響在該向量迴圈之當前迭代中採用之向量化水平的數種方式。在一個實施例中,該執行電路回應於執行該檢查指令以產生指示是否存在位址危險條件的結果資料,用於由在該序列中之隨後指令參考。
結果資料可採取各種形式。例如,可將其寫入系統暫存器以由隨後指令參考。或者,可在更新一或更多個旗標(諸如由執行電路參考之條件旗標)時直接表示結果資料。藉由此方法,隨後指令之操作可受由結果資料更新之彼等旗標之當前狀態影響。例如,在一個實施例中,隨後指令係分支指令,當由執行電路執行時,該分支指令參考一或更多個旗標以決定是否執行第一複數個指令或是否迭代地執行第二複數個指令。由此,藉由此方法,該分支指令可經排列以取決於設定為執行該檢查指令之結果的旗標有條件地分支至第二複數個指令。因此,在無位址危險條件時,執行該分支指令將僅僅導致該處理為對第一複數個指令進行,而在存在危險條件時,執行該分支指令將導致指令流分支至第二複數個指令,其可隨後迭代地執行以實施該向量迴圈之當前迭代所需之處理。
第二複數個指令可採取各種形式。在一個實施例中,其等包含導致執行電路對個別元件操作之純量指令,且實施該向量迴圈所需之第二複數個指令之迭代執行的數量係取決於與預設水平之向量化相關之向量運算元中主動元件的數量。因此,僅以實例之方式,若在與預設水平之向量化相關之向量運算元中存在八個主動元件,則第二複數個指令可執行八次以實施向量迴圈之當前迭代,在各個迭代期間,對與原本已執行之並行處理之通道之一相關的純量值操作的第二複數個指令使得維持預設水平之向量化,並且因此使得執行第一複數個指令。
然而,在替代實施例中,第二複數個指令可不包含純量指令,而是第二複數個指令可由在與預設水平之向量化相比時對降低數量之向量元件操作的向量指令構成。例如,在一個實施例中,該執行電路回應於行該檢查指令之執行以產生具有初始述語值之保護述語,且第二複數個指令包含導致該執行電路對一或更多個向量運算元之元件之子集並行操作的向量指令,該子集係由該保護述語識別。在第二複數個指令之各個迭代上,更新保護述語之述語值以排除由任何先前迭代操作的一或更多個向量運算元之任何元件。因此,根據此方法,仍必須迭代地執行第二複數個指令以處理與向量迴圈之當前迭代相關的向量運算元之全部元件,但在第二複數個指令之各個迭代中,並行處理多個元件。這使向量化水平縮小以避免位址危險問題,同時仍然使得向量化水平在向量迴圈之當前迭代中達成。
在一個實施例中,主述語可用於識別在向量運算元中之主動元件。因此,甚至當採用預設水平之向量化時,可能並非全部在向量運算元中規定之元件在向量迴圈之當前迭代中處理。因此,當判定存在位址危險條件以採用包含第二複數個指令之後饋路徑時,確保不操作未由主述語識別為主動元件之向量運算元之任何元件亦係重要的。在一個實施例中,這藉由限制保護述語以識別元件子集來達成,該等元件係藉由主述語識別之主動元件。
儘管在如上文所述之一些實施例中,降低水平之向量化係藉由提供分開之後饋路徑來實施,並導致執行該檢查指令直接影響在該迴圈中之控制流,使得在存在位址危險條件時使用該後饋路徑,在替代實施例中,可並非必須提供此分開之後饋路徑。特定言之,根據替代實施例,預設水平之向量化識別第一數量之主動元件,且回應於檢查指令之執行決定無位址危險條件,該執行電路經排列以當執行該指令序列以實施該向量迴圈時並行處理第一數量之元件。然而,當檢查指令之執行決定存在位址危險條件時,該執行電路回應於執行該檢查指令之執行以產生將主動元件之數量降低至小於第一數量之主動元件之第二數量的控制輸出,以當執行該指令序列以實施該向量迴圈時藉由並行處理第二數量之元件導致該執行電路採用降低水平之向量化。
因此,根據此方法,不是取決於執行該檢查指令之結果導致控制流改變,該檢查指令之執行可用於取決於檢查結果直接改變所處理之主動元件之數量。因此,在向量迴圈之各個迭代期間,所處理之主動元件之數量可取決於針對該特定迭代檢查電路之結果而改變。因此,針對其中未偵測到位址危險條件之任何迭代,該預設之第一數量之元件可並行執行,但針對其中偵測到位址危險條件之任何迭代,則處理可對由檢查指令之結果決定的降低數量之主動元件進行。這使得該檢查結果直接控制在向量之各個迭代期間處理之元件數量,使得在一個迭代接一個迭代水平上動態調節向量化之程度。
在一個實施例中,於向量迴圈之各個迭代之開始處,該執行電路經排列以返回到採用預設水平之向量化。因此,所採用之向量化水平之任何縮小係於向量迴圈之各個開始處重置,使得只要可能便採用全部預設水平之向量化。
存在可識別在存在位址危險條件時處理之第二數量之主動元件的數種方式。在一個實施例中,在執行檢查指令時藉由執行電路產生之控制輸出包含識別形成第二數量之主動元件之主動元件的保護述語。
在執行檢查指令時執行之檢查操作之性質可取決於實施例而變化。在一個實施例中,檢查指令規定包含複數個主動位址元件之至少一個向量運算元,並且在執行該檢查指令時,該執行電路經排列以比較各個主動位址元件與各個其他主動位址元件以決定是否存在位址危險條件。
在替代實施例中,檢查指令可規定與第一序列之連續位址相關之第一位址及與第二序列之連續位址相關之第二位址,並且在執行該檢查指令時,該執行電路經排列以取決於在第一位址與第二位址之間的差決定存在位址危險條件。
此方法可提供在可引起位址衝突之位址之相關向量各者規定連續位址序列的情況中用於執行必需比較之有效機制。
存在可基於計算之差偵測位址危險條件之存在的數種方式。例如,在一個實施例中,假設第一位址係x且第二位址係z,若差z-x大於或等於向量長度,或為負或0,則可確保將不存在位址危險條件。然而,若差z-x小於向量長度並大於0,則將出現位址危險條件。
在替代實施例中,可替代地判定執行檢查以偵測其中在第一位址與第二位址之間的絕對差不大於或等於向量長度的情況。若絕對差小於向量長度,這可指示存在位址危險條件。然而,應注意基於絕對差之檢查可產生一些偽陽性,由於當計算之帶符號的整數結果z-x小於向量長度並且亦為負或等於0時,實際上不存在競態條件。
儘管在一個實施例中,檢查指令可經排列以導致該執行電路執行所需檢查操作並產生直接影響向量迴圈迭代之剩餘處置所需之結果資料,在替代實施例中,進一步效能改良可藉由結合檢查操作與其他操作來獲得。例如,在一個實施例中,檢查指令係檢查及記憶體存取指令,該執行電路回應於執行該檢查及記憶體存取指令以執行檢查操作來決定在複數個記憶體位址中是否存在位址危險條件,同時亦相對於複數個記憶體位址執行記憶體存取操作。
記憶體存取操作可採取各種形式。例如,其可採取用於使用由檢查及記憶體存取指令規定之複數個記憶體位址自記憶體擷取資料的集中操作形式。藉由合併檢查指令與記憶體存取指令之功能,可能隱藏檢查操作之等待時間。亦已經發現,在某些實例中,用以執行記憶體存取操作所需之一些處理可重新用於檢查操作。
進一步益處亦可藉由將檢查及記憶體存取操作結合至單個指令中來達成。例如,在決定存在位址危險條件時,執行電路可經排列以終止記憶體存取操作之任何剩餘部分。因此,這允許取決於位址危險檢查結果提早終止記憶體存取操作之一些部分。這可因此避免執行非必需之操作並因此改良設備之總效率。
在一個實施例中,處理電路可包含專用檢查電路以在執行檢查指令時執行檢查操作。然而,在替代實施例中,不一定提供此專用檢查電路,並且替代地在經提供以用於執行資料處理操作的處理電路中之現存處理單元可重新用於在執行檢查指令時執行必需檢查操作。
在一個此實施例中,在該處理單元中旋轉器電路及比較器電路用於合併在執行檢查操作期間需要之一或更多個位址比較。因此,在處理單元中之現存硬體可用於當執行檢查操作時改良執行所需位址比較之效率。
如先前提及,在一些實施例中,檢查操作之結果可用於當執行在向量迴圈中之一或更多個隨後指令時直接更新由執行電路引用之條件旗標。然而,在替代實施例中,該設備可進一步包含危險檢查狀態暫存器,該執行電路經排列以將藉由執行檢查指令產生之結果資料儲存至該危險檢查狀態暫存器中。這可提供一些益處,例如在指令編碼空間非常受限之情況中。例如,在此情況中,可判定經由單個指令合併檢查操作與另一操作,諸如在檢查及記憶體存取指令之先前實例中。使用檢查操作之結果可隨後在不需要檢查操作之情況中被忽略。特定言之,在此情況中,儘管危險檢查狀態暫存器可利用該結果更新,隨後指令可不引用危險檢查狀態暫存器,並由此執行該指令可有效地僅執行規定之記憶體存取操作。這因此使得單個指令能夠經排列以取決於需要來執行標準記憶體存取操作或具有相關位址衝突檢查之記憶體存取操作。在期望使用位址衝突偵測之情況中,隨後指令可例如經排列以讀取危險檢查狀態暫存器之內容並適當地設定條件旗標,隨後分支指令可隨後如先前論述執行,其中控制流隨後取決於如何設定條件旗標並因此是否已偵測到位址危險條件。在另一實施例中,檢查及記憶體存取指令可直接設定條件旗標。
在一個實施例中,各個向量運算元包含N個元件,且N個主動元件係與預設水平之向量化相關使得執行電路回應於檢查指令之執行決定無該位址危險條件以當執行該指令序列以實施向量迴圈時並行處理N個元件。因此,在此實施例中,假設各個規定向量運算元之全部元件係主動元件,並且經受適當處理。
然而,在替代實施例中,各個向量運算元包含N個元件,主述語識別為主動元件,元件之數量小於或等於N,且預設水平之向量化對應於由主述語識別之主動元件,使得執行電路回應於檢查指令之執行決定無位址危險條件以當執行該指令序列以實施向量迴圈時並行處理由主述語識別之主動元件。因此,經由使用主述語,在各個向量運算元中規定之元件子集可識別為在向量迴圈迭代中待處理之主動元件。
在一些實施例中,可提供檢查指令之多個不同變化。例如,無論何時偵測到位址危險條件,一種變化可經排列以設定一或更多個旗標,但不擷取關於哪些位址元件引起位址危險之任何資訊,而另一變化可經排列以產生保護述語,其值取決於其中在輸入向量(等)之元件中何處偵測到位址衝突。發明者意識到檢查指令之不同變化可取決於實際上偵測到之位址衝突之統計性質使得達成不同水平之效能改良。在一個實施例中,可採用該設備以維持關於當執行指令序列時偵測到之位址危險條件的資訊,其中該資訊變得為編譯器可用以使得隨時間重新編譯該代碼。
特定言之,在一個實施例中,該設備進一步包含計數器電路以維持關於針對先前執行之指令序列的位址危險條件之出現的歷史資料,並且該執行電路經排列以在控制包括複數個不同類型之檢查指令的指令集下操作。歷史資料隨後可變得為編譯器可用以使該編譯器考慮到歷史資料決定哪種類型之檢查指令在向量迴圈中使用。
該編譯器可係靜態編譯器,或可係運行時使用的動態編譯器,用以取決於歷史資料動態改變執行之指令序列。
歷史資料可採取各種形式。例如,在一段時期內,可在一個實施例中僅僅計數位址危險條件之出現。在替代實施例中,可額外或替代地試圖擷取在各個向量長度中偵測到之位址衝突之數量。已發現用於最佳改良效能之檢查指令類型可不僅取決於所偵測到之位址衝突之總數,但亦取決於彼等位址衝突是否群集在特定向量長度中或更均勻地分散在向量迴圈之迭代中而變化。藉由維持擷取位址衝突之總數及關於彼等位址衝突如何群集在向量長度群組中之資訊二者的歷史資料,這可為該編譯器提供適宜資訊以決定如何最佳使用檢查指令之不同變化以改良效能。
現將參考附圖描述特定實施例。
如先前提及,在吾人期望向量化以獲得效能之眾多現實程式中,在純量代碼中的迭代之間存在非顯然量之位址依賴性。出於說明之緣故,考慮到數種使用情況。作為第一使用情形,將考慮直方圖問題,其中期望執行以下操作:
本質上,針對x 值序列,該操作涉及自將用於形成位址之陣列C獲得資料、於該位址存取資料值A、及隨後使該資料值增加1。
若可保證不存在競態條件(即,無位址衝突),則用於關鍵迴圈之向量假碼可如下表示: · 以偏移x自陣列C執行連續讀取至向量暫存器zC中 · 使用在zC中之指標從陣列A集中並將結果寫入向量暫存器zA中 · 將#1添加至zA中之每個元件 · 使用在zC中之指標散佈向量zA · 使x增加向量長度 · 若為該情形,則檢查x小於陣列之大小並繼續迭代
因此,自陣列C獲得指標向量並且儲存在向量暫存器zC中,並且隨後使用在向量暫存器zC中之各種指標集中來自陣列A之資料值。一旦向量暫存器zA使用在暫存器zC中之指標填充有自陣列A獲得之資料值,則將數值1添加至每個資料值,並使用在暫存器zC中之相同指標將所得資料值散佈回記憶體。重複此過程直至x 不再小於對該操作規定之陣列之大小。
應瞭解,藉由向量化直方圖操作,這可顯著增加效能。然而,若存在在陣列C中之一些條目可引用相同位址元件之可能性,並且若此位址衝突恰好存在於索引之單個向量中(即,用於向量迴圈之一個迭代中的位址向量),則上述方法將導致不正確結果(特定言之,一或更多個資料值可不增加正確量)。如後文將參考所述實施例所更詳細論述,不是避免一起向量化(這將導致低效能),所述之技術利用向量迴圈中能夠使上文提及之競態條件在運行時得以偵測並採取適當行為的檢查指令。
作為第二使用情形,考慮到記憶體複製(Memcpy)問題,這需要執行以下操作:
此操作將資料從一個陣列複製至另一陣列。由於在該迴圈內不存在控制代碼,此代碼一般係用於向量化之良好候選。然而,代碼不能經安全地向量化而不將足夠提示提供至編譯器,因為尚不清楚向量化是否導致任何位址衝突(陣列A與B可重疊)。在眾多情況中,實際上於運行時不存在危險,但編譯器大體採取保守方法並且將不向量化其中存在歧義之代碼,藉以犧牲任何效能增益。然而,如將在後文論述,藉由採用本文所述之檢查指令之使用,可能於運行時識別潛在危險,並採取適當正確動作,因此允許受益於向量化之效能改良,甚至當編譯時尚不知曉當執行代碼時是否將出現任何危險。
在更詳細論述根據所述實施例提供之檢查指令之前,將首先參考第1圖描述可執行指令之設備。特定言之,第1圖說明根據一個實施例之資料處理設備,其中將由該設備執行之指令置於指令佇列100中,該等指令從該指令佇列傳遞至解碼電路105。解碼電路解碼指令以產生置於發佈佇列110中之某些控制資訊,此控制資訊有時被稱為微操作(micro-ops)。發佈佇列將隨後將適當控制資訊分配至形成該設備之執行電路的相關處理單元,以導致執行由所接收之指令規定之操作。
可認為執行電路包含處理電路115及向量載入/儲存單元(load/store unit; LSU)14,該處理電路由數個單元構成以執行特定資料處理操作,該向量載入/儲存單元用於在記憶體與向量暫存器檔案140之間任一方向上移動向量運算元5。
在第1圖所說明之實例中,處理電路115係由複數個向量處理單元120、125、130、135形成。由此,在發佈佇列110中識別之浮點操作將轉發到用於處置之浮點單元(floating point unit; FPU)135,倍增及/或乘法累計操作將傳遞至乘法累計(multiply accumulate; MAC)單元130,且標準算術操作將傳遞至算術邏輯單元(arithmetic logic unit; ALU)125。可提供專用檢查單元120以用於執行後文更詳細論述之檢查指令,以執行必需位址比較操作來決定是否存在位址危險條件。如後文將論述,取決於所執行之檢查指令之變化,所需位址比較操作之結果可導致在述語暫存器檔案150之述語暫存器之一中設定一或更多個旗標155及/或設定保護述語。作為具有單獨專用檢查單元之替代,在該處理電路中預存在單元之一可用於執行用以執行檢查指令所需之操作。例如,如後文將論述,在一個實施例中,ALU 125可用於執行檢查指令,並由此用於設定在述語暫存器檔案150中之旗標155及/或保護述語。
向量處理電路115所需之各種輸入運算元將在向量暫存器檔案140中自源暫存器讀取。此外,由各個單元產生之結果運算元將通常被儲存回在向量暫存器檔案140中之目的暫存器。載入及儲存指令將用於導致LSU 145執行對應載入及儲存操作以導致將運算元資料從記憶體載入向量暫存器檔案140之規定暫存器中,或用於將一或更多個向量暫存器之內容儲存回記憶體。
可提供數個系統暫存器160,其內容用於控制資料處理設備之操作。如將在後文更詳細描述,在一個實施例中,作為直接設定旗標155之替代,檢查操作之結果可儲存在危險檢查狀態暫存器(Hazard-Check Status Register; HCSR) 165中,以用於以後由處理電路執行之一或更多個隨後指令參考。
如亦將在後文更詳細論述,可提供一或更多個位址衝突統計計數器170以用於維持關於當在該設備中執行向量操作時偵測到之位址衝突之數量的歷史資料。在為該設備可用之指令集包括該檢查指令之數種不同變化的情況中,已發現藉由維持關於位址衝突之適當統計計數器,這使得編譯器代碼能夠評估檢查指令之哪些變化最可能給出較佳效能改良,從而允許重新編譯該代碼以考慮由統計計數器維持之歷史資料。這將在後文參考第8圖及第9圖論述。
根據後文所述之實施例,第1圖之設備可經排列以迭代地執行向量迴圈,並且在各個迭代期間,該執行電路經排列以執行指令序列來實施該向量迴圈,其中該序列包括識別待檢查複數個記憶體位址是否存在位址危險條件之檢查指令。根據所述之實施例,觀察到檢查指令之數種不同變化。第一種變化係如下: 變化1:輸入運算元Zn識別含有位址元件向量的向量暫存器。運算元Pg識別含有主述語之述語暫存器,該主述語用於識別在向量運算元Zn中哪些位址元件係主動位址元件。位址元件可直接識別位址,或替代地可係與基址結合以識別該位址本身的指標/偏移。在一個實施例中,規定此主述語係可選的,並且在無規定之主述語時,假設在向量運算元Zn中全部位址元件係主動位址元件。最後,參數T識別資料類型,例如32位元資料、64位元資料、等等。這因此識別在向量運算元中各個元件之大小。在執行檢查指令時,處理電路115比較各個主動位址元件與各個其他主動位址元件以決定是否有任何位址元件係相同的,並且在偵測到此情況時產生指示存在位址危險條件之輸出。根據上文提及之變化1,輸出導致設定一或更多個條件旗標155以指示存在或不存在位址危險條件。
當考慮先前描述之直方圖問題之第一使用情形時,現將參考第2圖更詳細論述變化1檢查指令之使用。於步驟200,初始化偏移x,隨後於步驟205使用偏移x將一連串指標(位址元件)載入向量暫存器zC中。若需要,於步驟205使用偏移x執行之連續位址載入將考慮主述語資訊。隨後,於步驟210,藉由執行先前提及之檢查指令檢查已載入暫存器zC中之指標是否存在位址衝突,並相應地設定旗標155。若規定主述語,則該檢查操作將受主述語限制以排除任何非主動位址元件。
於步驟215,隨後決定旗標是否指示存在位址衝突。若否,則此指示在向量暫存器zC中全部主動位址元件係唯一的,並且由此可採用預設水平之向量化用於向量迴圈之當前迭代。出於說明之緣故,將假設存在八個主動位址元件A、B、C、D、E、F、G及H,並且因此當採用預設水平之向量化時,並行處理全部八個位址。
由此,在執行檢查操作偵測到無任何位址衝突時,該過程進行至步驟220,其中使用在向量運算元暫存器zC中之全部位址指標從記憶體集中資料,其中將所得資料寫入向量暫存器zA中。隨後,於步驟225,對所載入資料執行所需向量操作或數個向量操作,其中將結果寫回向量暫存器zA中。考慮到先前直方圖問題,此步驟全部所需應將一添加至已載入暫存器zA中之各個資料值,但應瞭解針對其他類型操作,一或更多個不同向量操作可替代地於步驟225執行。若需要,步驟225可被限制以不處理關於並行處理之非主動通道的任何資料。例如,當執行向量操作時考慮主述語係有用的以避免可能出現與非主動通道相關之任何異常。
於步驟230,使用在運算元暫存器zC中之相同位址指標將在向量暫存器zA中之資料隨後散佈回記憶體。若已規定主述語,則散佈操作受主述語限制。
於此點,應瞭解向量迴圈迭代已並行處理八個通道之資料,並且由此已考慮八個位址。由此,於步驟235,偏移x增加了向量長度,隨後於步驟240決定是否存在待處理之任何更多資料。若不存在,則該過程於步驟245結束,而假設存在待處理之更多資料,則該過程返回步驟205以執行向量迴圈之下一迭代。
若於步驟215決定條件旗標指示位址衝突,則根據第2圖所述之實施例,藉由分支至由第2圖之右手側所示之步驟序列實施的後饋路徑採用降低水平之向量化。僅以實例之方式,假設八個位址元件序列係A、B、C、D、E、F、C、H並且由此因為位址元件C之兩次出現而存在位址衝突。該過程可在此情況中藉由執行在檢查指令後之條件分支指令導致分支至後饋路徑,其中分支指令分支至後饋路徑,不論由執行檢查指令設定之旗標是否指示存在位址危險條件。
於步驟250,述語經初始化以僅識別用於處理之單個通道。因此,在第一迭代上,該述語可經初始化至值「10000000」,假設存在根據預設水平之向量化的八個處理通道。隨後,於步驟255,該述語用於自運算元暫存器zC選擇一個指標,在第一迭代中這識別對應於位址A之指標。隨後,於步驟260,載入由該位址識別之純量資料元件,執行所需向量操作(諸如當考慮先前之直方圖問題時使該值增加1),並且隨後使用識別之指標將該結果儲存回記憶體。
隨後,於步驟265決定是否存在待處理之任何更多主動通道,主動通道之數量取決於規定之任何主述語。假設存在待處理之更多主動通道,則該過程進行至步驟270,不論述語是否經調節以識別關於已規定之任何主述語的下一主動通道。隨後,該過程返回步驟255。僅以實例之方式,若主述語將全部八個通道識別為含有主動元件,或不規定主述語,應瞭解步驟255、260、265之過程逐個針對每個位址元件重複八次,隨後於步驟265決定不存在待處理之更多主動通道。於此點,該處理返回至全向量路徑,並且特定言之返回步驟235,此處偏移x現增加了向量長度。於此點,適當地使偏移x增加向量長度,因為在向量暫存器zC中全部主動位址元件將已藉由迭代執行在第2圖之右手側中說明之步驟來處理。該過程可隨後經由步驟240進行至下一向量迴圈迭代。
根據變化1之檢查指令,應瞭解當執行步驟210時,位址比較過程可在一些情況中提早終止。特定言之,一旦已偵測到位址衝突,可相應地設定該等旗標,並且不需要執行任何進一步位址比較以決定是否存在任何進一步位址衝突。這可提供非常有效之檢查過程。
此外,將看到後饋路徑係以非常有效之方式實施。特定言之,儘管所需資料以純量方式載入,不需要執行任何純量操作以載入所需位址,因為全部所需位址係在向量暫存器zC中可用的,並且藉由使用並調節如先前參考步驟250、270論述之述語,繼而可能識別待處理之各個主動位址元件而不執行用於彼等位址元件之任何進一步載入操作。
應瞭解第2圖之過程可以各種方式實施。然而,為了完整,以下代碼序列說明可用於執行第2圖之過程的一個示例實施方式:
根據檢查指令之第一種變化,位址衝突之任何發生導致設定相關旗標或數個旗標,並且為了處理分支至後饋路徑,此處當前向量迴圈迭代實際上由純量操作之迭代序列實施。根據替代實施例,該檢查指令可更進一步而不僅僅設定旗標,並且特定言之可設定保護述語以準確識別哪些位址引起衝突。如後文參考第3圖所論述,儘管這將一些額外步驟引入檢查操作之實施方式,其允許後饋路徑由在降低之向量長度上操作的向量操作之迭代執行來實施,並且因此可使得更快速地實施後饋路徑。由此,在一個實施例,檢查指令之第二種變化係如下; 變化2:
在此變化中,運算元Zn再次識別待對其執行檢查操作的位址元件之向量,其中類型資訊T識別在該向量中各個元件之大小。此外,可變Pd識別結果述語,將保護述語資訊儲存至該結果述語中以指示主動元件屬於直至並且包括出現第一位址衝突之元件的第一元件集合。又,類型資訊T用於識別由述語資訊之各個項目管理之各個位址元件之大小。與變化1一樣,主述語可經由述語暫存器Pg識別,在此實例中,「/Z」指示在結果述語中,由主述語指示之任何非主動通道應歸零。這確保結果述語僅可係主述語之子集。
第3圖係說明可經執行以實施向量迴圈之各個迭代以執行與先前參考第2圖所論述者等效之操作的步驟序列之流程圖。步驟300及305對應於第2圖之步驟200及205,並且由此導致向量暫存器zC填充有使用偏移x自記憶體擷取之資料項目序列,其中彼等資料項目各者形成位址元件。於步驟310,回應於執行檢查指令之變化2來執行檢查操作導致檢查在向量暫存器zC中各個指標每一者是否有位址衝突,相應地設定旗標,並且此外設定保護述語以指示主動位址元件屬於直至並包括出現第一衝突之元件的第一元件集合。如先前論述,當設定保護述語時,這受主述語限制,並且因此相對於與由主術語指示之非主動通道相關之任何位址元件未發現位址衝突。
隨後,該過程進行至步驟315,其中使用在向量運算元zC中之指標集中資料,並且將結果寫入向量暫存器zA中。
於步驟320,存取旗標以指示是否已發現位址衝突。若否,該過程進行至步驟325、330、335、340,其對應於第2圖之步驟225、230、235、240。與第2圖之步驟225一樣,在第3圖之步驟325期間,向量操作可受限於僅在載入資料上執行,該載入資料識別為在由主述語指示的並行處理之主動通道中,假設已規定主述語。
若於步驟320決定該等旗標指示存在位址衝突,則該過程經由執行分支指令分支至後饋路徑,例如使用與先前參考第2圖所論述相同之機制。僅出於說明之緣故,假設當執行第3圖之操作時發現與針對先前參考第2圖所論述之特定實例發現者相同之位址衝突,並且因此在並行處理第三及第七通道中發現位址元件C。由此,該過程進行至步驟350,此處主要述語經初始化為主述語之副本。出於以下論述之目的,假設主述語係p0,保護述語係p1及主要述語係p2。如下文更詳細論述,產生主要述語之原因係因為在後饋路徑之各個迭代期間,更新主要述語值,並且不期望破壞需要出於其他目的維持的主述語值。
該過程隨後進行至步驟355,此處對載入資料元件執行向量操作並將結果寫入暫存器zA中。視情況,步驟355之執行關於保護述語受限以避免執行任何非必需資料處理操作。然而,在其他實施例中,歸因於排列向量處理電路之方式,僅可有效在並行處理之全部通道上執行操作,並且隨後丟棄關於保護述語不需要之結果。
於步驟360,針對由保護述語識別之資料元件,使用在向量暫存器zC中之相關指標將彼等資料元件散佈回記憶體。隨後,於步驟365,清除對應於經處理通道之在主要述語中之區域,產生經更新之主要述語p2。該過程隨後進行至步驟370,此處決定是否存在待處理之任何剩餘通道。若不存在,則處理可返回全向量路徑,並且特定言之該過程可分支至步驟335。然而,假設存在待處理之剩餘通道,則執行進一步檢查操作以檢查在受主要述語限制之向量運算元zC中之指標以產生下一保護述語。假設出於說明之緣故,主述語將全部八個通道識別為主動,且位址衝突係如第3圖所說明,即,位址元件係A、B、C、D、E、F、C、H,則初始保護述語原本為「11100000」。在藉由步驟355、360、365之第一迭代之後,則主要述語應更新以變為「00011111」並且由此當執行步驟375時,該步驟中檢查過程受新的主要述語限制,這可產生經更新之保護述語「00011111」,因此未發現進一步位址衝突。
在步驟375之後,則於步驟380,使用在zC中之指標集中資料並將結果寫入暫存器zA中。於步驟380必須再次集中資料,由於於步驟360執行之散佈操作將潛在地改變所需之一或更多個資料項目之值,並且因此依賴先前已於步驟315集中的資料係不適當的。該過程隨後返回步驟355,此處執行後饋路徑之下一迭代。
下一文本論述在第3圖之過程中使用的各種述語之特定示例形式。出於說明之緣故,假設主述語係形式「11111100」,假設存在根據預設水平之向量化並行處理之八個通道。這識別全部通道(除最後兩個通道之外)含有主動元件。當於步驟310執行位址衝突檢查時,假設在產生初始保護述語中之此結果係形式「11100000」。存在位址衝突將於步驟320偵測到,並且該過程將分支至後饋路徑,其中主要述語p2經初始化以等於主述語,並且因此採用值「11111100」。在後饋路徑之第一迭代期間,在於步驟360執行散佈操作之後,主要述語將於步驟365更新以採用新的形式「00011100」,即,作為後饋路徑之第一迭代之結果減少已經處理之前三個通道。
在於步驟375執行進一步檢查之後,這將導致更新保護述語。出於說明之緣故,假設在第五通道與第六通道之間識別另一位址衝突並且由此更新保護述語p1以變為「00011000」。
在後饋路徑之第二迭代期間,在於步驟360之散佈操作之後,於步驟365更新主要述語以採取形式「00000100」。隨後於步驟375執行之檢查係正常檢查,因為僅存在一個剩餘主動位址元件,並且由此所得保護述語將係形式「00000100」。因此,後饋路徑之最後迭代有效地係純量迭代,隨後處理返回全向量路徑以開始下一向量迴圈迭代。
應瞭解第3圖之過程可以各種方式實施,但用於實施第3圖之過程的一個示例代碼序列係如下:
在參考第2圖及第3圖所說明之實例二者中,在向量迴圈之各個迭代中,可能在存在偵測到之位址危險條件時藉由分支至後饋路徑選擇性降低在該迭代中採用之向量化之水平。然而,在替代實施例中,在向量迴圈之迭代中可採用降低水平之向量化而不提供分開之後饋路徑。第4圖係說明根據此替代實施例執行之步驟的流程圖,假設在第4圖中執行變化2之檢查指令,並且由此產生保護述語。步驟400、405及410與第3圖之300、305及310相對應,於步驟410不需要設定任何旗標除外,因為不存在取決於此等旗標之狀態判定是否繼續預設水平之向量化或分支至後饋路徑的隨後分支指令。
相反,該過程在步驟410之後進行至步驟415,此處使用在向量暫存器zC中之指標自記憶體集中資料值之向量,其中將結果寫入向量暫存器zA。若需要,在一個實施例中,集中操作可受於步驟410產生之保護述語限制。
隨後,該過程進行至步驟420,此處對載入資料執行向量操作,將結果隨後寫回目的暫存器zA。又,若需要,該等操作可關於保護述語受限,使得彼等操作僅對由保護述語識別之主動元件執行。
該過程隨後進行至步驟425,此處使用在向量暫存器zC中之指標散佈在向量暫存器zA中之資料,但受保護述語限制。由此,應瞭解僅在散佈操作期間寫回記憶體之結果資料涉及保護述語已基於於步驟410執行之檢查操作識別為主動的處理通道。因此,應瞭解,在未偵測到位址衝突條件時,在執行步驟415、420及425期間採用預設水平之向量化,藉以處理全部主動通道,僅受規定之任何主述語限制。然而,在偵測到位址危險條件的情況中,在步驟415、420、425期間藉由關於保護述語限制至少散佈操作採用降低水平之向量化,這僅將由主述語指示之通道之子集識別為主動通道。隨後,於步驟430,偏移x增加了保護述語計數。因此,若保護述語僅識別三個主動通道,偏移x將增加3。相比之下,在未偵測到位址衝突條件之任何迭代中,保護述語將有效識別在所處理之通道上不存在限制,並且由此在此迭代中,於步驟430偏移x將增加向量長度。
於步驟435,決定是否存在待處理之更多資料,並且若存在,該過程返回步驟405。應注意,於步驟405,不考慮在先前迭代中是採用預設水平之向量化還是降低水平之向量化,該過程將總是返回用於下一迭代的預設水平之向量化,並且由此載入向量暫存器zC中之指標數量將取決於向量長度。
當於步驟435決定不存在待處理之更多資料時,則該過程於步驟440結束。
儘管在第4圖之上文描述中,假設所執行之檢查指令實質上與變化2相同,儘管不一定設定有任何旗標,在替代實施例中,可使用檢查指令之另一變化,而不是產生保護述語,該變化將指示在當前迭代期間處理的主動元件之數量產生為輸出。在未偵測到位址衝突時,該數量將僅僅指示正常向量長度,並且在該迭代中下游處理將因此不受限制,而非受針對該操作規定之任何主述語限制。然而,在存在偵測之位址衝突條件時,該數量將識別在當前迭代中處理的降低數量之主動元件,並且因此針對該迭代採用降低水平之向量化。
除參考先前圖論述之檢查指令的上述變化之外,亦可能產生結合檢查操作與其他操作之變化。例如,在一個實施例中,該檢查操作可與記憶體存取操作結合,使得在執行該單個指令時,執行上述檢查操作二者,但此外關於由該指令規定之複數個記憶體位址執行記憶體存取操作。作為一個特定實例,可產生檢查指令之變化以提供危險感知集中操作,本文稱為變化3並如下說明: 變化3:
在此實例中,純量暫存器Xn或堆疊指標暫存器SP係用於含有基底指標,並且向量暫存器Zm隨後提供偏移向量,其中類型欄位T識別在該向量暫存器中之元件大小。向量暫存器Zd識別用於集中操作之目的暫存器,且類型欄位T識別在該向量中含有之資料元件的大小。主述語可經由述語暫存器Pg規定,並且注釋「/Z」識別若藉由主述語將等效通道標記為非主動,則在結果向量Zd中之任何資料元件將歸零。
當執行此載入檢查指令時,針對位址衝突之檢查可在處理電路115中執行,而LSU 145執行集中操作。藉由重疊執行檢查操作與集中操作,這可實現進一步效能改良。在此情況中,有效地雙重開始集中及檢查操作,其可使得關於即將發生之位址衝突的資訊能夠提早終止集中並節省時間。因此,在此實施例中,存在選項以基於危險檢查結果提供提早終止集中操作,使得一旦已偵測到危險,不執行集中操作之隨後階段。在一些實施例中,亦可能採用可用於執行集中操作以輔助位址檢查操作的硬體,藉以提供特別有效之實施方式。
當執行此結合之檢查與集中指令時,根據先前描述之實施例,檢查操作之結果可用於設定CPU條件旗標以指示存在或無競態條件。然而,或者,檢查結果可用於設定CPU系統或狀態暫存器,諸如先前參考第1圖論述之HCSR暫存器165。例如,HCSR暫存器可經排列以提供由於位址衝突而未執行載入存取之資訊並且將含有布爾(Boolean)值,例如,「1」集合接著連續數個「0」(其中「0」在其中偵測到衝突之第一通道之後的通道中開始)。可隨後單獨地添加代碼以於與若藉由單獨指令集合執行檢查相比的較低成本檢查狀態位元。
因此,可檢查狀態位元並若需要狀態位元隨後用以設定條件旗標,以在存在位址衝突時實施降低水平之向量化。
此方法之額外益處係當期望僅僅實施標準向量載入操作時(即,其中不需要檢查)亦可使用相同指令。特定言之,在該情況中,檢查仍將與載入並行執行,其中將結果寫入HCSR暫存器,但可隨後僅僅忽視HCSR暫存器之內容。在指令編碼空間受限,並且由此難以發現足夠編碼空間以單獨地編碼可期望之全部各種指令時,此方法可係非常有用。
儘管在變化1、2及3之檢查指令之上述論述中,提供單個輸入向量運算元,在替代實施例中,彼等變化各者亦可經設計以採取第二輸入向量運算元。這可例如用於存在從任意記憶體位置之第一集合的集中操作之情形中,並且隨後提供所載入及處理之資料值以將操作散佈至任意記憶體位置之第二集合。此使用情形可發生(例如)在執行原地資料變換之演算法中。
當考慮到其中使用各種所描述之檢查指令之情況,可考慮執行所需檢查操作中所涉及之等待時間。等待時間涉及需要執行之比較,並且各種比較針對具有向量長度六(並且因此包含向量元件0至5)之向量在第5圖中突出顯示。如由線500所示,向量元件5需要與向量元件4、3、2、1及0各者相比。類似地,如由線505所示,向量元件4需要與向量元件3、2、1及0相比。此外,向量元件3需要與由線510指示之向量元件2、1及0相比,而向量元件2需要與由線515所指示之向量元件1及0相比。最後,向量元件1需要與由線520指示之向量元件0相比。在第5圖中之虛線說明如何分組該等比較。針對給定向量長度VL,必須執行之比較之數量係(VL-1)x(VL)/2。因此,針對向量長度6,需要15個比較,如在第5圖中示意地圖示。
然而,在執行變化1之檢查指令與執行變化2之檢查指令之間存在等待時間差。特定言之,當考慮到變化1時,可能使用在現代CPU中之大部分現有資料路徑。特定言之,如第6圖所示,旋轉器550可用於將輸入之一提供至比較器560,而其他輸入來自源向量運算元。此方法有效組合並「壓縮(compacts)」或「折疊(folds)」在第5圖中標記之分組。這一般係可在執行(in-flight)中執行之排列之一,此時資料正在被送入在CPU中之整數個執行管線中。使用此旋轉器,相對輕型實施方式可提供與VL/2成正比例的等待時間。如第6圖所示,來自比較器之輸出可隨後用於設定CPU條件旗標570。先前論述之檢查指令之變化2具有較高等待時間,因為比較之順序很重要,並且由此需要掃描向量之各個子部分。
可針對正在處理之位址向量係關於連續位址之情況產生檢查指令之額外變化。特定言之,在存取連續記憶體位置之使用情形中,諸如先前論述為「使用情形2」之記憶體複製情況,此等指令可係有用的,並且藉由提供用於執行必需位址衝突檢查之更有效機制。特定言之,由於記憶體存取係連續的,可大體上簡化檢查指令。當考慮記憶體複製操作時這在第7A圖中說明,在記憶體複製操作中資料自連續源位址600之向量複製,其中將該資料隨後寫入連續目的位址610之向量中。利用取決於在各向量中元件之數量及彼等元件之大小的向量長度之知識,可能僅使用純量運算元執行所需位址衝突偵測。特定言之,檢查指令可規定來自源向量之位址元件及來自目的向量之對應位址元件之一,在一個實施例中,假設第一元件x0 及z0 係用於檢查操作的經選擇之位址元件。如於步驟620圖示,當具有此等兩個純量位址元件時,檢查操作可隨後決定差z0 -x0 是否大於或等於向量長度,或為負的或0。若如此,則可確保當從源位址600之向量複製資料時將不存在位址衝突並且隨後將該資料寫入目的位址610之向量中。然而,若差z0 -x0 小於該向量長度並且大於0,則將出現位址衝突。
於步驟630,可取決於比較結果設定CPU條件旗標,以在差z0 -x0 小於向量長度並且大於0時識別位址衝突。
在替代實施例中,可出於實施方式原因判定於步驟620執行不同檢查,並且特定言之執行檢查以偵測作為輸入提供之兩個純量位址值之間的絕對差不大於或等於向量長度的情況。若絕對差小於向量長度,這可指示存在衝突,並且可由此於步驟630設定條件旗標。然而,從先前提及的參考第7A圖之步驟620論述之不等式,應瞭解基於絕對差之檢查將產生一些偽陽性,因為當帶符號之計算整數結果z0 -x0 係小於向量長度並且亦為負的或等於0時,實際上不存在無競態條件。
可產生檢查指令之變化以執行在第7A圖中論述之檢查,並且以下變化4及5係分別作為變化1及2之替代提供的檢查指令之此等變化: 變化4:變化5:
如變化4所示,提供兩個純量輸入值Xn及Xm,此等分別識別含有位址元件x0 及z0 之暫存器。若需要,可提供主述語以識別主動通道之數量,並且類型資訊T係用於識別資料元件大小,藉以實現計算向量長度VL。當計算有效向量長度時亦可使用述語資訊。例如,若在第7圖之實例中排除最後兩個資料元件通道,則有效向量長度係位址元件大小之六倍,而非有效向量長度係位址元件大小之八倍,並且當決定差z0 -x0 是大於還是等於相關向量長度,或為負的或0時這可考慮在內。
上文變化5係變化4之述語產生版本,該變化產生一述語,在未偵測到衝突(例如,若差z0 -x0 大於或等於向量長度,或係負的或0)時在各主動通道中之結果設定為「真」。然而,在偵測到衝突之情況中,並且假設差z0 -x0 係「y」,則產生述語,其中「y」元件之連續集合設定為真,並且將剩餘元件設定為假。這可用作迴圈之控制遮罩。
設定檢查機制之上文述語係以實例之方式在第7B圖至第7E圖中說明。第7B圖說明值之初始序列,其中A係目的地指標且B係源指標。若向量長度係8,將在此實例中看到基於於第7A圖之步驟620執行之檢查偵測到衝突。第7C圖說明若作為一系列純量操作執行記憶體複製(memcpy)操作記憶體之內容係什麼,並且因此指示針對操作之任何向量化形式的所需結果。第7D圖說明若向量化記憶體複製(memcpy)操作而不採用所述實施例之檢查機制時產生的記憶體內容。
最後,第7E圖圖示若執行變化5之檢查指令則在一個實施例中可形成的保護述語,此述語隨後用於確保在各個迭代期間僅處理三個元件,並且因此獲得在第7C圖中說明之結果。
應進一步注意,可針對其中連續載入之元件發生逆轉的情形導出特殊檢查指令之推論定義。
當用於由第1圖之設備使用而提供的指令集提供了檢查指令之多種不同變化時,可能編譯器不可靜態地決定所關注之眾多工作負荷的最佳變化。為了利用由上文論述之檢查指令之不同變化提供的各種效能益處之優點,可採用先前提及之位址衝突統計計數器170。在一個實施例中,此等計數器可不僅用以識別在任何給定時期中偵測到之衝突總數,亦(或替代地)識別向量內衝突之總數,即,在特定向量長度中衝突之數量。藉由在計數器170中記錄此資訊,這使軟體能夠估計每個位址向量之向量內衝突之平均數量。此統計可隨後由動態優化工具或智慧運行時間使用以選擇針對給定計算工作負荷的最佳指令變化。這參考第8圖之流程圖以實例之方式說明,其說明使用統計計數器資訊執行之動態編譯過程。
於步驟700,維持位址衝突統計計數器給定時段。於步驟705,決定是否已超過預定時間,並且若否,則該過程返回步驟700,此處由於由該設備執行指令序列,繼續維持位址衝突計數器。一旦已超過預定時間,則於步驟710分析位址衝突統計計數器以決定每位址向量之向量內衝突之平均數量。此資訊隨後用於於步驟715選擇適當檢查指令,隨後,於步驟720將經選擇之檢查指令變化連同任何相關指令序列(例如先前參考第2圖及第3圖之實例論述的後饋路徑指令)隨後插入該代碼中。隨後,於步驟725,在返回步驟700之前可視情況重置該計數器。
第9圖係用於說明此編譯過程可有多有用之圖,並且特定言之可獲得之加速益處形成不同變化可如何取決於在向量內衝突中之向量之百分數而不同。特定言之,在第9圖中之結果圖示針對變化1檢查指令及變化2檢查指令向量化代碼相對純量實施方式之潛在加速,這取決於發生之向量內衝突之向量百分數。針對變化1,存在單個曲線750,由於自第2圖之先前論述清楚可見,當採用變化1時,任何位址衝突導致向量迴圈之當前迭代作為純量操作之迭代序列執行。然而,針對變化2,加速取決於在特定向量中偵測到之位址衝突之數量。在第9圖中所示之「numparts」值指示實施向量迴圈之當前迭代所需的在第3圖之後饋路徑中迭代之數量。自該圖顯而易見,當在向量中位址衝突之平均數量係低時變化2係有利的,並且隨著向量內位址衝突之數量增加,加速降低。
亦應注意,隨著向量長度增加,在向量中存在一個以上衝突的可能性亦增加,並且由此針對較寬向量,變化1檢查指令可按比例縮放得更好。
第10圖說明可使用之虛擬機實施方式。儘管先前描述之實施例根據用於操作支援相關技術之特定處理硬體的設備及方法來實施本技術,亦有可能提供硬體元件的所謂之虛擬機實施方式。此等虛擬機實施方式在主處理器830上運行,該主處理器通常運行支援虛擬機程式810的主作業系統820。通常,需要大型強力處理器以提供按合理速度執行的虛擬機實施方式,但此方法在某些環境中可為合理的,諸如當出於相容性或出於再使用之原因需要運行另一處理器本端代碼時。虛擬機程式810能夠執行應用程式(或作業系統)800以給出與由此實際硬體元件執行該程式給出者相同之結果。因此,程式指令(包括上述檢查指令)可使用虛擬機程式810在應用程式800中執行。
從上文所述之實施例中,將看到當向量化具有不常規或非線性記憶體存取型式之代碼時,使用上述檢查指令提供潛在記憶體依賴破壞問題的低額外負擔之解決方式。已發現所述技術可大幅度改良具有間接記憶體引用的程式(特定言之其記憶體存取係未成熟之彼等)效能並且使得難以或不可能靜態證明不存在競態條件,或甚至決定針對不同向量長度之此等危險之平均頻率。
在本申請案中,用語「經配置以…」意思是設備元件具有能夠進行定義之操作的配置。在此上下文中,「配置」意思是硬體或軟體之互連之排列或方式。例如,設備可具有提供定義之操作的專用硬體,或處理器或其他處理元件可經程式化以執行該功能。「經配置以」不暗示該設備元件需要以任何方式改變以提供定義之操作。
儘管已在本文中參考隨附圖式詳細描述了本發明之說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習此項技術者可在本發明中實現各種改變、添加及修改,而不偏離由隨附申請專利範圍定義的本發明之範疇及精神。例如,附屬項之特徵可與獨立項之特徵組合而不脫離本發明之範疇。
100‧‧‧指令佇列 105‧‧‧解碼電路 110‧‧‧發佈佇列 115‧‧‧處理電路 120‧‧‧向量處理單元 125‧‧‧向量處理單元 130‧‧‧向量處理單元 135‧‧‧向量處理單元 140‧‧‧向量暫存器檔案 145‧‧‧向量載入/儲存單元 150‧‧‧述語暫存器檔案 155‧‧‧旗標 160‧‧‧系統暫存器 165‧‧‧危險檢查狀態暫存器 170‧‧‧位址衝突統計計數器 200‧‧‧步驟 205‧‧‧步驟 210‧‧‧步驟 215‧‧‧步驟 220‧‧‧步驟 225‧‧‧步驟 230‧‧‧步驟 235‧‧‧步驟 240‧‧‧步驟 245‧‧‧步驟 250‧‧‧步驟 255‧‧‧步驟 260‧‧‧步驟 265‧‧‧步驟 270‧‧‧步驟 300‧‧‧步驟 305‧‧‧步驟 310‧‧‧步驟 315‧‧‧步驟 320‧‧‧步驟 325‧‧‧步驟 330‧‧‧步驟 335‧‧‧步驟 340‧‧‧步驟 345‧‧‧步驟 350‧‧‧步驟 355‧‧‧步驟 360‧‧‧步驟 365‧‧‧步驟 370‧‧‧步驟 375‧‧‧步驟 380‧‧‧步驟 400‧‧‧步驟 405‧‧‧步驟 410‧‧‧步驟 415‧‧‧步驟 420‧‧‧步驟 425‧‧‧步驟 430‧‧‧步驟 435‧‧‧步驟 440‧‧‧步驟 500‧‧‧線 505‧‧‧線 510‧‧‧線 515‧‧‧線 520‧‧‧線 550‧‧‧旋轉器 560‧‧‧比較器 570‧‧‧CPU條件旗標 600‧‧‧源位址 610‧‧‧目的位址 620‧‧‧步驟 630‧‧‧步驟 700‧‧‧步驟 705‧‧‧步驟 710‧‧‧步驟 715‧‧‧步驟 720‧‧‧步驟 725‧‧‧步驟 750‧‧‧曲線 800‧‧‧應用程式 810‧‧‧虛擬機程式 820‧‧‧主作業系統 830‧‧‧主處理器
本技術將僅以實例之方式參考如在附圖中所說明之其實施例進一步描述,其中:
第1圖係根據一個實施例之設備之方塊圖;
第2圖係根據一個實施例說明使用第1圖之設備執行向量迴圈之流程圖;
第3圖係根據替代實施例說明使用第1圖之設備執行向量迴圈之流程圖;
第4圖係根據又一實施例說明使用第1圖之設備執行向量迴圈之流程圖;
第5圖根據一個實施例示意地說明可如何對在執行檢查指令期間所需之比較分組;
第6圖係根據一個實施例說明旋轉器及比較器可如何使用以合併根據第5圖所示之分組的多個位址比較的方塊圖;
第7A圖至第7E圖係用以說明檢查指令之替代變化的圖,該檢查指令可用於一個實施例中,其中需要位址衝突偵測之相關位址向量含有連續記憶體位址;
第8圖係根據一個實施例示意地說明可如何執行編譯操作以決定在特定向量迴圈中使用之適當形式之檢查指令的流程圖;
第9圖係說明取決於插入向量迴圈中之檢查指令之類型的經向量化代碼相對於純量實施之潛在加速的圖;
第10圖根據一個實施例示意地說明資料處理設備之虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
100‧‧‧指令佇列
105‧‧‧解碼電路
110‧‧‧發佈佇列
115‧‧‧處理電路
120‧‧‧向量處理單元
125‧‧‧向量處理單元
130‧‧‧向量處理單元
135‧‧‧向量處理單元
140‧‧‧向量暫存器檔案
145‧‧‧向量載入/儲存單元
150‧‧‧述語暫存器檔案
155‧‧‧旗標
160‧‧‧系統暫存器
165‧‧‧危險檢查狀態暫存器
170‧‧‧位址衝突統計計數器

Claims (25)

  1. 一種設備,其包含: 一暫存器儲存,用以儲存向量運算元,各個向量運算元包含複數個元件;執行電路,用以執行指令以執行由該等指令規定之操作,該執行電路包含用以執行記憶體存取操作以在該暫存器儲存與記憶體之間移動該等向量運算元的存取電路及用以使用該等向量運算元執行資料處理操作的處理電路;該執行電路經排列以迭代地執行一向量迴圈,在各個迭代期間,該執行電路經排列以執行一指令序列以實施該向量迴圈,該序列包括一檢查指令以識別複數個記憶體位址,並且該執行電路回應於執行該檢查指令以決定在該複數個記憶體位址中是否存在一位址危險條件;針對該向量迴圈之各個迭代,該執行電路回應於該檢查指令之執行決定無該位址危險條件以當執行該指令序列以實施該向量迴圈時採用一預設水平之向量化,並且回應於該檢查指令之執行決定存在該位址危險條件以當執行該指令序列以實施該向量迴圈時採用一降低水平之向量化。
  2. 如請求項1所述之設備,其中: 該執行電路回應於該檢查指令之執行決定該無該位址危險條件,以藉由執行在該指令序列中之第一複數個指令採用該預設水平之向量化來實施該向量迴圈;以及該執行電路回應於該檢查指令之執行決定該存在該位址危險條件,以藉由替迭代地執行在該指令序列中之第二複數個指令採用該降低水平之向量化來實施該向量迴圈。
  3. 如請求項2所述之設備,其中該執行電路回應於該檢查指令之執行以產生指示該位址危險條件是否存在之結果資料,用於由在該序列中之一隨後指令引用。
  4. 如請求項3所述之設備,其中該結果資料包含一或更多個旗標,並且該隨後指令係一分支指令,當藉由該指令電路執行時,該分支指令引用該一或更多個旗標以決定是否執行該第一複數個指令或是否迭代地執行該第二複數個指令。
  5. 如請求項2所述之設備,其中該第二複數個指令包含導致該執行電路對個別元件操作之純量指令,並且實施該向量迴圈所需之該第二複數個指令之迭代執行的該數量係取決於與該預設水平之向量化相關之該等向量運算元的主動元件之一數量。
  6. 如請求項2所述之設備,其中: 該執行電路回應於該檢查指令之執行以產生具有一初始述語值之一保護述語;該第二複數個指令包含導致該執行電路對一或更多個向量運算元之該等元件之一子集並行操作的向量指令,該子集由該保護述語識別;以及在該第二複數個指令之各個迭代上,更新該保護述語之該述語值以排除由任何前述迭代操作之該一或更多個向量運算元之任何元件。
  7. 如請求項6所述之設備,其中該保護述語受限制以識別該等元件之一子集,該等元件係由一主述語識別之主動元件。
  8. 如請求項1所述之設備,其中: 該預設水平之向量化識別主動元件之一第一數量,並且回應於該檢查指令之執行決定存在該無該位址危險條件,該執行電路經排列以當執行該指令序列以實施該向量迴圈時並行處理該第一數量之元件;以及該執行電路回應於該檢查指令之執行以當執行該檢查指令決定存在該位址危險條件時產生將主動元件之該數量降低至小於該第一數量之主動元件之一第二數量的一控制輸出,以當執行該指令序列以實施該向量迴圈時藉由並行處理該第二數量之元件導致該執行電路採用該降低水平之向量化。
  9. 如請求項8所述之設備,其中於該向量迴圈之各個迭代之該開始處,該執行電路經排列以返回到採用該預設水平之向量化。
  10. 如請求項8所述之設備,其中該控制輸出包含識別形成該第二數量之主動元件之該等主動元件的一保護述語。
  11. 如請求項1所述之設備,其中該檢查指令規定包含複數個主動位址元件之至少一個向量運算元,並且在執行該檢查指令時,該執行電路經排列以比較各個主動位址元件與各個其他主動位址元件以決定該位址危險條件是否存在。
  12. 如請求項1所述之設備,其中該檢查指令規定與一第一序列之連續位址相關的一第一位址及與一第二序列之連續位址相關的一第二位址,並且在執行該檢查指令時,該執行電路經排列以取決於在該第一位址與該第二位址之間之一差決定存在該位址危險條件。
  13. 如請求項1所述之設備,其中該檢查指令係一檢查及記憶體存取指令,該執行電路回應於該檢查及記憶體存取指令之執行以執行一檢查操作來決定在該複數個記憶體位址中是否存在該位址危險條件,同時亦相對於該複數個記憶體位址執行一記憶體存取操作。
  14. 如請求項13所述之設備,其中在決定存在該位址危險條件時,該執行電路經排列以終止該記憶體存取操作之任何剩餘部分。
  15. 如請求項1所述之設備,其中該處理電路包含專用檢查電路以在執行該檢查指令時執行一檢查操作。
  16. 如請求項1所述之設備,其中該處理電路包含用於執行資料處理操作之一處理單元,且該處理單元重新用於在執行該檢查指令時執行一檢查操作。
  17. 如請求項16所述之設備,其中在該處理單元中旋轉器電路及比較器電路係用於合併在該執行該檢查操作期間需要之一或更多個位址比較。
  18. 如請求項1所述之設備,其中該執行電路回應於該檢查指令之執行以產生指示該位址危險條件是否存在之結果資料,用於由在該序列中之一隨後指令引用,該設備進一步包含一危險檢查狀態暫存器,該執行電路經排列以將由執行該檢查指令產生之該結果資料儲存至該危險檢查狀態暫存器中。
  19. 如請求項1所述之設備,其中各個向量運算元包含N個元件,並且N個主動元件係與該預設水平之向量化相關使得該執行電路回應於該檢查指令之執行決定無該位址危險條件以當執行該指令序列以實施該向量迴圈時並行處理N個元件。
  20. 如請求項1所述之設備,其中各個向量運算元包含N個元件,一主述語將小於或等於N之元件之一數量識別為主動元件,並且該預設水平之向量化對應於由該主述語識別之該等主動元件,使得該執行電路回應於該檢查指令之執行決定無該位址危險條件,以當執行該指令序列以實施該向量迴圈時並行處理由該主述語識別之該等主動元件。
  21. 如請求項1所述之設備,進一步包含: 計數器電路,用以維持有關針對先前執行之指令序列出現該位址危險條件之歷史資料;以及該執行電路經排列以在包括複數個不同類型之檢查指令的一指令集之控制下操作;藉以該歷史資料變得為一編譯器可用以使該編輯器能夠考慮到該歷史資料決定哪種類型之檢查指令用於該向量迴圈中。
  22. 如請求項21所述之設備,其中,針對一經選擇之時段,該歷史資料識別偵測到之位址衝突之一總數及在該等向量運算元之一向量長度中偵測到之位址衝突之一數量的至少一者。
  23. 一種在一設備中當執行向量操作時管理位址衝突之方法,該設備具有:用以儲存向量運算元的一暫存器儲存,各個向量運算元包含複數個元件;及用以執行指令以執行由該等指令規定之操作的執行電路,該執行電路執行記憶體存取操作以在該暫存器儲存與記憶體之間移動該等向量運算元,並且使用該等向量運算元執行資料處理操作,該方法包含以下步驟: 迭代地執行一向量迴圈;在各個迭代期間,在該執行電路中執行一指令序列以實施該向量迴圈,該序列包括識別複數個記憶體位址之一檢查指令,並且該執行電路回應於執行該檢查指令以決定在該複數個記憶體位址中是否存在一位址危險條件;以及針對該向量迴圈之各個迭代,回應於該檢查指令之執行決定無該位址危險條件,當執行該指令序列以實施該向量迴圈時採用一預設水平之向量化,並且回應於該檢查指令之執行決定存在該位址危險條件,當執行該指令序列以實施該向量迴圈時採用一降低水平之向量化。
  24. 一種以一非暫時形式儲存一電腦程式之電腦程式產品,用於控制一電腦以提供用於對應於如請求項1所述之設備的程式指令之一虛擬機執行環境。
  25. 一種設備,其包含: 暫存器儲存構件,用於儲存向量運算元,各個向量運算元包含複數個元件;執行構件,用於執行指令以執行由該等指令規定之操作,該執行構件包含用於執行記憶體存取操作以在該暫存器儲存構件與記憶體之間移動該等向量運算元的存取構件及用於使用該等向量運算元執行資料處理操作的處理構件;該執行構件用於迭代地執行一向量迴圈,在各個迭代期間,該執行構件用於執行一指令序列以實施該向量迴圈,該序列包括識別複數個記憶體位址之一檢查指令,並且該執行構件用於回應於該檢查指令之執行決定在該複數個記憶體位址中是否存在一位址危險條件;針對該向量迴圈之各個迭代,該執行構件回應於該檢查指令之執行決定無該位址危險條件以當執行該指令序列以實施該向量迴圈時採用一預設水平之向量化,並且回應於該檢查指令之執行決定存在該位址危險條件以當執行該指令序列以實施該向量迴圈時採用一降低水平之向量化。
TW106113721A 2016-04-26 2017-04-25 在執行向量操作時管理位址衝突的設備及方法 TWI733798B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1607261.3A GB2549737B (en) 2016-04-26 2016-04-26 An apparatus and method for managing address collisions when performing vector operations
GB1607261.3 2016-04-26

Publications (2)

Publication Number Publication Date
TW201738737A true TW201738737A (zh) 2017-11-01
TWI733798B TWI733798B (zh) 2021-07-21

Family

ID=58548749

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106113721A TWI733798B (zh) 2016-04-26 2017-04-25 在執行向量操作時管理位址衝突的設備及方法

Country Status (9)

Country Link
US (1) US11132196B2 (zh)
EP (1) EP3449356B1 (zh)
JP (1) JP6913693B2 (zh)
KR (1) KR102379894B1 (zh)
CN (1) CN109074256B (zh)
GB (1) GB2549737B (zh)
IL (1) IL262198B (zh)
TW (1) TWI733798B (zh)
WO (1) WO2017187130A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713746B2 (en) 2018-01-29 2020-07-14 Microsoft Technology Licensing, Llc FIFO queue, memory resource, and task management for graphics processing
US10719268B2 (en) * 2018-06-29 2020-07-21 Microsoft Technology Licensing, Llc Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor
JP7124608B2 (ja) * 2018-09-28 2022-08-24 日本電気株式会社 計算機および計算方法
US10963252B2 (en) * 2019-05-24 2021-03-30 Texas Instruments Incorporated Vector maximum and minimum with indexing
GB2585202B (en) * 2019-07-01 2021-11-24 Advanced Risc Mach Ltd An apparatus and method for speculatively vectorising program code
CN111158755A (zh) * 2019-11-29 2020-05-15 华东师范大学 用于消除simd向量化程序中缓存缺失的多向量交错执行方法
JP2023133850A (ja) 2022-03-14 2023-09-27 富士通株式会社 演算処理装置および演算処理方法
CN117093268B (zh) * 2023-10-19 2024-01-30 超睿科技(长沙)有限公司 一种向量处理方法、系统、设备及存储介质
CN117891509B (zh) * 2024-03-18 2024-06-14 芯来智融半导体科技(上海)有限公司 数据访存方法、装置、计算机设备和存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN169636B (zh) * 1987-07-01 1991-11-23 Digital Equipment Corp
US5063497A (en) * 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
JPH0812661B2 (ja) 1988-04-01 1996-02-07 日本電気株式会社 命令処理順序制御システム
ATE158424T1 (de) * 1989-06-30 1997-10-15 Digital Equipment Corp Verfahren und anordnung zur steuerung von schattenspeichern
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
US6219780B1 (en) * 1998-10-27 2001-04-17 International Business Machines Corporation Circuit arrangement and method of dispatching instructions to multiple execution units
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
US7941584B2 (en) * 2009-03-26 2011-05-10 Arm Limited Data processing apparatus and method for performing hazard detection
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US9021233B2 (en) * 2011-09-28 2015-04-28 Arm Limited Interleaving data accesses issued in response to vector access instructions
CN104081336B (zh) * 2011-12-23 2018-10-23 英特尔公司 用于检测向量寄存器内的相同元素的装置和方法
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
US9098265B2 (en) * 2012-07-11 2015-08-04 Arm Limited Controlling an order for processing data elements during vector processing
US9400650B2 (en) * 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
US10241793B2 (en) * 2013-03-15 2019-03-26 Analog Devices Global Paralleizing loops in the presence of possible memory aliases
CN104969179B (zh) 2013-03-15 2019-07-16 英特尔公司 用于将具有循环承载的依赖的标量计算机程序循环向量化的方法和系统
CN103279327B (zh) * 2013-04-28 2015-11-25 中国人民解放军信息工程大学 面向异构simd扩展部件的自动向量化方法
US9600280B2 (en) * 2013-09-24 2017-03-21 Apple Inc. Hazard check instructions for enhanced predicate vector operations
GB2519107B (en) * 2013-10-09 2020-05-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing speculative vector access operations
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US9891913B2 (en) * 2014-12-23 2018-02-13 Intel Corporation Method and apparatus for performing conflict detection using vector comparison operations

Also Published As

Publication number Publication date
WO2017187130A1 (en) 2017-11-02
KR20180137521A (ko) 2018-12-27
JP6913693B2 (ja) 2021-08-04
EP3449356A1 (en) 2019-03-06
GB2549737B (en) 2019-05-08
IL262198A (en) 2018-11-29
JP2019517060A (ja) 2019-06-20
KR102379894B1 (ko) 2022-03-30
TWI733798B (zh) 2021-07-21
EP3449356B1 (en) 2020-01-22
CN109074256A (zh) 2018-12-21
IL262198B (en) 2020-09-30
GB2549737A (en) 2017-11-01
US11132196B2 (en) 2021-09-28
US20190114172A1 (en) 2019-04-18
CN109074256B (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
US9557995B2 (en) Data processing apparatus and method for performing segmented operations
US8417921B2 (en) Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector
KR101511837B1 (ko) 벡터 분할 루프들의 성능 향상
US8176299B2 (en) Generating stop indicators based on conditional data dependency in vector processors
US8019976B2 (en) Memory-hazard detection and avoidance instructions for vector processing
US8181001B2 (en) Conditional data-dependency resolution in vector processors
US8745360B2 (en) Generating predicate values based on conditional data dependency in vector processors
US9317284B2 (en) Vector hazard check instruction with reduced source operands
US9367309B2 (en) Predicate attribute tracker
US9098295B2 (en) Predicting a result for an actual instruction when processing vector instructions
US20160092217A1 (en) Compare Break Instructions
US9390058B2 (en) Dynamic attribute inference
US11481223B2 (en) Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions
US8924693B2 (en) Predicting a result for a predicate-generating instruction when processing vector instructions
WO2023142524A1 (zh) 指令处理方法、装置、芯片、电子设备以及存储介质
US10162640B2 (en) Instruction for performing an overload check
US9009528B2 (en) Scalar readXF instruction for processing vectors