TWI533207B - 用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法 - Google Patents

用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法 Download PDF

Info

Publication number
TWI533207B
TWI533207B TW102107380A TW102107380A TWI533207B TW I533207 B TWI533207 B TW I533207B TW 102107380 A TW102107380 A TW 102107380A TW 102107380 A TW102107380 A TW 102107380A TW I533207 B TWI533207 B TW I533207B
Authority
TW
Taiwan
Prior art keywords
instruction
field
specifier
continuous
bits
Prior art date
Application number
TW102107380A
Other languages
English (en)
Other versions
TW201403468A (zh
Inventor
麥克K 齊史溫
Original Assignee
萬國商業機器公司
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 萬國商業機器公司 filed Critical 萬國商業機器公司
Publication of TW201403468A publication Critical patent/TW201403468A/zh
Application granted granted Critical
Publication of TWI533207B publication Critical patent/TWI533207B/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/30181Instruction operation extension or modification
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法
本發明之一態樣大體係關於計算環境內之模擬,且詳言之,係關於指令內之說明符的模擬。
模擬在被稱作目標架構之電腦架構上模擬功能。目標架構不同於定義該等功能所針對的被稱作來源架構的電腦架構。舉例而言,可將針對由International Business Machines Corporation(Armonk,New York)提供之z/Architecture撰寫的指令轉譯並表示為諸如以下兩者之不同架構的一或多個指令:亦由International Business Machines Corporation供應之PowerPC,或由International Business Machines Corporation或另一公司供應的另一架構。此等經轉譯指令執行與正進行轉譯之指令相同或類似的功能。
存在包括解譯及轉譯之不同類型之模擬。藉由解譯,讀取表示指令之資料,且當解碼每一指令時,執行該指令。每次執行每一指令時,引用該指令。然而,藉由亦被稱作二進位轉譯或重新編譯的轉譯,將指令序列自一電腦架構之指令集轉譯成另一電腦架構的指令集。
存在包括靜態轉譯及動態轉譯的多種類型之轉譯。在靜態轉譯中,將一架構之指令之程式碼在先前不執行該程式碼之情況下轉換成 在另一架構上執行的程式碼。與此對比,在動態轉譯中,執行並轉譯程式碼之至少一區段,且將結果置放於快取記憶體中以供目標電腦架構之處理器隨後執行。
經由提供一種用於變換一計算環境之指令說明符的電腦程式產品來克服先前技術之缺點並提供優勢。該電腦程式產品包括一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於由該處理電路執行以用於執行一方法之指令,該方法包括:由一處理器自針對一第一電腦架構定義之一第一指令獲得一非連續說明符,該非連續說明符具有一第一部分及一第二部分,其中該獲得包括自該指令之一第一欄位獲得該第一部分及自該指令之一第二欄位獲得該第二部分,該第一欄位與該第二欄位分開;使用該第一部分及該第二部分產生一連續說明符,該產生使用基於該第一指令之運算碼的一或多個規則;及使用該連續說明符來指示待於一第二指令之執行中使用的一資源,該第二指令係針對不同於該第一電腦架構之一第二電腦架構而定義且模擬該第一指令之一功能。
本文中亦描述及主張關於本發明之一或多項態樣之方法及系統。另外,本文中亦描述且可主張關於本發明之一或多項態樣的服務。
經由本發明之技術實現額外特徵及優勢。本發明之其他實施例及態樣在本文中得以詳細描述且被視為所主張之本發明之一部分。
100‧‧‧計算環境
102‧‧‧原生中央處理單元
104‧‧‧記憶體
106‧‧‧輸入/輸出器件及/或介面
108‧‧‧匯流排
110‧‧‧原生暫存器
112‧‧‧模擬器程式碼
200‧‧‧客體指令
202‧‧‧指令提取單元
204‧‧‧指令轉譯常式
206‧‧‧原生指令
210‧‧‧模擬控制常式
288‧‧‧偏移
384‧‧‧偏移
900‧‧‧「向量載入(VL)」指令
902a‧‧‧運算碼欄位
902b‧‧‧運算碼欄位
904‧‧‧向量暫存器欄位
906‧‧‧索引欄位(X2)
908‧‧‧基本欄位(B2)
910‧‧‧位移欄位(D2)
912‧‧‧暫存器擴充位元(RXB)欄位
950‧‧‧「載入向量索引」指令
954‧‧‧VRT欄位
956‧‧‧參考數字
980‧‧‧參考數字
1000‧‧‧暫存器檔案
1002‧‧‧向量暫存器
1004‧‧‧浮點暫存器
1102‧‧‧值
1104‧‧‧值
1200‧‧‧電腦程式產品
1202‧‧‧非暫時性電腦可讀儲存媒體
1204‧‧‧電腦可讀程式碼構件或邏輯
2000‧‧‧技術
3000‧‧‧技術
5000‧‧‧主機電腦系統
5000'‧‧‧主機電腦系統
5001‧‧‧中央處理單元(CPU)
5002‧‧‧電腦記憶體
5003‧‧‧動態位址轉譯(DAT)
5004‧‧‧指令提取單元
5005‧‧‧載入/儲存單元
5006‧‧‧指令解碼單元
5007‧‧‧轉譯後備緩衝器(TLB)
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‧‧‧程式計數器
5062‧‧‧動態位址轉譯(DAT)
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‧‧‧模擬常式
6000‧‧‧技術
7000‧‧‧技術
特別指出本發明之一或多項態樣且在本說明書完結時在申請專利範圍中作為實例清楚地主張本發明之一或多項態樣。自以下結合附圖進行之詳細描述,本發明之前述及一或多項態樣之目標、特徵及優勢係顯而易見的,其中: 圖1描繪併有且使用本發明之一或多項態樣的一計算環境之一實例;圖2描繪根據本發明之一態樣的圖1之記憶體的其他細節;圖3描繪使用解譯及轉譯中之一或多者之模擬處理程序的概述的一實施例;圖4描繪與圖3中提及之解譯區塊相關聯之邏輯的一實例;圖5描繪與圖3中提及之轉譯區塊相關聯之邏輯的一實例;圖6描繪根據本發明之一態樣的使用解譯及轉譯中之一或多者的經修改的模擬處理程序之概述的另一實施例;圖7A描繪根據本發明之一態樣的與圖6中提及之解譯區塊相關聯之邏輯的一實例;圖7B描繪根據本發明之一態樣的將非連續說明符變換成連續說明符之邏輯的一實施例;圖8描繪根據本發明之一態樣的與圖6中提及之轉譯區塊相關聯之邏輯的一實例;圖9A描繪根據本發明之一態樣的將一電腦架構之「向量載入」指令中的非連續說明符變換成另一電腦架構之「載入向量索引」指令中的連續說明符的一實施例;圖9B描繪根據本發明之一態樣的圖9A之變換的另一實例,該變換包括將特定暫存器分配給連續說明符;圖10描繪根據本發明之一態樣的暫存器檔案之一實例;圖11描繪根據本發明之一態樣的在於模擬期間分配至記憶體中將非連續說明符變換成連續說明符的實例;圖12描繪併有本發明之一或多項態樣之電腦程式產品的一實施例;圖13描繪併有且使用本發明之一或多項態樣之主機電腦系統的 一實施例;圖14描繪併有且使用本發明之一或多項態樣之電腦系統的再一實例;圖15描繪併有且使用本發明之一或多項態樣的包含電腦網路之電腦系統的另一實例;圖16描繪併有且使用本發明之一或多項態樣的電腦系統之各種元件的一實施例;圖17A描繪併有且使用本發明之一或多項態樣的圖16之電腦系統之執行單元的一實施例;圖17B描繪併有且使用本發明之一或多項態樣的圖16之電腦系統之分支單元的一實施例;圖17C描繪併有且使用本發明之一或多項態樣的圖16之電腦系統之載入/儲存單元的一實施例;及圖18描繪併有且使用本發明之一或多項態樣的經模擬之主機電腦系統的一實施例。
根據本發明之一態樣,提供一種用於促進包括非連續說明符之指令之模擬的技術。一非連續說明符使用一指令之多個欄位來指定該指令之一資源(諸如,一暫存器)。舉例而言,該指令之多個欄位(例如,兩個欄位)包括一起指明待由該指令使用之一特定暫存器的位元。
在本發明之一特定態樣中,提供一種用於進行以下操作之技術:將在一電腦系統架構(例如,由International Business Machines Corporation供應之z/Architecture)中定義之指令的非連續說明符變換成可由在另一電腦系統架構(例如,由International Business Machines Corporation供應的PowerPC架構)中定義之指令使用的連續說明符。在 該另一電腦系統架構中定義之該等指令模擬針對該一電腦系統架構定義的該等指令。
參看圖1來描述提供模擬之計算環境的一實施例。在一實例中,計算環境100包括(例如)經由(例如)一或多個匯流排108及/或其他連接耦接至彼此的原生中央處理單元102、記憶體104及一或多個輸入/輸出器件及/或介面106。作為實例,計算環境100可包括由International Business Machines Corporation(Armonk,New York)供應之PowerPC處理器、pSeries伺服器或xSeries伺服器;由Hewlett Packard Co.(Palo Alto,California)供應之具有Intel Itanium II處理器的HP Superdome;及/或基於由International Business Machines Corporation、Hewlett Packard、Intel、Oracle或其他公司供應之架構的其他機器。
原生中央處理單元102包括一或多個原生暫存器110,諸如在環境內之處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示在任何特定時間點的環境之狀態的資訊。
此外,原生中央處理單元102執行儲存於記憶體104中之指令及程式碼。在一特定實例中,中央處理單元執行儲存於記憶體104中之模擬器程式碼112。此程式碼使得在一架構中組態之處理環境能夠模擬另一架構。舉例而言,模擬器程式碼112允許基於不同於z/Architecture之架構的機器(諸如,PowerPC處理器、pSeries伺服器、xSeries伺服器、HP Superdome伺服器或其他機器)模擬z/Architecture且執行基於z/Architecture開發之軟體及指令。
參看圖2描述關於模擬器程式碼112之其他細節。客體指令200包含經開發以欲於不同於原生CPU 102之架構的架構中執行之軟體指令(例如,機器指令)。舉例而言,客體指令200可能已經設計以在z/Architecture處理器上執行,但實情為,正在原生CPU 102(其可為(例如)PowerPC處理器或其他類型之處理器)上模擬客體指令200。在 一實例中,模擬器程式碼112包括一指令提取單元202以自記憶體104獲得一或多個客體指令200,及視情況提供用於所獲得之指令的本端緩衝。模擬器程式碼112亦包括一指令轉譯常式204以判定已獲得的客體指令之類型且將客體指令轉譯成一或多個對應原生指令206。此轉譯包括(例如)識別待由客體指令執行之函式(例如,經由運算碼)及選擇原生指令以執行彼函式。
另外,模擬器112包括一模擬控制常式210以使得執行原生指令。模擬控制常式210可使得原生CPU 102執行模擬一或多個先前所獲得之客體指令的原生指令之常式且,在此執行完結時,將控制返回至指令提取常式以模擬下一個客體指令或一群客體指令之獲得。原生指令206之執行可包括將資料自記憶體104載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算(如由轉譯常式判定)。
每一常式(例如)以軟體來實施,該軟體儲存於記憶體中且由原生中央處理單元102來執行。在其他實例中,常式或運算中之一或多者以韌體、硬體、軟體或其某一組合來實施。可使用原生CPU之暫存器110或藉由使用記憶體104中之位置模擬經模擬之處理器的暫存器。在實施例中,客體指令200、原生指令206及模擬器程式碼112可常駐於相同記憶體中或可在不同記憶體器件間分配。
如本文中所使用,韌體包括(例如)處理器之微碼、毫碼及/或巨集碼。韌體包括(例如)在較高階機器碼之實施中使用的硬體層級指令及/或資料結構。在一實施例中,韌體包括(例如)通常作為微碼遞送之專屬碼,該微碼包括受信任軟體或基礎硬體所特有的微碼且控制作業系統對系統硬體之存取。
在一實例中,所獲得的、經轉譯及經執行之客體指令200為本文中所描述之指令中之一或多者。自記憶體提取具有一架構(例如, z/Architecture)之指令,將該指令轉譯及表示為具有另一架構(例如,PowerPC、pSeries、xSeries、Intel等)之一序列原生指令206。接著執行此等原生指令。
參看圖3至圖5來描述關於模擬的其他細節。詳言之,圖3描繪使用解譯及轉譯中之一或多者之模擬處理程序的概述之一實施例;圖4描繪與圖3中提及之解譯相關聯之邏輯的一實施例(技術2000);且圖5描繪與圖3中提及之二進位轉譯相關聯之邏輯的一實施例(技術3000)。在此特定實例中,針對z/Architecture撰寫之指令正被轉譯成PowerPC指令。然而,相同技術適用於以下情形:自z/Architecture至其他目標架構之模擬;自其他來源架構至PowerPC架構之模擬;及/或自其他來源架構至其他目標架構的模擬。
參看圖3,在模擬期間,如參看圖4進一步詳細描述,獲得並解譯被稱作指令X之指令(步驟300)。更新關於經解譯指令之各種統計(步驟302),且接著處理進行至在邏輯中變成指令X的下一指令(步驟304)。作出關於此下一指令是否具有先前轉譯之入口點的判定(詢問306)。若此下一指令不具有先前轉譯之入口點,則作出關於此下一指令是否已被看見N次(例如,15次)的再一判定(詢問308)。亦即,此指令是否已被足夠頻繁地看見以便藉由(例如)執行程式碼之just-in-time(JIT)編譯而使執行最佳化,此情形提供後續使用的入口點。若此指令尚未被看見N次(諸如,15次),則處理繼續步驟300。否則,處理繼續形成指令群組且將指令群組自一架構轉譯成另一架構(步驟310)。參看圖5來描述執行此轉譯之一實例。在形成且轉譯群組之後,執行群組(步驟312),且處理繼續至步驟304。
返回至詢問306,若存在指令之現有經轉譯入口點,則處理繼續在入口點處執行群組(步驟312)。
參看圖4來描述關於解譯指令(技術2000)的其他細節。最初,讀 取在下一程式計數器(PC)位址處之指令(步驟400)。分析此指令,且擷取運算碼、暫存器及立即欄位(步驟402)。接著,執行至模擬對應於所擷取運算碼之行為的程式碼之分支(步驟404)。接著執行經模擬程式碼(步驟406)。
參看圖5描述關於轉譯群組內之指令(技術3000)的其他細節。最初,讀取指令之預定義群組中的指令(步驟500)。在一實例中,可使用多種方式來形成群組。根據一實施例,形成群組以涵蓋沿著最可能路徑之執行之單一路徑。在另一實施例中,形成群組以涵蓋最近先前執行路徑中的一者或當前執行路徑(基於經模擬架構之狀態)。在另一實施例中,假定不選取所有分支。在又一實施例中,多個路徑包括於群組中,諸如自群組開始點開始之所有路徑。在另一實施例中,將直至且包括第一分支之所有指令添加至群組(亦即,群組對應於通常亦被稱作「基本區塊」之程式碼的直線片段)。在每一實施例中,必須作出關於何時及在何處結束群組之決策。在一實施例中,在固定數目個指令之後結束群組。在另一實施例中,在到達一指令之累積機率低於給定臨限值之後結束群組。在一些實施例中,在達到停止條件時,立即停止群組。在實施例之另一集合中,僅在良好定義之「停止點」(例如,定義之指令、特定群組開始對準或其他條件)處停止群組。
此後,分析指令,且自指令擷取運算碼、暫存器及立即欄位(步驟502)。接下來,提供所擷取資訊之內部表示(步驟504)。此內部表示為由處理器(例如,編譯器或轉譯器)使用以使與轉譯指令相關聯之解碼、暫存器分配及/或其他任務最佳化的所擷取資訊之格式。
另外,作出關於在群組中是否存在待轉譯之另一指令的判定(詢問506)。若在群組中存在待轉譯之另一指令,則處理繼續步驟500。否則,處理繼續使內部表示最佳化(步驟508),為指令群組分配一或多個暫存器(步驟510)及產生模擬群組中之指令的程式碼(步驟512)。
雖然針對在一架構中定義之指令至在另一架構中定義之一或多個指令的模擬提供上述解譯及轉譯程序,但在使用非連續說明符之指令的模擬中亦可取得進步。舉例而言,根據本發明之一態樣,提供模擬技術之改良以解決指令之暫存器運算元藉由指令之多個欄位指明的情形。
使用非連續說明符之一類型之指令係根據本發明之態樣提供的向量指令,向量指令係向量設施之部分。在許多向量指令中,暫存器欄位並不包括指明暫存器以供指令使用所需要的所有位元,但實情為,連同該暫存器欄位一起使用另一欄位以指明暫存器。此另一欄位在本文中被稱作RXB欄位。
亦被稱作暫存器擴充位元之RXB欄位為(例如)四位元欄位(位元0至3),該四位元欄位包括用於向量指令之向量暫存器指明之運算元中的每一者的最高有效位元。用於未由指令指定之暫存器指明的位元將被保留且經設定至零。
在一實例中,如下定義RXB位元:
0-用於指令之第一向量暫存器指明的最高有效位元。
1-用於指令之第二向量暫存器指明的最高有效位元(若有的話)。
2-用於指令之第三向量暫存器指明的最高有效位元(若有的話)。
3-用於指令之第四向量暫存器指明的最高有效位元(若有的話)。
由(例如)組譯器取決於暫存器編號將每一位元設定至零或一。舉例而言,對於暫存器0至15,將位元設定至0;對於暫存器16至31,將位元設定至1,等等。
在一實施例中,每一RXB位元為用於包括一或多個向量暫存器之 指令中的特定位置的擴充位元。舉例而言,在一或多個向量指令中,RXB之位元0為位置8至11的擴充位元,其被指派至(例如)V1;RXB之位元1為位置12至15的擴充位元,其被指派至(例如)V2;等等。
在再一實施例中,RXB欄位包括額外位元,且將一個以上位元用作用於每一向量或位置的擴充。
根據本發明之一態樣,提供用於將非連續運算元說明符變換成連續說明符的技術。一旦經變換,便使用連續說明符而無關於非連續說明符。
參看圖6至圖8來描述模擬使用非連續說明符之指令的邏輯之一實施例。詳言之,圖6描繪包括包括非連續說明符之指令的解譯及轉譯中之一或多者的模擬處理程序之概述;圖7A描繪包括非連續說明符之解譯的解譯之一實施例(技術6000);圖7B描繪將非連續說明符變換成連續說明符之一實施例;且圖8描繪包括非連續說明符之轉譯的轉譯之一實施例(技術7000)。
最初參看圖6,提供模擬處理程序之概述。除以下情形外,此概述類似於圖3中提供之概述:步驟600使用參看圖7A描述之技術6000而非在步驟300中提及之技術2000;且步驟610使用參看圖8所描述之技術7000而非在步驟310中提及之技術3000。由於上文參看圖3描述了概述,因此此處不重複該概述;實情為,論述進行至圖7A之邏輯。
參看圖7A,步驟700、702、704及706分別類似於圖4之步驟400、402、404及406,且因此,不再描述該等步驟;然而,描述步驟703及705。藉由步驟703,根據本發明之一態樣,自非連續說明符產生連續說明符(本文中亦被稱作連續索引)。參看圖7B來描述關於自非連續說明符產生連續說明符的其他細節。
參看圖7B,在一實施例中,最初,獲得非連續說明符(步驟750)。此操作包括(例如)自運算碼判定指令具有非連續說明符,及判 定指令之哪些欄位用以指明非連續說明符。舉例而言,運算碼之一部分指定指令之格式,且此格式向處理器指示指令具有至少一非連續說明符,且該部分進一步指定用以指明非連續說明符的欄位。接著讀取此等欄位以獲得彼等欄位中之資料(例如,位元)。舉例而言,在許多向量指令中,指令之位置8至11(例如,V1)指定用以指明向量暫存器之複數個位元(例如,4個位元),且指令之RXB欄位包括用以指明特定向量暫存器之一或多個額外位元。在此步驟中獲得此等位元。
在獲得非連續說明符(例如,來自暫存器欄位V1之位元及來自RXB的位元)之後,使用一或多個規則以組合非連續說明符之多個部分以建立連續說明符(步驟752)。該一或多個規則取決於(例如)如由指令之運算碼指定的指令之格式。在運算碼指示RXB欄位之特定實例中,一或多個規則包括將與暫存器運算元相關聯之RXB位元用作在暫存器欄位中指定之位元的最高有效位元。舉例而言,在一實施例中,RXB欄位具有4個位元,且每一位元對應於一暫存器運算元。舉例而言,位元0對應於第一暫存器運算元,位元1對應於第二暫存器運算元,等等。因此,擷取對應於暫存器運算元之位元且使用該位元以形成連續說明符。舉例而言,若在第一運算元暫存器欄位中指定0010二進位且在RXB欄位中指定1000二進位,則將與第一運算元相關聯之位元的值(在此實例中,位元0)串接至0010。因此,在此實例中,連續說明符係10010(暫存器18)。
接著使用所產生之連續說明符,如同該連續說明符係提供於指令中的說明符一樣(步驟754)。
此後,返回至圖7A,執行至模擬對應於運算碼之行為的程式碼之分支(步驟704)。另外,使用連續索引以管理均勻化架構資源而無關於非連續說明符(步驟705)。亦即,使用連續暫存器說明符,如同不存在非連續說明符一樣。每一連續說明符指示待由模擬程式碼使用 的暫存器。此後,執行模擬程式碼(步驟706)。
參看圖8來描述關於包括將非連續說明符變換成連續說明符之轉譯(被稱作技術7000)的其他細節。在一實施例中,步驟800、802、804、806、808、810及812分別類似於圖5之步驟500、502、504、506、508、510及512,且因此,此處不參看圖8描述該等步驟。然而,根據本發明之一態樣,執行其他步驟以便將來源架構之指令的非連續說明符變換成目標架構之指令的連續說明符。目標架構之指令模擬來源架構之指令的功能。
舉例而言,在步驟803中,自非連續說明符產生連續說明符。如上文參看圖7B所描述,此操作包括自待模擬之指令獲得非連續說明符,且使用一或多個規則來自非連續說明符建立連續說明符。在一實施例中,具有非連續說明符之指令的運算碼至少隱含地藉由其格式指示:指令包括非連續說明符。舉例而言,指令之格式藉由運算碼之一或多個位元(例如,前兩個位元)來指示,且基於格式,處理器(例如,處理器之編譯器、轉譯器、模擬器)理解:此指令包括非連續說明符,其中諸如暫存器之資源之說明符的部分包括於指令之一欄位中,且說明符之一或多個其他部分位於指令的一或多個其他欄位中。
作為實例,運算碼亦將向處理器提供用以自非連續說明符產生連續說明符之一或多個規則的指示。舉例而言,運算碼可指示:特定指令係向量暫存器指令,且因此,具有RXB欄位。因此,處理器存取資訊(例如,儲存於記憶體或外部儲存器中的規則),對於具有RXB欄位之指令,該資訊指示:RXB欄位提供其對應暫存器欄位的最高有效位元。規則指定(例如):為了產生連續欄位,組合暫存器欄位之位元與相關聯於特定暫存器運算元之RXB欄位的一或多個位元。
在產生連續說明符之後,使用連續說明符而無關於非連續說明符。舉例而言,在步驟808中,使用連續說明符來使程式碼最佳化而 無關於非連續說明符。類似地,使用連續說明符來分配一或多個暫存器且無關於非連續說明符(步驟810)。再者,在步驟812中,產生經模擬之程式碼(無關於非連續說明符且使用在步驟810中執行之分配)。亦即,在此等步驟中,不存在自非連續說明符產生連續說明符的指示。忽略非連續說明符。
參看圖9A、圖9B及圖11中之實例來描述關於將非連續說明符轉譯成連續說明符的其他細節。最初參看圖9A,描繪「向量載入(VL)」指令900。在一實例中,「向量載入」指令包括:運算碼欄位902a(例如,位元0至7)、902b(例如,位元40至47),其指示「向量載入」操作;向量暫存器欄位904(例如,位元8至11),其用以指明向量暫存器(V1);索引欄位(X2)906(例如,位元12至15);基本欄位(B2)908(例如,位元16至19);位移(displacement)欄位(D2)910(例如,位元20至31);及RXB欄位912(例如,位元36至39)。在一實例中,欄位904至912中之每一者為分開的且獨立於運算碼欄位。另外,在一實施例中,欄位904至912為分開的且獨立於彼此;然而,在其他實施例中,可組合一個以上欄位。下文描述關於此等欄位之使用的其他資訊。
在一實例中,所選定位元(例如,藉由運算碼欄位902a指明之運算碼的前兩個位元)指定指令之長度及格式。在此特定實例中,長度為三個半字組,且格式為藉由擴充之運算碼欄位進行的向量暫存器及索引儲存運算。向量(V1)欄位以及由RXB指定的其對應擴充位元指明向量暫存器(亦即,非連續說明符)。詳言之,對於向量暫存器,使用(例如)暫存器欄位之四-位元欄位(其中添加其暫存器擴充位元(RXB)作為最高有效位元)來指定含有運算元之暫存器。舉例而言,若V1中之四位元欄位為0010二進位且此運算元之擴充位元為1二進位,則5-位元欄位為10010二進位,從而指示暫存器編號18(以十進位計)。
與指令之欄位相關聯之下標編號表示欄位適用之運算元。舉例而言,與V1相關聯之下標編號1表示第一運算元,等等。此情形用以判定將RXB欄位之哪一位元與暫存器欄位組合。暫存器運算元之長度為一個暫存器,其為(例如)128個位元組。在一實例中,在向量暫存器及索引儲存運算指令中,將藉由X2及B2欄位指明之通用暫存器的內容添加至D2欄位之內容以形成第二運算元位址。在一實例中,將「向量載入」指令之位移D2作為12-位元不帶正負號整數對待。
在此實例中,由於V1為第一運算元,因此RXB之最左側位置(例如,位元0)與此運算元相關聯。因此,如本文中所描述,將位於最左側位置之值與V1暫存器欄位中之值組合以產生連續說明符。
根據本發明之一態樣,將在(例如)z/Architecture中定義之「向量載入」指令900模擬為在(例如)PowerPC架構中定義之「載入向量索引」指令950。儘管在此實例中,z/Architecture為來源架構且PowerPC為目標架構,但此情形僅為一實例。許多其他架構可用於來源架構及目標架構中的一者或兩者。
每一架構與其可使用之特定暫存器相關聯。舉例而言,在z/Architecture中,存在32個向量暫存器,且其他類型之暫存器可映射至向量暫存器之一象限。作為實例,如圖10中所展示,若存在包括32個向量暫存器1002之暫存器檔案1000且每一暫存器之長度為128個位元,則長度為64個位元之16個浮點暫存器1004可覆疊該等向量暫存器。因此,作為實例,當修改浮點暫存器2時,接著亦修改向量暫存器2。用於其他類型之暫存器的其他映射亦為可能的。
類似地,PowerPC或其他目標架構具有指派給該架構之暫存器集合。此暫存器集合可與分配給來源架構之暫存器集合不同或相同。目標暫存器可具有可用於特定類型之指令的較多或較少個暫存器。舉例而言,在圖9A中所描繪之實例中,「向量載入」指令及「載入向量索 引」指令具有可用於其的32個向量暫存器。此外,其他實例為可能的。
如由運算碼指示,「向量載入」指令包括非連續說明符,在此實例中,在V1及RXB欄位中表示該非連續說明符。組合此等非連續欄位以建立「載入向量索引」指令950中的連續索引。在指令950之VRT欄位954中指示此連續說明符。在此特定實例中,如程式碼VL vl8,0(0,gr5)中所展示,正指定之向量暫存器為暫存器18。在指令中藉由非連續說明符指定此暫存器,藉由V1欄位及RXB欄位來提供該非連續說明符。在此實例中,V1欄位包括值2(0010二進位),且RXB欄位包括值8(1000二進位)。基於預定義規則,由於V1為第一運算元,因此將1000之最左側位元(1)與V1欄位(0010)中之位元串接以產生連續說明符10010,該連續說明符為值18(以十進位計)。
如參考數字956處所展示,將18之表示置放於「載入向量索引」指令的VRT欄位中,該VRT欄位對應於「向量載入」指令之暫存器欄位(V1)。為了達成完整性,指令950之RA及RB欄位分別對應於指令900的X2及B2。指令900之D2欄位在指令950中無對應欄位;且指令900之運算碼欄位對應於指令950的運算碼欄位。
在圖9B中描繪再一實例。在此實例中,如同描繪於圖9A中之實例一樣,正將指令900之非連續說明符(V1,RXB)變換成指令950的連續說明符(VRT)。然而,在此實例中,經分配用於指令950之暫存器並不具有與經變換之連續說明符相同之編號;實情為,將連續說明符映射至不同暫存器。舉例而言,在圖9A中之實例中,非連續說明符提及暫存器18,如同連續說明符一樣。亦即,存在一對一映射。然而,在圖9B中,將18之非連續說明符變換成18之連續說明符,但接著,將連續說明符之18映射至諸如暫存器7之不同暫存器(參見參考數字980)。亦即,在此特定實例中,將來源架構中之暫存器18映射至目標 架構中之暫存器7。此映射為預定義的,且對於處理器而言為可存取的。
在圖11中描繪又一實例。在此實例中,不是於模擬期間分配給暫存器(如圖9A及圖9B中一般),而是分配係至記憶體。在此實例中,指令VLR用以將一向量暫存器VR 18之內容移動至另一向量暫存器VR 24。然而,在此實例中,假定暫存器檔案並不大至足以包括此等向量暫存器,因此改為使用記憶體。亦即,存在記憶體之一連續部分,其將複數個向量儲存為陣列。陣列以位址rvbase開始,在該位址rvbase處儲存第一暫存器(例如,暫存器0);且接著,在距rvbase達一偏移(offset)(例如,16個位元組)處儲存下一暫存器;且在距第二暫存器該偏移處儲存第三暫存器,等等。因此,在此實例中,暫存器18在距rvbase達一偏移288處,且暫存器24在距rvbase達一偏移384處。
在此實例中,存在兩個非連續說明符(V1,RXB;及V2,RXB)。因此,產生兩個連續說明符。舉例而言,由於V1為第一運算元,因此藉由V1中之位元與RXB之位元0的串接來產生第一連續說明符。由於V1包括二進位之1000(以十進位計之8)且RXB包括二進位之1100(以十進位計之12),因此藉由串接1(來自RXB之位元0)與1000(來自V1)從而提供11000(以十進位計之24)來形成第一連續說明符。類似地,藉由串接0010(V2之以十進位計的2)與1(來自RXB之位元1)從而提供10010(以十進位計之18)來產生第二連續說明符。由於此等暫存器係在記憶體內,因此向量暫存器24在距rvbase達一偏移384處,且向量暫存器18在距rvbase達一偏移288處。此等值分別展示於圖11中之1102、1104處。
圖11右側之偽碼及左側之指令描述將18處之向量偏移(該向量偏移對應於288處之位元組偏移)處的對應於向量暫存器的連續數目個位元組移動至24處之向量偏移(該向量偏移對應於384處的位元組偏 移)。詳言之,「載入立即(LI)」將值288載入至rtempl中,且接著在藉由rvbase加上rtempl中之偏移提供的位址處執行「向量載入」,且將該值儲存於臨時向量暫存器vtemp2中。接著,下一「載入立即」將384載入至rtempl中,且在對應於位址加上向量暫存器24中之偏移(例如,偏移288)的位置處執行向外至記憶體之儲存返回。
儘管上文描述了各種實例,但許多其他實例及變化為可能的。關於向量指令及RXB欄位之使用的額外資訊描述於以下與本發明共同申請之專利申請案中:Jonathan D.Bradbury等人之題為「Instruction to Load Data Up to A Specified Memory Boundary Indicated by the Instruction」的美國第___號(IBM檔案號碼POU920120030US1),該專利申請案在此以其全文引用之方式併入本文中。
另外,本文中提及各種架構。z/Architecture之一實施例描述於題為「z/Architecture Principles of Operation」之IBM®公開案(IBM®公開案第SA22-7832-08號,第九版,2010年8月)中,該案在此以其全文引用的方式併入本文中。IBM®及Z/ARCHITECTURE®為International Business Machines Corporation(Armonk,New York,USA)之註冊商標。本文中所使用之其他名稱可為International Business Machines Corporation或其他公司之註冊商標、商標或產品名稱。另外,Power Architecture之一實施例描述於「Power ISATM第2.06版修訂B」(International Business Machines Corporation,2010年7月23日)中,該案在此以其全文引用之方式併入本文中。POWER ARCHITECTURE®為International Business Machines Corporation之註冊商標。再者,Intel架構之一實施例描述於「Intel® 64 and IA-32 Architectures Developer's Manual:第2B卷,Instructions Set Reference,A-L」(序號253666-041US,2011年12月)及「Intel® 64 and IA-32 Architectures Developer's Manual:第2B卷,Instructions Set Reference,M-Z」(序號 253667-041US,2011年12月)中,該等文件中之每一者在此以其全文引用之方式併入本文中。Intel®係Intel Corporation(Santa Clara,California)的註冊商標。
本文中詳細描述之技術為一種用於將針對一系統架構定義之指令的非連續說明符變換成針對另一系統架構定義之指令之連續說明符的技術。先前架構模擬尚未成功解決在固定或可變寬度指令集中具有非連續說明符且特定言之非連續暫存器說明符之系統的模擬。然而,根據本發明之一態樣,提供一種擴充先前模擬器以處置非連續說明符的技術。該技術包括:(例如)讀取非連續說明符,自非連續說明符產生連續索引,及使用連續索引來存取同質資源或表示同質資源。
在再一實施例中,根據JIT實施,使用連續索引以執行分配決策,從而視情況藉由非連續/非同質資源來表示藉由非連續說明符存取的資源,但不反映藉由非連續說明符邊界進行之分割,而是反映藉由最佳化決策進行的分割。亦即,在一實施例中,針對一架構定義之指令具有用於至少一資源之至少一非連續說明符,且將彼至少一非連續說明符變換成至少一連續說明符。使用彼至少一連續說明符以選擇另一架構之指令的至少一資源以供使用。然而,另一架構之指令使用非連續說明符。因此,接著將至少一所選定資源之至少一連續說明符變換成至少一非連續說明符以供第二架構之指令使用。在一實施例中,此操作藉由模擬器來執行。
在一實施例中,提供一種模擬器,其用於模擬第一電腦架構指令集在針對第二電腦架構設計之處理器上的指令執行。該模擬器包括:(例如)藉由模擬程式提取應用程式之指令;解譯指令之運算碼以便選擇用於模擬指令之模擬模組;自運算碼判定指令使用非連續暫存器欄位;組合指令之非連續暫存器欄位以形成經組合暫存器欄位;及藉由模擬模組之指令使用經組合暫存器欄位以便模擬指令。
另外,在一實施例中,暫存器空間包括子區段,且第一電腦架構指令集包括:第一指令,其具有用於僅存取子區段之暫存器欄位;及第二指令,其具有用於存取所有暫存器空間之非連續暫存器欄位。
在一實施例中,RXB欄位對於使用RXB欄位之所有指令而言處於相同位置。作為實例,RXB位元係位元有效的在於:RXB欄位之位元36用以擴充指令之位元8至11;RXB之位元37用以擴充位元12至15;RXB之位元38用以擴充位元16至19;且RXB之位元39用以擴充位元32至35。另外,使用RXB之位元作為擴充位元的決策係運算碼相依的(例如,R1對V1)。此外,非連續說明符可使用不同於RXB欄位之欄位。
本文中,除非另有明確註釋或由上下文註釋,否則可互換地使用記憶體、主記憶體、儲存器與主儲存器。
作為下文進一步描述的此實施方式之部分提供關於向量設施之額外細節(包括指令之實例)。
如熟習此項技術者將瞭解,本發明之一或多項態樣可體現為系統、方法或電腦程式產品。因此,本發明之一或多項態樣可呈完全硬體實施例、完全軟體實施例(包括韌體、常駐軟體、微碼等)或組合軟體與硬體態樣之實施例的形式,該等實施例在本文中大體上皆可被稱作「電路」、「模組」或「系統」。此外,本發明之一或多項態樣可呈體現於一或多個電腦可讀媒體(其具有體現於其上之電腦可讀程式碼)中的電腦程式產品之形式。
可利用一或多個電腦可讀媒體之任何組合。電腦可讀媒體可為電腦可讀儲存媒體。舉例而言,電腦可讀儲存媒體可為(但不限於)電子、磁性、光學、電磁、紅外線或半導體系統、裝置或器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例(非詳盡清單)包括以下各者:具有一或多個電線之電連接、攜帶型電腦磁片、硬碟、 隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、光纖、攜帶型光碟-唯讀記憶體(CD-ROM)、光學儲存器件、磁性儲存器件或前述各者之任何合適組合。在此文件之情況下,電腦可讀儲存媒體可為可含有或儲存供指令執行系統、裝置或器件使用或結合指令執行系統、裝置或器件而使用之程式的任何有形媒體。
現參看圖12,在一實例中,電腦程式產品1200包括(例如)一或多個非暫時性電腦可讀儲存媒體1202以在其上儲存電腦可讀程式碼構件或邏輯1204,以提供及促進本發明之一或多項態樣。
可使用適當媒體(包括(但不限於)無線、有線、光纖纜線、RF等或前述各者之任何合適組合)傳輸體現於電腦可讀媒體上之程式碼。
可以一或多個程式設計語言之任何組合來撰寫用於進行本發明之一或多項態樣之操作的電腦程式碼,該一或多個程式設計語言包括諸如Java、Smalltalk、C++或其類似者之物件導向式程式設計語言,及諸如「C」程式設計語言、組譯器或類似程式設計語言之習知程序性程式設計語言。程式碼可完全在使用者之電腦上執行、部分地在使用者之電腦上執行、作為一獨立套裝軟體而執行、部分地在使用者之電腦上且部分地在一遠端電腦上執行,或完全在遠端電腦或伺服器上執行。在後者情形下,遠端電腦可經由任一類型之網路連接至使用者之電腦,該任一類型之網路包括區域網路(LAN)或廣域網路(WAN),或可進行至外部電腦之連接(例如,使用網際網路服務提供者經由網際網路)。
本文中參考根據本發明之實施例之方法、裝置(系統)及電腦程式產品的流程圖說明及/或方塊圖描述本發明之一或多項態樣。應理解,可由電腦程式指令來實施流程圖說明及/或方塊圖之每一區塊及該等流程圖說明及/或方塊圖中之區塊的組合。可將此等電腦程式指 令提供至通用電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生一機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令產生用於實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作之構件。
此等電腦程式指令亦可儲存於一電腦可讀媒體中,其可指導電腦、其他可程式化資料處理裝置或其他器件以特定方式起作用,使得儲存於該電腦可讀媒體中之指令產生一製造物件,其包括實施該或該等流程圖及/或方塊圖方塊中所指定之功能/動作之指令。
亦可將該等電腦程式指令載入至電腦、其他可程式化資料處理裝置或其他器件上以使得在該電腦、其他可程式化裝置或其他器件上執行一系列操作步驟以產生一電腦實施之處理程序,使得在該電腦或其他可程式化裝置上執行之指令提供用於實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作之處理程序。
該等圖中之流程圖及方塊圖說明根據本發明之一或多項態樣之各種實施例的系統、方法及電腦程式產品之可能實施之架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示一模組、區段或程式碼之部分,其包含用於實施指定邏輯功能之一或多個可執行指令。亦應注意,在一些替代實施中,區塊中所註釋的功能可能不以諸圖中所註釋之次序發生。舉例而言,取決於所涉及之功能性,實際上可實質上同時執行連續展示之兩個區塊,或有時可以相反次序執行該等區塊。亦應注意,方塊圖及/或流程圖說明之每一區塊及方塊圖及/或流程圖說明中之區塊的組合可由執行指定功能或動作之基於專用硬體之系統或專用硬體與電腦指令之組合來實施。
除上述內容之外,本發明之一或多項態樣亦可由供應客戶環境之管理的服務提供者來提供、供應、部署、管理、服務等。舉例而言,服務提供者可為一或多個客戶產生、維持、支援等執行本發明之 一或多項態樣的電腦程式碼及/或電腦基礎結構。作為回報,作為實例,服務提供者可在訂用及/或收費協議下自客戶收取付款。或者或另外,服務提供者可自廣告內容銷售至一或多個第三方而收取付款。
在本發明之一態樣中,可部署用於執行本發明之一或多項態樣的應用程式。作為一實例,應用程式之部署包含提供可操作以執行本發明之一或多項態樣的電腦基礎結構。
作為本發明之再一態樣,可部署一計算基礎結構,其包含將電腦可讀程式碼整合至計算系統內,其中與該計算系統組合之程式碼能夠執行本發明之一或多項態樣。
作為本發明之又一態樣,可提供用於整合計算基礎結構之處理程序,其包含將電腦可讀程式碼整合至電腦系統中。電腦系統包含一電腦可讀媒體,其中電腦媒體包含本發明之一或多項態樣。與該電腦系統組合之程式碼能夠執行本發明之一或多項態樣。
儘管上文描述了各種實施例,但此等實施例僅為實例。舉例而言,其他架構之計算環境可併有及使用本發明之一或多項態樣。另外,可使用其他大小之向量或其他暫存器,且在不脫離本發明之精神的情況下,可作出對指令之改變。另外,可在處理中使用其他指令。另外,可在其他內容脈絡中使用關於將非連續說明符變換成連續說明符的本發明之一或多項態樣。另外,該等說明符可用於不同於暫存器之資源。其他改變亦係可能的。
另外,其他類型之計算環境可受益於本發明之一或多項態樣。作為一實例,適合於儲存及/或執行程式碼之資料處理系統為可使用的,其包括直接或經由系統匯流排間接耦接至記憶體元件之至少兩個處理器。該等記憶體元件包括(例如)在程式碼之實際執行期間使用之本端記憶體、大容量儲存器及快取記憶體,快取記憶體提供至少一些程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式 碼的次數。
輸入/輸出或I/O器件(包括(但不限於)鍵盤、顯示器、指標器件、DASD、磁帶、CD、DVD、隨身碟及其他記憶體媒體等)可直接或經由介入之I/O控制器而耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠經由介入之私有或公用網路而變得耦接至其他資料處理系統或遠端印表機或儲存器件。數據機、電纜數據機及乙太網路卡僅為可用類型之網路配接器中的少數幾種。
參看圖13,描繪實施本發明之一或多項態樣的主機電腦系統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處理器實體相關聯。藉由程式大體上不可觀測到相異儲存媒體之實體構造及用途之效應(除了對效能之效應外)。
可維持針對指令及針對資料運算元的單獨的快取記憶體。將快取記憶體內之資訊以相連位元組維持於被稱為快取區塊或快取行(或簡稱為行)之整體邊界上。一模型可提供「擷取快取記憶體屬性(EXTRACT CACHE ATTRIBUTE)」指令,其傳回以位元組計的快取行之大小。一模型亦可提供「預先提取資料(PREFETCH DATA)」及「預先提取資料相對長度(PREFETCH DATA RELATIVE LONG)」指令,其實現儲存器至資料或指令快取記憶體中之預先提取或資料自快取記憶體之釋放。
將儲存器視為長的水平位元字串。對於多數操作,對儲存器之存取以自左至右序列進行。將該位元字串再分成八個位元之單元。八-位元單元被稱為位元組,其為所有資訊格式之基本建置區塊。儲存器中之每一位元組位置藉由一唯一非負整數來識別,該唯一非負整數為彼位元組位置之位址或簡稱為位元組位址。鄰近位元組位置具有 連續位址,其以左側的0開始且以自左至右序列進行。位址為不帶正負號之二進位整數,且為24個、31個或64個位元。
在儲存器與CPU或通道子系統之間一次一位元組或一位元組群組地傳輸資訊。除非另有指定,否則,在(例如)z/Architecture中,儲存器中之一位元組群組由該群組之最左側位元組來定址。藉由待執行之操作隱含或明確指定該群組中的位元組之數目。當在CPU操作中使用時,一位元組群組被稱為一欄位。在每一位元組群組內,在(例如)z/Architecture中,以自左至右序列對位元編號。在z/Architecture中,最左側位元有時被稱作「高階」位元,且最右側位元有時被稱作「低階」位元。然而,位元編號並非儲存位址。可僅定址位元組。為了對儲存器中的位元組之個別位元操作,存取整個位元組。將位元組中之位元自左至右編號為0至7(在(例如)z/Architecture中)。對於24-位元位址,可將位址中之位元編號為8至31或40至63,或對於31-位元位址,可將位址中之位元編號為1至31或33至63;對於64-位元位址,可將位址中之位元編號為0至63。在多個位元組之任一其他固定長度之格式內,自0開始對構成該格式之位元連續地編號。為了錯誤偵測之目的,且較佳地為了校正之目的,可將一或多個檢查位元與每一位元組或與一位元組群組一起傳輸。由機器自動地產生此等檢查位元,且不可直接由程式來控制此等檢查位元。以位元組之數目來表達儲存容量。當藉由指令之操作碼隱含儲存運算元欄位之長度時,認為該欄位具有固定長度,其可為一個、兩個、四個、八個或十六個位元組。對於一些指令,可隱含更大欄位。當並非隱含而是明確敍述儲存運算元欄位之長度時,認為該欄位具有可變長度。可變長度運算元之長度可以一個位元組之增量變化(或藉由一些指令,以兩個位元組之倍數或其他倍數之增量變化)。當將資訊置放於儲存器中時,替換包括於指明之欄位中的僅彼等位元組位置之內容,即使至儲存器之實體路徑之 寬度可能大於正儲存的欄位之長度亦如此。
某些資訊單元將在儲存器中之整體邊界上。對於一資訊單元,當其儲存位址為該單元之長度(以位元組計)的倍數時,將一邊界稱為整體的。對整體邊界上的2個、4個、8個及16個位元組之欄位給予特殊名稱。半字組為在兩-位元組邊界上的兩個連續位元組之群組,且為指令之基本建置區塊。字組為四-位元組邊界上的四個連續位元組之群組。雙字組為八-位元組邊界上的八個連續位元組之群組。四倍字組為16-位元組邊界上的16個連續位元組之群組。當儲存器位址指明半字組、字組、雙字組及四倍字組時,位址之二進位表示分別含有一個、兩個、三個或四個最右側零位元。指令將在兩-位元組整體邊界上。多數指令之儲存運算元不具有邊界對準要求。
在實施針對指令及資料運算元的單獨的快取記憶體之器件上,若程式儲存至快取行中(隨後自該快取行提取指令),則可經歷顯著延遲,而不管儲存器是否更改隨後提取之指令。
在一實施例中,可藉由軟體(有時指代經授權之內部碼、韌體、微碼、毫碼、微微碼(pico-code)及其類似者,前述各者中之任一者將與本發明之一或多項態樣一致)來實踐本發明。參看圖13,體現本發明之一或多項態樣的軟體程式碼可由主機系統5000之處理器5001自長期儲存媒體器件5011(諸如,CD-ROM磁碟機、磁帶機或硬碟機)存取。軟體程式碼可體現於多種已知媒體中之任一者上,以用於供資料處理系統(諸如,磁片、硬碟機或CD-ROM)使用。程式碼可散佈於此等媒體上,或可散佈至使用者,經由網路5010自一電腦系統之電腦記憶體5002或儲存器散佈至其他電腦系統,以供此等其他系統之使用者使用。
軟體程式碼包括一作業系統,其控制各種電腦組件及一或多個應用程式之功能及互動。通常將程式碼自儲存媒體器件5011分頁至相 對較高速電腦儲存器5002,在該相對較高速電腦儲存器5002處,程式碼可用於由處理器5001處理。用於在記憶體中、在實體媒體上體現軟體程式碼及/或經由網路散佈軟體程式碼之技術及方法係熟知的,且在本文中將不進一步加以論述。當在有形媒體(包括(但不限於)電子記憶體模組(RAM)、快閃記憶體、光碟(CD)、DVD、磁帶及其類似者)上建立及儲存程式碼時,程式碼常常被稱作「電腦程式產品」。電腦程式產品媒體通常可由較佳電腦系統中之處理電路來讀取,以用於由處理電路執行。
圖14說明可實踐本發明之一或多項態樣的一代表性工作站或伺服器硬體系統。圖14之系統5020包含一代表性基礎電腦系統5021(諸如,個人電腦、工作站或伺服器),包括選用周邊器件。基礎電腦系統5021包括一或多個處理器5026,及一匯流排,該匯流排用以根據已知技術連接處理器5026與系統5021之其他組件及實現處理器5026與系統5021之其他組件之間的通信。匯流排將處理器5026連接至記憶體5025及長期儲存器5027,長期儲存器5027可包括(例如)硬碟機(包括(例如)磁性媒體、CD、DVD及快閃記憶體中之任一者)或磁帶機。系統5021可能亦包括一使用者介面配接器,使用者介面配接器經由匯流排將微處理器5026連接至一或多個介面器件(諸如,鍵盤5024、滑鼠5023、印表機/掃描器5030及/或其他介面器件),該等介面器件可為諸如觸敏式螢幕、數位化鍵入板(entry pad)等之任何使用者介面器件。匯流排亦經由顯示器配接器將諸如LCD螢幕或監視器之顯示器件5022連接至微處理器5026。
系統5021可借助於能夠與網路5029通信(5028)之網路配接器與其他電腦或電腦網路通信。實例網路配接器為通信頻道、符記環、乙太網路或數據機。或者,系統5021可使用諸如蜂巢式數位封包資料(CDPD)卡之無線介面通信。系統5021可與區域網路(LAN)或廣域網路 (WAN)中之此等其他電腦相關聯,或系統5021可為具有另一電腦之用戶端/伺服器配置中的用戶端等。所有此等組態以及適當通信硬體及軟體為此項技術中已知的。
圖15說明可實踐本發明之一或多項態樣的一資料處理網路5040。資料處理網路5040可包括複數個個別網路(諸如,無線網路及有線網路),該等網路中之每一者可包括複數個個別工作站5041、5042、5043、5044。另外,如熟習此項技術者將瞭解,可包括一或多個LAN,其中LAN可包含耦接至主機處理器之複數個智慧型工作站。
仍參看圖15,網路亦可包括大型電腦或伺服器,諸如,閘道器電腦(用戶端伺服器5046)或應用程式伺服器(遠端伺服器5048,其可存取資料儲存庫且亦可自工作站5045直接存取)。閘道器電腦5046充當至每一個別網路之入口點。當將一網路連接協定連接至另一網路連接協定時,需要閘道器。閘道器5046可較佳借助於通信鏈路耦接至另一網路(例如,網際網路5047)。亦可使用通信鏈路將閘道器5046直接耦接至一或多個工作站5041、5042、5043、5044。可利用可購自International Business Machines Corporation之IBM eServerTM System z伺服器來實施閘道器電腦。
同時參看圖14及圖15,可體現本發明之一或多項態樣的軟體程式碼可由系統5020之處理器5026自長期儲存媒體5027(諸如,CD-ROM磁碟機或硬碟機)存取。軟體程式碼可體現於多種已知媒體中之任一者上,以用於供資料處理系統(諸如,磁片、硬碟機或CD-ROM)使用。程式碼可散佈於此等媒體上,或可散佈至使用者5050、5051,經由網路自一電腦系統之記憶體或儲存器散佈至其他電腦系統,以供此等其他系統之使用者使用。
或者,程式碼可體現於記憶體5025中,且由處理器5026使用處理器匯流排來存取。此程式碼包括一作業系統,其控制各種電腦組件 及一或多個應用程式5032之功能及互動。通常將程式碼自儲存媒體5027分頁至高速記憶體5025,在高速記憶體5025處,程式碼可用於由處理器5026處理。用於在記憶體中、在實體媒體上體現軟體程式碼及/或經由網路散佈軟體程式碼之技術及方法係熟知的且在本文中將不進一步加以論述。當在有形媒體(包括(但不限於)電子記憶體模組(RAM)、快閃記憶體、光碟(CD)、DVD、磁帶及其類似者)上建立及儲存程式碼時,程式碼常常被稱作「電腦程式產品」。電腦程式產品媒體通常可由較佳電腦系統中之處理電路來讀取,以用於由處理電路執行。
最易於可用於處理器之快取記憶體(通常比處理器之其他快取記憶體快且小)為最低(L1或第一層級)快取記憶體,且主儲存器(主記憶體)為最高層級快取記憶體(若存在3個層級,則為L3)。常常將最低層級快取記憶體劃分成保持待執行之機器指令之指令快取記憶體(I-快取記憶體)及保持資料運算元之資料快取記憶體(D-快取記憶體)。
參看圖16,針對處理器5026描繪一例示性處理器實施例。通常,使用快取記憶體5053之一或多個層級緩衝記憶體區塊以便改良處理器效能。快取記憶體5053為保持有可能使用的記憶體資料之快取行的高速緩衝器。典型的快取行為64個、128個或256個位元組之記憶體資料。除用於對資料進行快取外,單獨的快取記憶體亦常常用於對指令進行快取。常常藉由此項技術中熟知之各種「窺探」演算法來提供快取一致性(記憶體及快取記憶體中的行之複製之同步)。處理器系統之主記憶體儲存器5025常常被稱作快取記憶體。在具有4個層級之快取記憶體5053的處理器系統中,主儲存器5025有時被稱作第5層級(L5)快取記憶體,此係因為其通常較快且僅保持可用於電腦系統的非揮發性儲存器(DASD、磁帶等)之一部分。主儲存器5025對由作業系統頁入及頁出主儲存器5025之資料頁「進行快取」。
程式計數器(指令計數器)5061追蹤待執行的當前指令之位址。z/Architecture處理器中之程式計數器為64個位元,且可經截斷至31或24個位元以支援先前定址限制。程式計數器通常體現於電腦之程式狀態字組(PSW)中,使得程式計數器在內容脈絡切換期間持續。因此,具有程式計數器值的進行中程式可由(例如)作業系統來中斷(自程式環境至作業系統環境之內容脈絡切換)。在程式並非作用中的時,程式之PSW維持程式計數器值,且在作業系統正執行時,使用作業系統之程式計數器(在PSW中)。通常,以等於當前指令之位元組之數目的量來使程式計數器遞增。精簡指令集計算(RISC)指令之長度通常為固定的,而複雜指令集計算(CISC)指令之長度通常為可變的。IBM z/Architecture之指令為長度為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。參看圖17A,執行單元5057可借助於介接邏輯5071與經建構之通用暫存器5059、解碼/分派單元5056、載入儲存單元5060及其他處理器單元5065通信。執行單元5057可使用若干個暫存器電路5067、5068、5069以保持算術邏輯單元(ALU)5066將進行運算的資訊。ALU執行算術運算(諸如,加法、減法、乘法及除法)以及邏輯函數(諸如,「及」(and)、「或」(or)及「互斥或」(XOR)、旋轉及移位)。較佳地,ALU支援相依於設計之專業化運算。其他電路可提供其他經建構之設施5072,包括(例如)條件碼及恢復支援邏輯。通常,將ALU運算之結果保持於輸出暫存器電路5070中,輸出暫存器電路5070可將結果轉遞至多種其他處理功能。存在處理器單元之許多配置,本發明描述僅意欲提供對一實施例之代表性理解。
「加法」指令(例如)將在具有算術及邏輯功能性之執行單元5057中執行,而浮點指令(例如)將在具有專業化之浮點能力之浮點執行中執行。較佳地,執行單元藉由對藉由指令識別之運算元執行運算碼定義之功能而對運算元進行運算。舉例而言,「加法」指令可由執行單元5057對在藉由指令之暫存器欄位識別之兩個暫存器5059中發現的運算元執行。
執行單元5057對兩個運算元執行算術加法,且將結果儲存於第三運算元中,其中第三運算元可為第三暫存器或兩個源暫存器中之一 者。執行單元較佳利用算術邏輯單元(ALU)5066,算術邏輯單元(ALU)5066能夠執行多種邏輯函數(諸如,移位、旋轉、「及」(And)、「或」(Or)及「互斥或」(XOR))以及多種代數函數(包括加法、減法、乘法、除法中之任一者)。一些ALU 5066經設計以用於純量運算且一些ALU 5066經設計以用於浮點運算。取決於架構,資料可為大端序(Big Endian)(其中最低有效位元組處於最高位元組位址)或小端序(Little Endian)(其中最低有效位元組處於最低位元組位址)。IBM z/Architecture為大端序。取決於架構,帶正負號之欄位可為正負號及量值(1的補數或2的補數)。2的補數係有利的,此在於:ALU並不需要設計減法能力,此係由於在ALU中,2的補數中之負值或正值僅需要加法。通常以速記法來描述數字,其中12位元欄位定義4,096位元組區塊之位址,且通常描述為(例如)4Kbyte(千位元組)區塊。
參看圖17B,用於執行分支指令之分支指令資訊通常發送至分支單元5058,分支單元5058常常使用分支預測演算法(諸如,分支歷史表5082)以在其他條件運算完成之前預測分支之結果。將提取當前分支指令之目標,且在條件運算完成之前推測性地執行當前分支指令之目標。當完成條件運算時,基於條件運算之條件及所推測之結果,完成或放棄推測性執行之分支指令。典型分支指令可測試條件碼,且在條件碼滿足分支指令之分支要求的情況下分支至目標位址,可基於(例如)在暫存器欄位或指令之立即欄位中發現之若干個數字(包括一)而計算目標位址。分支單元5058可使用具有複數個輸入暫存器電路5075、5076、5077及一輸出暫存器電路5080之一ALU 5074。舉例而言,分支單元5058可與通用暫存器5059、解碼分派單元5056或其他電路5073通信。
一指令群組之執行可因包括(例如)以下各者之多種原因而被中斷:由作業系統起始之內容脈絡切換、引起內容脈絡切換之程式例外 狀況或錯誤、引起內容脈絡切換之I/O中斷信號,或複數個程式之多執行緒活動(在多執行緒化環境中)。較佳地,內容脈絡切換動作保存關於當前正執行之程式的狀態資訊,且接著載入關於正被調用之另一程式的狀態資訊。舉例而言,可將狀態資訊保存於硬體暫存器中或記憶體中。狀態資訊較佳包含指向待執行之下一個指令之程式計數器值、條件碼、記憶體轉譯資訊及經建構之暫存器內容。內容脈絡切換活動可單獨或組合地藉由硬體電路、應用程式、作業系統程式或韌體程式碼(微碼、微微碼或經授權之內部碼(LIC))來訓練。
處理器根據指令定義之方法來存取運算元。指令可使用指令之一部分的值來提供立即運算元,可提供明確指向通用暫存器或專用暫存器(例如,浮點暫存器)之一或多個暫存器欄位。指令可利用藉由運算碼欄位識別為運算元的隱含之暫存器。指令可將記憶體位置用於運算元。運算元之記憶體位置可由暫存器、立即欄位或暫存器與立即欄位之組合來提供,如藉由z/Architecture長位移設施(long displacement facility)舉例說明,其中指令定義(例如)相加在一起以提供運算元在記憶體中之位置的一基底暫存器、一索引暫存器及一立即欄位(位移欄位)。除非另有指示,否則本文中之位置通常隱含主記憶體(主儲存器)中之位置。
參看圖17C,處理器使用載入/儲存單元5060來存取儲存器。載入/儲存單元5060可藉由獲得目標運算元在記憶體5053中之位址且在暫存器5059或另一記憶體5053之位置中載入運算元來執行載入操作,或可藉由獲得目標運算元在記憶體5053中之位址且將自暫存器5059或另一記憶體5053之位置獲得的資料儲存於記憶體5053中之目標運算元位置中來執行儲存操作。載入/儲存單元5060可為推測性的,且可以相對於指令序列而言無序之序列存取記憶體,然而,載入/儲存單元5060對於程式維持按次序執行指令的顯現。載入/儲存單元5060可與 通用暫存器5059、解碼/分派單元5056、快取記憶體/記憶體介面5053或其他元件5083通信,且包含各種暫存器電路、ALU 5085及控制邏輯5090以計算儲存位址且提供管線定序以保持操作按次序。一些操作可能為無序的,但載入/儲存單元提供使得無序操作對於程式顯現為已按次序執行之功能性,如此項技術中所熟知的。
較佳地,應用程式「看見」之位址常常被稱作虛擬位址。虛擬位址有時被稱作「邏輯位址」及「有效位址」。此等虛擬位址為虛擬的在於:其藉由多種動態位址轉譯(DAT)技術中之一者而重新導向至實體記憶體位置,該等DAT技術包括(但不限於)僅對虛擬位址加偏移值作為首碼、經由一或多個轉譯表轉譯虛擬位址,轉譯表較佳單獨或組合地包含至少一段表及一頁表,較佳地,段表具有指向頁表之項目。在z/Architecture中,提供轉譯階層,包括一區第一表、一區第二表、一區第三表、一段表及一選用頁表。常常藉由利用轉譯後備緩衝器(TLB)(其包含將虛擬位址映射至相關聯之實體記憶體位置的項目)來改良位址轉譯之效能。當DAT使用轉譯表轉譯虛擬位址時,建立該等項目。虛擬位址之隨後使用可接著利用快速TLB之項目,而非緩慢依序轉譯表存取。可藉由包括最近最少使用(LRU)的多種替換演算法來管理TLB內容。
在處理器為多處理器系統之處理器的狀況下,每一處理器具有保持諸如I/O、快取記憶體、TLB及記憶體之共用資源互鎖以達成一致性的責任。通常,在維持快取一致性中將利用「窺探」技術。在窺探環境中,可將每一快取行標記為處於以下狀態中之任一者以便促進共用:共用狀態、互斥狀態、改變之狀態、無效狀態及其類似者。
I/O單元5054(圖16)為處理器提供用於附接至周邊器件(例如,包括磁帶、光碟、印表機、顯示器及網路)之構件。I/O單元常常由軟體驅動程式呈現至電腦程式。在大型電腦(諸如,來自IBM®之System z) 中,通道配接器及開放系統配接器為大型電腦之I/O單元,該等I/O單元提供作業系統與周邊器件之間的通信。
另外,其他類型之計算環境可受益於本發明之一或多項態樣。作為一實例,環境可包括一模擬器(例如,軟體或其他模擬機制),在該模擬器中模擬一特定架構(包括(例如)指令執行、經建構之功能(諸如,位址轉譯),及經建構之暫存器)或其一子集(例如,在具有一處理器及記憶體之原生電腦系統上)。在此環境中,模擬器之一或多個模擬函式可實施本發明之一或多項態樣,即使執行該模擬器之電腦可具有不同於正模擬之能力的架構亦如此。作為一實例,在模擬模式下,解碼特定指令或正模擬之操作,且建置一適當模擬函式以實施個別指令或操作。
在一模擬環境中,主機電腦包括(例如):一記憶體,其儲存指令及資料;一指令提取單元,其自記憶體提取指令且視情況提供所提取之指令的本端緩衝;一指令解碼單元,其接收所提取之指令且判定已提取的指令之類型;及一指令執行單元,其執行該等指令。執行可包括:將資料自記憶體載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算(如由解碼單元判定)。在一實例中,以軟體來實施每一單元。舉例而言,將正由該等單元執行之操作實施為模擬器軟體內之一或多個副常式。
更明確而言,在大型電腦中,經建構之機器指令常常借助於編譯應用程式而由程式設計師(現今通常為「C」程式設計師)使用。儲存於儲存媒體中之此等指令可原生地在z/Architecture IBM®伺服器中或者在執行其他架構之機器中執行。可在現有及未來IBM®大型電腦伺服器中及在IBM®之其他機器(例如,Power Systems伺服器及System x®伺服器)上模擬該等指令。可於在使用由IBM®、Intel®、AMDTM及其他者製造之硬體的廣泛多種機器上執行Linux的機器中執行該等指 令。除了在z/Architecture下在彼硬體上執行外,亦可使用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號(前述專利證書中之每一者在此以其全文引用的方式併入本文中);及許多其他專利證書。
在圖18中,提供經模擬之主機電腦系統5092之一實例,其模擬主機架構之主機電腦系統5000'。在經模擬之主機電腦系統5092中,主機處理器(CPU)5091為經模擬之主機處理器(或虛擬主機處理器),且包含一模擬處理器5093,其具有不同於主機電腦5000'之處理器5091之原生指令集架構的原生指令集架構。經模擬之主機電腦系統5092具有模擬處理器5093可存取之記憶體5094。在實例實施例中,將記憶體5094分割成一主機電腦記憶體5096部分及一模擬常式5097部分。主機電腦記憶體5096可用於根據主機電腦架構的經模擬之主機電腦5092之程式。模擬處理器5093執行不同於經模擬之處理器5091之原生指令的架構之經建構之指令集的原生指令,該等原生指令係自模擬常式記憶體5097獲得,且可藉由使用在序列及存取/解碼常式中獲得 之一或多個指令自主機電腦記憶體5096中之程式存取主機指令以用於執行,序列及存取/解碼常式可解碼所存取之主機指令以判定用於模擬所存取之主機指令之功能的原生指令執行常式。舉例而言,針對主機電腦系統5000'之架構定義之其他設施可藉由經建構之設施常式來模擬,包括諸如通用暫存器、控制暫存器、動態位址轉譯及I/O子系統支援及處理器快取記憶體之設施。模擬常式亦可利用可用於模擬處理器5093中之功能(諸如,通用暫存器及虛擬位址之動態轉譯)以改良模擬常式之效能。亦可提供特殊硬體及卸載引擎以輔助處理器5093模擬主機電腦5000'之功能。
本文中所使用之術語僅用於描述特定實施例之目的,且並不意欲為本發明之限制。如本文中所使用,除非上下文另有清晰指示,否則單數形式「一」及「該」意欲亦包括複數形式。應進一步理解,當術語「包含」用於此說明書中時,其指定所敍述特徵、整數、步驟、操作、元件及/或組件之存在,但並不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組之存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若有的話)意欲包括用於結合如特別主張之其他所主張元件執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現本發明之一或多項態樣之描述,但該描述並不意欲為詳盡的或限於所揭示之形式下的本發明。在不脫離本發明之範疇及精神之情況下,許多修改及變化對於一般熟習此項技術者將為顯而易見的。選擇並描述了實施例以便最佳地解釋本發明之原理及實務應用,且使其他一般熟習此項技術者能夠針對具有如適合於所預期之特定用途的各種修改之各種實施例來理解本發明。
第23章 向量字串指令
向量字串設施
指令
除非另有指定,否則所有運算元為向量暫存器運算元。組譯器語法中之「V」指明向量運算元。
向量尋找任何相等
自左至右進行,比較第二運算元之每個不帶正負號之二進位整數元素與第三運算元之每個不帶正負號之二進位整數元素的相等性,且若在M5欄位中設定了零搜尋旗標,則視情況與零比較。
若M5欄位中之結果類型(RT)旗標為零,則對於匹配第三運算元中之任一元素或視情況匹配零的第二運算元中之每一元素,將第一運算元中對應的元素之位元位置設定至一,否則,將其設定至零。
若M5欄位中之結果類型(RT)旗標為一,則將匹配第三運算元中之一元素或零的第二運算元中之最左側元素的位元組索引儲存於第一運算元之位元組七中。
每一指令具有擴充之助憶符號區段,其描述推薦的擴充之助憶符號及其對應的機器組譯器語法。
程式設計註釋:對於視情況設定條件碼之所有指令,若設定條件碼,則效能可能降級。
若M5欄位中之結果類型(RT)旗標為一且未發現位元組相等,或為零(若設定了零搜尋旗標),則將與向量中的位元組之數目相等的索 引儲存於第一運算元之位元組七中。
M4欄位指定元素大小控制(ES)。ES控制指定向量暫存器運算元中的元素之大小。若指定顛倒值,則辨識到規範例外狀況。
0-位元組
1-半字組
2-字組
3至15-保留
M5欄位具有以下格式:
如下定義M5欄位之位元:
結果類型(RT): 若為零,則每一所得元素為關於彼元素的所有範圍比較之遮罩。若為一,則將位元組索引儲存至第一運算元之位元組七中,且將零儲存於所有其他元素中。
零搜尋(ZS): 若為一,則亦將第二運算元之每一元素與零比較。
條件碼設定(CC): 若為零,則不設定條件碼且條件碼保持不變。若為一,則如以下段中所指定來設定條件碼。
特殊條件
若出現以下各者中之任一者,則辨識規範例外狀況且不採取其他行動:
1. M4欄位含有自3至15之值。
2. M5欄位之位元0並非零。
所得條件碼: 若CC旗標為零,則碼保持不變。
若CC旗標為一,則如下來設定碼:0 若設定了ZS-位元,則在第二運算元中比零低之索引元素中不存在匹配。
1 第二運算元之一些元素匹配第三運算元中之至少一元素。
2 第二運算元之所有元素匹配第三運算元中之至少一元素。
3 第二運算元中無元素匹配第三運算元中之任何元素。
程式例外狀況:
1 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 規範(保留之ES值)
‧ 異動約束
擴充之助憶符號:
向量尋找元素相等
自左至右進行,將第二運算元之不帶正負號之二進位整數元素與第三運算元之對應的不帶正負號之二進位整數元素比較。若兩個元素相等,則將最左側相等元素之第一位元組之位元組索引置放於第一運算元之位元組七中。將零儲存於第一運算元之剩餘位元組中。若未發現位元組相等,或若未發現位元組為零(若設定了零比較),則將與向量中的位元組之數目相等的索引儲存於第一運算元之位元組七中。將零儲存於剩餘位元組中。
若在M5欄位中設定了零搜尋(ZS)位元,則亦比較第二運算元中之每一元素與零的相等性。若在發現第二運算元及第三運算元之任何其他元素相等之前在第二運算元中尋找到零元素,則將發現為零的元素之第一位元組之位元組索引儲存於第一運算元之位元組七中,且將零儲存於所有其他位元組位置中。若條件碼設定(CC)旗標為一,則將條件碼設定至零。
M4欄位指定元素大小控制(ES)。ES控制指定向量暫存器運算元中的元素之大小。若指定顛倒值,則辨識到規範例外狀況。
0-位元組
1-半字組
2-字組
3至15-保留
M5欄位具有以下格式:
如下定義M5欄位之位元:
保留: 保留位元0至1且位元0至1必須為零。否則,辨識到規 範例外狀況。
零搜尋(ZS): 若為一,則亦將第二運算元之每一元素與零比較。
條件碼設定(CC): 若為零,則條件碼保持不變。若為一,則如在以下段中所指定來設定條件碼。
特殊條件
若出現以下各者中之任一者,則辨識規範例外狀況且不採取其他行動:
1. M4欄位含有自3至15之值。
2. M5欄位之位元0至1並非零。
所得條件碼: 若將M5欄位之位元3設定至一,則如下設定碼:0 若設定了零比較位元,則比較在具有比任何相等比較小之索引的元素中偵測到第二運算元中之零元素。
1 比較在一些元素中偵測到第二運算元與第三運算元之間的匹配。若設定了零比較位元,則此匹配出現於具有小於或等於零比較元素之索引的元素中。
2 --
3 無元素比較起來相等。
若M5欄位之位元3為零,則碼保持不變。
程式例外狀況:
‧ 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 規範(保留之ES值)
‧ 異動約束
擴充之助憶符號:
程式設計註釋:
1. 對於任一元素大小,始終將位元組索引儲存至第一運算元中。舉例而言,若將元素大小設定至半字組且比較出第2個索引之半字組相等,則將儲存位元組索引4。
2. 第三運算元不應含有具有零值之元素。若第三運算元確實含有零且在任何其他相等比較之前與第二運算元中之零元素匹配,則設定條件碼一,而不管零比較位元設定。
向量尋找元素不相等
自左至右進行,將第二運算元之不帶正負號之二進位整數元素與第三運算元之對應的不帶正負號之二進位整數元素比較。若兩個元素不相等,則將最左側不相等元素之位元組索引置放於第一運算元之位元組七中,且將零儲存至所有其他位元組。若將M5欄位中之條件碼設定(CC)位元設定至一,則設定條件碼以指示哪一運算元較大。若所有元素相等,則將等於向量大小之位元組索引置放於第一運算元之位元組七中,且將零置放於所有其他位元組位置中。若CC位元為 一,則設定條件碼三。
若在M5欄位中設定了零搜尋(ZS)位元,則亦比較第二運算元中之每一元素與零的相等性。若在發現第二運算元之任一其他元素不相等之前在第二運算元中尋找到零元素,則將發現為零的元素之第一位元組之位元組索引儲存於第一運算元之位元組七中。將零儲存於所有其他位元組中,且設定條件碼0。
M4欄位指定元素大小控制(ES)。ES控制指定向量暫存器運算元中的元素之大小。若指定顛倒值,則辨識到規範例外狀況。
0-位元組
1-半字組
2-字組
3至15-保留
M5欄位具有以下格式:
如下定義M5欄位之位元:
零搜尋(ZS): 若為一,則亦將第二運算元之每一元素與零比較。
條件碼設定(CC): 若為零,則不設定條件碼且條件碼保持不變。若為一,則如以下段中所指定來設定條件碼。
特殊條件
若出現以下各者中之任一者,則辨識規範例外狀況且不採取其他行動:
1. M4欄位含有自3至15之值。
2. M5欄位之位元0至1並非零。
所得條件碼: 若將M5欄位之位元3設定至一,則如下設定碼:
0 若設定了零比較位元,則比較在比任何不相等比較低之索引元素中偵測到兩個運算元中之零元素
1 偵測到元素失配,且VR2中之元素小於VR3中之元素
2 偵測到元素失配,且VR2中之元素大於VR3中之元素
3 所有元素比較起來相等,且若設定了零比較位元,則在第二運算元中未尋找到零元素。
若M5欄位之位元3為零,則碼保持不變。
程式例外狀況:
‧ 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 規範(保留之ES值)
‧ 異動約束
擴充之助憶符號: VFENEZFS V1,V2,V3,M5 VFENE V1,V2,V3,2,(M5|X'3')
向量字串範圍比較
自左至右進行,將第二運算元中的不帶正負號之二進位整數元素與由第三運算元及第四運算元中之偶數一奇數對元素定義的值範圍比較。結合來自第四運算元的控制值定義待執行的比較之範圍。若一元素匹配由第三運算元及第四運算元指定的範圍中之任一者,則將其視為匹配。
若M6欄位中之結果類型(RT)旗標為零,則若第一運算元中對應於第二運算元中正進行比較之元素的元素匹配該等範圍中之任一者,則將該元素之位元位置設定至一,否則,將其設定至零。
若將M6欄位中之結果類型(RT)旗標設定至一,則第二運算元中匹配由第三運算元及第四運算元指定的範圍中之任一者或零比較(若將ZS旗標設定至一)的第一元素之位元組索引置放於第一運算元之位元組七中,且將零儲存於剩餘位元組中。若無元素匹配,則將等於一向量中的位元組之數目的索引置放於第一運算元之位元組七中,且將零儲存於剩餘位元組中。
M6欄位中之零搜尋(ZS)旗標,若設定至一,則將第二運算元元素與零的比較添加至由第三運算元及第四運算元提供之範圍。若為在比任何其他真比較低之索引元素中的零比較,則將條件碼設定至零。
該等運算元含有具有由M5欄位中之元素大小控制指定的大小之元素。
第四運算元元素具有以下格式:若ES等於0:
若ES等於1:
若ES等於2:
如下定義第四運算元元素中之位元:
相等(EQ): 當為一時,進行相等性比較。
大於(GT): 當為一時,執行大於比較。
小於(LT): 當為一時,執行小於比較。
‧ 保留所有其他位元且所有其他位元應為零以確保未來相容性。
可以任何組合使用該等控制位元。若該等位元中無一者經設定,則比較將始終產生假結果。若所有該等位元經設定,則比較將始終產生真結果。
M5欄位指定元素大小控制(ES)。ES控制指定向量暫存器運算元中的元素之大小。若指定顛倒值,則辨識到規範例外狀況。
0-位元組
1-半字組
2-字組
3至15-保留
M6欄位具有以下格式:
如下定義M6欄位之位元:
反轉結果(IN): 若為零,則繼續進行與控制向量中之成對值的比較。若為一,則反轉在該等範圍中的該等成對之比較之結果。
結果類型(RT): 若為零,則每一所得元素為關於彼元素的所有範圍比較之遮罩。若為一,則將索引儲存至第一運算元之位元組七中。將零儲存於剩餘位元組中。
零搜尋(ZS): 若為一,則亦將第二運算元之每一元素與零比較。
條件碼設定(CC): 若為零,則不設定條件碼且條件碼保持不變。若為一,則如以下段中所指定來設定條件碼。
特殊條件
若出現以下各者中之任一者,則辨識規範例外狀況且不採取其他行動:
1. M4欄位含有自3至15之值。
所得條件碼:
0 若ZS=1且在比任何比較低之索引元素中發現零
1 發現比較
2 --
3 未發現比較
程式例外狀況:
‧ 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 規範(保留之ES值)
‧ 異動約束
擴充之助憶符號:
圖23-1.
ES=1,ZS=0
VR1(a) RT=0之結果
VR1(b) RT=1之結果
將計數載入至區塊邊界
將含有可能自第二運算元位置載入而不與指定區塊邊界交叉之位元組之數目的32-位元不帶正負號之二進位整數(覆蓋於十六處)置放於第一運算元中。
將位移作為12-位元不帶正負號之整數對待。
第二運算元位址不用以定址資料。
M3欄位指定用以用信號向CPU通知關於區塊邊界大小以計算載入的可能位元組之數目的碼。若指定顛倒值,則辨識到規範例外狀況。
7至15 保留
所得條件碼:
0 運算元一為十六
1 --
2 --
3 運算元一小於十六
所得條件碼:
程式例外狀況:
‧ 在未安裝向量擴充設施之情況下的操作
‧ 規範
程式設計註釋:期望結合向量載入至區塊邊界(VECTOR LOAD TO BLOCK BOUNDARY)使用將計數載入至區塊邊界(LOAD COUNT TO BLOCK BOUNDARY)以判定載入的位元組之數目。
自VR元素之向量載入GR
將第三運算元之具有由M4欄位中之ES值指定的大小且藉由第二運算元位址編索引之元素置放於第一運算元位置中。第三運算元為向量暫存器。第一運算元為通用暫存器。若藉由第二運算元位址指定之索引大於第三運算元中具有指定元素大小的最高編號之元素,則第一運算元中之資料為不可預測的。
若向量暫存器元素小於雙字組,則該元素在64-位元通用暫存器中恰好對準,且零填充剩餘位元。
第二運算元位址不用以定址資料;實情為,該位址之最右側12個位元用以指定一元素在第二運算元內之索引。
M4欄位指定元素大小控制(ES)。ES控制指定向量暫存器運算元中的元素之大小。若指定顛倒值,則辨識到規範例外狀況。
0-位元組
1-半字組
2-字組
3-雙字組
4至15-保留不變。
所得條件碼: 碼不變。
程式例外狀況:
‧ 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 規範(保留之ES值)
‧ 異動約束
擴充之助憶符號:
向量載入至區塊邊界
以零索引位元組元素開始,以來自第二運算元之位元組載入第一運算元。若遇到邊界條件,則第一運算元之其餘部分為不可預測的。未辨識到關於未載入之位元組之存取例外狀況。
將針對VLBB之位移作為12-位元不帶正負號之整數對待。
M3欄位指定用以用信號向CPU通知關於區塊邊界大小以載入至區塊邊界的碼。若指定顛倒值,則辨識到規範例外狀況。
7至15 保留
所得條件碼: 碼保持不變。
程式例外狀況
‧ 存取(提取,運算元2)
‧ 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 規範(保留之區塊邊界碼)
‧ 異動約束
程式設計註釋:
1.在某些情況下,可經過區塊邊界載入資料。然而,若不存在關於彼資料之存取例外狀況,則將僅發生此情形。
向量儲存
將第一運算元中之128-位元值儲存至藉由第二運算元指定之儲存位置。將針對VST之位移作為12-位元不帶正負號之整數對待。
所得條件碼: 碼保持不變。
程式例外狀況:
‧ 存取(儲存,運算元2)
‧ 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 異動約束
具有長度之向量儲存
自左至右進行,將來自第一運算元之位元組儲存於第二運算元位置處。指定第三運算元之通用暫存器含有32-位元不帶正負號之整數,該整數含有表示儲存的最高索引位元組之值。若第三運算元含有大於或等於向量之最高位元組索引的值,則儲存第一運算元之所有位元組。
僅辨識到關於儲存之位元組的存取例外狀況。
將針對具有長度之向量儲存(VECTOR STORE WITH LENGTH)之位移作為12-位元不帶正負號之整數對待。
所得條件碼: 條件碼保持不變。
程式例外狀況:
‧ 存取(儲存,運算元2)
‧ 具有DXC FE之資料,向量暫存器
‧ 在未安裝向量擴充設施之情況下的操作
‧ 異動約束
RXB描述
所有向量指令具有在指令之位元36至40中的一欄位,其標註為RXB。此欄位含有用於所有向量暫存器指明之運算元的最高有效位元。保留用於未藉由指令指定之暫存器指明的位元且應將其設定至零;否則,程式在未來無法相容地操作。將最高有效位元串接至四-位元暫存器指明之左側以建立五-位元向量暫存器指明。
如下定義該等位元:
0. 在指令之位元8至11中用於向量暫存器指明之最高有效位元。
1. 在指令之位元12至15中用於向量暫存器指明之最高有效位元。
2. 在指令之位元16至19中用於向量暫存器指明之最高有效位 元。
3. 在指令之位元32至35中用於向量暫存器指明之最高有效位元。
向量啟用控制
若將控制暫存器零中的向量啟用控制(位元46)及AFP暫存器控制(位元45)皆設定至一,則可僅使用向量暫存器及指令。若安裝了向量設施且在未設定啟用位元之情況下執行向量指令,則辨識到具有DXC FE十六進位之資料例外狀況。若未安裝向量設施,則辨識到操作例外狀況。
2000‧‧‧技術
3000‧‧‧技術

