TW201443779A - 向量浮點測試資料類別立即指令 - Google Patents

向量浮點測試資料類別立即指令 Download PDF

Info

Publication number
TW201443779A
TW201443779A TW103101054A TW103101054A TW201443779A TW 201443779 A TW201443779 A TW 201443779A TW 103101054 A TW103101054 A TW 103101054A TW 103101054 A TW103101054 A TW 103101054A TW 201443779 A TW201443779 A TW 201443779A
Authority
TW
Taiwan
Prior art keywords
operand
register
field
vector
instruction
Prior art date
Application number
TW103101054A
Other languages
English (en)
Other versions
TWI614679B (zh
Inventor
Jonathan D Bradbury
Eric M Schwarz
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of TW201443779A publication Critical patent/TW201443779A/zh
Application granted granted Critical
Publication of TWI614679B publication Critical patent/TWI614679B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Landscapes

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

Abstract

本發明提供一種向量浮點測試資料類別立即指令,其判定在該指令中規定之一向量的一或多個元素是否具有一或多個經選擇之類別及正負號。若一向量元素具有一經選擇之類別及正負號,則該指令之一運算元中的對應於該向量元素之一元素被設定為一第一定義值,且若該向量元素不具有該經選擇之類別及正負號,則對應於該向量元素的該運算元元素被設定為一第二定義值。

Description

向量浮點測試資料類別立即指令
一或多個態樣大體上係關於計算環境中之處理,且確切而言,係關於此環境內之向量處理。
計算環境內之處理包括對一或多個中央處理單元(CPU)之控制操作。通常,中央處理單元之操作係藉由儲存器中之指令控制。指令可具有不同格式,且常常規定待用於執行各種操作之暫存器。
取決於中央處理單元之架構,可使用各種類型之暫存器,包括(例如)通用暫存器、專用暫存器、浮點暫存器及/或向量暫存器。不同類型之暫存器可與不同類型之指令一起使用。作為實例,浮點暫存器儲存待由浮點指令使用之浮點數;且向量暫存器保持用於由單一指令多重資料(SIMD)指令(包括向量指令)執行的向量處理之資料。
經由佈建用於執行一機器指令之一電腦程式產品而克服先前技術之缺點且提供優點。該電腦程式產品包括一電腦可讀儲存媒體,其可由一處理電路讀取,且儲存供該處理電路執行以執行一方法的指令。該方法包括(例如):由一處理器獲得供執行之一機器指令,該機器指令係根據一電腦架構而定義以用於電腦執行,該機器指令包括:至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一向量浮點測試資料類別立即操作;一第一暫存器欄位,其被用以指定一第一暫 存器,該第一暫存器包括一第一運算元;及一第二暫存器欄位,其被用以指定一第二暫存器,該第二暫存器包括一第二運算元;且執行該機器指令,該執行包括:判定該第二運算元之一選定元素的屬性;自至該機器指令之一輸入選擇表示該選定元素之該等屬性的一經選擇資料單元,該輸入包括一或多個資料單元以表示一或多個屬性;檢查該經選擇資料單元是否被設定為一特定值;及基於該檢查,設定該第一運算元中的對應於該第二運算元之該選定元素的一元素,該設定係基於該經選擇資料單元是否設定為該特定值。
本文中亦描述且主張與一或多個態樣有關的方法及系統。此外,本文中亦描述且可主張與一或多個態樣有關的服務。
額外特徵及優點係經由一或多個態樣之技術而得以實現。其他實施例及態樣於本文中詳細描述,且被視為申請專利範圍之一部分。
100‧‧‧計算環境
102‧‧‧處理器
104‧‧‧記憶體
106‧‧‧輸入/輸出(I/O)器件及/或介面
108‧‧‧匯流排
200‧‧‧計算環境
202‧‧‧原生中央處理單元
204‧‧‧記憶體
206‧‧‧輸入/輸出器件及/或介面
208‧‧‧匯流排
210‧‧‧原生暫存器
212‧‧‧模擬器程式碼
250‧‧‧客體指令
252‧‧‧指令提取常式
254‧‧‧指令轉譯常式
256‧‧‧原生指令
260‧‧‧模擬控制常式
300‧‧‧暫存器檔案
302‧‧‧向量暫存器
304‧‧‧浮點暫存器
400‧‧‧向量浮點測試資料類別立即指令
402a、402b‧‧‧作業碼欄位
404‧‧‧第一向量暫存器欄位
406‧‧‧第二向量暫存器欄位
408‧‧‧立即欄位(I3)
410‧‧‧第一遮罩欄位(M5)
412‧‧‧第二遮罩欄位(M4)
414‧‧‧RXB欄位
430‧‧‧類別
432‧‧‧正負號
480‧‧‧向量暫存器
482a至482n‧‧‧元素
483a至483n‧‧‧浮點數
484a至484n‧‧‧轉換成類型數邏輯
486a-486n‧‧‧遮罩
490a、490b‧‧‧元素
500‧‧‧向量總和檢查指令
502a、502b‧‧‧作業碼欄位
504‧‧‧第一向量暫存器欄位
506‧‧‧第二向量暫存器欄位
508‧‧‧第三向量暫存器欄位
510‧‧‧RXB欄位
550‧‧‧第二運算元
552a至552n‧‧‧元素
560‧‧‧第三運算元
562‧‧‧字組1
570‧‧‧第一運算元
572‧‧‧元素1
600‧‧‧向量高氏場乘法求和與累加指令
602a、602b‧‧‧作業碼欄位
604‧‧‧第一向量欄位
606‧‧‧第二向量暫存器欄位
608‧‧‧第三向量暫存器欄位
610‧‧‧遮罩欄位(M5)
612‧‧‧第四向量暫存器欄位
614‧‧‧RXB欄位
650‧‧‧第二運算元
652a、652b‧‧‧運算元對OP2H、OP2L
660‧‧‧第三運算元
662a、662b‧‧‧運算元對OP3H、OP3L
670‧‧‧第四運算元
672a、672b‧‧‧運算元對OP4H、OP4L
680a‧‧‧結果H
680b‧‧‧結果L
690a‧‧‧OP1H
690b‧‧‧OP1L
700‧‧‧向量產生遮罩指令
702a、702b‧‧‧作業碼欄位
704‧‧‧第一向量暫存器欄位
706‧‧‧第一立即欄位I2
708‧‧‧第二立即欄位(I3)
710‧‧‧遮罩欄位(M4)
712‧‧‧RXB欄位
722‧‧‧開始位置
724‧‧‧結束位置
726‧‧‧元素之大小
800‧‧‧依據遮罩之向量元素旋轉與***指令
802a、802b‧‧‧作業碼欄位
804‧‧‧第一向量暫存器欄位
806‧‧‧第二向量暫存器欄位
808‧‧‧第三向量暫存器欄位
812‧‧‧立即欄位(I4)
814‧‧‧遮罩欄位(M5)
816‧‧‧RXB欄位816
820‧‧‧輸入
822‧‧‧輸入
824‧‧‧輸入
850‧‧‧第一運算元
900‧‧‧向量例外狀況碼
902‧‧‧向量索引(VIX)
904‧‧‧向量中斷碼(VIC)
1000‧‧‧電腦程式產品
1002‧‧‧非暫時性電腦可讀儲存媒體
1004‧‧‧電腦可讀程式碼構件或邏輯
5000‧‧‧主機電腦系統
5000'‧‧‧主機電腦系統
5001‧‧‧CPU
5002‧‧‧電腦記憶體
5003‧‧‧動態位址轉譯(DAT)
5004‧‧‧指令提取單元
5005‧‧‧載入/儲存單元
5006‧‧‧指令解碼單元
5007‧‧‧轉譯後備緩衝器(TLB)
5008‧‧‧指令執行單元
5009‧‧‧快取記憶體
5010‧‧‧網路
5011‧‧‧儲存媒體器件
5020‧‧‧系統
5021‧‧‧基本電腦系統
5022‧‧‧顯示器件
5023‧‧‧滑鼠
5024‧‧‧鍵盤
5025‧‧‧記憶體
5026‧‧‧處理器/微處理器
5027‧‧‧長期儲存器
5029‧‧‧網路
5030‧‧‧印表機/掃描器
5032‧‧‧應用程式
5040‧‧‧資料處理網路
5041、5042、5043、5044‧‧‧工作站
5045‧‧‧工作站
5046‧‧‧閘道器電腦/用戶端伺服器
5047‧‧‧網際網路
5048‧‧‧遠端伺服器
5050‧‧‧使用者
5051‧‧‧使用者
5053‧‧‧快取記憶體
5054‧‧‧I/O單元
5055‧‧‧指令提取單元
5056‧‧‧解碼/分派單元
5057‧‧‧執行單元
5058‧‧‧分支單元
5059‧‧‧暫存器
5060‧‧‧載入/儲存單元
5061‧‧‧程式計數器
5065‧‧‧處理器單元
5066‧‧‧算術邏輯單元(ALU)
5067、5068、5069‧‧‧暫存器電路
5070‧‧‧輸出暫存器電路
5071‧‧‧介接邏輯
5072‧‧‧架構化設施
5073‧‧‧電路
5074‧‧‧算術邏輯單元(ALU)
5075、5076、5077‧‧‧輸入暫存器電路
5080‧‧‧輸出暫存器電路
5082‧‧‧分支歷史表
5083‧‧‧元件
5085‧‧‧算術邏輯單元(ALU)
5090‧‧‧控制邏輯
5091‧‧‧主機處理器
5092‧‧‧經模擬主機電腦系統
5093‧‧‧模擬處理器
5094‧‧‧記憶體
5096‧‧‧主機電腦記憶體
5097‧‧‧模擬常式
在說明書之結尾處的申請專利範圍中作為實例特別指出且明確主張一或多個態樣。前述及其他目標、特徵,及優點自以下結合附圖進行之詳細描述而顯而易見,其中:圖1描繪併入有且使用一或多個態樣之計算環境的一實例;圖2A描繪併入有且使用一或多個態樣之計算環境的另一實例;圖2B描繪圖2A之記憶體的其他細節;圖3描繪暫存器檔案之一實例;圖4A描繪向量浮點測試資料類別立即指令之格式的一實例;圖4B描繪圖4A之向量浮點測試資料類別立即指令之第三運算元的位元值之一實例;圖4C描繪與圖4A之向量浮點測試資料類別立即指令相關聯之邏輯的一實施例;圖4D描繪執行圖4A之向量浮點測試資料類別立即指令之方塊圖 的一實例;圖4E描繪各種類別之二進位浮點資料之定義的一實例;圖5A描繪向量總和檢查指令之格式的一實例;圖5B描繪與圖5A之向量總和檢查指令相關聯之邏輯的一實施例;圖5C描繪執行圖5A之向量總和檢查指令之方塊圖的一實例;圖6A描繪向量高氏場乘法求和與累加指令之格式的一實例;圖6B描繪與圖6A之向量高氏場乘法求和與累加指令相關聯之邏輯的一實施例;圖6C描繪執行圖6A之向量高氏場乘法求和與累加指令之方塊圖的一實例;圖7A描繪向量產生遮罩指令之格式的一實例;圖7B描繪與圖7A之向量產生遮罩指令相關聯之邏輯的一實施例;圖7C描繪執行圖7A之向量產生遮罩指令之方塊圖的一實例;圖8A描繪依據遮罩之向量元素旋轉與***指令之格式的一實例;圖8B描繪與圖8A之依據遮罩之向量元素旋轉與***指令相關聯之邏輯的一實施例;圖8C描繪執行圖8A之依據遮罩之向量元素旋轉與***指令之方塊圖的一實例;圖9A描繪向量例外狀況碼之一實例;圖9B描繪用以設定圖9A之向量例外狀況碼之邏輯的一實施例;圖10描繪併入有一或多個態樣之電腦程式產品的一實施例;圖11描繪主機電腦系統之一實施例;圖12描繪電腦系統之另一實例; 圖13描繪包含電腦網路之電腦系統的另一實例;圖14描繪電腦系統之各種元件的一實施例;圖15A描繪圖14之電腦系統之執行單元的一實施例;圖15B描繪圖14之電腦系統之分支單元的一實施例;圖15C描繪圖14之電腦系統之載入/儲存單元的一實施例;及圖16描繪經模擬主機電腦系統之一實施例。
根據一或多個態樣,提供一種包括各種向量指令以及向量例外狀況處理之向量設施。本文中描述之指令中的每一者為使用一或多個向量暫存器(本文中亦稱為向量)之單一指令多重資料(SIMD)指令。向量暫存器為(例如)處理器暫存器(亦稱為硬體暫存器),該處理器暫存器為可作為中央處理單元(CPU)或其他處理器之部分獲得的小量儲存器(例如,並非主記憶體)。每一向量暫存器含有具有一或多個元素之一向量運算元,且元素在長度上為(例如)一個、兩個、四個或八個位元組。在其他實施例中,元素可具有其他大小;且向量指令無需為SIMD指令。
參考圖1描述併入有且使用一或多個態樣之計算環境的一實施例。計算環境100包括(例如)經由(例如)一或多個匯流排108及/或其他連接件彼此耦接之處理器102(例如,中央處理單元)、記憶體104(例如,主記憶體),及一或多個輸入/輸出(I/O)器件及/或介面106。
在一實例中,處理器102係基於由國際商用機器公司(International Business Machines Corporation)供應之z/架構(z/Architecture),且為亦由國際商用機器公司供應且實施z/架構的諸如系統z伺服器之伺服器的部分。z/架構之一實施例係描述於2012年9月第十版IBM®公開案第SA22-7832-09號的標題為「z/Architecture Principles of Operation」之IBM®公開案中,該公開案的全部內容特此 以引用的方式併入本文中。在一實例中,處理器執行亦由國際商用機器公司供應之一作業系統,諸如z/OS。IBM®、Z/ARCHITECTURE®,及Z/OS®為美國紐約州阿蒙克國際商用機器公司(International Business Machines Corporation,Armonk,New York,USA)之註冊商標。本文中所使用之其他名稱可為國際商用機器公司或其他公司之註冊商標、商標或產品名稱。
在另一實施例中,處理器102係基於由國際商用機器公司供應之Power Architecture。Power Architecture之一實施例係描述於2010年7月23日的國際商用機器公司「Power ISATM Version 2.06 Revision B」中,其全部內容特此以引用的方式併入本文中。POWER ARCHITECTURE®為國際商用機器公司之一註冊商標。
在又一實施例中,處理器102係基於由英特爾公司(Intel Corporation)供應之英特爾架構(Intel architecture)。英特爾架構之一實施例描述於2013年1月的序號253666-045US之「Intel® 64 and IA-32 Architectures Developer's Manual:Vol.2B,Instructions Set Reference,A-L」中及2013年1月的序號253667-045US之「Intel® 64 and IA-32 Architectures Developer's Manual:Vol.2B,Instructions Set Reference,M-Z」中,該等文獻之每一者的全部內容特此以引用的方式併入本文中。Intel®為加利福尼亞州聖克拉拉(Santa Clara,California)之英特爾公司的註冊商標。
參考圖2A描述併入有且使用一或多個態樣之計算環境的另一實施例。在此實例中,計算環境200包括(例如)經由(例如)一或多個匯流排208及/或其他連接件彼此耦接之原生中央處理單元202、記憶體204,及一或多個輸入/輸出器件及/或介面206。作為實例,計算環境200可包括由紐約州阿蒙克國際商用機器公司供應之PowerPC處理器、pSeries伺服器或xSeries伺服器;由加利福尼亞州帕洛阿爾托惠普 公司(Hewlett Packard Co.,Palo Alto,California)供應的具有英特爾Itanium II處理器之HP Superdome;及/或基於由國際商用機器公司、惠普、英特爾、Oracle,或其他公司供應之架構的其他機器。
原生中央處理單元202包括一或多個原生暫存器210,諸如於環境內進行處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示在任意特定時間點時的環境狀態之資訊。
此外,原生中央處理單元202執行儲存於記憶體204中之指令及程式碼。在一特定實例中,中央處理單元執行儲存於記憶體204中之模擬器程式碼212。此程式碼使得於一架構中組態之處理環境能夠模擬另一架構。舉例而言,模擬器程式碼212允許諸如PowerPC處理器、pSeries伺服器、xSeries伺服器、HP Superdome伺服器或其他伺服器的基於不同於z/架構之架構的機器模擬z/架構且執行基於z/架構而開發的軟體及指令。
參考圖2B描述與模擬器程式碼212有關的其他細節。儲存於記憶體204中之客體指令250包含經開發以在不同於原生CPU 202的架構之架構中執行的軟體指令(例如,與機器指令相關)。舉例而言,客體指令250可經設計以於z/架構處理器102上執行,但作為替代,該等客體指令在原生CPU 202(其例如可為英特爾Itanium II處理器)上被模擬。在一實例中,模擬器程式碼212包括指令提取常式252以自記憶體204獲得一或多個客體指令250,且視情況為所獲得之指令提供本端緩衝。該模擬器程式碼亦包括指令轉譯常式254以判定已獲得之客體指令的類型,且將該客體指令轉譯成一或多個對應原生指令256。此轉譯包括(例如)識別待由客體指令執行之功能且選擇原生指令以執行彼功能。
此外,模擬器212包括模擬控制常式260以使得原生指令得以執行。模擬控制常式260可使得原生CPU 202執行一原生指令常式,該 等指令模擬一或多個先前獲得之客體指令,且在此執行結束時將控制傳回至指令提取常式以模擬獲得下一客體指令或客體指令之群組。原生指令256之執行可包括將資料自記憶體204載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行一些類型之算術或邏輯運算,如由轉譯常式判定的。
每一常式(例如)實施於軟體中,其儲存於記憶體中且由原生中央處理單元202執行。在其他實例中,常式或操作中之一或多者實施於韌體、硬體、軟體,或其一些組合中。經模擬處理器之暫存器可使用原生CPU之暫存器210,或藉由使用記憶體204中之位置進行模擬。在實施例中,客體指令250、原生指令256及模擬器程式碼212可駐留於同一記憶體中,或可分配在不同記憶體器件上。
如本文中所使用的,韌體包括(例如)處理器之微碼、毫碼,及/或巨集碼。該韌體包括(例如)用於實施較高層級機器程式碼的硬體層級指令及/或資料結構。在一實施例中,該韌體包括(例如)通常作為微碼遞送之專屬程式碼,其包括特定針對底層硬體之可信賴軟體或微碼,且控制作業系統對系統硬體之存取。
在一實例中,被獲得、轉譯及執行之客體指令250為本文中描述之指令。具有一架構(例如,z/架構)之指令被從記憶體提取,轉譯且表示為具有另一架構(例如,PowerPC、pSeries、xSeries、英特爾等等)之原生指令256的序列。此等原生指令接著被執行。
在一實施例中,本文中描述之指令為向量指令,該等向量指令為向量設施的部分。向量設施提供(例如)範圍為自一至十六個元素的固定大小向量。每一向量包括由設施中定義之向量指令操作的資料。在一實施例中,若向量由多個元素構成,則每一元素被與其他元素並列處理。指令完成直至所有元素之處理均完成時才發生。在其他實施例中,該等元素被部分地並列處理及/或依序處理。
向量指令可實施為各種架構之部分,包括(但不限於)z/架構、Power、x86、IA-32、IA-64等等。儘管本文中描述之實施例用於z/架構,但本文中描述之向量指令及一或多個其他態樣可基於許多其他架構。z/架構僅為一實例。
在向量設施被實施為z/架構之部分以使用向量暫存器及指令的一實施例中,經規定控制暫存器(例如,控制暫存器0)中的向量啟用控制及暫存器控制被設定為(例如)一。若在未設定啟用控制的情況下安裝向量設施且執行向量指令,則辨識出資料例外狀況。若向量設施未被安裝且向量指令被執行,則辨識出操作例外狀況。
在一實施例中,存在32個向量暫存器,且其他類型之暫存器可映射至向量暫存器之一象限。舉例而言,如圖3中所示,暫存器檔案300包括32個向量暫存器302,且每一暫存器的長度為128位元。長度為64位元之十六個浮點暫存器304可覆疊該等向量暫存器。因此,作為一實例,當修改浮點暫存器2時,接著亦修改向量暫存器2。其他類型之暫存器的其他映射亦係可能的。
向量資料(例如)按與其他資料格式相同的左至右序列出現在儲存器中。資料格式之編號為0-7的位元構成儲存器中的最左側(最低編號)位元組位置中的位元組,位元8-15形成下一序列位置中的位元組,及等等。在其他實例中,向量資料可按另一序列,諸如右至左出現在儲存器中。
本文中描述之向量指令中的每一者具有複數個欄位,且該等欄位中的一或多者具有與其相關聯之下標號。與指令之欄位相關聯的下標號表示該欄位應用於的運算元。例如,與向量暫存器V1相關聯之下標號1表示V1中的暫存器包括第一運算元,及等等。暫存器運算元的長度為一暫存器,(例如)為128位元。
此外,與向量設施一起提供之許多向量指令具有經規定位元之 欄位。被稱作暫存器擴展位元或RXB之此欄位包括向量暫存器指定之運算元中的每一者的最高有效位元。用於未由指令規定之暫存器指定的位元將被保留且設定為零。最高有效位元被串接(例如)至四位元暫存器指定的左側,以形成五位元向量暫存器指定。
在一實例中,RXB欄位包括四個位元(例如,位元0至3),且該等位元被定義如下:
0-指令之第一向量暫存器指定(例如,位元8至11中)的最高有效位元。
1-指令之第二向量暫存器指定(例如,位元12至15中)(若存在)的最高有效位元。
2-指令之第三向量暫存器指定(例如,位元16至19中)(若存在)的最高有效位元。
3-指令之第四向量暫存器指定(例如,位元32至35中)(若存在)的最高有效位元。
取決於暫存器編號,每一位元由(例如)組譯程式設定為零或一。例如,對於暫存器0至15,位元設定為0;對於暫存器16至31,位元設定為1,等等。
在一實施例中,每一RXB位元為針對包括一或多個向量暫存器之指令中的特定位置的擴展位元。例如,在一或多個向量指令中,RXB之位元0為指派至(例如)V1的位置8至11之擴展位元;RXB之位元1為指派至(例如)V2的位置12至15之擴展位元;及等等。在另一實施例中,RXB欄位包括額外位元,且將一個以上位元用作針對每一向量或位置之擴展。
根據一態樣而提供的包括RXB欄位之一指令為向量浮點測試資料類別立即(VFTCI)指令,其一實例描繪於圖4A中。在一實例中,向量浮點測試資料類別立即指令400包括:指示向量浮點測試資料類別立 即操作之作業碼欄位402a(例如,位元0至7)、402b(例如,位元40至47);用以指定第一向量暫存器(V1)之第一向量暫存器欄位404(例如,位元8至11);用以指定第二向量暫存器(V2)之第二向量暫存器欄位406(例如,位元12至15);用以包括位元遮罩之立即欄位(I3)408(例如,位元16至27);第一遮罩欄位(M5)410(例如,位元28至31);第二遮罩欄位(M4)412(例如,位元32至35);及RXB欄位414(例如,位元36至39)。在一實例中,欄位404至414中之每一者係分離的,且獨立於作業碼欄位。此外,在一實施例中,該等欄位係分離的且彼此獨立;然而,在其他實施例中,可組合一個以上欄位。下文描述關於此等欄位之使用的其他資訊。
在一實例中,由作業碼欄位402a指定之作業碼的經選擇位元(例如,前兩個位元)規定指令之長度。在此特定實例中,經選擇位元指示長度為三個半字組。此外,指令之格式為具有擴展型作業碼欄位的向量暫存器與立即操作。向量(V)欄位中的每一者連同其由RXB規定之對應擴展位元指定一向量暫存器。確切而言,對於向量暫存器,使用(例如)暫存器欄位之四位元欄位外加作為最高有效位元的其對應暫存器擴展位元(RXB)來規定含有運算元之暫存器。例如,若四位元欄位為0110,且擴展位元為0,則五位元欄位00110指示暫存器編號6。
此外,在VFTCI指令之一實施例中,V1 404及V2 406規定用於指令的分別包括第一運算元及第二運算元的向量暫存器。另外,I3 408包括具有複數個位元之位元遮罩,且每一位元用以表示二進位浮點元素類別及正負號(正或負),如下文更詳細描述的。
在另一實施例中,作為實例,位元遮罩可設在通用暫存器中、記憶體中、(根據每元素而不同的)向量暫存器之元素中,或來自位址計算。該位元遮罩可被包括作為指令之顯式運算元或隱含運算元或輸入。
M5欄位410具有(例如)四個位元0至3,且在(例如)位元0中規定單一元素控制(S)。若位元0被設定為一,則操作僅僅發生於向量中的零索引元素上。所有其他元素在第一運算元向量中的位元位置係不可預測的。若位元0設定為零,則操作發生於向量中之所有元素上。
M4欄位412被用以(例如)規定指令之第二運算元中的浮點數之大小。在一實例中,此欄位被設定為3,從而指示雙精度二進位浮點數。其他實例亦係可能的。
在向量浮點測試資料類別立即指令之一實施例的執行中,第二運算元之一或多個浮點元素的類別與正負號經檢驗以自第三運算元選擇一或多個位元。若經選擇位元被設定,則第一運算元中的對應元素之所有位元位置設定為一;否則,該等位元位置設定為零。亦即,若包含於第二運算元之元素中的浮點數之類別/正負號匹配第三運算元中的經設定位元(亦即,設定為例如一之位元),則對應於第二運算元之元素的第一運算元之元素被設定為一。在一實例中,所有運算元元素含有長格式BFP(二進位浮點)數。
如本文中所指示的,第三運算元之12個位元(指令本文之位元16至27)用以規定BFP資料類別及正負號的12個組合。在一實例中,如圖4B中所示,BFP運算元元素被劃分為六個類別430:零、正規數、次正規數、無窮大數、無訊息(quiet)NaN(不是數字),及發信號NaN,且每一類別具有與其相關聯之正負號432(正抑或負)。因此,例如,I3之位元0規定具有正號之零類別,且位元1規定具有負號之零類別,等等。
第三運算元位元中之一或多者可設定為一。此外,在一實施例中,指令可同時對一或多個元素操作。
在不造成IEEE例外狀況的情況下檢驗包括SNaN(發信號NaN)及QNaN(無訊息NaN)之運算元元素。
所有元素之所得概述條件碼為:
0 針對所有元素,經選擇位元為1(匹配)
1 針對至少一但並非所有元素,經選擇位元為1(當S位元為零時)
2 --
3 針對所有元素,經選擇位元為0(不匹配)
IEEE例外狀況:無
程式例外狀況:
‧具有資料例外狀況碼(DXC)FE之資料、向量指令,指示未啟用向量設施
‧操作(若未安裝z/架構之向量設施)
‧規格
‧異動約束
程式設計註釋:
1. 此指令提供一種在無例外狀況之風險或不必設定IEEE旗標的情況下測試運算元元素的方式。
2. 當設定S位元時,未使用條件碼1。
參考圖4C及圖4D描述與向量浮點測試資料類別立即指令之一實施例有關的其他細節。確切而言,圖4C描繪與由處理器(例如,CPU)執行之向量浮點測試資料類別立即指令相關聯的邏輯的一實施例,且圖4D描繪說明向量浮點測試資料類別立即指令之執行的方塊圖的一實例。
參看圖4C,最初,被稱作元素索引(Ei)之變數經初始化為零,步驟450。接著,自指令之第二運算元(例如,自儲存於由V2指定之暫存器中的運算元)擷取元素Ei(在此狀況中為元素0)中的值,步驟452。將此值(其為長格式二進位浮點值)轉換成類型數以獲得針對第二運算 元之浮點元素的類別與正負號,如下文所描述,步驟454。在一實例中,浮點數453之大小被輸入至轉換邏輯。所獲得的類別與正負號與特定類別/正負號位元相關聯,如參考圖4B所描述的。例如,若轉換指示浮點數為正的正規數,則位元2與該浮點數相關聯。
轉換之後,檢查第三運算元中的對應於基於轉換而判定之特定位元的位元(被稱作經選擇位元),步驟456。若經選擇位元被設定,查詢458,則第一運算元中之對應於元素(Ei)的元素被設定為全部等於一,步驟460;否則,彼第一運算元中之元素被設定為等於零,步驟462。例如,若元素0中的浮點數之轉換指示正的正規數,則位元2與該數相關聯。因此,檢查第三運算元之位元2,且若該位元被設定為一,則第一運算元之元素0被設定為全部為一。
此後,進行關於Ei是否等於第二運算元之元素的最大數的判定,查詢464。若不等於,則Ei遞增(例如)一,步驟466,且處理繼續進行步驟452。否則,若Ei等於元素之最大數,則產生概述條件碼,步驟468。概述條件碼概述對第二運算元之所有元素的處理。例如,若經選擇位元針對所有元素為一(匹配),則所得條件碼為零。在另一方面,若經選擇位元針對至少一元素但並非所有元素為1(當S位元並非為零時),則條件碼為1,且若經選擇位元針對所有元素為零(不匹配),則條件碼為3。
在圖4D之方塊圖中以繪畫方式展示上文處理。如所描繪,向量暫存器480包括複數個元素482a至482n,每一者包括一浮點數。每一浮點數及浮點數483a至483n之大小被輸入至轉換成類型數邏輯484a至484n中,且輸出為表示浮點數之類別/正負號的特定位元。接著,檢查每一遮罩486a至486b中的對應於每一特定位元之經選擇位元。取決於是否設定經選擇位元,設定向量暫存器488中的第一運算元。例如,若對於第二運算元之元素0,設定經選擇位元,則第一運算元之 元素490a被設定為全部為一。類似地,若未設定針對第二運算元之元素1的經選擇位元(例如,設定為零),則第一運算元之元素490b被設定為零,等等。
現描述轉換成類型數邏輯之一實施例的其他細節。最初,如已知的,將浮點數(其為標準IEEE二進位浮點數)轉換成三個部分:正負號、指數(8位元)+127,及分數(23位元)。接著,如圖4E中所示,檢查所有三個部分的值以判定類別及正負號。例如,正負號為正負號部分的值,且類別(亦即,圖4E中的實體)係基於指數與分數的值(圖4E中的單位位元為分數之隱含位元)。作為一實例,若指數與分數之值(包括單位位元)為零,則,類別為零,且若正負號部分為正,則正負號為正。因此,位元0(圖4B)表示此浮點數之類別/正負號。
上文描述的為用以測試向量中之元素的浮點類別及設定所得位元遮罩的指令的一實施例。向量浮點測試資料類別立即指令具有立即欄位,其中每一位元表示待偵測之浮點數的類別。測試輸入向量之每一浮點元素,以瞭解該值是否處於由指令規定之類別中的任意者中。若浮點元素處於該等類別中的一者中,則輸出向量之對應元素的位元位置被設定為1。此提供一種在不造成任何例外狀況或中斷的情況下判定關於二進位浮點數之一些屬性(例如,類別及正負號)的技術。
在另一實施例中,可藉由檢查第三運算元中哪些位元被設定(例如,為一),且接著判定第二運算元之一或多個元素的類別/正負號是否與所設定位元中的一者相同而執行測試。接著,基於比較設定第一運算元。
在另一態樣中,提供一向量總和檢查指令,其一實例描繪於圖5A中。在一實例中,向量總和檢查指令500包括:指示向量總和檢查操作之作業碼欄位502a(例如,位元0至7)、502b(例如,位元40至47);用以指定第一向量暫存器(V1)之第一向量暫存器欄位504(例 如,位元8至11);用以指定第二向量暫存器(V2)之第二向量暫存器欄位506(例如,位元12至15);用以指定第三向量暫存器(V3)之第三向量暫存器欄位508(例如,位元16至19);及RXB欄位510(例如,位元36至39)。在一實例中,欄位504至510中之每一者係分離的,且獨立於作業碼欄位。此外,在一實施例中,該等欄位係分離的且彼此獨立;然而,在其他實施例中,可組合一個以上欄位。
在另一實施例中,第三向量暫存器欄位並非被包括作為指令之顯式運算元,而是為隱含運算元或輸入。此外,運算元中提供之值可以其他方式提供,諸如位於通用暫存器中、位於記憶體中,作為位址計算而提供等等。
在又一實施例中,完全不提供第三運算元(顯式的或隱含的)。
在一實例中,由作業碼欄位502a指定之作業碼的經選擇位元(例如,前兩個位元)規定指令之長度。在此特定實例中,經選擇位元指示長度為三個半字組。此外,指令之格式為具有擴展型作業碼欄位的向量暫存器與暫存器操作。向量(V)欄位中的每一者連同由RXB規定之此對應擴展位元指定一向量暫存器。確切而言,對於向量暫存器,使用(例如)暫存器欄位之四位元欄位外加作為最高有效位元的其對應暫存器擴展位元(RXB)規定含有運算元之暫存器。
在向量總和檢查指令之一實施例的執行中,將來自第二運算元之元素(其具有例如,字組大小)連同第三運算元之經選擇元素(例如,第三運算元的字組一中的元素)逐個相加在一起。(在另一實施例中,加上第三運算元之經選擇元素係選用的)。將總和置於經選擇位置中,例如第一運算元之字組一。將零置放於其他字組元素中,例如,第一運算元之字組元素0,及2至3中。具有字組大小之元素全部被視為32位元的無正負號之二進位整數。在元素之每一相加之後,將總和之(例如)位元位置0的進位輸出與(例如)第一運算元之字組元素一中的 結果的位元位置31相加。
條件碼:碼保持不變
程式例外狀況:
‧具有資料例外狀況碼(DXC)FE之資料、向量指令,指示未啟用向量設施
‧操作(若未安裝z/架構之向量設施)
‧異動約束
程式設計註釋:
1. 第三運算元之內容將於總和檢查計算演算法之開始處含有零。
2. 16位元總和檢查被用於(例如)TCP/IP應用中。可在已計算32位元總和檢查之後執行以下程式:VERLLF V2,V1,16(0) (VERLLF-向量元素左旋轉邏輯-4位元組值)
VAF V2,V1,V2 (VAF-向量相加-4位元組值)
元素2中的半字組含有16位元總和檢查。
參考圖5B及圖5C描述與向量總和檢查指令有關的其他細節。在一實例中,圖5B描繪在向量總和檢查指令之執行中由處理器執行之邏輯的一實施例,且圖5C描繪向量總和檢查指令之執行的一實例的方塊圖。
參看圖5B,最初,將第一運算元(OP1)之元素索引(Ey)設定為(例如)一,從而指示第一運算元之元素1,步驟530。類似地,將第三運算元(OP3)之元素索引(Ex)設定為(例如)一,從而指示第三運算元之元素1,步驟532。接著,將元素索引(Ei)設定為等於0,且將元素索引(Ey)處的元素(亦即,此實例中之元素1)初始化為零,步驟534。在另一實施例中,Ex及Ey可設定為任何有效元素索引。
執行端迴進位(EAC)加法,其中OP1(Ey)=OP1(Ey)+OP2(Ei)+OP2(Ei+1),步驟536。因此,將輸出向量(OP1)之元素1設定為等於彼元素之內容加上第二運算元(OP2)之元素0中的值及第二運算元之元素1中的值。在使用端迴進位加法的情況下,執行加法運算,且將來自該加法的任何進位加回至總和中以產生新的總和。
在另一實施例中,代替如上文描述之加法,執行以下操作:定義一臨時累加器值,且將其初始化為零,且接著一次加上一個元素。 作為另一實施例,並列相加所有字組,且不存在臨時累加器。其他變化亦係可能的。
此後,做出關於是否存在有待加入第二運算元中之額外元素的判定,查詢538。例如,Ei-2<第二運算元之元素的數目?若存在更多的要相加的第二運算元元素,則使Ei遞增(例如)二,步驟540,且處理繼續進行步驟536。
在於第二運算元上添加元素之後,將結果添加至第三運算元中的值。例如,執行第一運算元之元素(Ey)(其為所有第二運算元元素之EAC相加的總和)與第三運算元(OP3)之元素(Ex)中的值的端迴進位加法(亦即,EAC ADD OP1(Ey)+OP3(Ex)),步驟542。此以繪畫方式展示於圖5C中。
如圖5C中所示,第二運算元550包括複數個元素552a至552n,且彼等元素連同第三運算元560之字組1(562)中的元素逐個相加在一起。結果被置於第一運算元570之元素1(572)中。此以數學方式由方程式Ey=Ex+Ei之總和展示,其中i=0至n,且該加法為端迴進位加法。
上文描述的為對向量暫存器之元素執行總和檢查,而非執行巷道算術的向量總和檢查指令之一實施例。在一實施例中,向量總和檢 查指令藉由用端迴進位加法執行求和而執行總和檢查。在一實例中,向量總和檢查指令自向量暫存器得到四個4位元組整數元素,且將其相加。將來自加法的任何進位加回去。將4位元組總和與另一運算元中的4位元組元素相加,且接著儲存於又一向量暫存器中(例如,向量暫存器之低序位4位元組元素,其中零儲存於向量暫存器之更高序位元素中)。
在另一實施例中,並非將其他向量暫存器或另一暫存器用以儲存值,而是作為代替,將其他暫存器(亦即,運算元)中的一者用作累加器。
所提供之總和檢查可用以保持資料完整性。總和檢查常常應用於資料,且經由有雜訊通道發送,以便驗證所接收之資料係正確的。 在此實例中,如本文中所描述的,藉由將依序的4位元組整數相加在一起而計算總和檢查。若存在整數算術運算之進位輸出,則將進位及額外的一加入連續的總和中。
儘管本文中描述總和檢查,但可將類似技術用於其他端迴進位加法中。
根據一態樣提供之其他指令為向量高氏場乘法求和與累加(VGFMA)指令,其實例描繪於圖6A中。在一實例中,向量高氏場乘法求和與累加指令600包括:指示向量高氏場乘法求和與累加操作之作業碼欄位602a(例如,位元0至7)、602b(例如,位元40至47);用以指定第一向量暫存器(V1)之第一向量欄位604(例如,位元8至11);用以指定第二向量暫存器(V2)之第二向量暫存器欄位606(例如,位元12至15);用以指示第三向量暫存器(V3)之第三向量暫存器欄位608(例如,位元16至19);遮罩欄位(M5)610(例如,位元20至23);用以指定第四向量暫存器(V4)之第四向量暫存器欄位612(例如,位元32至35);及RXB欄位614(例如,位元36至39)。在一實例中,欄位604至 614中之每一者係分離的,且獨立於作業碼欄位。此外,在一實施例中,該等欄位係分離的且彼此獨立;然而,在其他實施例中,可組合一個以上欄位。
在一實例中,由作業碼欄位602a指定之作業碼的經選擇位元(例如,前兩個位元)規定指令之長度。在此特定實例中,經選擇位元指示長度為三個半字組。此外,指令之格式為具有擴展型作業碼欄位的向量暫存器與暫存器操作。向量(V)欄位中的每一者連同其由RXB規定之對應擴展位元一起指定一向量暫存器。確切而言,對於向量暫存器,使用(例如)暫存器欄位之4位元欄位外加作為最高有效位元的其對應暫存器擴展位元(RXB)規定含有運算元之暫存器。
M5欄位610具有例如4個位元0至3,且規定元素大小(ES)控制。 元素大小控制規定向量暫存器運算元二及三中之元素的大小;第一及第四運算元中的元素為由ES控制規定之彼等元素的大小的兩倍。例如,作為實例,M5中0之值指示具有位元組大小之元素;1指示半字組;2指示字組;且3指示雙字組。
在向量高氏場乘法求和與累加指令之一實施例的執行中,第二運算元之每一元素在高氏場(亦即,具有有限元素數目之有限場)中與第三運算元之對應元素相乘。亦即,使用無進位乘法將第二運算元之每一元素與第三運算元之對應元素相乘。在一實例中,高氏場具有二階。此乘法類似於標準二進位乘法,但經移位被乘數被互斥或(XOR),而非加上經移位被乘數。(例如)具有雙元素大小之乘積的所得偶奇數對被彼此進行互斥或,且與第四運算元之對應元素(例如,雙寬度元素)進行互斥或。結果被置於(例如)第一運算元之雙寬度元素中。
條件碼:碼保持不變
程式例外狀況:
‧具有資料例外狀況碼(DXC)FE之資料、向量指令,指示未啟用向量設施
‧操作(若未安裝z/架構之向量設施)
‧規格
‧異動約束
在另一實施例中,指令可包括少一或多個運算元。例如,待進行互斥或之值位於第一運算元(而非第四運算元)中,該第一運算元亦將包括結果。其他變化亦係可能的。
參考圖6B及圖6C描述與執行向量高氏場乘法求和與累加指令之一實施例有關的其他細節。在一實例中,圖6B描繪由處理器執行以執行向量高氏場乘法求和與累加指令的邏輯的一實施例,且圖6C描繪展示邏輯之執行的方塊圖的一實例。
參看圖6B,最初,自第二運算元(OP2)、第三運算元(OP3),及第四運算元(OP4)擷取偶/奇數對,步驟630,且執行無進位乘法求和累加功能,步驟632。例如,當在2次冪之高氏場中操作時,無進位乘法為實際上忽略任何進位的移位與XOR(互斥或)。將結果置於第一運算元(OP1)中,步驟634,且做出關於是否存在更多待擷取之對的判定,查詢636。若存在更多對,則處理繼續進行步驟630;否則,處理完成,步驟638。在一實例中,元素大小631為至步驟630至634之輸入。
參考圖6C描述步驟632之無進位乘法求和累加功能的其他細節。如所示,自第二運算元650擷取運算元對OP2H 652a、OP2L 652b。此外,自第三運算元660擷取運算元對OP3H 662a、OP3L 662b,且自第四運算元670擷取運算元對OP4H 672a及OP4L 672b。用無進位乘法將運算元OP2H 652a與運算元OP3H 662a相乘,且提供結果H 680a。類似地,使用無進位乘法將運算元OP2L 652b與運算元OP3L 662b相 乘,且提供結果L 680b。接著將結果H 680a與結果L 680b進行互斥或,且將彼結果與運算元OP4H 672a及運算元OP4L 672b進行互斥或,且結果被置於OP1H 690a、OP1L 690b中。
本文中描述的為執行無進位乘法運算,且接著執行最終互斥或以形成經累加之總和的向量指令。此技術可與在具有2階之有限場中執行操作的錯誤偵測碼及密碼編譯的各種態樣一起使用。
在一實例中,指令對向量暫存器之複數個元素執行無進位乘法運算以獲得一總和。此外,指令對該總和執行最終互斥或以形成經累加之總和。當指令被執行時,該指令在高氏場中將第二向量及第三向量之對應元素相乘,且經移位被乘數被進行XOR運算。每一雙寬度乘積被彼此進行XOR,且結果與第一向量之雙寬度對應元素進行XOR。 結果儲存於第一向量暫存器中。儘管上文描述雙寬度元素,但可使用具有其他元素大小的字組大小之元素。指令可對多個不同元素大小進行操作。
根據一態樣提供之另一指令為向量產生遮罩(VGM)指令,參考圖7A描述其一實例。在一實例中,向量產生遮罩指令700包括:指示向量產生遮罩操作之作業碼欄位702a(例如,位元0至7)、702b(例如,位元40至47);用以指定第一向量暫存器(V1)之第一向量暫存器欄位704(例如,位元8至11);用以規定第一值之第一立即欄位I2 706(例如,位元16至24);用以規定第二值之第二立即欄位(I3)708(例如,位元24至32);遮罩欄位(M4)710(例如,位元32至35);及RXB欄位712(例如,位元36至39)。在一實例中,欄位704至712中之每一者係分離的,且獨立於作業碼欄位。此外,在一實施例中,該等欄位係分離的且彼此獨立;然而,在其他實施例中,可組合一個以上欄位。
在另一實施例中,作為實例,第一值及/或第二值可被提供於通用暫存器中、記憶體中、(根據每元素而不同的)向量暫存器之元素 中,或來自位址計算。該第一值及/或第二值可被包括作為指令之顯式運算元或作為隱含運算元或輸入。
在一實例中,由作業碼欄位702a指定之作業碼的經選擇位元(例如,前兩個位元)規定指令之長度。在此特定實例中,經選擇位元指示長度為三個半字組。此外,指令之格式為具有擴展型作業碼欄位的向量暫存器與立即操作。向量(V)欄位中的每一者連同由RXB規定之其對應擴展位元一起指定一向量暫存器。確切而言,對於向量暫存器,使用(例如)暫存器欄位之四位元欄位外加用作最高有效位元的其對應暫存器擴展位元(RXB)規定含有運算元之暫存器。
M4欄位規定(例如)元素大小控制(ES)。元素大小控制規定向量暫存器運算元中之元素的大小。在一實例中,M4欄位之位元0規定一位元組;位元1規定半字組(例如,2個位元組);位元2規定一字組(例如,4個位元組;亦即,全字組);且位元3規定一雙字組。
在向量產生遮罩指令之一實施例的執行中,針對第一運算元中的每一元素,產生位元遮罩。遮罩包括開始於由(例如)I2中之無正負號整數值規定的位元位置且結束於由(例如)I3中之無正負號整數值規定的位元位置的設定為一的位元。所有其他位元位置被設定為零。在一實例中,僅僅自I2及I3欄位中使用表示所規定之元素大小之所有位元位置所需的位元的數目;忽略其他位元。若I2欄位中之位元位置大於I3欄位中之位元位置,則位元之範圍在所規定之元素大小的最大位元位置處繞回。例如,假定位元組大小之元素,若I2=1且I3=6,則所得遮罩為X|7E|或B|01111110|。然而,若I2=6且I3=1,則所得遮罩為X|81|或b|10000001|
條件碼:碼保持不變
程式例外狀況:
‧具有資料例外狀況碼(DXC)FE之資料、向量指令,指示未啟 用向量設施
‧操作(若未安裝z/架構之向量設施)
‧規格
‧異動約束
參考圖7B及圖7C描述與向量產生遮罩指令之一實施例有關的其他細節。確切而言,圖7B描繪與由處理器執行之向量產生遮罩指令相關聯之邏輯的一實施例,且圖7C描繪說明向量產生遮罩指令之執行之一實施例的方塊圖的一實例。
參看圖7B,最初,針對第一運算元中之每一元素產生遮罩,步驟720。此步驟使用各種輸入,包括作為開始位置(722)的在第二運算元欄位中規定之值,及作為結束位置(724)的在第三運算元欄位中規定之值,及如在M4欄位中規定的元素之大小(726)。此等輸入用以產生遮罩且填充第一運算元(Op1)之經選擇元素(例如元素0)的位置,步驟730。例如,第一運算元(Op1)之元素0包括複數個位置(例如,位元位置),且開始於由I2中之無正負號整數值規定的位置處且結束於由I3中之無正負號整數值規定的位置處,第一運算元之元素0的位置(例如,位元)被設定為1。其他位元位置被設定為0。此後,做出關於第一運算元中是否存在更多元素的判定,查詢734。若存在更多元素,則處理繼續進行步驟720。否則,處理完成,步驟736。
在圖7C中以繪畫方式描繪遮罩之產生及第一運算元之填充。如所示,使用輸入(例如,722至726)針對第一運算元之每一元素產生遮罩720,且將產生遮罩之結果儲存於第一運算元之元素中740。
上文詳細描述的為針對向量之每一元素產生位元遮罩的指令。在一實施例,該指令獲得開始位元位置及結束位元位置,且形成針對每一元素而複製的位元遮罩。該指令規定位元範圍,且針對向量暫存器之每一元素,該範圍內的每一位元被設定為一,而其他位元被設定 為零。
在一實施例中,使用指令產生位元遮罩提供相對於(例如)自記憶體載入位元遮罩之益處,後者增大指令串流之快取覆蓋區,且取決於所需之遮罩的數目,可增大關鍵迴圈中之等待時間。
根據一態樣提供之又一指令為一依據遮罩之向量元素旋轉與***(VERIM)指令,其實例描繪於圖8A中。在一實例中,依據遮罩之向量元素旋轉與***指令800包括:指示依據遮罩之向量元素旋轉與***操作之作業碼欄位802a(例如,位元0至7)、802b(例如,位元40至47);用以指定第一向量暫存器(V1)之第一向量暫存器欄位804(例如,位元8至11);用以指定第二向量暫存器(V2)之第二向量暫存器欄位806(例如,位元12至15);用以指定第三向量暫存器(V3)之第三向量暫存器欄位808(例如,位元16至19);包括(例如)規定每一元素所旋轉之位元數目之無正負號二進位整數的立即欄位(I4)812(例如,位元24至31);遮罩欄位(M5)814(例如,位元32至35);及RXB欄位816(例如,位元36至39)。在一實例中,欄位804至816中之每一者係分離的,且獨立於作業碼欄位。此外,在一實施例中,該等欄位係分離的且彼此獨立;然而,在其他實施例中,可組合一個以上欄位。
在一實例中,由作業碼欄位802a指定之作業碼的經選擇位元(例如,前兩個位元)規定指令之長度。在此特定實例中,經選擇位元指示長度為三個半字組。此外,指令之格式為具有擴展型作業碼欄位的向量暫存器與立即操作。向量(V)欄位中的每一者連同由RXB規定之其對應擴展位元一起指定一向量暫存器。確切而言,對於向量暫存器,使用(例如)暫存器欄位之4位元欄位外加作為最高有效位元的其對應暫存器擴展位元(RXB)規定含有運算元之暫存器。
M5欄位規定元素大小控制(ES)。元素大小控制規定向量暫存器運算元中之元素的大小。在一實例中,M5欄位之位元0規定一位元 組;位元1規定半字組(例如,2個位元組);位元2規定一字組(例如,4個位元組;亦即,全字組);且位元3規定一雙字組。
在依據遮罩之向量元素旋轉與***指令之一實施例的執行中,第二運算元之每一元素向左旋轉由第四運算元規定之位元數目。自元素之最左側位元位置移位出的每一位元再次進入元素之最右側位元位置中。第三運算元包括每一元素中的遮罩。對於第三運算元中之為一的每一位元,第二運算元中的經旋轉元素之對應位元替換第一運算元中的對應位元。亦即,經旋轉元素之對應位元的值替換第一運算元中之對應位元的值。對於第三運算元中之為零的每一位元,第一運算元之對應位元保持不變。除第一運算元與第二運算元抑或第三運算元相同的狀況之外,第二及第三運算元保持不變。
第四運算元為(例如)規定第二運算元中之每一元素所旋轉的位元數目的無正負號二進位整數。若值大於經規定元素大小中的位元數目,則該值以元素中之位元數目為模而減小。
在一實例中,使用本文中描述之VGM指令產生包括於第三運算元中的遮罩。
條件碼:碼保持不變
程式例外狀況:
‧具有資料例外狀況碼(DXC)FE之資料、向量指令,指示未啟用向量設施
‧操作(若未安裝z/架構之向量設施)
‧規格
‧異動約束
程式設計註釋:
1. VERIM與VGM之組合可用以實現旋轉與***選定位元指令之完整功能性。
2. 儘管I4欄位之位元經定義以含有規定每一元素左旋轉之位元數目的無正負號二進位整數,但可對實際上規定右旋轉量之負值編碼。
參考圖8B及圖8C描述與依據遮罩之向量元素旋轉與***指令之執行有關的其他細節。詳言之,圖8B描繪與由處理器執行之依據遮罩之向量元素旋轉與***指令相關聯之邏輯的一實施例,且圖8C以繪畫方式描繪執行依據遮罩之向量元素旋轉與***指令的一實例。
參考圖8B,按第四運算元中規定的量(820)旋轉第二運算元之經選擇元素,步驟830。若第四運算元中規定之值大於元素大小中規定之位元數目(822),則彼值以元素中之位元數目為模而減小。
在旋轉元素之位元之後,執行依據遮罩合併,步驟832。例如,對於第三運算元中之為1的每一位元(824),第二運算元中的經旋轉元素之對應位元替換第一運算元中的對應位元。
此後,做出關於是否存在待旋轉之更多元素的判定,查詢834。若存在待旋轉之更多元素,則處理繼續進行步驟830。否則,處理完成,步驟836。
參看圖8C,如所示,基於輸入820及822旋轉第二運算元之元素830。此外,使用輸入824執行依據遮罩合併832。輸出被提供於第一運算元850中。
上文描述的為依據遮罩之向量元素旋轉與***指令之一實例。此指令用以將經選擇運算元中之元素旋轉一經定義位元數目。儘管規定了位元,但在另一實施例中,可將元素旋轉若干位置的量,且該等位置可不同於位元。此外,指令可與不同元素大小一起使用。
作為一實例,此指令用於從用於表查找的數目中選出某些位元範圍。
在某些向量指令或其他SIMD操作之執行期間,可出現例外狀 況。當SIMD操作出現例外狀況時,通常不可得知向量暫存器的哪一元素導致該例外狀況。軟體中斷處理常式必須擷取每一元素,且在純量模式中重新進行計算,以判定哪個或哪些元素導致該例外狀況。然而,根據一態樣,當機器(例如,處理器)處理歸因於向量操作之程式中斷時,報告指示(例如)向量中導致該例外狀況之最低索引元素的元素索引。接著,軟體中斷處理常式可立即跳至問題元素,且執行任何所需或所要的動作。
例如,在一實施例中,當向量資料例外狀況導致程式中斷時,向量例外狀況碼(VXC)被儲存於(例如)真實記憶體位置(例如,位置147(X |93|)處,且零被儲存於(例如)真實記憶體位置144至146(X |90|至X |92|)處。在另一實施例中,若經指定控制暫存器(例如,CR0)之經規定位元(例如,位元45)為1,則VXC亦被置於浮點控制暫存器之資料例外狀況碼(DXC)欄位中。當控制暫存器0之位元45為0,且控制暫存器0之位元46為1時,FPC暫存器之DXC及位置147(X |93|)處之儲存內容係不可預測的。
在一實施例中,VXC區分不同類型之向量浮點例外狀況,且指示哪個元素導致例外狀況。在一實例中,如圖9A中所描繪,向量例外狀況碼900包括向量索引(VIX)902及向量中斷碼(VIC)904。在一實例中,向量索引包括向量例外狀況碼之位元0至3,且其值為辨識例外狀況之經選擇向量暫存器的最左側元素的索引。此外,向量中斷碼包括於向量例外狀況碼之位元4至7中,且作為實例具有以下值:0001 IEEE無效操作
0010 IEEE被零除
0011 IEEE溢位
0100 IEEE欠位
0101 IEEE不精確
在另一實施例中,VXC僅包括導致例外狀況之元素的向量索引或其他位置指示符。
在一實施例中,VXC可由包括(例如)以下指令之若干指令設定:例如,向量浮點(FP)加法、向量FP比較純量、向量FP比較相等、向量FP比較高或相等、向量FP自固定64位元轉換、向量FP自邏輯64位元轉換、向量FP轉換至固定64位元、向量FB轉換至邏輯64位元、向量FP除法、向量負載FP整數、向量FP延長負載、向量FP捨入負載、向量FP乘法、向量FP乘法與加法、向量FP乘法與減法、向量FP平方根,及向量FP減法,以及其他類型的向量浮點指令及/或其他指令。
參考圖9B描述與設定向量例外狀況碼有關的其他細節。在一實施例中,計算環境之處理器執行此邏輯。
參看圖9B,最初,執行對向量暫存器操作的指令,諸如上文列出之指令或另一指令中的一者,步驟920。在指令之執行期間,遇到例外狀況條件,步驟922。在一實例中,此例外狀況條件導致中斷。 做出關於向量暫存器的哪個元素導致例外狀況的判定,步驟924。例如,對向量暫存器之一或多個元素執行計算的處理器之一或多個硬體單元判定例外狀況且提供信號。例如,若複數個硬體單元正在對向量暫存器之複數個元素並列執行計算,且在一或多個元素之處理期間遇到例外狀況,則執行遇到例外狀況之處理的硬體單元發信號一例外狀況條件以及所處理之元素的指示。在另一實施例中,若依序執行向量之元素,且在處理元素期間遇到例外狀況,則硬體將指示在出現例外狀況時該硬體正對序列中之哪一元素操作。
基於被發信號之例外狀況,設定向量例外狀況碼,步驟926。此包括(例如)指示向量暫存器中導致例外狀況之元素的一位置以及中斷碼。
上文詳細描述的為提供高效向量例外狀況處置的向量例外狀況 碼。在一實例中,當機器處理歸因於向量操作之程式中斷時,報告指示向量暫存器中導致該例外狀況之最低索引元素的元素索引。作為一特定實例,若正執行向量加法,且每一向量暫存器存在兩個元素(提供A0+B0及A1+B1),且針對A0+B0(而非A1+B1)接收不精確結果,則VIX被設定為0且VIC被設定為等於0101。在另一實例中,若碰巧A0+B0不接收例外狀況,而A1+B1接收例外狀況,則VIX被設定為等於1(VIC=0101)。若均發生例外狀況,則VIX被設定為0,此係因為其為最左側索引位置,且VIC=0101。
上文詳細描述各種向量指令,以及指示向量暫存器內之例外狀況的位置的向量例外狀況碼。在所提供之流程圖中,一些處理可依序出現;然而,在一或多個實施例中,並列處理元素,且因此,可無需檢查(例如)是否存在更多待處理的元素。許多其他變化亦係可能的。
另外,在另一實施例中,作為實例,指令之一或多個欄位的內容可被提供於通用暫存器中、記憶體中、(根據每元素而不同的)向量暫存器之元素中,或來自位址計算。該等內容可被包括作為指令之顯式運算元或作為隱含運算元或輸入。此外,一或多個指令可使用較少運算元或輸入,且作為代替,一或多個運算元可用於多個操作或步驟。
此外,如本文中所描述的,可以其他方式提供元素大小控制,而非在指令之欄位中包括元素大小控制。另外,元素大小可由作業碼指定。例如,指令之特定作業碼指定元素之操作以及大小,等等。
在本文中,記憶體、主記憶體,儲存器及主儲存器可互換使用,除非另外明確指出或藉由上下文指出。
如熟習此項技術者所瞭解的,態樣可體現為系統、方法,或電腦程式產品。因此,態樣可採取完全硬體實施例、完全軟體實施例(包括韌體、常駐軟體、微碼等等),或組合可在本文中全部大體上稱 為「電路」、「模組」或「系統」之軟體及硬體態樣之實施例的形式。 此外,態樣可採取體現於一或多個電腦可讀媒體中之電腦程式產品的形式,其中該或該等電腦可讀媒體具有體現於其上的電腦可讀程式碼。
可利用一或多個電腦可讀媒體之任何組合。電腦可讀媒體可為電腦可讀儲存媒體。舉例而言,電腦可讀儲存媒體可為(但不限於)電子、磁性、光學、電磁、紅外線或半導體系統、裝置或器件,或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例(非詳盡清單)包括以下各者:具有一或多條導線之電連接、攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、光纖、攜帶型光碟唯讀記憶體(CD-ROM)、光學儲存器件、磁性儲存器件,或前述各者之任何合適組合。在此文件之上下文中,電腦可讀儲存媒體可為可含有或儲存供指令執行系統、裝置或器件使用或結合指令執行系統、裝置或器件而使用之程式的任何有形媒體。
現參看圖10,在一實例中,電腦程式產品1000包括(例如)一或多個非暫時性電腦可讀儲存媒體1002,以於其上儲存電腦可讀程式碼構件或邏輯1004,從而提供且促進本發明之一或多個態樣。
可使用一適當媒體來傳輸體現於電腦可讀媒體上之程式碼,適當媒體包括(但不限於)無線、有線、光纖纜線、RF等或前述各者之任何合適組合。
用於執行諸態樣之操作的電腦程式碼可用一或多個程式設計語言的任何組合來撰寫,該等語言包括物件導向程式設計語言(諸如JAVA、Smalltalk、C++或其類似者),及習知程序性程式設計語言(諸如「C」程式設計語言)、組譯程式或類似程式設計語言。程式碼可完全在使用者電腦上執行,部分地在使用者電腦上執行,作為獨立套裝 軟體而執行,部分地在使用者電腦上執行且部分地在遠端電腦上執行,或完全在遠端電腦或伺服器上執行。在完全在遠端電腦或伺服器上執行的情境中,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者電腦,或可連接至外部電腦(例如,使用網際網路服務提供者,經由網際網路)。
本文中參考根據一或多個實施例之方法、裝置(系統)及電腦程式產品的流程圖說明及/或方塊圖來描述態樣。應理解,可藉由電腦程式指令來實施該等流程圖說明及/或方塊圖之每一區塊及該等流程圖說明及/或方塊圖中之區塊的組合。可將此等電腦程式指令提供至通用電腦、專用電腦或其他可程式化資料處理裝置之一處理器以產生一機器,以使得經由該電腦或其他可程式化資料處理裝置之該處理器而執行之指令產生用於實施在該或該等流程圖及/或方塊圖區塊中規定之功能/動作之構件。
亦可將此等電腦程式指令儲存於一電腦可讀媒體中,該等指令可命令電腦、其他可程式化資料處理裝置或其他器件以特定方式發揮作用,使得儲存於該電腦可讀媒體中之指令產生一製品,該製品包括實施在該或該等流程圖及/或方塊圖區塊中所規定之功能/動作的指令。
亦可將該等電腦程式指令載入至電腦、其他可程式化資料處理裝置或其他器件上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上執行以產生一電腦實施程序,使得在該電腦或其他可程式化裝置上執行之指令提供用於實施在該或該等流程圖及/或方塊圖區塊中規定之功能/動作的程序。
該等圖中之流程圖及方塊圖說明根據各種實施例的系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示程式碼之一模組、區段或部分,其包 含用於實施規定之邏輯功能的一或多個可執行指令。亦應注意,在一些替代實施中,區塊中所提到之功能可不以諸圖中所提到之次序發生。舉例而言,取決於所涉及之功能性,連續展示之兩個區塊實際上可實質上同時執行,或該等區塊有時可以相反次序執行。亦應注意,可藉由執行規定之功能或動作的基於專用硬體之系統或專用硬體及電腦指令之組合來實施方塊圖及/或流程圖說明之每一區塊及方塊圖及/或流程圖說明中之區塊的組合。
除上文之外,可由供應客戶環境之管理的服務提供者提供、供應、部署、管理、服務等等一或多個態樣。例如,服務提供者可形成、維持、支援等等針對一或多個客戶執行一或多個態樣的電腦程式碼及/或電腦基礎架構。作為回報,作為實例,服務提供者可依據訂用及/或收費協議自客戶收取付款。額外或替代性地,服務提供者可藉由將廣告內容銷售給一或多個第三方而收取付款。
在一態樣中,可部署用於執行一或多個態樣的應用程式。作為一實例,應用程式之部署包含提供可操作以執行一或多個態樣的電腦基礎架構。
作為另一態樣,可部署計算基礎架構,其包含將電腦可讀程式碼整合至計算系統中,其中結合計算系統之程式碼能夠執行一或多個態樣。
作為又一態樣,可提供包含將電腦可讀程式碼整合至電腦系統中的用於整合計算基礎架構之程序。電腦系統包含電腦可讀媒體,其中該電腦媒體包含一或多個態樣。與電腦系統組合之程式碼能夠執行一或多個態樣。
儘管上文描述各種實施例,但此等僅為實例。舉例而言,其他架構之計算環境可併入有且使用一或多個態樣。此外,可使用具有其他大小之向量,且可在不偏離一或多個態樣的情況下對指令做出改 變。此外,可使用不同於向量暫存器的暫存器。另外,在其他實施例中,向量運算元可為記憶體位置,而非向量暫存器。其他變化亦係可能的。
此外,其他類型之計算環境可受益於一或多個態樣。作為一實例,可使用適用於儲存及/或執行程式碼之資料處理系統,其包括直接或經由系統匯流排間接耦接至記憶體元件的至少兩個處理器。記憶體元件包括(例如)在程式碼之實際執行期間使用之本端記憶體、大容量儲存器,及快取記憶體,該快取記憶體對至少某一程式碼提供臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼的次數。
輸入/輸出或I/O器件(包括(但不限於)鍵盤、顯示器、指標器件、DASD、磁帶、CD、DVD、隨身碟(thumb drive)及其他記憶體媒體等)可直接或經由介入的I/O控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠經由介入之私用或公用網路耦接至其他資料處理系統或遠端印表機或儲存器件。數據機、纜線數據機及乙太網路卡僅為可用類型之網路配接器中的少數幾種。
參看圖11,描畫了實施一或多個態樣的主機電腦系統5000之代表性組件。代表性主機電腦5000包含與電腦記憶體(亦即,中央儲存器)5002通信的一或多個CPU 5001,以及用於與其他電腦或SAN及類似者通信的至儲存媒體器件5011及網路5010之I/O介面。CPU 5001符合具有架構化指令集及架構化功能性之架構。CPU 5001可具有用於將程式位址(虛擬位址)變換成記憶體之真實位址的動態位址轉譯(DAT)5003。DAT通常包括用於快取轉譯的轉譯後備緩衝器(TLB)5007,使得稍後存取電腦記憶體5002之區塊無需延遲位址轉譯。通常,快取記憶體5009用於電腦記憶體5002與處理器5001之間。快取記憶體5009可為具有可用於一個以上CPU的大型快取記憶體及位於大型快取記憶體與每一CPU之間的小型較快速(較低層級)快取記憶體的階 層架構。在一些實施中,較低層級快取記憶體經***以提供分離的低層級快取記憶體,以用於指令提取及資料存取。在一實施例中,由指令提取單元5004經由快取記憶體5009自記憶體5002提取指令。指令在指令解碼單元5006中被解碼,且(用一些實施例中的其他指令)分派至一或多個指令執行單元5008。通常使用若干執行單元5008,例如,算術執行單元、浮點執行單元,及分支指令執行單元。指令由執行單元執行,視需要存取來自指令規定的暫存器或記憶體的運算元。若將要自記憶體5002存取(載入或儲存)運算元,則載入/儲存單元5005通常在正執行之指令的控制之下處置存取。指令可在硬體電路或內部微碼(韌體)中執行,或由兩者的組合執行。
如所指出的,電腦系統包括本端(或主)儲存器中之資訊,以及定址、保護,及參考與變化記錄。定址之一些態樣包括位址格式、位址空間概念、各種類型之位址,及一類型位址轉譯成另一類型位址的方式。主儲存器中的一些包括永久指派的儲存位置。主儲存器為系統提供可直接定址之快速存取的資料儲存器。資料與程式兩者在可被處理之前(自輸入器件)載入至主儲存器中。
主儲存器可包括一或多個較小型、較快存取的緩衝儲存器,有時稱為快取記憶體。快取記憶體通常與CPU或I/O處理器實體上相關聯。相異儲存媒體之實體建構與使用的影響(除對效能之影響外)大體上不可被程式觀測到。
可針對指令且針對資料運算元維持分離的快取記憶體。快取記憶體內的資訊被維持於稱為快取區塊或快取行(或簡言之,行)之整體邊界上的相連位元組中。模型可提供擷取快取屬性指令,其傳回以位元組為單位的快取行之大小。模型亦可提供預取資料及預取資料相對長(PREFETCH DATA RELATIVE LONG)指令,其實現將儲存內容預取至資料或指令快取記憶體中或自快取記憶體釋放資料。
儲存器被視為長的水平位元串。對於多數操作,對儲存器之存取按左至右序列進行。位元串被再分為八個位元之單元。八位元單位被稱為位元組,其為所有資訊格式之基本建置區塊。儲存器中之每一位元組位置係由唯一非負整數識別,其為彼位元組位置之位址或(簡單而言)位元組位址。臨近的位元組位置具有連續位址,在左側以0開始,且按左至右序列繼續。位址為無正負號的二進位整數,且為24、31,或64位元。
在儲存器與CPU或通道子系統之間傳輸資訊,一次一位元組或一組位元組。除非另外規定,否則在(例如)z/架構中,儲存器中之一組位元組由該組之最左側位元組定址。該組中之位元組數目係被暗示或由待執行之操作明確規定。當用於CPU操作中時,一組位元組被稱為一欄位。在每組位元組內,在(例如)z/架構中,位元按左至右序列進行編號。在z/架構中,最左側位元有時被稱作「高階」位元,且最右側位元被稱作「低階」位元。然而,位元數目並非儲存位址。僅可定址位元組。為了對儲存器中之位元組的個別位元操作,存取整個位元組。位元組中之位元被自左至右(例如,在z/架構中)編號為0至7。位址中之位元可針對24位元位址編號為8至31或40至63,或針對31位元位址編號為1至31或33至63;該等位元針對64位元位址編號為0至63。 在具有多個位元組之任何其他固定長度格式內,構成該格式之位元自0開始連續編號。出於錯誤偵測之目的,且較佳為了進行校正,可隨每一位元組或一組位元組傳輸一或多個核對位元。此等核對位元可由機器自動產生,且無法由程式直接控制。儲存器容量係以位元組數目來表示。當儲存運算元欄位之長度由指令之作業碼暗示時,欄位被稱為具有固定長度,該固定長度可為一個、兩個、四個、八個或十六個位元組。對於一些指令,可暗示較大欄位。當並非暗示而是明確陳述儲存運算元欄位之長度時,該欄位被稱為具有可變長度。可變長度運 算元可按一個位元組(或在一些指令的情況下,以兩個位元組之倍數或其他倍數)的增量而改變長度。當資訊被置於儲存器中時,即使至儲存器之實體路徑的寬度可大於正被儲存之欄位的長度,仍僅僅替換被包括在經指定欄位中的彼等位元組位置的內容。
某些資訊單元將處於儲存器中之整體邊界上。對於資訊單元,當資訊單元之儲存位址為該單元的以位元組為單位之長度的倍數時,邊界被稱為整體的。特殊名稱被給予整體邊界上的2、4、8及16位元組之欄位。半字組為二位元組邊界上的兩個連續位元組的群組,且為指令之基本建置區塊。字組為四位元組邊界上的四個連續位元組的群組。雙字組為八位元組邊界上的八個連續位元組的群組。四倍字組(quadword)為16位元組邊界上的16個連續位元組的群組。當儲存位址指定半字組、字組、雙字組及四倍字組時,位址之二進位表示分別含有一個、兩個、三個,或四個最右側零位元。指令將處於二位元組整體邊界上。大多數指令之儲存運算元不具有邊界對準要求。
在針對指令及資料運算元實施分離的快取記憶體之器件上,不管儲存是否更改隨後提取之指令,若程式儲存至隨後被提取指令之快取行中,則可經歷顯著延遲。
在一實施例中,本發明可由軟體(有時被稱作已授權內碼、韌體、微碼、毫碼、微微碼及其類似者,其中任意者將與一或多個態樣一致)實踐。參看圖11,體現一或多個態樣之軟體程式碼可由主機系統5000之處理器5001自長期儲存媒體器件5011(諸如CD-ROM碟機、磁帶機或硬碟機)存取。軟體程式碼可體現於多種已知媒體中之任意者上以供用於資料處理系統,諸如磁片、硬碟機,或CD-ROM。程式碼可分配於此媒體上,或可自一電腦系統之電腦記憶體5002或儲存器經由至其他電腦系統的網路5010分配至使用者,以供此等其他系統之使用者使用。
軟體程式碼包括控制各種電腦組件及一或多個應用程式之功能與互動的作業系統。程式碼一般自儲存媒體器件5011分頁至相對較高速的電腦儲存器5002,在該電腦儲存器5002中該程式碼可供處理器5001處理。用於在記憶體中、在實體媒體上體現軟體程式碼及/或經由網路分配軟體程式碼的技術與方法係熟知的,且本文中將不會進一步論述。程式碼在被形成且儲存於有形媒體上時(包括(但不限於)電子記憶體模組(RAM)、快閃記憶體、光碟(CD)、DVD、磁帶及其類似者)常常被稱作「電腦程式產品」。電腦程式產品媒體通常可由較佳在電腦系統中之處理電路讀取,以供處理電路執行。
圖12說明一代表性工作站或伺服器硬體系統,其中可實踐一或多個態樣。圖12之系統5020包含包括選用之周邊器件的代表性基本電腦系統5021,諸如個人電腦、工作站或伺服器。基本電腦系統5021包括一或多個處理器5026及用以根據已知技術連接且允許實現處理器5026與系統5021的其他組件之間的通信的匯流排。匯流排將處理器5026連接至記憶體5025及可包括(例如)硬碟機(包括例如磁性媒體、CD、DVD及快閃記憶體中的任意者)或磁帶機的長期儲存器5027。系統5021亦可能包括使用者介面配接器,其經由匯流排將微處理器5026連接至一或多個介面器件(諸如鍵盤5024、滑鼠5023、印表機/掃描器5030及/或其他介面器件),該等介面器件可為任何使用者介面器件,諸如觸敏式螢幕、數位化輸入板等等。匯流排亦將顯示器件5022(諸如LCD螢幕或監視器)經由顯示器配接器連接至微處理器5026。
系統5021可藉由能夠與網路5029通信5028之網路配接器與其他電腦或電腦之網路通信。實例網路配接器為通信通道、符記環、乙太網路或數據機。或者,系統5021可使用無線介面通信,諸如CDPD(蜂巢式數位封包資料)卡。系統5021可與區域網路(LAN)或廣域網路(WAN)中的此等其他電腦相關聯,或系統5021可為與另一電腦之用戶 端/伺服器配置中的用戶端等等。在此項技術中已知所有此等組態以及適當通信硬體及軟體。
圖13說明資料處理網路5040,其中可實踐一或多個態樣。資料處理網路5040可包括複數個個別網路,諸如無線網路及有線網路,其中每一者可包括複數個個別工作站5041、5042、5043、5044。另外,如熟習此項技術者將瞭解的,可包括一或多個LAN,其中LAN可包含耦接至主機處理器的複數個智慧工作站。
仍參看圖13,網路亦可包括大型電腦或伺服器,諸如閘道器電腦(用戶端伺服器5046)或應用程式伺服器(遠端伺服器5048,其可存取資料儲存庫,且亦可被自工作站5045直接存取)。閘道器電腦5046充當至每一個別網路之入口點。在將一網路連結協定連接至另一者時需要閘道器。閘道器5046可較佳地藉由通信鏈路耦接至另一網路(例如網際網路5047)。閘道器5046亦可使用通信鏈路直接耦接至一或多個工作站5041、5042、5043、5044。可利用可自國際商用機器公司購得之IBM eServerTM系統z伺服器實施閘道器電腦。
同時參看圖12及圖13,可由系統5020之處理器5026自長期儲存媒體5027(諸如,CD-ROM碟機或硬碟機)存取可體現本發明之一或多個態樣的軟體程式碼。軟體程式碼可體現於多種已知媒體中之任意者上以用於資料處理系統,該等媒體諸如磁片、硬碟機,或CD-ROM。程式碼可分配於此媒體上,或可自一電腦系統之記憶體或儲存器經由至其他電腦系統的網路分配至使用者5050、5051,以供此等其他系統之使用者使用。
或者,程式碼可體現於記憶體5025中,且由處理器5026使用處理器匯流排存取。此軟體程式碼包括控制各種電腦組件及一或多個應用程式5032之功能與互動的作業系統。程式碼一般自儲存媒體5027分頁至高速記憶體5025,在高速記憶體5025中該程式碼可供處理器5026 處理。用於在記憶體中、在實體媒體上體現軟體程式碼及/或經由網路分配軟體程式碼的技術與方法係熟知的,且本文中將不會進一步論述。程式碼在被形成且儲存於有形媒體(包括(但不限於)電子記憶體模組(RAM)、快閃記憶體、光碟(CD)、DVD、磁帶及其類似者)上時常常被稱作「電腦程式產品」。電腦程式產品媒體通常可由較佳在電腦系統中之處理電路讀取,以供處理電路執行。
對於處理器最現成可用的快取記憶體(一般比處理器之其他快取記憶體更快且更小)為最低(L1或一級)快取記憶體,且主儲存器(主記憶體)為最高級快取記憶體(L3,若存在3級)。最低級快取記憶體常常被劃分為保持待執行之機器指令的指令快取記憶體(I-快取記憶體)及保持資料運算元的資料快取記憶體(D-快取記憶體)。
參看圖14,描繪處理器5026的例示性處理器實施例。通常將一或多級快取記憶體5053用以緩衝記憶體區塊,以便改良處理器效能。快取記憶體5053為保持可能被使用的記憶體資料快取行之高速緩衝器。典型快取行為64、128或256個記憶體資料位元組。分離的快取記憶體常常用於快取指令而不是用於快取資料。快取同調性(記憶體及快取記憶體中之行之複本的同步)常常由此項技術中熟知的各種「窺探」演算法提供。處理器系統之主記憶體儲存器5025常常被稱為快取記憶體。在具有快取記憶體5053之4個級的處理器系統中,主儲存器5025有時被稱作5級(L5)快取記憶體,此係由於主儲存器通常更快且僅僅保持可用於電腦系統的非揮發性儲存器(DASD、磁帶等等)中之一部分。主儲存器5025「快取」由作業系統分頁入且分頁出主儲存器5025之資料頁。
程式計數器(指令計數器)5061追蹤待執行之當前指令的位址。z/架構處理器中之程式計數器為64位元,且可截斷至31或24位元以支援先前定址限制。程式計數器通常體現於電腦之PSW(程式狀態字)中, 使得該程式計數器在上下文切換期間持續存在。因此,具有程式計數器值的進行中之程式可由(例如)作業系統中斷(自程式環境上下文切換至作業系統環境)。程式之PSW在程式不在作用中時維持程式計數器值,且在作業系統正在執行時使用作業系統之程式計數器(在PSW中)。通常,使程式計數器遞增等於當前指令之位元組數目的量。 RISC(精簡指令集計算)指令通常為固定長度,而CISC(複雜指令集計算)指令通常為可變長度。IBM z/架構之指令為長度為2、4,或6位元組之CISC指令。程式計數器5061係由例如上下文切換操作抑或分支指令之採取分支操作修改。在上下文切換操作中,當前程式計數器值連同關於正被執行之程式的其他狀態資訊(諸如條件碼)儲存於程式狀態字中,且載入指向待執行之新程式模組的指令的新程式計數器值。 執行採取分支操作,以便准許程式做出決策或藉由將分支指令之結果載入至程式計數器5061中而在程式內循環。
通常,將指令提取單元5055用以以處理器5026之名義提取指令。提取單元提取「下一序列指令」、採取分支指令之目標指令,或在上下文切換之後程式之第一指令。現代指令提取單元常常使用預取技術以基於可能使用經預取之指令的似然性推測式地預取指令。舉例而言,提取單元可提取包括下一序列指令及額外位元組之其他序列指令的16個位元組之指令。
經提取指令接著由處理器5026執行。在一實施例中,經提取指令被傳遞至提取單元之分派單元5056。分派單元解碼指令且將關於經解碼指令之資訊轉發至適當單元5057、5058、5060。執行單元5057將通常自指令提取單元5055接收關於經解碼算術指令之資訊,且將根據指令之作業碼對運算元執行算術運算。運算元較佳自記憶體5025、架構化暫存器5059,或自正執行之指令的立即欄位提供至執行單元5057。執行之結果在儲存時被儲存於記憶體5025、暫存器5059,抑或 其他機器硬體(諸如控制暫存器、PSW暫存器及其類似者)中。
處理器5026通常具有用於執行指令之功能的一或多個單元5057、5058、5060。參看圖15A,執行單元5057可藉由介接邏輯5071與架構化一般暫存器5059、解碼/分派單元5056、載入儲存單元5060,及其他5065處理器單元通信。執行單元5057可使用若干暫存器電路5067、5068、5069以保持算術邏輯單元(ALU)5066將加以操作之資訊。ALU執行算術運算(諸如加法、減法、乘法與除法),以及邏輯功能(諸如與(and)、或(or),及互斥或(XOR)、旋轉與移位)。較佳地,ALU支援依賴於設計的特殊化運算。其他電路可提供其他架構化設施5072,包括例如條件碼及恢復支援邏輯。通常,ALU運算之結果保持於輸出暫存器電路5070中,其可將結果轉發至多種其他處理功能。存在許多處理器單元配置,本描述僅意欲提供一實施例之代表性理解。
ADD指令(例如)將於具有算術與邏輯功能性之執行單元5057中執行,而浮點指令(例如)將於具有特殊化浮點能力之浮點執行中執行。 較佳地,執行單元藉由對運算元執行作業碼定義之功能而對由指令識別之運算元操作。舉例而言,可由執行單元5057對在由指令之暫存器欄位識別的兩個暫存器5059中的運算元執行ADD指令。
執行單元5057對兩個運算元執行算術加法,且將結果儲存於第三運算元中,其中第三運算元可為第三暫存器或兩個源暫存器中的一者。執行單元較佳使用能夠執行多種邏輯功能(諸如移位、旋轉、And、Or及XOR)以及多種代數功能(包括加法、減法、乘法、除法中之任意者)的算術邏輯單元(ALU)5066。一些ALU 5066經設計用於純量運算,且一些ALU用於浮點。取決於架構,資料可為位元組由大到小的(其中最低有效位元組位於最高位元組位址處)或位元組由小到大的(其中最低有效位元組位於最低位元組位址處)。IBM z/架構為位元 組由大到小的。帶正負號欄位可為正負號及量值(1的補數或2的補數,取決於架構)。2的補數係有利的,因為ALU無需設計減法能力,此係由於2之補數中的負值或正值僅要求ALU內的加法。數字常常以速記形式描述,其中12位元欄位定義4096位元組區塊之位址,且常常被描述為例如4千拜(千位元組)區塊。
參看圖15B,用於執行分支指令之分支指令資訊通常被發送至分支單元5058,該分支單元常常在完成其他條件性操作之前使用諸如分支歷史表5082之分支預測演算法預測分支的結果。將提取當前分支指令之目標,且在完成條件性操作之前推測式執行該目標。當完成條件性操作時,基於條件性操作之條件及推測得的結果而完成抑或捨棄經推測式執行之分支指令。典型分支指令可測試條件碼且在條件碼符合分支指令之分支要求的情況下分支至目標位址,可基於包括例如在暫存器欄位或指令之立即欄位中發現之數字的若干數字而計算目標位址。分支單元5058可使用具有複數個輸入暫存器電路5075、5076、5077及一輸出暫存器電路5080之ALU 5074。分支單元5058可例如與一般暫存器5059、解碼分派單元5056或其他電路5073通信。
一組指令之執行可出於多種原因而中斷,該等原因包括(例如)由作業系統起始的上下文切換、導致上下文切換的程式例外狀況或錯誤、導致上下文切換的I/O中斷信號,或(多執行緒環境中的)複數個程式之多執行緒活動。較佳地,上下文切換動作儲存關於當前執行之程式的狀態資訊,且載入關於正被調用之另一程式的狀態資訊。狀態資訊可儲存於例如硬體暫存器中或記憶體中。狀態資訊較佳地包含指向待執行之下一指令的程式計數器值、條件碼、記憶體轉譯資訊,及架構化暫存器內容。上下文切換活動可由硬體電路、應用程式、作業系統程式或韌體程式碼(微碼、微微碼或已授權內碼(LIC))單獨地或以組合形式實行。
處理器根據指令定義的方法存取運算元。指令可使用指令之一部分的值提供立即運算元,可提供明確指向通用暫存器或專用暫存器(例如浮點暫存器)的一或多個暫存器欄位。指令可將由作業碼欄位識別之隱含暫存器用作運算元。指令可將記憶體位置用於運算元。如由z/架構長位移設施例證,運算元之記憶體位置可由暫存器、立即欄位,或暫存器與立即欄位之組合提供,其中指令定義基底暫存器、索引暫存器及立即欄位(位移欄位),該等項被加在一起以提供在(例如)記憶體中的運算元之位址。除非另外指示,否則位置在本文中通常暗示主記憶體(主儲存器)中的位置。
參看圖15C,處理器使用載入/儲存單元5060存取儲存器。載入/儲存單元5060可藉由獲得記憶體5053中之目標運算元的位址,且將運算元載入暫存器5059或另一記憶體5053位置中來執行載入操作,或可藉由獲得記憶體5053中之目標運算元的位址,且將自暫存器5059或另一記憶體5053位置獲得的資料儲存於記憶體5053中之目標運算元位置中來執行儲存操作。載入/儲存單元5060可為推測式的,且可以相對於指令序列無次序之序列存取記憶體,然而載入/儲存單元5060將對於程式維持指令被按次序執行的表像。載入/儲存單元5060可與一般暫存器5059、解碼/分派單元5056、快取/記憶體介面5053或其他元件5083通信且包含各種暫存器電路、ALU 5085及控制邏輯5090,以計算儲存位址且提供管線定序,從而保持操作按次序。一些操作可無次序,但如此項技術中熟知的,載入/儲存單元提供功能性以使得無次序操作對於程式而言看起來已按次序執行。
較佳地,應用程式「所見」之位址常常被稱為虛擬位址。虛擬位址有時被稱為「邏輯位址」及「有效位址」。此等虛擬位址係虛擬的,因為該等位址由多種動態位址轉譯(DAT)技術中的一者重導向至實體記憶體位置,該等技術包括(但不限於)簡單地用偏移值為虛擬位 址加首碼、經由一或多個轉譯表轉譯虛擬位址,其中該轉譯表較佳包含單獨的或以組合形式的至少一段表及頁表,較佳地,該段表具有指向該頁表的一輸入項。在z/架構中,提供包括區域第一表、區域第二表、區域第三表、段表,及選用之頁表的轉譯階層架構。常常藉由利用包含將虛擬位址映射至相關聯實體記憶體位置之輸入項的轉譯後備緩衝器(TLB)而改良位址轉譯之效能。輸入項係在DAT使用轉譯表轉譯虛擬位址時形成。接著,對虛擬位址之後續使用可利用快速TLB之輸入項而非緩慢的依序轉譯表存取。TLB內容可由包括LRU(最近最少使用)之多種替換演算法管理。
在處理器為多處理器系統之一處理器的狀況下,每一處理器有責任為了同調性而保持共用資源(諸如I/O、快取記憶體、TLB及記憶體)為連鎖的。通常,「窺探」技術將用於維持快取同調性。在窺探環境中,每一快取行可被標記為處於共用狀態、獨佔狀態、經改變狀態、無效狀態及其類似者中的任意者中,以便促進共用。
I/O單元5054(圖14)為處理器提供用於附接至包括例如磁帶、碟片、印表機、顯示器及網路之周邊器件的構件。I/O單元常常由軟體驅動程式呈現至電腦程式。在諸如IBM®之系統z的大型電腦中,通道配接器及開放系統配接器為大型電腦之I/O單元,其提供作業系統與周邊器件之間的通信。
此外,其他類型之計算環境可受益於一或多個態樣。作為一實例,環境可包括模擬器(例如,軟體或其他模擬機制),其中特定架構(包括(例如)指令執行、架構化功能(諸如,位址轉譯)及架構化暫存器)或其子集被模擬(例如,在具有處理器及記憶體之原生電腦系統上)。在此環境中,模擬器之一或多個模擬功能可實施本發明之一或多個態樣,即使執行該模擬器之電腦可具有與正被模擬之能力不同的架構亦如此。作為一實例,在模擬模式中,對正被模擬之特定指令或 操作進行解碼,且建置適當模擬功能以實施個別指令或操作。
在一模擬環境中,主機電腦包括(例如):記憶體,其用以儲存指令及資料;指令提取單元,其用以自記憶體提取指令,且視情況,提供所提取之指令的本端緩衝;指令解碼單元,其用以接收所提取之指令且判定已被提取的指令之類型;及指令執行單元,其用以執行該等指令。執行可包括將資料自記憶體載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算(如由解碼單元所判定)。在一實例中,以軟體來實施每一單元。舉例而言,正由該等單元執行之操作被實施為模擬器軟體內之一或多個次常式。
更確切而言,在大型電腦中,程式設計員(通常為現今之「C」程式設計員)常常藉由編譯器應用程式使用架構化機器指令。儲存於儲存媒體中之此等指令可在z/架構IBM®伺服器中以原生方式執行,或作為替代,在執行其他架構之機器中執行。該等指令可在現存及未來的IBM®大型電腦伺服器中及IBM®之其他機器(例如,Power系統伺服器及System x®伺服器)上模擬。該等指令可在使用由IBM®、Intel®、AMDTM及其他者製造之硬體的廣泛多種機器上執行Linux的機器中執行。除在根據z/架構的彼硬體上執行之外,Linux亦可用在由大力神(Hercules)、UMX,或FSI(基礎軟體公司(Fundamental Software,Inc))製造的使用模擬之機器上,其中執行一般處於模擬模式中。在模擬模式中,模擬軟體由原生處理器執行以模擬經模擬處理器的架構。
原生處理器通常執行包含韌體抑或原生作業系統之模擬軟體,以執行對經模擬處理器的模擬。模擬軟體負責提取且執行經模擬處理器架構的指令。模擬軟體維持經模擬程式計數器以追蹤指令邊界。模擬軟體可一次提取一或多個經模擬機器指令,且將該一或多個經模擬機器指令轉換成對應的原生機器指令群組,以供原生處理器執行。可快取此等經轉換指令,使得可實現更快轉換。儘管如此,模擬軟體將 維持經模擬處理器架構之架構規則,以便確保為經模擬處理器撰寫的作業系統及應用程式正確地操作。此外,模擬軟體將提供由經模擬處理器架構識別的資源,包括(但不限於)控制暫存器、通用暫存器、浮點暫存器、包括(例如)段表及頁表的動態位址轉譯功能、中斷機構、上下文切換機構、當日時間(TOD)時鐘及至I/O子系統之架構化介面,以使得經設計以於經模擬處理器上執行的作業系統或應用程式可在具有模擬軟體之原生處理器上執行。
對正被模擬之特定指令進行解碼,且呼叫次常式以執行個別指令之功能。如熟習此項技術者在理解一或多個實施例之描述後將瞭解的,在(例如)「C」次常式或驅動程式中,或為特定硬體提供驅動程式的某其他方法中實施模擬經模擬處理器之功能的模擬軟體功能。包括(但不限於)Beausoleil等人的標題為「Multiprocessor for Hardware Emulation」之美國專利證第5,551,013號;及Scalzi等人的標題為「Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor」之美國專利證第6,009,261號;及Davidian等人的標題為「Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions」之美國專利證第5,574,873號;及Gorishek等人的標題為「Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System」之美國專利證第6,308,255號;及Lethin等人的標題為「Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method」之美國專利證第6,463,582號;及Eric Traut的標題為「Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions」之美國專利證第5,790,825號的各種軟體及硬體模擬專利(其中每一者 的全部內容特此以引用的方式併入本文中);及許多其他文獻說明了熟習此項技術者可獲得的將經架構用於不同機器的指令格式模擬用於目標機器的多種已知方式。
在圖16中,提供一種經模擬主機電腦系統5092之實例,該系統模擬具有主架構之主機電腦系統5000'。在經模擬主機電腦系統5092中,主機處理器(CPU)5091為經模擬主機處理器(或虛擬主機處理器),且包含與主機電腦5000'之處理器5091具有不同原生指令集架構的模擬處理器5093。經模擬主機電腦系統5092具有可供模擬處理器5093存取的記憶體5094。在實例實施例中,記憶體5094被分割成主機電腦記憶體5096部分及模擬常式5097部分。主機電腦記憶體5096根據主機電腦架構可用於經模擬主機電腦5092之程式。模擬處理器5093執行(不同於經模擬處理器5091的)架構之架構化指令集的原生指令,其中原生指令得自模擬常式記憶體5097,且可藉由使用在序列與存取/解碼常式中獲得的一或多個指令自主機電腦記憶體5096中的程式存取供執行之主機指令,該序列與存取/解碼常式可解碼所存取之主機指令,以判定用於模擬所存取之主機指令的功能的原生指令執行常式。 經定義用於主機電腦系統5000'架構的其他設施可由架構化設施常式模擬,該等設施包括(例如)諸如通用暫存器、控制暫存器、動態位址轉譯及I/O子系統支援與處理器快取記憶體的設施。模擬常式亦可利用在模擬處理器5093中可用的功能(諸如一般暫存器及虛擬位址之動態轉譯),以改良模擬常式的效能。亦可提供特殊硬體與卸載引擎以協助處理器5093模擬主機電腦5000'的功能。
本文所使用之術語僅為了描述特定實施例,其並不意欲限制本發明。如本文中所使用,單數形式「一」及「該」意欲亦包括複數形式,除非上下文另有清晰指示。應進一步理解,當術語「包含」用於此說明書中時,其規定所陳述之特徵、整體、步驟、操作、元件及/ 或組件之存在,但並不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群組之存在或添加。
以下申請專利範圍中之所有手段或步驟附加功能元件的對應結構、材料、動作及等效物(若有的話)意欲包括用於結合如特定主張之其他所主張元件執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個態樣的描述,但並非意欲為詳盡的,或將本發明限於所揭示之形式。在不偏離一或多個態樣之範疇與精神的情況下,一般熟習此項技術者將顯而易見許多修改及改變。選擇且描述實施例,以便最佳地解釋一或多個態樣及實際應用之原理,且使得其他一般熟習此項技術者能夠理解具有適於所構想之特定用途的各種修改之各種實施例的一或多個態樣。

Claims (20)

  1. 一種用於在一中央處理單元中執行一機器指令的電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其可由一處理電路讀取,且儲存供該處理電路執行以執行一方法的指令,該方法包含:由一處理器獲得供執行之一機器指令,該機器指令係根據一電腦架構而定義以用於電腦執行,該機器指令包含:至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一向量浮點測試資料類別立即操作;一第一暫存器欄位,其被用以指定一第一暫存器,該第一暫存器包含一第一運算元;及一第二暫存器欄位,其被用以指定一第二暫存器,該第二暫存器包含一第二運算元;及執行該機器指令,該執行包含:判定該第二運算元之一選定元素的屬性;自至該機器指令之一輸入選擇表示該選定元素之該等屬性的一經選擇資料單元,該輸入包括一或多個資料單元以表示一或多個屬性;檢查該經選擇資料單元是否被設定為一特定值;及基於該檢查,設定該第一運算元中的對應於該第二運算元之該選定元素的一元素,該設定係基於該經選擇資料單元是否被設定為該特定值。
  2. 如請求項1之電腦程式產品,其中該第二運算元包含複數個元素,其中該判定包含判定該複數個元素之每一元素的屬性,且其中該設定包含基於該經選擇資料單元是否被設定為該特定 值,設定該第一運算元中之對應於該第二運算元中之每一元素的每一元素。
  3. 如請求項1之電腦程式產品,其中該設定包含:基於指示該經選擇資料單元被設定為該特定值的該檢查而將該第一運算元中的該元素設定為一,且基於指示該經選擇資料單元未被設定為該特定值的該檢查而將該第一運算元中的該元素設定為零。
  4. 如請求項1之電腦程式產品,其中該等屬性包含一類別及一正負號。
  5. 如請求項1之電腦程式產品,其中該輸入包含複數個資料單元,該複數個資料單元中的每一資料單元表示一類別及一正負號。
  6. 如請求項5之電腦程式產品,其中該複數個資料單元包含複數個位元,且其中每一位元表示複數個元素類別中的一元素類別,該複數個元素類別包含零、正規數、次正規數、無窮大數、無訊息不是數字、發信號不是數字,且每一位元表示一正號或負號。
  7. 如請求項1之電腦程式產品,其中該機器指令進一步包含一包括該輸入的欄位。
  8. 如請求項1之電腦程式產品,其中該機器指令進一步包含待用於指定一或多個暫存器的一擴展欄位,且其中該第一暫存器欄位與該擴展欄位的一第一部分組合以指定該第一暫存器,且該第二暫存器欄位與該擴展欄位的一第二部分組合以指定該第二暫存器。
  9. 如請求項1之電腦程式產品,其中該機器指令進一步包含一遮罩欄位,該遮罩欄位用以指示該第二運算元中的一或多個元素是否將包括在該判定中。
  10. 如請求項1之電腦程式產品,其中該機器指令進一步包含另一遮 罩欄位,該另一遮罩欄位用以指示該第二運算元之一元素中的一浮點數之一大小。
  11. 如請求項1之電腦程式產品,其中該執行進一步包含針對該機器指令設定一條件碼,該條件碼用以概述該第一運算元之該等元素的該設定。
  12. 一種用於在一中央處理單元中執行一機器指令的電腦系統,該電腦系統包含:一記憶體;及一處理器,其與該記憶體通信,其中該電腦系統經組態以執行一方法,該方法包含:由一處理器獲得供執行之一機器指令,該機器指令係根據一電腦架構而定義以用於電腦執行,該機器指令包含:至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一向量浮點測試資料類別立即操作;一第一暫存器欄位,其被用以指定一第一暫存器,該第一暫存器包含一第一運算元;及一第二暫存器欄位,其被用以指定一第二暫存器,該第二暫存器包含一第二運算元;及執行該機器指令,該執行包含:判定該第二運算元之一選定元素的屬性;自至該機器指令之一輸入選擇表示該選定元素之該等屬性的一經選擇資料單元,該輸入包括一或多個資料單元以表示一或多個屬性;檢查該經選擇資料單元是否被設定為一特定值;及基於該檢查,設定該第一運算元中的對應於該第二運算元之該選定元素的一元素,該設定係基於該經選擇資料單 元是否被設定為該特定值。
  13. 如請求項12之電腦系統,其中該第二運算元包含複數個元素,其中該判定包含判定該複數個元素之每一元素的屬性,且其中該設定包含基於該經選擇資料單元是否被設定為該特定值,設定該第一運算元中之對應於該第二運算元中之每一元素的每一元素。
  14. 如請求項12之電腦系統,其中該設定包含:基於指示該經選擇資料單元被設定為該特定值的該檢查而將該第一運算元中的該元素設定為一,且基於指示該經選擇資料單元未被設定為該特定值的該檢查而將該第一運算元中的該元素設定為零。
  15. 如請求項12之電腦系統,其中該輸入包含複數個資料單元,該複數個資料單元中的每一資料單元表示一類別及一正負號。
  16. 如請求項12之電腦系統,其中該機器指令進一步包含一包括該輸入的欄位。
  17. 如請求項12之電腦系統,其中該機器指令進一步包含待用於指定一或多個暫存器的一擴展欄位,且其中該第一暫存器欄位與該擴展欄位的一第一部分組合以指定該第一暫存器,且該第二暫存器欄位與該擴展欄位的一第二部分組合以指定該第二暫存器,且其中該機器指令進一步包含一遮罩欄位,該遮罩欄位用以指示該第二運算元中的一或多個元素是否將被包括在該判定中,且其中該機器指令進一步包含另一遮罩欄位,該另一遮罩欄位用以指示該第二運算元之一元素中的一浮點數之一大小。
  18. 一種在一中央處理單元中執行一機器指令的方法,該方法包含:由一處理器獲得供執行之一機器指令,該機器指令係根據一電腦架構而定義以用於電腦執行,該機器指令包含: 至少一作業碼欄位,其用以提供一作業碼,該作業碼識別一向量浮點測試資料類別立即操作;一第一暫存器欄位,其被用以指定一第一暫存器,該第一暫存器包含一第一運算元;及一第二暫存器欄位,其被用以指定一第二暫存器,該第二暫存器包含一第二運算元;及執行該機器指令,該執行包含:判定該第二運算元之一選定元素的屬性;自至該機器指令之一輸入選擇表示該選定元素之該等屬性的一經選擇資料單元,該輸入包括一或多個資料單元以表示一或多個屬性;檢查該經選擇資料單元是否被設定為一特定值;及基於該檢查,設定該第一運算元中的對應於該第二運算元之該選定元素的一元素,該設定係基於該經選擇資料單元是否被設定為該特定值。
  19. 如請求項18之方法,其中該設定包含:基於指示該經選擇資料單元被設定為該特定值的該檢查而將該第一運算元中的該元素設定為一,且基於指示該經選擇資料單元未被設定為該特定值的該檢查而將該第一運算元中的該元素設定為零。
  20. 如請求項18之方法,其中該機器指令進一步包含待用於指定一或多個暫存器的一擴展欄位,且其中該第一暫存器欄位與該擴展欄位的一第一部分組合以指定該第一暫存器,且該第二暫存器欄位與該擴展欄位的一第二部分組合以指定該第二暫存器,且其中該機器指令進一步包含一遮罩欄位,該遮罩欄位用以指示該第二運算元中的一或多個元素是否將被包括在該判定中,且其中該機器指令進一步包含另一遮罩欄位,該另一遮罩欄位用以指示該第二運算元之一元素中的一浮點數之一大小。
TW103101054A 2013-01-23 2014-01-10 向量浮點測試資料類別立即指令 TWI614679B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/748,477 US9471308B2 (en) 2013-01-23 2013-01-23 Vector floating point test data class immediate instruction
US13/748,477 2013-01-23

Publications (2)

Publication Number Publication Date
TW201443779A true TW201443779A (zh) 2014-11-16
TWI614679B TWI614679B (zh) 2018-02-11

Family

ID=51208695

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103101054A TWI614679B (zh) 2013-01-23 2014-01-10 向量浮點測試資料類別立即指令

Country Status (7)

Country Link
US (4) US9471308B2 (zh)
JP (1) JP6410238B2 (zh)
CN (1) CN104956319B (zh)
DE (1) DE112014000252T5 (zh)
GB (1) GB2525356B (zh)
TW (1) TWI614679B (zh)
WO (1) WO2014115047A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI720056B (zh) * 2015-12-18 2021-03-01 美商英特爾公司 用於設置多重向量元素操作之指令及邏輯

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095620A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved insert instructions
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9841997B2 (en) * 2015-06-25 2017-12-12 Intel Corporation Method and apparatus for execution mode selection
US10133691B2 (en) * 2016-06-23 2018-11-20 International Business Machines Corporation Synchronous input/output (I/O) cache line padding
US10235170B2 (en) 2016-09-30 2019-03-19 International Business Machines Corporation Decimal load immediate instruction
US11281607B2 (en) * 2020-01-30 2022-03-22 Red Hat, Inc. Paravirtualized cluster mode for legacy APICs
US11748098B2 (en) 2021-05-05 2023-09-05 Apple Inc. Adler assist instructions
CN115390770B (zh) * 2022-10-31 2023-03-21 上海亿铸智能科技有限公司 一种用于简化sram输出数据多路选择方法及***

Family Cites Families (171)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ZA805329B (en) 1979-09-08 1981-08-26 Massey Ferguson Perkins Ltd Valve seats
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
JPS60103482A (ja) 1983-10-24 1985-06-07 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション ベクトル処理能力を有するデ−タ処理装置
JPS60136872A (ja) 1983-12-26 1985-07-20 Hitachi Ltd ベクトル処理装置
US5021945A (en) 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
JPH0731669B2 (ja) 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
JPS62267869A (ja) 1986-05-15 1987-11-20 Fujitsu Ltd ベクトル・プロセツサにおける演算例外時の処理方式
JPH01120638A (ja) 1987-11-04 1989-05-12 Nec Corp 情報処理装置
US5113521A (en) 1988-03-18 1992-05-12 Digital Equipment Corporation Method and apparatus for handling faults of vector instructions causing memory management exceptions
US5043867A (en) 1988-03-18 1991-08-27 Digital Equipment Corporation Exception reporting mechanism for a vector processor
JP2809710B2 (ja) 1989-06-19 1998-10-15 富士通株式会社 プログラム例外コード制御回路
US5974522A (en) 1990-01-24 1999-10-26 Cornell Research Foundation, Inc. Machine for processing interrupted out-of-order instructions
US5053986A (en) 1990-02-21 1991-10-01 Stardent Computer, Inc. Circuit for preservation of sign information in operations for comparison of the absolute value of operands
US5247524A (en) 1990-06-29 1993-09-21 Digital Equipment Corporation Method for generating a checksum
CA2045735A1 (en) 1990-06-29 1991-12-30 Richard Lee Sites Computer performance by eliminating branches
GB2263987B (en) 1992-02-06 1996-03-06 Intel Corp End bit markers for instruction decode
US5388233A (en) 1993-04-30 1995-02-07 Intel Corporation Method and apparatus for counting instruction types using bit masks and a programmable bit map
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
JP3672634B2 (ja) 1994-09-09 2005-07-20 株式会社ルネサステクノロジ データ処理装置
US5680338A (en) 1995-01-04 1997-10-21 International Business Machines Corporation Method and system for vector processing utilizing selected vector elements
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
US5825678A (en) 1995-03-31 1998-10-20 International Business Machines Corporation Method and apparatus for determining floating point data class
US5663952A (en) 1995-07-07 1997-09-02 Sun Microsystems, Inc. Checksum generation circuit and method
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5701316A (en) 1995-08-31 1997-12-23 Unisys Corporation Method for generating an internet protocol suite checksum in a single macro instruction
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
JP2904099B2 (ja) 1996-02-19 1999-06-14 日本電気株式会社 コンパイル装置およびコンパイル方法
US5768168A (en) 1996-05-30 1998-06-16 Lg Semicon Co., Ltd. Universal galois field multiplier
GB9627069D0 (en) 1996-12-30 1997-02-19 Certicom Corp A method and apparatus for finite field multiplication
US5832235A (en) 1997-03-26 1998-11-03 Hewlett-Packard Co. System and method for pattern matching using checksums
US5884071A (en) 1997-03-31 1999-03-16 Intel Corporation Method and apparatus for decoding enhancement instructions using alias encodings
US5960012A (en) 1997-06-23 1999-09-28 Sun Microsystems, Inc. Checksum determination using parallel computations on multiple packed data elements
US5953240A (en) 1997-06-23 1999-09-14 Sun Microsystems, Inc. SIMD TCP/UDP checksumming in a CPU
US6088782A (en) 1997-07-10 2000-07-11 Motorola Inc. Method and apparatus for moving data in a parallel processor using source and destination vector registers
US6047304A (en) 1997-07-29 2000-04-04 Nortel Networks Corporation Method and apparatus for performing lane arithmetic to perform network processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6223320B1 (en) 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US6105129A (en) 1998-02-18 2000-08-15 Advanced Micro Devices, Inc. Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction
US6173393B1 (en) 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
EP1105792B1 (en) 1998-08-24 2010-05-05 MicroUnity Systems Engineering, Inc. System with wide operand architecture, and method
US6038652A (en) 1998-09-30 2000-03-14 Intel Corporation Exception reporting on function generation in an SIMD processor
US6760837B1 (en) 1998-10-06 2004-07-06 Texas Instruments Incorporated Bit field processor
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
JP2000172520A (ja) 1998-12-04 2000-06-23 Fujitsu Ltd ガロア体演算プロセッサ
JP2000207387A (ja) 1999-01-20 2000-07-28 Toshiba Corp 演算装置及び暗号処理装置
JP2000259579A (ja) 1999-03-11 2000-09-22 Hitachi Ltd 半導体集積回路
US6324670B1 (en) 1999-03-24 2001-11-27 Novell, Inc. Checksum generator with minimum overflow
JP2000294960A (ja) 1999-04-09 2000-10-20 Nec Kofu Ltd 基板固定ピン付smtコネクタ
FR2796736B1 (fr) 1999-07-20 2001-11-30 St Microelectronics Sa Procede pour effectuer une multiplication avec accumulation dans un corps de galois
US6675292B2 (en) 1999-08-13 2004-01-06 Sun Microsystems, Inc. Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions
EP1102163A3 (en) 1999-11-15 2005-06-29 Texas Instruments Incorporated Microprocessor with improved instruction set architecture
US6760742B1 (en) 2000-02-18 2004-07-06 Texas Instruments Incorporated Multi-dimensional galois field multiplier
US6711602B1 (en) 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US7847803B1 (en) 2000-07-26 2010-12-07 Ati Technologies Ulc Method and apparatus for interleaved graphics processing
US6748522B1 (en) 2000-10-31 2004-06-08 International Business Machines Corporation Performance monitoring based on instruction sampling in a microprocessor
US6643821B2 (en) 2000-11-30 2003-11-04 Stmicroelectronics, Inc. Method and device for computing incremental checksums
US6848074B2 (en) 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
US6839828B2 (en) 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US20030037085A1 (en) 2001-08-20 2003-02-20 Sandbote Sam B. Field processing unit
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7013321B2 (en) 2001-11-21 2006-03-14 Sun Microsystems, Inc. Methods and apparatus for performing parallel integer multiply accumulate operations
US7082452B2 (en) 2001-11-30 2006-07-25 Analog Devices, Inc. Galois field multiply/multiply-add/multiply accumulate
UA76007C2 (en) 2001-12-11 2006-06-15 Reaper for a combine harvester
US7373483B2 (en) 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7403964B2 (en) 2002-10-22 2008-07-22 Broadcom Corporation Galois field multiplier array for use within a finite field arithmetic unit
US7313583B2 (en) 2002-10-22 2007-12-25 Broadcom Corporation Galois field arithmetic unit for use within a processor
JP2004151981A (ja) 2002-10-30 2004-05-27 Mitsumi Electric Co Ltd 無線式入力システム及びそのシステムで用いられる送信装置、受信装置
US20090199075A1 (en) 2002-11-25 2009-08-06 Victor Demjanenko Array form reed-solomon implementation as an instruction set extension
JP3818263B2 (ja) 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US7139900B2 (en) 2003-06-23 2006-11-21 Intel Corporation Data packet arithmetic logic devices and methods
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7275148B2 (en) 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7096399B2 (en) 2003-09-11 2006-08-22 Intel Corporation Monitoring packet content
US7383483B2 (en) 2003-12-11 2008-06-03 International Business Machines Corporation Data transfer error checking
US7493481B1 (en) 2004-05-17 2009-02-17 Netxen, Inc. Direct hardware processing of internal data structure fields
US7363574B1 (en) 2004-10-12 2008-04-22 Nortel Networks Limited Method and system for parallel CRC calculation
US20060106910A1 (en) 2004-11-16 2006-05-18 Analog Devices, Inc. Galois field polynomial multiplication
US7512647B2 (en) 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
US7461117B2 (en) 2005-02-11 2008-12-02 International Business Machines Corporation Floating point unit with fused multiply add and method for calculating a result with a floating point unit
US20060230409A1 (en) 2005-04-07 2006-10-12 Matteo Frigo Multithreaded processor architecture with implicit granularity adaptation
WO2006121444A1 (en) 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Vector processor with special purpose registers and high speed memory access
FR2885711B1 (fr) 2005-05-12 2007-07-06 Atmel Corp Procede et materiel modulaire et aleatoire pour la reduction polynomiale
US7400271B2 (en) 2005-06-21 2008-07-15 International Characters, Inc. Method and apparatus for processing character streams
US7333917B2 (en) 2005-08-11 2008-02-19 The University Of North Carolina At Chapel Hill Novelty detection systems, methods and computer program products for real-time diagnostics/prognostics in complex physical systems
US7421566B2 (en) 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
US7480787B1 (en) 2006-01-27 2009-01-20 Sun Microsystems, Inc. Method and structure for pipelining of SIMD conditional moves
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
US7624237B2 (en) 2006-05-03 2009-11-24 International Business Machines Corporation Compare, swap and store facility with no external serialization
US20080021943A1 (en) 2006-07-20 2008-01-24 Advanced Micro Devices, Inc. Equality comparator using propagates and generates
US7600104B2 (en) 2006-08-15 2009-10-06 Peter Neumann Method and system for parallel vector data processing of vector data having a number of data elements including a defined first bit-length
JP4374363B2 (ja) 2006-09-26 2009-12-02 Okiセミコンダクタ株式会社 ビットフィールド操作回路
US7624251B2 (en) 2006-11-01 2009-11-24 Apple Inc. Instructions for efficiently accessing unaligned partial vectors
US8346839B2 (en) 2007-03-30 2013-01-01 Intel Corporation Efficient advanced encryption standard (AES) datapath using hybrid rijndael S-box
US8560591B2 (en) * 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US8055886B2 (en) 2007-07-12 2011-11-08 Texas Instruments Incorporated Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction
US9529592B2 (en) 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8112691B1 (en) 2008-03-25 2012-02-07 Oracle America, Inc. Method for efficient generation of a Fletcher checksum using a single SIMD pipeline
US8255443B2 (en) * 2008-06-03 2012-08-28 International Business Machines Corporation Execution unit with inline pseudorandom number generator
US8051226B2 (en) 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
JP5268469B2 (ja) 2008-07-23 2013-08-21 株式会社東芝 高可用システム及び実行状態制御方法
US8793472B2 (en) 2008-08-15 2014-07-29 Apple Inc. Vector index instruction for generating a result vector with incremental values based on a start value and an increment value
US8271832B2 (en) 2008-08-15 2012-09-18 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US8175265B2 (en) 2008-09-02 2012-05-08 Apple Inc. Systems and methods for implementing block cipher algorithms on attacker-controlled systems
RU2409840C2 (ru) 2008-09-26 2011-01-20 Государственное образовательное учреждение высшего профессионального образования "Ставропольский военный институт связи ракетных войск" (СВИСРВ) Устройство для преобразования из полиномиальной системы классов вычетов в позиционный код
GB2464292A (en) 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
CN101430881B (zh) 2008-11-10 2013-04-17 华为技术有限公司 一种编码、解码、编解码方法、编解码***以及相关装置
US8280040B2 (en) 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
US8458444B2 (en) 2009-04-22 2013-06-04 Oracle America, Inc. Apparatus and method for handling dependency conditions between floating-point instructions
CN101901127B (zh) 2009-05-31 2012-07-25 国际商业机器公司 一种迦罗华域乘法器
GB2470782B (en) 2009-06-05 2014-10-22 Advanced Risc Mach Ltd A data processing apparatus and method for handling vector instructions
US8918623B2 (en) 2009-08-04 2014-12-23 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
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
CN102122241A (zh) 2010-01-08 2011-07-13 复旦大学 一种适用于素域和多项式域的模乘模除器
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
GB2478731B (en) 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control
US8417961B2 (en) 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US8539472B2 (en) 2010-06-09 2013-09-17 Lear Corporation Method and system of updating shared memory
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8903882B2 (en) 2010-12-13 2014-12-02 International Business Machines Corporation Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product
CN104951277B (zh) 2011-04-01 2017-11-21 英特尔公司 向量友好指令格式及其执行
KR101877347B1 (ko) * 2011-09-26 2018-07-12 인텔 코포레이션 벡터 로드-op/저장-op에 스트라이드 기능을 제공하는 명령어 및 로직
CN106502624B (zh) * 2011-11-30 2019-10-18 英特尔公司 用于提供向量横向多数表决功能的处理器、设备和处理***
US9665371B2 (en) * 2011-11-30 2017-05-30 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN104011670B (zh) * 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
WO2013095599A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a double blocked sum of absolute differences
CN104025020B (zh) * 2011-12-23 2017-06-13 英特尔公司 用于执行掩码位压缩的***、装置以及方法
CN104137054A (zh) * 2011-12-23 2014-11-05 英特尔公司 用于执行从索引值列表向掩码值的转换的***、装置和方法
CN104169867B (zh) 2011-12-23 2018-04-13 英特尔公司 用于执行掩码寄存器至向量寄存器的转换的***、装置和方法
CN104011662B (zh) * 2011-12-23 2017-05-10 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
CN104094221B (zh) 2011-12-30 2017-09-05 英特尔公司 基于零的高效解压缩
US9459864B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9715383B2 (en) * 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9588762B2 (en) * 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
CN102819710B (zh) 2012-08-22 2014-11-12 西北工业大学 基于渗透测试的跨站点脚本漏洞检测方法
US9606961B2 (en) * 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9256427B2 (en) * 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9411589B2 (en) * 2012-12-11 2016-08-09 International Business Machines Corporation Branch-free condition evaluation
US9152419B2 (en) * 2012-12-18 2015-10-06 Intel Corporation Instruction set for supporting wide scalar pattern matches
US9411592B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9411584B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9372692B2 (en) * 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9886277B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US9513907B2 (en) * 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9495155B2 (en) * 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US9436434B2 (en) 2014-03-14 2016-09-06 International Business Machines Corporation Checksum adder
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US10761852B2 (en) * 2015-09-30 2020-09-01 International Business Machines Corporation Extending data range addressing
US9870305B2 (en) * 2015-09-30 2018-01-16 International Business Machines Corporation Debugging of prefixed code
US9921841B2 (en) * 2016-02-24 2018-03-20 Intel Corporation System and method for executing an instruction to permute a mask

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI720056B (zh) * 2015-12-18 2021-03-01 美商英特爾公司 用於設置多重向量元素操作之指令及邏輯

Also Published As

Publication number Publication date
DE112014000252T5 (de) 2015-10-01
US20190155602A1 (en) 2019-05-23
JP6410238B2 (ja) 2018-10-24
US20150095624A1 (en) 2015-04-02
US10203956B2 (en) 2019-02-12
US20140208077A1 (en) 2014-07-24
GB201514700D0 (en) 2015-09-30
GB2525356A (en) 2015-10-21
US10671389B2 (en) 2020-06-02
US9436467B2 (en) 2016-09-06
CN104956319A (zh) 2015-09-30
TWI614679B (zh) 2018-02-11
GB2525356B (en) 2016-03-23
US20160357557A1 (en) 2016-12-08
WO2014115047A1 (en) 2014-07-31
US9471308B2 (en) 2016-10-18
JP2016512627A (ja) 2016-04-28
CN104956319B (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
TWI584190B (zh) 用於促進例外處置之電腦程式產品、電腦系統及方法
JP6323837B2 (ja) Vector Checksum命令を実行するためのコンピュータ・プログラム、コンピュータ・システム及び方法
TWI567641B (zh) 用於向量尋找元素相等指令的電腦程式產品、電腦系統及其方法
TWI533207B (zh) 用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法
TWI550510B (zh) 提供向量尋找元素不相等指令之電腦程式產品、電腦系統及方法
TWI533206B (zh) 執行將資料載入至由一指令所指示之一指定記憶體邊界之該指令之方法、電腦程式產品及電腦系統
TWI614679B (zh) 向量浮點測試資料類別立即指令
JP6338066B2 (ja) Vector galois field multiply sum and accumulate命令を処理するためのコンピュータ・システム、コンピュータ・プログラム及び方法
TWI554946B (zh) 尋找一組具有終止字元之字元資料之長度之電腦程式產品、電腦系統及方法
JP6380955B2 (ja) Vector generate mask命令を処理するためのコンピュータ・プログラム、コンピュータ・システム及び方法
JP6399522B2 (ja) Vector element rotate and insert under mask命令を処理するためのコンピュータ・プログラム、コンピュータ・システム及び方法