TW201716991A - 資料處理 - Google Patents

資料處理 Download PDF

Info

Publication number
TW201716991A
TW201716991A TW105123856A TW105123856A TW201716991A TW 201716991 A TW201716991 A TW 201716991A TW 105123856 A TW105123856 A TW 105123856A TW 105123856 A TW105123856 A TW 105123856A TW 201716991 A TW201716991 A TW 201716991A
Authority
TW
Taiwan
Prior art keywords
instruction
value
data
variable
vector
Prior art date
Application number
TW105123856A
Other languages
English (en)
Other versions
TWI723036B (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 TW201716991A publication Critical patent/TW201716991A/zh
Application granted granted Critical
Publication of TWI723036B publication Critical patent/TWI723036B/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/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/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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Communication Control (AREA)

Abstract

資料處理裝置,包括:處理電路系統,用以選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該處理電路系統包括:指令解碼器電路系統,用以解碼程式指令;及指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令;其中該指令解碼器電路系統回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該指令處理電路系統以取決於該等述語旗標的一數量及該更改值以一量改變一變數的該值。

Description

資料處理
此揭示案關於資料處理裝置及方法。
某些資料處理佈置允許向量處理操作,涉及將單一向量處理指令施用於在資料向量中的各別位置處具有複數個資料項目之該資料向量的資料項目。相較之下,純量處理有效地操作於單一資料項目上而非資料向量上。
在處理操作被實現於許多不同的要被處理的資料的實例的實例中,向量處理可為有用的。在向量處理佈置中,單一指令可同時施用於(資料向量的)多個資料項目。這相較於純量處理可改良資料處理的效率及吞吐量。
在一示例佈置中,提供了一資料處理裝置,該資料處理裝置包括:
處理電路系統,用以選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該處理電路系統包括:
指令解碼器電路系統,用以解碼程式指令;及
指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令;
其中該指令解碼器電路系統回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該指令處理電路系統以取決於該等述語旗標的一數量及該更改值以一量改變一變數的該值。
在另一示例佈置中,提供了資料處理裝置,該資料處理裝置包括:
用於選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目的手段,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該施用手段包括:
用於解碼指令的手段;及
用於執行由用於解碼的手段所解碼之指令的手段;
其中用於解碼指令的該手段回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制用於執行指令的該手段以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
在另一示例佈置中,提供了一資料處理方法,該資料處理方法包括以下步驟:
選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;
解碼指令;及
執行指令;
其中該解碼步驟回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該執行步驟以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
在另一示例佈置中,提供了一虛擬機器,該虛擬機器包括一資料處理器,該資料處理器用以執行一電腦程式,該電腦程式包括機器可讀取指令,其中該電腦程式的執行使得該資料處理器充當一資料處理裝置,該資料處理裝置包括:
一處理器,用以選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該處理器包括:
一指令解碼器,用以解碼指令;及
一指令處理器,用以執行由該指令解碼器所解碼的指令。
其中該指令解碼器回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該指令處理器以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
在另一示例佈置中,提供了一資料處理裝置,該資料處理裝置包括:
指令解碼器電路系統,用以解碼指令;及
指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令;
該指令解碼器電路系統回應於一WHILE指令以控制該指令處理電路系統,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及
該指令解碼器電路系統回應於一CHANGE指令以控制該指令處理電路系統,來依據一相關聯的飽和值取決於該等述語旗標的一數量以一量改變該控制變數的該值,以便在不超過該飽和值的情況下改變該控制變數。
在另一示例佈置中,提供了一資料處理裝置,該資料處理裝置包括:
用於解碼指令的手段;及
用於執行由用於解碼的手段所解碼之指令的手段;
用於解碼的該手段回應於一WHILE指令以控制用於執行的該手段,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及
用於解碼的該手段回應於一CHANGE指令以控制用於執行的該手段,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行可用以在不超過該飽和值的情況下改變該控制變數的該值。
在另一示例佈置中,提供了一資料處理方法,該資料處理方法包括以下步驟:
解碼指令;及
執行由該解碼步驟所解碼的指令;
該解碼步驟回應於一WHILE指令以控制該執行步驟,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及
該解碼步驟回應於一CHANGE指令以控制該執行步驟,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行在不超過該飽和值的情況下改變該控制變數的該值。
在另一示例佈置中,提供了一虛擬機器,該虛擬機器包括一資料處理器,該資料處理器用以執行一電腦程式,該電腦程式包括機器可讀取指令,其中該電腦程式的執行使得該資料處理器充當一資料處理裝置,該資料處理裝置包括:
一指令解碼器,用以解碼指令;及
一指令處理器,用以執行由該指令解碼器所解碼的指令;
該指令解碼器回應於一WHILE指令以控制該指令處理器,來將一向量處理操作施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量包括複數個資料項目,該施用步驟依據與該複數個資料項目相關聯之各別述語旗標的該狀態來進行;及
該指令解碼器回應於一CHANGE指令以控制該指令處理器,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行在執行時在不超過該飽和值的情況下改變該控制變數的該值。
在參照隨附圖式來討論實施例之前,提供以下實施例說明。
示例實施例提供資料處理裝置,包括:
處理電路系統,用以選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該處理電路系統包括:
指令解碼器電路系統,用以解碼程式指令;及
指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令;
其中該指令解碼器電路系統回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該指令處理電路系統以取決於該等述語旗標的一數量及該更改值以一量改變一變數的該值。
本揭示案辨識的是,在欲由不同向量處理電路系統的實例(在無重新編譯程序的情況下)執行程式指令且其中該等不同實例可能具有不同可用向量長度VL 的情況下,提供用於控制迴圈化或其他操作的佈置可為有用的,該等操作依據向量處理電路系統的任何可用長度VL 而操作,其中藉由該向量處理電路系統執行該等指令。(一替代方案(其會要將概念上的VL 固定於可能在不同的向量處理電路系統實例當中遭遇的最小水準)因為不使用在某些實例中可用的較大向量長度而可能是沒有效率的。)
本揭示案的實施例提供CHANGE指令,該CHANGE指令在執行時,取決於述語旗標的數量(例如作為用於向量長度的代理器)以一量更改變數(例如迴圈控制變數),且可因此依據系統的向量長度來設定該改變的該量,其中藉由該系統執行該指令。這可允許在不一定需要重新編譯的情況下,在具有不同各別可用之向量長度的不同向量處理電路系統實例上執行相同的程式指令。
使用更改值允許將單一CHANGE指令用在(例如)迴圈控制或其他向量操作中,其中該向量操作是「展開的」,這也就是說,多個資料向量係以迴圈或其他處理指令集合的單一迭代或實例來處理。
在示例實施例中,指令解碼器電路系統回應於CHANGE指令來控制指令處理電路系統,以取決於取決於述語旗標數量的值及更改值的乘積以一量改變變數的值。在示例中,更改值可為乘法值。在示例中,由CHANGE指令所設定之控制變數的連續值之間的步階可取決於(例如正比於)更改值。
為了允許由簡單的算術測試來測試變數值以(例如)決定迴圈是否已完成,在示例實施例中,CHANGE指令具有相關聯的飽和值,以便CHANGE指令在執行時,在不超過該飽和值的情況下改變變數值。
在某些示例中,CHANGE指令是用以減少變數值的減量指令;而飽和值是可由該變數表示的最小值。在其他示例中,CHANGE指令是用以增加變數值的增量指令;而飽和值是可由該變數表示的最大值。
CHANGE指令在迴圈控制的背景中特別有用(雖然不是只在該背景中有用),且在一示例實施例中,變數是計數變數,向量處理電路系統在處理迴圈的一或更多個迭代期間將向量處理指令施用於至少部分地由該計數變數所定義的資料向量;指令解碼器電路系統回應於用以控制指令處理電路系統的進一步指令,以偵測是否繼續取決於該計數變數而迭代執行處理迴圈。
在示例實施例中,用以偵測是否繼續執行處理迴圈的進一步指令包括WHILE指令,指令解碼器電路系統回應於WHILE指令以在一算術條件施用於計數變數的同時控制指令處理電路系統繼續迭代執行處理迴圈。例如,算術條件可為選自以下列物組成之清單的條件:       i.   計數變數小於上限值;      ii.   計數變數大於下限值;    iii.   計數變數小於或等於上限值;及     iv.   計數變數大於或等於下限值。
因為述語旗標的數量在某些實例中可能不等於系統的向量長度,在某些實例中,指令解碼器電路系統回應於CHANGE指令以控制指令處理電路系統,來取決於述語旗標數量及更改值的受選子集合(例如如由處理電路系統所選擇的)以一量改變變數值。
如以下所討論的,在示例實施例中,指令解碼器電路系統回應於WHILE指令以控制指令處理電路系統,來選擇述語旗標中的一或更多者以供設定至現用狀態,以便迴圈變數值(考慮經選擇以供設定至現用狀態之述語旗標的數量)並不突破算術條件。如以下所討論的,在示例實施例中,指令解碼器電路系統回應於WHILE指令以控制指令處理電路系統,來選擇述語旗標中的一或更多者以供依據預定的述語旗標順序設定至現用狀態,以便迴圈變數值(考慮經選擇以供設定至現用狀態之述語旗標的數量)並不突破算術條件。
示例實施例亦提供資料處理裝置,包括:
用於選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目的手段,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該施用手段包括:
用於解碼指令的手段;及
用於執行由用於解碼的手段所解碼之指令的手段;
其中用於解碼指令的該手段回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制用於執行指令的該手段以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
示例實施例亦提供資料處理方法,包括以下步驟:
選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;
解碼指令;及
執行指令;
其中該解碼步驟回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該執行步驟以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
示例實施例亦提供一虛擬機器,該虛擬機器包括一資料處理器,該資料處理器用以執行一電腦程式,該電腦程式包括機器可讀取指令,其中該電腦程式的執行使得該資料處理器充當一資料處理裝置,該資料處理裝置包括:
一處理器,用以選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該處理器包括:
一指令解碼器,用以解碼指令;及
一指令處理器,用以執行由該指令解碼器所解碼的指令。
其中該指令解碼器回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該指令處理器以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
在資料處理操作(例如在向量處理系統中控制迴圈化操作)的背景下,示例實施例可使用飽和計數器及優雅簡潔的算術測試來控制迴圈化功能的執行。示例實施例提供資料處理裝置,包括:
指令解碼器電路系統,用以解碼指令;及
指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令;
該指令解碼器電路系統回應於一WHILE指令以控制該指令處理電路系統,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及
該指令解碼器電路系統回應於一CHANGE指令以控制該指令處理電路系統,來依據一相關聯的飽和值取決於該等述語旗標的一數量以一量改變該控制變數的該值,以便在不超過該飽和值的情況下改變該控制變數。
藉由抑制該計數器跑到飽和值之外,可避免無效的結果(例如會由繞圈(wrap round)或溢出計數變數中之位元數量的計數器造成的結果,舉例而言)。
在示例實施例中,算術條件是選自以下列物組成之清單的條件:       i.   控制變數小於上限值;      ii.   控制變數大於下限值;     iii.   控制變數小於或等於上限值;及     iv.   控制變數大於或等於下限值。
在示例實施例中,述語旗標可用作控制機能的部分。在示例實施例中,述語旗標具有一現用狀態,該現用狀態指示的是,向量處理指令應施用於相對應於現用狀態下之述語旗標之資料向量的該等位置。
在示例實施例中,指令解碼器電路系統回應於WHILE指令以控制指令處理電路系統,來選擇述語旗標中的一或更多者以供設定至現用狀態,以便控制變數值(考慮(例如,視情況可以是加或減)經選擇以供設定至現用狀態之述語旗標的數量)並不突破算術條件。如此,WHILE指令可方便地使用述語旗標的機制以供進行執行控制(例如迴圈控制)。
在示例實施例中,該指令解碼器電路系統回應於該WHILE指令以控制該指令處理電路系統,來依據該等述語旗標的一預定順序選擇該等述語旗標中的一或更多者以供設定至該現用狀態。例如,該順序可為相對應於要處理之下層資料項目之該順序的一順序。
在示例實施例中,指令解碼器電路系統回應於WHILE指令以在一算術條件施用於控制變數的同時控制指令處理電路系統繼續迭代執行處理迴圈。
示例實施例亦提供資料處理裝置,包括:
用於解碼指令的手段;及
用於執行由用於解碼的手段所解碼之指令的手段;
用於解碼的該手段回應於一WHILE指令以控制用於執行的該手段,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及
用於解碼的該手段回應於一CHANGE指令以控制用於執行的該手段,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行可用以在不超過該飽和值的情況下改變該控制變數的該值。
示例實施例亦提供資料處理方法,包括以下步驟:
解碼指令;及
執行由該解碼步驟所解碼的指令;
該解碼步驟回應於一WHILE指令以控制該執行步驟,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及
該解碼步驟回應於一CHANGE指令以控制該執行步驟,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行在不超過該飽和值的情況下改變該控制變數的該值。
示例實施例亦提供一虛擬機器,該虛擬機器包括一資料處理器,該資料處理器用以執行一電腦程式,該電腦程式包括機器可讀取指令,其中該電腦程式的執行使得該資料處理器充當一資料處理裝置,該資料處理裝置包括:
一指令解碼器,用以解碼指令;及
一指令處理器,用以執行由該指令解碼器所解碼的指令;
該指令解碼器回應於一WHILE指令以控制該指令處理器,來將一向量處理操作施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量包括複數個資料項目,該施用步驟依據與該複數個資料項目相關聯之各別述語旗標的該狀態來進行;及
該指令解碼器回應於一CHANGE指令以控制該指令處理器,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行在執行時在不超過該飽和值的情況下改變該控制變數的該值。
現參照繪圖,圖1示意性地繪示資料處理系統10,該資料處理系統10包括耦合至儲存資料值32及程式指令34之記憶體30的處理器20。處理器20包括指令提取單元40,該指令提取單元40用於從記憶體30提取程式指令34且將經提取的程式指令供應至解碼器電路系統50。解碼器電路系統50解碼經提取的程式指令且產生控制訊號,以控制向量處理電路系統60如由經解碼向量指令所指定地在儲存在向量暫存器電路系統70內的向量暫存器上執行向量處理操作。
處理器20亦包括與純量暫存器90相關聯的純量處理電路系統80。
純量處理及向量處理之間的一般區隔如下。向量處理涉及將單一向量處理指令施用於在資料向量中的各別位置處具有複數個資料項目之該資料向量的資料項目。純量處理有效地操作於單一資料項目上而非資料向量上。
在處理操作被實現於許多不同的要被處理的資料的實例的實例中,向量處理可為有用的。在向量處理佈置中,單一指令可同時施用於(資料向量的)多個資料項目。這相較於純量處理可改良資料處理的效率及吞吐量。
以下的討論關於示例程式指令34。本揭示案的實施例包括一種裝置(例如圖1中所示之類型的裝置),該裝置可操作或配置為解碼及執行這樣的程式指令。圖1因此提供一處理電路系統的示例,該處理電路系統用以選擇性地將一向量處理操作施用於在資料向量內之位置處的資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標(以下討論)之一集合的該等狀態來進行,該等資料向量具有一資料向量處理順序,各資料向量包括具有一資料項目順序的複數個資料項目,該處理電路系統包括用以解碼程式指令的指令解碼器電路系統;及指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令;其中該指令解碼器電路系統回應於指令以控制該指令處理電路系統來實現以下所要討論的機能。
圖2示意性地繪示將資料處置為多個資料向量。在此佈置中,欲以處理順序110處理資料項目集合100。資料項目100事實上被處置為連續的資料向量120,以便在向量處理操作中,單一的向量處理指令同時施用於資料向量中的所有資料項目(例如4個資料項目、8個資料項目或任何特定系統的向量長度)。
話雖如此,各資料向量120保持資料項目處理順序130,且從向量到向量存在一向量處理順序140,以便若在處理期間需要對於原始處理順序110的任何參照,則這可藉由以下步驟來達成:以向量處理順序140考慮資料向量及以資料項目處理順序130考慮各資料向量內的資料項目。此考量相關於(至少)迴圈處理的終止,如以下所討論的。
圖3為一示意流程圖,繪示一向量處理佈置中的迴圈化操作。於步驟200處,初始參數被建立。於此,一個簡單的示例是,迴圈控制變數例如藉由純量處理電路系統80的操作而設定至初始值(例如0)。
於步驟210處,針對當前的資料向量實現一或更多個處理操作。可例如如下地針對儲存於記憶體中之資料32的鄰接區塊定義當前的資料向量:
VectorA = Data [SA+i…SA+i+VL -1]
其中變數i是迴圈控制變數,變數SA是資料之鄰接區塊的開始位址,而變數VL 是可施用於使用中之特定處理系統的向量長度。換言之,在此示例中,位址(SA + i)及位址(SA+i+VL -1)間之資料項目的鄰接群組包括性地形成向量VectorA的VL 資料項目。
這提供了示例資料向量VectorA至少部分地取決於迴圈控制(或計數)變數的示例,其中迴圈控制(或計數)變數定義資料之區塊或陣列內(如以下以聚集佈置所討論的)或者指標之區塊或陣列內之資料向量的位置(例如開始位置)。
在其他示例中,可使用所謂的聚集資料向量,其中提供指向記憶體中之二或更多個非鄰接位置的指標集合以填入資料向量。類似地,在將資料向量寫回主記憶體的時候,可使用所謂的散佈程序,以便將資料項目寫回非鄰接的記憶體位置。這樣的佈置原本並不影響於此所述的程序操作的方式,且因此為了本說明的目的,將假設連續的資料集合(無論是否鄰接地儲存)。然而,注意的是,使用停用的述語旗標(以下討論)來避免不必要地從或向主記憶體進行聚集或散佈可減少向量處理操作的處理負擔。
各種不同類型的向量處理操作(或多個)可於步驟210處實現。例如,可針對VectorA的資料項目實現向量處理操作,以便產生被儲存為第二資料向量(VectorB)之資料項目的結果。
於步驟220處,計數或迴圈控制變數被增量,以便向前移動迴圈操作。這此,用語「增量」並不僅指增加1,而可指增加另一值。確實,在本示例中,迴圈控制變數係以如由處理電路系統所決定的向量長度VL (如由述語旗標數量表示的)增量,舉例而言。
於步驟230處,系統偵測是否繼續迴圈操作,或換言之,偵測迴圈控制變數是否已到達針對該迴圈所定義的結束點。若應繼續迴圈操作,則控制回到步驟210。亦在步驟220處設定其他參數,且將於下討論程序之此部分的示例。否則,程序結束。
可以改變程式流(例如回到步驟210)之條件跳轉、分支或其他指令的形式採取是否繼續迴圈操作上的決策,其中可例如基於指令(例如以下要討論的WHILE指令)的執行藉由一或更多個處理器條件旗標(例如N、Z、C及V旗標)指示條件。據此,WHILE指令具有設定一或更多個條件旗標以控制單獨的(條件分支或跳轉)指令實際上是否改變程式流以繼續迴圈的效果。(但在其他示例中,設想的是,WHILE指令亦可執行跳轉或分支)。
在欲由不同向量處理電路系統的實例(在無重新編譯程序的情況下)執行程式指令且其中該等不同實例可能具有不同可用向量長度VL 的情況下,提供用於控制迴圈化操作的佈置可為有用的,該等操作依據向量處理電路系統的任何可用長度VL 而操作,其中藉由該向量處理電路系統執行該等指令。(一替代方案(其會要將概念上的VL 固定於可能在不同的向量處理電路系統實例當中遭遇的最小水準)因為不使用在某些實例中可用的較大向量長度而可能是沒有效率的。)在於此討論的示例佈置中,與其使用純量操作來控制迴圈操作,係使用述語旗標(以下討論)。
圖4示意性地繪示使用述語旗標來控制向量處理操作。
可存在以下實例:單一向量處理操作應不同地施用於資料向量內的不同資料項目。向量處理電路系統60藉由使用所謂的述語旗標來提供此實例。述語旗標包括針對資料向量內的各資料項目位置所提供的旗標資訊,以指示處理操作是否應針對該資料項目位置實現。在示例中,向量處理電路系統60可存取多個述語旗標集合,使得任何特定的向量處理操作可將一或更多個述語旗標集合參照為該向量處理操作的參數。
參照圖4,示例佈置使用包括四個資料項目(VL =4)的資料向量,但應理解的是,這些佈置可施用於不同的向量長度。示例輸入資料向量250(VectorA)要作為向量處理操作260的受體,使得在無任何由述語旗標進行之控制的情況下,向量處理操作260會施用於各資料項目位置。然而,亦提供述語旗標集合270(每個資料項目位置或「航道」一個集合)以控制向量處理操作。
依據向量處理操作260來處理輸入向量(向量A)的資料項目252,以產生輸出資料向量280(向量B)的資料項目282。若相對應於輸出資料向量280中之資料項目位置的述語旗標272被設定至「現用」(例如為1的值)。若用於輸出向量位置的相對應述語旗標被設定至「停用」(例如為0的值),則針對該輸出向量位置的向量處理操作260不被實現。
如以上所討論的,在本示例中,述語旗標控制用於相關於輸出資料向量280之特定輸出位置或「航道」的向量處理操作是否實現。然而,在其他示例中,述語旗標可用以控制輸入向量(或一或更多個輸入向量)250中的資料項目位置是否被使用。
這因此提供一示例實施例,其中述語旗標具有一現用狀態,該現用狀態指示的是,向量處理指令應施用於相對應於現用狀態下之述語旗標之資料向量的該等位置。停用狀態指示的是,向量處理操作不應被如此施用。
若因為停用的述語旗標,而不針對特定輸出向量位置282實現向量處理操作,則在某些示例中,可將固定值(例如0)插進該輸出位置。在其他示例中,該輸出位置的先前內容(無論它們是什麼)可被保留不變。
以此方式使用述語旗標因此提供一示例,其中選擇性地將一向量處理指令施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態。
本示例允許在控制迴圈化操作(例如圖3中示意性地圖示的該迴圈化操作)時使用述語旗標。圖5及6將用以解釋此類型操作的態樣。
迴圈化操作的特徵是,在迴圈控制變數的控制之下以資料項目處理順序處置許多資料項目,直到迴圈控制變數到達特定上限為止,在該時點處,迴圈終止於圖3的步驟230處。由以下示意性虛擬碼來提供純量處理迴圈的示例:
For i=0 to 97
Process Data [i]
Next i
於此,迴圈化操作在迴圈控制變數i被設定至0的情況下開始,且繼續直到迴圈控制變數i到達97的值為止。換言之,總共處置了98個資料項目。
可反而如參照圖3所討論地使用向量處理來執行迴圈操作,以便一次一個向量地處置資料項目。這可藉由允許由單一的向量處理指令處置多個資料項目的群組來提供效率。
例如,在向量長度VL 為4之系統的情況下(所以各資料向量包含四個資料項目),可僅由24(=96/4)個向量處理操作來處置迴圈操作中的第一個的96個資料項目。然而,若要處理四個資料項目的整個的25th 向量,這會將處理資料項目的數量變成100,這超過了所需的迴圈操作。
反而,最終的向量處理操作應僅針對97th 及98th 的資料項目(以處理順序110)操作,且不以處理順序110針對99th 及100th 的資料項目操作。
示例實施例提WHILE指令來控制向量處理電路系統60,以例如在迴圈化操作中將向量處理指令施用於至少部分地由控制變數(例如迴圈控制變數)所定義之資料向量的一或更多個資料項目。WHILE指令回應於控制變數,以便選擇述語旗標中的一或更多者以供設定至現用狀態,以便經處理之資料項目的數量並不超過迴圈上限。
使用此佈置的示例圖示於圖5中,圖5示意性地繪示要在以上所討論之示例迴圈操作中處置的最後三個資料向量,其中(純粹是為了此示例的目的)要處理98個資料項目,且VL = 4。
如以上所討論的,在98個資料項目的示例迴圈中,係一次一個資料向量地處置資料項目,且假設的是,此示例中的資料向量長度VL 是4個資料項目,迴圈計數器將從0開始且以VL 為單元推進(0、4、8、12...)。關於最後三個迴路計數器實例如此推進的情況係示意性地圖示於圖5中,亦即迴路計數器被設定至88、92及接著設定至96的情況。繪示了可施用於這些情況中之各者的述語旗標300、310、320,其中1的邏輯值指示「現用」而0的邏輯值指示「停用」。
依據述語旗標的預定順序由WHILE指令設定述語旗標,該順序相對應於各資料向量的資料項目處理順序130。
在i = 88時,WHILE指令偵測的是,所有四個述語旗標可被設定至1(現用),而作為將該等述語旗標設定至1的結果而處理之資料項目的總數量仍將小於97的迴圈上限。類似地,在i推進至92時,WHILE指令偵測的是,所有四個述語旗標310可被設定至1,且仍然地,在結束處理該資料向量時,經處理之資料項目的數量(96)仍將小於98的所需總數。
在圖5中所示的第三實例處,迴圈控制變數i被設定至96。WHILE指令偵測的是,為了符合97的迴圈上限,在迴圈的此最終的向量處理操作中僅有兩個資料項目要被處理。WHILE指令因此將第一個的兩個述語旗標(以處理順序130)設定至1,且將其他兩個述語旗標(以處理順序130)設定至0,以便步驟210處的處理操作可依據該等述語旗標來實現,且仍不超過由迴圈控制變數i的上限所定義的操作總數。
作為其操作的部分,WHILE指令亦提供步驟230之機能的至少一部分,且設定一或更多個條件旗標,以控制只要仍存在要實現的處理操作,就將控制傳回圖3的步驟210,這也就是說,於步驟220處傳遞至WHILE指令之i的值小於迴圈控制變數上限(在此示例中是97)。
這因此提供一示例,其中WHILE指令在執行時,選擇述語旗標中的一或更多者以供設定至現用狀態,以便控制變數值(考慮經選擇以供設定至現用狀態之述語旗標的數量)並不突破算術條件。於此,「考慮」在增量計數器的情況下可意指加到當前的計數值,而在減量計數器的情況下,可意指從當前的計數值減去。可依據述語旗標的預定順序(例如順序130)來選擇供設定至現用狀態之述語旗標中的一或更多者。
圖6為一示意流程圖,表示依據計數變數藉由WHILE指令來設定述語旗標。
在圖6中,於步驟330處,WHILE指令偵當前的計數(迴圈控制變數)值及極限值(在本示例中分別為i及97)。於步驟340處,WHILE指令填入述語旗標,以便迴圈控制變數的值(在此示例中)加上經選擇以供設定至現用狀態的述語旗標數量並不突破迴圈控制變數的上限。
當然,將理解的是,在其他示例中,迴圈控制變數可向下計數而非向上計數,在此情況下,極限值會是下限值而非上限值。類似地,由WHILE指令於步驟340處施用的算術測試會是關於控制變數是否大於下限值的測試。亦將理解的是,可施用「小於或等於」或「大於或等於」測試,以便例如迴圈化操作終止一個缺少極限值的實例。一般而言,由WHILE指令所施用的算術條件可為選自以下列物組成之清單的條件: ·  控制變數小於上限值; ·  控制變數大於下限值; ·  控制變數小於或等於上限值;及 ·  控制變數大於或等於下限值。
圖7示意性地繪示所謂的展開迴圈(unrolled loop)。
在無循環展開的情況下,迴圈化操作的各迭代實現單一資料向量的處理值(worthe of processing)。迴圈接著推進至下個迴圈位置,且下個資料向量的處理值被實現等等。
「循環展開」一迴圈涉及在單一迴圈迭代內處理多個連續的資料向量。實現迴圈展開以例如改良效率,其中涉及起始及終止迴圈之各迭代的處理負擔接著在多個資料向量的處理之間共享。
在圖7中,為了迴圈處理的目的將要處理的資料400(具有資料處理順序410)佈置成多個資料向量,各資料向量具有向量長度VL 。在所示的示例中,VL 等於4,但當然,可依據使用中之向量處理電路系統60的參數使用不同值。
操作類似於參照圖3所述的該等操作,除了於各個迴圈迭代處理多個資料向量以外。據此,於步驟420處,以類似於圖3之步驟200的方式設定初始參數。例如,迴圈控制變數或計數器被初始化至0。接著,於步驟430、440、450及460處,多個連續的資料向量經受相同的處理。步驟430涉及處理具有由迴圈控制變數i所定義之資料400內之開始位置的資料向量。步驟440施用相同處理,但是是施用於具有由i+VL 所定義之資料400中之開始位置的資料向量等等。將理解的是,迴圈之各迭代中所處理之資料向量的數量可為大於或等於2的任何數量,而在此示例中使用4個資料向量僅是為了此解釋的目的。於步驟470處,迴圈控制變數i被推進n x VL ,其中n是於展開的迴圈的各迭代處理的資料向量數量。於步驟480處,WHILE指令設定參數(如連結圖5及6所討論的述語旗標),且偵測是否設定一或更多個條件旗標,以便繼續迴圈或不繼續迴圈。若迴圈繼續,控制再次通過步驟430(例如,藉由WHILE指令設定旗標(例如條件旗標),且條件跳轉或分支指令回應於該條件),而若否,則程序遵循結束進程。
圖3及7的流程圖(結合圖5及6的說明來閱讀)提供以下解碼示例(例如藉由解碼器電路系統50):一WHILE指令(如於步驟230、480處所討論的),用以控制一向量處理器,以將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態來進行;及一CHANGE指令,用以取決於該等述語旗標的一數量以一量改變(例如,於步驟220或步驟470處)該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行在不超過該飽和值的情況下改變該控制變數的該值;及執行(例如,藉由向量處理電路系統60及/或純量處理電路系統80)由該指令解碼器所解碼的指令。
步驟230、480提供一示例,其中該WHILE指令在執行時,使得該處理器在一算術條件施用於該控制變數的同時繼續迭代執行一處理迴圈,例如藉由如以上所討論地設定一或更多個條件旗標來進行。
圖8及9示意性地繪示可由計數變數所表示的值。在圖8的情況下,計數變數是有符號變數,以便-VAL之下限及+VAL之上限之間的值是可表示的。在圖9的情況下,計數變數是無符號的,以便0及+VAL之上限之間的值是可表示的。注意的是,在圖8的情況下,上及下限可具有不同的量值,以便下限是–VAL1 而上限是+VAL2 ,其中|VAL1 |及|VAL2 |是不同的(其中|x|表示x的模數或量值)。例如,在8位元有符號的二補數表示(two’s complement representation)中,–VAL1 可為-127而+VAL2 可為+128。類似地,圖9中+VAL的上限不一定相同於圖8中+VAL的上限。但在任一實例中,所繪示的原理是,計數變數的屬性可由其可表示之值的下及上限所指示。
圖10及11為示意流程圖,分別繪示增量及減量指令的操作。
參照圖10,於步驟500處,增量指令取決於一模式(pattern)(以下進一步描述)乘以因數MUL來以一量增加變數(例如迴圈控制變數),其中在展開的迴圈的步驟(例如步驟470)中使用如此指令的示例中,值MUL可被設定至迴圈的一個迭代中所處理之連續資料向量的數量。
於步驟510處,增量指令飽和於可由變數所表示的最高值處。飽和步驟關於以下步驟。若步驟500的結果仍小於可由該變數表示的最高值(例如+VAL),則步驟500的輸出被回傳為增量指令的結果。另一方面來說,若步驟500的輸出會超過可由該變數表示的最高值,使得(例如)該變數會繞圈(超過該變數可用的位元數量)或從其他可表示的極值重新開始,則步驟510飽和或蓋住(cap)該增加,以便不到達但不超過該最高可表示值(例如+VAL)而作為藉由執行該指令所回傳的輸出。
飽和(無論是在使用MUL因數的情況下,如步驟470中地,或不使用的情況下,如步驟220中地)可關聯於WHILE或類似操作或指令用於步驟230或480的情況中,使得若迴圈控制變數或計數器符合算術條件則繼續執行迴圈。在具有一上限的向上計數計數器的示例中,算術條件例如可為計數值是否小於(或小於或等於)特定極限值。然而,若不使用飽和特徵,則潛在風險是,計數器會跑到可由計數變數表示的最大值之外及「繞圈」或重新開始於可由計數變數表示的最低(或另一)值處。因為計數器以VL 為單位推進,WHILE算術測試可於一個迴圈迭代(正確地)通過,且接著對於下個如此的測試而言,計數器可能已繞圈,所以測試會於下個迭代(不正確地)通過。
作為經運作的示例,若計數變數被維持為簡單的8位元無符號值,則在無飽和特徵的情況下,計數器可能在繼續從0向上計數之前到達255的最大計數。假設MUL x VL 是8(所以計數以8為單位推進),且迴圈的結束是由i=253所定義。於步驟230或480處使用「小於」測試則會沒有用,因為(謂)繞圈值的值(0或接近0)會通過測試,然而測試理應已失敗,因為計數器會於i=248處通過測試,但於下個迭代i會繞圈回到0且因此(不正確地)再次通過「小於」測試。飽和特徵會使得計數器在其最終迭代中於255處飽和,且因此計數器i會(正確地)未通過「小於253」測試。
注意的是,飽和值是計數變數被儲存或維護之方式的屬性。其不同於由迴圈化操作的實例施加於計數變數上的特定限制。
現將討論「模式」參數。這取決於可用的述語旗標數量提供一改變量,該改變量反過來提供依據向量長度自動調整尺度的佈置,藉此促進藉由具有不同可用向量長度之向量處理電路系統的實例,在不一定需要干預性重新編譯的情況下,允許執行相同的程式指令。
「change」指令在用於例如為步驟220或470的情況下時,至少取決於倍增因數MUL(其可為1或可大於1,例如可由3位元參數表示的值,例如1...8)以一量改變(增量或減量)變數。改變量(增量或減量)亦取決於述語旗標的數量作為VL 的表示(如由向量處理電路系統所偵測的,舉例而言)。例如,若各述語旗標相對應於一資料項目,則適當的改變可為MUL x VL 。但在其他示例中,個別的資料項目可能是第一示例中的兩倍大(例如半詞而非位元組),因此可能的是,只有每個交替的述語旗標被有效使用。在這樣的實例中,VL 的有效值可為述語旗標數量的一半大,在該情況下,改變量應為(MUL x number_of_predicate_flags / 2)。
CHANGE指令依據一模式偵測述語旗標的數量,且(在乘以MUL之後)以該數量增量或減量變數。該模式例如可為交替述語旗標或每四個述語旗標的模式或具有「所有述語旗標」之預設的各種其他模式。此佈置提供自我調整增量或減量指令,以便改變量取決於系統可用之述語旗標的數量,其中指令運行於該系統上。反過來,這意味的是,相同的指令可用在具有不同可用向量長度的不同系統上,因為增量或減量指令將調整至當前可用的向量長度。
據此,這提供一示例,其中CHANGE指令在執行時,取決於述語旗標數量及更改值的受選子集合以一量改變變數值。注意的是,如所述,該子集合事實上可為「所有的」。受選子集合取決於指令的參數,且供使用之子集合的偵測是由執行指令之其他態樣之相同處理電路系統、佈置或資源所進行之指令執行的一部分。
圖11為一示意流程圖,繪示減量指令的類似操作,使得於步驟520處,一變數(例如迴圈控制變數)以模式量及因數MUL的乘積(或其他組合)減少,且於步驟530處,結果於可由該變數表示的最低值處飽和,或換言之到達可由該變數表示的最低量(但被約束而不能變得比該最低量更低)。
注意的是,計數器I可為純量變數,且因此可由純量處理電路系統80處置(更新及測試),或可被處置為資料向量或資料向量的部分,且因此可由向量處理電路系統60處置。
圖10及11因此提供執行具有更改值(例如MUL)作為指令參數之「change」指令的示例,CHANGE指令取決於述語旗標的數量及取決於該更改值以一量改變變數值。例如,連續改變或步階尺寸可正比於更改值。
圖1的裝置在執行相對應於圖10或11之流程圖中所示之該等操作的操作時,提供資料處理裝置(例如裝置10)的示例,該資料處理裝置包括:向量處理電路系統(例如與暫存器70協同操作的電路系統60),用以將一向量處理指令施用於一資料向量的一或更多個資料項目,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態來進行;一指令解碼器(例如解碼器電路系統50),用以解碼一CHANGE指令(例如由圖10或11的流程圖所表示),該CHANGE指令具有一更改值(例如MUL)作為一指令參數,該CHANGE指令在執行時,取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數(例如迴圈控制變數)的該值;一指令處理器(例如純量處理電路系統80或向量處理電路系統60),用以執行由該指令解碼器所解碼的指令。例如,該CHANGE指令在執行時,可取決於取決於該等述語旗標的一值及該更改值的一乘積以一量改變一變數的該值。
如參照步驟510、530所討論的,CHANGE指令可具有相關聯的飽和值,以便CHANGE指令在執行時,在不超過該飽和值的情況下改變變數值。如參照圖8及9所討論的,在用以減少變數值之減量指令的情況下,飽和值可為可由該變數所表示的最小值。在用以增加變數值之增量指令的情況下,飽和值可為可由該變數所表示的最大值。
在這樣的指令用於例如為圖7之迴圈化操作之步驟470的背景中時(其中變數為計數變數,向量處理電路系統在處理迴圈的一或更多個迭代期間將向量處理指令施用於至少部分地由計數變數所定義的資料向量),指令解碼器可配置為解碼指令(例如相對應於步驟480)以取決於計數變數偵測是否繼續迭代執行處理迴圈。這樣的指令例如可為用以設定條件旗標的WHILE指令,以便控制處理電路系統來在算術條件施用於該計數變數的同時繼續迭代執行處理迴圈。算術條件的示例包括:計數變數小於上限值;計數變數大於下限值;計數變數小於或等於上限值;及計數變數大於或等於下限值。
圖12示意性地繪示虛擬機器,係藉由該虛擬機器提供以上所討論的某些或所有機能。虛擬機器包括作為資料處理電路系統800之示例的中央處理單元(CPU)、非依電性記憶體810、控制介面820及輸入/輸出(IO)介面830,皆由匯流排佈置840互連。隨機存取記憶體(RAM)850儲存提供軟體860以控制CPU 800之操作的程式指令。在軟體860的控制之下,CPU 800提供或模仿以上所討論之處理指令中之一或更多者的機能。RAM 850亦儲存程式指令870及資料880,其中程式指令870為可用施用於圖1之處理器20的指令,且其由充當虛擬機器的CPU 800解譯、模仿或在其他情況下執行。資料880是相對應於圖1之資料32的資料,係藉由程式指令870的(虛擬)執行來針對該資料採取行動。圖12的佈置因此提供虛擬機器的示例,該虛擬機器包括資料處理器(例如CPU 800),該資料處理器用以執行包括機器可讀取指令的電腦程式(例如軟體860),其中電腦程式的執行使得資料處理器充當上述類型的資料處理裝置。示例實施例亦由電腦軟體所表示,該電腦軟體在由電腦執行時,使該電腦實現上述技術中的一或更多者,且是藉由儲存如此電腦軟體的非暫時性機器可讀取存儲媒體來進行。
在本案中,用詞「配置為...」用以意指的是,裝置的構件具有能夠實現所定義之操作的配置。在此背景下,「配置」意指硬體或軟體互連的佈置或方法。例如,裝置可具有提供所定義操作的專用硬體,或處理器或其他處理裝置可編程為執行該功能。「配置為」並不暗示的是,裝置構件需要以任何方式改變以提供所定義的操作。
雖然已於本文中參照隨附繪圖詳細描述本技術的說明性實施例,要瞭解的是,本技術不限於該等準確的實施例,且可由本領域中具技藝者將各種改變、添加及更改作用於該等實施例中而不脫離如由隨附請求項所定義之該等技術的範圍及精神。例如,可同獨立項的特徵作出附屬項之特徵的各種組合,而不脫離本技術的範圍。
10‧‧‧資料處理系統
20‧‧‧處理器
30‧‧‧記憶體
32‧‧‧資料值
34‧‧‧程式指令
40‧‧‧指令提取單元
50‧‧‧解碼器電路系統
60‧‧‧向量處理電路系統
70‧‧‧向量暫存器電路系統
80‧‧‧純量處理電路系統
90‧‧‧純量暫存器
100‧‧‧資料項目集合
110‧‧‧處理順序
120‧‧‧資料向量
130‧‧‧資料項目處理順序
140‧‧‧向量處理順序
200‧‧‧步驟
210‧‧‧步驟
220‧‧‧步驟
230‧‧‧步驟
250‧‧‧輸入資料向量
252‧‧‧資料項目
260‧‧‧向量處理操作
270‧‧‧述語旗標集合
272‧‧‧述語旗標
280‧‧‧輸出資料向量
282‧‧‧資料項目
300‧‧‧述語旗標
310‧‧‧述語旗標
320‧‧‧述語旗標
330‧‧‧步驟
340‧‧‧步驟
400‧‧‧資料
410‧‧‧資料處理順序
420‧‧‧步驟
430‧‧‧步驟
440‧‧‧步驟
450‧‧‧步驟
460‧‧‧步驟
470‧‧‧步驟
480‧‧‧步驟
500‧‧‧步驟
510‧‧‧步驟
520‧‧‧步驟
530‧‧‧步驟
800‧‧‧資料處理電路系統/CPU
810‧‧‧非依電性記憶體
820‧‧‧控制介面
830‧‧‧輸入/輸出(IO)介面
840‧‧‧匯流排佈置
850‧‧‧隨機存取記憶體(RAM)
860‧‧‧軟體
870‧‧‧程式指令
880‧‧‧資料
僅藉由示例的方式,將進一步參照如隨附繪圖中所繪示之本技術的實施例描述本技術,在該等繪圖中:
圖1示意性地繪示資料處理裝置;
圖2示意性地繪示將資料處置為多個資料向量;
圖3為一示意流程圖,繪示迴圈化操作;
圖4示意性地繪示使用述語旗標(predicate flag);
圖5示意性地繪示依據計數變數控制述語旗標;
圖6為一示意流程圖,繪示依據計數變數藉由WHILE指令來設定述語旗標;
圖7示意性地繪示所謂的展開迴圈(unrolled loop);
圖8及9示意性地繪示可由計數變數所表示的值;
圖10及11為示意流程圖,分別繪示增量及減量指令的操作;
圖12示意性地繪示虛擬機。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
500‧‧‧步驟
510‧‧‧步驟

Claims (30)

  1. 一種資料處理裝置,包括: 指令解碼器電路系統,用以解碼指令;及 指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令; 該指令解碼器電路系統回應於一WHILE指令以控制該指令處理電路系統,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及 該指令解碼器電路系統回應於一CHANGE指令以控制該指令處理電路系統,來依據一相關聯的飽和值取決於該等述語旗標的一數量以一量改變該控制變數的該值,以便在不超過該飽和值的情況下改變該控制變數。
  2. 如請求項1所述之裝置,其中該算術條件是選自以下列物組成之該清單的一條件:     i. 該控制變數小於一上限值;    ii. 該控制變數大於一下限值;  iii. 該控制變數小於或等於一上限值;及   iv. 該控制變數大於或等於一下限值。
  3. 如請求項1或請求項2所述之裝置,其中該述語旗標具有一現用狀態,該現用狀態指示的是,該向量處理指令應施用於相對應於該現用狀態下之述語旗標之一資料向量的該等位置。
  4. 如請求項3所述之裝置,其中該指令解碼器電路系統回應於該WHILE指令以控制該指令處理電路系統,來選擇該等述語旗標中的一或更多者以供設定至該現用狀態,以便該控制變數的一值並不突破該算術條件,該控制變數的該值考慮了經選擇以供設定至該現用狀態之該述語旗標數量。
  5. 如請求項4所述之裝置,其中該指令解碼器電路系統回應於該WHILE指令以控制該指令處理電路系統,來依據該等述語旗標的一預定順序選擇該等述語旗標中的一或更多者以供設定至該現用狀態。
  6. 如請求項1至5中之任一者所述之裝置,其中該指令解碼器電路系統回應於該WHILE指令以在一算術條件施用於該控制變數的同時控制該指令處理電路系統繼續迭代執行一處理迴圈。
  7. 如請求項1至6中之任一者所述之裝置,其中該指令解碼器電路系統回應於該CHANGE指令,以控制該指令處理電路系統,來取決於該等述語旗標的一數量及取決於一更改值以一量改變該控制變數的該值,該更改值形成該CHANGE指令的一參數。
  8. 如請求項1至7中之任一者所述之裝置,其中: 該CHANGE指令為一減量指令,用以減少該控制變數的該值;及 該飽和值為可由該控制變數表示的一最小值。
  9. 如請求項1至7中之任一者所述之裝置,其中: 該CHANGE指令為一增量指令,用以增加該控制變數的該值;及 該飽和值為可由該控制變數表示的一最大值。
  10. 一種資料處理裝置,包括: 用於解碼指令的手段;及 用於執行由用於解碼的手段所解碼之指令的手段; 用於解碼的該手段回應於一WHILE指令以控制用於執行的該手段,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及 用於解碼的該手段回應於一CHANGE指令以控制用於執行的該手段,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行可用以在不超過該飽和值的情況下改變該控制變數的該值。
  11. 一種資料處理方法,包括以下步驟: 解碼指令;及 執行由該解碼步驟所解碼的指令; 該解碼步驟回應於一WHILE指令以控制該執行步驟,來將一向量處理指令施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量於該資料向量中的各別位置處包括複數個資料項目,該施用步驟依據與該等位置相關聯之各別述語旗標的該狀態來進行;及 該解碼步驟回應於一CHANGE指令以控制該執行步驟,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行在不超過該飽和值的情況下改變該控制變數的該值。
  12. 一種電腦軟體,在由一電腦執行時使得該電腦實現如請求項11所述之方法。
  13. 一種非暫時性機器可讀取存儲媒體,儲存如請求項12所述之電腦軟體。
  14. 一種虛擬機器,該虛擬機器包括一資料處理器,該資料處理器用以執行一電腦程式,該電腦程式包括機器可讀取指令,其中該電腦程式的執行使得該資料處理器充當一資料處理裝置,該資料處理裝置包括: 一指令解碼器,用以解碼指令;及 一指令處理器,用以執行由該指令解碼器所解碼的指令; 該指令解碼器回應於一WHILE指令以控制該指令處理器,來將一向量處理操作施用於至少部分地由一控制變數所定義之一資料向量的一或更多個資料項目,同時一算術條件施用於該控制變數,該資料向量包括複數個資料項目,該施用步驟依據與該複數個資料項目相關聯之各別述語旗標的該狀態來進行;及 該指令解碼器回應於一CHANGE指令以控制該指令處理器,來取決於當前被設定至一特定狀態之該等述語旗標的一數量以一量改變該控制變數的該值,該CHANGE指令具有一相關聯的飽和值,以便該CHANGE指令的執行在執行時在不超過該飽和值的情況下改變該控制變數的該值。
  15. 一種資料處理裝置,包括: 處理電路系統,用以選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該處理電路系統包括: 指令解碼器電路系統,用以解碼程式指令;及 指令處理電路系統,用以執行由該指令解碼器電路系統所解碼的指令; 其中該指令解碼器電路系統回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該指令處理電路系統以取決於該等述語旗標的一數量及該更改值以一量改變一變數的該值。
  16. 如請求項15所述之裝置,其中該指令解碼器電路系統回應於該CHANGE指令來控制該指令處理電路系統,以取決於取決於該等述語旗標的該數量的一值及該更改值的一乘積以一量改變該變數的該值。
  17. 如請求項15或16所述之裝置,其中該CHANGE指令具有一相關聯的飽和值,以便該指令解碼器電路系統回應於該CHANGE指令,以控制該指令處理電路系統,來在不超過該飽和值的情況下改變該變數的該值。
  18. 如請求項17所述之裝置,其中: 該CHANGE指令為一減量指令,用以減少該變數的該值;及 該飽和值為可由該變數表示的一最小值。
  19. 如請求項17所述之裝置,其中: 該CHANGE指令為一增量指令,用以增加該變數的該值;及 該飽和值為可由該變數表示的一最大值。
  20. 如請求項15至19中之任一者所述之裝置,其中該變數為一計數變數,該處理電路系統在一處理迴圈的一或更多個迭代期間將該向量處理指令施用於至少部分地由該計數變數所定義的一資料向量; 該指令解碼器電路系統回應這一進一步指令,以控制該指令處理電路系統,來取決於該計數變數偵測是否繼續迭代執行該處理迴圈。
  21. 如請求項20所述之裝置,其中用以偵測是否繼續執行該處理迴圈的該進一步指令包括一WHILE指令,該指令解碼器電路系統回應於該WHILE指令以在一算術條件施用於該計數變數的同時控制該指令處理電路系統繼續迭代執行該處理迴圈。
  22. 如請求項21所述之裝置,其中該算術條件是選自以下列物組成之該清單的一條件:     i. 該計數變數小於一上限值;    ii. 該計數變數大於一下限值;  iii. 該計數變數小於或等於一上限值;及   iv. 該計數變數大於或等於一下限值。
  23. 如請求項21或請求項22所述之裝置,其中該指令解碼器電路系統回應於該CHANGE指令來控制該指令處理電路系統,以取決於該等述語旗標之該數量及該更改值的一受選子集合以一量改變該變數的該值。
  24. 如請求項23所述之裝置,其中該指令解碼器電路系統回應於該WHILE指令以控制該指令處理電路系統,來選擇該等述語旗標中的一或更多者以供設定至該現用狀態,以便該迴圈變數的一值並不突破該算術條件,該迴圈變數的該值考慮了經選擇以供設定至該現用狀態之該述語旗標數量。
  25. 如請求項24所述之裝置,其中該指令解碼器電路系統回應於該WHILE指令以控制該指令處理電路系統,來選擇該等述語旗標中的一或更多者以供依據該等述語旗標的一預定順序設定至該現用狀態,以便該迴圈變數的一值並不突破該算術條件,該迴圈變數的該值考慮了經選擇以供設定至該現用狀態之該述語旗標數量。
  26. 一種資料處理裝置,包括: 用於選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目的手段,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該施用手段包括: 用於解碼指令的手段;及 用於執行由用於解碼的手段所解碼之指令的手段; 其中用於解碼指令的該手段回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制用於執行指令的該手段以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
  27. 一種資料處理方法,包括以下步驟: 選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態; 解碼指令;及 執行指令; 其中該解碼步驟回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該執行步驟以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
  28. 一種電腦軟體,在由一電腦執行時使得該電腦實現如請求項27所述之方法。
  29. 一種非暫時性機器可讀取存儲媒體,儲存如請求項28所述之電腦軟體。
  30. 一種虛擬機器,該虛擬機器包括一資料處理器,該資料處理器用以執行一電腦程式,該電腦程式包括機器可讀取指令,其中該電腦程式的執行使得該資料處理器充當一資料處理裝置,該資料處理裝置包括: 一處理器,用以選擇性地將向量處理操作施用於一資料向量的一或更多個資料項目,該資料向量在該資料向量中的各別位置處包括複數個資料項目,該施用步驟是依據與該等位置相關聯之各別述語旗標的該狀態;該處理器包括: 一指令解碼器,用以解碼指令;及 一指令處理器,用以執行由該指令解碼器所解碼的指令。 其中該指令解碼器回應於一CHANGE指令,該CHANGE指令具有一更改值作為一指令參數,該CHANGE指令用以控制該指令處理器以取決於該等述語旗標的一數量及取決於該更改值以一量改變一變數的該值。
TW105123856A 2015-07-31 2016-07-28 資料處理 TWI723036B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP15386025.9A EP3125108A1 (en) 2015-07-31 2015-07-31 Vector processing using loops of dynamic vector length
EP15386025.9 2015-07-31

Publications (2)

Publication Number Publication Date
TW201716991A true TW201716991A (zh) 2017-05-16
TWI723036B TWI723036B (zh) 2021-04-01

Family

ID=54140381

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105123856A TWI723036B (zh) 2015-07-31 2016-07-28 資料處理

Country Status (8)

Country Link
US (1) US10430192B2 (zh)
EP (2) EP3125108A1 (zh)
JP (1) JP6883564B2 (zh)
KR (2) KR20180034501A (zh)
CN (1) CN107851021B (zh)
IL (1) IL256859B (zh)
TW (1) TWI723036B (zh)
WO (1) WO2017021269A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
GB2571527B (en) * 2018-02-28 2020-09-16 Advanced Risc Mach Ltd Data processing
US10528346B2 (en) * 2018-03-29 2020-01-07 Intel Corporation Instructions for fused multiply-add operations with variable precision input operands
WO2022154847A1 (en) 2021-01-12 2022-07-21 Emed Labs, Llc Health testing and diagnostics platform
US11929168B2 (en) 2021-05-24 2024-03-12 Emed Labs, Llc Systems, devices, and methods for diagnostic aid kit apparatus
US11615888B2 (en) 2021-03-23 2023-03-28 Emed Labs, Llc Remote diagnostic testing and treatment
WO2022271668A1 (en) 2021-06-22 2022-12-29 Emed Labs, Llc Systems, methods, and devices for non-human readable diagnostic tests
US12014829B2 (en) 2021-09-01 2024-06-18 Emed Labs, Llc Image processing and presentation techniques for enhanced proctoring sessions
GB2616601B (en) * 2022-03-11 2024-05-08 Advanced Risc Mach Ltd Sub-vector-supporting instruction for scalable vector instruction set architecture

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4745547A (en) * 1985-06-17 1988-05-17 International Business Machines Corp. Vector processing
IT1270439B (it) * 1993-06-10 1997-05-05 Sip Procedimento e dispositivo per la quantizzazione dei parametri spettrali in codificatori numerici della voce
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
WO2002084451A2 (en) * 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US7991237B2 (en) * 2007-06-28 2011-08-02 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method and image decoding method
JP5286581B2 (ja) * 2010-05-12 2013-09-11 日本電信電話株式会社 動画像符号化制御方法,動画像符号化装置および動画像符号化プログラム
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
BR112013030562B1 (pt) * 2011-06-30 2022-05-03 Sun Patent Trust Método e aparelho de decodificação, método e aparelho de codificação e aparelho de codificação e decodificação
SE536462C2 (sv) * 2011-10-18 2013-11-26 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
US20130151822A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Efficient Enqueuing of Values in SIMD Engines with Permute Unit
WO2013089707A1 (en) * 2011-12-14 2013-06-20 Intel Corporation System, apparatus and method for loop remainder mask instruction
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits
US9557993B2 (en) * 2012-10-23 2017-01-31 Analog Devices Global Processor architecture and method for simplifying programming single instruction, multiple data within a register
US9619229B2 (en) * 2012-12-27 2017-04-11 Intel Corporation Collapsing of multiple nested loops, methods and instructions
JP2014191757A (ja) * 2013-03-28 2014-10-06 Fujitsu Ltd 情報処理方法、装置及びプログラム
GB2540941B (en) * 2015-07-31 2017-11-15 Advanced Risc Mach Ltd Data processing

Also Published As

Publication number Publication date
KR20240058195A (ko) 2024-05-03
JP6883564B2 (ja) 2021-06-09
JP2018525735A (ja) 2018-09-06
US10430192B2 (en) 2019-10-01
US20190012176A1 (en) 2019-01-10
KR20180034501A (ko) 2018-04-04
EP3329365A1 (en) 2018-06-06
CN107851021A (zh) 2018-03-27
EP3125108A1 (en) 2017-02-01
WO2017021269A1 (en) 2017-02-09
IL256859A (en) 2018-03-29
TWI723036B (zh) 2021-04-01
CN107851021B (zh) 2022-04-22
IL256859B (en) 2020-03-31

Similar Documents

Publication Publication Date Title
TW201716991A (zh) 資料處理
US11042378B2 (en) Propagation instruction to generate a set of predicate flags based on previous and current prediction data
US8055883B2 (en) Pipe scheduling for pipelines based on destination register number
CN112182496A (zh) 用于矩阵乘法的数据处理方法及装置
TWI766056B (zh) 用於資料處理的方法、設備、電腦程式及電腦可讀取儲存媒體
TW201911081A (zh) 在資料處理設備中比對連續值
US11354126B2 (en) Data processing
US11550574B2 (en) Generating a vector predicate summary
US10503477B2 (en) Galois field pipelined multiplier with polynomial and beta input passing scheme
KR20170065845A (ko) 프로세서 및 제어 방법
JP2005135243A (ja) 計算処理方法,そのプログラム,データ再分散機構,計算処理装置