TWI740851B - 用於向量負載指示之資料處理設備、方法及電腦程式 - Google Patents

用於向量負載指示之資料處理設備、方法及電腦程式 Download PDF

Info

Publication number
TWI740851B
TWI740851B TW105132164A TW105132164A TWI740851B TW I740851 B TWI740851 B TW I740851B TW 105132164 A TW105132164 A TW 105132164A TW 105132164 A TW105132164 A TW 105132164A TW I740851 B TWI740851 B TW I740851B
Authority
TW
Taiwan
Prior art keywords
vector
register
load
type
address
Prior art date
Application number
TW105132164A
Other languages
English (en)
Other versions
TW201716988A (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 TW201716988A publication Critical patent/TW201716988A/zh
Application granted granted Critical
Publication of TWI740851B publication Critical patent/TWI740851B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception handling

Landscapes

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

Abstract

本案提供第一類型及第二類型之向量負載指示。對於第一類型,當對至少一個向量暫存器的第一有效資料元件執行的負載操作偵測到異常條件時,執行回應動作,但當對除了第一有效資料元件之外的有效資料元件出現異常條件時,禁止回應動作並儲存元件辨識資訊,該資訊辨識導致異常條件的元件。對於第二類型,當任何有效資料元件出現異常條件時,都禁止回應動作並儲存元件辨識資訊。此方法對允許將迴圈推測及迴圈展開一起使用來改良向量化碼之效能十分有用。

Description

用於向量負載指示之資料處理設備、方法及電腦程式
本技術係關於資料處理領域。更特定而言,本技術係關於用於將資料從資料儲存器的儲存位置載入至至少一個向量暫存器之多個資料元件之向量載入指示。
先前技術之缺陷仍然存在。本發明的目的是解決該等缺陷及/或提供優於先前技術之改良。
一些資料處理設備可支援向量處理,在該向量處理中,可對向量的每一資料元件執行給定處理操作以生成結果向量之對應的資料元件。此允許利用單個指示處理數個不同資料值,以減少處理給定數目之資料值所需的程式指示數目。向量處理亦可被視作單指示多資料(single instruction,multiple data;SIMD)處理。向量負載指示可用以將資料從資料儲存器中之對應儲存位置載入至至少一個向量暫存器之各個元件中。
至少一些實例提供一種設備,該設備包括:處理電路系統,用以回應於向量負載指示而執行負載操作,以將資料從資料儲存器傳輸至至少一個向量暫存器中之複數個元件;其中:回應於第一類向量負載指示,當對以預定序列對該至少一個向量暫存器之第一有效資料元件執行的負載操作偵測到異常條件時,處理電路系統經配置以執行回應動作,且當對以該預定序列對該第一有效資料元件以外的有效資料元件執行的負載操作偵測到異常條件時,處理電路系統經配置以禁止該回應動作,並儲存辨識被偵測到異常條件的該有效資料元件之元件辨識資訊;及 回應於第二類向量負載指示,當對該至少一個向量暫存器之任何有效資料元件的負載操作偵測到異常條件時,處理電路系統經配置以禁止該回應動作,並儲存辨識被偵測到異常條件的該有效資料元件之該元件辨識資訊; 其中第一類向量負載指示與第二類向量負載指示藉由其指示編碼而區分。
至少一些實例提供一種資料處理方法,該方法包括: 回應於向量負載指示而執行負載操作,以將資料從資料儲存器傳輸至至少一個向量暫存器中之複數個元件; 當向量負載指示是第一類型,且對以預定序列對該至少一個向量暫存器之第一有效資料元件執行的負載操作偵測到異常條件時,執行回應動作; 當向量負載指示是第一類型,且對以該預定序列對不同於該第一有效資料元件之一有效資料元件執行的負載操作偵測到異常條件時,禁止該回應動作並儲存辨識被偵測到異常條件的該有效資料元件之元件辨識資訊;及 當向量負載指示是第二類型,且對該至少一個向量暫存器之任何有效資料元件的負載操作偵測到異常條件時,禁止該回應動作並儲存辨識被偵測到異常條件的該有效資料元件之該元件辨識資訊; 其中第一類向量負載指示與第二類向量負載指示藉由其指示編碼而區分。
至少一些實例提供一種設備,該設備包括: 用於回應於向量負載指示而執行負載操作的手段,以將資料從資料儲存器載入至至少一個向量暫存器中之複數個元件;其中: 回應於第一類向量負載指示,當對以預定序列對該至少一個向量暫存器之第一有效資料執行的負載操作偵測到異常條件時,執行手段經配置以執行回應動作,且當對以該預定序列對該第一有效資料以外的有效資料執行的負載操作偵測到異常條件時,執行手段經配置以禁止該回應動作,並儲存辨識被偵測到異常條件的該有效資料元件之元件辨識資訊;及 回應於第二類向量負載指示,當對該至少一個向量暫存器之任何有效資料元件執行的負載操作偵測到異常條件時,執行手段經配置以禁止該回應動作,並儲存辨識被偵測到異常條件的該有效資料元件之該元件辨識資訊; 其中第一類向量負載指示與第二類向量負載指示藉由其指示編碼而區分。
至少一些實例亦提供一種電腦程式,以用於控制電腦以提供對應於上述設備的虛擬機執行環境。電腦程式可儲存在電腦可讀取儲存媒體上,此儲存媒體可為非暫時性儲存媒體。
至少一些實例提供一種電腦實施方法,以用於基於源程式而生成指示,該等指示用於由處理電路系統進行處理,該方法包括: 在源程式內偵測包括複數個迭代之源迴圈,每一迭代包括第一類向量負載指示以用於觸發處理電路系統以執行負載操作,以將資料從資料儲存器載入至至少一個向量暫存器之複數個資料元件,其中第一類向量負載指示具有編碼,該編碼指示當藉由處理電路系統對以預定序列對該至少一個向量暫存器之第一有效資料執行的負載操作偵測到異常條件時,處理電路系統將執行回應動作,且當對以該預定序列對該第一有效資料以外的有效資料執行的負載操作偵測到異常條件時,處理電路系統將禁止該回應動作,並儲存辨識被偵測到異常條件的該有效資料元件之元件辨識資訊;及 回應於偵測到源迴圈,生成展開迴圈的指示,該迴圈包括的迭代少於源迴圈,其中展開迴圈之每一迭代對應於源迴圈之至少兩個迭代,及包括: 該第一類型之向量負載指示;及 第二類型之至少一個向量負載指示,該指示具有一編碼,該編碼指示當對該至少一個向量暫存器之任何有效資料元件執行的負載操作偵測到異常條件時,處理電路系統將禁止該回應動作並儲存辨識被偵測到異常條件的該有效資料元件之該元件辨識資訊。
至少一些實例亦提供一種資料處理設備,該設備經配置以執行該方法以用於生成上述指示。
可提供一種電腦程式,該電腦程式包括指示,該等指示用於控制電腦以執行生成上述指示之方法。電腦程式可儲存在電腦可讀取儲存媒體上,此儲存媒體可為非暫時性儲存媒體。
現將描述一些特定實例。將理解,本發明不限定於該等特定實例。
第1圖是系統方塊圖,在該系統中可使用所述實施例的技術。在第1圖圖示的實例中,系統採用管線式處理器形式。指示由擷取電路系統10擷取自指示快取記憶體15(該指示快取記憶體通常經由一或更多個其他階層的快取記憶體耦接至記憶體55,如2階快取記憶體50),指示從指示快取記憶體15穿過解碼電路系統20,該解碼電路系統解碼每一指示以便產生適當的控制信號,以用於控制管線式處理器內的下游執行資源,以執行指示所需操作。形成解碼指示的控制信號被傳遞至發出級電路系統25以用於發出至管線式處理器內的一或更多個執行管線30、35、40、80。執行管線30、35、40、80可共同視為形成處理電路系統。
發出級電路系統25可存取暫存器60,在該暫存器中可儲存操作所需的資料值。特定而言,用於向量操作的源運算元可儲存在向量暫存器65內,且用於純量操作的源運算元可儲存在純量暫存器75中。此外,一或更多個述詞(掩碼)可儲存在述詞暫存器70中,以便在執行某些向量操作時用作被處理之向量運算元中資料元件的控制資訊。純量暫存器中之一或更多者亦可用以儲存用以推導該種控制資訊的資料值,以在某些向量操作實施期間使用(例如向量載入/儲存指示可規定純量暫存器作為基址暫存器,如下所論述)。
暫存器16亦可包括數個控制暫存器76以用於提供各種控制資訊,如用於控制處理管線操作之配置資訊,或指示在處理期間發生的狀況,或指示結果之性質的狀態資訊。例如,控制暫存器76可包括第一故障暫存器(first faulting register; FFR) 78及向量大小(vector size; VS)暫存器79,該等暫存器將在下文更詳細地描述。
該等源運算元及任何關連控制資訊可經由路徑47路由至發出級電路系統25內,以便其可隨同辨識待執行之操作的控制信號而被調度至適當的執行單元,以實施每一解碼指示。第1圖中圖示的各種執行單元30、35、40、80假定為用於對向量運算元執行操作的向量處理單元,但如若希望處理由設備支援的任何純量操作,則可提供單個執行單元(未圖示)。
設想各種向量操作,算術運算例如可連同所需源運算元(及任何控制資訊,如述詞)被轉發至算術邏輯單元(arithmetic logic unit; ALU) 30,以便賦能對彼等源運算元執行算術或邏輯操作,結果值通常輸出作為目的運算元以用於儲存在向量暫存器排65中之規定暫存器中。
除ALU 30之外,可提供浮點單元(floating point unit; FPU) 35以用於回應於解碼浮點指示而執行浮點運算,且可提供向量排列單元80以用於對向量運算元執行某些排列操作。此外,載入/儲存單元(load/store unit; LSU) 40用於執行負載操作,以便將來自記憶體55(經由資料快取記憶體45及任何中間的其他階層快取記憶體,如2階快取記憶體50)的資料值載入暫存器組60內的規定暫存器內,及用於執行儲存操作以便將來自彼等暫存器的資料值儲存回記憶體55。將理解,亦可提供未在第1圖中圖示的其他類型之執行單元。
第1圖所示系統可為依序處理系統,在該系統中依照程式次序執行指示序列,或者可為無序系統,從而允許各種指示的執行序列得以重新定序,以便設法改良效能。熟習該項技術者將理解,在無序系統中,可提供額外結構(第1圖中未明確圖示),例如暫存器重命名電路系統,以將指令所規定的架構暫存器映射至來自暫存器組45內實體暫存器池中之實體暫存器(該實體暫存器池通常大於架構暫存器數目),由此使某些危害能夠得以移除,從而促進無序處理的更多使用。另外,通常將提供重新定序緩衝器以記錄無序執行,且允許各種指示的執行結果被依序提交。
在所述實施例中,第1圖之電路系統經排列以對儲存在向量暫存器65中之向量運算元執行向量操作,其中向量運算元包括複數個資料元件。對於對該種向量運算元執行的某些向量操作而言(如算術運算),可並行(或迭代地)向向量運算元內的各種資料元件應用所需操作。述詞資訊(亦稱為掩碼)可用以辨識向量內哪些資料元件是用於特定向量操作的有效資料元件,並由此即為將對其應用操作的資料元件。
當有較大資料陣列要處理,且需要將同一組操作應用於陣列中每一成員時,向量處理尤其有用。僅利用純量方法,指示序列將需要從資料快取記憶體45或記憶體55中載入陣列中之每一元件,處理該元件,隨後將結果儲存回至記憶體,對陣列中每一元件重複該序列。與向量處理相反,單個指示可將陣列中多個元件載入一或更多個向量暫存器65的數個資料元件內,隨後向量暫存器中彼等元件的每一元件可由共同指示集處理,隨後將結果儲存回至資料存儲器。此可允許回應於單個指示序列而處理多個元件(較佳允許並行處理至少一些元件),以藉由減少待擷取、發出及執行的指示數目來改良效能。
因此,如第2圖所示,向量處理系統可支援向量負載或儲存指示(在本案中共同稱作向量資料傳輸指示),以用於在對應於連續位址區塊100的資料儲存器中之儲存位置與至少一個向量暫存器65之多個資料元件之間傳輸資料。對於負載指示而言,至少一個向量暫存器65之每一有效元件102載有讀取自連續位址區塊100之對應部分104中的資料。對於儲存指示而言,來自給定有效資料元件102的資料被儲存至儲存位置,該等儲存位置對應於連續區塊100之對應部分104。
回應於給定向量資料傳輸指示而存取的位址區塊100具有某一大小SB。區塊大小SB =NRxNExSS,其中: • NR是被指示作為目標的暫存器數目; • NE是每一暫存器中之資料元件數目;及 • SS是位址單元大小,該單元表示為位址區塊的子部分104中對應於暫存器65中單個資料元件102之一者。
參數NR、NE、SS中之每一者可為: • 固定值,用於給定處理器(例如一些處理器可僅支援將單個向量暫存器作為目標之載入/儲存指示)而得以固線; • 控制暫存器76中之一者中規定的可變值(經由對另一變數之依賴性而明確或隱含地規定);或 • 向量資料傳輸指示之編碼中規定的可變值(經由對另一變數之依賴性而明確或隱含地規定)。例如,運算碼或另一指示編碼欄位可辨識哪一值將用於NR、NE,及/或SS。
因此,不同的指示集架構可選擇表示該等參數之不同方式。
例如,如第1圖所示,可提供向量大小暫存器79以辨識向量大小VS,VS對應於一個向量暫存器65中之位元總數,且指示編碼可辨識將用於當前操作之資料元件大小ES(亦即一個資料元件內的位元或位元組數目)。辨識變數控制暫存器中之向量大小VS用以允許在整個平臺範圍內執行相同碼,該碼可藉由使用不同的向量大小實施。每一暫存器中的資料元件數目NE可藉由指示,經由資料元件大小ES之規定而隱含地被辨識,因為處理電路系統可決定NE = VS/ES。在此情況下,連續位址區塊大小SB亦可表示為SB = NR x VS/ES x SS。
請注意,SB、VS、ES及SS可以某些給定長度的單元表示,例如表示為位元數目或位元組數目,或位元或位元組數目的倍數數目,或一些其他資料單元。如若SB以位元組表示,如以下實例所示,則SS應亦以位元組表示,但VS及ES只要相同便可以其他單元(例如位元、位元組)表示。一般而言,SB及SS應具有相同單元,且VS及ES應具有相同單元,但SB及SS可具有不同於VS及ES的單元。
另一方面,暫存器數目NR可根據指示編碼而決定。例如,運算元可規定此為例如單個、雙重還是三重暫存器載入/儲存,或指示可包括一欄位,該欄位規定暫存器數目NR。
此外,儲存單元大小SS亦可根據指示編碼辨識(再一次,不同的運算碼可映射至不同的儲存單元大小SS,或編碼中可有一欄位,該欄位辨識SS)。第3圖圖示儲存單元大小SS為何可不同於資料元件大小ES之一實例。如第3圖中部分A)所示,一些指示可用來自資料儲存器的對應數量之資料充填具有給定資料元件大小的資料元件(例如ES = 32位元 = 4位元組),以使得ES = 32位元 = 4位元組。然而,如第3圖中部分B)及C)所示,一些處理器亦可允許傳輸來自資料儲存器或來自更大資料元件的更小數量之資料。例如,第3圖中部分B)及C)分別圖示儲存單元大小SS是2位元組及1位元組的實例。憑藉該種向量負載,來自大小為SS的記憶體單元之資料是擴展符號或擴展零,以填充一個大小為ES的資料元件。同樣,對於儲存指示而言,在將資料儲存至資料儲存器時,來自資料元件的4位元組值可截斷為2位元組或1位元組。
另一方面,其他系統在載入或儲存至記憶體時可不支援擴展或截斷資料,在此情況下,SS可為等於資料元件大小ES的固定值,且在此情況,SB只要等於NR x VS即可,無需在指示或控制暫存器中規定SS。
請注意,儘管區塊大小SB等同於NR x NE x SS,但未必一定需要藉由使該等參數相乘來決定。如上所示,該等參數的一或更多者可為固定的或可基於另一有關參數而決定,因此可能有生成同等結果的其他方式。同樣,如若元件數目NE、儲存單元大小SS及諸如向量大小VS或資料元件大小ES的任何其他有關參數的數目大體是2的冪,則不乘以該等值,而是可藉由使用移位操作而產生同等結果。
此類連續向量載入/儲存指示可用以形成程式迴圈,該迴圈重複載入來自資料儲存器的資料區塊SB,以某種方式藉由使用一系列向量資料處理指示(例如向量加、向量乘,等等)處理該資料區塊,隨後將結果向量儲存回至記憶體,再以一量遞增塊100之起始位址以進行連續迭代,該量對應於區塊大小SB。因此,向量化碼往往可包括迴圈,迴圈形式顯示如下: loop: 1d1d    z0.d,  p0/z,   [x0]     //使向量負載來自區塊的資料,區塊位於 //位址 [x0] //...資料處理指示使用載入的向量... st1d    z6.d,  p0/z,   [x0]     //將結果儲存回資料儲存器,該儲存器位於 //位址 [x0] incb x0,   SB //藉由區塊大小SB遞增指標x0 cmp x0, x1 //決定是否繼續迴圈 blo loop // 如若x0 < x1,則繼續
應注意,儘管此簡單實例每一迭代僅圖示單個向量負載,但實際上每一迭代中可能有數個不同向量被載入,以允許該等向量在後續資料處理中組合。
儘管如此,假如該等迴圈在執行指示以便控制迴圈週圍的程式流時產生實施成本。除載入/儲存指示及實際資料處理指示之外,亦將需要一些額外指示以用於管理迴圈,如用於遞增/遞減表示迴圈已執行多少次的指標或迴圈計數器(例如上述[x0])的指示、用於對比指標或計數器與限值以決定何時終止迴圈的指示,及在尚不滿足終止條件時用於分支返回迴圈起始處的條件分支指令。該等指示本應在每一迴圈迭代中執行,且此舉降低效能,在迴圈控制指示數目比用於實際資料處理的向量指示數目大時尤為如此。
為降低迴圈控制成本,可執行迴圈展開以將源碼之給定程式迴圈替換為具有更少迭代的展開迴圈。展開迴圈的每一迭代可具有更多指示以有效實現原始源迴圈之多個迭代的處理。例如,如若展開迴圈的每一迭代包括4個負載、資料處理及儲存指示的序列以用於處理對應於記憶體中4個不同資料區塊的資料,則迴圈控制額外負擔可減少達3/4。該種展開迴圈之一實例顯示如下: loop: ld1d z0.d,  p0/z,   [x0] //負載迭代#0 ld1d zl.d,  p0/z,   [x0,  x1] //負載迭代#1(x1儲存SB) ld1d z2.d,  p0/z,   [x0,  x2] //負載迭代#2(x2儲存2*SB) ld1d z3.d,  p0/z,   [x0,  x3] //負載迭代#3(x3儲存3*SB) //4組資料儲存指示使用每一載入向量z0、z1、z2、z3 st1d z6.d,  p0/z,   [x0] //儲存迭代#0 st1d z7.d,  p0/z,   [x0,  x1] //儲存迭代#1 st1d z8.d,  p0/z,   [x0,  x2] //儲存迭代#2 st1d z9.d,  p0/z,   [x0,  x3] //儲存迭代#3 incb x0,  4*SB //利用4*SB遞增指標x0 cmp x0,  x5 //決定是否繼續迴圈 blo loop //如若x0 < x5,則繼續
儘管迴圈之單個迭代更長,但藉由執行更少控制指令(例如incb、cmp、bge),總體效能往往可得到改良。與減少迴圈控制額外負擔相同,迴圈展開亦可藉由賦能其他最佳化技術而改良效能,如軟體管線化或模量排程,上述技術可實現對處理器資源的更佳利用。例如,展開迴圈之一個迭代內的不同向量指示的兩個或兩個以上者能夠至少部分地並行處理(例如藉由使用更大向量大小),而在原始源迴圈中,在當時僅會遇到一個指示,因此該等改良無法實現。在一些情況下,可在軟體中執行迴圈展開,例如藉由編譯器,該編譯器將源碼編譯為可執行碼,該碼將由處理器硬體執行。然而,亦有可能在硬體中執行迴圈展開,例如藉由管線更早階段,該階段可偵測迴圈並將該等迴圈替換為展開迴圈。
儘管如此,藉由僅使用暫存器值規定傳輸起始位址之連續向量資料傳輸指示由於諸多原因未良好地支援迴圈展開。連續向量資料傳輸指示可藉由使用純量基址暫存器及純量指數暫存器而規定待存取的位址區塊100之起始地址#A,該純量基址暫存器規定一基址,且該純量指數暫存器規定一指數值,該指數值將被添加至基址暫存器以形成起始地址#A。然而,此方法對於迴圈展開有缺點,因為此方法在執行迴圈以初始化展開迴圈內每一各個向量資料傳輸指示所用的全部指數暫存器之前需要額外負擔,且迴圈內可必需額外指示以用於遞增每一指數暫存器。並且,使用額外的指數暫存器增大純量暫存器檔案壓力,因為迴圈中每一迭代將需要引用更大數目之暫存器。如若沒有充足純量暫存器來容納迴圈之一個迭代內需要的全部值,則此方法可需要將來自一些暫存器的資料儲存至記憶體或快取記憶體(例如推送至堆疊),且堆疊上之此暫存器溢出及充填是不利的,因為此情況可能損害效能。
相反,如第4圖所示,提供向量資料傳輸指示,該指示藉由使用基址暫存器120及立即偏移值122來辨識連續位址區塊100之起始位址#A。立即值是在指示編碼中直接規定的值,而非引用暫存器的值。除基址暫存器120及直接偏移量122之外,指示編碼亦可包括運算碼124,該運算碼辨識將執行的操作方式,一或更多個目標暫存器126的指示,並儲存述詞值以用於控制向量操作的述詞暫存器128之指示。
令人驚訝的是,藉由使用基址暫存器120及直接偏移量122規定目標位址的連續向量資料傳輸指示將十分有用。儘管使用立即值而非指數暫存器以規定偏移量避免了在展開迴圈中初始化及遞增指數暫存器的成本並因使用更多暫存器而增大的暫存器壓力,但實際上,向量處理器的向量大小可極長(例如256位元組)且每一指示的區塊大小SB可相對較大。如若原始迴圈之4或8個迭代展開為展開迴圈之單個迭代,則迴圈的上次資料傳輸所需的偏移量可能較大,且可需要大量位元以在指示編碼內的直接偏移量中表示此偏移量。實際上,眾多向量指示組架構具有受限的可用編碼空間,因為需要指示編碼大多數位元用於規定運算碼、目標暫存器、述詞值、基址暫存器及給定指示所需的任何其他參數,因此,可能僅僅是沒有充足空間容納較大的直接偏移量。亦不可選擇在指示編碼中增大位元數目,因為此將增大處理管線內的用於傳輸指示之匯流排大小,並增大儲存給定程式所需的記憶體空間量,此在功耗及電路面積方面可能過於昂貴。使用立即偏移值的另一問題是在生成展開迴圈時,無法知曉展開迴圈內連續資料傳輸指示的起始位址之間的差異,因為如上所論述,不同的硬體實施方式可使用不同的向量大小,或向量大小在單個實施方式中可為變數,因此編譯器(或執行迴圈展開的其他軟體或硬體)可能不知曉應為給定指示規定何種偏移量。出於上述原因,使用基址暫存器及簡單的立即位元組偏移量為給定指示規定起始位址似乎不是可行的選項。
儘管如此,在第4圖圖示的向量資料傳輸指示中,並未將直接偏移量規定為絕對值,而是為將載入的連續位址區塊之區塊大小SB倍數。載入/儲存單元40可包括位址生成單元,該單元生成起始位址#A,該起始位址#A具有一值,該值等同於將純量基址暫存器Xb中儲存的基址與立即偏移值imm乘以區塊大小SB的乘積相加所得的結果。可決定區塊大小SB,該區塊大小等同於NR x NE x SE,如上文針對第2圖所論述。立即值imm與SB之乘積可以不同方式決定。儘管一些實施方式可能實際用立即值imm乘以區塊大小SB,但如若區塊大小SB是2的乘冪,則另一選項是向左移動立即值imm達對應於log2 (SB)的數個位元。乘積可因此添加至基址以生成起始位址#A。
第5圖圖示處理連續的向量資料傳輸指示之方法。在步驟130中,決定指示是否為規定基址暫存器與立即偏移量的連續向量資料傳輸指示。如若不是,則以另一方式處理該指示。如若該指示是規定基址暫存器與立即偏移量的連續向量資料傳輸指示,則在步驟132中,載入/儲存單元40利用一值結果計算起始位址#A,該值等同於將基址#base與imm x SB乘積相加所得的結果。應注意,可以任何與#base + imm x SB產生相同結果的方式決定起始位址#A,但無需在實際上以此方式計算(例如可如上文所論述藉由換為使用移位來實施乘法)。在步驟134中,載入/儲存單元觸發一系列資料傳輸,其中每一資料元件對應於在位址#A起始的連續位址區塊100中之各個部分,且在該資料元件被述詞暫存器128中之述詞指示為有效資料元件時觸發在給定資料元件與位址區塊100之對應部分104之間執行的資料傳輸。例如,目標暫存器中最低有效元件可映射至#A處之資料,下一元件可映射至位址#A + SS處之資料,以此類推,其中一或更多個目標暫存器65中之第n個元件對應於位址#A + n * SS(其中0 ≤ n < NR x NE)。
此方法解決上文論述的問題,因為藉由將立即偏移量規定為區塊大小SB倍數,在寫入程式碼或編譯碼時便無需知曉向量大小VS。此允許藉由具有不同向量大小的各種不同硬體實施方式來執行相同指示。此外,因為實際上,規定立即偏移量的連續向量載入/儲存指示僅對迴圈展開有用,且暫存器壓力將趨於限制原始源迴圈中可展開為展開迴圈之單個迭代的迭代數目,因此實際上,立即偏移量122可能變得極小。例如,在眾多系統中,將8個以上原始迴圈迭代展開為展開迴圈之單個迭代是罕見的,因此表示範圍值0至7中之正值的3位元無符號立即值便足夠了。此意謂著即使當指示集架構具有受限的編碼空間時,極小立即偏移量122仍可裝入指示集編碼內。
儘管第4圖圖示藉由使用指示的給定位元模式進行指示編碼,但在組譯器語法中,指示可表示如下: LD1H    Zd.S,   Pg/Z,   [Xb, #1] LD2H {Zd1.H, Zd2.H}, Pg/Z, [Xb, #2] LD3H {Zd1.H, Zd2.H, Zd3.H}, Pg/Z, [Xb, #3] 其中,在上述所有實例中,立即值編碼為4位元二進制值0b0001,但在語法中則表示為從記憶體載入的暫存器數目的倍數。記憶符號LD1H、LD2H、LD3H指代正在載入的暫存器數目(亦即NR分別等於1、2及3)。或者,組譯器語法可在上文圖示三個情況下將立即值全部定義為#1。
使用此循環展開指示形式的實例顯示如下: //使用向量長度倍數負載展開x 4向量迴圈 //x0 = 當前迴圈迭代的陣列指標 //p0-p3 = 展開迭代#0至#3的述詞 //z0-z3 = 展開迭代#0至#3的負載結果 loop: ld1d  z0.d, p0/z, [x0, #0] //負載迭代#0 ld1d    z1.d,  p1/z, [x0, #1] //負載迭代#1 ld1d    z2.d, p2/z, [x0, #2] //負載迭代#2 ld1d   z3.d, p3/z, [x0, #3] //負載迭代#3 ... //使用負載向量進行資料處理 incb   x0, all, mul #4     //基址 += 4*SB位元組 b  loop
在此實例中,展開迴圈之第一向量負載指示具有立即偏移量0,且相繼的更多負載規定立即偏移量1、2、3,等等,以分別指示每一載入將載入來自位址區塊的資料,該位址區塊由區塊大小SB之單位數目取代。
儘管如此,實際上,展開迴圈之第一負載並非必須規定0偏移量。憑藉軟體管線化技術,可需要在迴圈中除了迴圈起始或結束以外的位置處遞增迴圈指標,因此,在此情況下,基址暫存器之參考點可為展開迴圈之中間負載指示之一者的位址。此可使得允許規定負偏移量變得十分有用。因此,立即偏移值122可規定為帶符號整數值,該值可利用給定的位元數目編碼為2的補數。例如,4位元可編碼為範圍自-8到+7的補數值。例如,如若在前兩個負載之後而在最後兩個負載之前執行迴圈遞增,則偏移量可定義如下: loop:   ld1d z0.d,  p0/z,   [x0, #0]  // 負載迭代#0 ld1d z1.d,  p1/z,   [x0, #1]  //負載迭代#1 incb x0,   all,  mul #4 //基址 += 4*SB位元組 ld1d z2.d,  p2/z,   [x0, #-2]  //負載迭代#2 ld1d z3.d,  p3/z,   [x0, #-1]// 負載迭代#3 … //藉由使用載入的向量進行資料處理 b loop
第6圖圖示執行迴圈展開之方法。此方法可由任何軟體或硬體執行,該軟體或硬體生成指示以用於由處理電路系統回應於給定源程式而處理。例如,此方法可由編譯器執行,該編譯器取一源程式並生成編譯碼以待執行,或該方法可由同一處理管線內的電路系統即時執行,該電路系統將實際執行該等指示。一般而言,執行迴圈展開之硬體或軟體被視作迴圈展開器。
在步驟140中,接收源程式之指示。在步驟142中,偵測源程式是否包括具有一定數目迭代的源迴圈,其中每一迭代i包括向量資料傳輸指示,該指示以大小SB的連續位址區塊為目標,且具有起始位址A[i]。如若源程式不包括該種迴圈,則方法結束及以另一方式處理源程式。然而,如若源程式包括該種源迴圈,則在步驟144中,迴圈展開器為迭代少於源迴圈的展開迴圈生成指示,其中展開迴圈之每一迭代對應於源迴圈之N個迭代,且包括至少一參考向量資料傳輸指示及至少又一個向量負載或儲存指示,該向量資料傳輸指示藉由使用基址暫存器及零偏移而規定起始位址,且該向量負載或儲存指示藉由使用基址暫存器及立即值規定起始位址,該立即值規定為區塊大小SB之倍數。展開迴圈之每一迭代亦可包括遞增指示,以用於以對應於NxSB的量來遞增基址暫存器。根據基址暫存器在迴圈內遞增的時序,參考指示可較早、較晚或中途穿過迴圈的其他向量資料傳輸指示。參考向量資料傳輸的零偏移可以與上文論述相同的方式藉由使用立即偏移量而規定,或如下所論述的方式藉由使用暫存器參考而規定。
在步驟146中,生成的指示經輸出以用於由處理電路系統進行處理。例如,指示可作為經編譯程式而輸出,此程式隨後可儲存至記憶體55以用於由處理電路系統進行處理。或者,如若管線內正在即時執行展開,則將輸出指示發送至隨後階段以進行處理。
立即偏移量欄位122之特定大小可取決於正在使用的特定指示集架構。實際上,向量暫存器60、純量暫存器75或述詞暫存器70的數目可對源迴圈之迭代數目實施有效限制,該源迴圈可展開成為展開迴圈之單個迭代,因此,提供容納大於此限制的任何值的立即偏移量欄位122是有用的。例如,如若預期源迴圈之每一迭代將使用最大值R個純量暫存器,且架構定義M個純量暫存器,則實際上,源迴圈中隨後可展開成為單個迭代的最大迭代數目將為M/R,因此,可選擇立即偏移量欄位122的大小,以使得可代表的最大值是M/R-1。亦可分配額外位元以容納帶符號值,以便可定義負及正偏移量。例如,R往往可為2或4,因此為編碼偏移值M/2-1或M/4-1提供充足位元空間即可足夠。例如,如若M=32,則大於8個迭代的展開通常可為稀少,因為3位元無符號偏移量欄位或4位元帶符號欄位可足以適應大多數實際情況,具有立即偏移量之向量資料傳輸指示很可能用於該等實際情況中。另一方面,如若述詞暫存器70比純量暫存器更少,則述詞暫存器數目可為對迴圈中實際上可展開成為展開迴圈之單個迭代的迭代數目的限制因數。因此,一般而言,可有限制展開量的一些約束,且可基於針對給定實施方式而出現的約束,選擇立即偏移量欄位122之大小。
總之,令人驚訝地,藉由使用基址暫存器及立即偏移值來辨識連續位址區塊之起始位址的向量資料傳輸指示是十分有用的,即使在向量相對較長或向量長度可變的系統中亦如此。由於該立即偏移值定義為連續位址區塊大小之倍數,該倍數以可變方式根據硬體所用的向量長度而選擇,因此無須事先知曉絕對區塊大小,且因此可執行橫跨使用不同向量長度的不同平臺的相同碼,或可執行支援可變向量長度的一平臺上之碼。因為針對迴圈展開而言,預期展開迭代的數目相對較小,因此立即偏移值在指示編碼中無需較大欄位,且因此甚至可用於編碼可用空間受限的指示集架構內。
儘管向量資料傳輸指示的此形式可用於使用固定大小的連續位址區塊的設備中,但此形式在提供可變大小之位址區塊的設備尤為實用。該設備可具有儲存元件以用於儲存可變控制參數,在執行指示時可讀取該參數以便決定將應用於立即偏移值的乘數,以形成基址偏移量。例如,可變的控制參數可能是辨識一個向量暫存器的大小的向量大小。
待存取的連續區塊之起始位址可以多種方式決定,該等方式等同於將基址及立即偏移值與一乘數的乘積相加,該乘數對應於連續位址區塊大小,但實際上無需以此方式決定。乘數可具有與NR x NE x SS的乘積相等的一值,其中NR是回應於向量資料傳輸指示而將為其傳輸資料的向量暫存器的數目,NE是每一向量暫存器包含的資料元件數目,且SS是對應於單個資料元件的位址單元的儲存單元大小。NR、NE、SS中之每一者可為固定值、在指示編碼中定義,或依據控制暫存器中儲存的變數參數而定義。
一個有用的方法可用於將在控制暫存器中定義的向量大小VS(一個向量暫存器的大小)、用於用以(經由運算碼明確地或隱含地)辨識NR、SS及ES(一個資料元件的大小)的指示編碼,且用於將決定的等同於NR x VS / ES x SS的乘數。NR、SS、ES全部可能被程式設計者/編譯器依據需要執行的操作而事先知曉,而VS則取決於特定的硬體實施方式。因此,在控制暫存器中定義VS而藉由使用指示編碼定義其他參數NR、SS、ES,此舉允許在使用不同向量大小的多種硬體實施方式中執行同一碼。
無需實際地執行乘法以便決定用於與立即偏移量相乘的乘數。NE、SE、ES、VL的可能值往往可對應於2的冪數,因此向左移位某一位元數可等同於相乘。
立即偏移值可為無符號整數值,當不需要負偏移量時,此值允許更小立即值欄位。或者,立即偏移值可為帶符號整數值,以允許使用負偏移量,此值十分有用,因為允許負偏移量提供更大撓性以在迴圈的不同點處更新基址,此舉可有助於使用例如軟體管線化技術來改良效能。
向量資料傳輸指示所提及的基址暫存器可為純量暫存器(與分散集中類型的載入/儲存指示相反,該等指示可規定向量暫存器以辨識待載入/儲存的目標向量中每一元件的不同地址)。
在一些情況下,當向量資料傳輸指示是向量負載指示時,當對向量的給定資料元件執行的負載操作偵測到異常條件時,可禁止處理異常條件之回應動作,反之,可儲存元件辨識資訊,該資訊辨識哪一資料元件是觸發異常條件的給定資料元件。此方法可用於允許迴圈推測,在該推測中,在解析控制是否應實際處理彼等元件的關連條件之前處理一些元件,此舉可有助於改良效能。此將在下文中更詳細地論述。
規定立即偏移值之向量資料傳輸指示可為載入指示或儲存指示。
處理向量化碼的另一問題是異常條件的處理,如位址轉換故障或記憶體許可故障。通常,將由向量化碼處理的資料陣列不會包含確切的區塊大小SB倍數,因此,迴圈之最終迭代僅可具有一些元件處理有效資料。在一些向量化迴圈中,迴圈之每一迭代可具有至少一個指示以用於查核載入的資料元件中之一者是否滿足停止條件,該條件指示已到達陣列末端,且如若滿足該條件,則可終止迴圈。如若必須分別載入每一元件及在載入下一元件之前測試每一元件的停止條件,則會喪失向量化之效能優勢,因此向量負載指示通常可載入資料區塊,隨後測試所載入的資料中是否有任何元件滿足停止條件。因此,可在實際已知一些元件是否是需要處理的有效元件之前,載入彼等元件。此技術可被稱作迴圈推測,在該技術中,應先處理至少一個元件,隨後再解析用於決定該元件是否應處理的關連條件。
儘管如此,如若迴圈之給定迭代載入一資料,該資料延伸超過待處理陣列的末端,則此可導致故障,因為原本可未在頁表中定義超過陣列末端之位址的位址轉換資料,從而導致位址轉換故障,或因為正在執行的處理沒有存取超過陣列末端之位址的許可,從而導致記憶體許可故障。因此,當使用迴圈推測時,諸如位址轉換故障或記憶體許可故障之異常條件更有可能出現。
如若給定資料元件出現異常條件,但尚未到達陣列末端,則此為有效異常條件,且可需要進行對應的回應動作,如執行用於處理故障的異常處理常式。例如,異常處理常式可觸發作業系統更新頁表,以為所需位址定義位址轉換映射。然而,對於從超過所需陣列之末端的位址載入的元件而言,如若發生異常條件,則觸發回應動作是不合乎需要的,因為該位址無論如何不應被存取,且該位址的載入僅作為利用超過陣列末端之給定向量長度VL或區塊大小SB對碼進行向量化的假像而被觸發。因此,當執行迴圈推測時,對全部異常條件觸發回應動作是不合乎需要的。
第7圖及第8圖圖示用於對此定址的第一類向量負載指示之操作。第一類指示亦被稱作第一故障(first faulting; FF)負載指示,因為當對正在載入的向量之第一有效元件偵測到異常條件時,該指示觸發回應動作,而當其他元件出現異常條件時則不觸發回應動作。在此實例中,設想元件具有自最低有效元件到最高位元件之預定序列,因此第一有效元件是最低有效元件,該元件由述詞值Pg指示為有效。例如,在第7圖中,元件0具有述詞位元0,且元件1至3具有述詞位元1,因此第一有效元件是元件1。
在第7圖中,對第一有效元件(元件1)執行的負載操作出現異常條件,因此觸發回應動作,如執行異常處理常式。一般而言,第一有效元件將以非推測方式而被負載,因為沒有可導致滿足停止條件的更早有效元件,且因此如若故障發生,則此為有效故障,並觸發回應動作以處理此情況。
另一方面,如第8圖所示,對於第一故障向量負載指示而言,如若除第一有效元件之外元件(在此實例中例如元件2)發生異常條件,則禁止回應動作。相反,處理電路系統更新第一故障暫存器(first faulting register; FFR) 78以辨識哪一元件導致了該故障。如若隨後的資料元件中之一個以上者故障(除了第一有效元件),則可在FFR 78中辨識該等元件中第一元件的位置,或,如下所論述,FFR可辨識發生故障的第一元件及任何隨後元件。
此方法一般對迴圈推測有用,因為該方法意謂著當除了第一有效元件之外的元件出現異常條件時,不立即觸發回應動作。FFR 78更新後,一些指示可查核比發生故障元件更早的元件是否滿足停止條件,如若滿足,則無需處理異常條件便終止迴圈,因為異常條件僅由於向量迴圈延伸超過待處理資料的末端而出現。另一方面,如若尚未滿足停止條件,則FFR 78可用以辨識哪一元件觸發了異常條件,且此可用以利用現為第一有效元件的故障元件觸發指示的迴圈序列重複,以便在異常條件再次出現時,可立即觸發回應動作,因為故障元件將為第一有效元件。因此,儘管第一故障方法可延遲正在被處理的有效異常條件(因為指示序列可需要重複數次以允許故障的每一各個元件被作為第一有效元件而處理),但此額外負擔通常被藉由允許每一迴圈迭代中處理更多元件(導致更少迴圈控制額外負擔)而達到的效能增益超過,此情況是可能的,因為即使在解析停止條件之前,迴圈之每一迭代負載大資料區塊,第一故障機制亦阻止假回應動作被經推測處理的元件而觸發,該等回應動作隨後被證實並非必須。
如第8圖所示,FFR 78可定義為包括數個位元的元件掩碼,每一位元對應於正在負載的向量中之元件之一者。對應於故障元件及任何隨後元件的位元具有第一值(在此實例中為0),且任何比故障元件更早的元件的位元具有第二值(在此實例中為1)。以此方式定義FFR 78可用於賦能為對執行指示序列的隨後嘗試而決定新述詞或位址(參看下文第13圖),以使得故障元件變成第一故障元件,以用於隨後的嘗試。因此,FFR 78可用以允許資料元件之處理在故障解析之後恢復,無需不必要地對未觸發故障的元件重複已執行的操作。
因此,此形式之第一故障指示可用於向量化碼,以阻止對於用於處理被作為向量化假像而引入的異常條件的作業系統或其他軟體的不必要陷阱。然而,當執行迴圈展開時,指示之第一故障形式不對除了展開迴圈之第一指示之外之指示起作用。儘管展開迴圈之第一負載之第一有效元件很可能是非推測性的(因為沒有更早的有效元件可使得停止條件被滿足),但對於後續負載而言,第一有效元件亦可為推測負載元件。通常,一旦展開迴圈內的全部負載均已完成,便可解析展開迴圈之停止條件,因此除了由展開迴圈之第一負載所負載的第一有效元件之外的任何元件都可能是推測元件,因此對展開迴圈內每一負載之第一有效元件觸發回應動作是不合需要的。
如第9圖所示,可提供第二類向量負載指示,該指示被稱作非故障(non-faulting; NF)向量負載指示。當執行非故障向量負載指示時,即使第一有效元件出現異常條件,回應動作仍被禁止而FFR 78以與第8圖類似的方式更新以辨識故障的元件。因此,對於負載指示之非故障類型而言,無論哪一元件觸發故障,都不觸發回應動作,且更新第一故障暫存器78以辨識導致故障的元件。如以下實例所示,此允許迴圈展開針對展開迴圈中之第一負載而使用指示的第一故障形式(例如ldff1d),且針對展開迴圈內的隨後負載使用指示的非故障形式(例如ldnf1d): // 藉由使用非故障負載發明展開 x 3 向量迴圈 // x0 = 當前迴圈迭代的陣列指標 // p0-p2 = 展開迭代#0至#2的述詞 // z0-z2 = 展開迭代#0至#2的負載結果 loop:    setffr // FFR = 全部為真 ldff1d z0.d,  p0/z,   [x0, #0]                         // 第一故障負載迭代#0 rdffr p4.b                                           // 讀取第一負載的FFR ldnf1d z1.d, p1/z, [x0, #1]                  // 非故障負載迭代#1 rdffr p5.b // 讀取第二負載的FFR ldnf1d z2.d, p2/z, [x0, #2] // 非故障負載迭代#1 rdffr p6.b // 讀取第三負載的FFR brkn p5.b,  p0/z,  p4.b,  p5.b // 在#0到#1傳播故障 brkn p6.b,  p1/z,  p5.b,  p6.b // 在#1到#2傳播故障 ...// 預測p4、p5及p6的操作 incb x0,  all, mul #3 // 基址 += 3*SB位元組 b loop
可在指示編碼內以任何方式區分兩類指示。可提供兩個完全不同的運算碼以用於該等指示,或在指示編碼中提供具有旗標的共同運算碼,該運算碼規定指示是第一故障還是非故障。然而,此將需要指示集架構內額外的編碼空間,需要額外的運算碼被分配用於該等指示,此舉可阻止指示集架構內包括的另一種操作,或需要編碼之額外位元以表示該旗標。
因此,編碼第一及第二類型之指示之更有效方法可為使用一方法,該方法中,在指示內表示位址偏移量以用信號表示該指示是第一類型還是第二類型指示。如上文之論述,可提供規定立即偏移量122的一指示形式,該立即偏移量122表示區塊大小SB的倍數,此舉主要對迴圈展開十分實用,此亦是很可能使用第二類型指示的情況。因此,定義位址偏移量之方法亦可決定該指示是第一故障還是非故障。
第10圖圖示區分兩類指示的第一實例。在此實例中,如若立即偏移值是零,則指示是第一(第一故障)類型,且如若立即偏移值非零,則指示是第二(非故障)類型。通常,當執行迴圈展開時,展開迴圈之第一負載將具有偏移量零,且隨後的負載將具有非零偏移量,因此立即偏移量是否為零可用以辨識故障行為類型。此賦能兩個指示形式觸發不同的異常處理行為,無需編碼內的任何額外位元空間。
第11圖圖示區分指示的第二實例。除第4圖圖示類型的向量負載指示(該指示規定立即偏移量)之外,指示集架構亦可包括對應向量負載指示,該指示藉由使用指數暫存器而規定偏移量。在此情況下,當向量負載指示藉由使用指數暫存器而規定偏移量時,此可視作指示的第一故障類型,且當偏移量被立即值規定時,此可視作負載指示之非故障類型。因為立即偏移值及非故障類型之負載指示的使用很可能主要用於迴圈展開,因此使用非故障類型之負載指示的大多數實例將亦規定立即偏移值,因此將立即規定負載指示預設為非故障避免了耗盡指示編碼內任何其他位元空間以用於辨識非故障行為的需求。
當使用第11圖圖示的方法時,展開迴圈第一負載可藉由使用指數暫存器規定其偏移量,以便觸發第一故障行為。在一些情況下,通用暫存器可經分配用於儲存第一負載之指數,且儘管此舉將在每次展開迴圈迭代時需要一個額外純量暫存器,但因為隨後的負載可藉由使用立即值而規定偏移量,因此此舉產生的暫存器壓力將小於每一負載都具有單獨指數暫存器的情況。在任一情況下,展開迴圈之第一負載往往將使用零偏移,且一些架構定義一預定暫存器,該暫存器預設假定等於零(除能設為任何值的通用暫存器之外)。儲存零的硬連接暫存器能夠在硬體中提供,或預定暫存器可不對應於實際暫存器,但處理電路系統可將預定暫存器之暫存器說明符映射至零輸入值即可,無需存取暫存器組。因此,藉由引用展開迴圈之第一負載的預定暫存器,即使當第一負載藉由使用指數暫存器而規定偏移量時,亦不必耗盡通用純量暫存器。
因此,上文圖示之展開迴圈之實例可基於第11圖中圖示的方法而修正,以使得第一故障指示ldff1d藉由引用預定暫存器xzr辨識其偏移量,且第一故障指示根據預設將被視作第一故障,因為該指令使用指數暫存器來辨識其偏移量,與非故障指示ldnf1d相反,該非故障指示引用立即值#1、#2等等: // 使用非故障負載發明展開 x 3向量迴圈 // x0 = 當前迴圈迭代的陣列指標 // p0-p2 = 展開迭代#0至#2的述詞 // z0-z2 = 展開迭代#0至#2的負載結果 loop:   setffr // FFR = 全部為真 ldff1d z0.d, p0/z, [x0, xzr]                // 第一故障負載迭代#0 rdffr p4.b // 讀取第一負載的FFR ldnf1d z1.d, p1/z, [x0, #1]                  // 非故障負載迭代#1 rdffr p5.b // 讀取第二負載的FFR ldnf1d z2.d, p2/z, [x0, #2] // 非故障負載迭代#1 rdffr p6.b // 讀取第三負載的FFR brkn p5.b, p0/z, p4.b, p5.b // 在#0至#1傳播故障 brkn p6.b, p1/z, p5.b, p6.b // 在#1至#2傳播故障 . . . // 預測p4、p5及p6的操作 incb x0,  all, mul #3 // 基址 += 3*SB位元組 b loop
第12圖示意地圖示藉由使用FFR 78來追蹤異常條件的一實例,該等異常條件由於指示序列而出現,該等指示序列作用於給定資料元件集,每一序列指示使用來自前一指示的結果。如若該等指示中任何指示的給定元件觸發故障,則執行該元件及該序列中後續指示的任何後續元件的處理是不合乎需要的。因此,第一故障暫存器能以累積方式定義,以便在序列開始之前,將所有位元設定為等於1,隨後,如若任何指示觸發給定元件的故障(除了第一故障指示的第一有效元件),則對應於給定元件及任何後續元件的位元便在第一故障暫存器78中被清除,而剩餘指示序列的位元將保持清除。使用與運算結合第一故障暫存器78與述詞值Pg,可由此為任何後續指示生成修正述詞Pg',以阻止故障元件被進一步處理。如若後繼指示(例如第12圖中指示1)隨後對更早的元件生成另一故障,則至少又一個FFR 78的位元可清除為0,以使得下一指示將處理更少元件。
或者,並非對前述掩碼Pg與FFR進行與運算,如第13圖所示,而是指示(例如上文實例中圖示的rdffr指示)能夠简单讀取FFR並儲存結果至對應暫存器p4/p5/p6即可,該暫存器被隨後的序列指示用作述詞暫存器。
上文實例中之brkn指示具有以下格式:
BRKN Pdm.B、Pg、Pn.B、Pdm.B,
該指示控制處理電路系統執行以下操作:
如若對應於Pg中最末的(亦即最左邊、最高有效)真實/有效/非零位元的PN中述詞位元亦為真實/有效/非零,則Pdm保持不變;及
如若對應於Pg中最末的(亦即最左邊、最高有效)真實/有效/非零位元的Pn中之述詞位元為假/無效/零,則Pdm清除所有假/無效/零。
換言之:
Pdm = LastActive(Pg, Pn)  ? Pdm : 0;
(// LastActive()發現Pg中之最左邊設定位元及返回Pn中之相同位元是否為真)。
換言之,brkn指示確保如若第一負載偵測到故障,意謂著該負載之後,FFR中之最後有效元件是假,則藉由將該指示全部設定為零來將該故障傳播至第二負載的FFR結果,以此類推。brkn指示將「中斷」條件傳播至展開迴圈之下一次迭代。
一旦已到達序列末端,則任何成功完成的元件都被視作有效結果,且迴圈可包括一些指示以用於檢驗FFR 78並解析停止條件,以決定故障元件產生的故障是由於迴圈推測而產生的假故障(因此故障無需處理及迴圈可結束),還是需要藉由重複序列而處理的有效故障。如第13圖所示,FFR 78可用以針對執行序列的重複嘗試而決定新述詞(掩碼)或新位址。第13圖之左側圖示利用第一元件產生新述詞,該元件曾發生故障(第一元件在FFR 78中具有「0」位元),現成為第一有效元件(第一元件在更新掩碼中具有「1」位元)。或者,如第13圖右側所示,亦可能使用FFR 78更新負載指示之基址,以使得隨後嘗試的基址現對應於由故障元件負載的位址。總之,當重複序列時,發生故障之元件現成為第一有效元件,因此如若該元件再發生故障,則指示之第一故障類型在迴圈序列開始時將觸發回應動作。
第14圖圖示處理可遇到異常條件的向量負載指示之方法。在步驟200中,處理器決定當前指示是否為向量負載指示,如若不是,則指示以某個其他方式處理。當遇到向量負載指示時,在步驟202中,對向量之多個資料元件執行負載操作。每一元件之位址可基於起始位址而計算,該起始位址藉由使用基址暫存器及偏移量計算得出,或藉由使用基址暫存器及指數暫存器計算得出。在步驟204中,決定是否偵測到向量的任何給定資料元件發生異常條件。如若沒有,則方法返回步驟200以處理下一指示,且負載操作將成功執行。
儘管如此,如若偵測到異常條件,則在步驟206中,決定觸發故障的給定資料元件是否為向量的第一有效資料元件。如若多個元件觸發故障,則決定該等元件的第一元件是否是第一有效元件。如若故障的給定資料元件是第一有效資料元件,則在步驟208中,決定當前的向量負載指示是具有第一故障類型還是非故障類型。如若向量負載指示是指示之第一故障類型,則在步驟210中,觸發回應動作,如執行異常處理常式或記錄一些指示故障已發生的資訊。另一方面,如若指示是指示的非故障形式,則在步驟212中,禁止回應動作(亦即未執行),且在步驟214中,更新第一故障暫存器78以辨識故障的給定資料元件。如若在步驟206中,給定資料元件不是第一有效元件,則方法直接從步驟206跳至步驟212(禁止回應動作,並更新FFR 78,無論該指示是第一故障還是非故障)。
第14圖中圖示的技術可用於所有向量負載指示類型,不僅是上文論述的類型的連續負載。因此,具有不同故障行為的第一及第二類型的負載指示亦可針對收集負載指示而定義,該等指示規定位址向量,該位址向量定義目標向量中每一元件的數個離散位址,負載從每一離散位址中收集資料放入該目標向量。
第15圖圖示產生由處理電路系統處理的指示之方法,該等指示可由迴圈展開器執行,該方法可在軟體(例如編譯器)或硬體(例如同一管線內的電路系統,該電路系統將執行產生的指示)中實施。在步驟250中,接收源程式之指示。在步驟252中,迴圈展開器決定源程式是否包括每一迭代均包括第一故障向量負載指示的源迴圈,且如若沒有該種迴圈,則方法結束,並以其他某方法產生指示。然而,如若源程式包括源迴圈,則在步驟254中,迴圈展開器針對比源迴圈具有更少迭代的展開迴圈產生指示。展開迴圈的每一迭代包括第一故障向量負載指示及至少一個非故障向量負載指示。在步驟256中,迴圈展開器隨後輸出指示以用於由處理電路系統處理,源迴圈被替換為展開迴圈。
將理解,一些迴圈展開方法可結合第6圖及第15圖之技術,以使用第15圖圖示的第一/第二類型的指示,且至少第二類型之指示藉由使用立即值規定偏移量的選項。其他的迴圈展開方法可僅使用第6圖及第15圖圖示的一個或其他技術。
第16圖圖示可使用的虛擬機實施方式。儘管前文描述之實施例利用操作支援相關技術的特定處理硬體的設備及方法而實施本發明,但亦有可能提供硬體裝置的所謂虛擬機實施方式。該等虛擬機實施方式在主機處理器530上運行,該主機處理器運行主機作業系統520,該主機作業系統支援虛擬機程式510。通常,需要大型高功率處理器提供以合理速度執行的虛擬機實施方式,但該種方法在某些環境中可能合理,如在需要運行另一處理器之本端碼以獲得相容性的情況下,或出於再使用原因。虛擬機程式510向應用程式500提供應用程式介面,該介面與將由實際硬體提供的應用程式介面相同,該實際硬體是藉由虛擬機程式510模型化的裝置。由此,程式指令(包括上述對記憶體存取的控制)可藉由使用虛擬機程式510而在應用程式500內執行,以模型化指令與虛擬機硬體的交互模型。
總之,可在指示集架構中定義第一及第二類型的向量負載指示。對於第一類指示,當對以預定序列對目標向量暫存器的第一有效資料元件執行的負載操作偵測到異常條件時,觸發器回應動作,但當對除了第一有效元件之外的有效資料元件執行的負載操作偵測到異常條件時,禁止回應動作,並在此情況下,儲存元件辨識資訊,該資訊辨識被偵測到異常條件的有效資料元件。對於第二類指示,當對目標向量暫存器之任何有效元件執行的負載操作偵測到異常條件時,禁止回應動作並儲存元件辨識資訊。
此方法有助於改良效能,因為此方法允許一起使用用於改良向量化碼效能的兩個技術,亦即迴圈展開(其中迴圈之多個迭代組合為展開迴圈之單個迭代)及迴圈推測(其中可在用於決定負載操作是否應實際執行的關連條件已被解析之前執行至少一個有效資料元件的負載操作)。相比之下,利用上述形式的指示,將難以同時使用迴圈展開及迴圈推測。藉由提供除第一類之外的第二類向量負載指示,在展開迴圈中,當彼等元件在迴圈停機條件已被解析之前正在推測處理時,第二類指示可用以阻止假異常處理回應動作被元件觸發,該等元件由展開迴圈中並非第一負載指示的指示所處理。
一般而言,向量負載指示可具有指示哪一元件是有效還是無效的掩碼(或述詞)。在執行第一類或第二類指示之後,可執行至少又一個指示以基於元件辨識資訊而產生新掩碼及新位址中之至少一者,該掩碼及位址用於隨後對執行第一類向量負載指示的嘗試。如若產生新掩碼,則可隨著觸發異常條件而現為第一有效元件的給定資料元件而產生,而如若產生新位址,則新位址可對應於由觸發了異常條件的給定資料元件先前負載的位址而設定。隨後,當藉由使用新掩碼或位址重複第一類型的向量負載指示時,由於故障元件現為第一有效元件,因此如若故障仍發生,則可觸發回應動作以解析異常條件。
元件辨識資訊可以各種方式設定。例如,元件辨識資訊可僅為導致了異常條件的給定資料元件之標識符。
然而,一種有用方法是設定一元件,該元件利用對應於至少一個向量暫存器中每一元件的數個指示而辨識掩碼,正在傳輸該向量暫存器之資料。對應於偵測到發生異常條件的元件及預定序列中任何後續元件之指示可設定為第一值(例如0),且對應於序列中更早元件的指示(如若有)可設定為第二值(例如1)。以此方式定義辨識掩碼的元件是有用的,因為此方法使得辨識掩碼的元件與決定哪些元件有效的述詞(掩碼)的結合更為簡單。
一般而言,哪一元件被視為第一有效元件可根據任何任意元件序列而決定。例如,預定序列可從向量的最低有效元件延伸至最高有效元件,或反之亦然。然而,實際上向量往往趨於填充來自位於最低有效元件的最低有效址的資料,及來自位於最高位元件的最高位址的資料,且大多數程式設計者/編譯器趨於從最低位址向最高位址寫迴圈迭代。因此,當預定序列從最低有效元件延伸至最高位元件時,此往往正好以寫入向量化碼的方式映射。因此,在某些實例中,第一有效元件可為暫存器中最低有效的有效資料元件(least significant active data element)。
如上所述的第一及第二類向量負載指示可用於連續向量負載(其中對應於將負載的每一資料元件的位址是連續的)及用於非連續(收集)形式的向量負載(其中每一資料元件的位址是非連續的並由位址向量規定)。
然而,對連續類型的向量負載而言,至少第二類向量負載指示藉由使用基址暫存器及立即偏移值來規定待負載的連續位址區塊之起始位址是有用的,該立即偏移值表示為待負載連續位址區塊之大小的倍數。第一類向量負載指示亦可以此方式定義,且如若如此,則該等指示可藉由其運算碼,或藉由立即偏移值針對第一類型是否為零或針對第二類型是否非零而區分。
在其他實例中,第二類向量負載指示可將其偏移量規定為立即值,但第一類型可規定偏移量(指數)暫存器,該暫存器儲存偏移量值,該值與基址相加以形成待存取的連續位址區塊之起始位址。因此,指示之定址模式可用以區分故障行為的類型。此方法尤其對一系統十分有用,該系統提供預設對應於零值的預定零暫存器說明符,因為此允許第一類指示藉由參考指數暫存器而定義零偏移量,無需浪費通用暫存器以儲存零偏移量。
偵測到的資料元件之異常條件可為任何條件,該條件以信號發送某種異常結果或某種錯誤。然而,當異常條件包括位址轉換故障或記憶體許可故障時,第一/第二形式的指示可尤為有用。回應動作可變化,且可包含異常處理常式之觸發執行,及/或設定狀態資訊以指示所發生的異常條件。
更多實例配置在以下條款中定義:
(1) 一種設備,包括: 複數個向量暫存器,用以儲存包括複數個資料元件的向量運算元;及 處理電路系統,經配置以回應於規定基址暫存器及立即偏移值的向量資料傳輸指示而在至少一個向量暫存器的複數個資料元件與對應於連續位址區塊的資料儲存器的儲存位置之間傳輸資料; 其中,回應於向量資料傳輸指示,處理電路系統經配置以利用一值決定該連續位址區塊之起始位址,該值等同於將儲存在基址暫存器中之基址與立即偏移值及對應於該連續位址區塊大小的一乘數的乘積相加的結果。
(2) 如條款(1)所述之設備,包括儲存元件,該元件用以儲存可變控制參數,其中處理電路系統經配置以依據該可變控制參數而決定該連續位址區塊的大小。
(3) 如條款(2)所述之設備,其中,該可變控制參數規定辨識一個向量暫存器的大小的向量大小VS。
(4) 如任何前述條款所述之設備,其中處理電路系統經配置以利用一值決定乘數,該值等同於NR x NE x SS之乘積,其中: NR是該至少一個向量暫存器之向量暫存器數目,該等向量暫存器將回應於向量資料傳輸指示傳輸資料。
NE是該至少一個向量暫存器中之每一者所包含的資料元件數目,及
SS是對應於單個資料元件之位址單元的儲存單元大小。
(5) 如條款(4)所述之設備,包括儲存元件,用以儲存辨識一個向量暫存器大小的向量大小VS; 其中處理電路系統經配置以利用一值決定乘數,該值等同於NR x VS/ES x SS之乘積; 其中ES是一個資料元件之資料元件大小;及 處理電路系統經配置以基於向量資料傳輸指示之編碼而決定ES、NR及SS。
(6) 如任何前述條款所述之設備,其中立即偏移值包括一無符號整數值。
(7) 如條款(1)至(5)中任一條款所述之設備,其中立即偏移值包括一帶符號整數值。
(8) 如任何前述條款所述之設備,其中基址暫存器包括純量暫存器。
(9) 如任何前述條款所述之設備,其中回應於向量資料傳輸指示,對於該至少一個向量暫存器之每一資料元件,處理電路系統經配置以執行資料傳輸操作以用於在資料元件與對應於連續位址區塊各個部分的儲存位置之間傳輸資料。
(10) 如條款(9)所述之設備,其中當向量資料傳輸指示是向量負載指示,且對該至少一個向量暫存器之給定資料元件的資料傳輸操作中偵測到至少一個異常條件時,處理電路系統經配置以禁止至少一個用於處理該至少一個異常條件的回應動作,並儲存元件辨識資訊,該資訊辨識該至少一個向量暫存器中哪一資料元件是該給定資料元件。
(11) 如任何前述條款所述之設備,其中當向量資料傳輸指示包括向量負載指示時,處理電路系統經配置以從資料儲存器之該儲存位置將資料載入至至少一個向量暫存器之複數個資料元件,該等儲存位置對應於連續位址區塊。
(12) 如任何前述條款所述之設備,其中當向量資料傳輸指示包括向量儲存指示時,處理電路系統經配置以從至少一個向量暫存器之複數個資料元件中將資料儲存至對應於連續位址區塊的資料儲存器。
(13) 一種資料處理方法,該方法包括: 接收一向量資料傳輸指示,該指示規定基址暫存器及立即偏移值;及 回應於向量資料傳輸指示: 決定連續位址區塊之起始位址,該起始位址具有一值,該值等同於將儲存在基址暫存器中之基址與立即偏移值及對應於該連續位址區塊大小的一乘數的乘積相加的結果;及 在至少一個向量暫存器之複數個資料元件與對應於連續位址區塊的資料儲存器儲存位置之間傳輸資料。
(14) 一種設備,包括: 複數個手段,用於儲存包括複數個資料元件的向量運算元;及 傳輸手段,回應於規定基址暫存器及立即偏移值的向量資料傳輸指示而在至少一個儲存向量運算元的手段的複數個資料元件與對應於連續位址區塊的資料儲存器的儲存位置之間傳輸資料; 其中,回應於向量資料傳輸指示,該傳輸手段經配置以利用一值決定該連續位址區塊之起始位址,該值等同於將儲存在基址暫存器中之基址與立即偏移值及對應於該連續位址區塊大小的一乘數的乘積相加的結果。
(15) 一種電腦程式,用於控制電腦以提供對應於根據條款(1)至(12)中任一條款所述之設備的虛擬機執行環境。
(16)一種電腦實施方法,以用於基於源程式而生成指示,該等指示用於由處理電路系統進行處理,該方法包括: 在源程式內偵測包括複數個迭代的源迴圈,源迴圈之每一迭代包括向量資料傳輸指示以用於在至少一個向量暫存器之複數個資料元件與對應於連續位址區塊的資料儲存器儲存位置之間傳輸資料,該連續位址區塊具有被向量資料傳輸指示辨識的起始位址及給定區塊大小,其中源迴圈之給定迭代的連續位址區塊與隨後一迭代的連續位址區塊連續;及 回應於偵測到源迴圈,生成展開迴圈的指示,該迴圈包括的迭代少於源迴圈,其中展開迴圈之每一迭代對應於源迴圈之至少兩個迭代,及包括: 參考向量資料傳輸指示,規定基址暫存器以用於儲存被源迴圈之該至少兩個迭代中選定迭代的向量資料傳輸指示辨識的起始位址;及 至少又一個向量資料存取指示,該指示規定該基址暫存器及立即偏移值,該立即偏移值將儲存在基址暫存器的起始位址與該源迴圈之該至少兩個迭代中剩餘迭代之向量資料傳輸指示辨識的起始位址之間的差異規定為給定區塊大小之倍數。
(17) 一種資料處理設備,經配置以執行條款(16)之方法。
(18) 如條款(17)所述之資料處理設備,其中該資料處理設備包括該處理電路系統,該處理電路系統經配置以執行根據該方法產生的指示。
(19) 一種電腦程式,包括指示,該等指示用於控制電腦以執行條款(16)之方法。
(20)一種儲存媒體,儲存條款(19)之電腦程式。
(21) 一種電腦實施方法,以用於基於源程式而生成指示,該等指示用於由處理電路系統進行處理,該方法包括: 在源程式內偵測包括複數個迭代之源迴圈,每一迭代包括第一類向量負載指示以用於觸發處理電路系統以執行負載操作,以將資料從資料儲存器載入至至少一個向量暫存器之複數個資料元件,其中第一類向量負載指示具有編碼,該編碼指示當藉由處理電路系統對以預定序列對該至少一個向量暫存器之第一有效資料執行的負載操作偵測到異常條件時,處理電路系統將執行回應動作,且當對以該預定序列對該第一有效資料以外的有效資料執行的負載操作偵測到異常條件時,處理電路系統將禁止該回應動作,並儲存辨識被偵測到異常條件的該有效資料元件之元件辨識資訊;及 回應於偵測到源迴圈,生成展開迴圈的指示,該迴圈包括的迭代少於源迴圈,其中展開迴圈之每一迭代對應於源迴圈之至少兩個迭代,及包括: 該第一類型之向量負載指示;及 第二類型之至少一個向量負載指示,該指示具有一編碼,該編碼指示當對該至少一個向量暫存器之任何有效資料元件執行的負載操作偵測到異常條件時,處理電路系統將禁止該回應動作並儲存辨識被偵測到異常條件的該有效資料元件之該元件辨識資訊。
(22) 一種資料處理設備,經配置以執行條款(21)之方法。
(23) 如條款(22)所述之資料處理設備,其中該資料處理設備包括該處理電路系統,該處理電路系統經配置以執行根據該方法產生的指示。
(24) 一種電腦程式,包括指示,該等指示用於控制電腦以執行條款(21)之方法。
(25) 一種儲存媒體,儲存條款(24)之電腦程式。
在本申請案中,詞語「經配置以…」用以意謂著設備元件具有一配置,該配置能夠執行所定義的操作。在此上下文中,「配置」意謂著硬體或軟體的排列或互連方式。例如,設備可具有專用硬體,該硬體提供定義的操作,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以」並非暗示該設備元件為了提供所定義的操作而需要以任何方式變更。
儘管本案已引用附圖詳細描述本發明的說明性實施例,但將理解,本發明並非限定於彼等精確實施例,及熟習該項技術者在不背離本發明範疇及精神的前提下可對所附專利申請範圍所定義之本發明進行多種變更及修改。
10‧‧‧擷取電路系統 15‧‧‧指示快取記憶體 20‧‧‧解碼電路系統 25‧‧‧發出級電路系統 30‧‧‧執行管線 35‧‧‧執行管線 40‧‧‧執行管線 45‧‧‧資料快取記憶體 47‧‧‧路徑 50‧‧‧2階快取記憶體 55‧‧‧記憶體 60‧‧‧暫存器 65‧‧‧向量暫存器排 70‧‧‧述詞暫存器 75‧‧‧純量暫存器 76‧‧‧控制暫存器 78‧‧‧第一故障暫存器 79‧‧‧向量大小暫存器 80‧‧‧執行管線 100‧‧‧連續位址區塊 102‧‧‧有效元件 104‧‧‧部分 120‧‧‧基址暫存器 122‧‧‧立即偏移值 124‧‧‧運算碼 126‧‧‧目標暫存器 128‧‧‧述詞暫存器 130‧‧‧步驟 132‧‧‧步驟 134‧‧‧步驟 140‧‧‧步驟 142‧‧‧步驟 144‧‧‧步驟 146‧‧‧步驟 200‧‧‧步驟 202‧‧‧步驟 204‧‧‧步驟 206‧‧‧步驟 208‧‧‧步驟 210‧‧‧步驟 212‧‧‧步驟 214‧‧‧步驟 250‧‧‧步驟 252‧‧‧步驟 254‧‧‧步驟 256‧‧‧步驟 500‧‧‧應用程式 510‧‧‧虛擬機程式 520‧‧‧主機作業系統 530‧‧‧主機處理器 Pg‧‧‧述詞值
本技術之更多態樣、特徵及優勢將在以下實例描述中顯而易見,該等實例將結合附圖進行閱讀,其中:
第1圖示意地圖示資料處理設備實例,該資料處理設備支援向量資料傳輸指示;
第2圖圖示在至少一個向量暫存器之多個資料元件與對應於連續位址區塊之資料儲存器儲存位置之間執行資料傳輸的實例;
第3圖圖示將給定大小之資料元件映射至不同大小位址區塊的三個實例;
第4圖圖示藉由使用基址暫存器及立即偏移值來辨識待存取位址區塊之起始位址之一向量資料傳輸指示的實例,該立即偏移值規定為位址區塊大小之倍數;
第5圖圖示處理向量資料傳輸指示之方法;
第6圖圖示用於使用向量資料傳輸指示而生成將由處理電路系統處理的指示之方法;
第7圖及第8圖圖示處理第一類向量負載指示之異常條件;
第9圖圖示處理第二類向量負載指示之異常條件;
第10圖及第11圖圖示辨別第一類型與第二類型向量負載指示的兩個實例;
第12圖圖示用於記錄累積故障資訊之故障暫存器的使用,該故障資訊辨識哪一資料元件在指示序列下觸發了異常條件;
第13圖圖示兩種不同技術,該等技術用於使用故障資訊來控制對執行向量負載指示的重複嘗試,該向量負載指示被偵測到故障;
第14圖圖示處理向量負載指示之異常條件的方法;
第15圖圖示藉由使用第一類型及第二類型負載指示生成指示之方法,該等指示用於由處理電路系統處理;及
第16圖圖示虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
200:步驟
202:步驟
204:步驟
206:步驟
208:步驟
210:步驟
212:步驟
214:步驟

Claims (13)

  1. 一種資料處理設備,包括:處理電路系統,用以回應於一向量負載指示而執行負載操作,以將資料從一資料儲存器載入至至少一個向量暫存器中之複數個資料元件;其中:回應於一第一類型之向量負載指示,當對以一預定序列對該至少一個向量暫存器之一第一有效資料元件執行的該負載操作偵測到一異常條件時,該處理電路系統經配置以執行一回應動作,且當對以該預定序列對該第一有效資料元件以外的一有效資料元件執行的該負載操作偵測到該異常條件時,該處理電路系統經配置以禁止該回應動作,並儲存辨識被偵測到該異常條件的該有效資料元件之元件辨識資訊;及回應於一第二類型之向量負載指示,當對該至少一個向量暫存器之任何有效資料元件執行的該負載操作偵測到該異常條件時,該處理電路系統經配置以禁止該回應動作,並儲存辨識被偵測到該異常條件的該有效資料元件之該元件辨識資訊;其中該向量負載指示辨識一連續位址區塊,且對於該至少一個向量暫存器之每一資料元件而言,該負載操作包括將資料從對應於該連續位址區塊中各個部分的該資料儲存器中之儲存位置載入至該資料元件; 其中該第一類型之向量負載指示規定一基址暫存器及一偏移量暫存器;以及回應於該第一類型之向量負載指示,該處理電路系統經配置以利用一值決定該連續位址區塊之一起始位址,該值等同於將儲存在該基址暫存器中之一基址與基於儲存在該偏移量暫存器中之一值而決定的一偏移量值相加的一結果;以及該第二類型之向量負載指示規定一基址暫存器及一立即偏移值;以及回應於該第二類型之向量負載指示,該處理電路系統經配置以利用一值決定該連續位址區塊之該起始位址,該值等同於將儲存在該基址暫存器中之一基址與該立即偏移值及對應於該連續位址區塊大小的一乘數的一乘積相加的一結果。
  2. 如請求項1所述之設備,其中回應於該第一類型或該第二類型之該向量負載指示,該處理電路系統經配置以在一關連條件已經解析之前,對該至少一個向量暫存器之至少一個有效資料元件執行該負載操作,該關連條件用於決定是否應該對該至少一個有效資料元件執行該負載操作。
  3. 如請求項1或2所述之設備,其中該向量負載指示辨識一掩碼,該掩碼表示該至少一個向量暫存器之哪些資料元件是有效資料元件。
  4. 如請求項3所述之設備,該處理電路系統可 回應於至少又一個指示,以基於該元件辨識資訊而生成一新掩碼及一新位址中之至少一者,該掩碼及該位址用於隨後對執行該第一類型之向量負載指示中的一向量負載指示的一嘗試。
  5. 如請求項1所述之設備,其中該元件辨識資訊包括一元件辨識掩碼,該掩碼包括複數個指示,每一指示對應於該至少一個向量暫存器之該等資料元件中之一者,其中對應於偵測到該異常條件的該有效資料元件及該預定序列中任何後續有效資料元件的指示具有一第一值,且對應於該預定序列中任何比偵測到該異常條件的該有效資料元件更早的資料元件的指示具有一第二值。
  6. 如請求項1所述之設備,其中該預定序列中之該第一有效資料元件包括該至少一個向量暫存器之一最低有效的有效資料元件。
  7. 如請求項1所述之設備,其中當該第一類型之向量負載指示規定一預定暫存器為該偏移量暫存器,該處理電路系統經配置以決定該偏移量值為零。
  8. 如請求項1所述之設備,其中該第一類型之向量負載指示及該第二類型之向量負載指示兩者都規定一基址暫存器及一立即偏移值;回應於該第一類型之向量負載指示或該第二類型之 向量負載指示,該處理電路系統經配置以利用一值決定該連續位址區塊之該起始位址,該值等同於將儲存在該基址暫存器中之一基址與該立即偏移值及對應於該連續位址區塊大小的一乘數的一乘積相加的一結果;對於該第一類型之向量負載指示,該立即偏移值是零;及對於該第二類型之向量負載指示,該立即偏移值非零。
  9. 如請求項1所述之設備,其中該異常條件包括一位址轉換故障或記憶體許可故障。
  10. 如請求項1所述之設備,其中該回應動作包括觸發一異常處理常式之執行。
  11. 一種資料處理方法,該方法包括以下步驟:回應於一向量負載指示而執行負載操作,以將資料從一資料儲存器載入至至少一個向量暫存器中之複數個資料元件;當該向量負載指示為一第一類型,且對以一預定序列對該至少一個向量暫存器之一第一有效資料元件執行的該負載操作偵測到一異常條件時,執行一回應動作; 當該向量負載指示是該第一類型,且對以該預定序列對不同於該第一有效資料元件之一有效資料元件執行的該負載操作偵測到該異常條件時,禁止該回應動作並儲存辨識被偵測到該異常條件的該有效資料元件之元件辨識資訊;及當該向量負載指示是一第二類型,且對該至少一個向量暫存器之任何有效資料元件執行的該負載操作偵測到該異常條件時,禁止該回應動作並儲存辨識被偵測到該異常條件的該有效資料元件之該元件辨識資訊;其中該向量負載指示辨識一連續位址區塊,且對於該至少一個向量暫存器之每一資料元件而言,該負載操作包括將資料從對應於該連續位址區塊中各個部分的該資料儲存器中之儲存位置載入至該資料元件;其中該第一類型之向量負載指示規定一基址暫存器及一偏移量暫存器;以及回應於該第一類型之向量負載指示,利用一值決定該連續位址區塊之一起始位址,該值等同於將儲存在該基址暫存器中之一基址與基於儲存在該偏移量暫存器中之一值而決定的一偏移量值相加的一結果;以及該第二類型之向量負載指示規定一基址暫存器及一立即偏移值,以及回應於該第二類型之向量負載指示, 利用一值決定該連續位址區塊之該起始位址,該值等同於將儲存在該基址暫存器中之一基址與該立即偏移值及對應於該連續位址區塊大小的一乘數的一乘積相加的一結果。
  12. 一種資料處理設備,包括:用於回應於一向量負載指示而執行負載操作的手段,以將資料從一資料儲存器載入至至少一個向量暫存器中之複數個資料元件;其中:回應於一第一類型之向量負載指示,當對以一預定序列對該至少一個向量暫存器之一第一有效資料元件執行的該負載操作偵測到一異常條件時,該執行手段經配置以執行一回應動作,且當對以該預定序列對該第一有效資料元件以外的一有效資料元件執行的該負載操作偵測到該異常條件時,該執行手段經配置以禁止該回應動作,並儲存辨識被偵測到該異常條件的該有效資料元件之元件辨識資訊;及回應於一第二類型之向量負載指示,當對該至少一個向量暫存器之任何有效資料元件執行的該負載操作偵測到該異常條件時,該執行手段經配置以禁止該回應動作,並儲存辨識被偵測到出現該異常條件的該有效資料元件之該元件辨識資訊;其中該向量負載指示辨識一連續位址區塊,且對於 該至少一個向量暫存器之每一資料元件而言,該負載操作包括將資料從對應於該連續位址區塊中各個部分的該資料儲存器中之儲存位置載入至該資料元件;其中該第一類型之向量負載指示規定一基址暫存器及一偏移量暫存器;以及回應於該第一類型之向量負載指示,該執行手段經配置以利用一值決定該連續位址區塊之一起始位址,該值等同於將儲存在該基址暫存器中之一基址與基於儲存在該偏移量暫存器中之一值而決定的一偏移量值相加的一結果;以及該第二類型之向量負載指示規定一基址暫存器及一立即偏移值;以及回應於該第二類型之向量負載指示,該執行手段經配置以利用一值決定該連續位址區塊之該起始位址,該值等同於將儲存在該基址暫存器中之一基址與該立即偏移值及對應於該連續位址區塊大小的一乘數的一乘積相加的一結果。
  13. 一種電腦程式,用於控制一電腦以提供對應於根據請求項1至10中任一項之該設備的一虛擬機執行環境。
TW105132164A 2015-10-14 2016-10-05 用於向量負載指示之資料處理設備、方法及電腦程式 TWI740851B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1518154.8 2015-10-14
GB1518154.8A GB2543302B (en) 2015-10-14 2015-10-14 Vector load instruction

Publications (2)

Publication Number Publication Date
TW201716988A TW201716988A (zh) 2017-05-16
TWI740851B true TWI740851B (zh) 2021-10-01

Family

ID=55131010

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105132164A TWI740851B (zh) 2015-10-14 2016-10-05 用於向量負載指示之資料處理設備、方法及電腦程式

Country Status (9)

Country Link
US (1) US10564968B2 (zh)
EP (1) EP3362908A1 (zh)
JP (1) JP6908601B2 (zh)
KR (1) KR20180067582A (zh)
CN (1) CN108140011B (zh)
GB (1) GB2543302B (zh)
IL (1) IL257899B (zh)
TW (1) TWI740851B (zh)
WO (1) WO2017064452A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108959180B (zh) * 2018-06-15 2022-04-22 北京探境科技有限公司 一种数据处理方法及系统
GB2578135B (en) * 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
CN114428638A (zh) * 2020-10-29 2022-05-03 平头哥(上海)半导体技术有限公司 指令发射单元、指令执行单元、相关装置和方法
US11714644B2 (en) * 2021-08-27 2023-08-01 Arm Limited Predicated vector load micro-operation for performing a complete vector load when issued before a predicate operation is available and a predetermined condition is unsatisfied
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN117891509A (zh) * 2024-03-18 2024-04-16 芯来智融半导体科技(上海)有限公司 数据访存方法、装置、计算机设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087846A1 (en) * 2000-11-06 2002-07-04 Nickolls John R. Reconfigurable processing system and method
US20100325483A1 (en) * 2008-08-15 2010-12-23 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
TW201333687A (zh) * 2011-12-23 2013-08-16 Intel Corp 用於以推測支援來執行向量化的裝置及方法
TW201337769A (zh) * 2004-03-31 2013-09-16 Coware Inc 用於管理多核心架構之資源的方法和設備
TW201419145A (zh) * 2009-08-07 2014-05-16 Via Tech Inc 微處理器以及預取資料至微處理器的方法
US20140195775A1 (en) * 2011-09-26 2014-07-10 Intel Corporation Instruction and logic to provide vector loads and stores with strides and masking functionality
US20140244987A1 (en) * 2013-02-22 2014-08-28 Mips Technologies, Inc. Precision Exception Signaling for Multiple Data Architecture
US20150261590A1 (en) * 2014-03-15 2015-09-17 Zeev Sperber Conditional memory fault assist suppression

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725362B2 (en) * 2001-02-06 2004-04-20 Intel Corporation Method for encoding an instruction set with a load with conditional fault instruction
US8291202B2 (en) * 2008-08-08 2012-10-16 Qualcomm Incorporated Apparatus and methods for speculative interrupt vector prefetching
US8458684B2 (en) * 2009-08-19 2013-06-04 International Business Machines Corporation Insertion of operation-and-indicate instructions for optimized SIMD code
US8904153B2 (en) * 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
US8756591B2 (en) * 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
GB2522990B (en) * 2013-12-20 2016-08-03 Imagination Tech Ltd Processor with virtualized instruction set architecture and methods
GB2543303B (en) * 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087846A1 (en) * 2000-11-06 2002-07-04 Nickolls John R. Reconfigurable processing system and method
TW201337769A (zh) * 2004-03-31 2013-09-16 Coware Inc 用於管理多核心架構之資源的方法和設備
US20100325483A1 (en) * 2008-08-15 2010-12-23 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
TW201419145A (zh) * 2009-08-07 2014-05-16 Via Tech Inc 微處理器以及預取資料至微處理器的方法
US20140195775A1 (en) * 2011-09-26 2014-07-10 Intel Corporation Instruction and logic to provide vector loads and stores with strides and masking functionality
TW201333687A (zh) * 2011-12-23 2013-08-16 Intel Corp 用於以推測支援來執行向量化的裝置及方法
US20140244987A1 (en) * 2013-02-22 2014-08-28 Mips Technologies, Inc. Precision Exception Signaling for Multiple Data Architecture
US20150261590A1 (en) * 2014-03-15 2015-09-17 Zeev Sperber Conditional memory fault assist suppression

Also Published As

Publication number Publication date
GB2543302B (en) 2018-03-21
EP3362908A1 (en) 2018-08-22
CN108140011B (zh) 2022-04-22
KR20180067582A (ko) 2018-06-20
WO2017064452A1 (en) 2017-04-20
JP6908601B2 (ja) 2021-07-28
GB201518154D0 (en) 2015-11-25
GB2543302A (en) 2017-04-19
US10564968B2 (en) 2020-02-18
IL257899B (en) 2020-08-31
IL257899A (en) 2018-05-31
US20180253310A1 (en) 2018-09-06
CN108140011A (zh) 2018-06-08
TW201716988A (zh) 2017-05-16
JP2018534672A (ja) 2018-11-22

Similar Documents

Publication Publication Date Title
TWI713594B (zh) 向量資料轉換指令
TWI740851B (zh) 用於向量負載指示之資料處理設備、方法及電腦程式
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
KR101511837B1 (ko) 벡터 분할 루프들의 성능 향상
KR101417597B1 (ko) 제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제
KR101851439B1 (ko) 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들
JP6942298B2 (ja) ベクトル演算命令の例外条件処理
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
TWI728068B (zh) 複數乘法指令
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
JP5326314B2 (ja) プロセサおよび情報処理装置
JP2017513087A (ja) 連続ソースエレメントを複数のマスクされていない結果エレメントにストアすると共に、複数のマスクされた結果エレメントに伝搬するプロセッサ、方法、システム、及び命令
CN110073332B (zh) 数据处理装置和方法
Al-Kuwari Engineering Aspects of Hash Functions