TWI748329B - 用於在右至左方向中移動資料之指令之電腦程式產品、電腦系統及電腦實施方法 - Google Patents
用於在右至左方向中移動資料之指令之電腦程式產品、電腦系統及電腦實施方法 Download PDFInfo
- Publication number
- TWI748329B TWI748329B TW109101668A TW109101668A TWI748329B TW I748329 B TWI748329 B TW I748329B TW 109101668 A TW109101668 A TW 109101668A TW 109101668 A TW109101668 A TW 109101668A TW I748329 B TWI748329 B TW I748329B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- location
- computer
- destination location
- instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 21
- 238000004590 computer program Methods 0.000 title claims description 18
- 238000012545 processing Methods 0.000 claims description 54
- 239000000872 buffer Substances 0.000 claims description 18
- 238000003780 insertion Methods 0.000 claims description 8
- 230000037431 insertion Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 238000005192 partition Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000001066 destructive effect Effects 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
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)
Abstract
執行用以移動資料之一單個架構化指令。該執行包括將一指定長度之資料在一右至左順序上自一源位置移動至一目的地位置以提供一可預測結果。即使該目的地位置的一部分包含在開始移動該資料之該源位置內,仍提供一可預測結果。
Description
一或多個態樣大體上係關於促進運算環境內之處理,且特定言之,係關於促進與移動資料相關聯之處理。
電腦程式技術中之常見任務為將元素插入陣列中之特定位置中。為此,在陣列中使待插入位置處開始至陣列之末端的所有元素移動為高一個元素。接著,將新元素儲存在陣列中之插入點處。現有元素之此移動將在最高編號元素處開始,且接著在位址上向下至插入點處之現有元素。
許多電腦指令集架構提供將資料自一個位置複製至另一位置之機制。例如,因特爾x86架構具有REP MOVS指令。此外,由紐約阿蒙克市(Armonk,New York)之國際商業機器公司(International Business Machines Corporation)提供之z/Architecture®硬體架構具有移動字符(MVC)指令。此等移動類型指令以左至右方式(例如,在記憶體中之較低位置處開始,且行進至較高位置)處理資料。因此,使用此等移動類型指令中之一者將元素P處開始之N個現有元素移動為高一個元素導致在陣列元素P+1至N+1處複寫陣列元素P。對於將陣列中之元素移動至較高索引
以插入新元素之上文程式設計範例,使用此等指令將不能提供所要結果。替代地,編譯程式使用通常慢於給定指令集架構之本機移動類型指令的一序列指令。
通過提供用於促進運算環境內之處理的電腦程式產品來克服先前技術之缺點且提供額外優勢。電腦程式產品包括可由處理電路讀取且儲存用於執行一種方法之指令的電腦可讀儲存媒體。該方法包括獲得用以移動資料之指令,該指令為單個架構化指令。執行該指令,且該執行包括將指定長度之資料在右至左方向上自源位置移動至目的地位置以提供可預測結果。目的地位置的一部分包含在開始移動資料之源位置內。
藉由使用單個架構化指令以在右至左方向上移動資料,可比使用軟體範例有效得多地執行某些任務,諸如將元素插入陣列中。資料移動之執行快得多,從而降低執行時間,且改良處理器及/或整個系統效能。
作為一個實例,源位置為一個位元組大小且目的地位置為另一位元組大小。在一個實例中,一個位元組大小及另一位元組大小為相同大小。此外,在一個實例中,目的地位置之部分包括與源位置之一或多個位元組重疊的目的地位置之一或多個位元組。例如,目的地位置之一或多個位元組包括目的地位置之最左位元組。然而,在一個實例中,源位置之最左位元組在目的地位置外部。
即使源位置與目的地位置存在重疊,結果仍係可預測的,從而使得用以在右至左方向上移動資料之指令能夠用於一或多個任務。
在一個實施例中,待移動資料之指定長度由與指令相關聯
之位置指定。該位置為例如與指令相關聯之隱含暫存器。
作為實例,源位置係使用指令之一或多個欄位指定,且目的地位置係使用指令之一或多個其他欄位指定。
在一個實施例中,該執行由運算環境之處理器執行,且如由處理器觀察到,用以移動資料的源位置及目的地位置之存取順序為右至左方向,但如由一或多個其他處理器觀察到,存取順序係不確定的。
此外,在一個實施例中,該執行由運算環境之處理器執行,且移動資料包括將資料自源位置複製至內部緩衝器。接著將資料自內部緩衝器移動至目的地位置。如由處理器觀察到,資料顯現為在右至左方向上移動,且如由一或多個其他處理器觀察到,資料顯現為在未定方向上移動。因此,可以數個方式實施資料移動,包括以右至左順序移動資料或將資料移動至內部緩衝器且接著將其自內部緩衝器移動至目的地位置。在後一情況中,如由處理器觀察到,資料顯現為右至左地移動,此係由於重疊之任何位元組位置未被複製(複寫),而是顯現為被移動。
本文中亦描述及主張與一或多個態樣相關之電腦實施方法及系統。此外,本文中亦描述及可能主張與一或多個態樣相關之服務。
通過本文中所描述之技術實現額外特徵及優勢。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之部分。
10:運算環境
12:原生中央處理單元(CPU)
14:記憶體
16:輸入/輸出裝置/介面
18:匯流排
20:原生暫存器
22:仿真器程式碼
30:客體指令
32:指令提取常式
34:指令轉譯常式
36:原生指令
40:仿真控制常式
50:雲端運算環境
52:雲端運算節點
54A:個人數位助理(PDA)/蜂巢式電話
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:處理器/中央處理單元(CPU)/實體處理器資源
206:輸入/輸出子系統
208:邏輯分割區
210:超管理器
212:處理器韌體
220:客體作業系統
222:不同程式
230:輸入/輸出控制單元
240:輸入/輸出(I/O)裝置
250:資料儲存裝置
252:程式
254:電腦可讀程式指令
260:移動資料組件
300:右至左移動(MVCRL)指令
302:操作碼欄位
304:第一基本欄位(B1)
306:第一移位欄位(D1)
308:第二基本欄位(B2)
310:第二移位欄位(D2)
320:通用暫存器0(GR0)
322:長度(L)
400:步驟
402:步驟
404:步驟
406:步驟
408:步驟
410:步驟
在本說明書之結尾處之申請專利範圍中作為實例特定地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容及目標、特徵及優勢自結合附圖進行的以下詳細描述顯而易見,其中:圖1A描繪併有且使用本發明之一或多個態樣的運算環境之一個實
例;圖1B描繪根據本發明之一或多個態樣的圖1A之處理器的其他細節;圖2描繪併有且使用本發明之一或多個態樣的運算環境之另一實例;圖3A描繪根據本發明之一態樣的右至左移動指令之一個格式;圖3B描繪根據本發明之一態樣的由指令使用之隱含暫存器(通用暫存器0)的欄位之一個實例;圖4描繪根據本發明之一態樣的與右至左移動指令之執行相關聯的處理之一個實例;圖5A至圖5B描繪根據本發明之一態樣的促進運算環境內之處理的一個實例;圖6A描繪併有且使用本發明之一或多個態樣的運算環境之另一實例;圖6B描繪圖6A之記憶體的其他細節;圖7描繪雲端運算環境之一個實施例;且圖8描繪抽象模型層之一個實例。
根據本發明之一態樣,提供一種促進運算環境內之處理的能力。作為一個實例,提供單個指令(例如,硬體/軟體介面處之單個架構化硬體機器指令)以在右至左方向上移動資料。本文中稱為右至左移動指令之指令為通用處理器指令集架構(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/SMTM)超管理器。如本文中所使用,韌體包括例如處理器之微碼。其包括例如用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一個實施例中,其包括(例如)專屬碼,其通常作為包括受信任軟體或特定於基礎硬體之微碼之微碼遞送,且控制對系統硬體之作業系統存取。
每一邏輯分割區208能夠充當單獨的系統。亦即,每一邏輯分割區可獨立地經重設,運行諸如z/OS作業系統或另一作業系統之客體作業系統220且與不同程式222一起操作。在邏輯分割區中運行之作業系統或應用程式呈現為可存取完整的系統,但實際上,僅其一部分可用。
記憶體202耦接至處理器(例如,CPU)204,其為可分配至邏輯分割區之實體處理器資源。例如,邏輯分割區208包括一或多個邏輯處理器,其中之每一者表示可動態地分配至邏輯分割區之實體處理器資源204中的全部或一部分。
此外,記憶體202耦接至I/O子系統206。I/O子系統206可為
中央電子裝置複合體之部分或與其分開。其導引主儲存器202與耦接至中央電子裝置複合體之輸入/輸出控制單元230及輸入/輸出(I/O)裝置240之間的資訊流。
可使用許多類型之I/O裝置。一個特定類型為資料儲存裝置250。資料儲存裝置250可儲存一或多個程式252、一或多個電腦可讀程式指令254及/或資料等。電腦可讀程式指令可經組態以進行本發明之態樣的實施例之功能。
作為一個實例,每一處理器204包括及/或可存取用於自右至左移動資料(及/或本發明之一或多個態樣的其他操作)之移動資料組件(或其他組件)260。在各種實例中,可存在執行此等功能之一或多個組件。許多變化係可能的。
中央電子裝置複合體200可包括及/或耦接至抽取式/非抽取式、揮發性/非揮發性電腦系統儲存媒體。例如,其可包括及/或耦接至非抽取式非揮發性磁性媒體(通常被稱作「硬碟機」)、用於自抽取式非揮發性磁碟(例如,「軟碟」)讀取及寫入至抽取式非揮發性磁碟(例如,「軟碟」)之磁碟機,及/或用於自諸如CD-ROM、DVD-ROM或其他光學媒體之抽取式非揮發性光碟讀取或寫入至抽取式非揮發性光碟之光碟機。應理解,可結合中央電子裝置複合體200使用其他硬體及/或軟體組件。實例包括但不限於:微碼、裝置驅動器、冗餘處理單元、外部磁碟機陣列、RAID系統、磁帶機及資料存檔儲存系統等。
此外,中央電子裝置複合體200可與眾多其他通用或專用運算系統環境或組態一起操作。可適合與中央電子裝置複合體200一起使用之熟知運算系統、環境及/或組態之實例包括但不限於:個人電腦(PC)系
統、伺服器電腦系統、精簡型用戶端、複雜型用戶端、手持型或膝上型電腦裝置、多處理器系統、基於微處理器之系統、機上盒、可程式化消費型電子裝置、網路PC、小型電腦系統、大型電腦系統及包括上文系統或裝置中之任一者的分散式雲端運算環境等。
儘管本文中描述運算環境之各種實例,但本發明之一或多個態樣可與許多類型之環境一起使用。本文中所提供之運算環境僅為實例。
如上文所指示,電腦程式設計中之常見任務為將一或多個元素插入陣列中之特定位置中。為此,在陣列中使待插入位置處開始至陣列之末端的所有元素移動為高一或多個元素。接著,將(多個)新元素儲存在陣列中之插入點處。現有元素之此移動將例如在最高編號元素處開始,且接著在位址上向下至插入點處之現有元素。
作為實例,在C語言中,元素之移動可如下文所指示般經譯碼。假定陣列中當前存在N個元素,且待在位置P處插入一新元素。
for(int i=N;i>=P;i--)
array[i+1]=array[i];習知地,記憶體中之較低編號陣列元素及位址被視為在左側,且較高編號陣列元素及位址被視為在右側。因此,在一個實例中,待在右至左方向上移動資料。
根據本發明之一態樣,提供被稱為右至左移動指令之指令(亦即,單個架構化硬體指令)以在右至左方向上移動資料。在一個實例中,右至左(而非如習知的左至右)地移動資料之單個架構化指令直接由編譯程式使用以實施以下迴路:
for(int i=N;i>=P;i--)
array[i+1]=array[i]。
使用該指令以在陣列中插入一元素明顯快於在迴路中使用離散指令或使用即時軟體緩衝器。電腦內之處理以及任務之處理得到促進,從而改良系統效能。
此外,儘管使用右至左移動指令之一個實例為在陣列中插入一元素,但右至左移動指令可用於執行待在右至左方向上移動資料之其他任務。
參考圖3A至圖3B描述用於自右至左移動資料之右至左移動指令的一個實施例。在一個實例中,使用通用處理器(例如,處理器102或204)執行指令。在本文中之描述中,指示特定位置、特定欄位及/或欄位之特定大小(例如,特定位元組及/或位元)。然而,可提供其他位置、欄位及/或大小。此外,儘管可指定將位元設定為例如一或零之特定值,但此僅為實例。在其他實例中,可將位元設定為不同值,諸如相反值或另一值。許多變化係可能的。
參考圖3A,在一個實例中,右至左移動(MVCRL)指令300之格式為表示具有擴展操作碼(作業碼)欄位之儲存器及儲存器操作的SSE格式。作為實例,指令包括操作碼欄位302(例如,位元0至15),其具有指示右至左移動操作之操作碼;第一基本欄位(B1)304(例如,位元16至19),其指明待由指令使用之通用暫存器;第一移位欄位(D1)306(例如,位元20至31),其提供第一移位;第二基本欄位(B2)308(例如,位元32至35),其指明待由指令使用之另一通用暫存器;及第二移位欄位(D2)310(例如,位元36至47),其提供第二移位。在一個實例中,移位D1及D2
被視為12位元無符號二進位整數。作為實例,由B1欄位304指明之通用暫存器的內容經添加至D1欄位306之內容以形成第一運算元(在儲存器中)之位址;且由B2欄位308指明之通用暫存器的內容經添加至D2欄位310之內容以形成第二運算元(在儲存器中)之位址。兩運算元位址皆指明例如各別運算元之最左位元組。在一個實例中,欄位304至310中之每一者與作業碼欄位分開且獨立於作業碼欄位。此外,在一個實施例中,該等欄位彼此分開且獨立;然而,在其他實施例中,可組合大於一個欄位。
在一個實施例中,指令執行包括使用隱含的通用暫存器(亦即,未由指令明確指明之暫存器),諸如通用暫存器0 GR0。如圖3B中所示出,通用暫存器0(320)之內容包括長度(L)322。例如,通用暫存器0之位元56至63包括第一及第二運算元之長度。此外,在一個實例中,通用暫存器0之位元32至55應含有零;否則,程式在未來可能無法相容地操作。在此實施例中,忽略通用暫存器0之位元0至31。作為實例,L指定每一運算元之第一位元組右側的位元組之數目。因此,每一運算元之位元組長度為1至256,其對應於L中為0至255之長度碼。儘管在一個實例中,長度提供於隱含暫存器中,但在其他實例中,其可提供於指令之欄位或由指令指定之暫存器或其他位置中。存在許多可能性。
在右至左移動指令之執行中,藉由例如以每一運算元之最右位元組開始在右至左順序上移動位元組將第二運算元(例如,使用第二運算元位址定位)置放於第一運算元位置(由第一運算元位址指定)處。獲得的結果為好像自右至左處理兩運算元。然而,如由其他CPU及通道程式觀察到,運算元之存取順序係不確定的。在24位元定址模式中,任一運算元可自位置224-1至0環繞,在31位元定址模式中可自位置231-1至0環
繞,或在64位元定址模式中可自位置264-1至0環繞。
當由第二運算元位址指明之位元組位置(源的最左位元組)與第一運算元(目的地)之任一位元組位置(除了由第一運算元位址指明的位元組位置(目的地之最左位元組))重疊時,結果將為不可預測的。
在一個實例中,條件碼保持不變。
實例程式例外狀況包括:
˙存取(提取,運算元2;儲存,運算元1)
˙操作(若未安裝雜項指令擴展設施3(例如,設施指示位元61未設定成一))
˙異動約束條件
實例程式設計註釋包括:
1.右至左移動指令可用於藉由將原始元素及所有較高元素向右側移動而例如在陣列中開一個孔以用於後續插入元素。諸如移動字符指令之左至右移動指令無法用於此情況,此係由於其將破壞性地覆寫陣列元素。
2.對於具有多於一個儲存器運算元之大部分其他指令,當目的地運算元之最左位元組處於源運算元內且兩個運算元並不完美重疊時,會發生破壞性重疊。然而,對於右至左移動指令,當目的地運算元之最右位元組處於源運算元內且並不與源運算元完美重疊時,會發生破壞性重疊。因此,對於MVCRL,程式設計註釋1中描述之情境並非破壞性重疊,但若使用z/Architecture硬體架構之移動字符(MVC)指令,則將為破壞性重疊。
在一個實施例中,使用內部緩衝器之硬體實施停用破壞性
重疊檢查。例如,硬體(例如,處理器之硬體或耦接至處理器之其他硬體)將整個源運算元提取至內部硬體緩衝器中,之後將整個源運算元儲存至目的地運算元。執行此操作之硬體具有提取由此CPU儲存之目的地運算元的其他CPU不可見之較大內部緩衝器。
因此,根據本發明之一態樣,右至左移動指令可以至少兩種方式實施:(1)處理器右至左地移動資料,且接著其他處理器僅觀察到右至左次序;或(2)處理器將整個源資料移動至內部硬體緩衝器,且接著將資料移動至其目的地,其中目標資料之此儲存可以任何次序(例如,未定方向、左至右、右至左等)執行。對於後一情況,自資料首先被複製至內部硬體緩衝器以後,如由此處理器觀察到,資料顯現為右至左地移動,此係由於重疊之任何位元組位置未被複製(複寫),而是顯現為被移動;如由其他處理器觀察到,資料例如以未定方向移動。
根據本發明之一態樣,參考圖4描述基於右至左移動指令之執行的處理之一個實施例的其他細節。在一個實例中,諸如通用處理器102或204之處理器用於執行該指令。在一個實例中,處理器之硬體用於執行該指令。該硬體可在處理器內或出於自處理器接收指令之目的而耦接至處理器,該處理器例如獲得、解碼及設置該指令以在硬體上執行。其他變化係可能的。
參考圖4,最初,獲得(例如,提取、接收、提供等)被稱為右至左移動指令(例如,MVCRL指令300)之指令,步驟400,並執行指令,步驟402。執行包括例如獲得待移動資料之長度的指示,步驟404。長度(例如,L 322)由指令所使用之位置(例如,隱含暫存器,諸如通用暫存器0(320))指定。
以例如源運算元之最右位元組(其位置係使用指令之欄位(例如,B1、D1)指定)開始,將資料之一或多個位元組自源運算元移動至在例如最右位元組處開始之目的地位置(例如,使用指令之欄位(例如,B2、D2)指定),步驟406。所移動資料的量(例如,所移動位元組之數目)取決於自例如通用暫存器0獲得之長度。
即使源運算元位置與目的地位置之間存在重疊,在右至左方向上移動資料之結果(亦即,所移動資料)仍係可預測的(除非源運算元位置之最左位元組與除了目的地位置之最左位元組之外的目的地位置之一個位元組重疊),步驟408。
在一個實例中,如自執行指令之處理器觀察到,用於自右至左執行資料移動之存取順序為右至左;且如自其他處理器/通道程式觀察到,存取順序係不確定的,步驟410。
如本文中所描述,在一個態樣中,提供單個指令(例如,硬體/軟體介面處之單個架構化機器指令,例如右至左移動指令)以在右至左方向上移動資料。此指令為例如定義於指令集架構(ISA)中之硬體指令。結果,與在右至左方向上移動資料相關之程式的複雜度降低。此外,操作且因此處理器之效能得到改良。處理較快,執行時間降低且效能得到改良。
儘管描述右至左移動指令之各種欄位及暫存器,但本發明之一或多個態樣可使用其他、額外或較少欄位或暫存器,或欄位及暫存器之其他大小等。許多變化係可能的。例如,可使用隱含暫存器而非指令之明確指定之暫存器或欄位,及/或可使用明確指定之暫存器或欄位而非隱含暫存器或欄位。其他變化亦係可能的。
本發明之一或多個態樣不可避免地與電腦技術相關且促進電腦內之處理,從而改良其效能。用以在右至左方向上移動資料之單個架構化機器指令的使用藉由降低複雜度且增大處理速度而改良運算環境內之效能。資料及/或指令可用於許多技術領域中,諸如電腦處理、醫療處理、安全性領域等。藉由提供資料移動之最佳化,藉由降低執行時間而改良此等技術領域。
參考圖5A至圖5B描述如涉及本發明之一或多個態樣的促進運算環境內之處理的一個實施例之其他細節。
參考圖5A,在一個實施例中,獲得用以移動資料之指令(500)。該指令為單個架構化指令(502)。執行指令(504),且該執行包括將指定長度之資料在右至左方向上自源位置移動至目的地位置以提供可預測結果(506)。目的地位置的一部分包含在開始移動資料之源位置內(508)。
作為實例,源位置為一個位元組大小且目的地位置為另一位元組大小(510)。目的地位置之部分包括例如與源位置之一或多個位元組重疊的目的地位置之一或多個位元組(512)。目的地位置之一或多個位元組包括目的地位置之最左位元組(514)。此外,在一個實例中,源位置之最左位元組在目的地位置外部(516)。此外,作為實例,一個位元組大小與另一位元組大小為相同大小(518)。
作為一個實例,參考圖5B,待移動資料之指定長度由與指令相關聯之位置指定(520)。位置例如為與指令相關聯之隱含暫存器(522)。
此外,在一個實例中,源位置係使用指令之一或多個欄位指定(524);且目的地位置係使用指令之一或多個其他欄位指定(526)。
在一個態樣中,該執行由運算環境之處理器執行,且如由處理器觀察到,用以移動資料的源位置及目的地位置之存取順序為右至左方向,但如由一或多個其他處理器觀察到,存取順序係不確定的(528)。
在一個實施例中,該執行由運算環境之處理器執行,且移動資料包括將資料自源位置複製至內部緩衝器(530),及將資料自內部緩衝器移動至目的地位置(532)。如由處理器觀察到,資料顯現為在右至左方向上移動,且如由一或多個其他處理器觀察到,資料顯現為在未定方向上移動(534)。
儘管本文中之實例描述移動資料之位元組,但可移動其他大小之資料單位。位元組僅為一個實例。其他變化及實施例為可能的。
本發明之態樣可由許多類型之運算環境使用。參考圖6A描述併有且使用本發明之一或多個態樣的運算環境之另一實施例。在此實例中,運算環境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硬體架構開發之軟體及指令。
參考圖6B描述與仿真器程式碼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):提供給消費者之能力係佈建處理、儲存、網路及其他基礎運算資源,其中消費者能夠部署及運行可包括作業系統及應用程式之任意軟體。消費者並不管理或控制基礎雲端基礎架構,但具有對作業系統、儲存器、所部署應用程式之控制,且可能有限地控制選擇網路連接組件(例如,主機防火牆)。
部署模型如下:私用雲端:僅針對組織操作雲端基礎架構。私用雲端可由組織或第三方來管理且可存在內部部署或外部部署。
群集雲端:該雲端基礎架構由若干組織共用且支援分擔問題(例如,任務、安全要求、策略及順應性考量)的特定群集。群集雲端可由組織或第三方來管理且可存在內部部署或外部部署。
公用雲端:該雲端基礎架構可用於公眾或大型工業集團且為出售雲端服務之組織所擁有。
混合雲端:該雲端基礎架構為兩個或大於兩個雲端(私用、群集或公用)之組合物,該等雲端保持獨特實體但藉由實現資料及應用程
式攜帶性(例如,用於在雲端之間實現負載平衡之雲端爆裂)之標準化或專屬技術束縛在一起。
藉由集中於無國界、低耦合、模組化及語義互操作性對雲端運算環境進行服務定向。雲端運算之關鍵為包括互連節點之網路的基礎架構。
現參考圖7,描繪說明性雲端運算環境50。如所示,雲端運算環境50包括一或多個雲端運算節點52,雲端消費者所使用之諸如個人數位助理(PDA)或蜂巢式電話54A、桌上型電腦54B、膝上型電腦54C及/或汽車電腦系統54N的本端運算裝置可與該一或多個雲端運算節點通信。節點52可彼此通信。可在一或多個網路(諸如,如上文所描述之私用、群集、公用或混合雲端或其組合)中將該等節點實體地或虛擬地分組(未示出)。此情形允許雲端運算環境50提供基礎架構、平台及/或軟體作為服務,針對該等服務,雲端消費者不需要在本端運算裝置上維持資源。應理解,圖7中所示之運算裝置54A至54N之類型意欲僅為說明性的,且運算節點52及雲端運算環境50可經由任何類型之網路及/或網路可定址連接(例如,使用網路瀏覽器)與任何類型之電腦化裝置通信。
現參考圖8,示出由雲端運算環境50(圖7)所提供之功能抽象層之集合。事先應理解,圖8中所示之組件、層及功能意欲僅為說明性的且本發明之實施例不限於此。如所描繪,提供以下層及對應功能:硬體及軟體層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)」在用於本說明書中時指定所陳述
特徵、整數、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組之存在或添加。
下文申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個實施例之描述,但其不意欲為窮盡性的或限於所揭示之形式。許多修改及變化對於一般熟習此項技術者將為顯而易見。實施例經選擇及描述以便最佳地解釋各種態樣及實際應用,且使得一般熟習此項技術者能夠理解各種實施例及適於所涵蓋之特定用途的各種修改。
400:步驟
402:步驟
404:步驟
406:步驟
408:步驟
410:步驟
Claims (20)
- 一種用於促進一運算環境內之處理的電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於執行一方法之指令,該方法包含:獲得用以移動資料之一指令,該指令為一單個架構化指令;及執行該指令,該執行包含:移動一組資料中之一資料以提供在該一組資料中之一插入點以添加其它資料,該移動資料包括將該資料之一指定長度在一右至左方向上自在該組資料之內之一源位置移動至一目的地位置以提供一可預測結果,其中該目的地位置的一部分包含在開始移動該資料之該源位置內。
- 如請求項1之電腦程式產品,其中該源位置為一個位元組大小且該目的地位置為另一位元組大小,且其中該目的地位置之該部分包括與該源位置之一或多個位元組重疊的該目的地位置之一或多個位元組。
- 如請求項2之電腦程式產品,其中該目的地位置之該一或多個位元組包括該目的地位置之一最左位元組。
- 如請求項2之電腦程式產品,其中該源位置之一最左位元組在該目的地位置外部。
- 如請求項2之電腦程式產品,其中該一個位元組大小與另一位元組大小為一相同大小。
- 如請求項1之電腦程式產品,其中待移動資料之該指定長度由與該指令相關聯之一位置指定。
- 如請求項6之電腦程式產品,其中該位置為與該指令相關聯之一隱含暫存器。
- 如請求項1之電腦程式產品,其中該源位置係使用該指令之一或多個欄位指定,且該目的地位置係使用該指令之一或多個其他欄位指定。
- 如請求項1之電腦程式產品,其中該執行由該運算環境之一處理器執行,且其中如由該處理器觀察到,用以移動該資料的該源位置及該目的地位置之一存取順序為一右至左方向,但如由一或多個其他處理器觀察到,該存取順序係不確定的。
- 如請求項1之電腦程式產品,其中該執行由該運算環境之一處理器執行,且其中移動資料包含:將該資料自該源位置複製至一內部緩衝器;及將該資料自該內部緩衝器移動至該目的地位置,其中如由該處理器觀察到,該資料顯現為在一右至左方向上移動, 且如由一或多個其他處理器觀察到,該資料顯現為在一未定方向上移動。
- 一種用於促進一運算環境內之處理的電腦系統,該電腦系統包含:一記憶體;及一處理器,其與該記憶體通信,其中該電腦系統經組態以執行一方法,該方法包含:獲得用以移動資料之一指令,該指令為一單個架構化指令;及執行該指令,該執行包含:移動一組資料中之一資料以提供在該一組資料中之一插入點以添加其它資料,該移動資料包括將該資料之一指定長度在一右至左方向上自在該組資料之內之一源位置移動至一目的地位置以提供一可預測結果,其中該目的地位置的一部分包含在開始移動該資料之該源位置內。
- 如請求項11之電腦系統,其中該源位置為一個位元組大小且該目的地位置為另一位元組大小,且其中該目的地位置之該部分包括與該源位置之一或多個位元組重疊的該目的地位置之一或多個位元組。
- 如請求項12之電腦系統,其中該目的地位置之該一或多個位元組包括該目的地位置之一最左位元組。
- 如請求項11之電腦系統,其中該執行由該運算環境之該處理器執行,且其中如由該處理器觀察到,用以移動該資料的該源位置及該目的地 位置之一存取順序為一右至左方向,但如由一或多個其他處理器觀察到,該存取順序係不確定的。
- 如請求項11之電腦系統,其中該執行由該運算環境之該處理器執行,且其中移動資料包含:將該資料自該源位置複製至一內部緩衝器;及將該資料自該內部緩衝器移動至該目的地位置,其中如由該處理器觀察到,該資料顯現為在一右至左方向上移動,且如由一或多個其他處理器觀察到,該資料顯現為在一未定方向上移動。
- 一種用於促進一運算環境內之處理的電腦實施方法,該電腦實施方法包含:獲得用以移動資料之一指令,該指令為一單個架構化指令;及執行該指令,該執行包含:移動一組資料中之一資料以提供在該一組資料中之一插入點以添加其它資料,該移動資料包括將該資料之一指定長度在一右至左方向上自在該組資料之內之一源位置移動至一目的地位置以提供一可預測結果,其中該目的地位置的一部分包含在開始移動該資料之該源位置內。
- 如請求項16之電腦實施方法,其中該源位置為一個位元組大小且該目的地位置為另一位元組大小,且其中該目的地位置之該部分包括與該源位置之一或多個位元組重疊的該目的地位置之一或多個位元組。
- 如請求項17之電腦實施方法,其中該目的地位置之該一或多個位元組包括該目的地位置之一最左位元組。
- 如請求項16之電腦實施方法,其中該執行由該運算環境之一處理器執行,且其中如由該處理器觀察到,用以移動該資料的該源位置及該目的地位置之一存取順序為一右至左方向,但如由一或多個其他處理器觀察到,該存取順序係不確定的。
- 如請求項16之電腦實施方法,其中該執行由該運算環境之一處理器執行,且其中移動資料包含:將該資料自該源位置複製至一內部緩衝器;及將該資料自該內部緩衝器移動至該目的地位置,其中如由該處理器觀察到,該資料顯現為在一右至左方向上移動,且如由一或多個其他處理器觀察到,該資料顯現為在一未定方向上移動。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/280,616 US10831479B2 (en) | 2019-02-20 | 2019-02-20 | Instruction to move data in a right-to-left direction |
US16/280,616 | 2019-02-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202101201A TW202101201A (zh) | 2021-01-01 |
TWI748329B true TWI748329B (zh) | 2021-12-01 |
Family
ID=69630287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109101668A TWI748329B (zh) | 2019-02-20 | 2020-01-17 | 用於在右至左方向中移動資料之指令之電腦程式產品、電腦系統及電腦實施方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10831479B2 (zh) |
EP (1) | EP3928200A1 (zh) |
JP (1) | JP2022523059A (zh) |
KR (1) | KR102598930B1 (zh) |
CN (1) | CN113474753A (zh) |
SG (1) | SG11202105503SA (zh) |
TW (1) | TWI748329B (zh) |
WO (1) | WO2020169449A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101258A1 (en) * | 2004-10-01 | 2006-05-11 | Mips Technologies Inc. | Microprocessor instructions for efficient bit stream extractions |
US20090182985A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Move Facility and Instructions Therefore |
TW201531867A (zh) * | 2013-12-05 | 2015-08-16 | Insyde Software Corp | 用以在作業系統之間轉移資料之系統及方法 |
US20150277910A1 (en) * | 2014-03-27 | 2015-10-01 | Intel Corporation | Method and apparatus for executing instructions using a predicate register |
TWI521429B (zh) * | 2010-03-15 | 2016-02-11 | Arm股份有限公司 | 運算元大小控制 |
US20180253302A1 (en) * | 2017-03-03 | 2018-09-06 | International Business Machines Corporation | Move string processing via inline decode-based micro-operations expansion |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01103764A (ja) * | 1986-06-25 | 1989-04-20 | Hitachi Ltd | マルチウィンドウを用いた文書編集方法 |
US5138617A (en) | 1990-02-21 | 1992-08-11 | Honeywell Bull Inc. | Method for masking false bound faults in a central processing unit |
US5339419A (en) * | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
US5390328A (en) | 1992-03-30 | 1995-02-14 | International Business Machines Corporation | Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage |
US5644761A (en) | 1992-06-05 | 1997-07-01 | Bull Hn Information Systems Inc. | Basic operations synchronization and local mode controller in a VLSI central processor |
US6263422B1 (en) * | 1992-06-30 | 2001-07-17 | Discovision Associates | Pipeline processing machine with interactive stages operable in response to tokens and system and methods relating thereto |
US6112017A (en) * | 1992-06-30 | 2000-08-29 | Discovision Associates | Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus |
JPH09288564A (ja) * | 1996-06-17 | 1997-11-04 | Takeshi Sakamura | データ処理装置 |
US6185621B1 (en) * | 1997-03-25 | 2001-02-06 | Philips Electronics N.A. Corp. | Direct copying between disk blocks in memory onto a network as sequential access files |
GB2411978B (en) | 2004-03-10 | 2007-04-04 | Advanced Risc Mach Ltd | Inserting bits within a data word |
US7594094B2 (en) | 2006-05-19 | 2009-09-22 | International Business Machines Corporation | Move data facility with optional specifications |
EP1868321B1 (en) * | 2006-06-12 | 2016-01-20 | Mitsubishi Denki Kabushiki Kaisha | In-line content analysis of a TCP segment stream |
US7895560B2 (en) | 2006-10-02 | 2011-02-22 | William Stuart Lovell | Continuous flow instant logic binary circuitry actively structured by code-generated pass transistor interconnects |
US9128701B2 (en) * | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
CN103455280B (zh) * | 2012-05-31 | 2016-12-14 | 国际商业机器公司 | 用于执行存储器复制的方法和系统 |
US10996959B2 (en) * | 2015-01-08 | 2021-05-04 | Technion Research And Development Foundation Ltd. | Hybrid processor |
US10095479B2 (en) * | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US10261790B2 (en) * | 2016-03-31 | 2019-04-16 | Intel Corporation | Memory copy instructions, processors, methods, and systems |
-
2019
- 2019-02-20 US US16/280,616 patent/US10831479B2/en active Active
-
2020
- 2020-01-17 TW TW109101668A patent/TWI748329B/zh active
- 2020-02-13 EP EP20705922.1A patent/EP3928200A1/en active Pending
- 2020-02-13 WO PCT/EP2020/053790 patent/WO2020169449A1/en unknown
- 2020-02-13 KR KR1020217024934A patent/KR102598930B1/ko active IP Right Grant
- 2020-02-13 JP JP2021543344A patent/JP2022523059A/ja active Pending
- 2020-02-13 CN CN202080014668.5A patent/CN113474753A/zh active Pending
- 2020-02-13 SG SG11202105503SA patent/SG11202105503SA/en unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101258A1 (en) * | 2004-10-01 | 2006-05-11 | Mips Technologies Inc. | Microprocessor instructions for efficient bit stream extractions |
US20090182985A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Move Facility and Instructions Therefore |
TWI521429B (zh) * | 2010-03-15 | 2016-02-11 | Arm股份有限公司 | 運算元大小控制 |
TW201531867A (zh) * | 2013-12-05 | 2015-08-16 | Insyde Software Corp | 用以在作業系統之間轉移資料之系統及方法 |
US20150277910A1 (en) * | 2014-03-27 | 2015-10-01 | Intel Corporation | Method and apparatus for executing instructions using a predicate register |
US20180253302A1 (en) * | 2017-03-03 | 2018-09-06 | International Business Machines Corporation | Move string processing via inline decode-based micro-operations expansion |
Also Published As
Publication number | Publication date |
---|---|
US20200264878A1 (en) | 2020-08-20 |
EP3928200A1 (en) | 2021-12-29 |
KR20210118096A (ko) | 2021-09-29 |
JP2022523059A (ja) | 2022-04-21 |
TW202101201A (zh) | 2021-01-01 |
KR102598930B1 (ko) | 2023-11-03 |
US10831479B2 (en) | 2020-11-10 |
SG11202105503SA (en) | 2021-06-29 |
CN113474753A (zh) | 2021-10-01 |
WO2020169449A1 (en) | 2020-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201602806A (zh) | 架構模式組態 | |
TWI656477B (zh) | 用於具有可選擇比較屬性之浮點指令之電腦程式產品,電腦系統及電腦實現方法 | |
US11221850B2 (en) | Sort and merge instruction for a general-purpose processor | |
JP2022520712A (ja) | 命令の実行における桁検証チェック制御 | |
JP7398464B2 (ja) | 命令の実行における負のゼロ制御 | |
TWI651649B (zh) | 用於執行正負號運算十進位指令的電腦程式產品、電腦系統及電腦實施方法 | |
TWI718563B (zh) | 用於在多次執行指令之間保存及恢復機器狀態之電腦程式產品、電腦系統及電腦實施方法 | |
TWI636397B (zh) | 十進制移位及除法指令 | |
TWI653576B (zh) | 用於十進位乘法及移位指令之電腦程式產品、電腦系統及電腦實施方法 | |
TWI748329B (zh) | 用於在右至左方向中移動資料之指令之電腦程式產品、電腦系統及電腦實施方法 | |
US20220276866A1 (en) | Vector pack and unpack instructions | |
JP2017097876A (ja) | ロードのための符号拡張の統合 | |
TWI653579B (zh) | 用於十進位立即載入指令之電腦程式產品、電腦系統及電腦實施方法 | |
TWI729678B (zh) | 用於移動資料及設定儲存金鑰指令之電腦程式產品、電腦系統及電腦實施方法 | |
JP7391979B2 (ja) | キー機能制御に基づくデータ移動および記憶キー設定 | |
TW202034162A (zh) | 執行密碼計算純量乘法指令 | |
US11029950B2 (en) | Reducing latency of common source data movement instructions | |
TWI820701B (zh) | 處理器促進資訊之詢問及更新 | |
TW202036272A (zh) | 載入/儲存位元組反轉元件指令 |