Claims (20)

  1. 一種用於變換一計算環境之指令說明符的電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於由該處理電路執行以用於執行一方法之指令,該方法包含:從為一第一電腦架構定義的一第一指令判定該第一指令包括一非連續說明符;由一處理器自針對該第一電腦架構定義之一第一指令獲得一非連續說明符,該非連續說明符具有一第一部分及一第二部分,其中該獲得包含自該指令之一第一欄位獲得該第一部分,及自該指令之一第二欄位獲得該第二部分,該第一欄位與該第二欄位分開;使用該第一部分及該第二部分產生一連續說明符,該產生使用基於該第一指令之運算碼之一或多個規則;及使用該連續說明符來指示待於一第二指令之執行中使用的一資源,該第二指令係針對不同於該第一電腦架構之一第二電腦架構而定義且模擬該第一指令之一功能;執行該第二指令以模擬該第一指令之一功能,該執行使用由該連續說明符指示之資源,使用該連續說明符,如同不存在非連續說明符一樣。
  2. 如請求項1之電腦程式產品,其中該處理器包含一模擬器,且其中該第一部分包括第一一或多個位元,且該第二部分包括第二一或多個位元,且該產生包含串接該第二一或多個位元與該第一一或多個位元以形成該連續說明符,其中該第二一或多個位元係該連續說明符的最高有效位元。
  3. 如請求項2之電腦程式產品,其中該第一欄位具有與之相關聯之一運算元位置,且該第二一或多個位元係該第二欄位之複數個位元的一子集,且其中該獲得包含基於該第一欄位之該運算元位置自該第二欄位之該複數個位元選擇該第二一或多個位元。
  4. 如請求項3之電腦程式產品,其中該第一欄位之該運算元位置係作為一第一運算元,且其中該第二一或多個位元係選自該第二欄位的一最左側位置。
  5. 如請求項1之電腦程式產品,其中該第一欄位由一暫存器欄位組成,該第二欄位由一擴充欄位組成,該第一部分由來自該暫存器欄位之複數個位元組成,該第二部分由來自該擴充欄位的在該指令之對應於該暫存器欄位之一位置中的一位元組成,且該產生包含串接來自該擴充欄位之該位元與來自該暫存器欄位之該等位元以提供該連續說明符。
  6. 如請求項1之電腦程式產品,其中該使用該連續說明符以指示一資源包括:使用該連續說明符以映射至待由該第二指令使用的一暫存器。
  7. 如請求項6之電腦程式產品,其中藉由該連續說明符映射至之該暫存器具有與該連續說明符相同之值。
  8. 如請求項6之電腦程式產品,其中藉由該連續說明符映射至之該暫存器具有不同於該連續說明符之一值。
  9. 如請求項1之電腦程式產品,其中該第一電腦架構包括一指令集,該指令集包含第一指令且具有第二指令,該等第一指令具有暫存器欄位以存取該第一電腦架構之一暫存器空間的一子區段,且該等第二指令具有用於存取該子區段且維持該暫存器空間之剩餘子區段的非連續暫存器欄位,阻止該等第一指令存取該等剩餘子區段。
  10. 如請求項1之電腦程式產品,其中該第一欄位由一暫存器欄位組成,該第二欄位由一擴充欄位組成,該第一部分由來自該暫存器欄位之複數個位元組成,該第二部分由來自該擴充欄位的在該指令之對應於該暫存器欄位之一位置中的一位元組成,且該產生包含串接來自該擴充欄位之該位元與來自該暫存器欄位之該等位元以提供該連續說明符,且進一步包含:由該處理器自該第一指令獲得另一非連續說明符,該另一非連續說明符具有另一第一部分及另一第二部分,其中該獲得包含自該指令之另一第一欄位獲得該另一第一部分,及自該擴充欄位之另一位元獲得該另一第二部分,該另一第一欄位與該第一欄位及該擴充欄位分開;使用該另一第一部分及該另一位元產生另一連續說明符,該產生使用基於該第一指令之該運算碼之一或多個規則;及使用該另一連續說明符來指示待於該第二指令之執行中使用的一資源。
  11. 一種用於變換一計算環境之指令說明符的電腦系統,該電腦系統包含:一記憶體;及一處理器,其與該記憶體通信,其中該電腦系統經組態以執行一方法,該方法包含:從為一第一電腦架構定義的一第一指令判定該第一指令包括一非連續說明符;由一處理器自針對該第一電腦架構定義之一第一指令獲得一非連續說明符,該非連續說明符具有一第一部分及一第二部分,其中該獲得包含自該指令之一第一欄位獲得該第一部分,及自該指令之一第二欄位獲得該第二部分,該第一欄位 與該第二欄位分開;使用該第一部分及該第二部分產生一連續說明符,該產生使用基於該第一指令之運算碼之一或多個規則;及使用該連續說明符來指示待於一第二指令之執行中使用的一資源,該第二指令係針對不同於該第一電腦架構之一第二電腦架構而定義且模擬該第一指令之一功能;執行該第二指令以模擬該第一指令之一功能,該執行使用由該連續說明符指示之資源,使用該連續說明符,如同不存在非連續說明符一樣。
  12. 如請求項11之電腦系統,其中該處理器包含一模擬器,且其中該第一部分包括第一一或多個位元,且該第二部分包括第二一或多個位元,且該產生包含串接該第二一或多個位元與該第一一或多個位元以形成該連續說明符,其中該第二一或多個位元係該連續說明符的最高有效位元。
  13. 如請求項12之電腦系統,其中該第一欄位具有與之相關聯之一運算元位置,且該第二一或多個位元係該第二欄位之複數個位元的一子集,且其中該獲得包含基於該第一欄位之該運算元位置自該第二欄位之該複數個位元選擇該第二一或多個位元。
  14. 如請求項13之電腦系統,其中該第一欄位之該運算元位置係作為一第一運算元,且其中該第二一或多個位元係選自該第二欄位的一最左側位置。
  15. 如請求項11之電腦系統,其中該第一欄位包含一暫存器欄位,該第二欄位包含一擴充欄位,該第一部分包含來自該暫存器欄位之複數個位元,該第二部分包含來自該擴充欄位的在對應於該暫存器欄位之一位置中的一位元,且該產生包含串接來自該擴充欄位之該位元與來自該暫存器欄位之該等位元以提供該連續 說明符。
  16. 如請求項11之電腦系統,其中該使用該連續說明符以指示一資源包括:使用該連續說明符以映射至待由該第二指令使用的一暫存器。
  17. 如請求項16之電腦系統,其中由該連續說明符映射至之該暫存器具有以下各者中之一者:與該連續說明符相同之值;或具有不同於該連續說明符之一值。
  18. 一種變換一計算環境之指令說明符的方法,該方法包含:從為一第一電腦架構定義的一第一指令判定該第一指令包括一非連續說明符;由一處理器自針對該第一電腦架構定義之一第一指令獲得一非連續說明符,該非連續說明符具有一第一部分及一第二部分,其中該獲得包含自該指令之一第一欄位獲得該第一部分,及自該指令之一第二欄位獲得該第二部分,該第一欄位與該第二欄位分開;使用該第一部分及該第二部分產生一連續說明符,該產生使用基於該第一指令之運算碼之一或多個規則;及使用該連續說明符來指示待於一第二指令之執行中使用的一資源,該第二指令係針對不同於該第一電腦架構之一第二電腦架構而定義且模擬該第一指令之一功能;執行該第二指令以模擬該第一指令之一功能,該執行使用由該連續說明符指示之資源,使用該連續說明符,如同不存在非連續說明符一樣。
  19. 如請求項18之方法,其中該處理器包含一模擬器,且其中該第一部分包括第一一或多個位元,且該第二部分包括第二一或多個位元,且該產生包含串接該第二一或多個位元與該第一一或 多個位元以形成該連續說明符,其中該第二一或多個位元係該連續說明符的最高有效位元。
  20. 如請求項18之方法,其中該第一欄位包含一暫存器欄位,該第二欄位包含一擴充欄位,該第一部分包含來自該暫存器欄位之複數個位元,該第二部分包含來自該擴充欄位的在對應於該暫存器欄位之一位置中的一位元,且該產生包含串接來自該擴充欄位之該位元與來自該暫存器欄位之該等位元以提供該連續說明符。
