TWI756212B - 處理向量指令 - Google Patents

處理向量指令 Download PDF

Info

Publication number
TWI756212B
TWI756212B TW106109458A TW106109458A TWI756212B TW I756212 B TWI756212 B TW I756212B TW 106109458 A TW106109458 A TW 106109458A TW 106109458 A TW106109458 A TW 106109458A TW I756212 B TWI756212 B TW I756212B
Authority
TW
Taiwan
Prior art keywords
vector
processing
instruction
instructions
beat
Prior art date
Application number
TW106109458A
Other languages
English (en)
Other versions
TW201734769A (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 TW201734769A publication Critical patent/TW201734769A/zh
Application granted granted Critical
Publication of TWI756212B publication Critical patent/TWI756212B/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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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)

Abstract

處理電路系統4回應於向量指令而執行多個處理差拍,每一差拍包含對應於包括多個資料元件之向量值之一部分的處理。處理電路系統4設定差拍狀態資訊22,該狀態資訊指示兩個或兩個以上向量指令群組中之哪些差拍已完成。回應於指示返回至給定向量指令之處理的從事件返回請求,處理電路系統4基於差拍狀態資訊22繼續處理未完成向量指令之群組,同時抑制已完成之差拍。

Description

處理向量指令
本技術係關於資料處理領域。更特定而言,本技術係關於向量指令的處理。
一些資料處理系統支援向量指令處理,用於該等向量指令之指令源運算元或結果值爲包括多個資料元件的向量。藉由回應於單個指令而支援數個不同資料元件的處理,可改良碼密度且降低指令擷取及解碼的負擔。待處理的資料值陣列可藉由以下方式更高效地處理:將資料值載入向量運算元的各個元件,及使用單個向量指令每次處理若干元件之資料值。
至少一些實例提供一種設備,該設備包括:
處理電路系統,用以處理向量指令,該等向量指令之源運算元及結果值中之至少一者是包括複數個資料元件的向量值;
其中,回應於一給定向量指令,該處理電路系統經配置以執行複數個處理差拍,每一差拍包括對應於向量值之一部分之處理;
處理電路系統經配置以設定差拍狀態資訊,該資訊可指示包括該給定向量指令之複數個向量指令中之哪些差拍已完成;及
回應於一事件,處理電路系統經配置以暫停該給定向量指令之處理;及
回應於一從事件返回請求,該請求指示返回至該給定向量指令之處理,該處理電路系統經配置以繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示爲已完成的該複數個向量指令之差拍;
其中向量值包括資料元件,該等資料元件具有資料元件大小資訊所規定的複數個資料元件大小之一者,處理電路系統可存取該資料元件大小資訊;及
每一處理差拍包括對應於向量值的一固定大小部分的處理,無論該資料元件大小資訊指示何種資料元件大小。
至少一些實例提供一種設備,該設備包括:
用於處理向量指令之構件,用於該等指令的源運算元及結果值中之至少一者是包括複數個資料元件之向量值;
其中,回應於一給定向量指令,該用於處理之構件經配置以執行複數個處理差拍,每一差拍包括對應於向量值之一部分之處理;
該用於處理之構件經配置以設定差拍狀態資訊,該資訊可指示包括該給定向量指令的複數個向量指令之哪些差拍已完成;及
回應於一事件,該用於處理之構件經配置以暫停該給定向量指令之處理;及
回應於一從事件返回請求,該請求指示返回至該給定向量指令之處理,該用於處理之構件經配置以繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示爲已完成的該複數個向量指令之差拍;
其中該向量值包括資料元件,該等資料元件具有由資料元件大小資訊規定的複數個資料元件大小中之一者,該用於處理之構件可存取該資料元件大小資訊;及
每一處理差拍包括對應於向量值的一固定大小部分的處理,無論該資料元件大小資訊指示何種資料元件大小。
至少一些實例提供一種處理向量指令之方法,用於該等向量指令的源運算元及結果值中之至少一者是包括複數個資料元件之向量值;該方法包括:
回應於一給定向量指令,執行複數個處理差拍,每一差拍包括對應於向量值之一部分之處理;
設定差拍狀態資訊,該狀態資訊可指示包括該給定向量指令的複數個向量指令之哪些差拍已完成;及
回應於一事件,暫停該給定向量指令之處理;及
回應於一從事件返回請求,該請求指示返回至該給定向量指令之處理,繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示爲已完成的該複數個向量指令之差拍;
其中該向量值包括資料元件,該等資料元件具有由資料元件大小資訊規定之複數個資料元件大小中之一者;及
每一處理差拍包括對應於向量值的一固定大小部分之處理,無論該資料元件大小資訊指示何種資料元件大小。
至少一些實例提供一種虛擬機電腦程式,該電腦程式包括程式指令,該等指令用以控制主機資料處理設備以提供對應於上文論述之設備之指令執行環境。
亦可提供儲存虛擬機電腦程式的電腦可讀取儲存媒體。該儲存媒體可爲非暫時性儲存媒體。
一些特殊的實例將如下所述。將理解,本技術不限於該等確切的實例。
依據給定指令集架構所寫之軟體可在眾多具有不同硬體實施方式的不同資料處理設備上執行。只要給定指令集在執行時給出架構預期之結果,則特定實施方式可以任何方式隨意改變其微型架構設計,如此實現此架構之順應性。例如,對於一些應用程式而言,能量效率可比效能更爲重要,因此提供用於執行來自指令集架構之指令的處理電路系統之微型架構設計可經設計以消耗盡量少的能量,即使會以效能爲代價亦如此。其他應用程式可視效能爲比能量效率更重要的準則,因此可包括更複雜的硬體結構,該等硬體結構賦能更大的指令通量,但可能消耗更多功率。因此,設計指令集架構以便支援各種不同能量或效能點的按比例縮放是合乎需要的。
一些指令集架構支援用於觸發處理電路系統以執行處理之向量指令,用於該處理的源運算元或結果值(或兩者)是包括多個資料元件之向量。一些微型架構實施方式可並行處理一向量的全部元件,而其他實施方式可每次處理該向量的一部分。
在給定指令執行執行緒的處理期間,有時可偵測到某一事件,該事件觸發當前執行緒的給定向量指令的暫停,以使得處理電路系統可執行其他類型處理。例如,事件可爲調試事件,該調試事件觸發切換至調試狀態,在此狀態中,外部調試程式可檢查處理電路系統之操作(或藉由注入將由處理電路系統執行的調試指令以讀出諸如暫存器狀態之內部資源,或藉由從外部調試程式直接存取處理電路系統之內部資源),或指示一錯誤、故障或外部事件之異常事件已發生。一些此類事件可爲效能關鍵的,因爲儘快回應事件可能很重要。事件處理之後,從事件返回請求(例如異常返回或從調試狀態返回)可隨後觸發返回到事件發生前正在執行的處理。
本申請案中所述之處理電路系統經配置以藉由執行數個處理差拍來處理向量指令,其中每一差拍包括對應於向量值之一部分的處理。處理電路系統經配置以設定差拍狀態資訊,該狀態資訊指示兩個或兩個以上向量指令群組中哪些差拍已完成。回應於一從事件返回請求,該請求指示返回至給定向量指令之處理,該處理電路系統使用差拍狀態資訊以決定哪些差拍已完成,及抑制由該差拍狀態資訊指示爲已完成的兩個或兩個以上指令的群組之差拍。給定向量指令的給定差拍可被抑制,例如藉由完全不執行關連於該差拍的處理操作,或藉由掩蔽該處理操作結果對暫存器或其他儲存位置之寫入。
該配置賦能處理架構,該架構支援向量指令更高效地按比例縮放至不同的效能及能量點。藉由提供在兩個或兩個以上向量指令中追蹤已完成差拍的差拍狀態資訊,此向特定的微型架構實施方式給予自由以改變不同向量指令的執行重疊之量,以便有可能同時相互執行不同向量指令的各個差拍,同時仍追蹤每一部分執行指令的進程。一些微型架構實施方式可選擇完全不重疊各個向量指令的執行,以使得一個向量指令中之所有差拍都在下一指令開始之前完成。其他微型架構可交疊連續向量指令的執行,以使得第二向量指令的第一差拍子集與來自第一向量指令的第二差拍子集並行執行。
無論給定硬體實施方式選擇何種特定方式來實施向量指令的執行,藉由定義差拍狀態資訊,便可能更快回應於暫停指令執行執行緒的事件,因爲並非必須等待給定向量指令以在暫停執行緒之前完成該指令之全部差拍,因爲差拍狀態資訊賦能部分完成的指令以在事件處理之後繼續。此行爲亦可對處理係明確故障的異常十分重要,因爲就架構而言,指令無法完成其執行。因為在異常之後繼續處理時,異常回應潛時往往可比減少潛時更重要,因此此方法亦可針對異常處理提供優勢。
相比之下,僅記錄關於單個指令進程之資訊,或假定指令群組中之特定差拍組合將在執行執行緒暫停點已完成的方法將向微型架構硬體設計者提供用以按比例縮放不同向量指令重疊量的更小靈活性。另一替換方法將是將部分執行指令中之已完成差拍的結果儲存爲推測狀態,該狀態直至整個指令完成後才確定,但此將需要額外儲存裝置及控制不合乎低功率實施方式需要的負擔。藉由提供指示多個向量指令中哪些特定差拍已完成的差拍狀態資訊,及使用此以在適當的點處繼續處理,指令集架構可更具靈活性,有助於改良各種不同微型架構的效能及能量效率,而無需管理推測狀態。
第1圖示意地圖示資料處理設備2之實例,該資料處理設備支援向量指令處理。將理解,此圖是便於說明之簡圖,實際上該設備可具有眾多元件,爲簡明起見,第1圖中未圖示該等元件。設備2包括用於回應於由指令解碼器6解碼的指令而執行資料處理之處理電路系統4。程式指令擷取自記憶體系統8及藉由指令解碼程式解碼以生成控制信號,該等控制信號控制處理電路系統4以按架構定義的方式處理指令。例如,解碼器6可解譯已解碼指令的運算碼及指令的任何額外控制欄位以生成控制信號,該等控制信號使得處理電路系統4啟動適當的硬體單元以執行諸如算術運算、載入/儲存操作或邏輯運算之操作。設備具有一組暫存器10以用於儲存將由處理電路系統4處理的資料值及用於配置處理電路系統之操作之控制資訊。回應於算法或邏輯指令,處理電路系統4從暫存器10讀取運算元且將指令結果寫入回暫存器10。回應於載入/儲存指令,資料值在暫存器10與記憶體系統8之間經由處理電路系統而轉移。記憶體系統8可包括一或更多階快取記憶體以及主記憶體。
暫存器10包括純量暫存器檔案12,該檔案包括數個純量暫存器以用於儲存包含單個資料元件的純量值。指令解碼器6與處理電路系統4支援的一些指令為純量指令,該等純量指令處理從純量暫存器12讀取的純量運算元以生成純量結果,該結果被寫入回純量暫存器。
暫存器10亦包括向量暫存器檔案14,該檔案包括數個向量暫存器,每一暫存器用於儲存包括多個資料元件的向量值。回應於向量指令,指令解碼器6控制處理電路系統4以對讀取自向量暫存器14中之一者的各個向量運算元元件執行數個向量處理路徑,以生成將被寫入純量暫存器12的純量結果或將被寫入向量暫存器14的進一步向量結果。一些向量指令可利用一或更多個純量運算元生成向量結果,或可對純量暫存器檔案中之純量運算元執行額外的純量運算以及對讀取自向量暫存器檔案14的向量運算元執行向量處理路徑。因此,一些指令可爲純量-向量混合指令,該等指令的一或更多個源暫存器及指令目的暫存器中之至少一者是向量暫存器14,且一或更多個源暫存器與目的暫存器中之另一者是純量暫存器12。向量指令亦可包括向量載入/儲存指令,該等指令使得資料值在向量暫存器14與記憶體系統8中之位置之間轉移。載入/儲存指令可包括連續的向量載入/儲存指令,該等指令在記憶體中的位置對應於連續的位址範圍,或可包括分散/聚集類型的向量載入/儲存指令,該等指令規定數個離散位址且控制處理電路系統4以從彼等位址中之每一位址將資料載入向量暫存器的各個元件,或將來自向量暫存器之各個元件的資料儲存到離散位址。
處理電路系統4可支援各種不同資料元件大小的向量的處理。例如,128位元向量暫存器14可被分割為例如十六個8位元資料元件、八個16位元資料元件、四個32位元資料元件或兩個64位元資料元件。暫存器組10內之控制暫存器可規定當前正在使用的資料元件大小,或替代地此可爲待執行的給定向量指令之參數。
暫存器10亦包括數個控制暫存器,該等暫存器用於控制處理電路系統4的處理。例如,該等暫存器可包括程式計數暫存器16、鏈路暫存器18、堆疊指標暫存器20,及差拍狀態暫存器22;程式計數暫存器16用於儲存程式計數器位址,該位址指示對應於正在處理之當前執行點的指令的位址;鏈路暫存器18用於儲存返回位址,在處理函數調用之後,處理將被導向該返回位址;堆疊指標暫存器20指示在堆疊資料結構之記憶體系統8內的位置;及差拍狀態暫存器22用於儲存差拍狀態資訊,該狀態資訊將在下文中更詳細地描述。將理解,該等類型僅爲可儲存之控制資訊的一些類型,而實際上,給定架構指令集可儲存如由架構所定義之眾多其他的控制參數。例如,控制暫存器可規定向量暫存器之全寬,或正在用於給定向量處理實例中之當前資料元件大小。
處理電路系統4可包括數個不同硬體區塊以用於處理不同指令類別。例如,如第13圖中所示,與記憶體系統8交互的載入/儲存指令可藉由專用載入/儲存單元200而處理,而算術或邏輯指令可藉由算術邏輯單元(arithmetic logic unit; ALU) 202、204而處理。算術邏輯單元自身可進一步分割爲:乘法累積單元(multiply accumulate unit; MAC) 202,用於在涉及乘法的操作中執行;及又一單元204,用於處理其他種類的算術邏輯單元運算。亦可提供浮點單元206以用於處理浮點指令。與向量指令相比,不涉及任何向量處理的純的純量指令亦可藉由單獨的硬體區塊處理,或重新使用相同的硬體區塊。
在諸如數位信號處理(digital signal processing; DSP)之一些應用程式中,可能有大約相等數目的算術邏輯單元及載入/儲存指令,及因此諸如乘法累積單元之大型區塊可閑置達顯著時長。在執行資源隨著向量路徑數目按比例縮放以獲取更高效能時,此低效率可能在向量架構上情況加劇。在更小處理器上(例如單次發出,依序核心),可能禁止完全超過尺寸範圍的向量管線的面積負擔。使面積影響最小化,同時使可用執行資源的利用率更佳的一個方法是重疊執行指令,如第2圖所示。在此實例中,三個向量指令包括一負載指示VLDR、一乘法指令VMUL及一移位指令VSHR,該等指令全部可同時執行,即使該等指令之間有資料相依性。此是因爲VMUL的元件1僅取決於Q1之元件1,而非整個Q1暫存器,因此VMUL的執行可在VLDR的執行已結束之前開始。藉由允許指令重疊,如乘法器之高成本區塊可保持有效更長時間。
因此,可能需要賦能微型架構實施方式以重疊向量指令的執行。然而,如若架構假定有固定指令重疊量,則儘管此可在微型架構實施方式實際匹配架構假定的指令重疊量時提供高效率,但可在按比例縮放至不同微型架構時導致問題,該等微型架構使用不同的重疊或完全不重疊。
相反,架構可支援各種不同的重疊,如第3圖的實例所示。向量指令的執行被分成被稱作「差拍」之部分,每一差拍對應於向量中具有預定大小之一部分的處理。差拍是向量指令之原子部分,該部分得以完全執行或完全不執行,且無法部分執行。向量中在一個差拍中處理的部分的大小由架構定義,且可爲向量之任意部分。在第3圖之實例中,差拍定義爲對應於向量寬度四分之一的處理,以使得每一向量指令有四個差拍。顯然,此僅爲一實例,且其他架構可使用不同的差拍數目,例如兩個或八個。向量中對應於一個差拍的部分可爲相同大小,其大於或小於正在處理的向量之資料元件大小。因此,即使元件大小根據不同實施方式而不同,或在運行時於不同指令之間不同,但差拍是向量處理的某一固定寬度。如若在一個差拍中正在處理的向量中之部分包括多個資料元件,則進位信號可在各個元件之間的邊界處去能,以確保每一元件獨立處理。如若向量中在一個差拍中處理之部分僅對應於一元件的部分,且硬體不足以並行計算數個差拍,則在一個處理差拍期間生成的進位輸出可作爲進位輸入而輸入隨後的處理差拍,以使得該兩個差拍的結果共同形成資料元件。
如第3圖中所示,處理電路4之不同的微型架構實施方式可在抽象架構時鐘的一次「嘀嗒」中執行不同數目個差拍。此時,一次「嘀嗒」對應於架構狀態前進單元(例如對於簡單架構,每一次嘀嗒可對應於對關連於執行指令之全部架構狀態的更新實例,包括更新程式計數器以指向下一指令)。熟習該項技術者將理解,諸如管線之已知微型結構技術可意謂單次嘀嗒可需要多個時鐘週期以在硬體級別執行,而實際上硬體級別的單個時鐘週期可處理多個指令的多個部分。然而,該種微型架構技術卻無法用於軟體,因爲嘀嗒在架構級別是原子級的。爲簡明起見,本揭示案之進一步描述中忽略該種微型架構。
如第3圖的下方實例中所示,一些實施方式可藉由提供充足的硬體資源以用於在一次嘀嗒內並行處理所有差拍,而將向量指令的四個差拍全部排程在同一次嘀嗒中。此可適用於更高效能的實施方式。在此情況下,在架構級別的指令之間不需要任何重疊,因爲整個指令可在一次嘀嗒中完成。
另一方面,面積效率更高的實施方式可提供更窄的處理單元,該等單元每次嘀嗒僅可處理兩個差拍,且如第3圖的中間實例中所示,指令執行可與第二向量指令的第一及第二差拍重疊,該第一及第二差拍與第一指令的第三或第四差拍並行執行,在此情況下,彼等指令在處理電路系統內的不同執行單元上執行(例如,在第3圖中,第一指令是藉由使用載入/儲存單元200執行的載入指令,而第二指令是藉由使用乘法累積單元202執行的乘法累積指令)。
又一更具能量效率/面積效率的實施方式可提供硬體單元,該等硬體單元更窄,且每次僅能處理一個差拍,而在此情況下,每一次嘀嗒可處理一個差拍,指令執行藉由一個差拍而重疊及交疊,如第3圖的頂部實例所示(在上文第2圖中圖示的實例亦是如此)。
將理解,第3圖中圖示的重疊僅爲一些實例,其他實施方式亦有可能。例如,處理電路系統4之一些實施方式可支援在同一嘀嗒中同時雙重發出多個指令,以使得有更大的指令通量。在此情況下,在一個循環中共同開始的兩個或兩個以上向量指令可具有與在下一循環中開始的兩個或兩個以上向量指令重疊之一些差拍。
改變不同實施方式的重疊量以按比例縮放至不同的效能點亦是如此,向量指令之間的重疊量亦可在運行時於程式內的不同向量指令執行實例之間變化。因此,處理電路系統4可配備差拍控制電路系統30,如第1圖所示,以用於控制相對於先前指令而執行給定指令的時序。此給予微型架構選擇在某些更難以實施或取決於指令可用資源的拐角情況下不重疊指令的自由。例如,如若有需要相同資源之給定類型的背對背指令(例如乘法累積),且所有可用的乘法累積單元或算術邏輯單元資源皆正在被另一指令使用,則可能沒有充足的空閑資源以開始執行下一指令,且因此,第二指令可等待直到第一指令已完成時才發出,而不是重疊。
如第4圖中所示,如若有介入純量指令,則亦可阻止兩個向量指令之間的重疊。此因爲純量指令可取決於向量指令之上次差拍的結果,而第二向量指令可取決於其全部差拍之純量結果,因此避免向量指令與純量指令重疊可爲更安全的。
當如上文論述允許重疊時,則可能有多個指令同時執行。程式計數器16可追蹤最早未完成指令的位址,該指令具有仍有待完成之至少一個差拍。當向量指令完成其最終差拍時,程式計數器可遞增。
儘管允許執行向量指令的各種不同重疊可允許更有效地在眾多效能點處使用硬體資源,但此可導致異常或調試事件或其他觸發當前執行緒之執行暫停的事件之處理的某些複雜性。例如,在第2圖中圖示的實例中,如若在第四嘀嗒時發生異常,則暫存器檔案將含有來自數個指令的部分更新。處理此情況之一個方式是以推測狀態處理部分更新,如若發生異常,則該等狀態可復原,但此可能增大所需硬體數量,因爲可能必須緩衝儲存請求以用於將資料向外儲存至記憶體系統8,直至該等要求得到確定且在硬體中提供額外暫存器以用於追蹤該推測狀態。另一方法將是完全去能在向量指令期間部分地發生的異常,並延遲異常的發生直至最早的未完成指令已完成爲止,但增加異常處理潛時可能是不合需要的,且在異常是明確故障的情況下,該種行爲可能中斷關連於該故障之架構擔保。
反之,如第5圖所示,差拍狀態暫存器22可用以記錄差拍狀態值,該值追蹤相鄰指令群組中在導致當前執行緒暫停的異常、調試事件或其他事件時有哪些差拍已完成。藉由向架構曝露執行的重疊性質,此可有助於減少微型架構複雜性且增大功率及面積效率。
在第5圖的實例中,差拍狀態資訊追蹤三個向量指令A、B、C群組中的經完成差拍,其中指令A對應於最早的未完成向量指令,指令B是在指令A之後的下一向量指令,且指令C是指令B之後的下一向量指令。注釋Ax代表指令A中第x個差拍,其中在4差拍向量實施方式中x處於1與4之間,例如A2是指令A之第二差拍。儘管第5圖圖示藉由使用差拍狀態資訊追蹤三個指令的實例,但在允許在給定點處部分地完成更大數目的指令的其他實例中,差拍狀態資訊可能追蹤更大數目的指令。例如,如若支援二重發出,則可能需要爲三個以上指令指示差拍進程。每一差拍狀態欄位值經分配至給定的已完成差拍組合。例如,差拍狀態值0011指示指令A的第一及第二差拍且指令B的第一差拍完成。差拍狀態資訊的特定編碼值向各個指令群組的特定差拍集的特定映射是任意的,且可能不同。在此實例中,差拍狀態值0000指示沒有未完成指令,因此沒有未完成指令的已完成差拍。此可能發生在例如當處理器已執行純量指令時。
第6圖圖示在當前執行緒執行出現暫停之時記錄的差拍狀態資訊之一些實例。在第6圖的頂部實例中,向量指令利用每次嘀嗒一個差拍而執行,且在第四嘀嗒時出現調試事件或異常。因此,此時,指令A之前三個差拍、指令B之前兩個差拍,且指令C之第一差拍已完成,但差拍A4、B3、C2、D1仍有待執行。因此,差拍狀態資訊將具有值0111,根據第5圖中之實例,此值指示差拍A1、A2、A3、B1、B2及C1已完成。
同樣,在第6圖的實例底部中,正在執行的指令使得指令B及C不能重疊(例如因爲該等指令需要使用同一硬體單元),因此此次指令C及D在調試事件或異常之時未曾開始。此時,在第四嘀嗒時發生的異常將觸發差拍狀態資訊0110的記錄,該狀態資訊指示差拍A1、A2、A3、B1及B2已完成,但C1未完成。
同樣,在第3圖之每次嘀嗒兩個差拍的實例中,如若嘀嗒2發生異常,則僅差拍A1及A2將完成,且差拍狀態值將為0010。應注意,儘管差拍狀態資訊的值0001及0010指示在發生異常時僅一個指令A部分地完成,但差拍狀態資訊仍指示多個指令群組中哪些差拍已完成,因爲該狀態資訊辨識接下來兩個指令B、C中無差拍完成。
在第3圖的每一嘀嗒四個差拍的實例中,無論異常何時發生,差拍狀態值將爲0000,因爲在異常發生時沒有部分完成的指令,因爲每一指令都在一次嘀嗒內完成。
當調試事件或異常出現時,返回位址設定爲程式計數器16的當前值,該值表示最早的未完成指令的位址。因此在第6圖的實例中,返回位址將設定爲指令A位址。返回位址可儲存在多種位置,包括在堆疊上相對於堆疊指標暫存器之值的位置,或在返回位址暫存器中。
如第7圖所示,此賦能處理器回應於從事件返回請求(例如對從調試模式或異常處理程式返回的請求)而從一點處繼續處理,該點基於差拍狀態暫存器22中之返回位址及差拍狀態資訊而決定。從事件返回請求可由調試程式在調試事件情況下而進行,或藉由異常處理程式在異常事件情況下產生。在從事件返回請求之後,待處理的指令擷取會從返回位址指示的位址處繼續,該位址在此情況下對應於指令A。隨後是指令B、C及D(此實例對應於第6圖的頂部實例)。然而,對於返回之後的前幾個循環而言,被差拍狀態資訊指示爲已完成的任何差拍均被抑制。處理器可藉由完全阻止對應處理操作被執行來抑制該等差拍(例如抑制載入或儲存資料的請求,或去能算術邏輯單元或乘法累積單元)。或者,操作仍能在算術邏輯單元操作的情況下執行,但處理器可抑制操作結果的寫入(亦即抑制目的向量暫存器之一部分的更新),以使得該寫入不影響暫存器狀態。抑制給定差拍的另一方法將設定爲目的向量暫存器中對應於給定差拍的一部分的預定值(例如零)。一旦達到第四嘀嗒,則管線已到達先前出現調試事件或異常之點處,隨後,處理照常繼續。因此,對於異常返回之後的前幾個循環而言,處理器可能不執行任何有效功,且基本上僅在原始的異常或調試事件出現時重新擷取飛行中之多個指令。然而,由於異常返回潛時對一些應用程式而言往往並不關鍵,因此縮短處理異常時之潛時可能是較佳折衷,且此亦有助於減少需要儲存在異常上之架構狀態的量,因爲並非必須推測性儲存未完成指令的結果。此方法亦賦能異常之處理,該等異常即爲由向量指令差拍而產生的精確故障。
在一些情況下,指示多個指令群組中已完成差拍的差拍狀態資訊可設定爲回應於發生的調試事件或異常。然而,在一些實施方式中,可能更易於每次完成指令便更新差拍狀態暫存器,無論是否發生異常,以使得如若在下一嘀嗒中發生異常,則差拍狀態暫存器22已指示指令群組中已完成的差拍。因此,第8圖是一流程圖,該圖圖示當向量指令完成時更新狀態的方法。在步驟50處,給定向量指令的最終差拍完成。作爲回應,在步驟52處,程式計數器16更新至可指示下一未完成指令的值。在步驟54處,差拍狀態資訊更新以指示任何飛行中的未完成指令中之哪些差拍已完成。例如,差拍控制電路系統30可基於其排程一系列向量指令之執行的時序而設定差拍狀態暫存器22。
儘管第5圖圖示差拍狀態資訊的一個示例性編碼,但另一可能性是提供差拍狀態資訊以用作包括數個位元之位元映像,該等位元中每一者對應於指令A、指令B、指令C等群組中之一個指令的一個差拍,每一位元在對應差拍已完成時被設定為一,且在對應差拍未完成時被設定為零(或反之亦然)。然而,實際上因爲當給定指令的前一差拍未完成時後一差拍不可能完成,因此無需爲每一差拍提供位元,且將更小位元欄位的某些編碼分配至已完成差拍的特定組合可能更爲有效,如第5圖中之實例所示。
第9圖圖示一流程圖,該圖圖示回應於一異常事件的實例。在步驟100處,偵測到異常事件。作爲回應,在步驟102處,處理電路系統內之異常控制電路系統觸發將暫存器狀態(包括純量暫存器12及向量暫存器14,及差拍狀態暫存器22的當前內容)保存至記憶體中相對於儲存在堆疊指標暫存器20中之堆疊指標之偏移位置。儲存暫存器值之記憶體位置群組被共同稱作異常堆疊框架。堆疊指標表示記憶體中提供的堆疊資料結構的頂部或底部(取決於實施方式選擇),該資料結構用於暫時儲存暫存器狀態,以使得回應於異常而調用的異常處理程式能夠覆寫暫存器中之資料,而不會丟失被執行但正在暫停的執行緒的先前狀態。在一些實例中,當遇到異常時,並非可將所有暫存器12、14的狀態保存至堆疊上。有可能將暫存器檔案劃分爲:藉由異常處理硬體或藉由在異常出現之前執行的軟體執行緒而自動保存的「呼叫者」狀態;及「受話人」狀態,該狀態下,若該等暫存器將由異常處理程式覆寫,則異常處理程式負責將該等暫存器保存至堆疊。此方法可能提供對軟體調用規定的更佳遵守,該等規定往往需要在一些暫存器之值被重新使用之前保存該等值的功能。因此,不將該等暫存器保存爲硬體異常條目處理的部分可阻止暫存器的冗餘雙重保存。
在步驟104處,異常堆疊框架中之返回位址位置設定爲最早的未完成指令的位址。此提供一返回位址,在異常處理程式完成之後,處理可分支至此返回位址以繼續先前的處理。視情況,在步驟106處,純量暫存器12或向量暫存器14及/或差拍狀態暫存器22中之至少一些暫存器之暫存器狀態可被清除,以使得其內容對異常處理程式不可見。爲保護暫存器中之安全資料,或在無需使先前執行之執行緒的進程對於異常處理程式爲可見的情況下,此舉在某些安全應用程式中可能是合乎需要的。另一方面,如若並不擔憂安全性,且使先前執行狀態對於異常處理程式爲可見是可接受的,則可省略步驟106。
在步驟108處,異常處理硬體偵測出現的異常是否是故障事件。異常事件可能包括故障事件及非故障事件。故障事件可能是由特定指令導致的一錯誤而觸發,該特定指令由處理電路系統4執行。例如,如若嘗試執行未定義指令,或如若因爲當前執行的處理沒有存取目標位址的許可或該目標位址尚未定義虛擬到實體位址的轉移,而使載入/儲存指令觸發記憶體故障,則可能觸發故障。另一方面,其他種類的非故障異常可能不與特定指令關連,但可能由外部事件(例如使用者按裝置上的按鈕,或接收到來自外部裝置或周邊設備的信號)或並非由正在執行的程式導致的某個其他事件觸發(例如倒計時器到期以用於觸發告警或提醒)。如若當前異常事件是故障事件,則在步驟110處,處理器可記錄辨識哪些未完成指令觸發了故障的一些資訊。由於上文論述的重疊執行,可能有多個在飛行中之指令,因此僅步驟104中設定的返回位址不足以辨識哪些特定指令觸發了故障並因此可如何處理故障,因此,記錄故障指令的指示可有助於某些故障狀態得以恰當處理(例如,如若有多個載入/儲存指令在飛行中,則記憶體故障可歸因於特定指令以使該故障得以定址,例如藉由在所需位址的轉換資料中進行分頁)。另一方面,如若異常並非故障事件,則省略步驟110,因爲異常可在不知道哪些特定指令觸發了異常的情況下處理。無論異常事件爲何種種類,在步驟112處,處理器對應於偵測到的異常事件種類而觸發至異常處理程式的分支。例如,處理器可參考基於偵測到的異常種類識別符而經索引的異常向量表,且該表可提供對應異常處理程式之位址。
第10圖圖示一流程圖,該圖圖示當從異常處理返回時執行的操作。異常處理程式可典型地以異常返回指令結束,該指令指示處理應返回至由異常中斷的先前執行緒,或可藉由分支到特別保留位址來執行從異常處理程式的返回,該處理器偵測到該位址以作爲異常返回請求。因此,返回指令可觸發從事件返回請求。當在步驟120處偵測到該種異常返回時,在步驟122處,先前保存到堆疊的暫存器狀態及差拍狀態資訊從堆疊指標暫存器20中指示的堆疊位置處復原,並被寫入暫存器檔案10。在步驟124處,處理電路系統4繼續指令的擷取,該擷取從指令之位址由異常堆疊框架中的返回位址位置所規定的該位址開始。如上所述,此是發生異常時最早的未完成指令的位址。在步驟126處,處理器使用差拍狀態資訊以抑制指令中由差拍狀態資訊指示爲已完成的差拍的效應。如若重複已完成差拍,儘管一些指令可能僅再次生成相同結果,但如若執行兩次給定差拍,則其他種類之指令可生成不同結果。例如,用於在給定記憶體位置處原子級遞增值的原子記憶體更新指令若在異常被處理之前執行一次且在異常之後繼續處理之後再次執行,則可能導致錯誤結果(導致兩次遞增而非一次)。因此,藉由基於差拍狀態資訊而抑制指令中的已完成差拍,可確保進行正確的處理。同時,無論真實的硬體實施採用何種特定方式處置連續向量指令的處理,藉由向差拍狀態資訊提供靈活性以指示多個指令群組中之已完成差拍的不同模式,此賦能架構按比例更高效地縮放至不同的效能點。
儘管第9圖及第10圖圖示使用差拍狀態資訊處理異常的發生及從異常繼續操作的一實例,但差拍狀態資訊亦可用於觸發執行執行緒暫停的任何其他事件。例如,對於觸發向調試模式(在該模式下,從外部調試程式注入的調試指令得以執行)之切換的調試事件,差拍狀態資訊可用以賦能處理以在退出調試模式之後,從多個指令的正確差拍起繼續。同樣,差拍狀態資訊可以類似方式用於觸發執行執行緒暫停的任何其他種類之事件。
儘管在上文給定的實例中,在遇到異常時被儲存至異常堆疊框架的返回位址被設定爲最早向量指令的位址,因爲至少一個差拍仍有待完成,但此舉並非必需的。返回位址可能是使得將繼續進行處理之點能夠得以辨識的任何位址。在一些情況下,將繼續進行處理的點可從返回位址及差拍狀態資訊處獲取。例如,返回位址可能指示至少有一個差拍已開始的最後向量指令,該返回位址連同指示哪些先前指令僅部分完成的差拍狀態資訊可足以在異常或其他事件處理之後賦能彼等指令得以重新擷取。然而,當部分完成的指令群組內有分支時,此方法可能更爲複雜。將最早的未完成指令的位址用作返回位址可簡化包括分支的指令群組之處理,因爲無需經由碼返回以嘗試辨識先前跨於分支執行之指令的位址。
一般而言,上文論述之差拍狀態資訊指示複數個向量指令中哪些差拍已完成。複數個向量指令可包含至少最早的向量指令,因爲至少一個差拍仍有待完成;及至少一個後續向量指令。後續向量指令無須接續最早向量指令,例如因爲可能有介於其間之純量指令。在一些情況下,因爲沒有充足的待執行指令,其中原本可執行向量指令的一些執行槽可能爲空,因而在此情況下,差拍狀態資訊將對應差拍指示爲未完成。
此方法賦能在各種硬體實施方式中之按比例縮放。在一些情況下,處理電路系統可包含不足以用於並行執行給定向量指令的全部差拍的硬體。因此,在完成給定向量指令的第一差拍子集之後,處理電路系統可執行給定向量指令的第二差拍子集。第一及第二子集可包含單個差拍或可包含多個差拍,取決於處理器實施方式。
爲提高硬體單元利用率,有可能在並行執行第二向量指令的第一差拍子集時執行第一向量指令的第二差拍子集。此舉在使用不同硬體單元執行第一及第二向量指令時尤其有用。可提供控制電路系統,以在不同指令間改變一個向量指令中有多少差拍將在隨後一向量指令的第一差拍開始之前完成。改變運行時的排程賦能處理器以在給定的執行指令實例中回應於可用資源,以選擇最適當的排程。
或者,其他的實施方式可包含支援同時執行給定向量指令的全部差拍的硬體。儘管異常處理及調試對於該種硬體而言更爲簡單,指令將在發生異常或進入調試模式之時完全完成,但具有該種硬體的處理電路系統仍可生成及使用如上文所規定之差拍狀態資訊,但差拍狀態資訊將通常指示最早的未完成指令沒有已完成的差拍;此時,處理暫停(第5圖中之「無效」情況)。因此,藉由定義差拍狀態資訊,架構可支援各種不同的實施方式。
在一些系統中,差拍狀態資訊可爲處理器用以決定如何繼續處理的內部狀態,但不可由使用者或在處理器上執行的軟體存取。
然而,在其他的實例中,差拍狀態資訊對於處理電路系統正在執行的軟體、異常處理程式,及調試程式中至少一個可爲完全可見,且曝露於上述軟體、異常處理程式,及調試程式。
視情況,處理電路系統可經排列以將差拍狀態資訊保存至堆疊指標暫存器指示的資料儲存器中之一位置,且必要時回應於異常事件而清除差拍狀態資訊以使差拍狀態資訊隱藏於異常處理程式。特定而言,在支援多個安全狀態(包括至少一安全狀態及安全性較低狀態)的系統中,如若異常事件導致安全狀態轉變至安全性較低狀態,則處理電路系統可回應於異常事件而清除差拍狀態資訊。
又一選項是處理電路系統回應於第一異常事件而去能對於差拍狀態資訊的存取,且回應於異常事件重新賦能存取。如若異常處理程式嘗試存取差拍狀態資訊,或執行包括多個處理差拍的又一向量指令,則差拍狀態資訊可被遲緩地保存至一預定位置。遲緩保存此資訊可由處理電路系統,或由巢套第二異常處理程式自動地執行,該巢套第二異常處理程式由第一異常處理程式的存取差拍狀態資訊或者執行向量指令的嘗試所觸發。儘管更爲複雜,但此遲緩保存方法可減少在發生異常時要保存的資訊量,且因此縮短進入時間十分關鍵的異常處理程式所耗之時間。
支援如上所論述之向量指令的重疊執行可有助於賦能架構在不同效能點以各種硬體實施方式執行。然而,在執行純量-向量混合指令時可導致一些問題,該等指令涉及純量暫存器檔案12及向量暫存器檔案14。儘管向量指令一般規定一或更多個源暫存器及目的暫存器,但其中至少一者是向量暫存器14;彼等向量指令的子集是純量-向量混合指令,該子集的一或更多個源暫存器中之另一者及該目的暫存器是純量暫存器12。第2圖及第3圖中圖示的類型的重疊執行一般用於純向量指令,因爲相依性趨於留在同一向量處理路徑內,無需跨路徑相依性。此意謂有可能同時執行不同指令的不同差拍,而不引入由相依性所引起的危險。可能有一些種類的需要跨路徑操作的向量指令,如排列指令,及重疊執行不可用於該等指令,但一般而言,大多數向量指令可保留在路徑中且可使用重疊技術。
然而,利用純量-向量混合指令,純量值與向量處理路徑中之每一路徑之間往往存在相依性。例如,當純量暫存器是純量-向量混合指令的源暫存器時,向量處理路徑的每一路徑可能取決於純量暫存器中之同一純量值。此類純量-向量混合指令的一實例可爲載入/儲存指令,該指令使用純量暫存器以儲存一指標以用於決定目標位址,該目標位址將用於每一向量路徑中之載入/儲存操作。另一方面,當純量暫存器是純量-向量混合指令的目的暫存器時,處理電路系統可生成純量結果以儲存至純量暫存器,該純量結果取決於每一向量處理路徑的結果。此類指令的實例可爲乘法累積指令,此指令在每一路徑中執行元件對之乘法且將每一路徑的乘法結果累積至純量累加暫存器內。在一些情況下,同一純量暫存器可藉由純量-向量混合指令而用作源暫存器及目的暫存器兩者。例如,載入/儲存指令可使用純量暫存器作爲指向所需位址的指標,但亦可基於給定遞增更新指標,以確保後續載入/儲存指令使用不同的位址。純量暫存器可爲來源及目的地的另一實例是乘法累積指令在純量暫存器中的先前值上增添值,而非覆寫先前的值。指標更新可在當前載入指令的位址計算得出之前或之後執行。
第11圖及第12圖圖示遲緩執行的兩個實例,該遲緩執行可在兩個純量-向量混合指令利用重疊執行時發生。在第11圖的實例中,向量載入(VLDR)指令隨後是向量乘法累積(VMLA)指令。因此,在此實例中,第一純量-向量混合指令(VLDR)具有源暫存器,該源暫存器是純量暫存器R0,而第二指令具有目的暫存器R0或R3,該暫存器亦是純量暫存器。對於當前處理結果,第二指令的結果不應影響第一指令的源運算元,亦即較新指令不應影響更早指令的輸入。因此,應認爲,特定純量暫存器被用作第二指令的目的暫存器,該指令不應影響第一指令的結果。
然而,如第11圖所示,當兩個指令的執行重疊(在此實例中是每一嘀嗒兩個差拍重疊)時,VMLA指令在VLDR指令的最終差拍A4已完成之前開始在差拍B1中更新純量暫存器。如若VMLA指令的目的純量暫存器R3不同於如在第11圖的底部實例中之VLDR指令的源暫存器R0,則VMLA指令不影響載入結果,及差拍A4中執行的載入操作與乘法累積的結果無關。此是正確的結果。然而,如若VMLA指令規定同一純量暫存器R0為VLDR指令,則如第11圖的頂部實例中所示,載入位址將取決於在VMLA指令的差拍B1中執行的乘法累積操作,以使得第二指令影響第一指令的結果。因此,VLDR指令的差拍A4可提供完全不同的結果(從不同位址載入),該等結果取決於後續VMLA指令是否規定同一純量暫存器。此外,因爲VLDR及VMLA重疊量可取決於數個因數,諸如處理電路系統的實施方式及運行時的可用資源,因此當代碼寫入或編譯時,不可決定VLDR結果是否被後續VMLA破壞。該種不確定性將被視作不合需要及不正確的。
另一方面,在第12圖的實例中,VMLA指令在VLDR指令之前出現。因此,此時第一純量-向量混合指令具有目的暫存器且第二純量-向量混合指令具有源暫存器,該目的暫存器是純量暫存器,且該源暫存器是純量暫存器。此時,儘管將預期第二指令應取決於第一指令,但重疊執行可能致使第二指令的結果取決於在第一與第二純量-向量混合指令之間執行了多少介入指令。例如,在第12圖頂部的實例中,介入指令數目是零,因此VLDR的第一差拍B1與VMLA的第二差拍A2並行執行(此實例每次嘀嗒使用一個差拍)。因此,僅VMLA的第一差拍A1在VLDR的差拍B1之前完成,因此VLDR的目標位址將取決於在VMLA指令差拍A1中相乘的元件Q3[1]、Q4[1]的乘積。另一方面,在底部實例中,有一個介入VORR指令,以使得VLDR現在是指令C。此時,VLDR的第一差拍C1與VMLA的差拍A3同時執行,且因此在載入之差拍C1中計算得出的目標位址取決於VMLA前兩個差拍的累積(亦即Q3[1]*Q4[1] + Q3[2]*Q4[2]),所以與第12圖的頂部實例相比,其將從不同的位址載入。
第12圖之實例將皆被視作不正確,因爲載入之正確處理結果將在R0具有值,該值對應於從乘法累積之差拍A1到A4中執行之全部累積的結果。然而,亦被視作不合需要且導致不正確的處理結果的是使給定指令之結果取決於多少介入指令將該給定指令與其依據的指令分隔開。
有多種方法以用於解決此問題。一個方法將是決不重疊純量-向量混合指令之執行。然而,因爲對於一些實際應用(例如數位信號處理)而言,純量-向量混合指令可表示執行向量指令的總數目之顯著部分,所以阻止純量-向量混合指令之重疊執行可能首先使重疊向量指令執行的大部分優勢無效。此可能導致諸如乘法累積單元或載入/儲存單元之硬體區塊在大部分時間內閑置,如此降低處理器效率。在多數情況下,連續的純量-向量混合指令不會涉及相同純量暫存器,且在此情況下,重疊執行是可接受的。因此,在可能時將需要賦能此重疊執行。
另一方法可爲減少提供於指令集架構中之純量-向量混合指令之數目,以使得大部分向量指令即使在生成純量結果或使用純量運算元的情況下亦從向量檔案讀取其純量值,或對向量檔案寫入其純量值;及單獨提供有限數目的種類之純量-向量混合指令,以用於在純量與向量暫存器檔案12、14之間轉移資料。然而,限制向量指令以僅使用向量暫存器檔案會增大向量暫存器檔案14之儲存容量壓力與讀取/寫入埠壓力,此可能影響處理器之效能、面積與功率。因此,繼續支援合理數目的純量-向量混合指令可爲合乎需要的。
另一方法可爲在硬體中提供暫存器相依性檢查電路系統,以用於比較由各個純量-向量混合指令規定爲純量暫存器的暫存器,於是當一對純量-向量混合指令之間存在同一純量暫存器上之相依性時阻止重疊執行。然而,尤其對於相對低功率的實施方式而言,提供該種相依性檢查電路系統可對設備總功耗及電路面積產生顯著影響,因爲比較器可能在閘極計數方面造價相對昂貴。
實際上,在使用向量指令的正規程式碼中,得到具有諸如第11圖及第12圖中圖示者的純量相依性的機會極少。第11圖及第12圖是格外不實際的實例,因爲極不可能有人想將乘法之和寫入被用作針對負載之指標的暫存器,或從乘法累積指令先前生成的位址載入資料。此指標值及累積的混合從代碼觀點來看簡直毫無意義,且作爲不確定性實例而被闡明,該不確定性可能產生於指令之重疊執行。
實際上,本發明者承認更高效的微型架構是可得以構建的,前提是允許某種純量-向量混合指令的組合以產生未知的結果,而該等結果可能是不正確的。因此,第11圖及第12圖中圖示之兩個鬆弛執行實例在以下情況下是允許的:第一及第二純量-向量混合指令出現時,其間的介入指令數目少於預定數目。本發明者認爲,實際上,代碼極少包括該種指令組合,因此提供昂貴的相依性檢查電路系統以防止該種罕見情況是浪費電力及面積的。實際上,更高效的技術可用以確保在很可能出現相依性的少數情況下可達成正確結果。藉由提供允許結果在其他相關情況中爲「未知」的指令集架構,整體微型架構硬體實施方式可更爲高效。隨後,依靠程式人員避免寫入落入可能出現未知結果的困境的碼(如下所述,架構可定義一些相對簡單的規則以指導程式人員避免該種情況),以使得處理硬體自身無需檢查該等問題。
因此,當執行包括第一純量-向量混合指令(規定第一純量暫存器)及後續純量-向量混合指令(規定第二純量暫存器)的指示序列時,且第一及後續純量-向量混合指令之間的介入指令數目少於預定數目,處理器可以以下方式之一支援鬆弛執行: l 其中第一純量暫存器是源暫存器且第二純量暫存器是目的暫存器,處理電路系統經配置以允許該第一及後續純量-向量混合指令之重疊執行以生成該第一純量-向量混合指令之結果,該結果取決於第二純量暫存器是否與該第一純量暫存器爲同一暫存器而有所不同(如第11圖之實例中所示); l 其中第一純量暫存器是目的暫存器且該第二純量暫存器是源暫存器,且該第一純量暫存器及該第二純量暫存器是同一暫存器(第一與後續純量-向量混合指令之間的介入指令數目等於或少於預期數目),處理電路系統經配置以允許該第一及後續純量-向量混合指令之該重疊執行,以生成該第二純量-向量混合指令之結果,該結果取決於第一與後續純量-向量混合指令之間的介入指令數目而有所不同(如第12圖之實例之所示)。
此方法極有悖於直覺,因爲據預期,此方法將在執行給定指令集的結果中導致不正確的處理結果及不確定性,因爲結果可取決於特定的微型架構實施方式選擇重疊指令執行的特定方式。然而,藉由允許此不確定性,此提供更大自由以改變微型架構及避免相依性檢查支出。無論如何,在該等類型的純量-向量混合指令的實用真實世界應用中,程式人員極不可能希望使用發生鬆弛執行的情況。
注意,在上述所列兩個鬆弛執行實例中的第一個實例中,當第一純量暫存器是源暫存器且第二純量暫存器是目的暫存器時,第一純量暫存器亦可為目的暫存器。同樣地,第二純量暫存器可爲源暫存器及目的暫存器。或者,在其他的實例中,第一純量暫存器可能僅爲源暫存器,並非目的暫存器;或第二純量暫存器可能僅爲目的暫存器,並非源暫存器。同樣地,在第一純量暫存器是目的暫存器且第二純量暫存器是源暫存器的鬆弛執行之第二實例中,第一純量暫存器亦可是源暫存器,且第二純量暫存器亦可是目的暫存器。因此,規定特定的純量暫存器是源暫存器或目的暫存器,並不排除純量暫存器亦可為另一類暫存器。
當第一及後續純量-向量混合指令中之至少一者是算術指令時,此方法尤其有用。
實際上,真碼中之純量-向量混合指令之間最常見的真實相依性是當來自相關群組的多個指令具有暫存器相依性時出現的。例如,數個記憶體指令可能使用相同指標值,或數個乘法累積指令可能累積至同一累積暫存器內,如第14圖之實例所示。如第13圖中所示,處理電路系統4可能包括對應於不同指令類別的數個不同硬體單元200、202、204、206。例如,硬體單元可包括用於執行記憶體指令的載入儲存單元200、用於執行任何涉及乘法之指令的乘法累積單元202、用於執行除乘法外其他的算術或邏輯指令的算術邏輯單元,及用於執行浮點指令的浮點單元206。因此,指令可根據哪些硬體單元經設計以執行該等指令而經分類。
在此情況下,當同一類別中有多個指令有待執行時,第二指令直到第一指令完成後才能夠開始,因爲存在針對相同執行資源的競爭。因此,在此情況下,具有自然管線結構的危險能夠消除暫存器相依性,無需額外的相依性檢查電路系統來比較每一指令之暫存器說明符。因此,該架構可定義不同指令類別,並要求第11圖或第12圖中圖示類型之鬆弛執行應在第一及第二純量-向量混合指令皆來自同一類別時被阻止。用於檢查指令類別之硬體往往可比用於比較不同指令的暫存器說明符的硬體需要更少的額外負擔(因爲指令解碼器6可能已需要運算碼之解碼,以便控制硬體單元200、202、204、206中哪一硬體單元處理指令),因此此方法可更具面積及功率效率。
特定的類別定義可針對不同實施例而不同。儘管第13圖圖示具有四個執行單元的實例,該四個執行單元可被映射到對應於記憶體存取指令、乘法指令、非乘法算術指令及浮點指令的四個類別,但類別可擴大爲包含其他指令,或該等類別中一或更多者可能被省略或與另一類別組合。同時,一些向量指令可能不被分配給任何特定類別,以使得其執行可與其他向量指令重疊,無論其具有何種類型。
例如,在可能出現於真實碼中的最常見的向量指令之間的純量相依性情況下,兩個乘法指令或兩個載入指令可使用相同純量暫存器,且因此可足夠簡單地定義包括至少一載入指令的第一類別及包括至少一乘法指令的第二類別(包括乘法累積)。任何其他向量指令可作爲可重疊指令處理,無論其具有何種類型。阻止數個乘法指令或數個載入重疊可足以解決最常見的真實相依性。
更一般而言,處理電路系統可支援不同類別的純量-向量混合指令,且處理電路系統可阻止來自同一類別的第一及後續純量-向量混合指令的鬆弛執行。儘管阻止鬆弛執行的一個方式可阻止指令重疊,但另一方法可重新映射哪一暫存器是由指令中一個或其他者所規定的,以便該等指令不再彼此相依。例如,在第18圖中圖示的第一純量-向量混合指令使用純量暫存器作爲源暫存器(但純量暫存器並未被第一純量-向量混合指令用作目的暫存器)且第二指令使用純量目的暫存器的情況下,可藉由以下方式來阻止鬆弛執行:從第一指令所參考的第一純量暫存器複製純量值到第二指令未參考的另一第三純量暫存器,以使得指令現在指向不同的暫存器。另一方面,此暫存器重新映射亦可在電路面積方面需要一些負擔,因此在多數情況下,藉由避免該等指令的重疊執行可更高效簡單地阻止鬆弛執行。
儘管該等類別可一般對應於使用相同硬體電路單元的指令類別,但可能有對應於兩個或兩個以上不同的硬體單元之一些類別。例如,如若指令群組並不足夠常見以確保自成一類,實則該等指令可使用任何其他數目的不同硬體電路單元來執行,則該指令群組可分類爲「其他」。給定實施方式選擇在不同硬體單元上執行各種不同指令的特定方式是微型架構級別的實施方式選擇,因此,架構可根據可能的實施方式而簡單定義類別,無需考慮實際使用的特定硬體單元。
第15圖及第16圖圖示可用於程式碼級別的其他技術以確保兩個純量-向量混合指令之間的相依性得以滿足。如第15圖所示,一旦兩個純量-向量混合指令被充足數目的介入指令分隔開,則彼等純量-向量混合指令之間將沒有重疊,且因此將滿足相依性要求。確保分隔的介入指令預定數目將取決於特定的微型架構實施方式。例如,在每次嘀嗒處理一個差拍並交疊連續向量指令執行達一個差拍的實施方式中,介入指令的預定數目是N-1(其中N是每一向量指令的差拍數目),例如在上述實例情況下,4差拍向量有3個介入指令。更一般而言,對於單次發出指令的系統,其中向量指令使用2J 個處理差拍進行處理,其中J是大於或等於1的整數;及在重疊執行中,處理電路系統並行執行第二向量指令的第一差拍與第一向量指令的第(2k+1)個差拍,其中K是整數且0≤K<J,則介入指令之預定數目可為(2(J-K) -1)。對於支援二重發出的系統,介入指令之預定數目可更大。
因此,一般而言,指令之預定數目是兩個連續純量-向量混合指令之間的介入指令的最小數目,此數目確保第一純量-向量混合指令中之任何差拍都不可能與第二純量-向量混合指令中之差拍重疊。爲向程式人員或編譯者提供兩個指令之相依性將被承諾的某種確定性,指令集架構可爲介入指令的預定數目規定某一最小值,且順應該架構的微型架構應提供電路系統以用於確保當指令被至少該數目的指令分隔開時,結果是正確且可重複的。然而,此向微型架構給予自由以在程式人員藉由數目少於預定數目之指令分隔兩個不同類別的純量-向量混合指令時允許不確定結果。
因此,程式人員或編譯者可確保兩個相關純量-向量混合指令將藉由在其間包括至少最小數目的介入指令來滿足其相依性,如架構所規定。由於在多數情況下,相關的純量-向量混合指令將藉由充足指令而隔開,因此在規定指令更靠近時提供暫存器相依性檢查電路系統以防止偶然情況往往是不合理的。
另一方面,如若需要向相關的純量-向量混合指令之間提供數目少於預定數目之介入指令,在該等指令並非如第13圖及第14圖所論述的屬於同一類別的情況下,則架構亦可能提供重疊隔離指令CSB,該指令可包括在程式碼中以迫使硬體承諾隔離各側的兩個純量-向量混合指令之間的相依性。因此,當存在介入的重疊隔離指令時,處理電路系統可阻止隔離各側的純量-向量混合指令之鬆弛執行,方式是藉由阻止重疊或藉由重新映射暫存器說明符。
不同的實施方式可以不同方式處理隔離指令。在每一嘀嗒單個差拍的微型架構中,如第2圖之頂部實例中所示,可提供一些電路系統以偵測隔離指令及在管線中插入充足氣泡,以允許第二指令在第一指令完成後開始。對於如第2圖之第二實例所示的雙重差拍微型架構而言,單個氣泡可能足夠,因爲兩次嘀嗒各處理一半指令,因此可藉由執行不操作指令操作來實施隔離指令。對於具有充足執行資源以在一個嘀嗒中執行整體向量操作的四重差拍微型架構而言,無需任何減速或襯墊便將滿足相依性,因此更高效能的微型架構不會實際需要對隔離指令採取任何操作,且可在管線早期(例如在擷取或解碼階段)簡單地消除隔離指令以改良效能。因此,儘管寫入架構之碼可包括隔離指令(假如該隔離指令正以重疊向量指令的實施方式執行),但其他微型架構可能不需要實際地注入不操作(no-op)指令且可忽略隔離。
因此,在極罕見的情況下,當程式人員真的希望提供取決於共同的純量暫存器及藉由數目少於預定數目之介入指令分隔開的不同類別之純量-向量混合指令時,可使用隔離。基本上,該架構可規定如若程式人員或編譯者希望藉由少於指令給定數目的指令來分隔指令,其應使用隔離,否則將面臨不確定結果之風險。
第17圖圖示一流程圖,該圖圖示處理純量-向量混合指令之一方法。在步驟250處,指令解碼器偵測待處理的指令是否是純量-向量混合指令。如若不是,則根據適合於該類指令的處理來處理該指令。如若指令是純量-向量混合指令,則在步驟252處,差拍控制電路系統30偵測是否有先前的未完成純量-向量混合指令,且該指令是否來自與當前純量-向量混合指令相同的類別。請注意,先前的純量-向量混合指令可能尚未開始執行,因爲指令偵測及差拍排程可能在管線早期階段發生。或者,先前的純量-向量混合指令可能部分地執行。
如若有未完成的純量-向量混合指令來自同一類別,則在步驟254處,差拍控制電路系統30採取操作以阻止第11圖及第12圖之實例中圖示的形式之鬆弛執行。此操作可能延遲當前純量-向量混合指令的排程以在先前的純量-向量混合指令完成後執行,以此阻止指令重疊。或者,在當前純量-向量混合指令規定第二純量暫存器爲目的暫存器,先前純量-向量混合指令規定第一純量暫存器爲源暫存器,且先前純量-向量混合指令尚未開始執行的情況下,操作可包含從第一純量暫存器將值寫入不同於第二純量暫存器的第三純量暫存器,且藉由使用第三純量暫存器代替第一純量暫存器來執行先前的純量-向量混合指令。請注意如若當前的純量-向量混合指令與先前的純量-向量混合指令來自相同類別,則在步驟254處採取回應操作,無論先前及當前純量-向量混合指令規定的純量暫存器是否實際爲同一暫存器,以此防止規定暫存器爲同一暫存器,因爲硬體中不提供相依性檢查電路系統以比較暫存器參考。
在步驟256處,差拍控制電路系統亦檢查先前的純量-向量混合指令與當前的純量-向量混合指令之間是否已遇到重疊隔離指令。如若已遇到,則在步驟254處再次採取回應操作,藉由重新映射暫存器參考或藉由阻止重疊執行以避免鬆弛執行。儘管第17圖圖示步驟252及256是連續執行的,且類別檢查步驟252在重疊隔離指令檢查步驟之前執行,但該等步驟亦可以相反次序或彼此同時執行。
如若先前及當前純量-向量混合指令並非來自同一類別(或來自未對重疊執行施加限制的「其他」指令類型),且兩者之間沒有重疊隔離指令,則在步驟258處允許重疊執行,即使鬆弛執行導致第11圖及第12圖中圖示類型的未知結果。
總而言之,藉由鬆弛對來自向量指令的純量暫存器更新的相依性檢查,及反之更多依靠如上文論述的一些輕型架構機制,可在無需額外檢查硬體的情況下滿足真實的相依性,以便比較可賦能更高效的實施方式之暫存器說明符。
第19圖圖示可使用的虛擬機實施方式。儘管本發明早期描述之實施例根據用於操作支援所涉技術的特定處理硬體的設備及方法來實施本發明,但亦有可能提供硬體裝置的所謂虛擬機實施方式。該等虛擬機實施方式在主機處理器150上運行,該主機處理器150在支援虛擬機程式130的主機操作系統140上運行。通常,大型高功率處理器需要提供以合理速度執行的虛擬機實施方式,但該種方法在某些環境中可能被調整,如在需要運行另一處理器之本地碼以獲得相容性的情況下,或出於再使用原因。虛擬機程式130向客程式120提供虛擬硬體介面,該介面與將由實際硬體提供的硬體介面相同,該實際硬體是藉由虛擬機程式130模型化的裝置。由此,程式指令(包括上述對記憶體存取的控制)可藉由使用虛擬機程式130而在客程式120內執行,以對其與虛擬機硬體的交互模型化。客程式120可爲原樣金屬程式,或可爲以與主機作業系統140運行虛擬機應用程式130的相似方式運行應用程式的客作業系統。亦將理解,有不同類型的虛擬機,且在一些類型中,虛擬機直接在主機硬體150上運行,無需主機作業系統140。
實例配置在以下條款中闡述: (1)一種設備,包括: 處理電路系統,用以處理向量指令,該等向量指令之源運算元及結果值中之至少一者是包括複數個資料元件的向量值; 其中,回應於一給定向量指令,該處理電路系統經配置以執行複數個處理差拍,每一差拍包括對應於該向量值之一部分之處理; 該處理電路系統經配置以設定差拍狀態資訊,該狀態資訊指示包括該給定向量指令的複數個向量指令中之哪些差拍已完成;及 回應於一事件,該處理電路系統經配置以暫停該給定向量指令之處理;及 回應於一從事件返回請求,該請求指示返回至該給定向量指令之處理,該處理電路系統經配置以繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示爲已完成的該複數個向量指令之差拍。 (2)如條款(1)所述的設備,其中該處理電路系統經配置以設定一返回位址,該返回位址指示該複數個向量指令中之一者的位址;及 回應於從事件返回請求,該處理電路系統經配置以辨識一點,處理將基於返回位址及該差拍狀態資訊而從此點處繼續。 (3)如條款(2)所述的設備,其中該返回位址指示最早向量指令之位址,該最早向量指令之至少一個差拍仍待完成。 (4)如任一先前條款所述的設備,其中複數個向量指令包含最早向量指令,該向量指令之至少一個差拍仍有待完成;及至少一個後續向量指令。 (5)如任一先前條款所述的設備,其中處理電路系統包括硬體,該硬體不足以並行執行給定向量指令之全部複數個差拍。 (6)如任一先前條款所述的設備,其中處理電路系統經配置以在給定向量指令之複數個差拍的第一子集完成之後,執行給定向量指令之複數個差拍的第二子集。 (7)如條款(6)所述的設備,其中該處理電路系統經配置以並行執行第一向量指令的第二差拍子集與第二向量指令的第一差拍子集。 (8)如任一先前條款所述的設備,包括控制電路系統,以在不同指令間改變一個向量指令中有多少差拍將在隨後一向量指令的第一差拍開始之前完成。 (9)如條款(1)至(4)、(6)及(7)中任一條所述的設備,其中處理電路系統包括硬體,該硬體經配置以支援並行執行給定向量指令中之全部複數個差拍。 (10)如任一先前條款所述的設備,其中該向量值包括資料元件,該等資料元件具有由資料元件大小資訊規定的複數個資料元件大小中之一者,處理電路系統可存取該資料元件大小資訊;及 每一處理差拍包括對應於向量值的一固定大小部分的處理,無論該資料元件大小資訊指示何種資料元件大小。 (11)如任一先前條款所述的設備,其中處理電路系統經配置以使處理電路系統執行的軟體、異常處理程式及調試程式中之至少一者可存取該差拍狀態資訊。 (12)如任一先前條款所述的設備,其中該事件包括調試事件,且該從事件返回請求包括從調試狀態返回。 (13)如任一先前條款所述的設備,其中該事件包括異常事件,且該從事件返回請求包括異常返回。 (14)如條款(13)所述的設備,其中該異常事件包括故障事件,且回應於該故障事件,該處理電路系統經配置以設定辨識該複數個向量指令中之哪一者是偵測到該故障事件的該給定向量指令。 (15)如條款(13)及(14)中任一條所述的設備,其中回應於該異常事件,該處理電路系統經配置以去能對該差拍狀態資訊的存取;及 回應於嘗試存取該差拍狀態資訊的指令或包括複數個處理差拍的又一向量指令之至少一種的執行,該處理電路系統經配置以: 保存該差拍狀態資訊到一預定位置;或 產生第二異常事件。 (16)如條款(13)及(14)中任一條所述的設備,其中回應於異常事件,處理電路系統經配置以相對於堆疊指標暫存器指示的值以一偏移量將差拍狀態資訊保存到資料儲存裝置中之一位置。 (17)如條款(16)所述的設備,其中該處理電路系統可在複數個安全狀態下操作,包括至少一安全狀態及安全性較低狀態,其中回應於導致從該安全狀態到該安全性較低狀態的轉變的異常事件,處理電路系統經配置以清除差拍狀態資訊。 (18)如任一先前條款所述的設備,其中該處理電路系統經配置以藉由以下各者中之一者抑制給定處理差拍: 抑制目的向量暫存器中對應於該給定處理差拍之一部分的更新;及 抑制關連於該給定處理差拍之處理操作。 (19)一種設備,包括: 用於處理向量指令之構件,用於該等指令的源運算元及結果值中之至少一者是包括複數個資料元件之向量值; 其中,回應於一給定向量指令,該用於處理之構件經配置以執行複數個處理差拍,每一差拍包括對應於向量值中之一部分之處理; 該用於處理之構件經配置以設定差拍狀態資訊,該資訊可指示包括該給定向量指令的複數個向量指令中哪些差拍已完成;及 回應於一事件,該用於處理之構件經配置以暫停該給定向量指令之處理;及 回應於一從事件返回請求,該請求指示返回該給定向量指令之處理,該用於處理之構件經配置以繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示爲已完成的該複數個向量指令之差拍。 (20)一種處理向量指令的方法,用於該等向量指令的源運算元及結果值中之至少一者是包括複數個資料元件之向量值;該方法包括: 回應於一給定向量指令,執行複數個處理差拍,每一差拍包括對應於向量值中之一部分之處理; 設定差拍狀態資訊,該狀態資訊可指示包括該給定向量指令的複數個向量指令中哪些差拍已完成;及 回應於一事件,暫停該給定向量指令之處理;及 回應於一從事件返回請求,該請求指示返回至該給定向量指令之處理,繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示爲已完成的該複數個向量指令之差拍。 (21)一種虛擬機電腦程式,該電腦程式包括程式指令,該等程式指令用以控制主機資料處理設備以提供對應於根據條款(1)到(18)中任一條所述的設備的指令執行環境。 (22)一種設備,包括: 處理電路系統,用以處理規定一或更多個源暫存器及目的暫存器之向量指令,其中該目的暫存器及該一或更多個源暫存器中之至少一者是用於儲存包括複數個資料元件的向量值的向量暫存器; 其中向量指令包括至少一種純量-向量混合指令,用於該指令的該目的暫存器及該一或更多個源暫存器中之另一者是用於儲存純量值的純量暫存器,該純量值包括單個資料元件; 回應於一給定向量指令,該處理電路系統經配置以執行複數個處理差拍,每一差拍包括對應於向量值中之一部分之處理; 該處理電路系統經配置以支援第一向量指令及第二向量指令之重疊執行,其中第一向量指令之至少一個差拍與第二向量指令之至少一個差拍並行執行;及 回應於一指令序列,該指令序列包括規定第一純量暫存器的第一純量-向量混合指令及規定第二純量暫存器的後續純量-向量混合指令,且第一及後續純量-向量混合指令之間的介入指令數目少於預定數目,該處理電路系統經配置以支援包括以下各者中至少一者的鬆弛執行: 其中該第一純量暫存器是源暫存器且該第二純量暫存器是目的暫存器,處理電路系統經配置以允許該第一及後續純量-向量混合指令之該重疊執行以生成該第一純量-向量混合指令之結果,該結果取決於第二純量暫存器是否與該第一純量暫存器爲同一暫存器而有所不同;及 其中該第一純量暫存器是目的暫存器且該第二純量暫存器是源暫存器,且該第一純量暫存器與該第二純量暫存器是相同暫存器,該處理電路系統經配置以允許該第一及後續純量-向量混合指令的該重疊執行,以生成該第二純量-向量混合指令的結果,該結果取決於第一與後續純量-向量混合指令之間的介入指令數目而不同。 (23)如條款(22)所述的設備,其中該第一及後續純量-向量混合指令中之至少一者是算術指令。 (24)如條款(22)及(23)中任一條所述的設備,其中處理電路系統經配置以支援複數個不同類別的純量-向量混合指令之處理;及 處理電路系統經配置以在第一及後續純量-向量混合指令皆來自同一類別純量-向量混合指令時阻止第一後續純量-向量混合指令的該鬆弛執行。 (25)如條款(24)所述的設備,其中處理電路系統經配置以藉由阻止該第一及後續純量-向量混合指令的該重疊執行而阻止該鬆弛執行。 (26)如條款(24)及(25)中任一條所述的設備,其中在該第一純量暫存器是源暫存器且該第二純量暫存器是目的暫存器的情況下,處理電路系統經配置以藉由從第一純量暫存器複製純量值到第三純量暫存器,並藉由使用該第三純量暫存器作爲源暫存器以替代該第一純量暫存器來執行該第一純量-向量混合指令的至少一個差拍來阻止該鬆弛執行。 (27)如條款(24)到(26)中任一條所述的設備,其中處理電路系統經配置以藉由使用相同硬體電路單元處理來自同一類別的純量-向量混合指令。 (28)如條款(27)所述的設備,其中處理電路系統將藉由使用不同的硬體電路單元處理來自至少一些不同類別的純量-向量混合指令。 (29)如條款(24)到(28)中任一條所述的設備,其中純量-向量混合指令之該複數個類別包括至少: 第一類別,包括至少一載入指令;及 第二類別,包括至少一執行乘法的指令。 (30)如條款(24)到(29)中任一條所述的設備,其中該複數個純量-向量混合指令之類別包括至少: 第一類別,包括至少記憶體存取指令; 第二類別,包括至少一執行乘法的指令;及 以下各者中之至少一者: 等三類別,包括至少一非乘法算術指令;及 第四類別,包括至少一浮點指令。 (31)如條款(22)到(30)中任一條所述的設備,其中處理電路系統經配置以在該第一與後續純量-向量混合指令之間的介入指令是重疊隔離指令時,阻止該第一及後續純量-向量混合指令的該鬆弛執行。 (32)如條款(31)所述的設備,其中在該第一純量暫存器是源暫存器且該第二純量暫存器是目的暫存器的情況下,處理電路系統經配置以藉由從第一純量暫存器複製純量值到第三純量暫存器,並藉由使用該第三純量暫存器作爲源暫存器以替代該第一純量暫存器來執行該第一純量-向量混合指令的至少一個差拍來阻止該鬆弛執行。 (33)如條款(31)及(32)中任一條所述的設備,其中處理電路系統經配置以執行該重疊隔離指令,以作爲至少一個不操作指令操作。 (34)如條款(22)到(33)中任一條所述的設備,其中回應於該純量暫存器是該等源暫存器之一者的純量-向量混合指令,處理電路系統經配置以執行該複數個處理差拍中之每一者,此取決於該純量暫存器中之純量值。 (35)如條款(22)到(34)中任一條所述的設備,其中回應於該純量暫存器是目的暫存器的純量-向量混合指令,將寫入該純量暫存器的純量結果值取決於該複數個處理差拍中之每一者之結果。 (36)如條款(22)到(35)中任一條所述的設備,其中對於至少一種純量-向量混合指令,該純量暫存器爲源暫存器及目的暫存器兩者。 (37)如條款(22)到(36)中任一條所述的設備,其中處理電路系統包括硬體,該硬體不足以並行執行給定向量指令之全部複數個差拍。 (38)如條款(22)到(37)中任一條所述的設備,其中在該重疊執行中,處理電路系統經配置以並行執行該第二向量指令的第一差拍子集與該第一向量指令的第二差拍子集。 (39)如條款(22)到(38)中任一條所述的設備,其中該複數個處理差拍包含2J 個處理差拍,其中J是大於或等於1的整數; 在該重疊執行中,處理電路系統經配置以並行執行該第二向量指令的第一差拍與該第一向量指令的第(2k+1)個差拍,其中K是整數且0≤K<J;及 該介入指令之預定數目包括(2(J-K) -1)。 (40)如條款(22)到(39)中任一條所述的設備,其中該向量值包括資料元件,該等資料元件具有由資料元件大小資訊規定的複數個資料元件大小中之一者,處理電路系統可存取該資料元件大小資訊;及 每一處理差拍包括對應於向量值的一固定大小部分的處理,無論該資料元件大小資訊指示何種資料元件大小。 (41)一種設備,包括: 用於處理向量指令的構件,該等指令規定一或更多個源暫存器及目的暫存器,其中該目的暫存器及該一或更多個源暫存器中之至少一者是用於儲存包括複數個資料元件的向量值的向量暫存器; 其中向量指令包括至少一種純量-向量混合指令,用於該指令的該目的暫存器及該一或更多個源暫存器中之另一者是用於儲存純量值的純量暫存器,該純量值包括單個資料元件; 回應於一給定向量指令,該用於處理之構件經配置以執行複數個處理差拍,每一差拍包括對應於向量值中之一部分之處理; 該用於處理之構件經配置以支援第一向量指令及第二向量指令之重疊執行,其中第一向量指令之至少一個差拍與第二向量指令之至少一個差拍同時執行;及 回應於一指令序列,該指令序列包括規定第一純量暫存器的第一純量-向量混合指令及規定第二純量暫存器的後續純量-向量混合指令,且第一與後續純量-向量混合指令之間的介入指令數目少於預定數目,該用於處理之構件經配置以支援包括以下各者中之至少一者的鬆弛執行: 其中該第一純量暫存器是源暫存器且該第二純量暫存器是目的暫存器,該用於處理之構件經配置以允許該第一與後續純量-向量混合指令之該重疊執行以生成該第一純量-向量混合指令之結果,該結果取決於第二純量暫存器是否與該第一純量暫存器爲同一暫存器而有所不同;及 其中該第一純量暫存器是目的暫存器且該第二純量暫存器是源暫存器,且該第一純量暫存器與該第二純量暫存器是相同暫存器,該用於處理之構件經配置以允許該第一及後續純量-向量混合指令的該重疊執行,以生成該第二純量-向量混合指令的結果,該結果取決於第一與後續純量-向量混合指令之間的介入指令數目而不同。 (42)一種虛擬機電腦程式,該電腦程式包括程式指令,該等程式指令用以控制主機資料處理設備以提供對應於根據條款(22)到(40)中任一條所述的設備的指令執行環境。
在本申請案中,詞語「經配置以……」用以意謂設備元件具有能夠執行所定義的操作之配置。在此上下文中,「配置」意謂硬體或軟體的排列或互連方式。例如,設備可具有專用硬體,該硬體提供定義的操作,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以……」並非暗示該設備元件爲了提供所定義的操作而需要以任何方式變更。
儘管本文已引用附圖詳細描述本發明的說明性實施例,但將理解,本發明並非限定於彼等精確實施例,且熟習該項技術者可在不背離如所附專利申請範圍所定義之本發明範疇及精神的前提下,對本發明進行多種變更及修改。
2‧‧‧資料處理設備4‧‧‧處理電路系統6‧‧‧指令解碼器8‧‧‧記憶體系統10‧‧‧暫存器12‧‧‧純量暫存器檔案14‧‧‧向量暫存器檔案16‧‧‧程式計數暫存器18‧‧‧鏈路暫存器20‧‧‧堆疊指標暫存器22‧‧‧差拍狀態暫存器30‧‧‧差拍控制電路系統50‧‧‧步驟52‧‧‧步驟54‧‧‧步驟100‧‧‧步驟102‧‧‧步驟104‧‧‧步驟106‧‧‧步驟108‧‧‧步驟110‧‧‧步驟112‧‧‧步驟120‧‧‧步驟122‧‧‧步驟124‧‧‧步驟126‧‧‧步驟130‧‧‧虛擬機程式140‧‧‧主機操作系統150‧‧‧主機處理器200‧‧‧載入/儲存單元202‧‧‧乘法累積單元204‧‧‧硬體單元206‧‧‧浮點單元250‧‧‧步驟252‧‧‧步驟254‧‧‧步驟256‧‧‧步驟258‧‧‧步驟
本技術之更多態樣、特徵及優勢將從將結合附圖閱讀之實例之以下描述中顯而易見,在該等附圖中:
第1圖示意地圖示一資料處理設備之實例,該資料處理設備支援向量指令處理;
第2圖圖示向量指令之重疊執行之實例;
第3圖圖示在不同的指令執行之間,在不同的處理器實施方式之間或在運行時於連續向量指令之間的重疊量按比例縮放的三個實例;
第4圖圖示純量指令之執行使兩個向量指令之間的重疊斷開的實例;
第5圖圖示用於差拍狀態資訊之示例性編碼,該差拍狀態資訊用於指示多個向量指令塊中之哪些差拍已完成;
第6圖圖示在發生調試事件或異常時記錄差拍狀態資訊的兩個實例;
第7圖圖示在從調試事件或異常返回之後,使用差拍狀態資訊以繼續處理之實例;
第8圖圖示回應於向量指令的完成而更新狀態資訊之方法;
第9圖圖示處理異常事件之方法;
第10圖圖示從異常事件處理返回之方法;
第11圖及第12圖圖示當重疊純量-向量混合指令之差拍時的鬆弛執行之實例;
第13圖圖示在處理電路系統內用於處理不同指令類別之不同硬體單元之一實例;
第14圖圖示當遇到同一類別的兩個純量-向量混合指令時阻止重疊執行之一實例;
第15圖是一實例,該實例圖示藉由預定數目之介入指令分隔兩個純量-向量混合指令如何有助於避免鬆弛執行;
第16圖圖示使用隔離指令以阻止鬆弛執行之一實例;
第17圖圖示處理純量-向量混合指令之方法;
第18圖圖示純量-向量混合指令之重疊執行之又一實例;及
第19圖圖示可使用的一虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序注記) 無
(請換頁單獨記載) 無

