TW201447753A - 向量例外程式碼 - Google Patents

向量例外程式碼 Download PDF

Info

Publication number
TW201447753A
TW201447753A TW103100391A TW103100391A TW201447753A TW 201447753 A TW201447753 A TW 201447753A TW 103100391 A TW103100391 A TW 103100391A TW 103100391 A TW103100391 A TW 103100391A TW 201447753 A TW201447753 A TW 201447753A
Authority
TW
Taiwan
Prior art keywords
vector
exception
elements
instruction
code
Prior art date
Application number
TW103100391A
Other languages
English (en)
Other versions
TWI584190B (zh
Inventor
Jonathan David Bradbury
Michael Karl Gschwind
Eric Mark Schwarz
Timothy J Slegel
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 TW201447753A publication Critical patent/TW201447753A/zh
Application granted granted Critical
Publication of TWI584190B publication Critical patent/TWI584190B/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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

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

Abstract

本發明促進向量例外處置。執行向量指令,以操作一向量暫存器之一或更多個元素。當在指令之執行期間遇到例外時,提供向量例外程式碼,該向量例外程式碼指示引起該例外之向量暫存器之內的一位置。向量例外程式碼亦包括例外之原因。

Description

向量例外程式碼
一或更多個方面大體而言係關於計算環境之內的處理,且特定言之,係關於在此環境之內的向量處理。
在計算環境之內的處理包括控制一或更多個中央處理單元(central processing unit;CPU)之操作。通常,中央處理單元之操作係藉由儲存器中之指令來控制。指令可具有不同格式且指令常常指定待用於執行各種操作之暫存器。
取決於中央處理單元之架構,可使用各種類型之暫存器,該等暫存器包括例如通用暫存器、專用暫存器、浮點暫存器及/或向量暫存器。不同類型之暫存器可用於不同類型之指令。作為實例,浮點暫存器儲存待由浮點指令使用的浮點數;且向量暫存器保持由包括向量指令的單一指令多重資料(Single Instruction,Multiple Data;SIMD)指令執行的向量處理的資料。
經由提供用於執行機器指令之電腦程式產品,克服了先前技術之缺點且提供了優點。電腦程式產品包括處理電 路可讀取之電腦可讀取儲存媒體,且該電腦可讀取儲存媒體儲存用於由處理電路執行以便執行方法的指令。方法包括例如藉由處理器決定在計算環境之內執行的指令已引起例外,對向量暫存器操作之指令包含複數個元素;且基於例外獲得向量例外程式碼,該向量例外程式碼包括引起例外之向量暫存器之複數個元素中的一個元素之位置。
本文亦描述且主張了關於一或更多個態樣之方法及系統。此外,本文亦描述且可主張了關於一或更多個態樣之服務。
附加特徵及優點係經由一或更多個態樣之技術來實現。本文詳細描述其他實施例及態樣且該等其他實施例及態樣被視為申請專利範圍之一部分。
100‧‧‧計算環境
102‧‧‧處理器
104‧‧‧記憶體
106‧‧‧輸入/輸出(input/output;I/O)裝置及/或介面
108‧‧‧匯流排
200‧‧‧計算環境
202‧‧‧本地中央處理單元
204‧‧‧記憶體
206‧‧‧輸入/輸出裝置及/或介面
208‧‧‧匯流排
210‧‧‧暫存器
212‧‧‧仿真器程式碼
250‧‧‧Guest指令
252‧‧‧指令提取常式
254‧‧‧指令變換常式
256‧‧‧本地指令
260‧‧‧仿真控制常式
300‧‧‧暫存器檔案
302‧‧‧向量暫存器
304‧‧‧浮點暫存器
400‧‧‧向量浮點測試資料類別立即指令
402a‧‧‧作業碼欄位
402b‧‧‧作業碼欄位
404‧‧‧第一向量暫存器欄位
406‧‧‧第二向量暫存器欄位
408‧‧‧立即欄位
410‧‧‧M5欄位
412‧‧‧M4欄位
414‧‧‧RXB欄位
430‧‧‧類別
432‧‧‧正負號
450‧‧‧步驟
452‧‧‧步驟
453‧‧‧浮點數
454‧‧‧步驟
456‧‧‧步驟
458‧‧‧步驟
460‧‧‧步驟
462‧‧‧步驟
464‧‧‧步驟
466‧‧‧步驟
468‧‧‧步驟
480‧‧‧向量暫存器
482a‧‧‧元素
482n‧‧‧元素
483a‧‧‧浮點數
483n‧‧‧浮點數
484a‧‧‧轉換到類型數邏輯
484n‧‧‧轉換到類型數邏輯
486a‧‧‧遮罩
486b‧‧‧遮罩
490a‧‧‧元素
490b‧‧‧元素
500‧‧‧向量核對和指令
502a‧‧‧作業碼欄位
502b‧‧‧作業碼欄位
504‧‧‧第一向量暫存器欄位
506‧‧‧第二向量暫存器欄位
508‧‧‧第三向量暫存器欄位
510‧‧‧RXB欄位
530‧‧‧步驟
532‧‧‧步驟
534‧‧‧步驟
536‧‧‧步驟
538‧‧‧步驟
540‧‧‧步驟
542‧‧‧步驟
550‧‧‧第二運算元
552a‧‧‧元素
552n‧‧‧元素
560‧‧‧第三運算元
562‧‧‧字1
570‧‧‧第一運算元
572‧‧‧元素1
600‧‧‧向量高氏場倍增和及累加指令
602a‧‧‧作業碼欄位
602b‧‧‧作業碼欄位
604‧‧‧第一向量場
606‧‧‧第二向量暫存器欄位
608‧‧‧第三向量暫存器欄位
610‧‧‧遮罩欄位(M5)
612‧‧‧第四向量暫存器欄位
614‧‧‧RXB欄位
630‧‧‧步驟
631‧‧‧元素大小
632‧‧‧步驟
634‧‧‧步驟
636‧‧‧步驟
638‧‧‧步驟
650‧‧‧第二運算元
652a‧‧‧運算元
652b‧‧‧運算元
660‧‧‧第三運算元
662a‧‧‧運算元
662b‧‧‧運算元
670‧‧‧第四運算元
672a‧‧‧運算元
672b‧‧‧運算元
680a‧‧‧結果H
680b‧‧‧結果L
690a‧‧‧運算元
690b‧‧‧運算元
700‧‧‧向量產生遮罩指令
702a‧‧‧作業碼欄位
702b‧‧‧作業碼欄位
704‧‧‧第一向量暫存器欄位
706‧‧‧第一立即欄位(I2)
708‧‧‧第二立即欄位(I3)
710‧‧‧遮罩欄位(M4)
712‧‧‧RXB欄位
720‧‧‧步驟
722‧‧‧值
724‧‧‧值
726‧‧‧大小
730‧‧‧步驟
734‧‧‧步驟
736‧‧‧步驟
740‧‧‧第一運算元
802a‧‧‧作業碼欄位
802b‧‧‧作業碼欄位
804‧‧‧第一向量暫存器欄位
806‧‧‧第二向量暫存器欄位
808‧‧‧第三向量暫存器欄位
812‧‧‧立即欄位(I4)
814‧‧‧遮罩欄位(M5)
816‧‧‧欄位
820‧‧‧旋轉量
822‧‧‧位元數目
824‧‧‧第三運算元
830‧‧‧步驟
832‧‧‧步驟
834‧‧‧步驟
836‧‧‧步驟
900‧‧‧向量例外程式碼
902‧‧‧向量索引(VIX)
904‧‧‧向量中斷程式碼(VIC)
922‧‧‧步驟
924‧‧‧步驟
926‧‧‧步驟
1000‧‧‧電腦程式產品
1002‧‧‧非暫態電腦可讀取儲存媒體
1004‧‧‧電腦可讀取程式碼手段或邏輯
5000‧‧‧主機電腦系統
5000'‧‧‧主機電腦系統
5001‧‧‧CPU
5003‧‧‧動態位址變換(DAT)
5004‧‧‧指令提取單元
5005‧‧‧載入/儲存單元
5006‧‧‧指令解碼單元
5007‧‧‧變換旁看緩衝器
5008‧‧‧指令執行單元
5009‧‧‧快取記憶體
5010‧‧‧網路
5011‧‧‧儲存媒體裝置
5020‧‧‧系統
5021‧‧‧基本電腦系統
5022‧‧‧顯示器裝置
5023‧‧‧滑鼠
5024‧‧‧鍵盤
5025‧‧‧記憶體
5026‧‧‧處理器
5027‧‧‧長期儲存器
5028‧‧‧通訊
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‧‧‧主處理器(CPU)
5092‧‧‧仿真主機電腦系統
5093‧‧‧仿真處理器
5094‧‧‧記憶體
5096‧‧‧主機電腦記憶體
5097‧‧‧仿真常式
特定指出一或更多個態樣且將該一或更多個態樣在本說明書結束時之申請專利範圍中作為實例明確主張。上述及其他目標、特徵及優點結合附圖自以下詳細描述中顯而易見,在該等附圖中:第1圖圖示併入且使用一或更多個態樣之計算環境之一個實例;第2A圖圖示併入且使用一或更多個態樣之計算環境之另一實例;第2B圖圖示第2A圖之記憶體之進一步細節;第3圖圖示暫存器檔案之一個實例;第4A圖圖示向量浮點測試資料類別立即(Vector Floating Point Test Data Class Immediate)指令之格式之一個實例;第4B圖圖示第4A圖之向量浮點測試資料類別立即指令之第三運算元之位元值的一個實例;第4C圖圖示與第4A圖之向量浮點測試資料類別立即指令相關聯之邏輯之一個實施例;第4D圖圖示執行第4A圖之向量浮點測試資料類別立即指令之方塊圖的一個實例;第4E圖圖示二進制浮點資料之各種類別之定義的一個實例;第5A圖圖示向量核對和(Vector Checksum)指令之格式之一個實例;第5B圖圖示與第5A圖之向量核對和指令相關聯之邏輯之一個實施例;第5C圖圖示執行第5A圖之向量核對和指令之方塊圖的一個實例;第6A圖圖示向量高氏場倍增和(Vector Galois Field Multiply Sum)及累加指令(Accumulate instruction)之格式之一個實例;第6B圖圖示與第6A圖之向量高氏場倍增和及累加指令相關聯之邏輯之一個實施例;第6C圖圖示執行第6A圖之向量高氏場倍增和及累加指令之方塊圖之一個實例;第7A圖圖示向量產生遮罩(Vector Generate Mask)指令之格式之一個實例;第7B圖圖示與第7A圖之向量產生遮罩指令相關聯之邏輯之一個實施例; 第7C圖圖示執行第7A圖之向量產生遮罩指令之方塊圖的一個實例;第8A圖圖示向量元素旋轉(Vector Element Rotate)及遮罩下插入(Insert Under Mask)指令之格式的一個實例;第8B圖圖示與在第8A圖之向量元素旋轉及下遮罩下插入指令相關聯的邏輯之一個實施例;第8C圖圖示執行在第8A圖之向量元素旋轉及遮罩下插入指令的方塊圖之一個實例;第9A圖圖示向量例外程式碼之一個實例;第9B圖圖示設定第9A圖之向量例外程式碼之邏輯的一個實施例;第10圖圖示併入一或更多個態樣之電腦程式產品之一個實施例;第11圖圖示主機電腦系統之一個實施例;第12圖圖示電腦系統之進一步實例;第13圖圖示包含電腦網路之電腦系統之另一實例;第14圖圖示電腦系統之各個元件之一個實施例;第15A圖圖示第14圖之電腦系統之執行單元的一個實施例;第15B圖圖示第14圖之電腦系統之分支單元的一個實施例;第15C圖示第14圖之電腦系統之載入/儲存單元的一個實施例;及第16圖圖示仿真主機電腦系統之一個實施例。
根據一或更多個態樣,提供一種向量設施,該向量 設施包括各種向量指令,以及向量例外處理。本文所述之指令中之每一者為使用一或更多個向量暫存器(亦在本文中稱為向量)之單一指令多重資料(SIMD)指令。向量暫存器,例如處理器暫存器(亦稱為硬體暫存器),該處理器暫存器可作為中央處理單元(CPU)或其他處理器之一部分而可用的少量儲存(例如,非主記憶體)。每一向量暫存器含有具有一或更多個元素之向量運算元,且元素之長度為例如一個、兩個、四個或八個位元組。在其他實施例中,元素可以具有其他大小;且向量指令不必為SIMD指令。
參考圖1描述併入且使用一或更多個態樣之計算環境之一個實施例。計算環境100包括例如處理器102(例如,中央處理單元)、記憶體104(例如,主記憶體),及一或更多個輸入/輸出(input/output;I/O)裝置及/或介面106,上述各者經由例如一或更多個匯流排108及/或其他連接耦接至彼此。
在一個實例中,處理器102係基於由國際商用機器公司提供之z/架構,且處理器102為諸如System z伺服器之伺服器之一部分,且該伺服器亦由國際商用機器公司提供且實施z/架構。z/架構之一個實施例係描述在2012年9月第十版的IBM®公開案號為SA22-7832-09之標題為「操作之z/架構原理」的IBM®公開案中,該公開案在此以引用之方式全部併入本文。在一個實例中,處理器執行諸如z/OS之作業系統,該作業系統亦由國際商用機器公司提供。IBM®、Z/ARCHITECTURE®及Z/OS®為美國紐約Armonk之國際商 用機器公司之註冊商標。本文使用之其他名稱可為國際商用機器公司或其他公司之註冊商標、商標,或產品名稱。
在進一步實施例中,處理器102係基於由國際商用機器公司提供之電源架構(Power Architecture)。電源架構之一個實施例係描述在2010年7月23日的國際商用機器公司的「Power ISATM Version 2.06 Revision B」中,該文內容在此以全文引用方式併入本文。POWER ARCHITECTURE®為國際商用機器公司之註冊商標。
在更進一步實施例中,處理器102係基於由美國英特爾公司提供之英特爾架構。英特爾架構之一個實施例係描述在2013年1月的序號為253666-045US之「Intel® 64及IA-32架構開發者的手冊:第2B卷,指令集參考,A-L」,及2013年1月的序號為253667-045US之「Intel® 64及IA-32架構開發者的手冊:第2B卷,指令集參考,M-Z」,上述每一者在此以引用之方式全部併入本文。Intel®為加利福尼亞Santa Clara的英特爾公司之註冊商標。
參考第2A圖描述併入且使用一或更多個態樣之計算環境之另一實施方式。在此實例中,計算環境200包括例如本地中央處理單元202、記憶體204,及一或更多個輸入/輸出裝置及/或介面206,上述各者經由例如一或更多個匯流排208及/或其他連接彼此耦接。作為實例,計算環境200可包括由紐約Armonk之國際商用機器公司提供之PowerPC處理器、pSeries伺服器或xSeries伺服器;由加利福尼亞Palo Alto之Hewlett Packard Co.提供之具有英特爾Itanium II處理 器的HP Superdome;及/或基於經由國際商用機器公司、Hewlett Packard、Intel、Oracle或其他公司提供之架構的其他機器。
本地中央處理單元202包括一或更多個本地暫存器210,諸如在環境之內的處理期間使用之一或更多個通用暫存器及/或一或更多個專用暫存器。該等暫存器包括表示在任何特定時間點之環境狀態的資訊。
此外,本地中央處理單元202執行儲存在記憶體204中之指令及程式碼。在一個特定實例中,中央處理單元執行儲存在記憶體204中之仿真器程式碼212。此程式碼使在一個架構中配置之處理環境能夠仿真另一架構。例如,仿真器程式碼212允許基於除z/架構以外的架構的機器(諸如PowerPC處理器、pSeries伺服器、xSeries伺服器、HP Superdome伺服器或其他機器)仿真z/架構且執行基於z/架構開發之軟體及指令。
參考第2B圖描述關於仿真器程式碼212之更多細節。儲存在記憶體204中之Guest指令250包含軟體指令(例如,相關於機器指令),該等軟體指令經開發以執行在除本地中央處理器202的架構以外之架構中。例如,guest指令250可已經設計以在z/架構處理器102上執行,但是在本地CPU 202上仿真,該本地CPU 202例如可為英特爾Itanium II處理器。在一個實例中,仿真器程式碼212包括指令提取常式252以自記憶體204獲得一或更多個guest指令250,且以視情況地為所獲得之指令提供本端緩衝。仿真器程式碼亦包括指令 變換常式254以決定已經獲得之guest指令之類型,且以將guest指令變換成為一或更多個相應本地指令256。此變換例如包括識別待由guest指令執行之功能及選擇用於執行彼功能之一或多個本地指令。
此外,仿真器212包括仿真控制常式260以使本地指令得以執行。仿真控制常式260可引起本地CPU 202執行本地指令之常式,該等本地指令仿真一或更多個先前獲得之guest指令且,在該執行結束時,該等本地指令返回控制至指令提取常式以仿真下一個guest指令或guest指令群組之獲得。本地指令256之執行可包括自記憶體204載入資料至暫存器中;自暫存器將資料儲存回記憶體;或執行一些類型之算術或邏輯操作,如由變換常式所決定。
每一常式例如經實施在軟體中,該軟體經儲存在記憶體中或經由本地中央處理單元202執行。在其他實例中,一或更多個常式或操作是在韌體、硬體、軟體或上述各者之某一組合中實施。仿真處理器之暫存器可使用本地CPU之暫存器210或藉由使用記憶體204中之位置而得以仿真。在實施例中,guest指令250、本地指令256及仿真器程式碼212可常駐在相同記憶體中或可分散在不同記憶體裝置之間。
如本文所使用,韌體包括例如處理器之微程式碼、毫程式碼及/或巨集程式碼。韌體例如包括用於實施較高級別機器程式碼之硬體位準指令及/或資料結構。在一個實施例中,韌體包括例如通常作為微程式碼遞送之專屬程式碼,該專屬程式碼包括特定於下層硬體之受信賴軟體或微程式碼且 控制對系統硬體之作業系統存取。
在一個實例中,經獲得、變換且執行之guest指令250為本文所述之指令。具有一個架構(例如,z/架構)之指令係提取自記憶體,經變換且表示為另一架構(例如,PowerPC、pSeries、xSeries、Intel等等)之一系列本地指令256。然後執行該等本地指令。
在一個實施例中,本文所述之指令為向量指令,該等向量指令為向量設施之一部分。向量設施提供例如範圍自一個元素至十六個元素之固定大小的向量。每一向量包括由在設施中定義之向量指令操作的資料。在一個實施例中,若向量係由多個元素組成,則與其他元素並行地處理每一元素。指令完成在所有元素之處理完成後才發生。在其他實施例中,部分地經並行及/或順序地處理該等元素。
向量指令可經實施為各種架構之一部分,該等架構包括但不限於,z/架構、Power、x86、IA-32、IA-64等等。儘管本文所述的實施方式係針對z/架構,但是本文所述之向量指令及一或更多個其他態樣可基於許多其他架構。z/架構僅為一個實例。
在其中向量設施經實施為z/架構之一部分的一個實施例中,為了使用向量暫存器及指令,將所指定控制暫存器(例如,控制暫存器0)中之向量賦能控制及暫存器控制設定為(例如)一。若安裝了向量設施且向量指令在無賦能控制設定之情況下執行,則識別資料例外。若未安裝向量設施且執行向量指令,則識別操作例外。
在一個實施例中,存在32個向量暫存器且其他類型之暫存器可映射至向量暫存器之象限(quadrant)。例如,如圖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為位置8至11之擴充位元,該位置8至11經分配給例如V1;RXB之位元1為位置12至15之擴充位元,該位置12至15經分配給例如V2;等等。在進一步實施例中,RXB欄位包括額外位元,且一個以上位元被用作每一向量或位置之擴充。
根據包括RXB欄位之一個態樣提供的一個指令為向量浮點測試資料類別立即(Vector Floating Point Test Data Class Immediate;VFTCI)指令,該指令之實例圖示於第4A圖 中。在一個實例中,向量浮點測試資料類別立即指令400包括:作業碼欄位402a(例如,位元0至7)、402b(例如,位元40至47),指示向量浮點測試資料類別立即操作;第一向量暫存器欄位404(例如,位元8至11),用以指定第一向量暫存器(V1);第二向量暫存器欄位406(例如,位元12至15),用以指定第二向量暫存器(V2);立即欄位(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,且M5欄位410在例如位元0中指定單個元素控制(S)。若位元0被設定為一,則操作僅對向量中之零索引元素發生。在第一運算元向量中之所有其他元素之位元位置是不可預測的。若位元0經設定為零,則操作對向量中之所有元素發生。
M4欄位412係用於例如指定在指令之第二運算元中之浮點數的大小。在一個實例中,該欄位經設定為3,指示雙倍精度二進制浮點數。其他實例亦是可能的。
在向量浮點測試資料類別立即指令之一個實施例之執行中,浮點元素或第二運算元之元素的類別及正負號經檢查以自第三運算元選擇一或更多個位元。若設定了所選之位元,則在第一運算元中之相應元素的所有位元位置經設定為一;否則,該等位元位置經設定為零。亦即,若包含在第二運算元之元素中的浮點數之類別/正負號匹配第三運算元中之設定位元(亦即,設定為例如一之位元),則對應於第二運算元之元素的第一運算元之元素經設定為一。在一個實例 中,所有運算元元素含有長形二進制浮點(binary floating point;BFP)數。
如本文所示,第三運算元之12個位元,指令文本之位元16至27用來指定BFP資料類別及正負號之12種組合。在一個實例中,如第4B圖中所示,BFP運算元元素被分成六個類別430:零、正規數、次正規數、無窮大、靜止非數字(Not-a-Number;NaN)、及訊號傳遞NaN,且每一類別具有與該類別相關聯之正負號432(正或負)。因此,例如,I3之位元0指定具有正號之零類別,且位元1指定具有負號之零類別,等等。
第三運算元中之一或更多個可經設定為一。此外,在一個實施例中,指令可同時對一或更多個元素操作。
在不引起IEEE例外之情況下檢查包括SNaN(訊號傳遞NaN)及QNaN(靜止NaN)之運算元元素。
所有元素之所得摘要條件程式碼:
0對於所有元素之選定位元為1(匹配)
1於至少一個元素,但並非所有元素之選定位元為1(當S位為零時)
2
3對於所有元素之選定位元為0(無匹配)
IEEE例外:無
程式例外:
‧具有資料例外程式碼(data exception code;DXC)FE之資料,向量指令指示未賦能向量設施
‧操作(若未安裝z/架構之向量設施)
‧規格
‧交易約束
程式設計說明:
1.此指令提供在無例外或設定IEEE旗標之風險情況下測試運算元元素之方式。
2.當設定S位元時,不使用條件程式碼1。
參考第4C圖及第4D圖描述關於向量浮點測試資料類別立即指令之一個實施例之進一步細節。特定言之,第4C圖圖示與由處理器(例如,CPU)執行之向量浮點測試資料類別立即指令相關聯之邏輯的一個實施例,且第4D圖圖示說明向量浮點測試資料類別立即指令之執行的方塊圖之一個實例。
參看第4C圖,最初,稱為元素索引(element index;Ei)之變量經初始化為零,步驟450。然後,在此情況下為元素0之元素Ei的值係自指令之第二運算元(例如,自存儲在由V2指定之暫存器中之運算元)提取,步驟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),指示向量核對和操作;第一向量暫存器欄位504(例如,位元8至11),用以指定第一向量暫存器(V1);第二向量暫存器欄位506(例如,位元12至15),用以指定第二向量暫存器(V2);第三向量暫存器欄位508(例如,位元16至19),用以指定第三向量暫存器(V3);及RXB欄位510(例如,位元36至39)。在一個實例中,每一欄位504至510是獨立的且與一或多個作業碼欄位無關。此外,在一個實施例中,該等欄位是獨立的且彼此無關;然而,在其他實施例中,可組合一個以上欄位。
在進一步實施例中,第三向量暫存器欄位不經包括為指令之顯式運算元,而取而代之的是,該第三向量暫存器欄位為隱式運算元或輸入。此外,在運算元中提供之值可以其他方式提供,諸如在通用暫存器中提供,在記憶體中提供,或作為位址計算提供,等等。
在更進一步實施例中,根本不提供顯式或隱式之第三運算元。
在一個實例中,藉由作業碼欄位502a指定之作業碼之所選位元(例如,前兩個位元)指定指令之長度。在此特定實例中,所選位元指示長度為三個半字。此外,指令之格式為具有延伸作業碼欄位之向量暫存器與暫存器 (register-and-register)操作。每一向量(V)欄位,以及由RXB指定之此相應擴充位元指定向量暫存器。特定言之,對於向量暫存器,含有運算元之暫存器係使用例如暫存器欄位之四位元欄位指定,外加該欄位之相應暫存器擴充位元(RXB)作為最高有效位元。
在向量核對和指令之一個實施例之執行中,來自例如字大小之第二運算元之元素係與第三運算元之選定元素逐個加在一起,該選定元素例如,在第三運算元之字一中的元素。(在另一實施例中,加入第三運算元之選定元素是可選的。)總和經置放在選定位置中,例如,第一運算元之字一中。零經置放在其他字元素中,例如,第一運算元之字元素0,及2至3中。字大小元素皆被視為32位無正負號二進制整數。在每次添加元素之後,例如和的位元位置0的執行經添加至例如在第一運算元之字元素一中的結果之位元位置31。
條件程式碼:程式碼保持不變。
程式例外:
‧具有資料例外程式碼(data exception code;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可經設定至任何有效元素索引。
執行端回進位(end around carry;EAC)加法,其中OP1(Ey)=OP1(Ey)+OP2(Ei)+OP2(Ei+1),步驟536。因此,輸出向量(OP1)之元素1經設定等於彼元素加上第二運算元(OP2)之元素0中的值及第二運算元之元素1中的值的內容。利用端回進位加法,執行加法運算且來自加法之任何進位經增加回至總和中以產生新的和。
在進一步實施例中,代替如上所述之加法,執行以下過程:定義臨時累加器值且該值經初始化至零,且隨後一 次增加一個元素。作為進一步實施例,並行增加所有字且無臨時累加器。其他變化亦是可能的。
此後,進行關於是否存在待增加在第二運算元中之額外元素的決定,詢問538。例如,是否Ei-2<第二運算元之元素數目。若存在更多待增加之第二運算元元素,則Ei例如增加二,步驟540;且處理以步驟536繼續。
在於第二運算元上增加元素之後,結果經加至第三運算元中之值。例如,執行第一運算元(在所有第二運算元元素上之EAC加法之和)之元素(Ey)與第三運算元(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,且加法為端回進位加法。
上文描述了向量核對和指令之一個實施例,該指令在向量暫存器之元素上執行核對和,而不是執行車道算術(lane arithmetic)。在一個實施例中,向量核對和指令藉由以端回進位加法執行整個求和來執行核對和。在一個實例中,向量核對和指令自向量暫存器獲得四個4位元組整數元素且將該等整數元素相加在一起。將來自加法之任何進位向回增加。4位元組和經增加至在另一運算元中之4位元組元素,且隨後經保存在更進一步向量暫存器(例如,其中零儲 存在向量暫存器之高階元素中之向量暫存器的低階4位元組元素)中。
在進一步實施例中,進一步向量暫存器或另一寄存器不用於保存該值,但取而代之的是,其他暫存器(亦即,運算元)中之一者被用作累加器。
所提供之核對和可用以保持資料完整性。常常將核對和應用於資料且將核對和在雜訊通道上發送以驗證所接收之資料是否正確。在此實例中,如本文所述,核對和係藉由將連續4位元組整數相加在一起來計算。若存在整數運算操作之進位,則進位額外一經增加至運行和(running sum)。
儘管本文描述了核對和,但是類似技術可用於其他端回進位加法。
根據一個態樣提供之進一步指令為向量高氏場倍增和及累加(VGFMA)指令,該指令之實例圖示在第6A圖中。在一個實例中,向量高氏場倍增和及累加指令600包括作業碼欄位602a(例如,位元0至7)、602b(例如,位元40至47),指示向量高氏場倍增和及累加操作;第一向量場604(例如,位元8至11),用以指定第一向量暫存器(V1);第二向量暫存器欄位606(例如,位元12至15),用以指定第二向量暫存器(V2);第三向量暫存器欄位608(例如,位元16至19),用以指示第三向量暫存器(V3);遮罩欄位(M5)610(例如,位元20至23);第四向量暫存器欄位612(例如,位元32至35),用以指定第四向量暫存器(V4);及RXB欄位614(例如,位元36至39)。在一個實例中,每一欄位604至614 是獨立的且與一或多個作業碼欄位無關。此外,在一個實施例中,該等欄位是獨立的且彼此無關;然而,在其他實施例中,可組合一個以上欄位。
在一個實例中,藉由作業碼欄位602a指定之作業碼之所選位元(例如,前兩個位元)指定指令之長度。在此特定實例中,所選位元指示長度為三個半字。此外,指令之格式為具有延伸作業碼欄位之向量暫存器與暫存器(register-and-register)操作。每一向量(V)欄位,以及由RXB指定之該欄位之相應擴充位元指定向量暫存器。特定言之,對於向量暫存器,含有運算元之暫存器係使用例如暫存器欄位之4位元欄位指定,外加該欄位之相應暫存器擴充位元(RXB)作為最高有效位元。
M5欄位610具有例如4個位元,0至3;且指定元素大小(ES)控制。元素大小控制指定向量暫存器運算元中之元素大小為二及三;在第一及第四運算元中之元素為由ES控制指定之彼等運算元之大小的兩倍。例如,M5中之0值指示位元組大小元素;例如,1指示半字;2指示字;及3指示雙字。
在向量高氏場多個和及累加指令之一個實施例的執行中,第二運算元之每一元素係在高氏場(亦即,具有有限數目之元素的有限場)中與第三運算元之對應元素相乘。亦即,第二運算元之每一元素係使用無進位乘法與第三運算元之相應元素相乘。在一個實例中,高氏場具有二的階。此乘法類似於標準二進制乘法,但取而代之的是增加移位被乘數,該移位被乘數專門地為ORed(XOR)。例如所得奇偶對雙 元素大小之乘積經彼此互斥或運算(ORed)及與例如第四運算元之雙寬度元素的對應元素互斥或運算。結果經置放在例如第一運算元之雙寬度元素中。
條件程式碼:程式碼保持不變。
程式例外:
‧具有資料例外程式碼(data exception code;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。進一步,運算元對OP3H 662a、OP3L 662b係自第三運算元660提取,且運算元對OP4H 672a及OP4L 672b係自第四運算元670提取。運算元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階在有限場中執行操作。
在一個實例中,指令對向量暫存器之複數個元素執行無進位乘法運算以獲得和。進一步,指令對總和執行最終互斥或以產生累加和。當執行時,指令在第二向量及第三向量之高氏場對應元素中倍乘,且經移位被乘數經互斥或運 算。每一雙寬度乘積經彼此互斥或運算,且結果與第一向量之雙寬度對應元素經互斥或運算。結果經儲存在第一向量暫存器中。儘管上文描述了雙字元素,但是可以使用其他元素大小之字大小元素。指令可對多個不同元素大小操作。
根據一個態樣提供之進一步指令為向量產生遮罩(VGF)指令,該指令之實例係參考第7A圖描述。在一個實例中,向量產生遮罩指令700包括:作業碼欄位702a(例如,位元0至7)、702b(例如,位元40至47),指示向量產生遮罩操作;第一向量暫存器欄位704(例如,位元8至11),用以指定第一向量暫存器(V1);第一立即欄位I2 706(例如,位元16至24),用以指定第一值;第二立即欄位(I3)708(例如,位元24至32),用以指定第二值;遮罩欄位(M4)710(例如,位元32至35);及RXB欄位712(例如,位元36至39);在一個實例中,每一欄位704至712是獨立的且與一或多個作業碼欄位無關。此外,在一個實施例中,該等欄位是獨立的且彼此無關;然而,在其他實施例中,可組合一個以上欄位。
在進一步實施例中,作為實例,第一值及/或第二值可提供於通用暫存器中,提供於記憶體中,提供於向量暫存器之元素(每元素不同)中,或來自位址計算。第一值及/或第二值可被包括為指令之顯式運算元或為隱式運算元或輸入。
在一個實例中,藉由作業碼欄位702a指定之作業碼之所選位元(例如,前兩個位元)指定指令之長度。在此特定實例中,所選位元指示長度為三個半字。此外,指令之格 式為具有延伸作業碼欄位之向量暫存器與立即(register-and-immediate)操作。每一向量(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'。
條件程式碼:程式碼保持不變。
程式例外:
‧具有資料例外程式碼(data exception code;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之元素中。
上文詳細描述了一指令,用於為向量之每一元素產生位元遮罩。在一個實施例中,指令獲得起始位元位置及結束位元位置,且產生針對每一元素而複製之位元遮罩。該指令指定位元範圍,且在該範圍之內的每一位元對於向量暫存器之每一元素設定為一,而其他位元經設定為零。
在一個實施例中,使用指令以產生位元遮罩在例如自記憶體加載位元遮罩方面提供益處,如此增加了指令流之快取記憶體佔據面積且取決於所需的遮罩數量可增加關鍵迴路中之潛時。
根據一個態樣提供之更進一步指令為向量元素旋轉(Vector Element Rotate)及遮罩下插入(Insert Under Mask;VERIM)指令,該指令之實例經圖示在第8A圖中。在一個實例中,向量元素旋轉及遮罩下插入指令800包括:作業碼欄位802a(例如,位元0至7)、802b(例如,位元40至47),指示向量元素旋轉及遮罩下插入操作;第一向量暫存器欄位804(例如,位元8至11),用以指定第一向量暫存器(V1);第二向量暫存器欄位806(例如,位元12至15),用以指定第二向量暫存器(V2);第三向量暫存器欄位808(例如,位元16至19),用以指定第三向量暫存器(V3);立即欄位(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指令產生。
條件程式碼:程式碼保持不變。
程式例外:
‧具有資料例外程式碼(data exception code;DXC)FE之資料,向量指令指示未賦能向量設施
‧操作(若未安裝z/架構之向量設施)
‧規格
‧交易約束
程式設計說明:
1. VERIM及VGM之組合可用以完成旋轉及插入選擇的位元(Rotate and Insert Selected Bits)指令之完整功能。
2.雖然I4欄位之位元經定義以含有指定用於旋轉剩下的每一元素之位元數目的無正負號二進制整數,但是可編碼負值,該負值有效地指定右旋量。
參考第8B圖及第8C圖描述關於向量元素旋轉及遮 罩下插入指令之執行的進一步細節。特定言之,第8B圖圖示與由處理器執行之向量元素旋轉及遮罩下插入指令相關聯之邏輯的一個實施例,且第8C圖形象地圖示向量元素旋轉及遮罩下插入指令之執行之一個實例。
參看第8B圖,旋轉第二運算元之選定元素(步驟830)達在第四運算元中指定的量(820)。若在第四運算元中指定的值大於在元素大小中指定的位元數目(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)加法(Vector Floating Point(FP)Add)、向量FP比較純量(Vector FP Compare Scalar)、向量FP比較相等(Vector FP Compare Equal)、向量FP比較高或相等(Vector FP Compare High or Equal)、向量FP自固定64位轉換(Vector FP Convert From Fixed 64-Bit)、向量FP自邏輯64位轉換(Vector FP Convert From Logical 64-Bit)、向量FP轉換為固定64位(Vector FP Convert to Fixed 64-Bit)、向量FP轉換為邏輯64位(Vector FP Convert to Logical 64-BIt)、向量FP除法(Vector FP Divide)、向量負載FP整數(Vector Load FP Integer)、向量FP負載加長(Vector FP Load Lengthened)、向量FP負載圓整(Vector FP Load Rounded)、向量FP乘法(Vector FP Multiply)、向量FP乘法與加法(Vector FP Multiply and Add)、向量FP乘法與減法(Vector FP Multiple and Subtract)、向量FP平方根(Vector FP Square Root),及向量FP減法(Vector FP Subtract),以及其他類型之 向量浮點指令及/或其他指令。
參考第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)。若A0+B0及A1+B1兩者皆接收例外,則VIX經設定為0,因為VIX為最左側的索引位置且VIC=0101。
上文詳細描述了各種向量指令,以及指示向量暫存器之內的例外之位置的向量例外程式碼。在所提供之流程圖中,一些處理可順序出現;然而,在一或更多個實施例中,並行地處理元素,且因此例如,若存在更多待處理之元素,則可能不需要檢查。許多其他變化亦是可能的。
另外,在進一步實施例中,指令之一或更多個欄位之內容可作為實例在通用暫存器中提供,在記憶體中提供,在向量暫存器之元素(每元素不同)中提供或來自位址計算。該等內容可被包括為指令之顯式運算元或作為隱式運算元或輸入。此外,一或更多個指令可使用較少的運算元或輸入,且取而代之的是,一或更多個運算元可用於多個操作或步驟。
此外,不在指令欄位中包括元素大小控制,元素大小控制可以其他方式提供,如本文所述。另外,元素大小可由作業碼指定。例如,指令之特定作業碼指定元素之操作及大小,等等。
在本文中,除非明確地或藉由上下文另外說明,否則記憶體、主記憶體、儲存器及主存儲器可互換地使用。
如將由熟習該項技術者所瞭解,態樣可實施為系統、方法,或電腦程式產品。因此,態樣可採用完全硬體實 施例、完全軟體實施例(包括韌體、常駐軟體、微程式碼,等等),或將軟體態樣及硬體態樣結合之實施例的形式,該等實施例可大體全部在本文中稱為「電路」、「模組」或「系統」。此外,態樣可採取實施在一或更多個電腦可讀取媒體中之電腦程式產品之形式,該一或更多個電腦可讀取媒體具有實施在該一或更多個電腦可讀取媒體上之電腦可讀取程式碼。
可以利用一或更多個電腦可讀取媒體之任意組合。電腦可讀取媒體可為電腦可讀取儲存媒體。電腦可讀取儲存媒體可為例如但不限於,電子、磁性、光學、電磁、紅外線或半導體系統、設備或裝置,或上述各者之任何適當組合。電腦可讀取儲存媒體之更特定實例(非窮舉清單)包括以下實例:具有一或更多個電線之電連接、可攜式電腦磁碟、硬碟、隨機存取記憶體(random access memory;RAM)、唯讀記憶體(read-only memory;ROM)、可抹除可程式化唯讀記憶體((erasable programmable read-only memory;EPROM)或快閃記憶體)、光纖、可攜式光碟唯讀記憶體(compact disc read-only memory;CD-ROM)、光學儲存裝置、磁性儲存裝置,或上述各者之任何適當組合。在此文件之上下文中,電腦可讀取儲存媒體可為任何有形媒體,該媒體可含有或儲存由指令執行系統、設備或裝置使用,或結合指令執行系統、設備或裝置使用之程式。
現參看第10圖,在一個實例中,電腦程式產品1000包括例如一或更多個非暫態電腦可讀取儲存媒體1002,用於 儲存電腦可讀取程式碼手段或邏輯1004於該非暫態電腦可讀取儲存媒體1002上,以提供並促進本發明之一或更多個態樣。
實施於電腦可讀取媒體上之程式碼可使用適當媒體傳輸,該媒體包括但不限於無線、有線、光纖電纜、射頻(radio frequency;RF)等,或上述各者之任何適當組合。
用於執行態樣之操作的電腦程式碼可以一或更多個程式設計語言之任何組合編寫,該等程式設計語言包括:物件導向式程式設計語言,諸如JAVA、Smalltalk、C++等;及習知程序程式設計語言,諸如「C」程式設計語言,組合程式或類似程式設計語言。程式碼可作為獨立軟體套裝完全地在使用者的電腦上,部分地在使用者的電腦上執行,或部分地在使用者的電腦上且部分地在遠端電腦上執行,或完全地在遠端電腦或伺服器上執行。在後一方案中,遠端電腦可經由任何類型之網路連接至使用者的電腦,該網路包括區域網路(local area network;LAN)或廣域網路(wide area network;WAN),或可進行到達外部電腦之連接(例如,經由使用網際網路服務提供商之網際網路)。
本文參照根據一或更多個實施例之方法、設備(系統)及電腦程式產品的流程圖圖示及/或方塊圖描述各態樣。應將理解,流程圖圖示及/或方塊圖之每一方塊,及流程圖圖示及/或方塊圖中之方塊的組合可藉由電腦程式指令實施。可提供該等電腦程式指令至通用電腦、專用電腦,或其他可程式化資料處理設備之處理器以產生機器,以使得經由電腦或其他可程式化資料處理設備之處理器執行之指令產生用於實 施在流程圖及/或方塊圖方塊或多個方塊中指定之功能/動作的手段。
該等電腦程式指令亦可儲存在電腦可讀取媒體中,該等指令可導引電腦、其他可程式化資料處理設備,或其他裝置以特定方式運作,以使得儲存在電腦可讀取媒體中之指令產生包括指令之製品,該等指令實施在流程圖及/或方塊圖方塊或多個方塊中指定之功能/動作。
亦可將電腦程式指令載入至電腦、其他可程式化資料處理設備或其他裝置上,以引起一系列操作步驟得以在電腦、其他可程式化設備或其他裝置上執行以產生電腦實施過程,以使得在電腦或其他可程式化設備上執行之指令提供用於實施在流程圖及/或方塊圖方塊或多個方塊中指定之功能/動作的過程。
圖式中之流程圖及方塊圖圖示根據各種實施例之系統、方法及電腦程式產品之可能的實施之架構、功能及操作。就此而言,流程圖或方塊圖中之每一方塊可表示模組、區段或部分程式碼,該模組、區段或部分程式碼包含用於實施一或多個指定邏輯功能之一或更多個可執行指令。亦應注意,在一些替代實施中,在方塊中所示之功能可不按照諸圖中所示之次序發生。例如,取決於所涉及之功能,連續圖示之兩個方塊可實際上大體並行地執行,或該等方塊有時可以逆序執行。亦將注意,方塊圖及/或流程圖說明之每一方塊,及方塊圖及/或流程圖說明中之方塊之組合可藉由執行指定功能或動作之基於專用硬體之系統,或專用硬體及電腦指令之組合 實施。
除上述情況之外,一或更多個態樣可藉由供應客戶環境管理之服務提供商提供、給予、部署、管理和服務等。例如,服務提供商可產生、維護、支援等電腦程式碼及/或電腦基礎結構,該電腦程式碼及/或電腦基礎結構為一或更多個客戶執行一或更多個態樣。例如,作為回報,服務提供商可根據訂閱及/或費用協議自客戶接收付款。另外地或替代地,服務提供商可自向一或更多個第三方銷售廣告內容接收付款。
在一個態樣中,應用可經部署用於執行一或更多個態樣。作為一個實例,應用之部署包含可操作以執行一或更多個態樣之電腦基礎結構。
作為進一步態樣,可部署計算基礎結構,該計算基礎結構包含整合電腦可讀取程式碼至計算系統中,在該計算系統中,與計算系統結合之程式碼能夠執行一或更多個態樣。
作為更進一步態樣,可提供用於將計算基礎結構整合到電腦系統中之過程,該計算基礎結構包含整合電腦可讀取程式碼。電腦系統包含電腦可讀取媒體,其中電腦媒體包含一或更多個態樣。與電腦系統結合之程式碼能夠執行一或更多個態樣。
儘管上文描述了各種態樣,但是該等態樣僅為實例。例如,其他架構之計算環境可併入且使用一或更多個態樣。此外,可使用其他大小之向量,且可在不背離一或更多個態樣之情況下對指令變更。此外,可使用除向量暫存器以 外的暫存器。另外,在其他實施例中,向量運算元可為記憶體位置,而非向量暫存器。其他變化亦是可能的。
此外,其他類型之計算環境可受益於一或更多個態樣。作為一個實例,適用於儲存及/或執行程式碼之資料處理系統是可用的,該資料處理系統包括至少兩個處理器,該至少兩個處理器經由系統匯流排直接或間接地耦接至記憶體元件。記憶體元件包括例如在程式碼、大容量儲存器,及快取記憶體之實際執行期間使用之本端記憶體,該等記憶體提供至少一些程式碼之暫時儲存以降低在執行期間必須自大容量儲存器提取程式碼之次數。
輸入/輸出或I/O裝置(包括但不限於,鍵盤、顯示器、指標裝置、DASD、磁帶、CD、DVD、隨身碟及其他記憶媒體等)可直接地或經由中間I/O控制器耦接至系統。網路配接器亦可經耦接至系統以使得資料處理系統能夠經由中間專用網路或公眾網路耦接至其他資料處理系統或遠端列印機或儲存裝置。數據機、電纜數據機及乙太網路卡僅為幾個可用類型之網路配接器。
參看第11圖,描繪了用於實施一或更多個態樣之主機電腦系統5000之代表性元件。代表性主機電腦5000包含與電腦記憶體(亦即,中央儲存器)5002通訊之一或更多個CPU 5001,以及至儲存媒體裝置5011及網路5010之I/O介面以便與其他電腦或SAN等通訊。CPU 5001符合具有已架構指令集及已架構功能之架構。CPU 5001可具有動態位址變換(dynamic address translation;DAT)5003,用於將程式位址(虛 擬位置)變換成為記憶體之實際位址。DAT通常包括用於緩存變換之變換旁看緩衝器(translation lookaside buffer;TLB)5007,以便對電腦記憶體5002之區塊的稍後存取不需要位址變換之延遲。通常,在電腦記憶體5002與處理器5001之間使用快取記憶體5009。快取記憶體5009可為階層式快取記憶體,該快取記憶體具有可用於多於一個CPU之較大快取記憶體,及在較大快取記憶體與每一CPU之間的更快更小的(低位準)快取記憶體。在一些實施中,較低位準快取記憶體經分離以為指令提取及資料存取提供單獨的低位準快取記憶體。在一個實施例中,指令係經由快取記憶體5009藉由指令提取單元5004自記憶體5002提取。指令係在指令解碼單元5006中解碼且配送(在一些實施例中與其他指令一起)至指令執行單元5008或多個指令執行單元5008。通常,使用若干執行單元5008,例如算術執行單元、浮點執行單元及分支指令執行單元。指令係根據需要藉由執行單元、來自指令指定之暫存器或記憶體的存取運算元執行。若應自記憶體5002存取(載入或儲存)運算元,則載入/儲存單元5005通常在正在執行的指令之控制下處置存取。指令可以硬體電路或以內部微程式碼(韌體)執行,或藉由該等兩者之組合執行。
如所述,電腦系統包括在本端(或主要)儲存器中之資訊,以及定址、保護,和參考及變更記錄。定址之一些態樣包括位址之格式、位址空間之概念、各種類型之位址,及一種類型之位址轉換成另一類型之位址的方式。一些主存儲器包括永久分配之儲存位置。主存儲器向系統提供資料的 直接可定址之快速存取儲存。資料及程式兩者在可經處理之前被載入主儲存器(來自輸入裝置)。
主儲存器可包括一或更多個較小、更快的存取緩衝儲存器,該等儲存器有時稱為快取記憶體。快取記憶體通常與CPU或I/O處理器實體地關聯。實體構造之效應(執行除外)及不同儲存媒體之使用大體無法由程式觀察。
可為指令且為資料運算元保持單獨的快取記憶體。快取記憶體之內的資訊經保持在稱為快取記憶體區塊或快取記憶體線(或簡稱為線)的整數邊界上之連續位元組中。模型可提供EXTRACT CACHE ATTRIBUTE指令,該指令以位元組返回快取記憶體線之大小。模型亦可提供PREFETCH DATA及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個位元組之欄位給予特殊名稱。半字為二位元組邊界上之兩個連續位元組的群組,且半字為指令之基本構建塊。一字為四位元組邊界上之四個連續位元組的群組。雙字為八位元組邊界上之八個連續位元組的群組。四字為16位元組邊界上之16個連續位元組之群組。當儲存位址指定半字、單字、雙字及四字時,位址之二進制表示分別含有一個、兩個、三個,或四個最右側零位元。指令應在二位元組整數邊界上。大部分指令之儲存器運算元不具有邊界對準要求。
在為指令及資料運算元實施單獨快取記憶體之裝置上,若程序儲存至隨後自其提取指令之快取記憶體線中,則可經歷明顯的延遲,與該儲存器是否改變隨後被提取之指令無關。
在一個實施例中,本發明可通過軟體實踐(該軟體有時被稱為經授權內部程式碼、韌體、微程式碼、毫程式碼、微微程式碼等等,該等程式碼中之任何一者將符合一或更多個態樣)。參看第11圖,實施一或更多個態樣之軟體程式碼可由來自長期儲存媒體裝置5011之主機系統5000之處理器5001存取,該長期儲存媒體裝置5011諸如唯讀光碟驅動器、磁帶驅動器或硬碟。軟體程式碼可實施在用於資料處理系統 之各種已知媒體中之任一者上,該已知媒體諸如磁碟、硬碟,或CD-ROM。程式碼可分佈在該媒體上,或可通過至其他電腦系統之網路5010自一個電腦系統之電腦記憶體5002或儲存器分配給使用者,以便由該等其他系統之使用者使用。
軟體程式碼包括作業系統,該作業系統控制各種電腦元件及一或更多個應用程式之功能及互動。程式碼通常自儲存媒體裝置5011經分頁至相對較高速度之電腦儲存器5002,在該電腦儲存器5002中,該程式碼可用於由處理器5001處理。用於在記憶體中,於實體媒體上實施軟體程式碼,及/或經由網路分配軟體程式碼之技術及方法為吾人所熟知且將不在本文中進一步描述。當建立且儲存在有形媒體(包括但不限於電子記憶體模組(RAM)、快閃記憶體、光碟(CD)、DVD、磁帶等)上時,程式碼常被稱為「電腦程式產品」。電腦程式產品媒體通常藉由較佳地位於電腦系統中之處理電路可讀取,以便藉由處理電路執行。
第12圖圖示其中可實踐一或更多個態樣之代表性工作站或伺服器硬體系統。第12圖之系統5020包含代表性基本電腦系統5021,諸如個人電腦、工作站或伺服器,包括可選周邊裝置。基本電腦系統5021包括一或更多個處理器5026及匯流排,該匯流排用以根據已知技術將一或多個處理器5026與系統5021之其他元件連接且賦能處理器5026與系統5021之其他元件之間的通訊。匯流排將處理器5026連接至記憶體5025及長期儲存器5027,該記憶體5025及長期儲存器5027可包括例如硬碟(包括例如磁性媒體、CD、DVD 及快閃記憶體中之任一者)或磁帶碟。系統5021亦可包括使用者介面配接器,該使用者介面配接器將微處理器5026經由匯流排連接至一或更多個介面裝置,諸如鍵盤5024、滑鼠5023、列印機/掃描器5030及/或其他介面裝置,該等其他介面裝置可為任何使用者介面裝置,諸如觸敏螢幕、數位化輸入板等。匯流排亦將諸如LCD螢幕或監視器之顯示器裝置5022經由顯示配接器連接至微處理器5026。
系統5021可經由能夠與網路5029通訊5028之網路配接器與其他電腦或電腦網路通訊。示例性網路配接器為通信通道、訊標環、乙太網路或數據機。或者,系統5021可使用諸如蜂巢數位封包資料(cellular digital packet data;CDPD)卡之無線介面通訊。系統5021可與區域網路(LAN)或廣域網路(WAN)中之該等其他電腦相關聯,或系統5021可為與另一電腦之客戶端/伺服器佈置中之客戶端,等等。在本技術中已知所有該等設置,以及適當通信硬體及軟體。
第13圖圖示其中可實踐一或更多個態樣之資料處理網路5040。資料處理網路5040可包括複數個個別網路,例如無線網路及有線網路,該等網路中之每一者可包括複數個個別的工作站5041、5042、5043及5044。另外,如熟習此項技術者將瞭解,可包括一或更多個LAN,其中LAN可包含耦接至主處理器之複數個智慧型工作站。
仍參考第13圖,網路亦可包括主機電腦或伺服器,諸如閘道電腦(客戶端伺服器5046)或應用伺服器(可存取資料儲存庫且亦可自工作站5045直接存取之遠端伺服器 5048)。閘道電腦5046充當至每一個別網路中之入口點。當連接一個網路協定至另一網路協定時,需要閘道。閘道5046可較佳地經由通信鏈路耦接至另一網路(例如,網際網路5047)。閘道5046亦可使用通信鏈路經直接耦接至一或更多個工作站5041、5042、5043及5044。閘道電腦可利用IBM eServerTM System z伺服器實施,該伺服器可自國際商用機器公司獲得。
同時參考第12圖及第13圖,可實施本發明之一或更多個態樣之軟體程式設計程式碼可由來自長期儲存媒體5027之系統5020之處理器5026存取,該長期儲存媒體5027諸如CD-ROM驅動器或硬碟。軟體程式設計程式碼可實施在用於資料處理系統之各種已知媒體中之任一者上,該已知媒體諸如磁碟、硬碟,或CD-ROM。程式碼可經分佈在該媒體上,或可經由至其他電腦系統之網路自一個電腦系統之記憶體或儲存器分配給使用者5050、5051,以便由該等其他系統之使用者使用。
或者,程式設計程式碼可經實施在記憶體5025中,且可使用處理器匯流排藉由處理器5026存取。該程式設計程式碼包括作業系統,該作業系統控制各種電腦元件及一或更多個應用程式5032之功能及互動。程式碼通常係自儲存媒體5027分頁至高速記憶體5025,在高速記憶體5025中,程式碼可用於藉由處理器5026處理。用於在記憶體中,於實體媒體上實施軟體程式設計程式碼,及/或經由網路分配軟體程式碼之技術及方法為吾人所熟知且將不在本文中進一步論述。 當建立且儲存在有形媒體(包括但不限於電子記憶體模組(RAM)、快閃記憶體、壓縮光碟(CD)、DVD、磁帶等)上時,程式碼常被稱為「電腦程式產品」。電腦程式產品媒體通常藉由較佳地位於電腦系統中之處理電路可讀取,以便藉由處理電路執行。
對處理器最容易獲得之快取記憶體(通常比處理器之其他快取記憶體更快且更小)為最低(L1或位準一)快取記憶體,且主儲存器(主記憶體)為最高位準快取記憶體(L3,若存在3個位準)。最低位準快取記憶體常常被分成指令快取記憶體(I-Cache)及資料快取記憶體(D-Cache),該指令快取記憶體保持待執行之機器指令,該資料快取記憶體保持資料運算元。
參看第14圖,圖示處理器5026之示例性處理器實施例。通常,一或更多個位準之快取記憶體5053用以緩衝記憶體區塊,以改良處理器效能。快取記憶體5053為高速緩衝器,該高速緩衝器保持有可能使用之記憶體資料之快取記憶體線。典型快取記憶體線為64、128或256個位元組之記憶體資料。單獨的快取記憶體常用於緩存指令,而非用於緩存資料。快取記憶體同調(記憶體及快取記憶體中之線的副本之同步)通常係由本領域中眾所熟知之各種「探聽(snoop)」演算法提供。處理器系統之主記憶體儲存器5025常被稱為快取記憶體。在具有4位準之快取記憶體5053之處理器系統中,主儲存器5025有時被稱為位準5(L5)快取記憶體,因為該快取記憶體通常更快且僅保持可用於電腦系統之非揮發性 儲存(DASD,磁帶等)之一部分。主儲存器5025藉由作業系統「緩存」進出主儲存器5025分頁之資料頁面。
程式計數器(指令計數器)5061保持待執行之當前指令之位址的追蹤。z/架構處理器中之程式計數器為64位元,且該程式計數器可經截尾至31或24位元以支援先前定址限制。程式計數器通常以電腦之程式狀態字(program status word;PSW)實施,以使得該PSW在上下文切換期間持續。因此,在進行中之具有程式計數器值的程式可例如藉由作業系統中斷(自程式環境至作業系統環境之上下文切換)。程式之PSW保持程式計數器值同時程式不活動,且使用作業系統之程式計數器(在PSW中)同時作業系統正在執行。通常,程式計數器增加量等於當前指令之位元組數目。精簡指令集計算(Reduced Instruction Set Computing;RISC)指令通常為固定長度,而複雜指令集計算(Complex Instruction Set Computing;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,以保持算術邏輯單元(arithmetic logic unit;ALU)5066將對其操作之資訊。ALU執行算術運算,諸如加、減、乘及除;以及邏輯函數,諸如與、或及互斥或(XOR),旋轉及移位。 較佳地,ALU支援依賴設計之專用操作。例如,其他電路可提供其他已架構設施5072,包括條件程式碼及恢復支援邏輯。通常,ALU操作之結果經保持在輸出暫存器電路5070中,該輸出暫存器電路5070可將結果轉發至各種其他處理功能。存在處理器單元之許多佈置,且本描述僅意欲提供一個實施例之代表性理解。
ADD指令例如將執行在具有算術及邏輯功能之執行單元5057中,而浮點指令例如將執行在具有專門浮點能力之浮點執行中。較佳地,執行單元基於對運算元執行作業碼定義之函數來對由指令識別的運算元操作。例如,ADD指令可藉由執行單元5057對運算元執行,該等運算元發現於由指令之暫存器欄位識別的兩個暫存器5059中。
執行單元5057對兩個運算元執行算術加法,且執行單元5057將結果儲存於第三運算元中,其中該第三運算元可為第三暫存器或兩個來源暫存器中之一個暫存器。執行單元較佳地利用算術邏輯單元(ALU)5066,該算術邏輯單元能夠執行各種邏輯函數,諸如移位、旋轉、與、或及互斥或;以及各種代數函數,包括加、減、乘及除中任一者。一些ALU 5066經設計用於純量操作,且一些ALU經設計用於浮點。取決於架構,資料可為高位優先(其中最低有效位元組處於最高位元組位址)或低位優先(其中最低有效位元組處於最低位元組位址)。IBM z/架構為高位優先(Big Endian)。取決於架構,正負號欄位可為正負號及量值,1的補數或2的補數。2的補數是有利的,因為ALU不需要設計減法能力,因為2的補數 中之負值或正值僅需要在ALU之內的加法。數字常見以速記描述,其中12位元欄位定義4,096位元組區塊之位址且12位元欄位常見被描述為例如4千位元組(千位元組)區塊。
參看第15B圖,用於執行分支指令之分支指令資訊通常經發送至分支單元5058,分支單元5058常常使用諸如分支歷史表格5082之分支預測算法,以預測在其他條件操作完成之前的分支之結果。在條件操作完成之前,將提取且推測地執行當前分支指令之目標。當條件操作完成時,基於條件操作之條件及推測結果完成或丟棄推測執行之分支指令。若條件程式碼滿足分支指令之分支要求,則典型分支指令可測試條件程式碼及至目標位置之分支,可基於若干數目計算目標位址,該等數目包括例如在指令之暫存器欄位或立即欄位中發現之數目。分支單元5058可使用ALU 5074,該ALU 5074具有複數個輸入暫存器電路5075、5076、5077及輸出暫存器電路5080。分支單元5058可例如與通用暫存器5059、解碼配送單元5056或其他電路5073通訊。
一群組指令之執行可由於種種原因而中斷,該等原因包括由作業系統引發之上下文切換、引起上下文切換之程式例外或錯誤、引起複數個程式之上下文切換或多線程活動之I/O中斷訊號(在多線程環境中)。較佳地,上下文切換動作保存關於當前執行之程式的狀態資訊,且隨後載入關於被調用之另一程式的狀態資訊。例如,狀態資訊可經保存在硬體暫存器或保存在記憶體中。狀態資訊較佳地包含指向待執行之下一指令的程式計數器值、條件程式碼、記憶體變換資訊 及已架構暫存器內容。上下文切換活動可由硬體電路、應用程式、作業系統程式或韌體程式碼(微程式碼、微微程式碼或經授權內部程式碼(licensed internal code;LIC))單獨地或結合地實行。
處理器根據指令定義之方法存取運算元。指令可使用指令之一部分的值提供立即運算元,且指令可提供明確地指向通用暫存器或專用暫存器(例如,浮點暫存器)之一或更多個暫存器欄位。指令可利用由作業碼欄位識別之隱式暫存器作為運算元。指令可利用運算元之記憶體位置。運算元之記憶體位置可由暫存器、立即欄位,或暫存器及立即欄位之組合提供,如由z/架構長移位設施所例示,其中指令定義加在一起以例如提供記憶體中之運算元之位址的基礎暫存器、索引暫存器及立即欄位(移位欄位)。除非另有陳述,否則本文中之位置通常暗示主記憶體(主儲存器)中之位置。
參看第15C圖,處理器使用載入/儲存單元5060存取儲存器。載入/儲存單元5060可藉由獲得在記憶體5053中之目標運算元之位址且將運算元載入暫存器5059或另一記憶體5053位置來執行載入操作,或載入/儲存單元5060可藉由獲得記憶體5053中之目標運算元之位址且將自暫存器5059或另一記憶體5053位置獲得之資料儲存在記憶體5053中之目標運算元位置中來執行儲存操作。載入/儲存單元5060可為推測的且可以相對於指令序列亂序之順序存取記憶體,然而,載入/儲存單元5060應保持指令按序執行之程式的出現。載入/儲存單元5060可與通用暫存器5059、解碼/配送單元 5056、快取記憶體/記憶體介面5053或其他元素5083通訊,且載入/儲存單元5060包含各種暫存器電路、ALU 5085及控制邏輯5090,以計算儲存位址且以提供用於按次序保持操作之管線順序。一些操作可能是亂序,但載入/儲存單元提供用於使無序操作對程式顯示為已經按順序執行之功能,如本技術中眾所周知。
較佳地,應用程式「看見」之位址通常被稱為虛擬位址。虛擬位址有時被稱為「邏輯位址」及「有效位址」。該等虛擬位址之所以虛擬,在於該等虛擬位址藉由各種動態位址變換(dynamic address translation;DAT)技術中之一種技術經重定向至實體記憶體位置,該等技術包括但不限於,以偏移值簡單前綴虛擬位址、經由一或更多個變換表變換虛擬位址、變換表較佳地單獨或結合地包含至少一段表及頁表,較佳地,段表具有指向頁表之入口。在z/架構中,提供變換之階層,該階層包括區域第一表、區域第二表、區域第三表、段表及可選頁表。位址變換之效能常常是藉由利用變換旁看緩衝器(translation lookaside buffer;TLB)改進,該變換旁看緩衝器包含將虛擬位址映射到相關聯實體記憶體位置之輸入項。當DAT使用變換表變換虛擬位址時建立輸入項。隨後,虛擬位址之後續使用可利用快速TLB之輸入項,而不是緩慢順序變換表存取。TLB內容可由包括最近最少使用的(Least Recently used;LRU)演算法之各種替換演算法管理。
在其中處理器為多處理器系統之處理器之情況下,每一處理器負責保持共享資源,諸如I/O、快取記憶體、TLB 及記憶體,互鎖以達到同調。通常,「探聽」技術將用於保持快取記憶體同調。在探聽環境中,每一快取記憶體線可經標記為處於共享狀態、互斥狀態、變更狀態、無效狀態等中之任一者中以促進共享。
I/O單元5054(第14圖)向處理器提供用於附接至外圍裝置之手段,該等外圍裝置包括例如帶、碟、列印機、顯示器及網路。I/O單元常常係藉由軟體驅動程式呈現給電腦程式。在諸如來自IBM®之系統z的主機中,通道配接器及開放系統配接器為主機之I/O單元,該等I/O單元在作業系統與外圍裝置之間提供通信。
此外,其他類型之計算環境可受益於一或更多個態樣。作為一個實例,環境可包括仿真器(例如,軟體或其他仿真機制),在該仿真器中,仿真特定架構(包括,例如指令執行、已架構函數,諸如位址變換,及已架構暫存器)或該特定架構之子集(例如,在具有處理器及記憶體之本地電腦系統上)。在該環境中,仿真器之一或更多個仿真功能可實施本發明之一或更多個態樣,即使執行仿真器之電腦可具有與被仿真之能力不同的架構亦如此。作為一個實例,在仿真模式中,解碼被仿真之特定指令或操作,且建立適當仿真函數以實施個別指令或操作。
在仿真環境中,主機電腦包括例如:記憶體,用於儲存指令及資料;指令提取單元,用於自記憶體提取指令且視情況地為提取之指令提供本端緩衝;指令解碼單元,用於接收提取之指令且決定已提取之指令的類型;及指令執行單 元,用於執行指令。執行可包括從記憶體載入資料至暫存器中;從暫存器儲存資料回至記憶體;或執行一些類型之算術或邏輯操作,如由解碼單元所決定。在一個實例中,每一單元係在軟體中實施。例如,由單元執行之操作經實施為仿真器軟體中之一或更多個子常式。
更特定言之,在主機中,已架構機器指令常常經由編譯器應用程式由程式員(通常今天的「C」程序員)使用。儲存在儲存媒體中之該等指令可在z/架構IBM® Server中本地執行,或在執行其他架構之機器中執行。該等指令可仿真於現有及進一步的IBM®主機伺服器中且仿真於IBM®之其他機器上(例如,Power Systems伺服器及System x®伺服器)。該等指令可執行在使用由IBM®、Intel®、AMD®等製造的硬體在多種機器上執行Linux之機器中。除了根據z/架構在彼硬體上執行之外,Linux也可用作使用由Hercules、UMX或FSI(Fundamental Software,Inc)進行之仿真的機器,其中大體上執行處於仿真模式中。在仿真模式中,仿真軟體係藉由本地處理器執行以仿真經仿真處理器之架構。
本地處理器通常執行仿真軟體,該仿真軟體包含韌體或本地作業系統中之任一者以執行經仿真處理器之仿真。仿真軟體負責提取且執行經仿真處理器架構之指令。仿真軟體保持經仿真程式計數器以追蹤指令邊界。仿真軟體可一次提取一或更多個仿真機器指令,且將一或更多個仿真機器指令轉換為相應群組之本地機器指令,以便由本地處理器執行。該等經轉換之指令可經緩存,以使得可完成更快的轉換。 然而,仿真軟體應維持仿真處理器架構之架構規則,以便確保作業系統及為仿真處理器所寫之應用程式正確地操作。此外,仿真軟體應提供由仿真處理器架構識別之資源,該處理器架構包括但不限於,控制暫存器、通用暫存器、浮點暫存器、動態位址變換函數,該動態位址變換函數包括段表及頁表,該段表及頁表例如中斷機制、上下文切換機制。時間(Time of Day;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之實例,該主機電腦系統5092仿真主機架構之主機電腦系統5000'。在仿真主機電腦系統5092中,主處理器(CPU)5091為仿真主處理器(或虛擬主處理器)且主處理器(CPU)5091包含仿真處理器5093,該仿真處理器5093具有與主機電腦5000'之處理器5091之指令集架構不同的本地指令集架構。仿真主機電腦系統5092具有記憶體5094,仿真處理器5093可存取該記憶體5094。在示例性實施例中,記憶體5094經劃分為主機電腦記憶體5096部分及仿真常式5097部分。根據主機電腦架構,主機電腦記憶體5096可用於仿真主機電腦5092之程式。仿真處理器5093執行除仿真處理器5091之架構以外的架構之已架構指令集的本地指令,該等本地指令自仿真常式記憶體5097獲得,且仿真處理器5093可藉由使用在順序與存取/ 解碼常式中獲得之一或更多個指令來存取主機指令以便自主機電腦記憶體5096中之程式執行,該順序與存取/解碼常式可解碼所存取之一或多個主機指令以決定用於仿真所存取之主機指令的功能的本地指令執行常式。為主機電腦系統5000'架構所定義之其他設施可藉由已架構之設施常式來仿真,該等設施包括如例如通用暫存器、控制暫存器、動態位址變換及I/O子系統支援及處理器快取記憶體之該等設施。仿真常式亦可利用可用於仿真處理器5093(諸如通用暫存器及虛擬位址之動態變換)中之功能以改良仿真常式之效能。亦可提供專用硬體及卸載(off-load)引擎以輔助處理器5093仿真主機電腦5000'之功能。
本文使用之術語僅用於描述特定實施例之目的,且該術語不意欲作為本發明之限制。如本文所使用,除非上下文明確地指示,否則單數形式「一(a)」、「一(an)」及「該(the)」亦意欲包括複數形式。將進一步理解,當術語「包含(comprises)」及/或「包含(comprising)」用在本說明書中時,該等術語指定所述特徵、整數、步驟、操作、元件及/或組件之存在,但不排除一或更多個其他特徵、整數、步驟、操作、元件、組件及/或上述各者之群組的存在或添加。
若存在,則在下文之申請專利範圍中的所有手段或步驟加功能元件的相應結構、材料、動作及等同物意欲包括用於結合如特定主張之其他主張的元素執行功能的任何結構、材料或動作。已為了說明及描述之目的呈現了一或更多個態樣之描述,但該描述不意欲為窮舉或以所揭示之形式限 於本發明。在不背離一或更多個態樣之範疇及精神之情況下,許多修改及變化將對一般技術者顯而易見。實施例經選擇且描述以最佳解釋一或更多個態樣之原理及實際應用,且使本領域中之其他一般技術者能夠理解適合於預期之特定使用的具有各種修改之各種實施例之一或更多個態樣。
920‧‧‧步驟
922‧‧‧步驟
924‧‧‧步驟
926‧‧‧步驟

Claims (20)

  1. 一種用於促進例外處置之電腦程式產品,該電腦程式產品包含:一電腦可讀取儲存媒體,該電腦可讀取儲存媒體由一處理電路可讀取且儲存用於藉由該處理電路執行以便執行一方法之指令,該方法包含以下步驟:藉由一處理器決定在一計算環境之內執行之一指令已引起一例外,用於對一向量暫存器操作之該指令包含複數個元素;及基於該例外獲得一向量例外程式碼,該向量例外程式碼包括已引起該例外的該向量暫存器之該等複數個元素之一元素的一位置。
  2. 如請求項1所述之電腦程式產品,其中該位置包含一索引,該索引在對應於已引起該例外之該元素的該向量暫存器之內。
  3. 如請求項1所述之電腦程式產品,其中該位置包含在已引起該例外之該向量暫存器中之一最低索引元素。
  4. 如請求項1所述之電腦程式產品,其中該獲得之步驟係基於引起一中斷之該例外。
  5. 如請求項1所述之電腦程式產品,其中該向量例外程式碼包含用於指定該位置之一第一部分,及用於指定一向量中斷程式碼之一第二部分。
  6. 如請求項5所述之電腦程式產品,其中該位置包含在引起該例外之該向量暫存器中之一最低索引元素。
  7. 如請求項5所述之電腦程式產品,其中該向量中斷程式碼包含一值,該值用於指示一無效操作、除以零、一溢流、一欠流或一不精確結果中之一者。
  8. 如請求項1所述之電腦程式產品,其中該方法進一步包含以下步驟:決定該向量暫存器中之一或更多個元素之何者已引起該例外;且基於決定該一或更多個元素之何者已引起該例外之步驟,獲得待包括在該向量例外程式碼中之該位置。
  9. 如請求項8所述之電腦程式產品,其中該獲得該位置之步驟包含以下步驟:決定已引起該例外之該一或更多個元素之該最低索引元素,且使用該最低索引元素之一索引作為該位置。
  10. 一種用於促進例外處置之電腦系統,該電腦系統包含:一記憶體;及 一處理器,與該記憶體通訊,其中該電腦系統經設置以執行一方法,該方法包含以下步驟:藉由一處理器決定在一計算環境之內執行之一指令已引起一例外,用於對一向量暫存器操作之該指令包含複數個元素;及基於該例外獲得一向量例外程式碼,該向量例外程式碼包括已引起該例外的該向量暫存器之該等複數個元素之一元素的一位置。
  11. 如請求項10所述之電腦系統,其中該位置包含一索引,該索引在對應於已引起該例外之該元素的該向量暫存器之內。
  12. 如請求項10所述之電腦系統,其中該向量例外程式碼包含用於指定該位置之一第一部分,及用於指定一向量中斷程式碼之一第二部分。
  13. 如請求項12所述之電腦系統,其中該位置包含一索引,該索引在對應於已引起該例外之該元素的該向量暫存器之內。
  14. 如請求項12所述之電腦系統,其中該向量中斷程式碼包含一值,該值用於指示一無效操作、除以零、一溢流、一欠流或一不精確結果中之一者。
  15. 如請求項10所述之電腦系統,其中該方法進一步包含以下步驟:決定該向量暫存器中之一或更多個元素之何者已引起該例外;且基於決定該一或更多個元素中之何者已引起該例外之步驟,獲得待包括在該向量例外程式碼中之該位置,且其中該獲得該位置之步驟包含以下步驟:決定已引起該例外之該一或更多個元素之該最低索引元素,且使用該最低索引元素之一索引作為該位置。
  16. 一種促進例外處置之方法,該方法包含以下步驟:藉由一處理器決定在一計算環境之內執行之一指令已引起一例外,用於對一向量暫存器操作之該指令包含複數個元素;及基於該例外獲得一向量例外程式碼,該向量例外程式碼包括已引起該例外的該向量暫存器之該等複數個元素之一元素的一位置。
  17. 如請求項16所述之方法,其中該位置包含在已引起該例外之該向量暫存器中之一最低索引元素。
  18. 如請求項16所述之方法,其中該向量例外程式碼包含用於指定該位置之一第一部分,及用於指定一向量中斷程式碼之一第二部分。
  19. 如請求項18所述之方法,其中該向量中斷程式碼包含一值,該值用於指示一無效操作、除以零、一溢流、一欠流或一不精確結果中之一者。
  20. 如請求項16所述之方法,進一步包含以下步驟:決定該向量暫存器中之一或更多個元素之何者已引起該例外;且基於決定該一或更多個元素中之何者已引起該例外之步驟,獲得待包括在該向量例外程式碼中之該位置,且其中該獲得該位置之步驟包含以下步驟:決定已引起該例外之該一或更多個元素之該最低索引元素,且使用該最低索引元素之一索引作為該位置。
TW103100391A 2013-01-23 2014-01-06 用於促進例外處置之電腦程式產品、電腦系統及方法 TWI584190B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/748,504 US9715385B2 (en) 2013-01-23 2013-01-23 Vector exception code

Publications (2)

Publication Number Publication Date
TW201447753A true TW201447753A (zh) 2014-12-16
TWI584190B TWI584190B (zh) 2017-05-21

Family

ID=51208701

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103100391A TWI584190B (zh) 2013-01-23 2014-01-06 用於促進例外處置之電腦程式產品、電腦系統及方法

Country Status (15)

Country Link
US (2) US9715385B2 (zh)
EP (1) EP2948870A4 (zh)
JP (2) JP6788347B2 (zh)
KR (1) KR101740841B1 (zh)
CN (1) CN104956364B (zh)
AU (1) AU2013375140B2 (zh)
BR (1) BR112015017663A2 (zh)
CA (1) CA2895653C (zh)
HK (1) HK1210845A1 (zh)
IL (1) IL240105B (zh)
MX (1) MX340052B (zh)
RU (1) RU2015109474A (zh)
SG (1) SG11201503786QA (zh)
TW (1) TWI584190B (zh)
WO (1) WO2014115002A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI610234B (zh) * 2014-12-27 2018-01-01 英特爾股份有限公司 用於壓縮遮罩值的方法及裝置
TWI705370B (zh) * 2018-10-29 2020-09-21 臺灣銀行股份有限公司 程式執行分析系統及其方法
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
CN104268029A (zh) * 2014-09-23 2015-01-07 天津国芯科技有限公司 一种用于嵌入式PowerPC处理器异常嵌套的处理电路及方法
US9703721B2 (en) 2014-12-29 2017-07-11 International Business Machines Corporation Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions
US9569127B2 (en) 2014-12-29 2017-02-14 International Business Machines Corporation Computer instructions for limiting access violation reporting when accessing strings and similar data structures
GB2543554B (en) * 2015-10-22 2019-01-23 Advanced Risc Mach Ltd Handling exceptional conditions for vector arithmetic instruction
CN105512030B (zh) * 2015-11-30 2017-12-22 中国空间技术研究院 一种基于卫星指令码字智能构造提升卫星测试效率的方法
US10007519B2 (en) * 2015-12-22 2018-06-26 Intel IP Corporation Instructions and logic for vector bit field compression and expansion
GB2546510B (en) 2016-01-20 2018-09-26 Advanced Risc Mach Ltd Vector atomic memory update instruction
US10216515B2 (en) * 2016-10-18 2019-02-26 Oracle International Corporation Processor load using a bit vector to calculate effective address
US9785435B1 (en) * 2016-10-27 2017-10-10 International Business Machines Corporation Floating point instruction with selectable comparison attributes
KR101936565B1 (ko) * 2016-11-14 2019-01-09 엘에스산전 주식회사 인버터에서 인터럽트 제어방법

Family Cites Families (143)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 ベクトル処理装置
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
CA2045735A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Computer performance by eliminating branches
US5247524A (en) 1990-06-29 1993-09-21 Digital Equipment Corporation Method for generating a checksum
SG45269A1 (en) 1992-02-06 1998-01-16 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
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
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
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
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
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6324670B1 (en) 1999-03-24 2001-11-27 Novell, Inc. Checksum generator with minimum overflow
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
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
US7313583B2 (en) 2002-10-22 2007-12-25 Broadcom Corporation Galois field arithmetic unit for use within a processor
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
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
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
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
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
US8051226B2 (en) * 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
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
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
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
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
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
CN103502935B (zh) 2011-04-01 2016-10-12 英特尔公司 向量友好指令格式及其执行
CN103827814B (zh) 2011-09-26 2017-04-19 英特尔公司 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
US9448794B2 (en) 2011-11-30 2016-09-20 Intel Corporation Instruction and logic to provide vector horizontal majority voting functionality
CN103959237B (zh) 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US10037205B2 (en) 2011-12-23 2018-07-31 Intel Corporation Instruction and logic to provide vector blend and permute functionality
CN107220027A (zh) 2011-12-23 2017-09-29 英特尔公司 用于执行掩码位压缩的系统、装置以及方法
WO2013095661A1 (en) 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value
US20140223138A1 (en) 2011-12-23 2014-08-07 Elmoustapha Ould-Ahmed-Vall Systems, apparatuses, and methods for performing conversion of a mask register into a vector register.
WO2013101223A1 (en) 2011-12-30 2013-07-04 Intel Corporation Efficient zero-based decompression
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
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
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
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal 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
US9411589B2 (en) 2012-12-11 2016-08-09 International Business Machines Corporation Branch-free condition evaluation
US9256427B2 (en) 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9152419B2 (en) 2012-12-18 2015-10-06 Intel Corporation Instruction set for supporting wide scalar pattern matches
US9372692B2 (en) 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask 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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI610234B (zh) * 2014-12-27 2018-01-01 英特爾股份有限公司 用於壓縮遮罩值的方法及裝置
TWI705370B (zh) * 2018-10-29 2020-09-21 臺灣銀行股份有限公司 程式執行分析系統及其方法
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution

Also Published As

Publication number Publication date
CN104956364B (zh) 2018-07-27
US9715385B2 (en) 2017-07-25
EP2948870A4 (en) 2016-11-09
KR101740841B1 (ko) 2017-06-08
SG11201503786QA (en) 2015-06-29
CA2895653C (en) 2020-08-04
WO2014115002A1 (en) 2014-07-31
EP2948870A1 (en) 2015-12-02
MX2015009458A (es) 2015-09-24
AU2013375140A1 (en) 2015-07-16
IL240105B (en) 2019-03-31
TWI584190B (zh) 2017-05-21
RU2015109474A (ru) 2017-03-03
JP2019145164A (ja) 2019-08-29
IL240105A0 (en) 2015-09-24
US20150143074A1 (en) 2015-05-21
JP2016509716A (ja) 2016-03-31
KR20150110556A (ko) 2015-10-02
MX340052B (es) 2016-06-22
BR112015017663A2 (pt) 2017-07-11
CA2895653A1 (en) 2014-07-31
US20140208086A1 (en) 2014-07-24
AU2013375140B2 (en) 2017-03-23
HK1210845A1 (zh) 2016-05-06
US9727334B2 (en) 2017-08-08
CN104956364A (zh) 2015-09-30
JP6788347B2 (ja) 2020-11-25

Similar Documents

Publication Publication Date Title
TWI584190B (zh) 用於促進例外處置之電腦程式產品、電腦系統及方法
US10877753B2 (en) Vector galois field multiply sum and accumulate instruction
US10671389B2 (en) Vector floating point test data class immediate instruction
US9471311B2 (en) Vector checksum instruction
US9740482B2 (en) Vector generate mask instruction
JP6399522B2 (ja) Vector element rotate and insert under mask命令を処理するためのコンピュータ・プログラム、コンピュータ・システム及び方法