TWI713589B - 處理用於向量算術指令的例外狀況 - Google Patents
處理用於向量算術指令的例外狀況 Download PDFInfo
- Publication number
- TWI713589B TWI713589B TW105130975A TW105130975A TWI713589B TW I713589 B TWI713589 B TW I713589B TW 105130975 A TW105130975 A TW 105130975A TW 105130975 A TW105130975 A TW 105130975A TW I713589 B TWI713589 B TW I713589B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- exception
- valid data
- data element
- arithmetic operation
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 290
- 238000012545 processing Methods 0.000 claims abstract description 76
- 230000004044 response Effects 0.000 claims abstract description 64
- 230000009471 action Effects 0.000 claims abstract description 44
- 230000001960 triggered effect Effects 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 5
- 238000003672 processing method Methods 0.000 claims description 3
- 230000001788 irregular Effects 0.000 claims description 2
- 108091006146 Channels Proteins 0.000 description 33
- 238000005516 engineering process Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 229920006395 saturated elastomer Polymers 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
處理電路系統30、35支援規定至少第一輸入向量之第一類型之向量算術指令。當偵測到用於算術運算之至少一個例外狀況時,處理電路系統30、35執行至少一個回應動作,該算術運算針對在預定序列中之第一輸入向量之第一有效資料元件執行。當針對在預定序列中除第一有效資料元件之外的給定有效資料元件偵測到至少一個例外狀況時,處理電路系統30、35抑制至少一個回應動作且儲存元件識別資訊,該元件識別資訊識別哪個資料元件係觸發例外狀況的給定有效資料元件。此舉可用來降低用於追蹤例外狀況之出現及/或支援向量指令之推測執行的硬體資源量。
Description
本技術係關於資料處理之領域。更特定言之,本技術係關於處理向量算術指令。
一些資料處理設備可支援向量處理,其中可在向量之各資料元件上執行給定處理操作以產生結果向量之對應資料元件。此舉允許利用單一指令處理數個不同資料值,以減少處理給定數量之資料值所需之程式指令的數量。向量處理亦可稱為單指令,多資料(Single instruction, multiple data; SIMD)處理。
至少一些實例提供一種設備,該設備包含: 處理電路系統,回應於規定至少第一輸入向量的第一類型之向量算術指令,該處理電路系統執行對於第一輸入向量之至少一個有效資料元件的算術運算,該第一輸入向量包含複數個資料元件; 其中第一輸入向量的資料元件具有預定序列; 當偵測到對於算術運算的至少一個例外狀況時,該算術運算針對在預定序列中之第一有效資料元件執行,該處理電路系統經配置以執行至少一個回應動作;以及 當偵測到對於算術運算的至少一個例外狀況時,該算術運算針對在該預定序列中除該第一有效資料元件以外的給定有效資料元件執行,該處理電路系統經配置以抑制該至少一個回應動作且儲存元件識別資訊,該元件識別資訊識別第一輸入向量中之哪個資料元件為該給定有效資料元件。
至少一些實例提供一種設備,該設備包含:
手段,用於回應於規定至少第一輸入向量的第一類型之向量算術指令,執行用於第一輸入向量之至少一個有效資料元件的算術運算,該第一輸入向量包含複數個資料元件;
其中第一輸入向量之資料元件具有預定序列;
當偵測到對於算術運算的至少一個例外狀況時,該算術運算針對在預定序列中之第一有效資料元件執行,用於執行之手段經配置以執行至少一個回應動作;以及
當偵測到對於算術運算的至少一個例外狀況時,該算術運算針對在該預定序列中除該第一有效資料元件之外的給定有效資料元件執行,用於執行之手段經配置以抑制該至少一個回應動作且儲存元件識別資訊,該元件識別資訊識別第一輸入向量中之哪個資料元件為該給定有效資料元件。
至少一些實例提供一種資料處理方法,該資料處理方法包含:
回應於規定至少第一輸入向量的第一類型之向量算術指令,該第一輸入向量包含複數個資料元件,執行用於第一輸入向量之至少一個有效資料元件的算術運算,其中第一輸入向量的資料元件具有預定序列;
當偵測到用於算術運算之至少一個例外狀況時,該算術運算針對在預定序列中之第一有效資料元件執行,執行至少一個回應動作;以及
當偵測到用於算術運算之至少一個例外狀況時,該算術運算針對在該預定序列中除該第一有效資料元件之外的給定有效資料元件執行,抑制該至少一個回應動作且儲存元件識別資訊,該元件識別資訊識別第一輸入向量中之哪個資料元件為該給定有效資料元件。
至少一些實例提供一種在電腦可讀儲存媒體上儲存的電腦程式,該電腦程式當由資料處理設備執行時,提供一虛擬機,該虛擬機提供對應於上述設備的指令執行環境。
現在將描述一些具體實例。應瞭解,本發明不限於此等特定實例。
處理電路系統可支援至少第一類型之向量算術指令,該類向量算術指令規定包含多個資料元件的至少第一輸入向量。回應於第一類型之向量算術指令,該處理電路系統可執行用於第一輸入向量之至少一個有效資料元件的算術運算。有時,可偵測到用於算術運算的例外狀況,該算術運算針對第一輸入向量之一或更多個有效資料元件執行。例如,例外狀況可指示結果超出可由結果值表示之範圍,或已經出現錯誤。
可認為第一輸入向量的資料元件具有預定序列。當偵測到用於算術運算之至少一個例外狀況時,該算術運算針對在序列中之第一有效資料元件執行,該處理電路系統可執行至少一個回應動作。然而,當偵測到用於算術運算之至少一個例外狀況時,該算術運算針對在序列中除第一有效資料元件之外的給定有效資料元件執行,則該處理電路系統可抑制至少一個回應動作且儲存資料識別資訊,該資料識別資訊識別第一輸入向量中之哪個資料元件為對其偵測到例外狀況之給定有效資料元件。
此方法可提供若干優點。首先,追蹤已經偵測到之例外狀況,且若必要,則執行至少一個回應動作,可需要在處理電路系統中提供某些資源。提供分別用於正在執行處理之各向量通道的此等資源,就電路區域而言及就管理此等資源的額外負擔而言係高成本的。實際上,例外狀況可比較少見且由此此額外負擔係不合理的。藉由當執行用於在序列中第一有效資料元件之例外狀況時執行回應動作,但若其他資料元件觸發該例外狀況則抑制此回應動作,可利用對應於單一資料元件的單一組資源有效管理例外狀況處理,而不需要複製用於向量之各資料元件的此等資源。
當序列中後續元件觸發例外狀況時,元件識別資訊用於利用故障元件再啟動向量算術指令之執行,該故障元件現為第一有效資料元件。以此方式,執行算術指令之重複迭代可利用任何例外狀況通過向量元件逐漸取得前向進度,正在使用用於各路徑上之第一有效資料元件的單一組資源追蹤該任何例外狀況,從而消除對每向量通道多組資源之需求。
例如,當偵測到用於第一有效資料元件之例外狀況時,至少一個回應動作可包括更新狀態暫存器以指示出現哪種例外狀況。例如,狀態暫存器可包括一組位元,該組位元指示不同類型例外狀況且該回應可包含設定用於偵測到類型之例外狀況的適當位元。藉由執行用於第一有效資料元件而非觸發例外狀況之其他元件的回應,單一組例外狀況指示位元在完整向量的資料元件間共享(每種類型例外狀況一個位元),且並非必需提供每通道多組狀態位元以追蹤針對每個資料元件出現的例外狀況。此舉可大幅度降低硬體的複雜性,不僅僅允許使用較小狀態暫存器,亦降低狀態標記的數量,該狀態標記沿處理電路系統中之資料路徑傳送。
此外,回應動作可包含觸發例外處理常用程式之執行。例如,當某些例外狀況出現時,則此舉可觸發對作業系統或其他控制程式之阱,該系統採取措施以處理例外狀況。因此,若偵測到對於序列中第一有效資料元件而非對於其他元件之例外狀況,則可執行例外處理常用程式。
在一些實施方式中,若偵測到用於序列中第一有效資料元件之某些例外狀況,則此等例外狀況通常觸發例外處理常用程式。或者,可提供組態暫存器以規定組態資訊,該組態資訊指示是否觸發用於不同類型的例外狀況之例外處理程式的執行。在此情形中,僅當在組態暫存器中之組態資訊規定應觸發用於偵測到類型之例外狀況的例外處理常用程式時,則回應可包含觸發例外處理常用程式之執行。
一些系統可支援向量運算之推測執行,其中給定狀況決定是否需要處理向量之某些元件,但在已實際解決有關狀況之前可執行此向量指令。在一些情形中,有關狀況可甚至取決於執行用於向量的一些元件之向量指令的結果,以決定是否應實際處理其他元件。允許此推測執行可使與系統相比向量化代碼更為有效或實際,該系統需要精確知道在執行指令之前處理哪些元件。例如,當向量處理用於並行處理相同程式循環的不同迭代及向量運算元之不同元件時此舉通常係有用的,該或該等向量運算元之不同元件對應於在相同循環之不同迭代中使用或產生之值。
然而,若向量算術指令的推測執行係可能的,當隨後證實一旦已經解決有關條件,則不應處理該等資料元件時,則一個結果可為推測地處理第一輸入向量之一些資料元件。若此等元件導致正在偵測之例外狀況,則當實際上甚至不應首先執行此操作時,此舉導致採取回應動作(例如,更新狀態暫存器或執行例外處理常用程式)。不期望引起歸因於向量處理之不正確推測通道的此等副效應。
一種方法可用以維持兩種不同版本之狀態暫存器,一種推測版本狀態暫存器及一種非推測版本狀態暫存器,且一旦已經確定處理之推測執行通道,則隨後基於推測版本更新非推測版本。然而,就硬體而言此舉係更為高成本,由於需要額外暫存器以追蹤推測及非推測版本狀態暫存器,以及一旦已經解決推測,則需要待執行之額外指令以解決經確定版本之狀態指示。藉由使用上文論述之技術,可避免此增加之額外負擔,因為一般而言,在序列中之第一有效資料元件將為處理之非推測執行通道,且由此回應於針對此元件偵測到之例外狀況執行回應動作係安全的。針對輸入向量的其他元件,即使此等元件產生例外狀況,此舉亦不觸發回應動作,由此若隨後證實處理之此等通道係誤推測,則不產生不利副效應。因此,上述技術亦有助於使推測執行向量運算之處理更為有效。
可以不同方式決定輸入向量之有效元件。在一些情形中,可認為輸入向量之所有元件係有效元件,由此不存在定義哪些資料元件係有效或非有效的任何資料。即,輸入向量係非述語向量。在此情形中,第一有效元件可僅為向量的第一元件(例如,若將預定序列處理為從最低有效元件延伸至最高有效元件,則為最低有效元件)。
然而,更靈活技術可為將輸入向量與掩碼關聯,該掩碼指示哪些資料元件係有效或非有效資料元件。在此情形中,第一有效資料元件可為除輸入向量之第一元件之外的元件。
若偵測到用於在序列中除第一有效資料元件之外的給定有效資料元件的例外狀況,則元件識別資訊可用於修改有關用於後續嘗試之向量算術指令之掩碼且執行指令或修改用於後續嘗試之輸入向量本身。可更新掩碼使得觸發例外狀況之給定元件成為在序列中之第一有效資料元件(例如,在前元件現可指示為非有效),或可修改在第一輸入向量中之元件之位置使得目前新的第一輸入向量之第一有效資料元件具有用於先前嘗試以執行該指令的如在第一輸入向量中的給定有效資料元件之相同值。舉例而言,程式設計器可包括在圍繞向量算術指令之循環中的一或更多指令,以檢查元件識別資訊來瞭解是否成功處理全部元件,該元件識別資訊由一個用以執行向量算術指令的嘗試產生,且若識別給定有效資料元件之元件識別資訊已觸發例外狀況,則在循環返回以用於另一嘗試之前可修改掩碼或輸入向量。在隨後嘗試中,給定有效資料元件現在可為第一有效資料元件且由此若例外狀況仍產生,則可採取回應動作以允許處理例外狀況。因此,指令可使用用於處理例外狀況之僅單一組資源通過輸入向量的元件逐步取得前向進度。
在基於元件識別資訊更新第一輸入向量的情形中,此舉可藉由轉換第一輸入向量達成,使得給定有效資料元件成為第一有效資料元件(且在給定有效資料元件之後的任何元件亦可沿在對應元件中之位置移動至給定有效資料元件)。或者,若向量運算指令在利用從快取記憶體或記憶體載入之資料填充第一輸入向量(或用於產生第一輸入向量之較早向量)的較早向量載入指令之後,則可藉由將向量載入指令之位址調整達對應於在如由元件識別資訊指示之原始向量中的給定有效資料元件位置之量,且重複向量載入指令以及向量算術指令本身來有效更新第一輸入向量。以此方式,下次執行向量算術指令時,向量載入指令將使資料載入對應於第一有效元件之向量中的位置中,該資料對應於先前故障資料元件。
可以不同方式表示元件識別資訊。在一些情形中,該元件識別資訊單純為給定有效資料元件之元件數量之指示,該給定有效資料元件觸發例外狀況。然而,特別有用之表示可用以提供元件識別掩碼,該元件識別掩碼包含:一或更多個指示,該一或更多個指示具有用於在序列中之給定有效資料元件前的至少一個資料元件之第一值;及一或更多個指示,該一或更多個指示具有用於序列中之給定有效資料元件及任何後續有效資料元件的第二值。因此,元件識別掩碼可基本上將向量分為已經處理且不具有故障之部分以及可仍導致故障之部分。此元件識別掩碼可啟用用於隨後嘗試之新掩碼以更有效執行產生之指令。此外,由於存在正在執行以實施一系列資料處理運算之若干成功指令,此類型之元件識別掩碼係有用的;及若此等指令之任一者遇到用於給定元件之例外狀況,則期望停止在隨後指令中正在執行之處理的相應通道。因此,上文論述之類型之元件識別掩碼可用於產生亦用於隨後指令之掩碼。
用於輸入向量之元件的預定序列可為任意序列。然而,通常在序列中之第一有效資料元件為第一輸入向量之最低有效有效資料元件可為方便的。在序列中之隨後元件則可對應於輸入向量的資料元件,以增加有效值直至最高有效的有效資料元件。此方法可最佳映射至其中實際寫入向量化代碼之方式。然而,可使用其他序列,諸如起始於最高有效的有效資料元件並結束於最低有效元件的序列。
若在序列中除第一有效資料元件之外的超過一個有效資料元件遇到例外狀況,則在一些情形中,元件識別資訊可識別此等元件之各者。或者,元件識別資訊可僅識別觸發例外狀況之序列中的下一個元件(在第一有效資料元件之後),且即使後續元件亦可導致例外狀況,該元件識別資訊亦不可識別任何其他元件。
在一些實施方式中,該處理電路系統可通常以上文論述的方式處理向量算術指令,其中僅當第一有效資料元件觸發例外狀況時採取回應動作。
然而,其他實施方式亦可支援第二類型之向量算術指令,針對此第二類型之向量算術指令,該處理電路系統回應於偵測用於該向量之任何有效資料元件的例外狀況執行至少一個回應動作,無論是否偵測到用於第一有效元件或後續元件之例外狀況。第一及第二類型之向量算術指令可為完全不同之指令(例如,具有不同運算碼),或可對應於具有欄位的通用指令運算碼,在指令編碼時該通用指令運算碼規定該指令是否係第一類型或第二類型。或者,第一及第二類型之向量算術指令具有相同編碼,但第一類型之向量算術指令可為在第一模式之處理電路系統中執行的向量算術指令,而第二類型之向量指令可為在第二模式之處理電路系統中執行的向量算術指令。例如,存在規定該處理電路系統當前是否為第一或第二模式的控制暫存器。
提供第一及第二類型兩者之向量算術指令可用於啟用程式設計器以取決於待執行之代碼性質在替代類型的指令之間選擇,其中僅當第一有效元件遇到例外狀況時第一類型之向量算術指令觸發回應動作,而第二類型可觸發用於任何有效元件的回應動作。例如,若代碼需要如上文論述之向量運算之推測執行,則可選擇第一類型以避免回應於向量通道不經意地觸發副效應,該向量通道最終不需要以任何方式執行。在另一方面,針對非推測代碼,可選擇第二類型之向量算術指令以改良效能,由於第二類型之向量算術指令較不可能需要若干迭代以通過向量的各元件取得前向進展。因此,提供兩種類型之指令可提供在正確行為與效能間的更佳平衡。
在一些實施方式中,針對第二類型之向量算術指令,偵測到對於第一輸入指令的任何元件的例外狀況之回應可包含記錄對哪些元件觸發例外狀況及偵測到哪些例外類型的精確指示。然而,此舉可能需要大量額外負擔。實際上,例外狀況可為少見的且由此該額外負擔可為不合理的。實情為,第二類型之向量算術指令可觸發回應動作,該回應動作包含更新狀態暫存器以提供任何類型的例外狀況之指示,該例外狀況針對輸入向量的任何有效資料元件出現,而不區分哪些特定元件觸發哪些特定類型之例外狀況。在眾多情形中,此舉足夠允許例外處理常用程式(例如,諸如作業系統)以決定如何解決該例外狀況。
該例外狀況可為由算術運算觸發的任何類型之狀況,該算術運算指示需要進一步研究的一些異常結果或性質。本技術特別用於其中算術運算包含浮點運算的指令。用於浮點算術之IEEE 754標準規定數個例外狀況,應針對浮點運算追蹤此等例外狀況。例如,此等例外狀況可包括下列情況之一或更多者:溢出、下溢、不準確、無效運算或除以零。可針對浮點運算而追蹤的另一類型之例外狀況可為至給定算術運算之輸入是否係非正規的(即,其有效數位起始於至少一個前導零,而非起始於1,如對於正規浮點值而言)。由於存在待追蹤之相對大量之例外狀況,記錄用於向量之每個通道的此等例外狀況應係非常高成本,且由上文論述之技術可藉由允許單一組位元在向量通道間共享來大幅度節省硬體資源,一個位元用於每一類型之例外狀況。
本技術亦可用於非浮點運算。例如,針對整數運算,一些指令可執行飽和算術運算,其中限制算術運算之結果以位於某些最小及最大界限之範圍中。在此情形中,當在飽和算術運算中產生之值的飽和度出現時,可產生例外狀況。即,若算術運算產生大於飽和度之最大界限或小於最小界限的結果,則可觸發例外狀況。
例如,回應於向量算術指令執行的算術運算可為加法、減法、乘法、除法、乘法-加法、乘法-減法、平方根等等。算術運算亦可為用以將給定資料值之表示轉換為不同形式之轉換運算,諸如在浮點值之不同精確度間轉換或在浮點值與整數值間轉換。針對一些指令(諸如轉換指令),第一輸入向量可僅為該指令之輸入向量。針對其他指令,諸如加法、減法或乘法指令,亦存在第二輸入向量,該第二輸入向量的資料元件將與第一輸入向量的資料元件合併。一些指令甚至可滿足三個或三個以上輸入向量(例如,乘法-加法)。
本技術亦可使用虛擬機實施。虛擬機可為一程式,當由主機設備執行時該虛擬機提供用於執行指令的指令執行環境,使得該等主機設備由程式設計師之觀點顯示,如同其具有上文論述之電路系統。主機處理器實際上本身不需要具有該電路系統,而是虛擬機之代碼控制主機硬體以執行如同提供此電路系統之指令。例如,虛擬機可為在儲存媒體上儲存的電腦程式。該儲存媒體可為非暫時性的。
第1圖係其中可採用所述實施例之技術的系統之方塊圖。在第1圖中所示之實例中,該系統採取管線式處理器之形式。藉由擷取電路系統10從指令快取記憶體15(通常經由一或更多個其他階層之快取記憶體,諸如2階快取記憶體50耦接至記憶體55)來擷取指令,其中經由解碼電路系統20自擷取電路系統傳遞此等指令,此解碼電路系統20解碼各指令以產生適當控制信號,該控制信號用於控制在管線式處理器中之下游執行資源以執行該指令所需之運算。將形成經解碼指令之控制信號傳遞至發佈階段電路系統25,用於發佈至管線式處理器中的一或更多個執行管線30、35、40、80。可將執行管線30、35、40、80共同地認為形成處理電路系統。
發佈階段電路系統25已存取暫存器60,其中儲存由運算所需之資料值。特定言之,用於向量運算之源運算元可儲存在向量暫存器65中,且用於純量運算之源運算元可儲存在純量暫存器75中。此外,一或更多述語(掩碼)可儲存在述語暫存器70中,當執行某些向量運算時用作用於處理之向量運算元之資料元件的控制資訊。一或更多純量暫存器亦可用於儲存用以導出此控制資訊之資料值,此控制資訊在某些向量運算之執行期間使用。
暫存器60亦可包括用以提供各種控制資訊的數個控制暫存器76,該控制資訊諸如用於控制處理管線之操作的組態資訊,或指示在處理或指令結果性質期間產生的狀況之狀態資訊。例如,控制暫存器76可包括浮點組態暫存器(floating point configuration register; FPCR)77、浮點狀態暫存器(floating point status register; FPSR)78及第一故障暫存器(first faulting register; FFR)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圖中明確圖示),例如將由指令規定之架構暫存器映射至來自暫存器組60中之一組實體暫存器的實體暫存器(該組實體暫存器通常大於架構暫存器之數量)的暫存器重命名電路系統,由此實現移除某些風險,促進無序處理之更多使用。此外,通常可提供重排序緩衝器以保持追蹤無序執行,且允許按序確認各指令之執行結果。
在描述之實施例中,佈置第1圖之電路系統以在向量暫存器65中儲存之向量運算元上執行向量運算,其中向量運算元包含複數個資料元件。針對在此向量運算元上執行的某些向量運算(諸如算術運算),可將所需運算並行(或迭代)應用至向量運算元中的各種資料元件。述語資訊(亦稱為掩碼)可用於識別在向量中之哪些資料元件係用於特定向量運算的有效資料元件,並因此該資料元件係運算將要應用的資料元件。
第2圖更詳細圖示FPSR 77及FPSR 78的實例。如第2圖中所示,FPSR 78可包括數個例外,該等例外指示各自對應於不同類型之例外狀況的位元85且指示自從最終清除位元85起,出現對應類型之至少一個例外狀況。在此實例中,在FPSR 78中指示之例外狀況包括: QC:整數飽和,若飽和整數運算結果超過最大界限或小於用於飽和度之最小界限,此例外狀況則出現; IDC:非正規輸入,若至浮點運算的輸入值係非正規,此例外狀況則出現; IXC:不準確,若浮點運算結果不能使用針對輸出規定的浮點格式準確表示,此例外狀況則出現; UFC:下溢,當浮點運算結果小於可使用針對輸出規定的浮點格式表示時,此例外狀況出現; OFC:溢出,若浮點運算結果大於可使用針對輸出規定的浮點格式表示,此例外狀況則出現; DZC:除以零,若嘗試除以零,此例外狀況則出現; IOC:無效運算,若嘗試執行無效運算,此例外狀況則出現。
應瞭解,亦可指示其他類型之例外狀況。在某種意義上累計例外指示位元85,該等例外指示位元一旦設定將保持設定,直至由處理管線執行之指令明確清除FPSR 78的位元,或整體清除FPSR為止。因此,當出現例外狀況導致設定對應位元時,不觸發例外狀況之指令將不清除對應位元。
FPCR 77包括數個例外掩碼位元87,各位元對應於在FPSR 78中指示的該等類型的例外狀況之一者。例外掩碼位元控制在FPSR 78中之各類型的例外狀況是否將觸發至作業系統以處理該類型例外的阱。例如,在第2圖之情形中,該系統當前經配置使得除以零或無效運算例外狀況將觸發對作業系統之阱,而其他種類之例外狀況將不會如此觸發。應瞭解,未在第2圖中圖示之其他資訊亦可儲存在FPCR及FPSR 78中。
在此實施例中,提供在用於給定向量運算之全部向量通道中共享的單一FPSR 78,該FPSR 78具有每種類型之例外的單一例外指示位元85。因此,FPSR 78實際上係純量FPSR且不包括指示分別用於各向量元件之例外的每通道位元。
第3圖圖示由浮點單元35支援之非第一故障形式之向量算術指令的實例。在此實例中,待執行之算術運算係浮點加法運算。該指令將在向量暫存器65中儲存的一對向量Za、Zb,及在述語暫存器70中儲存的述語Pg作為輸入,述語Pg提供識別輸入向量Za、Zb之哪些元件係有效的述語值(或掩碼)。在第3圖之實例中,掩碼指示Za及Zb的元件0至3係有效的且元件4至7係非有效的。因此,回應於向量算術指令,浮點單元35執行在暫存器Za、Zb之通道0至3中之對應元件X、Y的浮點加法以在結果暫存器Zr中產生對應結果元件Z0至Z3。在另一方面,在結果暫存器之非有效通道中,元件Z4至Z7採用獨立於針對彼等通道另外執行之加法結果的值。例如,Z4至Z7可設定為諸如零之預定值,可直接映射至在Za、Zb之對應通道中的輸入值之一者,或可保持先前儲存在結果暫存器Za之對應部分中的值。因此,僅將有效通道設定為取決於算術運算結果的值,該算術運算在輸入的對應元件上執行。
針對非第一故障形式之向量算術指令,若出現對於向量之任何有效通道的任何例外狀況,則設定在FPSR 78中之對應位元。有效地,可使用OR運算合併由各有效通道觸發之例外狀況之指示以由此設定FPSR 78。例如,在第3圖中,元件Z0觸發不準確例外IXC而元件Z3觸發溢出例外PFC,且由此可在FPSR 78中設定對應此等類型之例外之位元85。若FPCR 77指示此等類型之例外應觸發對作業系統之阱,則實施該阱且該作業系統可執行用於處置此等類型之例外的例外處理常用程式。應注意,針對在第3圖中圖示的非第一故障形式指令,FPSR不區分哪些特定元件觸發該例外狀況。
第4圖圖示不同第一故障形式之向量算術指令。算術運算本身係與第3圖相同,其中執行用於各通道的輸入向量Za、Zb中之對應元件的浮點加法,對於該各通道之在述語暫存器Pg中之掩碼的對應位元係1。此時掩碼的所有元件為一,且由此針對此實例所有該等元件係有效的。在此實例中,在第4圖中圖示的第一故障形式之指令具有與在第3圖中圖示的非第一故障形式之指令相比不同之運算碼。或者,不同形式之指令可共享相同運算碼,但可包括規定正在執行哪種形式之指令的欄位。此外,在一些情形中,非第一故障形式及第一故障形式的指令之編碼可為完全相同,但該指令是否被視為第一形式或第二形式可取決於處理電路系統的當前操作模式。例如,在FPCR 77或其他控制暫存器76之一者中可存在位元,該控制暫存器76設定處理器模式以指示向量算術運算是否應根據第3圖之非第一故障形式或第4圖之第一故障形式執行。
針對在第4圖中圖示的第一故障形式之指令,與第3圖中非第一故障形式相比不同地處理例外狀況。如在第4圖中圖示,若出現對於算術運算之例外狀況,該算術運算在向量的第一有效元件(在此實例中為最低有效元件X0/Y0/Z0)中執行,則採用適當例外處理回應。舉例而言,此舉可包括設定在FPSR 78中之對應位元;及取決於FPCR是否實現俘獲此類例外,視需要俘獲該作業系統。即使偵測到用於向量之其他元件的例外狀況,未採取針對此舉之回應且不基於任何例外狀況來更新FPSR 78,出現用於除向量之第一有效元件之外的任何元件的該等例外狀況。舉例而言,在第4圖中,儘管針對包含對應於元件X3/Y3/Z3之通道偵測到溢出,亦不設定FPSR 78的溢出位元。
在另一方面,如在第5圖中圖示,針對第一故障形式之指令,若第一有效元件不觸發例外狀況,則抑制故障處理回應。因此,FPSR 78保持未經修改且不存在對作業系統之阱。然而,若對於在向量中不為第一有效元件之元件的算術運算觸發例外狀況,則如在第5圖中圖示,更新第一故障暫存器79以記錄哪個元件觸發該例外。如在第5圖中圖示,第一故障暫存器可對應於故障掩碼,其中與觸發故障之元件3相比較低有效的元件0至2指示為具有位元值1,且針對觸發故障之元件3及任何後續元件,在FFR 79中之掩碼位元為0。
若需要,FFR 79提供資訊,該資訊由後續指令使用以設定用於另一嘗試以執行向量算術指令的掩碼或輸入向量。例如,如在第6圖中圖示,FFR 79可與先前掩碼Pg合併以產生新掩碼Pg’,該新掩碼Pg’表示可仍觸發尚未處理之例外狀況的剩餘元件。舉例而言,此舉可由清除等於1之原始掩碼Pg的任何位元決定,FFR 79的對應位元亦為1。若原始掩碼Pg均為1,則產生新掩碼之另一方式可為自原始掩碼Pg減去FFR 79。
或者,如在第7圖中圖示,FFR 79可用於修改用於向量算術指令之輸入向量Za,以便將在FFR 79中由零指示之元件X3至X7再次載入對應於輸入向量之第一有效元件的向量位置0至4。可執行用於任何其他輸入向量Zb之相似運算,且隨後重複向量算術指令使得目前元件X3將係第一有效元件,且若此舉觸發例外狀況,則可將此舉記錄在FPSR中,且若需要觸發此舉。
因此,使用向量算術指令之軟體可提供圍繞向量算術指令的循環,該向量算術指令檢查FFR 79以指示正確執行且無例外狀況之哪些元件且若需要重複起始於有效元件的指令,該有效元件先前觸發例外狀況。在下文第9圖中圖示此循環的實例。
此方法具有若干優點。首先,此技術實現精確記錄對於向量的各元件出現之例外狀況,包括追蹤觸發該例外狀況之哪個特定元件,使用指示在FPSR 78中之位元之僅單一組例外,以避免需要提供用於各向量通道之位元85的分離複本,由於此舉不僅需要較大FPSR 78而且需要沿管線向下之浮點例外標記之多個複本,所以當向量變大時該分離複本係非常高成本。
此外,獲自該指令之第一故障可用於支援推測執行向量運算。此舉關於第8圖及第9圖更詳細地描述。第8圖圖示非推測執行給定向量算術指令之實例,而第9圖圖示推測執行該指令之實例。
若給定組之處理運算需要應用至在資料值陣列中的各個值,以產生用於陣列各個值的對應結果,則向量指令可為特別有用。通常,可藉由提供向量載入指令向量化代碼,該向量載入指令將數個待處理之資料值從記憶體載入向量暫存器中,並隨後在執行向量儲存指令以將結果值儲存回記憶體之前,一或更多向量算術指令以一些方式處理經載入向量的各資料元件以產生結果。然而,待處理之資料值的總數通常可能不是由處理電路系統支援的向量長度之準確倍數。通常,向量化代碼可包括循環,該循環經由包括向量載入指令及數個向量算術指令的一組指令重複迭代,其中各循環迭代處理對應於向量長度的給定區塊資料值。通常,可在循環中定義某種停止條件以檢查是否已經處理全部所需資料值;且若已處理,則中斷該循環。可分別針對當前正在處理之向量的各元件檢查停止條件,且若決定停止條件滿足元件之一者,則此舉可指示實際上不需要處理向量之後續元件。
針對一些向量指令,停止條件可獨立於該向量指令的結果。如第8圖圖示,針對產生基於輸入向量Za、Zb的結果向量Zr之給定向量加法指令,對應停止條件可取決於獨立於加法結果的一些其他向量Zc。在此情形中,由於已知應無關該條件之結果處理其元件,可認為向量加法指令係非推測的。
在其他方面,如第9圖圖示,針對其他實例,停止條件可取決於向量加法指令的結果;舉例而言,在此情形中,停止條件檢查由向量加法指令產生之結果向量的任何元件j是否滿足一些條件,且若滿足則中斷此循環。若結果向量Zr之元件j中之一者滿足該條件,則此舉將指示不應已處理任何後續元件j+1、j+2等等。替代方法應執行進一步指令,該等指令在實際非推測地執行向量運算之前檢查Zr值為多少,但此舉需要額外指令及更不易於向量化代碼。藉由在已知是否實際需要全部其元件之前,允許推測地執行向量加法指令,可改良效能。然而,此舉可隨後導致一情況,其中若執行非第一故障形式指令,則可基於例外狀況更新FPSR 78,該例外狀況針對向量處理之推測通道出現,隨後證實不需要該向量處理。在此情形中,推測執行可導致不需要之副效應,該副效應指示假例外並可能非必要地俘獲至該作業系統。
此情況可藉由實際執行如關於第4圖及第5圖論述的第一故障形式之指令來避免。向量之第一有效元件一般係非推測元件,由於即使該元件滿足停止條件,其仍為一有效結果。因此,在回應於針對第一有效元件觸發的例外狀況觸發故障處理回應時,不存在問題。若任何後續元件亦觸發例外狀況,則此舉不觸發回應;且若證實此等元件係非推測,則此舉不導致任何不需要之副效應。為了當未滿足停止條件時允許正確進行該指令,如在第9圖中圖示,若FFR 79指示針對向量之任何更多元件存在待執行之任何剩餘運算,則設定圍繞向量算術指令之循環以再次嘗試該指令。舉例而言,在各個嘗試執行向量加法指令102之前,指令100可設定FFR之所有位元。若已解決該狀況,且若需要,則中斷該循環(指令104),隨後若未滿足該狀況,則指令106修改由向量算術指令102使用之掩碼Pk以指示為有效,該等剩餘元件起始於觸發該例外的元件。此舉基於如第6圖之實例中的先前掩碼70及FFR 79來決定。若存在仍待處理之至少一個剩餘元件,即,若新掩碼具有除其中全部位元為零之值以外的任何值,分支指令108則分支回到指令100。
第10圖圖示以此方式圍繞向量算術指令之多個迭代之循環的實例。在第一迭代上,未發生用於第一有效元件之例外,在此實例中第一有效元件係向量索引[1],但於向量索引[2]偵測到用於下一有效元件之例外。由於元件[2]不為第一有效資料元件,所以未採取例外回應,且實際上更新FFR 79以清除對應於元件[2]及[3]之位元。FFR 79隨後用於產生對於圍繞該循環之第二迭代的新述語,其中此時第一有效元件係通道[2],且由此此時例外觸發設定在FPSR 78中之標記,且若FPCR 77需要則觸發對作業系統之阱。相似地,若需要則可執行此指令之進一步迭代以處理在序列之後續元件中的進一步例外。
實際上,浮點例外係較為少見及通用軟體非常少見地依賴於浮點狀態標記值,由此當浮點例外產生時引入一些串行化之解決方法就效能而言係完全可以接受的。當需要推測執行向量處理時,或若精確追蹤向量的哪些特定元件觸發例外狀況非常重要,則程式設計器選擇第一故障形式之指令。在此情形中,藉由通過指令之多個循環迭代以處理在連續有效元件上逐步產生的例外,精確例外處理係可能的,且可避免由非推測通道觸發之假例外處理。
在另一方面,若當已經得知需要處理全部有效元件而正在非推測地執行向量運算時,則可選擇非第一故障形式之指令以改良效能,且避免需要提供圍繞該向量指令之循環之額外指令。相似地,若不需要精確識別觸發例外之特定通道,則可選擇非第一故障形式之指令以僅在FPSR 78中記錄針對任何通道出現之例外類型,而無需記錄觸發該例外之特定通道。
當上文實例顯示其中向量算術指令係加法指令之情形時,應瞭解,可執行相似技術至不同類型的算術運算(包括浮點運算及整數運算)之範圍。
第11圖係圖示處理向量算術指令之實例的流程圖。在步驟200中,處理管線偵測當前指令是否為向量算術指令,且若不是,則以一些其他方式處理該指令。當執行向量算術指令時,則在步驟202中管線決定指令類型。若該指令係第一類型(第一故障形式之指令),則在步驟204中執行用於輸入向量之各有效元件的對應算術運算以產生結果向量的對應結果元件。在步驟206中,決定是否偵測到用於向量之第一有效元件的例外狀況。若偵測到,則在步驟208中,更新FPSR 78以指示出現例外狀況;且在步驟210中,檢查FPCR 77以決定是否當前實現了用於偵測到之例外狀況的對作業系統之俘獲;且若如此,則觸發阱。在另一方面,若未出現用於第一有效元件之例外狀況,則在步驟212中,該處理電路系統決定是否出現用於不為第一有效元件之另一有效元件的例外狀況。若出現,則在步驟214中,針對有效元件及任何後續元件清除FFR 79的一或更多個位元,該有效元件觸發例外狀況。在另一方面,若未出現用於任何元件之例外狀況,則跳過步驟214。隨後,停止處理當前向量算術指令。如上文所論述,其他指令可使用FFR 79以修改至向量算術指令的掩碼或輸入向量,且若尚未利用完全處理之例外狀況來處理所有元件,則隨後分支返回以再次嘗試向量算術指令。
在其他方面,若當前向量算術指令係第二類型(非第一故障形式之指令),則在步驟220中,執行針對各有效元件之算術運算以產生結果向量的對應結果元件。在步驟222中,更新FPSR 78以指示對於向量之任何有效元件出現的任何例外狀況。此舉不區分觸發該例外之特定元件。在步驟224中,該處理電路系統再次檢查FPCR以決定針對出現之任何例外狀況是否需要對作業系統之阱,且若需要,則俘獲至該作業系統。指令之處理結束。
第12圖及13圖示用於處理推測更新至浮點例外標記的替代方法。除了提供如上文論述之第一及第二形式之向量算術指令,可提供一類向量算術指令,該類向量算術指令記錄針對在第一版本之FPSR(FPSR1 78-1)中的任何向量通道出現之例外狀況,該版FPSR對應於向量指令之推測處理。一旦已經解決控制該推測是否正確之有關狀況,則可執行確定指令以將用於任何正確推測通道之浮點例外標記複製至第二版本之浮點狀態暫存器FPSR2 78-2,該版本之暫存器表示FPSR的非推測狀態(或經確定版本)(參看第13圖)。例如,確定指令可利用OR運算合併FPSR 1 78-1與FPSR 2之先前值以產生用於FPSR 2之更新狀態。若需要,合併指令可隨後用於將狀態標記之向量視圖轉換為在FPSR 78中之常規純量視圖,其中每類型例外之單一標記在整個向量間共享,該標記指示針對向量整體出現之例外。例如,合併指令可OR在FPSR2 78-2的各通道中之用於給定例外之對應標記以產生總體標記,該總體標記指示針對向量整體是否出現該類型之例外。
第12圖圖示用於FPSR 1 78-1及FPSR 2 78-2之示例性佈置,FPSR 1 78-1及FPSR 2 78-2用於在位元組寬度標記元件中捕獲浮點及整數飽和狀態,該標記元件對準導致浮點例外或整數飽和出現之任何資料元件的最低有效位元組。由於最小浮點元件通常為32位元寬而整數元件可為8位元寬,此舉意指浮點狀態標記85僅出現在數量4的倍數之標記元件中,然而整數飽和標記QC出現在各位元組中。不需要由硬體儲存未使用之位元,且當讀取時該等位元返回零。在暫存器中之位元可接受在有效向量元件上之Shoji浮點或飽和整數運算之副效應之一者。在第12圖中圖示FPSR 1及FPSR 2的最低有效32位元,但此舉可重複直至最大向量長度。
第14圖圖示可使用之虛擬機實施方式。儘管前文描述之實施例根據用於操作支援相關技術之具體處理硬體的設備及方法來實施本發明,但亦有可能提供硬體元件的所謂虛擬機實施方式。該等虛擬機實施方式在主機處理器530上執行,該主機處理器530執行支援虛擬機程式510的主機作業系統520。通常,需要大型高效處理器以提供按合理速度執行的虛擬機實施方式,但此方法在某些環境中可為合理的,諸如當需要執行另一處理器本機的代碼以獲得相容性時,或出於再使用之原因。虛擬機程式510向應用程式500提供應用程式介面,該介面與將由實際硬體提供的應用程式介面相同,該實際硬體是藉由虛擬機程式510模型化的裝置。由此,程式指令(包括上述對記憶體存取的控制)可藉由使用虛擬機程式510而在應用程式500內執行,以模型化指令與虛擬機硬體的交互。
在本申請案中,詞語「經配置以……」用於意謂設備之元件具有能夠進行經定義之操作的配置。在此上下文中,「配置」意謂硬體或軟體互連之佈置或方式。舉例而言,設備可具有提供經定義之操作之專用硬體,或處理器或其他處理裝置可經程式化以執行功能。「經配置以」不暗示需要以任何方式改變設備元件以便提供經定義之操作。
儘管已在本文中參考隨附圖式詳細描述了本發明之說明性實施例,但應理解,本發明不限於彼等精確實施例,且熟習此項技術者可在本發明中實現各種變化及修改,而不偏離如由隨附申請專利範圍所定義之本發明之範疇及精神。
10‧‧‧擷取電路系統15‧‧‧快取記憶體20‧‧‧解碼電路系統25‧‧‧發佈階段電路系統30‧‧‧算術邏輯單元35‧‧‧浮點單元40‧‧‧載入/儲存單元45‧‧‧資料快取記憶體47‧‧‧路徑50‧‧‧第2位凖快取記憶體55‧‧‧記憶體60‧‧‧暫存器65‧‧‧向量暫存器70‧‧‧述語暫存器75‧‧‧純量暫存器76‧‧‧控制暫存器77‧‧‧浮點組態暫存器78‧‧‧浮點狀態暫存器78-1‧‧‧第一版本之FPSR178-2‧‧‧第二版本之FPSR279‧‧‧第一故障暫存器80‧‧‧向量置換單元85‧‧‧例外指示位元87‧‧‧掩碼位元100‧‧‧指令102‧‧‧指令104‧‧‧指令106‧‧‧指令108‧‧‧指令200‧‧‧步驟202‧‧‧步驟204‧‧‧步驟206‧‧‧步驟208‧‧‧步驟210‧‧‧步驟212‧‧‧步驟214‧‧‧步驟220‧‧‧步驟222‧‧‧步驟224‧‧‧步驟500‧‧‧應用程式510‧‧‧虛擬機程式520‧‧‧主機作業系統530‧‧‧主處理器
本技術之其他態樣、特徵及優勢將在實例的以下詳細說明中顯而易見,該詳細說明將結合附圖來閱讀,其中:
第1圖示意地圖示支援向量處理之資料處理設備的實例;
第2圖圖示浮點狀態暫存器及浮點控制暫存器的實例;
第3圖圖示向量算術指令之非第一故障(non-first-faulting)形式的實例;
第4圖圖示向量算術指令之第一故障(first-faulting)形式的實例,針對此形式,出現用於向量之第一有效元件的例外狀況;
第5圖圖示向量算術指令之第一故障形式的實例,針對此形式,出現用於不為第一有效元件之元件的例外狀況;
第6圖圖示產生用於隨後嘗試以執行第一故障向量算術指令之新掩碼的實例;
第7圖圖示產生用於隨後嘗試以執行第一故障向量算術指令之新輸入向量的實例;
第8圖圖示用於非推測執行向量算術指令之偽碼的實例;
第9圖圖示用於推測執行向量算術指令之偽碼的實例;
第10圖圖示用於多次執行向量算術指令直至已處理全部有效元件之循環的實例;
第11圖係圖示處理向量算術指令之方法的流程圖;
第12圖圖示用於浮點狀態暫存器的替代佈置;
第13圖圖示用於使用第12圖之狀態暫存器佈置處理向量算術指令之推測執行的技術;以及
第14圖圖示虛擬機實施方式。
(請換頁單獨記載) 無
65‧‧‧向量暫存器
70‧‧‧述語暫存器
79‧‧‧第一故障暫存器
Claims (20)
- 一種資料處理設備,該設備包含:處理電路系統,回應於規定至少一第一輸入向量之一第一類型之向量算術指令,該處理電路系統執行用於該第一輸入向量之至少一個有效資料元件的一算術運算,該第一輸入向量包含複數個資料元件;其中該第一輸入向量之該等資料元件具有一預定序列;當偵測到用於該算術運算之至少一個例外狀況時,該算術運算針對在該預定序列中之一第一有效資料元件執行,該處理電路系統經配置以執行至少一個回應動作;以及當偵測到用於該算術運算之該至少一個例外狀況時,該算術運算針對在該預定序列中除該第一有效資料元件之外的一給定有效資料元件執行,該處理電路系統經配置以抑制該至少一個回應動作且儲存元件識別資訊,該元件識別資訊識別該第一輸入向量之哪個資料元件係該給定有效資料元件,其中該至少一個回應動作包含更新一狀態暫存器以指示偵測到針對該第一有效資料元件之例外狀況的類型,該狀態暫存器包含一單一組例外狀況,該單一組例外狀況指示用於指示該類型之例外狀況的位元,其 中每個指示該單一組例外狀況的位元的例外狀況指示位元在該第一輸入向量的該複數個資料元件之間共享。
- 如請求項1所述之設備,其中指示位元之該組例外狀況包含每種類型之例外狀況一單一位元。
- 如前述請求項中任一項所述之設備,其中該至少一個回應動作包含觸發一例外處理常用程式之執行。
- 如請求項3所述之設備,包含一組態暫存器以儲存組態資訊,該組態資訊規定是否觸發用於一或更多個類型之例外狀況之該例外處理常用程式的執行;以及當該組態資訊規定應針對該偵測到類型之例外狀況觸發該例外處理常用程式時,該至少一個回應動作包含觸發該例外處理常用程式之執行。
- 如請求項1至2中任一項所述之設備,其中在已經解決用於決定是否應處理用於該第一輸入向量之一或更多個有效資料元件的一有關狀況之前,該處理電路系統經配置以執行該一或更多個有效資料元件的該算術運算。
- 如請求項1至2中任一項所述之設備,其中該第一輸入向量係與一掩碼有關,該掩碼指示該第一 輸入向量之哪些資料元件係有效資料元件。
- 如請求項6所述之設備,其中該處理電路系統係回應於至少一個其他指令以基於該元件識別資訊產生用於一隨後嘗試以執行該第一類型之一向量算術指令之一新第一輸入向量及一新掩碼中的至少一者。
- 如請求項7所述之設備,其中該處理電路系統係回應於該至少一個其他指令以產生該新掩碼,該新掩碼具有在該預定序列中之經指示為該第一有效資料元件之該給定有效資料元件。
- 如請求項7所述之設備,其中該處理電路系統係回應於該至少一個其他指令以產生該新第一輸入向量,其中該新第一輸入向量之該第一有效資料元件具有與該第一輸入向量中該給定有效資料元件相同之值。
- 如請求項1至2中任一項所述之設備,其中該元件識別資訊包含一元件識別掩碼,該元件識別掩碼包含:一或更多個指示,該一或更多個指示具有用於在該預定序列中之該給定有效資料元件之前的至少一個資料元件之一第一值;及一或更多個指示,該一或更多個指示具有用於在該預定序列中之該給定有效資料元件及任何後續有效資料元件之一第二值。
- 如請求項1至2中任一項所述之設備,其 中在該預定序列中之該第一有效資料元件包含該第一輸入向量之一最低有效的有效資料元件。
- 如請求項1至2中任一項所述之設備,其中回應於一第二類型之向量算術指令,該處理電路系統經配置以回應於偵測針對該算術運算之該至少一個例外狀況執行該至少一個回應動作,該算術運算針對該第一輸入向量之任何有效資料元件執行。
- 如請求項12所述之設備,其中該第一類型及該第二類型之向量算術指令包含不同運算碼,或包含規定該向量指令為該第一類型或該第二類型的一欄位。
- 如請求項12所述之設備,其中該第一類型之向量算術指令包含在一第一模式之該處理電路系統中執行的一向量算術指令;以及該第二類型之向量指令包含在一第二模式之該處理電路系統中執行的一向量算術指令。
- 如請求項12所述之設備,其中回應於該第二類型之向量算術指令,該至少一個回應動作包含更新一狀態暫存器以提供針對該算術運算偵測到之一或更多個類型之例外狀況之一指示,該算術運算針對該第一輸入向量之任何有效資料元件執行。
- 如請求項1至2中任一項所述之設備,其 中該算術運算包含一浮點運算且該至少一個例外狀況包含下列之至少一者:在該算術運算中產生之一浮點值之溢出;在該算術運算中產生之一浮點值之下溢;在該算術運算中產生之一浮點值係不準確的;該算術運算對應於一無效運算;該算術運算包含除以零;以及至該算術運算之一輸入係非正規的。
- 如請求項1至2中任一項所述之設備,其中該算術運算包含一飽和算術運算,且該至少一個例外狀況包含在該飽和算術運算中產生之一值的飽和度。
- 一種資料處理設備,該設備包含:用於執行之手段,其回應於規定包含複數個資料元件之至少一第一輸入向量的一第一類型之向量算術指令來執行針對該第一輸入向量之至少一個有效資料元件的一算術運算;其中該第一輸入向量之該等資料元件具有一預定序列;當偵測到用於該算術運算之至少一個例外狀況時,該算術運算針對在該預定序列中之一第一有效資料元件執行,該用於執行之手段經配置以執行至少一個回 應動作;以及當偵測到用於該算術運算之該至少一個例外狀況時,該算術運算針對在該預定序列中除該第一有效資料元件之外的一給定有效資料元件執行,該用於執行之手段經配置以抑制該至少一個回應動作且儲存元件識別資訊,該元件識別資訊識別該第一輸入向量之哪個資料元件係該給定有效資料元件,其中該至少一個回應動作包含更新一狀態暫存器以指示偵測到針對該第一有效資料元件之例外狀況的類型,該狀態暫存器包含一單一組例外狀況,該單一組例外狀況指示用於指示該類型之例外狀況的位元,其中每個指示該單一組例外狀況的位元的例外狀況指示位元在該第一輸入向量的該複數個資料元件之間共享。
- 一種資料處理方法,該方法包含以下步驟:回應於規定包含複數個資料元件之至少一第一輸入向量的一第一類型之向量算術指令,針對該第一輸入向量之至少一個有效資料元件執行一算術運算,其中該第一輸入向量之該等資料元件具有一預定序列;當偵測到用於該算術運算之至少一個例外狀況時,該算術運算針對在該預定序列中之一第一有效資料元件執行,執行至少一個回應動作;以及 當偵測到用於該算術運算之該至少一個例外狀況時,該算術運算針對在該預定序列中除該第一有效資料元件之外的一給定有效資料元件執行,抑制該至少一個回應動作且儲存元件識別資訊,該元件識別資訊識別該第一輸入向量之哪個資料元件係該給定有效資料元件,其中該至少一個回應動作包含更新一狀態暫存器以指示偵測到針對該第一有效資料元件之例外狀況的類型,該狀態暫存器包含一單一組例外狀況,該單一組例外狀況指示用於指示該類型之例外狀況的位元,其中每個指示該單一組例外狀況的位元的例外狀況指示位元在該第一輸入向量的該複數個資料元件之間共享。
- 一種在一電腦可讀儲存媒體上儲存之電腦程式,當該電腦程式由一資料處理設備執行時,提供一虛擬機,該虛擬機提供對應於如請求項1至17中任一項所述之設備的一指令執行環境。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1518735.4 | 2015-10-22 | ||
GB1518735.4A GB2543554B (en) | 2015-10-22 | 2015-10-22 | Handling exceptional conditions for vector arithmetic instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201719389A TW201719389A (zh) | 2017-06-01 |
TWI713589B true TWI713589B (zh) | 2020-12-21 |
Family
ID=55130082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105130975A TWI713589B (zh) | 2015-10-22 | 2016-09-26 | 處理用於向量算術指令的例外狀況 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10776124B2 (zh) |
JP (1) | JP6942298B2 (zh) |
KR (1) | KR102628269B1 (zh) |
CN (1) | CN108139910B (zh) |
GB (1) | GB2543554B (zh) |
TW (1) | TWI713589B (zh) |
WO (1) | WO2017068318A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI769810B (zh) * | 2017-05-17 | 2022-07-01 | 美商谷歌有限責任公司 | 特殊用途神經網路訓練晶片 |
GB2570466B (en) * | 2018-01-25 | 2020-03-04 | Advanced Risc Mach Ltd | Commit window move element |
US11372643B2 (en) * | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
US11620153B2 (en) * | 2019-02-04 | 2023-04-04 | International Business Machines Corporation | Instruction interrupt suppression of overflow exception |
WO2021126216A1 (en) | 2019-12-19 | 2021-06-24 | Google Llc | Resource management unit for capturing operating system configuration states and offloading tasks |
EP3857371A1 (en) | 2019-12-19 | 2021-08-04 | Google LLC | Resource management unit for capturing operating system configuration states and memory management |
US11188304B1 (en) | 2020-07-01 | 2021-11-30 | International Business Machines Corporation | Validating microprocessor performance |
CN114428638A (zh) * | 2020-10-29 | 2022-05-03 | 平头哥(上海)半导体技术有限公司 | 指令发射单元、指令执行单元、相关装置和方法 |
US20220206792A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor |
US11675651B2 (en) | 2021-03-11 | 2023-06-13 | International Business Machines Corporation | Critical problem exception handling |
US11782786B1 (en) | 2022-03-17 | 2023-10-10 | General Electric Company | Systems and methods for handling invalid floating-point operations without exceptions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
US6378067B1 (en) * | 1998-10-12 | 2002-04-23 | Idea Corporation | Exception reporting architecture for SIMD-FP instructions |
US20100325483A1 (en) * | 2008-08-15 | 2010-12-23 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US20150261590A1 (en) * | 2014-03-15 | 2015-09-17 | Zeev Sperber | Conditional memory fault assist suppression |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US325483A (en) * | 1885-09-01 | blaisdell | ||
US233507A (en) * | 1880-10-19 | Wrench | ||
US208086A (en) * | 1878-09-17 | Improvement in brakes for railway-cars | ||
US47358A (en) * | 1865-04-18 | Improvement in automatic stop-motions for steam-engines | ||
US244987A (en) * | 1881-08-02 | Boot and shoe jack | ||
CN1168004C (zh) * | 1989-05-17 | 2004-09-22 | 国际商业机器公司 | 在数据处理系统中提供容错环境和体系结构的装置 |
JP2000040081A (ja) * | 1998-07-24 | 2000-02-08 | Nec Kofu Ltd | ベクトルデータ処理装置 |
US8938642B2 (en) * | 2008-08-15 | 2015-01-20 | Apple Inc. | Confirm instruction for processing vectors |
US20110047358A1 (en) * | 2009-08-19 | 2011-02-24 | International Business Machines Corporation | In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication |
CN104025022B (zh) * | 2011-12-23 | 2017-09-19 | 英特尔公司 | 用于具有推测支持的向量化的装置和方法 |
US9098265B2 (en) * | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
US9715385B2 (en) * | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US20140244987A1 (en) * | 2013-02-22 | 2014-08-28 | Mips Technologies, Inc. | Precision Exception Signaling for Multiple Data Architecture |
GB2519107B (en) * | 2013-10-09 | 2020-05-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing speculative vector access operations |
-
2015
- 2015-10-22 GB GB1518735.4A patent/GB2543554B/en active Active
-
2016
- 2016-09-14 US US15/769,558 patent/US10776124B2/en active Active
- 2016-09-14 JP JP2018519476A patent/JP6942298B2/ja active Active
- 2016-09-14 CN CN201680060280.2A patent/CN108139910B/zh active Active
- 2016-09-14 KR KR1020187013379A patent/KR102628269B1/ko active IP Right Grant
- 2016-09-14 WO PCT/GB2016/052837 patent/WO2017068318A1/en active Application Filing
- 2016-09-26 TW TW105130975A patent/TWI713589B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
US6378067B1 (en) * | 1998-10-12 | 2002-04-23 | Idea Corporation | Exception reporting architecture for SIMD-FP instructions |
US20100325483A1 (en) * | 2008-08-15 | 2010-12-23 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US20150261590A1 (en) * | 2014-03-15 | 2015-09-17 | Zeev Sperber | Conditional memory fault assist suppression |
Also Published As
Publication number | Publication date |
---|---|
TW201719389A (zh) | 2017-06-01 |
WO2017068318A1 (en) | 2017-04-27 |
GB201518735D0 (en) | 2015-12-09 |
CN108139910A (zh) | 2018-06-08 |
GB2543554A (en) | 2017-04-26 |
JP2018531467A (ja) | 2018-10-25 |
GB2543554B (en) | 2019-01-23 |
KR102628269B1 (ko) | 2024-01-23 |
US20180293078A1 (en) | 2018-10-11 |
KR20180069846A (ko) | 2018-06-25 |
JP6942298B2 (ja) | 2021-09-29 |
US10776124B2 (en) | 2020-09-15 |
CN108139910B (zh) | 2022-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI713589B (zh) | 處理用於向量算術指令的例外狀況 | |
JP2018531467A6 (ja) | ベクトル演算命令の例外条件処理 | |
EP3329362B1 (en) | An apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers | |
CN108139907B (zh) | 向量数据传送指令 | |
KR102256188B1 (ko) | 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법 | |
TWI716425B (zh) | 用於執行疊接操作的裝置和方法 | |
US9081564B2 (en) | Converting scalar operation to specific type of vector operation using modifier instruction | |
KR102379894B1 (ko) | 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법 | |
US20140164740A1 (en) | Branch-Free Condition Evaluation | |
JP6908601B2 (ja) | ベクトルロード命令 | |
US10185561B2 (en) | Processor with efficient memory access | |
KR20190094195A (ko) | 벡터 생성 명령 | |
US11663014B2 (en) | Speculatively executing instructions that follow a status updating instruction | |
US20170010972A1 (en) | Processor with efficient processing of recurring load instructions |