Claims (20)

  1. 一種用於處理向量指令的設備,包括:處理電路系統,用以處理向量指令,該等向量指令之一源運算元及一結果值中之至少一者是包括複數個資料元件的一向量值;其中,回應於一給定向量指令,該處理電路系統經配置以執行複數個處理差拍,每一差拍包括對應於該向量值中之一部分之處理;該處理電路系統經配置以設定差拍狀態資訊,該差拍狀態資訊可指示包括該給定向量指令的複數個向量指令中哪些差拍已完成;回應於一事件,該處理電路系統經配置以暫停該給定向量指令之處理;及回應於指示返回至該給定向量指令之處理的一從事件返回請求,該處理電路系統經配置以繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示為已完成的該複數個向量指令之該等差拍;其中該向量值包括資料元件,該等資料元件具有由資料元件大小資訊規定的複數個資料元件大小中之一者,該處理電路系統可存取該資料元件大小資訊;及每一處理差拍包括對應於該向量值的一固定大小部分的處理,無論該資料元件大小資訊指示何種資料元 件大小。
  2. 如請求項1所述之設備,其中該處理電路系統經配置以設定一返回位址,該返回位址指示該複數個向量指令中之一者的一位址;及回應於該從事件返回請求,該處理電路系統經配置以辨識一點,處理將基於該返回位址及該差拍狀態資訊而從該點處繼續。
  3. 如請求項2所述之設備,其中該返回位址指示一最早向量指令之一位址,該最早向量指令之至少一個差拍仍未完成。
  4. 如請求項1至3中任一項所述之設備,其中該複數個向量指令包含一最早向量指令及至少一個後續向量指令,該最早向量指令之至少一個差拍仍有待完成。
  5. 如請求項1至3中任一項所述之設備,其中該處理電路系統經配置以在該給定向量指令之該複數個差拍的一第一子集完成之後,執行該給定向量指令之該複數個差拍的一第二子集。
  6. 如請求項5所述之設備,其中該處理電路系統經配置以並行執行一第一向量指令的該第二差拍子集與一第二向量指令的該第一差拍子集。
  7. 如請求項1至3中任一項所述之設備,包括 控制電路系統,以在不同指令間改變一個向量指令中有多少差拍將在隨後一向量指令的一第一差拍開始之前完成。
  8. 如請求項1至3中任一項所述之設備,其中該處理電路系統包括硬體,該硬體不足以並行執行該給定向量指令中之該複數個差拍的全部。
  9. 如請求項1至3中任一項所述之設備,其中該處理電路系統包括硬體,該硬體經配置以支援並行執行該給定向量指令之該複數個差拍的全部。
  10. 如請求項1至3中任一項所述之設備,其中該處理電路系統經配置以使該處理電路系統執行的軟體、一異常處理程式及一調試程式中之至少一者可存取該差拍狀態資訊。
  11. 如請求項1至3中任一項所述之設備,其中該事件包括一調試事件,且該從事件返回請求包括一從一調試狀態返回。
  12. 如請求項1至3中任一項所述之設備,其中該事件包括一異常事件,且該從事件返回請求包括一異常返回。
  13. 如請求項12所述之設備,其中該異常事件包括一故障事件,且回應於該故障事件,該處理電路系統經配置以設定辨識該複數個向量指令中哪一者是 偵測到該故障事件的該給定向量指令之資訊。
  14. 如請求項12所述之設備,其中回應於該異常事件,該處理電路系統經配置以去能對該差拍狀態資訊的存取;及回應於嘗試存取該差拍狀態資訊的一指令或包括複數個處理差拍的又一向量指令之至少一種的執行,該處理電路系統經配置以:保存該差拍狀態資訊至一預定位置;或發生一第二異常事件。
  15. 如請求項12所述之設備,其中回應於該異常事件,該處理電路系統經配置以相對於由一堆疊指標暫存器指示的一值以一偏移量將該差拍狀態資訊保存到一資料儲存裝置中之一位置。
  16. 如請求項15所述之設備,其中該處理電路系統可在複數個安全狀態下操作,該等狀態包括至少一安全狀態及一安全性較低狀態,其中回應於導致從該安全狀態到該安全性較低狀態的一轉變的該異常事件,該處理電路系統經配置以清除該差拍狀態資訊。
  17. 如請求項1至3中任一項所述之設備,其中該處理電路系統經配置以藉由以下各者中之一者抑制一給定處理差拍:抑制一目的向量暫存器中對應於該給定處理差拍之 一部分的更新;及抑制關連於該給定處理差拍之一處理操作。
  18. 一種用於處理向量指令的設備,包括:用於處理向量指令構件,用於該等指令的一源運算元及一結果值中之至少一者是包括複數個資料元件之一向量值;其中回應於一給定向量指令,該用於處理之構件經配置以執行複數個處理差拍,每一差拍包括對應於該向量值中之一部分之處理;該用於處理之構件經配置以設定差拍狀態資訊,該差拍狀態資訊可指示包括該給定向量指令的複數個向量指令中之哪些差拍已完成;回應於一事件,該用於處理之構件經配置以暫停該給定向量指令之處理;及回應於指示返回至該給定向量指令之處理的一從事件返回請求,該用於處理之構件經配置以繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示為已完成的該複數個向量指令之該等差拍;其中該向量值包括資料元件,該等資料元件具有由資料元件大小資訊規定的複數個資料元件大小中之一者,該用於處理之構件可存取該資料元件大小資訊;及 每一處理差拍包括對應於該向量值的一固定大小部分的處理,無論由該資料元件大小資訊指示何種資料元件大小。
  19. 一種處理向量指令的方法,用於該等向量指令的一源運算元及一結果值中之至少一者是包括複數個資料元件之一向量值;該方法包括以下步驟:回應於一給定向量指令,執行複數個處理差拍,每一差拍包括對應於該向量值中之一部分之處理;設定差拍狀態資訊,該差拍狀態資訊可指示包括該給定向量指令的複數個向量指令中之哪些差拍已完成;回應於一事件,暫停該給定向量指令之處理;及回應於指示返回至該給定向量指令之處理一從事件返回請求,該請求,繼續該複數個向量指令之處理,同時抑制由該差拍狀態資訊指示為已完成的該複數個向量指令之差拍;其中該向量值包括資料元件,該等資料元件具有由資料元件大小資訊規定的複數個資料元件大小中之一者;及每一處理差拍包括對應於該向量值的一固定大小部分的處理,無論該資料元件大小資訊指示何種資料元件大小。
  20. 一種虛擬機電腦程式,該電腦程式包括程式指令,該等程式指令用以控制一主機資料處理設備以提供對應於如請求項1至17中任一項所述之設備的一指令執行環境。
