TW202036272A - 載入/儲存位元組反轉元件指令 - Google Patents
載入/儲存位元組反轉元件指令 Download PDFInfo
- Publication number
- TW202036272A TW202036272A TW109101669A TW109101669A TW202036272A TW 202036272 A TW202036272 A TW 202036272A TW 109101669 A TW109101669 A TW 109101669A TW 109101669 A TW109101669 A TW 109101669A TW 202036272 A TW202036272 A TW 202036272A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- input data
- instruction
- command
- computer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
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)
Abstract
本發明執行一種單架構指令以執行一資料反轉操作。該執行包括獲得輸入資料及該指令之一修飾符控制。該修飾符控制具有針對該指令所界定之複數個值中之一個值且指示一元件大小。對該輸入資料執行該資料反轉操作。該執行包括將該輸入資料之一元件置於一選擇位置,該元件具有藉由該修飾符控制所指示之該元件大小;反轉該元件中該輸入資料之一次序;以及基於該輸入資料具有一或多個其他待處理元件而重複該置放及該反轉。該執行之輸出包括資料之一或多個元件,該等元件包括次序與對應一或多個元件之該輸入資料相反的輸出資料。
Description
一或多個態樣大體上係關於促進運算環境內之處理,且特定而言,係關於促進與載入及儲存資料相關聯之處理。
資料可以各種資料格式,包括以小端序格式或大端序格式傳輸或儲存於記憶體中。在小端序格式中,元件或運算元之最低有效位元組為第一個(例如,元件位元組或運算元位元組之最低位址)且最高有效位元組為最後一個(例如,元件位元組或運算元位元組之最高位址)。然而,在大端序格式中,最高有效位元組為第一個,且最低有效位元組為最後一個。
運算環境經界定以使用特定格式,諸如小端序或大端序。例如,x86運算架構經界定以使用小端序格式,且由紐約阿蒙克市之國際商業機器公司供應之z/Architecture®
硬體架構經界定以使用大端序格式。因此,若基於z/Architecture硬體架構之系統將使用來自使用小端序格式的系統之資料,則該資料將轉換成大端序格式。經轉換資料經處理且接著轉換回至其原始格式。此舉就時間及效能額外開銷而言代價較高。
為了執行轉換,在一個實例中,排列指令可置放在每個載入指令之後或在每個儲存指令之前以改變載入或儲存資料之資料格式,從而增加載入及儲存操作之額外開銷。在另一實例中,可重寫原始程式碼以提供所要格式。
經由提供用於促進運算環境內之處理的電腦程式產品來克服先前技術之缺點且提供額外優點。該電腦程式產品包括可由處理器讀取且儲存用於執行一種方法之指令的電腦可讀儲存媒體。該方法包括執行一指令以執行資料反轉操作。該指令為單架構指令。該執行包括獲得輸入資料,對該輸入資料執行該資料反轉操作;及獲得該指令之修飾符控制。該修飾符控制具有針對該指令所界定之複數個值中之一個值且指示元件大小。對該輸入資料執行該資料反轉操作。該執行包括將該輸入資料之一元件置於選擇位置,該元件具有藉由該修飾符控制所指示之該元件大小;反轉該元件中該輸入資料之次序;以及基於該輸入資料具有一或多個其他待處理元件而重複該置放及該反轉。該執行之輸出包括資料之一或多個元件,該等元件包括次序與對應一或多個元件之該輸入資料相反的輸出資料。
藉由使用單架構指令來置放該資料及排列該資料,而非使用單獨指令來執行置放及排列,執行時間會縮減,且效能得以改良。另外,藉由使用具有可選擇元件大小之單架構指令,促進運算環境內之處理。縮減待界定及實施之指令之數目,以及降低架構之複雜度。亦保存記憶體。
在一個實施例中,該資料反轉操作為載入資料反轉操作且自一記憶體位置獲得該輸入資料之該元件。例如,使用該指令之一或多個欄位判定記憶體位置,且使用該指令之一或多個其他欄位指定選擇位置。作為一實例,修飾符控制為該指令之輸入,其指定待自記憶體載入至該選擇位置之輸入資料之一或多個元件之元件大小。
藉由使用單架構指令來執行載入操作及資料反轉操作,而非使用單獨指令來執行兩個操作,執行時間會縮減,且效能得以改良。
在另一實施例中,該資料反轉操作為儲存資料反轉操作,置放有該元件之該選擇位置為一記憶體位置,且自另一選擇位置獲得該輸入資料之該元件。例如,使用該指令之一或多個欄位指定該另一選擇位置,且使用該指令之一或多個其他欄位判定記憶體位置。作為一實例,修飾符控制為該指令之輸入,其指定待儲存至記憶體中之輸入資料之一或多個元件之元件大小。
藉由使用單架構指令來執行儲存操作及資料反轉操作,而非使用單獨指令來執行兩個操作,執行時間會縮減,且效能得以改良。
在一個實例中,修飾符控制為該指令之輸入,且該複數個值包括指示元件大小為半字組之第一值、指示元件大小為字組之第二值,及指示元件大小為雙字組之第三值。在另一實例中,該複數個值包括指示元件大小為四倍字組之第四值。作為一特定實例,修飾符控制包括於該指令之遮罩欄位中。
作為一實例,該指令包括提供指示待執行之操作之操作碼的至少一個操作碼欄位;待用於指定待由該指令使用之暫存器的暫存器欄位及暫存器延伸欄位;用於判定待由該指令使用之位址的索引暫存器欄位、基底欄位及移位欄位;以及包括修飾符控制之遮罩欄位。
本文中亦描述及主張與一或多個態樣有關之電腦實施方法及系統。另外,本文中亦描述及可能主張與一或多個態樣有關之服務。
經由本文中所描述之技術實現額外特徵及優點。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之一部分。
根據本發明之態樣,提供一種促進運算環境內之處理的能力。在一個實例中,該能力包括在載入或儲存操作期間反轉資料之次序。例如,反轉資料元件內之位元組(或其他資料單元)或反轉資料元件自身。這可在載入來自記憶體之資料或將資料儲存至記憶體時發生。藉由反轉資料之次序,促進某些操作,包括但不限於轉換端序。例如,在機器學習或使用待執行於具有不同端序之不同機器上之模型的其他任務中使用端序轉換。藉由轉換端序,促進處理,且改良效能。
作為一個實例,該能力包括架構化指令,其用以執行載入/儲存操作及資料反轉(在本文中被稱作載入及/或儲存反轉處理)以作為單架構指令之執行之部分。例如,提供向量載入位元組反轉元件指令、向量載入元件反轉指令、向量儲存位元組反轉元件指令及向量儲存元件反轉指令。每個指令均為指令集架構(ISA)之部分。例如,每個指令在硬體/軟體介面處均為單架構機器指令(例如,硬體指令)。每個指令均為通用處理器指令集架構(ISA)之部分,其藉由處理器,諸如通用處理器上之程式(例如,使用者程式、作業系統或其他程式)分派。
參考圖1A描述併有及使用本發明之一或多個態樣的運算環境之一個實施例。舉例而言,運算環境100包括處理器102 (例如,中央處理單元)、記憶體104 (例如,主記憶體;亦稱為系統記憶體、主儲存器、中央儲存器、儲存器)及一或多個輸入/輸出(I/O)裝置及/或介面106,前述各者經由例如一或多個匯流排108及/或其他連接而彼此耦接。
在一個實例中,處理器102係基於由紐約阿蒙克市之國際商業機器公司供應的z/Architecture硬體架構,且為伺服器之部分,諸如IBM Z®
伺服器,其亦由國際商業機器公司供應且實施z/Architecture硬體架構。z/Architecture硬體架構之一個實施例描述於名為「z/Architecture操作原理(z/Architecture Principles of Operation)」之公開案(IBM公開案第SA22-7832-11號,第12版,2017年9月)中,該公開案特此以全文引用之方式併入本文中。然而,z/Architecture硬體架構僅為一個實例架構;其他架構及/或其他類型之運算環境可包括及/或使用本發明之一或多個態樣。在一個實例中,處理器執行亦由國際商業機器公司供應之作業系統,諸如z/OS®
作業系統。
處理器102包括用以執行指令之複數個功能組件。如圖1B中所描繪,此等功能組件包括例如:指令提取組件120,其用以提取待執行之指令;指令解碼單元122,其用以解碼所提取指令且用以獲得經解碼指令之運算元;指令執行組件124,其用以執行經解碼指令;記憶體存取組件126,其用以在必要時為指令執行存取記憶體;及寫回組件130,其用以提供經執行指令之結果。根據本發明之一或多個態樣,此等組件中之一或多者可包括載入及/或儲存反轉處理中所使用之一或多個其他組件之至少一部分或能夠存取該一或多個其他組件,如本文中所描述。該一或多個其他組件包括例如載入/儲存反轉組件136。
參考圖2描述併有及使用本發明之一或多個態樣的運算環境之另一實例。在一個實例中,運算環境係基於z/Architecture硬體架構;然而,運算環境可基於由國際商業機器公司或其他公司供應之其他架構。
參考圖2,在一個實例中,運算環境包括中央電子裝置複合體(CEC) 200。CEC 200包括複數個組件,諸如記憶體202 (亦稱為系統記憶體、主記憶體、主儲存器、中央儲存器、儲存器),其耦接至一或多個處理器(亦稱為中央處理單元(CPU)) 204及輸入/輸出子系統206。
記憶體202包括例如一或多個邏輯分割區208、管理邏輯分割區之超管理器210,及處理器韌體212。超管理器210之一個實例為由紐約阿蒙克市之國際商業機器公司供應的處理器資源/系統管理器(PR/SM™)超管理器。如本文中所使用,韌體包括例如處理器之微碼。其包括例如用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一個實施例中,其包括例如專屬碼,其通常作為包括受信任軟體或特定於底層硬體之微碼之微碼遞送,且控制對系統硬體之作業系統存取。
每一邏輯分割區208能夠充當單獨系統。亦即,每一邏輯分割區可獨立地經重設,運行諸如z/OS作業系統或另一作業系統之客體作業系統220且與不同程式222一起操作。在邏輯分割區中運行之作業系統或應用程式呈現為能夠存取完整的系統,但實際上,僅其一部分可用。
記憶體202耦接至處理器(例如,CPU) 204,其為可分配至邏輯分割區之實體處理器資源。舉例而言,邏輯分割區208包括一或多個邏輯處理器,其中之每一者表示可動態地分配至邏輯分割區之實體處理器資源204中的全部或一部分。在一個實例中,處理器204包括執行載入及/或儲存反轉處理之載入/儲存反轉組件260,如本文中所描述。
此外,記憶體202耦接至I/O子系統206。I/O子系統206可為中央電子裝置複合體之部分或與其分離。其導引主儲存器202與耦接至中央電子裝置複合體之輸入/輸出控制單元230及輸入/輸出(I/O)裝置240之間的資訊流。
可使用許多類型之I/O裝置。一個特定類型為資料儲存裝置250。資料儲存裝置250可儲存一或多個程式252、一或多個電腦可讀程式指令254,及/或資料等等。電腦可讀程式指令可經組態以進行本發明之態樣的實施例之功能。
經組態以進行本發明之態樣之實施例的功能的電腦可讀程式指令亦可或替代地包括於記憶體202中。許多變化為可能的。
中央電子裝置複合體200可包括及/或耦接至抽取式/非抽取式、揮發性/非揮發性電腦系統儲存媒體。舉例而言,其可包括及/或耦接至非抽取式非揮發性磁性媒體(通常被稱作「硬碟機」)、用於自抽取式非揮發性磁碟(例如,「軟碟」)讀取及寫入至抽取式非揮發性磁碟(例如,「軟碟」)之磁碟機,及/或用於自諸如CD-ROM、DVD-ROM或其他光學媒體之抽取式非揮發性光碟讀取或寫入至抽取式非揮發性光碟之光碟機。應理解,可結合中央電子裝置複合體200使用其他硬體及/或軟體組件。實例包括但不限於:微碼、裝置驅動器、冗餘處理單元、外部磁碟機陣列、RAID系統、磁帶機及資料存檔儲存系統等。
另外,中央電子裝置複合體200可與眾多其他通用或專用運算系統環境或組態一起操作。可適合與中央電子裝置複合體200一起使用之熟知運算系統、環境及/或組態之實例包括但不限於:個人電腦(PC)系統、伺服器電腦系統、精簡型用戶端、複雜型用戶端、手持型或膝上型電腦裝置、多處理器系統、基於微處理器之系統、機上盒、可程式化消費型電子裝置、網路PC、小型電腦系統、大型電腦系統及包括以上系統或裝置中之任一者的分散式雲端運算環境,以及其類似者。
儘管本文中描述運算環境之各種實例,但本發明之一或多個態樣可與許多類型之環境一起使用。本文中所提供之運算環境僅為實例。
根據本發明之一態樣,諸如運算環境100或中央電子裝置複合體200的運算環境執行一或多個指令以執行載入及/或儲存反轉處理。此等指令之實例包括向量載入位元組反轉元件指令、向量載入元件反轉指令、向量儲存位元組反轉元件指令及向量儲存元件反轉指令,其各自在下文描述。每個指令具有例如向量暫存器及索引儲存操作及經延伸操作碼(opcode)欄位格式(VRX)。
在一個實施例中,此等指令為向量設施之部分;然而,在其他實施例中,指令並非向量設施之部分,但替代地可為其他設施之部分。舉例而言,向量設施提供介於一至十六個元件範圍內的固定大小向量。根據本發明之一或多個態樣,每個向量包括由向量操作/指令,諸如本文中所描述之指令操作的資料。在一個實施例中,若向量由多個元件構成,則每一元件與其他元件並行地經處理。在一個實例中,並未出現指令完成直至完成所有元件之處理。
向量資料以例如與其他資料格式相同之自左向右順序呈現於儲存器中。資料格式之編號為0至7的位元構成儲存器中之最左(最小編號)位元組位置中的位元組,位元8至15形成下一順序位置中之位元組,等等。在另一實例中,向量資料可按諸如自右向左之另一順序呈現於儲存器中。
在下文參考圖3A至圖6B描述關於指令中之每一者的其他細節。在一個實例中,使用通用處理器(例如,處理器102或204)執行每個指令。在本文中之描述中,指示特定位置、特定欄位及/或欄位之特定大小(例如,特定位元組及/或位元)。然而,可提供其他位置、欄位及/或大小。另外,儘管描述了各種欄位及暫存器,但本發明之一或多個態樣可使用其他、額外或更少欄位或暫存器,或其他大小之欄位及暫存器等。許多變化係可能的。舉例而言,可使用隱含暫存器而非指令之明確指定之暫存器或欄位,及/或可使用明確指定之暫存器或欄位而非隱含暫存器或欄位。其他變化亦係可能的。又另外,儘管可指定將位元設定為例如一或零之特定值,但此僅為實例。在其他實例中,可將位元設定為不同值,諸如相反值或另一值。同樣,許多變化為可能的。
最初參考圖3A,描述向量載入位元組反轉元件(VLBR)指令。此指令將資料之元件自記憶體(或另一源位置)載入至另一位置(例如,暫存器或另一位置)並反轉經載入之每個元件內之資料(例如,位元組),以作為指令執行之部分。在一個實例中,向量載入位元組反轉元件指令300包括:包括指定向量載入位元組反轉元件操作之操作碼之複數個操作碼(opcode)欄位302a、302b (例如,位元0至7及40至47);指示向量暫存器指定之運算元的向量暫存器欄位(V1
) 304 (例如,位元8至11);指示待由指令使用之一般暫存器的索引欄位(X2
) 306 (例如,位元12至15);指示待由指令使用之另一一般暫存器的基底欄位(B2
) 308 (例如,位元16至19);包括添加至由X2
及B2
欄位指定之一般暫存器之內容以形成指令之第二運算元(在記憶體中)之位址之移位(例如,12位元無正負號整數)的移位欄位(D2
) 310 (例如,位元20至31);由指令使用的遮罩欄位(M3
) 312 (例如,位元32至35);以及用於延伸由指令指定之一或多個向量暫存器指定之運算元(例如,V1
)的暫存器延伸位元(RXB)欄位314 (例如,位元36至39)。在一個實例中,欄位304至314中之每一者與一或多個操作碼欄位分開且獨立於操作碼欄位。另外,在一個實施例中,該等欄位彼此分離且獨立;然而,在其他實施例中,可組合多於一個欄位。
在其他實施例中,可判定或在以其他方式獲得運算元之位址。記憶體可使用其他暫存器、最接近的欄位及/或任何其他機構存取。另外,在其他實施例中,RXB可能並未提供及/或使用。其他變化係可能的。
在一個實例中,暫存器延伸位元或RXB 314包括向量暫存器指定之運算元之最高有效位元(例如,在此實例中為V1
)。將保留用於未由指令指定之暫存器指定項的位元且將其設定為零。
在一個實例中,RXB欄位包括四個位元(例如,位元0至3),且該等位元界定如下:
0 - 用於指令之第一向量暫存器指定項的最高有效位元。
1 - 用於指令之第二向量暫存器指定項(若存在)的最高有效位元。
2 - 用於指令之第三向量暫存器指定項(若存在)的最高有效位元。
3 - 用於指令之第四向量暫存器指定項(若存在)的最高有效位元。
每一位元藉由例如組譯器取決於暫存器編號而設定為零或一。舉例而言,對於暫存器0至15,將位元設定為0;對於暫存器16至31,將位元設定為1,等等。在一個實施例中,每一RXB位元係用於指令中包括一或多個向量暫存器之特定位置的延伸位元。例如,在一或多個向量指令中,將針對位置8至11之延伸位元中之RXB之位元0指派給例如V1
;且以此類推。在另一實施例中,RXB欄位包括額外位元,且多於一個位元用作每一向量或位置之延伸。
在一個實例中,向量(V1
)欄位以及其由RXB指定之對應延伸位元指定向量暫存器。特定而言,對於向量暫存器,使用例如暫存器欄位之四位元欄位外加其作為最高有效位元之暫存器延伸位元(RXB)來指定含有運算元之暫存器。舉例而言,若四位元欄位係0110且延伸位元係0,則五位元欄位00110指示暫存器編號6。
在一個實施例中,M3
欄位(例如,欄位312)指定待載入元件之大小。在一個實例中,若指定保留值,則辨識出規格異常狀況。實例大小提供於下文中(其他大小為可能的):
M3
元件大小
0 保留
1 半字組
2 字組
3 雙字組
4 四倍字組
5-15 保留
在執行向量載入位元組反轉元件指令時,在一個實例中,將第二運算元(例如,使用例如使用X2
、B2
及D2
欄位產生之第二運算元位址定位的16位元組第二運算元)載入至第一運算元位置中(例如,使用V1
及RXB欄位指定之向量暫存器)。對於第二運算元之每個元件(其大小取決於M3
),當該元件被置放於對應的第一運算元元件位置中時,反轉位元組次序(或另一次序)。例如,元件之最左位元組變為該元件之最右位元組,自左邊起的第二位元組變為自右邊起的第二位元組,等等。
基於元件大小自執行指令所得之實例位元組位置展示於圖3B中。如所描繪,運算元2 (320)包括待載入自記憶體之資料(例如,資料之16個位元組)。若M3
等於4 (四倍字組),則運算元1中之結果如322處所示;若M3
等於3 (雙字組),則結果如324處所示;若M3
等於2 (字組),則結果如326處所示;以及若M3
等於1 (半字組),則結果如328處所示。
為了進一步解釋,假定在一個實例中M3
= 2,則元件大小為字組(例如,4個位元組)。因此,在執行VLBR時,將由第二運算元位址指定之記憶體中運算元2 (320)之第一元件(例如,位元組0、1、2、3)置於運算元1之第一元件中(例如,由V1
及RXB指定之向量暫存器)且在運算元1中反轉元件之位元組(例如,位元組3、2、1、0);將運算元2之第二元件(例如,位元組4、5、6、7)置於運算元1之第二元件中且反轉元件之位元組(例如,位元組7、6、5、4);將運算元2之第三元件(例如,位元組8、9、10、11)置於運算元1之第三元件中且反轉元件之位元組(例如,位元組11、10、9、8);以及將運算元2之第四元件(例如,位元組12、13、14及15)置於運算元1之第四元件中且反轉元件之位元組(例如,位元組15、14、13、12)。針對可經由修飾符控制選擇之另一元件大小執行類似處理。
在一個實例中,由VLBR之執行產生的條件碼保持不變,且實例程式例外狀況包括例如:存取(提取,運算元2);DXC FE向量指令情況下之資料;操作(若未安裝用於z/Architecture硬體架構之向量增強設施2);規格;以及異動約束。
載入及反轉資料之另一指令為向量載入元件反轉(VLER)指令,參考圖4A描述其實例。此指令將資料之元件自記憶體(或另一源位置)載入至另一位置(例如,暫存器或另一位置)且反轉經載入元件,以作為指令執行之部分。在一個實例中,向量載入元件反轉指令400包括:包括指定向量載入元件反轉操作之操作碼之複數個操作碼(opcode)欄位402a、402b (例如,位元0至7及40至47);指示向量暫存器指定之運算元的向量暫存器欄位(V1
) 404 (例如,位元8至11);指示待由指令使用之一般暫存器的索引欄位(X2
) 406 (例如,位元12至15);指示待由指令使用之另一一般暫存器的基底欄位(B2
) 408 (例如,位元16至19);包括添加至由X2
及B2
欄位指定之一般暫存器之內容以形成指令之第二運算元(在記憶體中)之位址之移位(例如,12位元無正負號整數)的移位欄位(D2
) 410 (例如,位元20至31);由指令使用的遮罩欄位(M3
) 412 (例如,位元32至35);以及用於延伸由指令指定之向量暫存器指定之運算元(V1
)的暫存器延伸位元(RXB)欄位414 (例如,位元36至39),如上文所描述。在一個實例中,欄位404至414中之每一者與一或多個操作碼欄位分開且獨立於操作碼欄位。另外,在一個實施例中,該等欄位彼此分離且獨立;然而,在其他實施例中,可組合多於一個欄位。
在其他實施例中,可判定或在以其他方式獲得運算元之位址。記憶體可使用其他暫存器、最接近的欄位及/或任何其他機構存取。另外,在其他實施例中,RXB可能並未提供及/或使用。其他變化係可能的。
在一個實施例中,M3
欄位指定待載入之一或多個元件之大小。在一個實例中,若指定保留值,則辨識出規格異常狀況。實例大小提供於下文中:
M3
元件大小
0 保留
1 半字組
2 字組
3 雙字組
4-15 保留
對於四倍字組,其他大小亦為可能的,包括但不限於M3
= 4。
在執行向量載入元件反轉指令時,在一個實例中,將第二運算元(例如,使用例如使用X2
、B2
及D2
欄位產生之第二運算元位址定位的16位元組第二運算元)載入至第一運算元位置中(例如,使用V1
及RXB欄位指定之向量暫存器)。當載入至向量暫存器中時,反轉元件之次序。例如,儲存器中之元件零變為向量暫存器中之最右元件,儲存器中之元件一變為倒數第二個元件,等等。在此實例中,元件自身內之位元組並未反轉。
基於元件大小自執行指令所得之實例位元組位置展示於圖4B中。如所描繪,運算元2 (420)包括待載入自記憶體之資料(例如,資料之16個位元組)。若M3
等於3 (雙字組),則結果如422處所示;若M3
等於2 (字組),則結果如424處所示;以及若M3
等於1 (半字組),則結果如426處所示。
為了進一步解釋,假定在一個實例中M3
= 2,則元件大小為字組(例如,4個位元組)。因此,在VLER之執行中,將由第二運算元位址指定之記憶體中運算元2 (420)之第一元件(例如,位元組0、1、2、3)在運算元1之最右元件中置於運算元1 (例如,由V1
及RXB指定之向量暫存器)中,因此反轉輸出中之元件,但不反轉元件內之位元組;將運算元2之第二元件(例如,位元組4、5、6、7)置於運算元1之倒數第二個元件中;將運算元2之第三元件(例如,位元組8、9、10、11)置於運算元1之倒數第三個元件中;以及將運算元2之第四元件(例如,位元組12、13、14及15)置於運算元1之第一元件中。針對可經由修飾符控制選擇之另一元件大小執行類似處理。
在一個實例中,由VLER之執行產生的條件碼保持不變,且實例程式例外狀況包括例如:存取(提取,運算元2);DXC FE向量指令情況下之資料;操作(若未安裝用於z/Architecture硬體架構之向量增強設施2);規格;以及異動約束。
根據本發明之一態樣,除載入反轉指令之外,亦提供儲存反轉指令。例如,參考圖5A,描述向量儲存位元組反轉元件(VSTBR)指令。此指令將資料之元件自另一位置(例如,暫存器或另一位置)儲存至記憶體(或另一位置)中並反轉經儲存之每個元件內之資料(例如,位元組),以作為指令執行之部分。在一個實例中,向量儲存位元組反轉元件指令500包括:包括指定向量儲存位元組反轉元件操作之操作碼之複數個操作碼(opcode)欄位502a、502b (例如,位元0至7及40至47);指示向量暫存器指定之運算元的向量暫存器欄位(V1
) 504 (例如,位元8至11);指示待由指令使用之一般暫存器的索引欄位(X2
) 506 (例如,位元12至15);指示待由指令使用之另一一般暫存器的基底欄位(B2
) 508 (例如,位元16至19);包括添加至由X2
及B2
欄位指定之一般暫存器之內容以形成指令之第二運算元(在記憶體中)之位址之移位(例如,12位元無正負號整數)的移位欄位(D2
) 510 (例如,位元20至31);由指令使用的遮罩欄位(M3
) 512 (例如,位元32至35);以及用於延伸由指令指定之向量暫存器指定之運算元(V1
)的暫存器延伸位元(RXB)欄位514 (例如,位元36至39),如上文所描述。在一個實例中,欄位504至514中之每一者與一或多個操作碼欄位分開且獨立於操作碼欄位。另外,在一個實施例中,該等欄位彼此分離且獨立;然而,在其他實施例中,可組合多於一個欄位。
在其他實施例中,可判定或在以其他方式獲得運算元之位址。記憶體可使用其他暫存器、最接近的欄位及/或任何其他機構存取。另外,在其他實施例中,RXB可能並未提供及/或使用。其他變化係可能的。
在一個實施例中,M3
欄位指定待儲存元件之大小。在一個實例中,若指定保留值,則辨識出規格異常狀況。實例大小提供於下文中(其他大小為可能的):
M3
元件大小
0 保留
1 半字組
2 字組
3 雙字組
4 四倍字組
5-15 保留
在執行向量儲存位元組反轉元件指令時,在一個實例中,將第一運算元(例如,使用V1
及RXB欄位指定之向量暫存器之內容)儲存至記憶體中之第二運算元中(例如,使用例如使用X2
、B2
及D2
欄位產生之第二運算元位址定位的16位元組第二運算元)。對於第一運算元之每個元件,當元件被置放於16位元組儲存器之對應元件中時,反轉位元組次序(或另一次序)。例如,元件之最左位元組變為該元件之最右位元組,自左邊起的第二位元組變為自右邊起的第二位元組,等等。
基於元件大小自執行指令所得之實例位元組位置展示於圖5B中。如所描繪,運算元1 (520)包括待儲存至記憶體中之資料(例如,資料之16個位元組)。若M3
等於4 (四倍字組),則運算元2中之結果如522處所示;若M3
等於3 (雙字組),則結果如524處所示;若M3
等於2 (字組),則結果如526處所示;以及若M3
等於1 (半字組),則結果如528處所示。
為了進一步解釋,假定在一個實例中M3
= 2,則元件大小為字組(例如,4個位元組)。因此,在執行VSTBR時,將例如由V1
及RXB指定之向量暫存器中運算元1 (520)之第一元件(例如,位元組0、1、2、3)置於運算元2之第一元件中(例如,在第二運算元位址處啟動之記憶體中)且在運算元2中反轉元件之位元組(例如,位元組3、2、1、0);將運算元1之第二元件(例如,位元組4、5、6、7)置於運算元2之第二元件中且反轉元件之位元組(例如,位元組7、6、5、4);將運算元1之第三元件(例如,位元組8、9、10、11)置於運算元2之第三元件中且反轉元件之位元組(例如,位元組11、10、9、8);以及將運算元1之第四元件(例如,位元組12、13、14及15)置於運算元2之第四元件中且反轉元件之位元組(例如,位元組15、14、13、12)。針對可經由修飾符控制選擇之另一元件大小執行類似處理。
在一個實例中,由VSTBR之執行產生的條件碼保持不變,且實例程式例外狀況包括例如:存取(提取,運算元2);DXC FE向量指令情況下之資料;操作(若未安裝用於z/Architecture硬體架構之向量增強設施2);規格;以及異動約束。
反轉資料之另一儲存指令為向量儲存元件反轉(VSTER)指令,參考圖6A描述其實例。此指令將資料之元件自另一位置(例如,暫存器或另一位置)儲存至記憶體(或另一位置)中並反轉經儲存之元件,以作為指令執行之部分。在一個實例中,向量儲存元件反轉指令600包括:包括指定向量儲存元件反轉操作之操作碼之複數個操作碼(opcode)欄位602a、602b (例如,位元0至7及40至47);指示向量暫存器指定之運算元的向量暫存器欄位(V1
) 604 (例如,位元8至11);指示待由指令使用之一般暫存器的索引欄位(X2
) 606 (例如,位元12至15);指示待由指令使用之另一一般暫存器的基底欄位(B2
) 608 (例如,位元16至19);包括添加至由X2
及B2
欄位指定之一般暫存器之內容以形成指令之第二運算元(在記憶體中)之位址之移位(例如,12位元無正負號整數)的移位欄位(D2
) 610 (例如,位元20至31);由指令使用的遮罩欄位(M3
) 612 (例如,位元32至35);以及用於延伸由指令指定之向量暫存器指定之運算元(V1
)的暫存器延伸位元(RXB)欄位614 (例如,位元36至39),如上文所描述。在一個實例中,欄位604至614中之每一者與一或多個操作碼欄位分開且獨立於操作碼欄位。另外,在一個實施例中,該等欄位彼此分離且獨立;然而,在其他實施例中,可組合多於一個欄位。
在其他實施例中,可判定或在以其他方式獲得運算元之位址。記憶體可使用其他暫存器、最接近的欄位及/或任何其他機構存取。另外,在其他實施例中,RXB可能並未提供及/或使用。其他變化係可能的。
在一個實施例中,M3
欄位指定待儲存元件之大小。在一個實例中,若指定保留值,則辨識出規格異常狀況。實例大小提供於下文中:
M3
元件大小
0 保留
1 半字組
2 字組
3 雙字組
4-15 保留
對於四倍字組,其他大小亦為可能的,包括但不限於M3
= 4。
在執行向量儲存元件反轉指令時,在一個實例中,將第一運算元(例如,使用V1
及RXB欄位指定之向量暫存器之內容)儲存至記憶體中之第二運算元中(例如,使用例如使用X2
、B2
及D2
欄位產生之第二運算元位址定位的16位元組第二運算元)。當儲存至儲存位置中時,反轉元件之次序。例如,向量暫存器中之最右元件變為儲存器中之元件零,倒數第二個元件變為儲存器中之元件一,等等。在此實例中,元件自身內之位元組並未反轉。
基於元件大小自執行指令所得之實例位元組位置展示於圖6B中。如所描繪,運算元1 (620)包括待儲存至記憶體中之資料(例如,資料之16個位元組)。若M3
等於3 (雙字組),則結果如622處所示;若M3
等於2 (字組),則結果如624處所示;以及若M3
等於1 (半字組),則結果如626處所示。
為了進一步解釋,假定在一個實例中M3
= 2,則元件大小為字組(例如,4個位元組)。因此,在VSTER之執行中,將例如由V1
及RXB指定之向量暫存器中運算元1 (620)之第一元件(例如,位元組0、1、2、3)在運算元2之最右元件中置於運算元2 (例如,使用第二運算元位址定位之記憶體)中,因此反轉輸出中之元件,但不反轉元件內之位元組;將運算元1之第二元件(例如,位元組4、5、6、7)置於運算元2之倒數第二個元件中;將運算元1之第三元件(例如,位元組8、9、10、11)置於運算元2之倒數第三個元件中;以及將運算元1之第四元件(例如,位元組12、13、14及15)置於運算元2之第一元件中。針對可經由修飾符控制選擇之另一元件大小執行類似處理。
在一個實例中,由VSTER之執行產生的條件碼保持不變,且實例程式例外狀況包括例如:存取(提取,運算元2);DXC FE向量指令情況下之資料;操作(若未安裝用於z/Architecture硬體架構之向量增強設施2);規格;以及異動約束。
參考圖7至圖9描述關於載入及儲存反轉指令之執行的其他細節。在此實例中,參考小端序格式與大端序格式之間的轉換論述指令。然而,本文中所描述之指令可用於其他目的。
最初參考圖7,在一個實施例中,指令700,諸如向量載入位元組反轉元件指令、向量載入元件反轉指令、向量儲存位元組反轉元件指令或向量儲存元件反轉指令包括複數個欄位,包括修飾符控制欄位702 (例如,M3
欄位,諸如M3
欄位312、412、512或612)及包括指令文本(Itext)之一或多個欄位704。指令文本包括例如由指令使用的欄位,包括例如一或多個操作碼欄位(例如,操作碼欄位302a、302b;402a、402b;502a、502b;或602a、602b);向量暫存器欄位(例如,V1
304、V1
404、V1
504或V1
604);索引欄位(例如,X2
306、X2
406、X2
506或X2
606);基底欄位(例如,B2
308、B2
408、B2
508或B2
608);移位欄位(例如,D2
310、D2
410、D2
510或D2
610)及/或暫存器位元延伸欄位(例如,RXB 314、RXB 414、RXB 514或RXB 614)。Itext 704中可包括額外、較少及/或其他欄位。在一個實例中,可包括欄位702以作為指令文本之部分。其他變化亦係可能的。
在另一實施例中,修飾符控制(例如,M3
)並非處於指令之顯式欄位中,而是替代地包括於指令之隱含欄位或暫存器中。另外,在另一實施例中,修飾符控制並非指令自身之部分,而是處於可存取指令之位置(例如,暫存器或記憶體位置),或為用於修飾待執行指令之另一指令(例如,前綴指令)之部分。其他變化係可能的。
繼續參考圖7,將指令(例如,指令700)分派至處理器之指令排序單元(ISU) 708之發佈佇列706,該指令在此可等待直至例如其運算元可用(例如,第一運算元、第二運算元)。當就緒時,該指令經發佈至該處理器之執行單元722的適當功能執行單元720。作為一實例,由於該指令為向量指令,因此將其發佈至執行向量運算之向量單元。其他實例為可能的。
執行單元720接收待執行指令以及修飾符控制702 (亦被稱作M3
位元或el_endian)。執行單元720經界定以處理呈大端序格式之資料。因此,若資料呈小端序格式或將轉換回至小端序格式,則使用例如排列組件730 (例如,硬體組件)排列資料。例如,若所接收指令指示將排列資料(例如,基於操作碼,諸如操作碼302a、302b;402a、402b;502a、502b;或602a、602b),則排列組件730用於基於操作碼及修飾符控制排列資料,如本文中所描述。
例如,若操作碼指示載入反轉指令(載入位元組反轉元件或載入元件反轉),則排列組件730獲得待載入自記憶體之資料(例如,來自快取記憶體740之呈小端序格式之資料)以及修飾符控制(例如,el_endian-指示元件大小)與待執行之特定操作(例如,載入位元組反轉元件或載入元件反轉),並排列資料,從而將排列資料(例如,呈大端序格式)保存至選擇位置,諸如暫存器。這進一步參考圖8描述。
在一個實例中,參考圖8,將載入指令發佈至處理器之執行單元(例如,執行單元722)-步驟800。處理器之執行單元開始執行指令,且資料載入自快取記憶體階層740 (使用例如第二運算元位址)-步驟802。判定是否執行小端序轉換-查詢804。在一個實例中,此係基於指令之操作碼,其指示這是否為載入及資料反轉指令。若將執行轉換,則根據本發明之一態樣,排列組件730用於基於元件大小及待執行之轉換之類型(例如,載入位元組反轉元件或載入元件反轉,基於操作碼)而排列資料-步驟806。其後或若將不執行小端序轉換,則將資料(原始格式或經排列)保存至暫存器(例如,如由V1
及RXB指定)-步驟808。在一個實例中,記憶體中之資料呈小端序格式,且儲存至暫存器之排列資料呈大端序格式。此僅為一個實例。在其他實例中,記憶體中之資料呈大端序格式且排列資料呈小端序格式。其他變化係可能的。
類似地,返回至圖7,若待執行指令之操作碼指示儲存反轉指令(儲存位元組反轉元件或儲存元件反轉),則排列組件730獲得待自選擇位置(例如,第一運算元)儲存至記憶體中之資料(例如,呈大端序格式)以及修飾符控制(例如,el_endian-指示元件大小)與待執行之特定操作(例如,儲存位元組反轉元件或儲存元件反轉),並排列資料,從而將排列資料(例如,呈小端序格式)保存至記憶體,諸如快取記憶體740。這進一步參考圖9描述。
在一個實例中,參考圖9,將儲存指令發佈至處理器之執行單元(例如,執行單元722)-步驟900。處理器之執行單元開始執行指令,其包括判定是否執行小端序轉換-查詢902。在一個實例中,此係基於指令之操作碼,其指示此是否為儲存及資料反轉指令。若將執行轉換,則根據本發明之一態樣,排列組件730用於基於元件大小及待執行之特定操作(例如,儲存位元組反轉元件或儲存元件反轉)而排列由例如指令之V1
及RXB指定之暫存器中之資料-步驟904。其後或若將不執行小端序轉換,則將資料(原始格式或經排列)儲存至快取記憶體階層740 (使用例如第二運算元位址)-步驟906。在一個實例中,暫存器中之資料呈大端序格式,且儲存至快取記憶體之排列資料呈小端序格式。此僅為一個實例。在其他實例中,暫存器中之資料呈小端序格式且排列資料呈大端序格式。其他變化係可能的。
上文描述亦可在執行載入或儲存操作的同時排列資料的載入及儲存指令。藉由使用單架構指令來執行載入或儲存操作及排列資料,促進處理,且提高效能。藉由使用一個指令來執行載入/儲存並進行排列,而非使用單獨指令來執行載入/儲存並進行排列(執行載入/儲存之一個指令及執行排列之一個指令),縮減執行時間,且提高效能,從而促進電腦自身內之處理以及使用彼等操作之任務。
儘管展示並描述了各種實施例,但其他變化係可能的。例如,可使用反轉元件,以及反轉元件內之位元組的指令。其他變化係可能的。另外,儘管在一個實例中,元件內之位元組經反轉,但在其他實例中,可反轉其他大小之資料單元。又另外,可反轉除元件之外的單元。許多變化係可能的。
本發明之一或多個態樣不可避免地與電腦技術相關且促進電腦內之處理,從而改良其效能。藉由例如使用載入或儲存反轉指令切換端序來促進處理。當處理器正以不同端序格式操作時,這有助於處理。藉由促進處理,改良效能,以及將使用各種端序格式之任務或操作。
可例如在機器學習中使用指令,其中針對一個端序格式產生之模型將用於具有另一端序格式之機器上。這提供了不同端序之處理器之間的相容性,從而改良處理及效能。存在許多可能性。
參考圖10A至圖10B描述促進運算環境內之處理的一個實施例之其他細節,此係因為該運算環境與本發明之一或多個態樣有關。
參考圖10A,在一個實施例中,藉由例如處理器(例如,處理器102或204)之硬體執行用以執行資料反轉操作之指令(1000)。該硬體可在處理器內或出於自處理器接收指令之目的而耦接至處理器,其例如獲得、解碼及設置該指令以在硬體上執行。其他變化係可能的。指令例如為單架構指令(1002)。
該執行包括獲得輸入資料,對該輸入資料執行資料反轉操作(1004);及獲得指令之修飾符控制(1006)。該修飾符控制具有針對該指令所界定之複數個值中之一個值(1008)且指示元件大小(1010)。對該輸入資料執行該資料反轉操作(1012)。該執行包括將該輸入資料之一元件置於選擇位置,該元件具有藉由該修飾符控制所指示之該元件大小(1014);反轉該元件中該輸入資料之次序(1016);以及基於該輸入資料具有一或多個其他待處理元件而重複該置放及該反轉(1018)。該執行之輸出包括資料之一或多個元件,該等元件包括次序與對應一或多個元件之該輸入資料相反的輸出資料(1020)。
藉由使用具有可選擇元件大小之單架構指令,促進運算環境內之處理。縮減待界定及實施之指令之數目,以及降低架構之複雜度。亦保存記憶體。
在一個實施例中,該資料反轉操作為載入資料反轉操作且自一記憶體位置獲得該輸入資料之該元件(1022)。例如,使用該指令之一或多個欄位判定記憶體位置,且使用該指令之一或多個其他欄位指定選擇位置(1024)。作為一實例,修飾符控制為該指令之輸入,其指定待自記憶體載入至該選擇位置之輸入資料之一或多個元件之元件大小(1026)。基於載入資料反轉操作,反轉經載入元件內之位元組。
藉由使用單架構指令來執行載入操作及資料反轉操作,而非使用單獨指令來執行兩個操作,執行時間會縮減,且效能得以改良。
在另一實施例中,參考圖10B,該資料反轉操作為儲存資料反轉操作,置放有該元件之該選擇位置為一記憶體位置,且自另一選擇位置獲得該輸入資料之該元件(1030)。例如,使用該指令之一或多個欄位指定該另一選擇位置,且使用該指令之一或多個其他欄位判定記憶體位置(1032)。作為一實例,修飾符控制為該指令之輸入,其指定待儲存至記憶體中之輸入資料之一或多個元件之元件大小(1034)。基於儲存資料反轉操作,反轉經儲存元件內之位元組。
藉由使用單架構指令來執行儲存操作及資料反轉操作,而非使用單獨指令來執行兩個操作,執行時間會縮減,且效能得以改良。
在一個實例中,修飾符控制為該指令之輸入,且該複數個值包括指示元件大小為半字組之第一值、指示元件大小為字組之第二值,及指示元件大小為雙字組之第三值(1036)。在另一實例中,該複數個值包括指示元件大小為四倍字組之第四值(1038)。作為一特定實例,修飾符控制包括於該指令之遮罩欄位中(1040)。
作為一實例,該指令包括提供指示待執行之操作之操作碼的至少一個操作碼欄位;待用於指定待由該指令使用之暫存器的暫存器欄位及暫存器延伸欄位;用於判定待由該指令使用之位址的索引暫存器欄位、基底欄位及移位欄位;以及包括修飾符控制之遮罩欄位(1042)。
其他變化及實施例為可能的。
本發明之態樣可由許多類型之運算環境使用。參考圖11A描述併有及使用本發明之一或多個態樣的運算環境之另一實施例。在此實例中,運算環境10包括例如原生中央處理單元(CPU) 12、記憶體14及一或多個輸入/輸出裝置及/或介面16,前述各者經由例如一或多個匯流排18及/或其他連接而彼此耦接。作為實例,運算環境10可包括:由紐約阿蒙克市之國際商業機器公司供應之PowerPC®
處理器;由加州帕洛阿爾托之惠普公司供應的具有因特爾安藤II處理器之HP Superdome;及/或基於由國際商業機器公司、惠普公司、因特爾公司、甲骨文公司或其他公司供應之架構的其他機器。IBM、z/Architecture、IBM Z、z/OS、PR/SM及PowerPC為國際商業機器公司在至少一個司法管轄區中之商標或註冊商標。因特爾及安藤為因特爾公司或其子公司在美國及其他國家中之商標或註冊商標。
原生中央處理單元12包括一或多個原生暫存器20,諸如在環境內之處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示在任何特定時間點處之環境狀態之資訊。
此外,原生中央處理單元12執行儲存於記憶體14中之指令及程式碼。在一個特定實例中,中央處理單元執行儲存於記憶體14中之仿真器程式碼22。此程式碼使在一個架構中組態之運算環境能夠模擬另一架構。舉例而言,仿真器程式碼22允許基於除z/Architecture硬體架構以外之架構的機器(諸如,PowerPC處理器、HP Superdome伺服器或其他者)模擬z/Architecture硬體架構且執行基於z/Architecture硬體架構開發之軟體及指令。
參考圖11B描述與仿真器程式碼22有關之其他細節。儲存於記憶體14中之客體指令30包含經開發以在除原生CPU 12之架構以外之架構中執行的軟體指令(例如,與機器指令相關)。舉例而言,客體指令30可已經設計以在基於z/Architecture硬體架構之處理器上執行,但替代地,在可為例如因特爾安藤II處理器之原生CPU 12上模擬。在一個實例中,仿真器程式碼22包括指令提取常式32,以自記憶體14獲得一或多個客體指令30且視情況提供對所獲得指令之本機緩衝。該仿真器程式碼亦包括指令轉譯常式34,以判定已獲得之客體指令的類型且將該客體指令轉譯成一或多個對應的原生指令36。此轉譯包括(例如)識別待由客體指令執行之函式及選擇一或多個原生指令以執行彼函式。
另外,仿真器程式碼22包括模擬控制常式40以使得執行原生指令。模擬控制常式40可使原生CPU 12執行模擬一或多個先前所獲得之客體指令之原生指令的常式且在此執行完結時,將控制傳回至指令提取常式以模擬獲得下一客體指令或一組客體指令。原生指令36之執行可包括將資料自記憶體14載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行某一類型之算術或邏輯運算,如由轉譯常式判定。
每一常式例如實施於軟體中,該軟體儲存於記憶體中且藉由原生中央處理單元12執行。在其他實例中,一或多個常式或操作實施於韌體、硬體、軟體或其某一組合中。所模擬處理器之暫存器可使用原生CPU之暫存器20或藉由使用記憶體14中之位置來模擬。在實施例中,客體指令30、原生指令36及仿真器程式碼22可駐留於同一記憶體中或可分佈於不同記憶體裝置當中。
上文所描述之運算環境僅為可使用之運算環境的實例。可使用其他環境,包括但不限於未經分割之環境、經分割之環境及/或模擬環境;實施例不限於任何一種環境。
每一運算環境能夠經組態以包括本發明之一或多個態樣。例如,根據本發明之一或多個態樣,每一運算環境可經組態以提供載入/儲存反轉處理。
一或多個態樣可係關於雲端運算。
應理解,儘管本發明包括關於雲端運算之詳細描述,但本文中所敍述之教示的實施不限於雲端運算環境。更確切而言,本發明之實施例能夠結合現在已知或之後開發之任何其他類型之運算環境來實施。
雲端運算為用於使得能夠對可組態運算資源(例如,網路、網路頻寬、伺服器、處理、記憶體、儲存器、應用程式、虛擬機及服務)之共用集區進行便利之按需網路存取的服務遞送之模型,可組態運算資源可藉由最少的管理工作或與服務提供者之互動而快速地佈建及釋放。此雲端模型可包括至少五個特性、至少三個服務模型及至少四個部署模型。
特性如下:
隨選自助服務:雲端消費者可視需要自動地單向佈建運算能力(諸如,伺服器時間及網路儲存器),而無需與服務提供者之人為互動。
廣泛網路存取:可經由網路獲得能力及經由標準機制存取能力,該等標準機制藉由異質精簡型或複雜型用戶端平台(例如,行動電話、膝上型電腦及PDA)促進使用。
資源集用:提供者之運算資源經集用以使用多租用戶模型為多個消費者服務,其中根據需求動態指派及再指派不同實體及虛擬資源。存在位置獨立性之意義,此在於消費者通常並不能夠控制或知道所提供資源之確切位置,但可能能夠在較高抽象層級(例如,國家、州或資料中心)下指定位置。
快速彈性:可快速地且彈性地佈建能力(在一些狀況下,自動地)以迅速地向外延展,且可快速地釋放能力以迅速地向內延展。在消費者看來,可用於佈建之能力常常看起來為無限的且可在任何時間以任何量來購買。
所量測服務:雲端系統藉由在適於服務類型(例如,儲存、處理、頻寬及作用中使用者帳戶)之某一抽象層級下充分利用計量能力而自動控制及最佳化資源使用。可監視、控制及報告資源使用狀況,從而為所利用服務之提供者及消費者兩者提供透明度。
服務模型如下:
軟體即服務(SaaS):提供給消費者之能力係使用在雲端基礎結構上運行之提供者之應用程式。可經由諸如網頁瀏覽器(例如,基於網路之電子郵件)之精簡型用戶端介面自各種用戶端裝置存取應用程式。消費者並不管理或控制包括網路、伺服器、作業系統、儲存器或甚至個別應用程式能力之底層雲端基礎結構,其中可能的例外狀況為有限的使用者特定應用程式組態設定。
平台即服務(PaaS):提供給消費者之能力係將使用由提供者所支援之程式設計語言及工具建立的消費者建立或獲取之應用程式部署至雲端基礎結構上。消費者並不管理或控制包括網路、伺服器、作業系統或儲存器之底層雲端基礎結構,但具有對所部署之應用程式及可能的代管環境組態之應用程式的控制。
基礎結構即服務(IaaS):提供給消費者之能力係供應處理、儲存、網絡及其他基礎運算資源,其中消費者能夠部署及執行可包括作業系統及應用程式之任意軟體。消費者並不管理或控制底層雲端基礎結構,但具有對作業系統、儲存器、所部署應用程式之控制,及可能的對選擇網路連接組件(例如,主機防火牆)之有限控制。
部署模型如下:
私用雲端:僅針對組織操作雲端基礎結構。私用雲端可由組織或第三方來管理且可存在內部部署或外部部署。
社群雲端:該雲端基礎結構由若干組織共用且支援具有共用關注事項(例如,任務、安全要求、策略及合規性考量)的特定社群。私用雲端可由組織或第三方來管理且可存在內部部署或外部部署。
公用雲端:該雲端基礎結構可用於一般大眾或大型工業集團且為出售雲端服務之組織所擁有。
混合雲端:該雲端基礎結構為兩個或大於兩個雲端(私用、社群或公用)之組合物,該等雲端保持獨特實體但藉由實現資料及應用程式攜帶性(例如,用於在雲端之間實現負載平衡之雲端爆裂)之標準化或專屬技術束縛在一起。
藉由集中於無國界、低耦合、模組化及語義互通性對雲端運算環境進行服務定向。雲端運算之關鍵為包括互連節點之網路的基礎結構。
現參考圖12,描繪說明性雲端運算環境50。如所展示,雲端運算環境50包括一或多個雲端運算節點52,雲端消費者所使用之諸如個人數位助理(PDA)或蜂巢式電話54A、桌上型電腦54B、膝上型電腦54C及/或汽車電腦系統54N的本機運算裝置可與該一或多個雲端運算節點通信。節點52可彼此通信。可在一或多個網路(諸如,如上文所描述之私用、社群、公用或混合雲端或其組合)中將該等節點實體地或虛擬地分組(未展示)。此情形允許雲端運算環境50供應基礎結構、平台及/或軟體作為服務,針對該等服務,雲端消費者不需要在本機運算裝置上維持資源。應理解,圖12中所展示之運算裝置54A至54N之類型意欲僅為說明性的,且運算節點52及雲端運算環境50可經由任何類型之網路及/或網路可定址連接(例如,使用網頁瀏覽器)與任何類型之電腦化裝置通信。
現參考圖13,展示由雲端運算環境50 (圖12)所提供之功能抽象層之集合。事先應理解,圖13中所展示之組件、層及功能意欲僅為說明性的且本發明之實施例不限於此。如所描繪,提供以下層及對應功能。
硬體及軟體層60包括硬體及軟體組件。硬體組件之實例包括大型主機61;基於RISC (精簡指令集電腦)架構之伺服器62;伺服器63;刀鋒伺服器64;儲存裝置65;及網路及網路連接組件66。在一些實施例中,軟體組件包括網路應用程式伺服器軟體67及資料庫軟體68。
虛擬化層70提供抽象層,可自該抽象層提供虛擬實體之以下實例:虛擬伺服器71;虛擬儲存器72;虛擬網路73,包括虛擬私用網路;虛擬應用程式及作業系統74;及虛擬用戶端75。
在一個實例中,管理層80可提供下文所描述之功能。資源佈建81提供運算資源及用以執行雲端運算環境內之任務之其他資源的動態採購。當在雲端運算環境內利用資源時,計量及定價82提供成本追蹤,及對此等資源之消耗之帳務處理及發票開立。在一個實例中,此等資源可包括應用程式軟體授權。安全性提供針對雲端消費者及任務之身分識別驗證,以及對資料及其他資源之保護。使用者入口網站83為消費者及系統管理者提供對雲端運算環境之存取。服務等級管理84提供雲端運算資源分配及管理使得滿足所需服務等級。服務等級協定(SLA)規劃及實現85提供雲端運算資源之預先配置及採購,針對雲端運算資源之未來要求係根據SLA來預期。
工作負載層90提供功能性之實例,可針對該功能性利用雲端運算環境。可自此層提供之工作負載及功能的實例包括:地圖繪製及導航91;軟體開發及生命週期管理92;虛擬教室教育遞送93;資料分析處理94;異動處理95;及載入/儲存反轉處理96。
本發明之態樣可為在任何可能之技術細節整合層級處的系統、方法及/或電腦程式產品。該電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有電腦可讀程式指令以使處理器進行本發明之態樣。
電腦可讀儲存媒體可為有形裝置,其可保留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之較特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型緊密光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟性磁碟、機械編碼裝置(諸如其上記錄有指令之凹槽中之打孔卡片或凸起結構)及前述各者之任何合適組合。如本文所使用,不應將電腦可讀儲存媒體本身解釋為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纜傳遞之光脈衝),或經由導線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別運算/處理裝置或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸電纜、光傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別運算/處理裝置內之電腦可讀儲存媒體中。
用於進行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料、用於積體電路系統之組態資料,或原始程式碼或目標碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及程序性程式設計語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者電腦上執行,作為單獨套裝軟體部分在使用者之電腦上執行,部分在使用者之電腦上及部分在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後一種情境中,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,電子電路系統(包括例如可程式化邏輯電路系統、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA))可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路系統而執行電腦可讀程式指令,以便執行本發明之態樣。
本文參考根據本發明之實施例之方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖中之每一區塊,及流程圖說明及/或方塊圖中的區塊之組合。
可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理設備之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理設備之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之手段。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式起作用,使得其中儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施在該一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣的指令。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理設備或其他裝置上,以使一系列操作步驟在該電腦、其他可程式化設備或其他裝置上執行以產生電腦實施之程序,使得在該電腦、其他可程式化設備或其他裝裝置上執行之指令實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例之系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施一或多個指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中所提及之功能可不按諸圖中所提及之次序發生。舉例而言,視所涉及之功能性而定,依次展示之兩個區塊實際上可實質上同時執行,或該等區塊有時可以逆向次序執行。亦將注意,可由執行經指定功能或動作或進行專用硬體及電腦指令之組合的基於專用硬體之系統實施方塊圖及/或流程圖說明之每一區塊及方塊圖及/或流程圖說明中之區塊的組合。
除了上文情形之外,可由供應客戶環境之管理之服務提供者來提供、供應、部署、管理、服務一或多個態樣等。舉例而言,服務提供者可建立、維持、支援(等)電腦程式碼及/或執行用於一或多個消費者之一或多個態樣的電腦基礎結構。作為回報,服務提供者可在訂用及/或費用合約下接收來自消費者之付款(作為實例)。另外或替代地,服務提供者可接收來自向一或多個第三方出售廣告內容之付款。
在一態樣中,可部署一應用程式用於執行一或多個實施例。作為一個實例,應用程式之部署包含提供可操作以執行一或多個實施例之電腦基礎結構。
作為又一態樣,可部署運算基礎結構,包含將電腦可讀程式碼整合至運算系統中,其中程式碼結合運算系統能夠執行一或多個實施例。
作為又一態樣,可提供一種用於整合運算基礎結構之程序,包含將電腦可讀程式碼整合至電腦系統中。電腦系統包含電腦可讀媒體,其中電腦媒體包含一或多個實施例。該程式碼結合電腦系統能夠執行一或多個實施例。
雖然上文描述各種實施例,但其僅為實例。舉例而言,其他架構之運算環境可用於併入及使用一或多個實施例。另外,可使用不同指令或操作。另外,可指定不同類型的指示符。許多變化係可能的。
另外,其他類型之運算環境可為有益的且可加以使用。作為一實例,可使用適合於儲存及/或執行程式碼之資料處理系統,其包括直接或經由系統匯流排間接地耦接至記憶體元件之至少兩個處理器。記憶體元件包括(例如)在實際執行程式碼期間使用之本機記憶體、大容量儲存器,及提供至少某一程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼之次數的快取記憶體。
輸入/輸出或I/O裝置(包括(但不限於)鍵盤、顯示器、指標裝置、DASD、磁帶、CD、DVD、隨身碟(Thumb Drive)及其他記憶體媒體等)可直接或經由介入之I/O控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠變成經由介入之私人網路或公用網路耦接至其他資料處理系統或遠端印表機或儲存裝置。數據機、纜線數據機及乙太網卡僅為幾個可用類型之網路配接器。
本文所用之術語僅出於描述特定實施例之目的,且並不意欲限制本發明。如本文中所使用,除非上下文另外明確地指示,否則單數形式「一(a/an)」及「該」意欲亦包括複數形式。應進一步理解,術語「包含(comprises及/或comprising)」在用於本說明書中時指定所陳述特徵、整數、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組之存在或添加。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個實施例之描述,但其不意欲為窮盡性的或限於所揭示之形式。許多修改及變化對於一般熟習此項技術者將為顯而易見。實施例經選擇及描述以最佳地解釋各種態樣及實際應用,以使得一般熟習此項技術者能夠理解各種實施例及適於所涵蓋之特定用途的各種修改。
10:運算環境
12:原生中央處理單元(CPU)
14:記憶體
16:輸入/輸出裝置及/或介面
18:匯流排
20:原生暫存器
22:仿真器程式碼
30:客體指令
32:指令提取常式
34:指令轉譯常式
36:原生指令
40:模擬控制常式
50:雲端運算環境
52:雲端運算節點
54A:蜂巢式電話
54B:桌上型電腦
54C:膝上型電腦
54N:汽車電腦系統
60:硬體及軟體層
61:大型主機
62:基於精簡指令集電腦(RISC)架構之伺服器
63:伺服器
64:刀鋒伺服器
65:儲存裝置
66:網路及網路連接組件
67:網路應用程式伺服器軟體
68:資料庫軟體
70:虛擬化層
71:虛擬伺服器
72:虛擬儲存器
73:虛擬網路
74:虛擬應用程式
75:虛擬用戶端
80:管理層
81:資源佈建
82:計量及定價
83:使用者入口網站
84:服務等級管理
85:SLA規劃及實現
90:工作負載層
91:地圖繪製及導航
92:軟體開發及生命週期管理
93:虛擬教室教育遞送
94:資料分析處理
95:異動處理
96:載入/儲存反轉處理
100:運算環境
102:處理器
104:記憶體
106:輸入/輸出(I/O)裝置及/或介面
108:匯流排
120:指令提取組件
122:指令解碼單元
124:指令執行組件
126:記憶體存取組件
130:寫回組件
136:載入/儲存反轉組件
200:中央電子裝置複合體(CEC)
202:記憶體
204:處理器
206:輸入/輸出子系統
208:邏輯分割區
210:超管理器
212:處理器韌體
220:客體作業系統
222:程式
230:輸入/輸出控制單元
240:輸入/輸出(I/O)裝置
250:資料儲存裝置
252:程式
254:電腦可讀程式指令
260:載入/儲存反轉組件
300:向量載入位元組反轉元件指令
302a:操作碼欄位
302b:操作碼欄位
304:向量暫存器欄位
306:索引欄位
308:基底欄位
310:移位欄位
312:遮罩欄位
314:暫存器位元延伸欄位
320:運算元2
322:結果
324:結果
326:結果
328:結果
400:向量載入元件反轉指令
402a:操作碼欄位
402b:操作碼欄位
404:向量暫存器欄位
406:索引欄位
408:基底欄位
410:移位欄位
412:遮罩欄位
414:暫存器位元延伸欄位
420:運算元2
422:結果
424:結果
426:結果
500:向量儲存位元組反轉元件指令
502a:操作碼欄位
502b:操作碼欄位
504:向量暫存器欄位
506:索引欄位
508:基底欄位
510:移位欄位
512:遮罩欄位
514:暫存器位元延伸欄位
520:運算元1
522:結果
524:結果
526:結果
528:結果
600:向量儲存元件反轉指令
602a:操作碼欄位
602b:操作碼欄位
604:向量暫存器欄位
606:索引欄位
608:基底欄位
610:移位欄位
612:遮罩欄位
614:暫存器位元延伸欄位
620:運算元1
622:結果
624:結果
626:結果
700:指令
702:修飾符控制欄位
704:欄位
706:發佈佇列
708:指令排序單元(ISU)
720:適當功能執行單元
722:執行單元
730:排列組件
740:快取記憶體
800:步驟
802:步驟
804:查詢
806:步驟
808:步驟
900:步驟
902:查詢
904:步驟
906:步驟
在本說明書之結尾處之申請專利範圍中作為實例特定地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容及目標、特徵及優點自結合隨附圖式進行的以下詳細描述顯而易見,其中:
圖1A描繪併有及使用本發明之一或多個態樣的運算環境之一個實例;
圖1B描繪根據本發明之一或多個態樣的圖1A之處理器的其他細節;
圖2描繪併有及使用本發明之一或多個態樣的運算環境之另一實例;
圖3A描繪根據本發明之一態樣的向量載入位元組反轉元件指令之一個實例;
圖3B描繪根據本發明之一態樣的基於執行向量載入位元組反轉元件指令所得之位元組位置之實例;
圖4A描繪根據本發明之一態樣的向量載入元件反轉指令之一個實例;
圖4B描繪根據本發明之一態樣的基於執行向量載入元件反轉指令所得之位元組位置之實例;
圖5A描繪根據本發明之一態樣的向量儲存位元組反轉元件指令之一個實例;
圖5B描繪根據本發明之一態樣的基於執行向量儲存位元組反轉元件指令所得之位元組位置之實例;
圖6A描繪根據本發明之一態樣的向量儲存元件反轉指令之一個實例;
圖6B描繪根據本發明之一態樣的基於執行向量儲存元件反轉指令所得之位元組位置之實例;
圖7描繪根據本發明之一態樣的執行指令以將資料置於選擇位置並反轉資料之一個實例;
圖8描繪根據本發明之一或多個態樣的與執行圖3A及圖4A之載入指令相關聯的處理的一個實例;
圖9描繪根據本發明之一或多個態樣的與執行圖5A及圖6A之儲存指令相關聯之處理之一個實例;
圖10A至圖10B描繪根據本發明之一態樣的促進運算環境內之處理的一個實例;
圖11A描繪併有及使用本發明之一或多個態樣的運算環境之另一實例;
圖11B描繪圖11A之記憶體的其他細節;
圖12描繪雲端運算環境之一個實施例;且
圖13描繪抽象模型層之一個實例。
700:指令
702:修飾符控制欄位
704:欄位
706:發佈佇列
708:指令排序單元(ISU)
720:適當功能執行單元
722:執行單元
730:排列組件
740:快取記憶體
Claims (20)
- 一種用於促進一運算環境內之處理的電腦程式產品,該電腦程式產品包含: 一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於執行一方法之指令,該方法包含: 執行一指令以執行一資料反轉操作,該指令為一單架構指令,且該執行包括: 獲得輸入資料,對該輸入資料執行該資料反轉操作; 獲得該指令之一修飾符控制,該修飾符控制具有針對該指令所界定之複數個值中之一個值,該修飾符控制指示一元件大小;以及 對該輸入資料執行該資料反轉操作,其中該執行包含: 將該輸入資料之一元件置於一選擇位置,該元件具有藉由該修飾符控制所指示之該元件大小; 反轉該元件中該輸入資料之一次序;以及 基於該輸入資料具有一或多個其他待處理元件而重複該置放及該反轉,其中該執行之一輸出包括資料之一或多個元件,該等元件包括次序與對應一或多個元件之該輸入資料相反的輸出資料。
- 如請求項1之電腦程式產品,其中該資料反轉操作為一載入資料反轉操作且自一記憶體位置獲得該輸入資料之該元件。
- 如請求項2之電腦程式產品,其中該記憶體位置係使用該指令之一或多個欄位判定,且該選擇位置係使用該指令之一或多個其他欄位指定。
- 如請求項2之電腦程式產品,其中該修飾符控制為該指令之一輸入,該輸入指定待自記憶體載入至該選擇位置之該輸入資料之一或多個元件的該元件大小。
- 如請求項1之電腦程式產品,其中該資料反轉操作為一儲存資料反轉操作,置放有該元件之該選擇位置為一記憶體位置,且自另一選擇位置獲得該輸入資料之該元件。
- 如請求項5之電腦程式產品,其中該另一選擇位置係使用該指令之一或多個欄位指定,且該記憶體位置係使用該指令之一或多個其他欄位判定。
- 如請求項5之電腦程式產品,其中該修飾符控制為該指令之一輸入,該輸入指定待儲存至記憶體中之該輸入資料之一或多個元件的該元件大小。
- 如請求項1之電腦程式產品,其中該修飾符控制為該指令之一輸入,且其中該複數個值包含指示該元件大小為一半字組之一第一值、指示該元件大小為一字組之一第二值,及指示該元件大小為一雙字組之一第三值。
- 如請求項1之電腦程式產品,其中該修飾符控制為該指令之一輸入,且其中該複數個值包含指示該元件大小為一四倍字組之一第四值。
- 如請求項1之電腦程式產品,其中該修飾符控制包括於該指令之一遮罩欄位中。
- 如請求項1之電腦程式產品,其中該指令包括提供指示待執行之一操作之一操作碼的至少一個操作碼欄位;待用於指定待由該指令使用之一暫存器的一暫存器欄位及一暫存器延伸欄位;用於判定待由該指令使用之一位址的一索引暫存器欄位、一基底欄位及一移位欄位;以及包括該修飾符控制之一遮罩欄位。
- 一種用於促進一運算環境內之處理的電腦系統,該電腦系統包含: 一記憶體;及 一處理器,其耦接至該記憶體,其中該電腦系統經組態以執行一方法,該方法包含: 執行一指令以執行一資料反轉操作,該指令為一單架構指令,且該執行包括: 獲得輸入資料,對該輸入資料執行該資料反轉操作; 獲得該指令之一修飾符控制,該修飾符控制具有針對該指令所界定之複數個值中之一個值,該修飾符控制指示一元件大小;以及 對該輸入資料執行該資料反轉操作,其中該執行包含: 將該輸入資料之一元件置於一選擇位置,該元件具有藉由該修飾符控制所指示之該元件大小; 反轉該元件中該輸入資料之一次序;以及 基於該輸入資料具有一或多個其他待處理元件而重複該置放及該反轉,其中該執行之一輸出包括資料之一或多個元件,該等元件包括次序與對應一或多個元件之該輸入資料相反的輸出資料。
- 如請求項12之電腦系統,其中該資料反轉操作為一載入資料反轉操作且自一記憶體位置獲得該輸入資料之該元件。
- 如請求項12之電腦系統,其中該資料反轉操作為一儲存資料反轉操作,置放有該元件之該選擇位置為一記憶體位置,且自另一選擇位置獲得該輸入資料之該元件。
- 如請求項12之電腦系統,其中該修飾符控制為該指令之一輸入,且其中該複數個值包含指示該元件大小為一半字組之一第一值、指示該元件大小為一字組之一第二值、指示該元件大小為一雙字組之一第三值,及指示該元件大小為一四倍字組之一第四值。
- 如請求項12之電腦系統,其中該修飾符控制包括於該指令之一遮罩欄位中。
- 一種用於促進一運算環境內之處理的電腦實施方法,該電腦實施方法包含: 執行一指令以執行一資料反轉操作,該指令為一單架構指令,且該執行包括: 獲得輸入資料,對該輸入資料執行該資料反轉操作; 獲得該指令之一修飾符控制,該修飾符控制具有針對該指令所界定之複數個值中之一個值,該修飾符控制指示一元件大小;以及 對該輸入資料執行該資料反轉操作,其中該執行包含: 將該輸入資料之一元件置於一選擇位置,該元件具有藉由該修飾符控制所指示之該元件大小; 反轉該元件中該輸入資料之一次序;以及 基於該輸入資料具有一或多個其他待處理元件而重複該置放及該反轉,其中該執行之一輸出包括資料之一或多個元件,該等元件包括次序與對應一或多個元件之該輸入資料相反的輸出資料。
- 如請求項17之電腦實施方法,其中該資料反轉操作為一載入資料反轉操作且自一記憶體位置獲得該輸入資料之該元件。
- 如請求項17之電腦實施方法,其中該資料反轉操作為一儲存資料反轉操作,置放有該元件之該選擇位置為一記憶體位置,且自另一選擇位置獲得該輸入資料之該元件。
- 如請求項17之電腦實施方法,其中該修飾符控制包括於該指令之一遮罩欄位中。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/279,263 US20200264883A1 (en) | 2019-02-19 | 2019-02-19 | Load/store bytes reversed elements instructions |
| US16/279,263 | 2019-02-19 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202036272A true TW202036272A (zh) | 2020-10-01 |
Family
ID=69526268
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109101669A TW202036272A (zh) | 2019-02-19 | 2020-01-17 | 載入/儲存位元組反轉元件指令 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20200264883A1 (zh) |
| TW (1) | TW202036272A (zh) |
| WO (1) | WO2020169365A1 (zh) |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6728874B1 (en) * | 2000-10-10 | 2004-04-27 | Koninklijke Philips Electronics N.V. | System and method for processing vectorized data |
| GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
| US9557994B2 (en) * | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
| US10423413B2 (en) * | 2013-07-09 | 2019-09-24 | Texas Instruments Incorporated | Vector load and duplicate operations |
| US10671387B2 (en) * | 2014-06-10 | 2020-06-02 | International Business Machines Corporation | Vector memory access instructions for big-endian element ordered and little-endian element ordered computer code and data |
| US20170123792A1 (en) * | 2015-11-03 | 2017-05-04 | Imagination Technologies Limited | Processors Supporting Endian Agnostic SIMD Instructions and Methods |
| US10691456B2 (en) * | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing |
| US10691453B2 (en) * | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector load with instruction-specified byte count less than a vector size for big and little endian processing |
-
2019
- 2019-02-19 US US16/279,263 patent/US20200264883A1/en not_active Abandoned
-
2020
- 2020-01-17 TW TW109101669A patent/TW202036272A/zh unknown
- 2020-02-07 WO PCT/EP2020/053128 patent/WO2020169365A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2020169365A1 (en) | 2020-08-27 |
| US20200264883A1 (en) | 2020-08-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7611833B2 (ja) | 命令の実行における桁検証チェック制御 | |
| TWI651649B (zh) | 用於執行正負號運算十進位指令的電腦程式產品、電腦系統及電腦實施方法 | |
| US11442726B1 (en) | Vector pack and unpack instructions | |
| TW202046142A (zh) | 向量字串搜尋指令 | |
| TWI636397B (zh) | 十進制移位及除法指令 | |
| TW202034155A (zh) | 指令執行中之負零控制 | |
| TWI653576B (zh) | 用於十進位乘法及移位指令之電腦程式產品、電腦系統及電腦實施方法 | |
| TWI729678B (zh) | 用於移動資料及設定儲存金鑰指令之電腦程式產品、電腦系統及電腦實施方法 | |
| US10126976B2 (en) | Integrating sign extensions for loads | |
| WO2020169366A1 (en) | Load/store elements reversed instructions | |
| TWI653579B (zh) | 用於十進位立即載入指令之電腦程式產品、電腦系統及電腦實施方法 | |
| US12423451B2 (en) | Move data and set storage key based on key function control | |
| TW202036272A (zh) | 載入/儲存位元組反轉元件指令 | |
| TWI748329B (zh) | 用於在右至左方向中移動資料之指令之電腦程式產品、電腦系統及電腦實施方法 |