TW102107380A 2012-03-15 2013-03-01 用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法 TWI533207B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/421,657 US9280347B2 (en) 2012-03-15 2012-03-15 Transforming non-contiguous instruction specifiers to contiguous instruction specifiers

Publications (2)

Publication Number Publication Date
TW201403468A TW201403468A (zh) 2014-01-16
TWI533207B true TWI533207B (zh) 2016-05-11

Family

ID=49158813

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102107380A TWI533207B (zh) 2012-03-15 2013-03-01 用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法

Country Status (24)

Country Link
US (2) US9280347B2 (zh)
EP (1) EP2769301B1 (zh)
JP (1) JP6108362B2 (zh)
KR (1) KR101643065B1 (zh)
CN (1) CN104169877B (zh)
AU (1) AU2012373735B2 (zh)
BR (1) BR112014022638B1 (zh)
CA (1) CA2867115C (zh)
DK (1) DK2769301T3 (zh)
ES (1) ES2779033T3 (zh)
HK (1) HK1201354A1 (zh)
HR (1) HRP20200393T1 (zh)
HU (1) HUE048409T2 (zh)
IL (1) IL232817A (zh)
LT (1) LT2769301T (zh)
MX (1) MX340050B (zh)
PL (1) PL2769301T3 (zh)
PT (1) PT2769301T (zh)
RU (1) RU2568241C2 (zh)
SG (1) SG11201404825SA (zh)
SI (1) SI2769301T1 (zh)
TW (1) TWI533207B (zh)
WO (1) WO2013136144A1 (zh)
ZA (1) ZA201406612B (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
CN108874693B (zh) 2011-01-27 2022-09-23 英特尔公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
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
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
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
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
WO2014031540A1 (en) * 2012-08-20 2014-02-27 Cameron Donald Kevin Processing resource allocation
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
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
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
CN109358948B (zh) 2013-03-15 2022-03-25 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US9454370B2 (en) 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US10353680B2 (en) 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US20160026487A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. Using a conversion look aside buffer to implement an instruction set agnostic runtime architecture
US9792098B2 (en) * 2015-03-25 2017-10-17 International Business Machines Corporation Unaligned instruction relocation
US20170022314A1 (en) 2015-07-24 2017-01-26 Weyerhaeuser Nr Company Grafted crosslinked cellulose
US10055208B2 (en) * 2015-08-09 2018-08-21 Oracle International Corporation Extending a virtual machine instruction set architecture
US10235170B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Decimal load immediate instruction
CN110851345B (zh) * 2019-09-23 2023-04-14 上海辛格林纳新时达电机有限公司 一种系统参数的调用方法及调用装置
CN113268726B (zh) * 2020-02-17 2023-10-20 华为技术有限公司 程序代码执行行为的监控方法、计算机设备
US11263131B2 (en) * 2020-04-08 2022-03-01 Alibaba Group Holding Limited System and method for allocating memory space
US11914997B2 (en) 2020-12-29 2024-02-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11669328B2 (en) 2020-12-29 2023-06-06 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for converting instructions
US11816487B2 (en) 2020-12-29 2023-11-14 Shanghai Zhaoxin Semiconductor Co., Ltd. Method of converting extended instructions based on an emulation flag and retirement of corresponding microinstructions, device and system using the same
US11625247B2 (en) 2020-12-29 2023-04-11 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11789736B2 (en) 2020-12-29 2023-10-17 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11604643B2 (en) 2020-12-29 2023-03-14 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11803383B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US20220206809A1 (en) 2020-12-29 2022-06-30 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62276668A (ja) 1985-07-31 1987-12-01 Nec Corp ベクトルマスク演算制御ユニツト
US5073864A (en) 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5222225A (en) 1988-10-07 1993-06-22 International Business Machines Corporation Apparatus for processing character string moves in a data processing system
JPH0831032B2 (ja) 1990-08-29 1996-03-27 三菱電機株式会社 データ処理装置
US5465374A (en) 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
AU7108994A (en) 1993-06-14 1995-01-03 Apple Computer, Inc. Method and apparatus for finding a termination character within a variable length character string or a processor
JPH0721034A (ja) 1993-06-28 1995-01-24 Fujitsu Ltd 文字列複写処理方法
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6185629B1 (en) 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
DE69520350T2 (de) 1994-09-27 2001-08-09 Nkk Corp., Tokio/Tokyo Galvanisiertes stahlblech und verfahren zur herstellung
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
US5812147A (en) 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5931940A (en) 1997-01-23 1999-08-03 Unisys Corporation Testing and string instructions for data stored on memory byte boundaries in a word oriented machine
JP4467791B2 (ja) 1997-11-24 2010-05-26 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 情報管理及び検索
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
US6041402A (en) * 1998-01-05 2000-03-21 Trw Inc. Direct vectored legacy instruction set emulation
US6094695A (en) 1998-03-11 2000-07-25 Texas Instruments Incorporated Storage buffer that dynamically adjusts boundary between two storage areas when one area is full and the other has an empty data register
US6334176B1 (en) 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
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
US7100026B2 (en) 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
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
JP3564395B2 (ja) 1998-11-27 2004-09-08 松下電器産業株式会社 アドレス生成装置および動きベクトル検出装置
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6189088B1 (en) 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6499116B1 (en) 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
US6802056B1 (en) 1999-06-30 2004-10-05 Microsoft Corporation Translation and transformation of heterogeneous programs
US6381691B1 (en) 1999-08-13 2002-04-30 International Business Machines Corporation Method and apparatus for reordering memory operations along multiple execution paths in a processor
US6513109B1 (en) 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6449706B1 (en) 1999-12-22 2002-09-10 Intel Corporation Method and apparatus for accessing unaligned data
JP2001236249A (ja) 2000-02-24 2001-08-31 Nec Corp メモリ管理装置およびメモリ管理方法
US6625724B1 (en) 2000-03-28 2003-09-23 Intel Corporation Method and apparatus to support an expanded register set
US6349361B1 (en) 2000-03-31 2002-02-19 International Business Machines Corporation Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6408383B1 (en) 2000-05-04 2002-06-18 Sun Microsystems, Inc. Array access boundary check by executing BNDCHK instruction with comparison specifiers
KR100852563B1 (ko) 2000-10-18 2008-08-18 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 디지털 신호 처리 장치 및 방법
US7487330B2 (en) 2001-05-02 2009-02-03 International Business Machines Corporations Method and apparatus for transferring control in a computer system with dynamic compilation capability
JP3900863B2 (ja) 2001-06-28 2007-04-04 シャープ株式会社 データ転送制御装置、半導体記憶装置および情報機器
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
US6907443B2 (en) 2001-09-19 2005-06-14 Broadcom Corporation Magnitude comparator
US6570511B1 (en) 2001-10-15 2003-05-27 Unisys Corporation Data compression method and apparatus implemented with limited length character tables and compact string code utilization
US20100274988A1 (en) 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US7089371B2 (en) 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
US7441104B2 (en) 2002-03-30 2008-10-21 Hewlett-Packard Development Company, L.P. Parallel subword instructions with distributed results
US7373483B2 (en) * 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US20040049657A1 (en) * 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
US6918010B1 (en) 2002-10-16 2005-07-12 Silicon Graphics, Inc. Method and system for prefetching data
US7103754B2 (en) 2003-03-28 2006-09-05 International Business Machines Corporation Computer instructions for having extended signed displacement fields for finding instruction operands
US20040215924A1 (en) 2003-04-28 2004-10-28 Collard Jean-Francois C. Analyzing stored data
US7035986B2 (en) 2003-05-12 2006-04-25 International Business Machines Corporation System and method for simultaneous access of the same line in cache storage
US20040250027A1 (en) 2003-06-04 2004-12-09 Heflinger Kenneth A. Method and system for comparing multiple bytes of data to stored string segments
US7610466B2 (en) 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7904905B2 (en) 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
GB2411973B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US20060095713A1 (en) 2004-11-03 2006-05-04 Stexar Corporation Clip-and-pack instruction for processor
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
US8010953B2 (en) 2006-04-04 2011-08-30 International Business Machines Corporation Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine
US7565514B2 (en) 2006-04-28 2009-07-21 Freescale Semiconductor, Inc. Parallel condition code generation for SIMD operations
CN101097488B (zh) 2006-06-30 2011-05-04 2012244安大略公司 从接收的文本中学习字符片段的方法及相关手持电子设备
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US7536532B2 (en) 2006-09-27 2009-05-19 International Business Machines Corporation Merge operations of data arrays based on SIMD instructions
US7991987B2 (en) 2007-05-10 2011-08-02 Intel Corporation Comparing text strings
CN101755265A (zh) 2007-05-21 2010-06-23 茵科瑞蒂梅尔有限公司 交互式消息编辑系统和方法
US20090063410A1 (en) 2007-08-29 2009-03-05 Nils Haustein Method for Performing Parallel Data Indexing Within a Data Storage System
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7870339B2 (en) 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US7877582B2 (en) 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
KR20100126690A (ko) 2008-02-18 2010-12-02 샌드브리지 테크놀로지스, 인코포레이티드 널-종료 문자열 동작을 가속화하는 방법
DK176835B1 (da) 2008-03-07 2009-11-23 Jala Aps Fremgangsmåde til skanning, medium indeholdende et program til udövelse af fremgangsmåden samt system til udövelse af fremgangsmåden
US8386547B2 (en) 2008-10-31 2013-02-26 Intel Corporation Instruction and logic for performing range detection
US20120023308A1 (en) 2009-02-02 2012-01-26 Renesas Electronics Corporation Parallel comparison/selection operation apparatus, processor, and parallel comparison/selection operation method
JP5471082B2 (ja) 2009-06-30 2014-04-16 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8595471B2 (en) 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
JP2011212043A (ja) 2010-03-31 2011-10-27 Fujifilm Corp 医用画像再生装置および方法並びにプログラム
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
US8972698B2 (en) 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
US9009447B2 (en) 2011-07-18 2015-04-14 Oracle International Corporation Acceleration of string comparisons using vector instructions
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
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
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction

Also Published As

Publication number Publication date
ES2779033T3 (es) 2020-08-13
RU2568241C2 (ru) 2015-11-10
EP2769301A1 (en) 2014-08-27
CA2867115A1 (en) 2013-09-19
LT2769301T (lt) 2020-05-25
CA2867115C (en) 2020-12-08
BR112014022638B1 (pt) 2022-01-04
US20130246768A1 (en) 2013-09-19
HRP20200393T1 (hr) 2020-06-12
JP6108362B2 (ja) 2017-04-05
AU2012373735A1 (en) 2014-09-11
RU2012148583A (ru) 2014-05-20
MX340050B (es) 2016-06-22
WO2013136144A1 (en) 2013-09-19
MX2014010948A (es) 2014-10-13
ZA201406612B (en) 2016-05-25
SI2769301T1 (sl) 2020-06-30
PL2769301T3 (pl) 2020-06-01
HK1201354A1 (zh) 2015-08-28
CN104169877A (zh) 2014-11-26
US20130246766A1 (en) 2013-09-19
US9280347B2 (en) 2016-03-08
PT2769301T (pt) 2020-03-26
TW201403468A (zh) 2014-01-16
DK2769301T3 (da) 2020-03-16
IL232817A0 (en) 2014-07-31
IL232817A (en) 2017-07-31
EP2769301B1 (en) 2020-02-19
US9454374B2 (en) 2016-09-27
KR101643065B1 (ko) 2016-07-26
JP2015514242A (ja) 2015-05-18
SG11201404825SA (en) 2014-09-26
BR112014022638A2 (zh) 2017-06-20
AU2012373735B2 (en) 2016-06-02
BR112014022638A8 (pt) 2021-12-14
HUE048409T2 (hu) 2020-07-28
EP2769301A4 (en) 2014-11-19
KR20140104974A (ko) 2014-08-29
CN104169877B (zh) 2017-10-13

Similar Documents

Publication Publication Date Title
TWI533207B (zh) 用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法
TWI533206B (zh) 執行將資料載入至由一指令所指示之一指定記憶體邊界之該指令之方法、電腦程式產品及電腦系統
TWI567641B (zh) 用於向量尋找元素相等指令的電腦程式產品、電腦系統及其方法
TWI550510B (zh) 提供向量尋找元素不相等指令之電腦程式產品、電腦系統及方法
US9959118B2 (en) Instruction to load data up to a dynamically determined memory boundary
TWI554946B (zh) 尋找一組具有終止字元之字元資料之長度之電腦程式產品、電腦系統及方法
TWI617975B (zh) 用於計算至一指定記憶體邊界之距離之指令之電腦程式產品、電腦系統及方法
TWI614679B (zh) 向量浮點測試資料類別立即指令
US9513906B2 (en) Vector checksum instruction
US9740482B2 (en) Vector generate mask instruction
US20170024204A1 (en) Vector galois field multiply sum and accumulate instruction