TW106109458A 2016-03-23 2017-03-22 處理向量指令 TWI756212B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1604944.7 2016-03-23
GB1604944.7A GB2548601B (en) 2016-03-23 2016-03-23 Processing vector instructions

Publications (2)

Publication Number Publication Date
TW201734769A TW201734769A (zh) 2017-10-01
TWI756212B true TWI756212B (zh) 2022-03-01

Family

ID=55968774

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106109458A TWI756212B (zh) 2016-03-23 2017-03-22 處理向量指令

Country Status (9)

Country Link
US (1) US11269649B2 (zh)
EP (1) EP3433724B1 (zh)
JP (1) JP6882320B2 (zh)
KR (1) KR102379886B1 (zh)
CN (1) CN108834427B (zh)
GB (1) GB2548601B (zh)
IL (1) IL261309B (zh)
TW (1) TWI756212B (zh)
WO (1) WO2017163023A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2580068B (en) * 2018-12-20 2021-02-24 Advanced Risc Mach Ltd Generating a vector predicate summary
GB2620381B (en) * 2022-06-30 2024-08-07 Advanced Risc Mach Ltd Vector extract and merge instruction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0205809A2 (en) * 1985-06-17 1986-12-30 International Business Machines Corporation Vector processing
US7043616B1 (en) * 2002-04-18 2006-05-09 Advanced Micro Devices, Inc. Method of controlling access to model specific registers of a microprocessor
US20120054877A1 (en) * 2010-08-31 2012-03-01 International Business Machines Corporation Resource management and security system
US20130212700A1 (en) * 2012-02-08 2013-08-15 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0766329B2 (ja) * 1985-06-14 1995-07-19 株式会社日立製作所 情報処理装置
US5113521A (en) 1988-03-18 1992-05-12 Digital Equipment Corporation Method and apparatus for handling faults of vector instructions causing memory management exceptions
EP0333365A3 (en) 1988-03-18 1991-05-08 Digital Equipment Corporation Method and apparatus for handling asynchronous memory management exceptions by a vector processor
US5008812A (en) 1988-03-18 1991-04-16 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
US5623650A (en) 1989-12-29 1997-04-22 Cray Research, Inc. Method of processing a sequence of conditional vector IF statements
US6317819B1 (en) 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
US6304963B1 (en) * 1998-05-14 2001-10-16 Arm Limited Handling exceptions occuring during processing of vector instructions
US6530011B1 (en) 1999-10-20 2003-03-04 Sandcraft, Inc. Method and apparatus for vector register with scalar values
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6701424B1 (en) * 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
GB2376100B (en) 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
US20030221086A1 (en) 2002-02-13 2003-11-27 Simovich Slobodan A. Configurable stream processor apparatus and methods
US20050273559A1 (en) 2004-05-19 2005-12-08 Aris Aristodemou Microprocessor architecture including unified cache debug unit
US7594102B2 (en) 2004-12-15 2009-09-22 Stmicroelectronics, Inc. Method and apparatus for vector execution on a scalar machine
US8098251B2 (en) 2008-02-22 2012-01-17 Qualcomm Incorporated System and method for instruction latency reduction in graphics processing
GB2470782B (en) * 2009-06-05 2014-10-22 Advanced Risc Mach Ltd A data processing apparatus and method for handling vector instructions
US10175990B2 (en) * 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking
GB2489914B (en) 2011-04-04 2019-12-18 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector operations
WO2013048369A1 (en) * 2011-09-26 2013-04-04 Intel Corporation Instruction and logic to provide vector load-op/store-op with stride functionality
US9098265B2 (en) * 2012-07-11 2015-08-04 Arm Limited Controlling an order for processing data elements during vector processing
US20140188961A1 (en) 2012-12-27 2014-07-03 Mikhail Plotnikov Vectorization Of Collapsed Multi-Nested Loops
KR102179385B1 (ko) 2013-11-29 2020-11-16 삼성전자주식회사 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체
US10387150B2 (en) 2015-06-24 2019-08-20 International Business Machines Corporation Instructions to count contiguous register elements having a specific value in a selected location
US11275590B2 (en) 2015-08-26 2022-03-15 Huawei Technologies Co., Ltd. Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0205809A2 (en) * 1985-06-17 1986-12-30 International Business Machines Corporation Vector processing
US7043616B1 (en) * 2002-04-18 2006-05-09 Advanced Micro Devices, Inc. Method of controlling access to model specific registers of a microprocessor
US20120054877A1 (en) * 2010-08-31 2012-03-01 International Business Machines Corporation Resource management and security system
US20130212700A1 (en) * 2012-02-08 2013-08-15 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain

Also Published As

Publication number Publication date
GB201604944D0 (en) 2016-05-04
TW201734769A (zh) 2017-10-01
JP6882320B2 (ja) 2021-06-02
IL261309B (en) 2020-08-31
CN108834427A (zh) 2018-11-16
IL261309A (en) 2018-10-31
CN108834427B (zh) 2023-03-03
US11269649B2 (en) 2022-03-08
EP3433724B1 (en) 2022-09-07
GB2548601A (en) 2017-09-27
GB2548601B (en) 2019-02-13
WO2017163023A1 (en) 2017-09-28
US20190056933A1 (en) 2019-02-21
EP3433724A1 (en) 2019-01-30
KR20180126518A (ko) 2018-11-27
KR102379886B1 (ko) 2022-03-30
JP2019510313A (ja) 2019-04-11

Similar Documents

Publication Publication Date Title
US11263073B2 (en) Error recovery for intra-core lockstep mode
US10599428B2 (en) Relaxed execution of overlapping mixed-scalar-vector instructions
US10795675B2 (en) Determine whether to fuse move prefix instruction and immediately following instruction independently of detecting identical destination registers
EP3574405B1 (en) Error detection using vector processing circuitry
EP3433723B1 (en) Branch instruction
TW201737060A (zh) 程式迴圈控制
TWI756212B (zh) 處理向量指令
TWI770079B (zh) 向量產生指令
US7831979B2 (en) Processor with instruction-based interrupt handling
US10481913B2 (en) Token-based data dependency protection for memory access
US6990569B2 (en) Handling problematic events in a data processing apparatus
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
US6453412B1 (en) Method and apparatus for reissuing paired MMX instructions singly during exception handling
JP2004508607A (ja) 例外ルーチンを有するプロセッサのレジスタライトトラフィックを減じる装置及び方法
EP1235139A2 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
Kong Interrupt Support on the ρ-VEX processor
WO2016014081A1 (en) Exception handling predicate register