TW202034160A - 用於通用處理器之排序及合併指令 - Google Patents
用於通用處理器之排序及合併指令 Download PDFInfo
- Publication number
- TW202034160A TW202034160A TW108121225A TW108121225A TW202034160A TW 202034160 A TW202034160 A TW 202034160A TW 108121225 A TW108121225 A TW 108121225A TW 108121225 A TW108121225 A TW 108121225A TW 202034160 A TW202034160 A TW 202034160A
- Authority
- TW
- Taiwan
- Prior art keywords
- list
- register
- function
- instruction
- command
- Prior art date
Links
- 230000006870 function Effects 0.000 claims description 170
- 238000012545 processing Methods 0.000 claims description 61
- 238000000034 method Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 17
- 230000001737 promoting effect Effects 0.000 claims description 2
- 239000013598 vector Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 10
- 230000001174 ascending effect Effects 0.000 description 10
- 230000015572 biosynthetic process Effects 0.000 description 10
- 238000005192 partition Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 230000001419 dependent effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- RRRXPPIDPYTNJG-UHFFFAOYSA-N perfluorooctanesulfonamide Chemical compound NS(=O)(=O)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)F RRRXPPIDPYTNJG-UHFFFAOYSA-N 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000001902 propagating effect Effects 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
- 230000008520 organization Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect 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
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000013307 optical fiber Substances 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
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2443—Stored procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/14—Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
-
- 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
-
- 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/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- 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/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; 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本發明提供實行一排序及/或一合併操作之一排序清單指令。該指令為一指令集架構之一架構化機器指令,且由運算環境之一通用處理器執行。該執行包括排序複數個輸入清單以獲得作為輸出之一或多個經排序輸出清單。
Description
一或多個態樣大體上係關於促進運算環境內之處理,且特定而言,係關於促進排序及合併處理。
使用排序及合併處理之電腦處理的一個態樣在資料庫處理中。資料庫為資料之經組織集合,通常被分割成資料記錄。排序及合併資料記錄之集合為由軟體應用程式實行之共同資料庫操作。當此類應用程式意欲在通用處理器上執行時,應用程式負責產生用以實行所要資料庫操作之許多基元指令的序列。
為了最佳化效能,應用程式亦可嘗試最佳化用於處理器(應用程式可在處理器上執行)之每一模型的基元指令之序列,藉此增加應用程式之複雜度。
經由提供用於促進運算環境中之處理的電腦程式產品來克服先前技術之缺點且提供額外優點。該電腦程式產品包括可由處理器讀取且儲存用於實行一種方法之指令的電腦可讀儲存媒體。該方法包括獲得實行排序操作之指令。該指令為指令集架構之單一架構化機器指令,且由運算環境之通用處理器執行。該執行包括排序複數個輸入清單以獲得一或多個經排序輸出清單,及提供該一或多個經排序輸出清單作為輸出。
藉由使用在通用處理器上實行排序(及/或合併)操作之單一架構化指令,實行彼等操作之基元軟體指令的有效子集由單一架構化指令替換。用單一架構化指令替換彼等基元指令降低程式複雜度且消除對包括用以最佳化基元指令之程式碼的需要。另外,改善了總效能。
在一個實例中,該指令包括:操作碼欄位,其包括用以指定排序清單操作之操作碼;及一個欄位,其用以指明一個位置,該一個位置用於儲存一或多個經排序輸出清單。在另一實例中,該指令包括用以指明另一位置之另一欄位,該另一位置用以儲存一或多個輸出清單描繪。
作為一實例,該一個欄位為暫存器欄位,該暫存器欄位指明暫存器,該暫存器包括一個位置之位址,且另一欄位為另一暫存器欄位,該另一暫存器欄位指明另一暫存器,該另一暫存器包括另一位置之位址。
在一個實例中,該指令使用一個隱含暫存器以判定待由指令實行之函式。該函式係選自由以下各者組成之函式群組:查詢可用函式函式、排序固定長度記錄函式及排序可變長度記錄函式。
作為另一實例,該指令使用另一隱含暫存器以找出記憶體中由指令使用之參數區塊。該參數區塊包括取決於待實行之函式而由指令使用的資訊。在一個實例中,待實行之函式為排序固定長度記錄函式或排序可變長度記錄函式,且該參數區塊包括用以基於排序被中斷而找出複數個輸入清單之資訊及用以繼續排序之資訊。
在另一實施例中,一個隱含暫存器進一步包括用以指定是否實行一或多個經排序輸出清單之合併的操作模式指示符。
作為一特定實例,該指令包括:操作碼欄位,其包括用以指定排序清單操作之操作碼;第一暫存器欄位,其包括第一暫存器之指明,該第一暫存器包括用於儲存一或多個經排序輸出清單之位址;及第二暫存器欄位,其包括第二暫存器之指明,該第二暫存器包括用於儲存一或多個輸出清單描繪之位址。該指令使用第一隱含暫存器以判定待由指令實行之函式,且使用第二隱含暫存器以找出記憶體中由指令使用之參數區塊。
本文中亦描述及主張與一或多個態樣有關之電腦實施方法及系統。另外,本文中亦描述及可能主張與一或多個態樣有關之服務。
經由本文中所描述之技術實現額外特徵及優點。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之一部分。
根據本發明之態樣,提供一種促進運算環境內之處理的能力。作為一個實例,提供單一指令(例如,硬體/軟體介面處之單一架構化硬體機器指令)以實行操作,以便排序及/或合併資料記錄。舉例而言,在通用處理器上執行指令。藉由使用單一指令以排序及/或合併例如資料庫之資料記錄,減少諸如通用處理器之處理器內的執行時間且減少用於排序及/或合併之記憶體的量。
參看圖1A描述併有及使用本發明之一或多個態樣的運算環境之一個實施例。舉例而言,運算環境100包括處理器102 (例如,中央處理單元)、記憶體104 (例如,主記憶體;亦稱為系統記憶體、主儲存器、中央儲存器、儲存器)及一或多個輸入/輸出(I/O)裝置及/或介面106,前述各者經由例如一或多個匯流排108及/或其他連接件而彼此耦接。
在一個實例中,處理器102係基於由紐約阿蒙克市之國際商業機器公司供應的z/Architecture®
硬體架構,且為伺服器之部分,諸如IBM Z®
伺服器,其亦由國際商業機器公司供應且實施z/Architecture (z/架構)硬體架構。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。下文進一步詳細地描述由組件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中的全部或一部分。
另外,記憶體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、小型電腦系統、大型電腦系統及包括以上系統或裝置中之任一者的分散式雲端運算環境,以及其類似者。
儘管本文中描述運算環境之各種實例,但本發明之一或多個態樣可與許多類型之環境一起使用。本文中所提供之運算環境僅為實例。
根據本發明之一態樣,諸如處理器102或204之處理器使用增強之排序設施,其提供將未排序輸入資料之多個清單排序成經排序輸出資料之一或多個清單的機制。在一個實例中,當設施指示符設定為例如壹時,增強之排序設施安裝於系統中。作為z/Architecture硬體架構之一個特定實例,當以z/Architecture架構模式安裝增強之排序設施時,將設施位元150設定為例如壹。在一個實施例中,該設施亦提供將經排序輸入資料之多個清單合併成經排序輸出資料之單一清單的機制。舉例而言,該設施包括排序清單指令,下文描述該指令之實施例。
參看圖3A至圖3K描述與排序清單指令有關之細節的一個實施例。在一個實例中,在通用處理器(例如,處理器102或204)上執行此指令。在本文中之描述中,指示特定位置、特定欄位及/或欄位之特定大小(例如,特定位元組及/或位元)。然而,可提供其他位置、欄位及/或大小。另外,儘管指定將位元設定為例如壹或零之特定值,但此僅為實例。在其他實例中,可將位元設定為不同值,諸如相反值或另一值。許多變化係可能的。
參看圖3A,在一個實例中,排序清單(SORTL)指令300之格式為藉由延伸操作碼(作業碼)指示暫存器與暫存器操作的RRE格式。作為一實例,該指令包括:操作碼欄位302 (例如,位元0至15),其具有指示排序及/或合併操作之操作碼;第一暫存器欄位(R1
) 304 (例如,位元24至27),其指明第一對通用暫存器;及第二暫存器欄位(R2
) 306 (例如,位元28至31),其指明第二對通用暫存器。由R1
欄位304指明之暫存器的內容指定第一運算元之位置(在儲存器中),且由R2
欄位306指明之暫存器的內容指定第二運算元之位置(在儲存器中)。R1
+1之內容指定第一運算元之長度,且R2
+1之內容指定第二運算元之長度。在一個實例中,指令之位元16至23被保留且應含有零;否則,程式在未來可能無法相容地操作。如本文中所使用,該程式為發出排序清單指令之程式。該程式可為使用者程式、作業系統或另一類型之程式。
在一個實施例中,指令執行包括使用一或多個隱含的通用暫存器(亦即,未由指令明確指明之暫存器)。舉例而言,在執行排序清單指令時使用通用暫存器0及1,如本文中所描述。在一個實例中,使用通用暫存器0以指定是否實行合併且指定由指令實行之排序函式,且通用暫存器1用以提供由指令使用之參數區塊的位置。在另一實例中,通用暫存器0並不用以指定是否實行合併;實情為,合併由機器(例如,處理器)設定/不設定且不可藉由模式指示符改變。其他變化係可能的。
作為一實例,參看圖3B,通用暫存器0 (308)包括合併模式欄位310 (下文描述)及函式碼欄位312。在一個特定實例中,通用暫存器0之位元位置57至63含有函式碼;但在其他實施例中,其他位元可用以含有函式碼。在一個實例中,當通用暫存器0之位元57至63指明未指派或未安裝之函式碼時,辨識到規格例外狀況。
用於排序清單指令之實例所指派函式碼展示於圖3C中且包括例如:函式碼0 (313),其指示SORTL-QAF (查詢可用函式)函式;函式碼1 (315),其指示SORTL-SFLR (排序固定長度記錄)函式;及函式碼2 (317),其指示SORTL-SVLR (排序可變長度記錄)函式。在一個實例中,每一碼使用參數區塊且參數區塊之大小取決於函式。舉例而言,對於SORTL-QAF函式,參數區塊為32個位元組;且對於SORTL-SFLR及SORTL-SVLR,參數區塊為576+16×NIS
,其中NIS
為輸入清單之數目,如由介面大小所指定。在此實例中,未指派其他函式碼。儘管描述實例函式及函式碼,但可使用其他函式及/或函式碼。
如先前所指示,通用暫存器0亦包括合併模式欄位310。在一個實例中,通用暫存器0之位元56指定應用於例如SORTL-SFLR及SORLT-SVLR函式之操作模式(合併模式)。在一個實例中,當指定函式為SORTL-QAF時,忽略通用暫存器0之位元56。另外,在一個實例中,忽略通用暫存器0之位元位置0至55。
參看圖3D描述關於由排序清單指令使用之另一隱含暫存器(通用暫存器1)的其他細節。舉例而言,通用暫存器1 (314)之內容指定儲存器中之參數區塊的最左位元組之邏輯位址316。在一個實例中,參數區塊將在雙字邊界上指明;否則,辨識到規格例外狀況。下文進一步描述關於參數區塊之其他細節。
對於指定函式(例如,SORTL-QAF、SORTL-SFLR、SORTL-SVLR),不修改通用暫存器0及1之內容。另外,在一個實例中,R1
欄位304指明一對奇偶通用暫存器。其將指明偶數編號暫存器且不指明通用暫存器0;否則,辨識到規格例外狀況。當指定函式為SORTL-SFLR或SORTL-SVLR時,如圖3E至圖3F中所展示,通用暫存器R1
318之內容指定例如第一運算元之最左位元組的邏輯位址320,且通用暫存器R1
+1 (322)之內容指定第一運算元之以例如位元組計的長度324。當指定函式為SORTL-SFLR或SORTL-SVLR時,第一運算元例如將在雙字邊界上指明;否則,辨識到規格例外狀況。呈記錄形式之資料選自一組輸入清單且儲存於第一運算元位置處(例如,開始於使用R1
指定之位址處)。當指定SORTL-QAF函式時,忽略通用暫存器R1
及R1
+1之內容。
此外,對於指定函式(例如,SORTL-QAF、SORTL-SFLR、SORTL-SVLR),在一個實例中,R2
欄位306指明一對奇偶通用暫存器。其將指明偶數編號暫存器且不指明通用暫存器0;否則,辨識到規格例外狀況。當指定函式為SORTL-SFLR或SORTL-SVLR且合併模式(MM)為零時,如圖3G至圖3H中所展示,通用暫存器R2
326之內容指定例如第二運算元之最左位元組的邏輯位址328,且通用暫存器R2
+1 (330)之內容指定第二運算元之以例如位元組計的長度332。在一個實例中,當指定函式為SORTL-SFLR或SORTL-SVLR且合併模式(MM)為零時,第二運算元將在雙字邊界上指明;否則,辨識到規格例外狀況。當MM為零時,每一輸出清單之開始位址及長度(被稱作輸出清單描繪(OLD))儲存於第二運算元位置處(例如,開始於使用R2
指定之位址處)。當指定SORTL-QAF函式或MM為一時,忽略通用暫存器R2
及R2
+1之內容。
在執行中,在一個實施例中,實行由通用暫存器0中之函式碼指定的函式。在一個實施例中,當指定函式為SORTL-SFLR或SORTL-SVLR時,作為操作之部分,發生以下情況:
* 通用暫存器R1
中之位址遞增儲存於第一運算元位置處之位元組之數目,且通用暫存器R1
+1中之長度遞減相同數目。
* 當MM為零時,通用暫存器R2
中之位址遞增儲存於第二運算元位置處之位元組之數目,且通用暫存器R2
+1中之長度遞減相同數目。
在一個實例中,位址及長度之形成及更新取決於定址模式。
在一個實施例中,在24位元定址模式中,以下情況適用:
* 通用暫存器1、R1
及R2
之位元位置40至63的內容分別構成參數區塊、第一運算元及第二運算元之位址,且忽略位元位置0至39之內容。
* 經更新之第一運算元位址及第二運算元位址的位元40至63分別替換通用暫存器R1
及R2
中之對應位元。忽略經更新位址之位元位置40的進位輸出,且將通用暫存器R1
及R2
之位元位置32至39的內容設定為零。通用暫存器R1
及R2
之位元位置0至31的內容保持不變。
* 通用暫存器R1
+1及R2
+1之位元位置32至63的內容形成32位元無正負號二進位整數,其分別指定第一運算元及第二運算元中之位元組的數目。忽略通用暫存器R1
+1及R2
+1之位元位置0至31的內容。
* 經更新之第一運算元長度及第二運算元長度的位元32至63分別替換通用暫存器R1
+1及R2
+1中之對應位元。通用暫存器R1
+1及R2
+1之位元位置0至31的內容保持不變。
在一個實施例中,在31位元定址模式中,以下情況適用:
* 通用暫存器1、R1
及R2
之位元位置33至63的內容分別構成參數區塊、第一運算元及第二運算元之位址,且忽略位元位置0至32之內容。
* 經更新之第一運算元位址及第二運算元位址的位元33至63分別替換通用暫存器R1
及R2
中之對應位元。忽略經更新位址之位元位置33的進位輸出,且將通用暫存器R1
及R2
之位元位置32的內容設定為零。通用暫存器R1
及R2
之位元位置0至31的內容保持不變。
* 通用暫存器R1
+1及R2
+1之位元位置32至63的內容形成32位元無正負號二進位整數,其分別指定第一運算元及第二運算元中之位元組的數目。忽略通用暫存器R1
+1及R2
+1之位元位置0至31的內容。
* 經更新之第一運算元長度及第二運算元長度的位元32至63分別替換通用暫存器R1
+1及R2
+1中之對應位元。通用暫存器R1
+1及R2
+1之位元位置0至31的內容保持不變。
在一個實施例中,在64位元定址模式中,以下情況適用:
* 通用暫存器1、R1
及R2
之位元位置0至63的內容分別構成參數區塊、第一運算元及第二運算元之位址。
* 經更新之第一運算元位址及第二運算元位址的位元0至63分別替換通用暫存器R1
及R2
中之對應位元。忽略經更新位址之位元位置0的進位輸出。
* 通用暫存器R1
+1及R2
+1之位元位置0至63的內容形成64位元無正負號二進位整數,其分別指定第一運算元及第二運算元中之位元組的數目。
* 經更新之第一運算元長度及第二運算元長度的位元0至63分別替換通用暫存器R1
+1及R2
+1中之對應位元。
在存取暫存器模式中,存取暫存器1、R1
及R2
分別指定含有參數區塊、第一運算元及第二運算元之位址空間。
下文描述關於各種函式之其他細節。
函式碼
0
:
SORTL-QAF (
查詢可用函式
)
SORTL-QAF (查詢)函式提供指示所有已安裝函式之可用性、已安裝參數區塊格式及可用介面大小的機制。介面大小為可用於程式之輸入清單的數目。用於SORT-SFLR及SORT-SVLR函式之參數區塊的大小與由程式指定之介面大小成比例。
參看圖3I描述用於SORTL-QAF函式之參數區塊的一個實例格式。在一個實例中,用於SORTL-QAF函式(例如,函式碼0)之參數區塊340包括已安裝函式向量342、已安裝介面大小向量344及已安裝參數區塊格式向量346。在一個特定實例中,此等向量分別儲存至參數區塊之位元組0至15、位元組16及位元組24至25。下文進一步描述該等向量中之每一者。
作為一實例,已安裝函式向量342之位元0至127分別對應於排序清單指令之函式碼0至127。當位元為例如壹時,安裝對應函式;否則,不安裝函式。
另外,在一個實例中,已安裝介面大小向量344之位元0至7指示可用於程式之介面大小。介面大小為待由程式指定用於SORT-SFLR及SORTL-SVLR函式之輸入清單的數目。在一個實例中,已安裝介面大小向量344之位元0至7對應於以下介面大小:位元0、1、5至7被保留;位元2—32個輸入清單;位元3—64個輸入清單;及位元4—128個輸入清單。其他實例亦係可能的。
當已安裝介面大小向量344之位元為例如壹時,對應介面大小可用於程式。一或多個位元可儲存為一。舉例而言,00101000二進位之值指示32及128個輸入清單之介面大小可用。在一個實例中,位元0至1及5至7被保留且儲存為零。另外,在一個實例中,當安裝增強之排序設施時,32個輸入清單之介面大小可用。因此,位元2儲存為一。其他實例亦係可能的。
除上文以外,在一個實例中,已安裝參數區塊格式向量346之位元0至15分別對應於參數區塊格式0至15。當位元為例如壹時,安裝對應參數區塊格式;否則,不安裝該參數區塊格式。在一個實例中,將零儲存至參數區塊之保留位元組17至23及26至31。
SORT-QAF函式忽略通用暫存器R1
、R2
、R1
+1及R2
+1之內容。
在適用時,對於參數區塊,辨識到程式事件記錄(PER)儲存器更改事件。在適用時,對於參數區塊,辨識到PER零位址偵測事件。
在一個實例中,當SORTL-QAF函式之執行完成時,設定條件碼0;條件碼1、2及3不適用於查詢函式。
函式碼
1
:
SORTL-SFLR (
排序固定長度記錄
)
在一個實例中,將一組輸入清單排序且作為一組輸出清單儲存於第一運算元位置處。每一清單為一組記錄,且參看圖3J,每一記錄350包括金鑰352 (例如,固定長度金鑰)及有效負載354 (例如,固定長度有效負載)。
基於金鑰之值將來自輸入清單之記錄排序。可按如在下文所描述的與函式碼1相關聯之參數區塊之排序次序(SO)欄位中指定的遞升次序或降序次序將記錄排序。輸入清單之記錄可能按或可能不按排序次序列出。
輸出清單之記錄可源自多個輸入清單且按排序次序儲存。儲存於第一運算元位置處之輸出清單之數目取決於輸入資料。在一個實例中,當每個作用中輸入清單含有以與SO欄位中指定之次序相同的次序列出的記錄時,僅產生一個輸出清單。
如上文所指示,通用暫存器0之位元56指定應用於SORTL-SFLR函式之操作模式,被稱作合併模式(MM)。當合併模式為例如零時,對於儲存於第一運算元位置處之每一輸出清單,對應的輸出清單描繪(OLD)儲存於第二運算元位置處。每一OLD包括例如8位元組OLD位址,其指明對應輸出清單中之第一記錄的位置;及8位元組OLD長度,其指定對應輸出清單之以例如位元組計的長度。當合併模式為一時,輸入清單被視為預排序的。亦即,每個作用中輸入清單被視為含有呈與參數區塊之SO欄位指定之次序相同的次序的記錄。
當MM為一且每一輸入清單經預排序時,儲存於第一運算元位置處之結果為呈排序次序之記錄的單一輸出清單。當MM為一且每一輸入清單未經預排序時,結果係不可預測的。
當MM為例如壹時,忽略通用暫存器R2
及R2
+1之內容且無資訊儲存於第二運算元位置處。當MM為一時,可能不實行用以區分輸出清單之間的分隔的程序,藉此潛在地改善操作之效能。當MM為一時,資料並不儲存至下文所描述之接續記錄重新呼叫緩衝區。
在一個實例中,為了自呈隨機次序之一組記錄產生呈排序次序之記錄的單一清單,程式可實行以下程序:
1. 在一組初始清單當中均勻地分割該組記錄,其中每一清單含有呈隨機次序之記錄。在將該組初始清單作為輸入清單且合併模式等於零之情況下執行排序清單指令,以產生一組中間清單(其中之每一者含有呈排序次序之記錄),及該組中間清單中之每一清單的儲存位置及長度。
2. 在將該組中間清單作為輸入清單且合併模式等於壹之情況下執行排序清單指令,以產生最終及單一清單,其含有呈排序次序之記錄。
合併模式等於零之SORTL-SFLR的一個實例說明於圖4A中。輸入及所得輸出包括於該實例中。如所展示,存在三個輸入清單400:輸入list0、輸入list1及輸入list2。另外,描繪所得第一運算元402及第二運算元404之實例。在一個實例中,第一運算元402 (圖4A)中存在三個清單,且如第二運算元404中所展示,一個清單開始於位址1000處並具有長度18;另一清單開始於位址1018處並具有長度28;且第三清單開始於位址1040處並具有長度20。
在一個實例中,當兩個操作對同一組未排序輸入記錄實行合併模式等於零之同一SORTL-SFLR函式且兩個操作之間的僅有差異為用以指定輸入資料之輸入清單的數目時,具有較大數目個輸入清單之操作產生較小數目個輸出清單。圖4B說明使用六個輸入清單450對與圖4A中之使用三個輸入清單之實例相同的輸入資料操作的實例。亦所描繪具有兩個而非三個輸出清單之所得第一運算元452及提供兩個輸出清單之描繪的第二運算元454。
如所指示,SORTL-SFLR函式使用參數區塊,參看圖3K描述該參數區塊之實例。在本文中所描述之實例參數區塊中,指示參數區塊內用於特定欄位之特定位置及欄位之特定大小(例如,特定位元組及/或位元)。然而,可為該等欄位中之一或多者提供其他位置及/或大小。另外,儘管指定將位元設定為例如壹或零之特定值,但此僅為實例。在其他實例中,可將位元設定為不同值,諸如相反值或另一值。許多變化係可能的。
在一個實例中,用於SORTL-SFLR函式之參數區塊360包括以下各者:
參數區塊版本號碼(PBVN) 362:參數區塊之位元組0至1指定參數區塊之版本及大小。PBVN之位元0至7具有與用於SORTL-QAF (查詢)函式之參數區塊的已安裝介面大小清單向量(位元組16)之位元0至7相同的格式及定義。位元0至7指定描述於參數區塊中之輸入清單的數目NIS
。藉由評估式(576+16×NIS
)來判定以位元組計之參數區塊大小。位元0至7中之一個位元將具有值壹;否則,辨識到一般運算元資料例外狀況。PBVN之位元8至11被保留且應含有零;否則,程式在未來可能無法相容地操作。PBVN之位元12至15含有指定參數區塊之格式的無正負號二進位整數。SORTL-QAF函式提供指示可用之參數區塊格式的機制。當模型不支援所指定之參數區塊之大小或格式時,辨識到一般運算元資料例外狀況。PBVN由程式指定且在指令執行期間不會被修改。
模型版本號碼(MVN) 364:參數區塊之位元組2為識別執行指令之模型的無正負號二進位整數。MVN在指令執行期間藉由例如處理器更新。儲存於MVN中之值為模型相依的。
當下文所描述之接續旗標(CF) 368為壹時,MVN為操作之輸入。當CF為壹且MVN識別與當前執行指令之模型相同的模型時,來自下文所描述之接續狀態緩衝區(CSB) 390之資料可用以重新繼續操作。當CF為壹且MVN識別與當前執行指令之模型不同的模型時,可忽略CSB欄位之部分或全部。
在一個實例中,程式將MVN初始化為零。吾人預期,在出於重新繼續操作之目的而重新執行指令之情況下,程式不修改MVN;否則,結果為不可預測的。
排序次序(SO) 366:參數區塊之位元56,其在為零時指定遞升排序次序,且在為壹時指定遞降排序次序。當指定遞升排序次序時,輸出清單之每一記錄含有大於或等於同一輸出清單中之鄰近記錄(例如,在左側)的金鑰。當指定遞降排序次序時,輸出清單之每一記錄含有小於或等於同一輸出清單中之鄰近記錄(例如,在左側)的金鑰。在指令執行期間不更新SO。
接續旗標(CF) 368:參數區塊之位元63,其在為壹時指示操作部分地完成及接續狀態緩衝區390之內容,且當合併模式(MM)為零時,接續記錄重新呼叫緩衝區之內容可用以重新繼續操作。程式將接續旗標(CF)初始化為零且在出於重新繼續操作之目的而重新執行指令的情況下不修改CF;否則,結果為不可預測的。在一個實例中,處理器在將重新執行指令之情況下修改CF。
記錄金鑰長度370:參數區塊之位元組10至11含有指定在操作期間處理之記錄中之金鑰的以位元組計之大小的無正負號二進位整數。在一個實例中,對於以下條件中之任一者,辨識到一般運算元資料例外狀況:
* 指定零位元組之金鑰大小。
*指定並非8之倍數的金鑰大小。
* 指定大於4096個位元組之金鑰大小。
在指令執行期間不更新記錄金鑰長度。
記錄有效負載長度372:當指定SORTL-SFLR函式時,參數區塊之位元組14至15含有指定在操作期間處理之記錄中之有效負載的以位元組計之大小的無正負號二進位整數。在一個實例中,對於以下條件中之任一者,辨識到一般運算元資料例外狀況:
* 指定並非8之倍數的有效負載大小。
* 所指定之金鑰大小及有效負載大小的總和大於4096個位元組。
零之有效負載大小為有效的。
當指定SORTL-SVLR函式時,忽略參數區塊之記錄有效負載長度欄位。在指令執行期間不更新記錄有效負載長度。
運算元存取意圖(OAI) 374:參數區塊之位元組32的位元0至1向CPU發信對輸入清單及第一運算元之未來存取意圖。所提供之存取意圖可用以修改用於儲存階層中之快取記憶體的各種層級處之對應儲存位置的快取行安裝及替換策略。
當OAI欄位之位元0為壹時,經指明以含有任何作用中輸入清單之資料的儲存位置將被參考為後續指令之一或多個運算元。當OAI欄位之位元0為零時,經指明以含有任何作用中輸入清單之資料的儲存位置將不被參考為後續指令之一或多個運算元。
當OAI欄位之位元1為壹時,經指明以含有第一運算元之儲存位置將被參考為後續指令之一或多個運算元。當OAI欄位之位元1為零時,經指明以含有第一運算元之儲存位置將不被參考為後續指令之一或多個運算元。
不保證CPU使用此資訊。未定義可使用此資訊之持續時間,但其為有限的。
當下一指令存取意圖(NIAI)之後的下一順序指令為排序清單(SORTL)時,SORTL之執行不受NIAI影響。
在指令執行期間不更新OAI。
作用中輸入清單計數碼(AILCC) 376:參數區塊之位元組33的位元1至7為7位元無正負號整數,其指定指示作用中輸入清單與非作用輸入清單之間的邊界的輸入清單之編號。具有例如小於或等於AILCC欄位之值之清單編號的輸入清單在作用中狀態下。具有例如大於AILCC欄位之值之清單編號的輸入清單在非作用中狀態下。在作用中狀態下之輸入清單之數目比AILCC欄位中之值大一。
在作用中狀態下之輸入清單參與操作。在非作用中狀態下之輸入清單不參與操作。
參數區塊之位元組33的位元0被保留且應含有零;否則,程式在未來可能無法相容地操作。
在一個實例中,當AILCC欄位之值加上一大於參數區塊中所描述之輸入清單之數目(如由PBVN欄位之位元0至7所指定)時,辨識到一般運算元資料例外狀況。
在AILCC欄位中指定之值並不影響參數區塊之大小。存取例外狀況適用於指定對應於在非作用中狀態下之輸入清單之輸入清單位址或長度的參考參數區塊之欄位。
在指令執行期間不更新AILCC。
空輸入清單控制項(EILCL) 378:當參數區塊之位元組40的位元0為壹時,當在操作期間輸入list0之長度變為零時,操作結束。當參數區塊之位元組40的位元0為零時,當在操作期間輸入list0之長度變為零時,操作繼續進行。當參數區塊之位元組40的位元1為壹時,當除輸入list0以外之作用中輸入清單之長度在操作期間變為零時,操作結束。當參數區塊之位元組40的位元1為零時,當除輸入list0以外之作用中輸入清單之長度在操作期間變為零時,操作繼續進行。
當在指令執行之前,作用中輸入清單之長度最初為零時,不應用EILCL之對應位元。
在指令執行期間不更新EILCL。
吾人預期,在出於重新繼續操作之目的而重新執行指令之情況下,程式不修改EILCL;否則,結果為不可預測的。
空輸入清單旗標(EILF) 380:當EILCL為11二進位且操作由於作用中輸入清單之經更新長度等於零而結束並設定條件碼2時,例如藉由處理器將值壹儲存至參數區塊之位元組40的位元2;否則,將值零儲存至參數區塊之位元組40的位元2。當EILF含有值壹時,將在操作期間變為空之輸入清單的輸入清單編號置放於參數區塊之EILN欄位中。在一個實例中,程式將EILF初始化為零。
當重新繼續操作時,可在指令執行開始時參考EILF。吾人預期,在出於重新繼續操作之目的而重新執行指令之情況下,程式不修改EILF;否則,結果為不可預測的。
空輸入清單編號(EILN) 382:當條件使得將值壹儲存於EILF欄位中時,例如藉由處理器將在操作期間變為空之輸入清單的輸入清單編號儲存於參數區塊之位元組41中;否則,將值零儲存於參數區塊之位元組41中。
在操作開始時忽略EILN。在一個實例中,程式將EILN初始化為零。
不完整輸入清單旗標(IILF) 384:當操作由於嘗試處理不完整輸入清單而結束時,例如藉由處理器將值壹儲存至參數區塊之位元組46的位元0;否則,將值零儲存至參數區塊之位元組46的位元0。當對應輸入清單長度大於零且小於由輸入清單位址指明之記錄的位元組之數目時,作用中輸入清單被視為不完整的。在操作開始時可存在此條件,或在操作期間可遇到此條件。當IILF含有值壹時,將遇到之不完整輸入清單的輸入清單編號置放於參數區塊之IILN欄位中。在一個實例中,程式將IILF初始化為零。
當操作以設定條件碼2結束且IILF欄位中之所得值為零時,操作由於空輸入清單而結束。當操作以設定條件碼2結束且IILF欄位中之所得值為壹時,操作由於不完整輸入清單而結束。
當重新繼續操作時,可在指令執行開始時參考IILF。吾人預期,在出於重新繼續操作之目的而重新執行指令之情況下,程式不修改IILF;否則,結果為不可預測的。
不完整輸入清單編號(IILN) 386:當條件使得將值壹儲存於IILF欄位中時,例如藉由處理器將遇到之不完整輸入清單的輸入清單編號儲存於參數區塊之位元組47中;否則,將值零儲存於參數區塊之位元組47中。當多個輸入清單不完整時,其為模型相依的,其中將不完整輸入清單編號儲存至IILN欄位。在一個實例中,程式將IILN初始化為零。
在操作開始時忽略IILN。
接續記錄重新呼叫緩衝區起點388:在操作結束且可稍後重新繼續之狀況下,由程式為CPU提供儲存器中之4K位元組緩衝區(被稱作接續記錄重新呼叫緩衝區),以儲存及參考同一排序清單指令之兩次執行之間的資料。參數區塊之五十二個位元(自位元組56之位元0開始至位元組62之位元3)含有在形成接續記錄重新呼叫位址時使用之無正負號二進位整數,該接續記錄重新呼叫位址在4K位元組邊界上對準。接續記錄重新呼叫位址為例如接續記錄重新呼叫緩衝區之最左位元組的邏輯位址。
在24位元定址模式中,在右側附加有12個零之接續記錄重新呼叫緩衝區起點的位元40至51形成接續記錄重新呼叫位址。在31位元定址模式中,在右側附加有12個零之接續記錄重新呼叫緩衝區起點的位元33至51形成接續記錄重新呼叫位址。在64位元定址模式中,在右側附加有12個零之接續記錄重新呼叫緩衝區起點的位元0至51形成接續記錄重新呼叫位址。
在存取暫存器模式中,存取暫存器1指定含有儲存器中之接續記錄重新呼叫緩衝區的位址空間。
當合併模式(MM)為零時,操作在儲存一或多個記錄之後結束且不發生正常完成,亦將儲存至第一運算元之最後記錄的金鑰儲存至接續記錄重新呼叫緩衝區。當MM為壹時,忽略接續記錄重新呼叫緩衝區起點。
在指令執行期間不修改接續記錄重新呼叫緩衝區起點。
吾人預期,在出於重新繼續操作之目的而重新執行指令的情況下,程式不修改接續記錄重新呼叫緩衝區起點;否則,結果為不可預測的。
接續狀態緩衝區(CSB) 390:當條件使得將值壹儲存於CF欄位中時,例如藉由處理器將內部狀態資料儲存至參數區塊之位元組64至575;否則,參數區塊之位元組64至575為未定義的且可修改該等位元組。所儲存之內部狀態資料為模型相依的,且可隨後在重新執行指令時使用以重新繼續操作。在一個實例中,程式將接續狀態緩衝區初始化為零。吾人預期,在出於重新繼續操作之目的而重新執行指令的情況下,程式不修改接續狀態緩衝區;否則,結果為不可預測的。
作為一實例,內部狀態資料包括與輸入清單有關之資訊,諸如關於輸入清單之記錄之先前比較的資訊,以判定待進行之後續比較。內部狀態資料為模型相依的,此係因為其可取決於處理器模型而以不同方式儲存或呈現。其他變化係可能的。
在一個實施例中,該指令可藉由一組態中之一個模型部分地完成,且執行可在該組態中之不同模型上重新繼續。儘管在一個實施例中,不同模型可維持不同的內部狀態,但在一個實例中,每一模型將能夠解譯用以重新繼續操作之CSB (若存在)的彼等內容。當操作重新繼續時,MVN指示機器能夠解譯CSB (若存在)之哪些內容。
輸入ListN位址392、394、396:參數區塊定義多個輸入清單。定義於參數區塊中之輸入清單的數目NIS
由PBVN 362之位元0至7指定。將輸入清單自零至(NIS
-1)進行編號。對於每一輸入清單,參數區塊指定例如8位元組輸入清單位址。對於輸入清單編號N,參數區塊之位元組576+16×N至583+16×N之內容指定例如儲存器中之輸入清單編號N的最左位元組之邏輯位址。
如由AILCC欄位指定,對應於在作用中狀態下之輸入清單的每一輸入清單位址為操作之輸入且由操作更新。如由AILCC欄位指定,對應於在非作用中狀態下之輸入清單的每一輸入清單位址被操作忽略。
在一個實施例中,當輸入清單位址為操作之輸入時,以下情形適用:
* 在24位元定址模式中,輸入清單位址之位元40至63指明儲存器中之輸入清單的最左位元組之位置,且輸入清單位址之位元0至39的內容被視為零。
* 在31位元定址模式中,輸入清單位址之位元33至63指明儲存器中之輸入清單的最左位元組之位置,且輸入清單位址之位元0至32的內容被視為零。
* 在64位元定址模式中,輸入清單位址之位元0至63指明儲存器中之輸入清單的最左位元組之位置。
在存取暫存器模式中,存取暫存器1指定儲存器中含有作用中輸入清單之位址空間。
對於在作用中狀態下之輸入清單,對應的輸入清單位址將在雙字邊界上指明;否則,在一個實例中,辨識到一般運算元資料例外狀況。
在一個實施例中,當輸入清單位址由操作更新時,以下情形適用:
* 當作為操作之部分已處理輸入清單之一或多個記錄時,將對應的輸入清單位址遞增已處理記錄在儲存器中佔用之位元組的數目。輸入清單位址之形成及更新取決於定址模式。
* 在24位元定址模式中,經更新之輸入清單位址的位元40至63替換參數區塊之輸入清單位址欄位中的對應位元,忽略經更新之輸入清單位址的位元位置40之進位輸出,且將參數區塊之輸入清單位址欄位的位元位置0至39之內容設定為零。
* 在31位元定址模式中,經更新之輸入清單位址的位元33至63替換參數區塊之輸入清單位址欄位中的對應位元,忽略經更新之輸入清單位址的位元位置33之進位輸出,且將參數區塊之輸入清單位址欄位的位元位置0至32之內容設定為零。
* 在64位元定址模式中,經更新之輸入清單位址的位元0至63替換參數區塊之輸入清單位址欄位中的對應位元,且忽略經更新之輸入清單位址的位元位置0之進位輸出。
在24位元定址模式及31位元定址模式中,當指令執行結束且指令未被抑制、設為空值(nullify)或終止時,更新對應於作用中輸入清單之每一64位元輸入清單位址,即使在位址未遞增時亦如此。
輸入ListN長度393、395、397:對於每一輸入清單,參數區塊指定8位元組輸入清單長度。對於輸入清單編號N,參數區塊之位元組584+16×N至591+16×N含有指定輸入清單編號N中之位元組之數目的無正負號整數。
如由AILCC欄位指定,對應於在作用中狀態下之輸入清單的每一輸入清單長度為操作之輸入且由操作更新。如由AILCC欄位指定,對應於在非作用中狀態下之輸入清單的每一輸入清單長度被操作忽略。
在各種定址模式中,輸入清單長度欄位之位元位置0至63的內容指定對應輸入清單之長度。
當作為操作之部分已處理輸入清單之一或多個記錄時,將對應的輸入清單長度遞減已處理記錄在儲存器中佔用之位元組的數目。在各種定址模式中,經更新之輸入清單長度的位元0至63替換參數區塊之對應輸入清單長度欄位中的位元0至63。
保留:參數區塊中存在數個保留欄位(例如,不包括其他資訊之欄位)。作為操作之輸入,保留欄位應含有零;否則,程式在未來可能無法相容地操作。當操作結束時,保留欄位可儲存為零或可保持不變。
圖5A至圖5B概述SORTL-SFLR函式之輸入(包括參數區塊中之欄位)的原始值及最終值之一個實例。
在一個實施例中,出於重新繼續操作之目的,不需要且不期望程式在以設定條件碼3結束操作與分支回至指令以重新執行指令之間修改參數區塊。
在一個實施例中,SORTL-SFLR函式包括來自不同輸入清單之記錄的金鑰之間的多個比較。在一個實例中,當比較金鑰時,以下情形適用:
* 金鑰被視為無正負號二進位整數,亦被稱作非結構化資料。
* 在判定哪一金鑰含有最低或最高值時,可能不必存取正被比較之每一金鑰的所有位元組。一次比較之每一金鑰的位元組之數目(被稱作金鑰比較單元)為模型相依的。所存取之金鑰的位元組之數目為整數個金鑰比較單元。
* 當比較具有相等值之金鑰時,在一個實例中,將來自具有最高輸入清單編號之輸入清單的金鑰選擇為在排序次序上處於具有相同值之其他金鑰之前。在此狀況下,將來自具有最高輸入清單編號之輸入清單的對應記錄在具有相同金鑰值之其他記錄之前儲存至第一運算元。此適用於遞升及遞降排序次序。
一個實施方案可維持來自作用中輸入清單之記錄之間的先前比較之歷史。當歷史可用且適用時,代替存取及比較先前比較之記錄,可參考歷史。參考歷史減少產生結果所需之執行時間,從而改善運算環境內之處理。
SORTL-SFLR函式包括自呈指定排序次序之一組輸入清單選擇記錄及將選定記錄置放於第一運算元位置處。隨著操作繼續進行,維持第一運算元位址及作用中輸入清單位址之當前值。函式以操作單元繼續進行。在每一操作單元期間,對於每一作用中輸入清單,檢驗由對應的當前輸入清單位址指明之金鑰且將一個記錄置放於第一運算元位置處。
當合併模式(MM)為零時,作用中輸入清單指明各自被視為含有例如自左向右呈隨機次序之記錄的清單。當MM為零時,儲存至第一運算元位置之記錄構成一或多個輸出清單,且每一輸出清單之開始位址及長度儲存至第二運算元位置。當MM為零時,作為一個實例,每一操作單元包括呈指定次序之以下步驟:
1. 判定待儲存至第一運算元位置之下一記錄是否可包括於最近輸出清單(包括最近儲存至第一運算元位置之記錄的輸出清單)中,如下:
* 當接續旗標(CF)為零且第一操作單元正被處理時,無記錄已儲存至第一運算元位置,且待儲存之下一記錄將為輸出清單之第一記錄。
* 當CF為壹,指令之先前執行以條件碼1結束且針對指令之當前執行正處理第一操作單元時,待儲存之下一記錄將為輸出清單之第一記錄。
* 當CF為壹,IILF為零,EILF為零,指令之先前執行以條件碼2結束且針對指令之當前執行正處理第一操作單元時,待儲存之下一記錄將為輸出清單之第一記錄。
* 當CF為壹,IILF或EILF為壹,指令之先前執行以條件碼2結束且針對指令之當前執行正處理第一操作單元時,待儲存之下一記錄可包括於最近輸出清單中。
* 當CF為壹,指令之先前執行以條件碼3結束且針對指令之當前執行正處理第一操作單元時,待儲存之下一記錄可包括於最近輸出清單中。
* 當正處理之操作單元並非用於指令之當前執行的第一操作單元時,待儲存之下一記錄可包括於最近輸出清單中。
2. 當待儲存之下一記錄可包括於最近輸出清單中時,判定限定為包括於最近輸出清單中之一組記錄。對於作用中、非空且並非不完整的每一輸入清單,比較由當前輸入清單位址指明之記錄的金鑰(當前輸入金鑰)與最近儲存至第一運算元位置之記錄的金鑰(先前儲存金鑰)。出於此目的,對先前儲存金鑰之參考並非對第一運算元位置之參考。實情為,其為對供選擇金鑰之輸入清單的參考,或其為對接續記錄重新呼叫緩衝區之參考。當正重新繼續操作且指令之當前執行尚未將任何記錄置放於第一運算元位置處時,該參考為對接續記錄重新呼叫緩衝區之參考。
當排序次序為遞升且當前輸入金鑰之值大於或等於先前儲存金鑰之值時,將當前輸入金鑰視為屬於限定為包括於最近輸出清單中之一組金鑰。當排序次序為遞降且當前輸入金鑰之值小於或等於先前儲存金鑰之值時,將當前輸入金鑰視為屬於限定為包括於最近輸出清單中之一組金鑰。當限定為包括於最近輸出清單中之該組金鑰中的金鑰數目為零時,待儲存之下一記錄將為輸出清單之第一記錄。當限定為包括於最近輸出清單中之該組金鑰中的金鑰數目為非零時,待儲存之下一記錄將包括於最近輸出清單中。
3. 當待儲存之下一記錄將包括於最近輸出清單中時,比較限定為包括於最近輸出清單中之該組金鑰中的金鑰。當排序次序為遞升時,選擇最小金鑰值及對應記錄。當排序次序為遞降時,選擇最大金鑰值及對應記錄。
4. 當待儲存之下一記錄將為輸出清單之第一記錄時,比較由對應於作用中、非空且並非不完整之輸入清單之當前輸入清單位址指明的記錄之金鑰。當排序次序為遞升時,選擇最小金鑰值及對應記錄。當排序次序為遞降時,選擇最大金鑰值及對應記錄。
5. 將選定記錄置放於當前第一運算元位置處。
6. 當前第一運算元位址遞增等於選定記錄之長度的位元組數目。
7. 對應於含有選定記錄之輸入清單的當前輸入清單位址遞增等於選定記錄之長度的位元組數目。
當合併模式為零時,作為操作之部分,對於儲存於第一運算元位置處之每一輸出清單,將對應輸出清單描繪(OLD)儲存於第二運算元位置處。每一OLD包括例如8位元組OLD位址,其指明對應輸出清單中之第一記錄的位置;及例如8位元組OLD長度,其指定對應輸出清單之以位元組計的長度。當操作以條件碼3結束,條件碼2及EILF等於壹或條件碼2及IILF等於壹時,在操作結束時正處理之最近輸出清單可經部分處理且未經完全處理。亦即,經部分處理之輸出清單中的記錄之數目為中間值且可在操作重新繼續時增加。在此狀況下,對應於經部分處理之輸出清單的輸出清單描繪(OLD)不置放於第二運算元位置處,直至操作重新繼續且輸出清單經完全處理。
當合併模式為零且操作在儲存一或多個記錄之後結束且未發生正常完成時,亦將儲存至第一運算元位置之最後記錄的金鑰儲存至接續記錄重新呼叫緩衝區。
當合併模式為零且操作由於正常完成而結束時,一或多個輸出清單已置放於第一運算元位置處且輸出清單描繪已置放於第二運算元位置處。程式可使用輸出清單描繪作為用於後續SORTL操作之參數區塊中的輸入清單位址及長度值。
圖6A至圖6D說明在執行合併模式等於零之SORTL-SFLR之前或之後的第一運算元及第二運算元。參看圖6A至圖6B,FOSA 600為第一運算元開始位址:由R1
指定之位置;FOEA 602為第一運算元結束位址:由R1
+(R1
+1)-1指定之位置;且OL 604為輸出清單(例如,輸出清單1……輸出清單N)。另外,參看圖6C至圖6D,SOSA 610為第二運算元開始位址:由R2
指定之位置;SOEA 612為第二運算元結束位址:由R2
+(R2
+1)-1指定之位置;且OLD 614為輸出清單指明(例如,輸出清單指明1……輸出清單指明N)。
當合併模式(MM)為壹時,作用中輸入清單指明各自被視為含有自左向右呈如由參數區塊之SO欄位指定之排序次序的記錄的清單。當MM為壹時,儲存至第一運算元位置之記錄構成單一輸出清單。作為一實例,當MM為壹時,每一操作單位包括例如呈指定次序之以下步驟:
1. 比較由對應於作用中、非空且並非不完整之輸入清單之當前輸入清單位址指明的記錄之金鑰。當排序次序為遞升時,選擇最小金鑰值及對應記錄。當排序次序為遞降時,選擇最大金鑰值及對應記錄。
2. 將選定記錄置放於當前第一運算元位置處。
3. 當前第一運算元位址遞增等於選定記錄之長度的位元組數目。
4. 對應於含有選定記錄之輸入清單的當前輸入清單位址遞增等於選定記錄之長度的位元組數目。
圖7A至圖7B說明在執行合併模式等於壹之SORTL-SFLR之前或之後的第一運算元。參看圖7A至圖7B,FOSA 700為第一運算元開始位址:由R1
指定之位置;FOEA 702為第一運算元結束位址:由R1
+(R1
+1)-1指定之位置;且OL 704為輸出清單(例如,輸出清單1)。
當合併模式為零或一時,作為操作之部分,更新在作用中狀態下之輸入清單的輸入清單位址及長度。對於作用中狀態下之每一輸入清單,輸入清單位址遞增來自輸入清單之在操作期間被選擇且置放於第一運算元位置處的記錄之位元組的數目,且輸入清單長度遞減相同數目。輸入清單位址之形成及更新取決於定址模式。
隨著操作繼續進行,可遇到不完整的輸入清單。在嘗試參考來自不完整之輸入清單之記錄的操作單元期間,辨識到不完整的輸入清單。多個操作單元可在辨識到不完整輸入清單之前完成。此在合併模式為零或一時適用。
隨著操作繼續進行,可遇到存取輸入清單、第一運算元或第二運算元(在適用時)之存取例外狀況。在嘗試存取儲存位置之操作單元期間辨識到存取例外狀況,且對於彼位置,存在存取例外狀況。多個操作單元可在辨識到存取例外狀況之前完成。此在合併模式為零或一時適用。
當操作以部分完成結束時,將可包括記錄之間的先前比較之歷史的內部狀態資料儲存至參數區塊之接續狀態緩衝區(CSB)欄位。隨後,當重新執行指令時,出於重新繼續操作之目的,可將CSB之內容載入至實施方案中且可在操作重新繼續時參考歷史。此在合併模式為零或一時適用。
當來自作用中輸入清單之記錄已排序且儲存至第一運算元時,發生正常完成。
在一個實施例中,當操作由於正常完成而結束時,以下情況發生:
* 分別更新通用暫存器R1
及R1
+1中之位址及長度。
* 當MM為零時,分別更新通用暫存器R2
及R2
+1中之位址及長度。
* 對於在作用中狀態下之輸入清單,更新輸入listN位址欄位及輸入listN長度欄位。
* 設定模型版本號碼。
* 將接續旗標設定為零。
* 將空輸入清單旗標設定為零。
* 將空輸入清單編號設定為零。
* 將不完整輸入清單旗標設定為零。
* 將不完整輸入清單編號設定為零。
* 設定條件碼0。
位址及長度之形成及更新取決於定址模式。
當正常完成發生時,在操作結束之後,未定義參數區塊之CSB欄位。
在一個實施例中,當已處理CPU判定數目個位元組時,操作結束且以下情況發生:
* 分別更新通用暫存器R1
及R1
+1中之位址及長度。
* 當MM為零時,分別更新通用暫存器R2
及R2
+1中之位址及長度。
* 對於在作用中狀態下之輸入清單,更新輸入listN位址欄位及輸入listN長度欄位。
* 設定模型版本號碼。
* 將接續旗標設定為壹。
* 當MM為零且一或多個記錄在指令執行期間已置放於第一運算元位置處時,將金鑰值儲存至接續記錄重新呼叫緩衝區。
* 更新接續狀態緩衝區。
* 將空輸入清單旗標設定為零。
* 將空輸入清單編號設定為零。
* 將不完整輸入清單旗標設定為零。
* 將不完整輸入清單編號設定為零。
* 設定條件碼3。
位址及長度之形成及更新取決於定址模式。
位元組之CPU判定數目取決於模型,且每當指令執行時可為不同數目。位元組之CPU判定數目通常為非零。儘管此數目可為零且呈現為無進度狀況,但CPU防止此無進度狀況之無限再發生。
在指令以例如設定條件碼3結束之後,吾人預期,程式並不修改指令之任何輸入或輸出規格且分支回以重新執行指令從而重新繼續操作。
在一個實施例中,當空輸入清單控制項(EILCL)之位元0為壹且輸入list0之長度在操作期間變為零且正常完成不適用時,操作結束且以下情況發生:
* 分別更新通用暫存器R1
及R1
+1中之位址及長度。
* 當MM為零時,分別更新通用暫存器R2
及R2
+1中之位址及長度。
* 對於在作用中狀態下之輸入清單,更新輸入listN位址欄位及輸入listN長度欄位。
* 設定模型版本號碼。
* 將接續旗標設定為壹。
* 當EILCL為10二進位且MM為零時,可將金鑰值儲存至接續記錄重新呼叫緩衝區。當EILCL為11二進位且MM為零時,可將金鑰值儲存至接續記錄重新呼叫緩衝區。在任一狀況下,一或多個記錄在指令執行期間已置放於第一運算元位置處。
* 更新接續狀態緩衝區。
* 設定空輸入清單旗標(參看圖8,其描繪操作結束時之各種參數區塊欄位)。
* 設定空輸入清單編號(參看圖8)。
* 將不完整輸入清單旗標設定為零。
* 將不完整輸入清單編號設定為零。
* 設定條件碼2。
位址及長度之形成及更新取決於定址模式。
在一個實施例中,當空輸入清單控制項(EILCL)之位元1為壹且除輸入list0以外之作用中輸入清單的長度在操作期間變為零且正常完成不適用時,操作結束且以下情況發生:
* 分別更新通用暫存器R1
及R1
+1中之位址及長度。
* 當MM為零時,分別更新通用暫存器R2
及R2
+1中之位址及長度。
* 對於在作用中狀態下之輸入清單,更新輸入listN位址欄位及輸入listN長度欄位。
* 設定模型版本號碼。
* 將接續旗標設定為壹。
* 當EILCL為01二進位且MM為零時,可將金鑰值儲存至接續記錄重新呼叫緩衝區。當EILCL為11二進位且MM為零時,可將金鑰值儲存至接續記錄重新呼叫緩衝區。在任一狀況下,一或多個記錄在指令執行期間已置放於第一運算元位置處。
* 更新接續狀態緩衝區。
* 設定空輸入清單旗標(參看圖8)。
* 設定空輸入清單編號(參看圖8)。
* 將不完整輸入清單旗標設定為零。
* 將不完整輸入清單編號設定為零。
* 設定條件碼2。
位址及長度之形成及更新取決於定址模式。
在一個實施例中,當遇到在作用中狀態下之不完整輸入清單時,操作結束且以下情況發生:
* 分別更新通用暫存器R1
及R1
+1中之位址及長度。
* 當MM為零時,分別更新通用暫存器R2
及R2
+1中之位址及長度。
* 對於在作用中狀態下之輸入清單,更新輸入listN位址欄位及輸入listN長度欄位。
* 設定模型版本號碼。
* 將接續旗標設定為壹。
* 當MM為零且一或多個記錄在指令執行期間已置放於第一運算元位置處時,將金鑰值儲存至接續記錄重新呼叫緩衝區。
* 更新接續狀態緩衝區。
* 將空輸入清單旗標設定為零。
* 將空輸入清單編號設定為零。
* 將不完整輸入清單旗標(IILF)設定為壹。
* 將遇到之不完整輸入清單的輸入清單編號置放於參數區塊之不完整輸入清單編號(IILN)欄位中。
* 設定條件碼2。
位址及長度之形成及更新取決於定址模式。
在一個實施例中,當第一運算元之長度不足以儲存另一記錄時,操作結束且發生以下情況:
* 分別更新通用暫存器R1
及R1
+1中之位址及長度。
* 當MM為零時,分別更新通用暫存器R2
及R2
+1中之位址及長度。
* 對於在作用中狀態下之輸入清單,更新輸入listN位址欄位及輸入listN長度欄位。
* 設定模型版本號碼。
* 將接續旗標設定為壹。
* 當MM為零且一或多個記錄在指令執行期間已置放於第一運算元位置處時,可將金鑰值儲存至接續記錄重新呼叫緩衝區。
* 更新接續狀態緩衝區。
* 將空輸入清單旗標設定為零。
* 將空輸入清單編號設定為零。
* 將不完整輸入清單旗標設定為零。
* 將不完整輸入清單編號設定為零。
* 設定條件碼1。
位址及長度之形成及更新取決於定址模式。
在一個實施例中,當合併模式(MM)為零且第二運算元之長度小於16時,操作結束且發生以下情況:
* 分別更新通用暫存器R1
及R1
+1中之位址及長度。
* 分別更新通用暫存器R2
及R2
+1中之位址及長度。
* 對於在作用中狀態下之輸入清單,更新輸入listN位址欄位及輸入listN長度欄位。
* 設定模型版本號碼。
* 將接續旗標設定為壹。
* 當一或多個記錄在指令執行期間已置放於第一運算元位置處時,可將金鑰值儲存至接續記錄重新呼叫緩衝區。
* 更新接續狀態緩衝區。
* 將空輸入清單旗標設定為零。
* 將空輸入清單編號設定為零。
* 將不完整輸入清單旗標設定為零。
* 將不完整輸入清單編號設定為零。
* 設定條件碼1。
位址及長度之形成及更新取決於定址模式。
當指令執行以完成結束(不以抑制、設為空值或終止結束)且正常完成未發生時,操作結束條件被稱作部分完成。
在適用時,對於第一運算元位置、第二運算元位置、接續記錄重新呼叫緩衝區及所儲存之參數區塊的部分,辨識到PER儲存器更改事件。當辨識到PER儲存器更改事件時,在報告該事件之前,將少於4K個額外位元組儲存至與所指明之PER儲存器區域相交的運算元位置。
在適用時,對於參數區塊、第一運算元位置及第二運算元位置,辨識到PER零位址偵測事件。零位址偵測不適用於在參數區塊中指定之輸入清單位址及接續記錄重新呼叫緩衝區起點。
關於適用於SORTL-SFLR函式之其他條件的實例之描述,參考下文其他條件。
當指令以條件碼1結束時,程式可在適當時修改第一運算元位址、第一運算元長度、第二運算元位址、第二運算元長度、任何作用中輸入清單位址及任何作用中輸入清單長度,且隨後重新繼續操作。
當指令以條件碼2結束、IILF等於零且EILF等於零時,程式可在適當時修改第一運算元位址、第一運算元長度、第二運算元位址、第二運算元長度、任何作用中輸入清單位址及任何作用中輸入清單長度,且隨後重新繼續操作。
當指令以條件碼2結束且EILF等於壹時,程式可在適當時修改由EILN指定之輸入清單的輸入清單位址及長度,且隨後重新繼續操作。在此狀況下,程式亦可在合併模式(MM)為壹時修改第一運算元位址及第一運算元長度。
當指令以條件碼2結束且IILF等於壹時,程式可在適當時修改由IILN指定之輸入清單的輸入清單位址及長度,且隨後重新繼續操作。在此狀況下,程式亦可在合併模式(MM)為壹時修改第一運算元位址及第一運算元長度。
當指令以條件碼3結束時且在重新執行指令以重新繼續操作之前,程式修改任何作用中輸入清單位址或長度、第一運算元位址或長度或第二運算元位址或長度,結果為不可預測的。
函式碼
2
:
SORTL-SVLR (
排序可變長度記錄
)
SORTL-SVLR函式與SORTL-SFLR函式相同地操作,惟以下情況除外:
* 舉例而言,如圖9中所展示,記錄包括固定長度金鑰900、8位元組有效負載長度(PL) 902及可變長度有效負載904。因此,記錄具有可變長度。
* 忽略用於SORTL-SVLR函式之參數區塊的位元組14至15。
* 每一記錄之有效負載長度欄位的最低有效的例如2個位元組含有指定同一記錄中之有效負載的以位元組計之長度的無正負號二進位整數。零之有效負載長度為有效的。在一個實例中,有效負載長度將為例如8之倍數;否則,辨識到一般運算元資料例外狀況。有效負載長度欄位之最高有效的6個位元組(作為一實例)被保留且應含有零;否則,程式在未來可能無法相容地操作。在一個實例中,金鑰長度八與有效負載長度之總和不大於例如4096;否則,辨識到一般運算元資料例外狀況。當由於不適當的有效負載長度而辨識到一般運算元資料例外狀況時,對應於遇到例外狀況之作用中輸入清單的輸入清單位址指定錯誤記錄之最左位元組的邏輯位址。當將可變長度記錄儲存至第一運算元位置時,不修改有效負載長度欄位之保留位元組。
* 在僅嘗試參考來自輸入清單長度大於金鑰大小且小於記錄大小之輸入清單的記錄之金鑰的操作單元期間,可能不會辨識到不完整輸入清單。在此狀況下,將在嘗試將來自不完整輸入清單之記錄儲存至第一運算元位置時辨識到不完整輸入清單。
用於SORTL-SVLR函式之參數區塊與用於SORTL-SFLR函式之參數區塊相同,惟位元組14至15除外,如上文所指示。
關於適用於SORTL-SVLR函式之其他條件的描述,參考下文其他條件。
特殊條件
在一個實施例中,當嘗試執行排序清單時,辨識到規格例外狀況,且以下情況中之任一者適用:
* 通用暫存器0之位元57至63指明未指派或未安裝函式碼。
* R1
欄位指明奇數編號暫存器或通用暫存器0。
* R2
欄位指明奇數編號暫存器或通用暫存器0。此在合併模式(MM)為零或一時適用。
* 參數區塊未在雙字邊界上指明。
* 指定SORTL-SFLR函式或SORTL-SVLR函式,且第一運算元未在雙字邊界上指明。
* 指定SORTL-SFLR函式或SORTL-SVLR函式,且當MM為零時,第二運算元未在雙字邊界上指明。
在一個實施例中,當嘗試執行排序清單時,辨識到一般運算元資料例外狀況,且以下情況中之任一者適用:
* 指定SORTL-SFLR或SORT-SVLR函式,且參數區塊版本號碼之位元0至7中無位元或多個位元含有值壹,在此狀況下,抑制操作。
* 指定SORTL-SFLR或SORTL-SVLR函式,且模型不支援如由參數區塊版本號碼指定之參數區塊的大小或格式,在此狀況下,抑制操作。
* 指定SORTL-SFLR或SORTL-SVLR函式,且記錄金鑰長度指定零之金鑰大小、並非8之倍數的金鑰大小或大於4096之金鑰大小,在此狀況下,抑制操作。
* 指定SORTL-SFLR函式,且記錄有效負載長度指定並非8之倍數的有效負載大小,或在相加至金鑰大小時大於4096的有效負載大小,在此狀況下,抑制操作。
* 指定SORTL-SVLR函式,且記錄有效負載長度指定並非8之倍數的有效負載大小,或在相加至金鑰大小時大於4088的有效負載大小,在此狀況下,無論操作被抑制抑或終止,其皆為模型相依的。
* 指定SORTL-SFLR或SORTL-SVLR函式,且作用中輸入清單計數碼(AILCC)之值加上一大於由參數區塊描述之輸入清單之數目,在此狀況下,抑制操作。
* 指定SORTL-SFLR或SORTL-SVLR函式,且對應於作用中輸入清單之輸入清單位址未在雙字邊界上指明,在此狀況下,抑制操作。
其他條件
在一個實施例中,以下條件適用:
指令執行為可中斷的。當中斷發生時,更新通用暫存器R1
及R2
中之位址、通用暫存器R1
+1及R2
+1中之長度以及參數區塊之特定欄位,使得指令在經重新執行時在中斷點處重新繼續。
對於在由第一運算元位址指明之位置右側的大於4K個位元組之位置,未辨識到存取例外狀況。對於在由輸入清單位址指明之位置右側的大於4K個位元組之位置,未辨識到存取例外狀況。
若由於針對第一運算元、第二運算元或任何輸入清單而辨識到存取例外狀況,則結果為辨識到例外狀況或設定條件碼3。若設定條件碼3,則假定例外狀況條件仍存在,當再次執行指令以繼續處理相同運算元時將辨識到例外狀況。
當記錄之金鑰跨越頁面邊界且對於兩個頁面均存在存取例外狀況條件時,可辨識到任一存取例外狀況。
當對於在單一操作單元期間正被處理之多個金鑰,存在存取例外狀況條件時,可辨識到此等條件中之任一者。
當參數區塊跨越頁面邊界且對於兩個頁面均存在存取例外狀況條件時,可辨識到最左頁面之存取例外狀況。
當操作以部分完成結束時,多達4K個位元組之資料可能已儲存於第一運算元內之位置處,該等位置在由經更新之第一運算元位址指明之位置處或在其右側。此類儲存在適用時導致設定改變位元,且在適用時辨識PER儲存器更改事件。當再次執行指令以繼續處理相同運算元時,將重複至此等位置之儲存。
如由此CPU、其他CPU及通道程式觀察到,對參數區塊、第一運算元、輸出清單描繪緩衝區及在作用中狀態下之輸入清單的參考可為多重存取參考,對此等儲存位置之存取未必為區塊並行的,且未定義此等存取或參考之順序。
在一個實施例中,當指定函式為SORTL-SFLR或SORTL-SVLR時,結果為不可預測的且以下情況中之任一者適用:
* 參數區塊與任何作用中輸入清單或第一運算元重疊。
* 任何作用中輸入清單與第一運算元重疊。
* 合併模式為零且參數區塊與第二運算元或接續記錄重新呼叫緩衝區重疊。
* 合併模式為零且任何作用中輸入清單與第二運算元或接續記錄重新呼叫緩衝區重疊。
* 合併模式為零且第一運算元與第二運算元或接續記錄重新呼叫緩衝區重疊。
* 合併模式為零且第二運算元與接續記錄重新呼叫緩衝區重疊。
* 另一CPU或通道程式將記錄之金鑰儲存於輸入清單或接續記錄重新呼叫緩衝區中。
實例所得條件碼:
0 正常完成
1 第一運算元之長度小於記錄之大小,或合併模式為零且第二運算元之長度小於16 (亦即,第一運算元長度或第二運算元長度不足以繼續)
2 遇到不完整輸入清單(IILF=1),或EILCL為非零,且輸入清單之長度在操作期間變為等於零(亦即,遇到不完整或空輸入清單)。
3 已處理CPU判定量之資料(亦即,CPU判定完成)。
程式例外狀況:
* 存取(提取輸入清單;提取及儲存參數區塊及接續記錄重新呼叫緩衝區;儲存運算元1及2)
* 具有資料例外狀況碼(DXC) 0 (一般運算元)之資料
* 操作(若未安裝增強之排序設施)
* 規格
* 異動約束
下文展示排序清單指令之執行的優先順序之實例。當存在具有開始於13之優先順序值的多個條件時,辨識到之條件為在操作繼續進行時首先遇到之條件。當重新繼續操作時(在開始執行指令時,接續旗標為壹),可使用金鑰之間的先前比較之歷史來代替最初存取在作用中且並非為空之輸入清單。結果,相較於在不使用先前比較之歷史時,在相同處理點可能不會遇到存取特定輸入清單之存取例外狀況。當處理可變長度記錄時,可在判定有效負載長度之前部分地評估隨記錄長度而變之條件,且在判定有效負載長度之後完全評估該等條件。結果,當判定條件在僅部分地評估要求之後而非在完全評估所有要求之後存在時,在此類條件當中觀察到之優先順序可不同。
實例執行優先順序(SORTL)
1.-6. 優先順序與一般狀況之程式中斷條件之優先順序相同的例外狀況。
7.A 第二指令半字之存取例外狀況。
7.B 操作例外狀況。
7.C 異動約束。
8.A 由於無效函式碼或無效暫存器編號之規格例外狀況。
8.B 由於第一運算元未在雙字邊界上指明之規格例外狀況。
8.C 由於第一運算元未在雙字邊界上指明之規格例外狀況。
8.D 由於第二運算元未在雙字邊界上指明之規格例外狀況且合併模式為零。
9. 存取參數區塊之位元組0至7的存取例外狀況。
10. 由於參數區塊中之PBVN欄位的不受支援之值的一般運算元資料例外狀況。
11. 存取參數區塊之除位元組0至7以外之位元組的存取例外狀況。
12. 由於參數區塊中之除PBVN以外的欄位之無效值的一般運算元資料例外狀況。
13.A 存取作用中輸入清單之存取例外狀況。
13.B 在合併模式為零時存取接續記錄重新呼叫緩衝區之存取例外狀況。
13.C 存取第一運算元之存取例外狀況。
13.D 在合併模式為零時存取第二運算元之存取例外狀況。
13.E 由於不完整輸入清單之條件碼2。
13.F 由於第一運算元之不足長度的條件碼1。
13.G 在合併模式為零時由於第二運算元之不足長度的條件碼1。
13.H 由於可變長度記錄之無效有效負載長度的一般運算元資料例外狀況。
13.I 由於空輸入清單之條件碼2。
14. 條件碼3。
程式化備註。在一個實施例中:
1. 空輸入清單控制項(EILCL)之預期使用如下:
EILCL(0:1)
(二進位) 描述
00 在來自作用中輸入清單之記錄經排序(例如,來自所有作用中輸入清單之所有記錄)之後停止。
10 在輸入list0 (始終在作用中)變為空之後停止。
11 在任何作用中輸入清單變為空之後停止。
2. 當作用中輸入清單計數碼(AILCC)為零時,僅存在一個作用中輸入清單且儲存於第一運算元位置處之結果與自輸入list0提取之資料相同。
3. 實施分開指令及資料快取記憶體之模型可使用指令快取記憶體以實行對作用中輸入清單中之資料的儲存器運算元提取參考。
4. 當程式預期多次調用合併模式等於零之排序清單時,作為處理大資料集之部分,程式將在一個實例中利用可用輸入清單且在該等輸入清單當中均勻地分割記錄。此減少在排序整個資料集時存取資料之次數。
5. 在合併模式等於零之排序清單以設定條件碼0結束且多個輸出清單描繪(OLD)處於第二運算元中之後,意欲以排序次序產生記錄之單一清單的程式將調用另一排序清單操作,其中輸入清單指定為來自先前排序清單調用之所得OLD。在此狀況下,在一個實例中,排序清單之第二調用指定等於壹的合併模式。
類似地,在一個實施例中,在如所需或所要多次地調用合併模式等於零之排序清單以自大量任意次序記錄產生經排序清單之全集之後,在一個實例中,如所需或所要多次地調用合併模式等於壹之排序清單以產生單一經排序清單。
6. 在一個實施例中,為了減少在將多個經排序清單以遞升排序次序(例如)合併成單一清單時存取每一記錄之次數,程式實行以下處理程序:
* 判定可用於排序清單之輸入清單的最大數目N。
* 比較尚未合併至單一清單中之經排序清單的第一記錄之金鑰。選擇具有最低第一金鑰值之N個清單。
* 執行排序清單,其合併模式(MM)等於壹,空輸入清單控制項(EILCL)等於10二進位,輸入list0僅指定具有選定N個清單之最高第一金鑰值的清單之第一記錄,且剩餘輸入清單指定其他N-1個選定清單。
* 在排序清單以條件碼2結束、IILF等於零且EILF等於零之後,重複該處理程序。
7. 在排序清單以設定條件碼1結束之後,程式實行以下動作,在一個實例中,在再次調用排序清單之前,重新繼續操作:
* 若第一運算元長度小於正處理之記錄的最大記錄長度,則應在適當時更新第一運算元長度或第一運算元位址及長度。
* 若合併模式(MM)為零且第二運算元長度小於16,則應在適當時更新第二運算元長度或第二運算元位址及長度。
* 若任何作用中輸入清單之長度等於零,則可更新對應的輸入清單位址及長度以指明待包括於排序操作中之記錄的另一清單。
8. 在排序清單以設定條件碼2結束之後,程式實行以下動作,在一個實例中,在再次調用排序清單之前,重新繼續操作:
* 若不完整輸入清單旗標(IILF)為壹,則應在適當時更新由不完整輸入清單編號(IILN)識別之輸入清單的輸入清單長度或輸入清單位址及長度。
* 若空輸入清單旗標(EILF)為壹,則應在適當時更新由空輸入清單編號(EILN)識別之輸入清單的輸入清單長度或輸入清單位址及長度。
* 若IILF為零,EILF為零且輸入list0長度為零,則應在適當時更新輸入list0長度或輸入list0位址及長度。此外,可更新作用中輸入清單之輸入清單位址及長度,若僅存在最初由輸入list0指明之一個記錄且空輸入清單控制項(EILCL)為10二進位,則更新可為適當動作。
* 若合併模式(MM)為壹且第一運算元長度小於正處理之記錄的最大記錄長度,則應在適當時更新第一運算元長度或第一運算元位址及長度。
* 若MM為零且任一IILF為壹,或EILF為壹,則不應更新第一運算元位址及長度以及第二運算元位址及長度。
* 若MM為零,IILF為零,EILF為零且第一運算元長度小於正處理之記錄的最大記錄長度,則應在適當時更新第一運算元長度或第一運算元位址及長度。
* 若MM為零,IILF為零,EILF為零且第二運算元長度小於16,則應在適當時更新第二運算元長度或第二運算元位址及長度。
如本文中所描述,在一個態樣中,提供單一指令(例如,單一架構化機器指令,排序清單)以在通用處理器上實行排序及/或合併操作。在一個實例中,對資料庫實施排序及/或合併操作且在通用處理器上執行的程式能夠用單一指令替換基元指令之有效子集以實施操作。此指令為例如定義於指令集架構(ISA)中之硬體指令。結果,與排序及/或合併操作相關之程式的複雜度降低。另外,操作及因此處理器之效能得以改善。
有利地,排序清單指令在通用處理器(例如,中央處理單元,在本文中被稱作處理器)而非諸如圖形處理單元(GPU)、資料庫引擎(DBE)或其他類型之專用處理器的專用處理器上執行。
儘管各種欄位及暫存器經描述,但本發明之一或多個態樣可使用其他、額外或更少欄位或暫存器,或其他大小之欄位或暫存器等。許多變化係可能的。舉例而言,可使用隱含暫存器而非指令之明確指定之暫存器或欄位,及/或可使用明確指定之暫存器或欄位而非隱含暫存器或欄位。其他變化亦係可能的。
在一個實例中,排序清單指令對資料庫(例如,商業資料庫)之大量資料(諸如,百萬位元組或萬億位元組資料)起作用。因此,指令為可中斷的且處理可在中斷之處重新繼續。
參看圖10A至圖10B描述與排序清單指令相關聯之處理的一個實施例之其他細節。在一個實例中,此處理由諸如處理器102或204之處理器實行。
在一個實例中,獲得排序清單指令且開始執行(步驟1000)。如上文所指示,可針對排序清單指令指定複數個函式,且因此,進行關於待實行之函式的判定(步驟1002)。若函式為查詢函式(例如,在通用暫存器0中指定函式碼0)(詢問1004),則提供可用函式(步驟1006)。舉例而言,已安裝函式向量342、已安裝介面大小向量344及已安裝參數區塊格式向量346儲存於參數區塊中。
然而,若未請求查詢函式(詢問1004),則進行關於是否正請求諸如排序固定長度記錄或排序可變長度記錄之排序函式的判定(詢問1008)。若未指定查詢或排序函式,則在一個實例中,處理以例如規格例外狀況結束(步驟1010)。然而,若指定排序函式,則進行關於是否請求合併(例如,合併模式310設定為壹)之另一判定(詢問1012)。
若未正請求合併,則對使用由通用暫存器1指定之參數區塊(例如,參數區塊之輸入清單位址欄位392、394、396)獲得的複數個輸入清單實行排序(步驟1020)。在一個實施例中,藉由發出排序清單指令之程式將複數個記錄分割(例如,均勻地)成複數個輸入清單中。使用記錄之金鑰排序複數個輸入清單(步驟1022)。排序可為遞升或遞降,如參數區塊之排序次序欄位366中所指示。
排序產生中間輸出清單,其中之每一者呈經排序次序。將此等輸出清單儲存於第一運算元中(步驟1024),且將每一清單之描繪儲存於第二運算元中(步驟1026)。
若需要經排序記錄之單一清單,則在一個實施例中,重新執行排序清單指令,指定合併選項。
返回至詢問1012,若指定合併,則輸入為呈預排序次序之複數個清單(步驟1030),在一個實例中,使用參數區塊指定該複數個清單。使用清單中之記錄的金鑰將此等清單合併成單一清單(步驟1032)。將合併清單儲存於第一運算元中(步驟1034)。
在一個實施例中,參看圖10B,排序或合併操作可中斷,且因此,在一個實例中,若操作中斷(詢問1050),則將接續指示符(例如,參數區塊之接續旗標368)設定為例如壹(步驟1052)。另外,將可用以隨後重新繼續操作之資訊儲存於例如參數區塊中(步驟1054)。舉例而言,將諸如與先前實行比較有關之資訊的後設資料儲存於接續狀態緩衝區390中,使得不必重複彼等比較。亦可儲存額外或其他資訊,及/或可設定其他指示符。許多變化係可能的。
本發明之一或多個態樣不可避免地與電腦技術相關且促進電腦內之處理,從而改善其效能。用以實行資料庫之大量資料庫記錄之排序及/或合併的單一架構化機器指令之使用替換許多軟體指令,從而改善運算環境內之效能。此等經排序及/或合併之記錄可用於管理及/或使用大量資料之許多技術領域中,諸如用於電腦處理、醫療處理、安全領域等中。藉由提供排序/合併之最佳化,此等技術領域藉由減少獲得資訊及使用資訊之執行時間及降低儲存要求來改善。
參看圖11A至圖11B描述促進運算環境內之處理的一個實施例之其他細節,此係因為該運算環境與本發明之一或多個態樣有關。
參看圖11A,獲得實行排序操作之指令(1100)。該指令為指令集架構之單一架構化機器指令(1102),且由運算環境之通用處理器執行(1104)。該執行包括例如排序複數個輸入清單以獲得一或多個經排序輸出清單(1106),及提供該一或多個經排序輸出清單作為輸出(1108)。
在一個實施例中,該指令包括:操作碼欄位,其包括用以指定排序清單操作之操作碼;及一個欄位,其用以指明一個位置,該一個位置用於儲存一或多個經排序輸出清單(1110)。在另一實施例中,該指令包括用以指明另一位置之另一欄位,該另一位置用以儲存一或多個輸出清單描繪(1112)。作為實例,該一個欄位為暫存器欄位,該暫存器欄位指明暫存器,該暫存器包括一個位置之位址,且另一欄位為另一暫存器欄位,該另一暫存器欄位指明另一暫存器,該另一暫存器包括另一位置之位址(1114)。
在一個實例中,參看圖11B,該指令使用一個隱含暫存器以判定待由指令實行之函式(1120)。作為一實例,該函式係選自由以下各者組成之函式群組:查詢可用函式函式、排序固定長度記錄函式及排序可變長度記錄函式(1122)。
作為另一實例,該指令使用另一隱含暫存器以找出記憶體中由指令使用之參數區塊(1123)。該參數區塊包括取決於待實行之函式而由指令使用的資訊(1124)。在一個特定實例中,待實行之函式為排序固定長度記錄函式或排序可變長度記錄函式,且該參數區塊包括用以基於排序被中斷而找出複數個輸入清單之資訊及用以繼續排序之資訊(1126)。
在一個實施例中,一個隱含暫存器進一步包括操作模式指示符,該操作模式指示符用以指定是否實行一或多個經排序輸出清單之合併(1128)。
作為一特定實例,該指令包括:操作碼欄位,其包括用以指定排序清單操作之操作碼;第一暫存器欄位,其包括第一暫存器之指明,該第一暫存器包括用於儲存一或多個經排序輸出清單之位址;及第二暫存器欄位,其包括第二暫存器之指明,該第二暫存器包括用於儲存一或多個輸出清單描繪之位址,且其中該指令使用第一隱含暫存器以判定待由指令實行之函式且使用第二隱含暫存器以找出記憶體中由指令使用之參數區塊(1130)。
其他變化及實施例為可能的。
本發明之態樣可由許多類型之運算環境使用。參看圖12A描述併有及使用本發明之一或多個態樣的運算環境之另一實施例。在此實例中,運算環境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硬體架構開發之軟體及指令。
參看圖12B描述與仿真器程式碼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):提供給消費者之能力係佈建處理、儲存器、網路及其他基礎運算資源,其中消費者能夠部署及運行可包括作業系統及應用程式之任意軟體。消費者並不管理或控制底層雲端基礎架構,但控制作業系統、儲存器、所部署應用程式,及可能有限地控制選擇網路連接組件(例如,主機防火牆)。
部署模型如下:
私用雲端:僅針對組織操作雲端基礎架構。私用雲端可由組織或第三方來管理且可存在內部部署或外部部署。
社群雲端:該雲端基礎架構由若干組織共用且支援具有共用關注點(例如,任務、安全性要求、策略及順應性考量)之特定社群。私用雲端可由組織或第三方來管理且可存在內部部署或外部部署。
公用雲端:該雲端基礎架構可用於公眾或大型工業集團且為出售雲端服務之組織所擁有。
混合雲端:該雲端基礎架構為兩個或多於兩個雲端(私用、社群或公用)之組合物,該等雲端保持獨特實體但藉由實現資料及應用程式攜帶性(例如,用於在雲端之間實現負載平衡之雲端爆裂)之標準化或專屬技術繫結在一起。
藉由集中於無國界、低耦合、模組化及語義互操作性對雲端運算環境進行服務定向。雲端運算之關鍵為包括互連節點之網路的基礎架構。
現參看圖13,描繪說明性雲端運算環境50。如所展示,雲端運算環境50包括一或多個雲端運算節點52,雲端消費者所使用之諸如個人數位助理(PDA)或蜂巢式電話54A、桌上型電腦54B、膝上型電腦54C及/或汽車電腦系統54N的本端運算裝置可與該一或多個雲端運算節點通信。節點52可彼此通信。可在一或多個網路(諸如,如上文所描述之私用、社群、公用或混合雲端或其組合)中將該等節點實體地或虛擬地分組(未圖示)。此情形允許雲端運算環境50供應基礎架構、平台及/或軟體作為服務,針對該等服務,雲端消費者不需要在本端運算裝置上維持資源。應理解,圖13中所展示之運算裝置54A至54N之類型意欲僅為說明性的,且運算節點52及雲端運算環境50可經由任何類型之網路及/或網路可定址連接(例如,使用網頁瀏覽器)與任何類型之電腦化裝置通信。
現參看圖14,展示藉由雲端運算環境50 (圖13)所提供之功能抽象層之集合。事先應理解,圖14中所展示之組件、層及功能意欲僅為說明性的且本發明之實施例不限於此。如所描繪,提供以下層及對應功能。
硬體及軟體層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控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠變成經由介入之私人網路或公用網路耦接至其他資料處理系統或遠端印表機或儲存裝置。數據機、纜線數據機及乙太網卡僅為幾個可用類型之網路配接器。
本文中所使用之術語僅出於描述特定實施例之目的且並不意欲為限制性的。如本文中所使用,除非上下文另外清楚地指示,否則單數形式「一」及「該」意欲亦包括複數形式。應進一步理解,術語「包含(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:中央處理單元(CPU)/實體處理器資源/處理器
206:輸入/輸出子系統
208:邏輯分割區
210:超管理器
212:處理器韌體
220:客體作業系統
222:程式
230:輸入/輸出控制單元
240:輸入/輸出(I/O)裝置
250:資料儲存裝置
252:程式
254:電腦可讀程式指令
260:排序/合併組件(或其他組件)
300:排序清單(SORTL)指令
302:操作碼欄位
304:第一暫存器欄位(R1)
306:第二暫存器欄位(R2)
308:通用暫存器0
310:合併模式欄位
312:函式碼欄位
313:函式碼0
315:函式碼1
316:邏輯位址
317:函式碼2
318:通用暫存器R1
320:邏輯位址
322:通用暫存器R1+1
324:長度
326:通用暫存器R2
328:邏輯位址
330:通用暫存器R2+1
332:長度
340:參數區塊
342:已安裝函式向量
344:已安裝介面大小向量
346:已安裝參數區塊格式向量
350:記錄
352:金鑰
354:有效負載
360:參數區塊
362:參數區塊版本號碼(PBVN)
364:模型版本號碼(MVN)
366:排序次序(SO)
368:接續旗標(CF)
370:記錄金鑰長度
372:記錄有效負載長度
374:運算元存取意圖(OAI)
376:作用中輸入清單計數碼(AILCC)
378:空輸入清單控制項(EILCL)
380:空輸入清單旗標(EILF)
382:空輸入清單編號(EILN)
384:不完整輸入清單旗標(IILF)
386:不完整輸入清單編號(IILN)
388:接續記錄重新呼叫緩衝區起點
390:接續狀態緩衝區(CSB)
392:輸入ListN位址
393:輸入ListN長度
394:輸入ListN位址
395:輸入ListN長度
396:輸入ListN位址
397:輸入ListN長度
400:輸入清單
402:第一運算元
404:第二運算元
450:輸入清單
452:第一運算元
454:第二運算元
600:FOSA
602:FOEA
604:OL
610:SOSA
612:SOEA
614:OLD
700:FOSA
702:FOEA
704:OL
900:固定長度金鑰
902:8位元組有效負載長度(PL)
904:可變長度有效負載
1000:步驟
1002:步驟
1004:詢問
1006:步驟
1008:詢問
1010:步驟
1012:詢問
1020:步驟
1022:步驟
1024:步驟
1026:步驟
1030:步驟
1032:步驟
1034:步驟
1050:詢問
1052:步驟
1054:步驟
1100:步驟
1102:步驟
1104:步驟
1106:步驟
1108:步驟
1110:步驟
1112:步驟
1114:步驟
1120:步驟
1122:步驟
1123:步驟
1124:步驟
1126:步驟
1128:步驟
1130:步驟
在本說明書之結尾處的申請專利範圍中作為實例特定地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容及目標、特徵以及優點自結合隨附圖式進行的以下詳細描述顯而易見,其中:
圖1A描繪併有及使用本發明之一或多個態樣的運算環境之一個實例;
圖1B描繪根據本發明之一或多個態樣的圖1A之處理器的其他細節;
圖2描繪併有及使用本發明之一或多個態樣的運算環境之另一實例;
圖3A描繪根據本發明之態樣的排序清單指令之一個格式;
圖3B描繪根據本發明之態樣的由排序清單指令使用之隱含暫存器(通用暫存器0)的欄位之一個實例;
圖3C描繪根據本發明之態樣的用於排序清單指令之函式碼的一個實例;
圖3D描繪根據本發明之態樣的由排序清單指令使用之隱含暫存器(通用暫存器1)的欄位之一個實例;
圖3E描繪根據本發明之態樣的由排序清單指令指定之暫存器R1
的內容之一個實例;
圖3F描繪根據本發明之態樣的由排序清單指令使用之暫存器R1
+1的內容之一個實例;
圖3G描繪根據本發明之態樣的由排序清單指令指定之暫存器R2
的內容之一個實例;
圖3H描繪根據本發明之態樣的由排序清單指令使用之暫存器R2
+1的內容之一個實例;
圖3I描繪根據本發明之態樣的由排序清單指令之SORTL-QAF函式使用之參數區塊的內容之一個實例;
圖3J描繪根據本發明之態樣的由排序清單指令使用之固定長度記錄格式的一個實例;
圖3K描繪根據本發明之態樣的由排序清單指令之SORTL-SFLR函式使用之參數區塊的內容之一個實例;
圖4A至圖4B描繪根據本發明之一或多個態樣的SORTL-SFLR實例;
圖5A描繪根據本發明之態樣的用於SORTL-SFLR函式之輸入的值之概述的一個實例;
圖5B描繪根據本發明之態樣的對SORTL-SFLR函式之輸入清單位址及長度欄位之修改的限制之一個實例;
圖6A描繪根據本發明之態樣的在執行合併模式指示設定為零之SORTL之前的第一運算元位置/第一運算元之一個實例;
圖6B描繪根據本發明之態樣的在執行合併模式指示設定為零之SORTL之後的第一運算元位置/第一運算元之一個實例;
圖6C描繪根據本發明之態樣的在執行合併模式指示設定為零之SORTL之前的第二運算元位置/第二運算元之一個實例;
圖6D描繪根據本發明之態樣的在執行合併模式指示設定為零之SORTL之後的第二運算元位置/第二運算元之一個實例;
圖7A描繪根據本發明之態樣的在執行合併模式指示設定為壹之SORTL之前的第一運算元位置/第一運算元之一個實例;
圖7B描繪根據本發明之態樣的在執行合併模式指示設定為壹之SORTL之後的第一運算元位置/第一運算元之一個實例;
圖8描繪根據本發明之態樣使用的參數區塊之某些欄位的一個實例;
圖9描繪根據本發明之態樣的由排序清單指令使用之可變長度記錄格式的一個實例;
圖10A至圖10B描繪根據本發明之態樣的與排序清單指令相關聯之處理的一個實例;
圖11A至圖11B描繪根據本發明之態樣的促進運算環境內之處理的一個實例;
圖12A描繪併有及使用本發明之一或多個態樣的運算環境之另一實例;
圖12B描繪圖12A之記憶體之其他細節;
圖13描繪雲端運算環境之一個實施例;及
圖14描繪抽象模型層之一個實例。
200:中央電子裝置複合體(CEC)
202:記憶體/主儲存器
204:中央處理單元(CPU)/實體處理器資源/處理器
206:輸入/輸出子系統
208:邏輯分割區
210:超管理器
212:處理器韌體
220:客體作業系統
222:程式
230:輸入/輸出控制單元
240:輸入/輸出(I/O)裝置
250:資料儲存裝置
252:程式
254:電腦可讀程式指令
260:排序/合併組件(或其他組件)
Claims (20)
- 一種用於促進一運算環境內之處理的電腦程式產品,該電腦程式產品包含: 一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用於實行一方法之指令,該方法包含: 獲得實行一排序操作之一指令,該指令為一指令集架構之一單一架構化機器指令;及 藉由該運算環境之一通用處理器執行該指令,該執行包含: 排序複數個輸入清單以獲得一或多個經排序輸出清單;及 提供該一或多個經排序輸出清單作為輸出。
- 如請求項1之電腦程式產品,其中該指令包括:一操作碼欄位,其包括用以指定一排序清單操作之一操作碼;及一個欄位,其用以指明一個位置,該一個位置用於儲存該一或多個經排序輸出清單。
- 如請求項2之電腦程式產品,其中該指令進一步包括用以指明另一位置之另一欄位,該另一位置用以儲存一或多個輸出清單描繪。
- 如請求項3之電腦程式產品,其中該一個欄位為一暫存器欄位,該暫存器欄位指明一暫存器,該暫存器包括該一個位置之一位址,且該另一欄位為另一暫存器欄位,該另一暫存器欄位指明另一暫存器,該另一暫存器包括該另一位置之一位址。
- 如請求項1之電腦程式產品,其中該指令使用一個隱含暫存器以判定待由該指令實行之一函式。
- 如請求項5之電腦程式產品,其中該函式係選自由以下各者組成之一函式群組:一查詢可用函式函式、一排序固定長度記錄函式及一排序可變長度記錄函式。
- 如請求項5之電腦程式產品,其中該指令使用另一隱含暫存器以找出記憶體中由該指令使用之一參數區塊,該參數區塊包括取決於待實行之該函式而由該指令使用的資訊。
- 如請求項7之電腦程式產品,其中待實行之該函式為一排序固定長度記錄函式或一排序可變長度記錄函式,且該參數區塊包括用以基於該排序被中斷而找出該複數個輸入清單之資訊及用以繼續該排序之資訊。
- 如請求項5之電腦程式產品,其中該一個隱含暫存器進一步包含一操作模式指示符,該操作模式指示符用以指定是否實行該一或多個經排序輸出清單之一合併。
- 如請求項1之電腦程式產品,其中該指令包括:一操作碼欄位,其包括用以指定一排序清單操作之一操作碼;一第一暫存器欄位,其包括一第一暫存器之一指明,該第一暫存器包括用於儲存該一或多個經排序輸出清單之一位址;及一第二暫存器欄位,其包括一第二暫存器之一指明,該第二暫存器包括用於儲存一或多個輸出清單描繪之一位址,且其中該指令使用一第一隱含暫存器以判定待由該指令實行之一函式且使用一第二隱含暫存器以找出記憶體中由該指令使用之一參數區塊。
- 一種用於促進一運算環境內之處理的電腦系統,該電腦系統包含: 一記憶體;及 一通用處理器,其耦接至該記憶體,其中該電腦系統經組態以實行一方法,該方法包含: 獲得實行一排序操作之一指令,該指令為一指令集架構之一單一架構化機器指令;及 藉由該運算環境之該通用處理器執行該指令,該執行包含: 排序複數個輸入清單以獲得一或多個經排序輸出清單;及 提供該一或多個經排序輸出清單作為輸出。
- 如請求項11之電腦系統,其中該指令包括:一操作碼欄位,其包括用以指定一排序清單操作之一操作碼;及一個欄位,其用以指明一個位置,該一個位置用於儲存該一或多個經排序輸出清單。
- 如請求項12之電腦系統,其中該指令進一步包括用以指明另一位置之另一欄位,該另一位置用以儲存一或多個輸出清單描繪。
- 如請求項11之電腦系統,其中該指令使用一個隱含暫存器以判定待由該指令實行之一函式。
- 如請求項14之電腦系統,其中該指令使用另一隱含暫存器以找出記憶體中由該指令使用之一參數區塊,該參數區塊包括取決於待實行之該函式而由該指令使用的資訊。
- 一種用於促進一運算環境內之處理的電腦實施方法,該電腦實施方法包含: 獲得實行一排序操作之一指令,該指令為一指令集架構之一單一架構化機器指令;及 藉由該運算環境之通用處理器執行該指令,該執行包含: 排序複數個輸入清單以獲得一或多個經排序輸出清單;及 提供該一或多個經排序輸出清單作為輸出。
- 如請求項16之電腦實施方法,其中該指令包括:一操作碼欄位,其包括用以指定一排序清單操作之一操作碼;及一個欄位,其用以指明一個位置,該一個位置用於儲存該一或多個經排序輸出清單。
- 如請求項17之電腦實施方法,其中該指令進一步包括用以指明另一位置之另一欄位,該另一位置用以儲存一或多個輸出清單描繪。
- 如請求項16之電腦實施方法,其中該指令使用一個隱含暫存器以判定待由該指令實行之一函式。
- 如請求項19之電腦實施方法,其中該指令使用另一隱含暫存器以找出記憶體中由該指令使用之一參數區塊,該參數區塊包括取決於待實行之該函式而由該指令使用的資訊。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/181,923 US10831478B2 (en) | 2018-11-06 | 2018-11-06 | Sort and merge instruction for a general-purpose processor |
US16/181,923 | 2018-11-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202034160A true TW202034160A (zh) | 2020-09-16 |
TWI736912B TWI736912B (zh) | 2021-08-21 |
Family
ID=68468733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108121225A TWI736912B (zh) | 2018-11-06 | 2019-06-19 | 用於通用處理器之排序及合併指令之電腦程式產品、電腦系統及電腦實施方法 |
Country Status (21)
Country | Link |
---|---|
US (2) | US10831478B2 (zh) |
EP (1) | EP3877840B1 (zh) |
JP (1) | JP7288048B2 (zh) |
KR (1) | KR102527963B1 (zh) |
CN (1) | CN112970000A (zh) |
AU (1) | AU2019377216B2 (zh) |
BR (1) | BR112021008844A2 (zh) |
CA (1) | CA3118173A1 (zh) |
DK (1) | DK3877840T3 (zh) |
ES (1) | ES2929826T3 (zh) |
HU (1) | HUE060425T2 (zh) |
IL (1) | IL282055B2 (zh) |
LT (1) | LT3877840T (zh) |
MX (1) | MX2021005005A (zh) |
PL (1) | PL3877840T3 (zh) |
PT (1) | PT3877840T (zh) |
SG (1) | SG11202102996YA (zh) |
SI (1) | SI3877840T1 (zh) |
TW (1) | TWI736912B (zh) |
WO (1) | WO2020094600A1 (zh) |
ZA (1) | ZA202103133B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
US10831478B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
US11790085B2 (en) * | 2020-10-29 | 2023-10-17 | Electronics And Telecommunications Research Institute | Apparatus for detecting unknown malware using variable opcode sequence and method using the same |
US11803509B1 (en) | 2022-05-23 | 2023-10-31 | Apple Inc. | Parallel merge sorter circuit |
CN115510450B (zh) * | 2022-09-20 | 2023-08-01 | 中国人民解放军国防科技大学 | 一种面向计算机二进制程序的比对依赖识别方法与系统 |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH077385B2 (ja) * | 1983-12-23 | 1995-01-30 | 株式会社日立製作所 | データ処理装置 |
US4890220A (en) | 1984-12-12 | 1989-12-26 | Hitachi, Ltd. | Vector processing apparatus for incrementing indices of vector operands of different length according to arithmetic operation results |
US5210870A (en) | 1990-03-27 | 1993-05-11 | International Business Machines | Database sort and merge apparatus with multiple memory arrays having alternating access |
JPH07104784B2 (ja) * | 1990-04-03 | 1995-11-13 | 富士ゼロックス株式会社 | デジタルデータ処理装置 |
US5307485A (en) | 1991-05-31 | 1994-04-26 | International Business Machines Corporation | Method and apparatus for merging sorted lists in a multiprocessor shared memory system |
EP0627682B1 (en) * | 1993-06-04 | 1999-05-26 | Sun Microsystems, Inc. | Floating-point processor for a high performance three dimensional graphics accelerator |
US5475882A (en) | 1993-10-15 | 1995-12-19 | Sereboff; Joel L. | Gel filled deformable cushion and composition contained therein |
US20060136923A1 (en) | 1995-05-30 | 2006-06-22 | Kahn Robert E | System for distributed task execution |
US5909544A (en) * | 1995-08-23 | 1999-06-01 | Novell Inc. | Automated test harness |
US5796997A (en) * | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
US5799167A (en) * | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
US5995962A (en) | 1997-07-25 | 1999-11-30 | Claritech Corporation | Sort system for merging database entries |
US6016539A (en) | 1997-11-03 | 2000-01-18 | Teragen Corporation | Datapath control logic for processors having instruction set architectures implemented with hierarchically organized primitive operations |
US6795966B1 (en) | 1998-05-15 | 2004-09-21 | Vmware, Inc. | Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction |
US6460121B1 (en) | 1998-09-14 | 2002-10-01 | Compaq Information Technologies Group, L.P. | Method for providing an atomic memory read using a compare-exchange instruction primitive |
JP2001256062A (ja) | 2000-03-09 | 2001-09-21 | Omron Corp | 割込処理方法およびその方法を用いた演算処理装置 |
EP1217540A1 (en) | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such method |
US7080159B2 (en) | 2000-12-15 | 2006-07-18 | Ntt Docomo, Inc. | Method and system for effecting migration of application among heterogeneous devices |
JP3955741B2 (ja) * | 2001-04-02 | 2007-08-08 | 株式会社リコー | ソート機能を有するsimd型マイクロプロセッサ |
US7107320B2 (en) | 2001-11-02 | 2006-09-12 | Dot Hill Systems Corp. | Data mirroring between controllers in an active-active controller pair |
WO2004012079A1 (ja) * | 2002-07-30 | 2004-02-05 | The Circle For The Promotion Of Science And Engineering | 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置 |
US7464254B2 (en) * | 2003-01-09 | 2008-12-09 | Cisco Technology, Inc. | Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data |
US7561571B1 (en) | 2004-02-13 | 2009-07-14 | Habanero Holdings, Inc. | Fabric address and sub-address resolution in fabric-backplane enterprise servers |
JP4465598B2 (ja) | 2004-07-05 | 2010-05-19 | ソニー株式会社 | 集積回路およびその処理制御方法、並びに、プログラム |
US8719819B2 (en) | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US7987158B2 (en) | 2005-02-09 | 2011-07-26 | International Business Machines Corporation | Method, system and article of manufacture for metadata replication and restoration |
WO2006100715A1 (ja) * | 2005-03-18 | 2006-09-28 | Fujitsu Limited | データ提示装置、データ提示プログラム及びデータ提示方法 |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7502888B2 (en) * | 2006-02-07 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Symmetric multiprocessor system |
US7945789B2 (en) | 2006-09-12 | 2011-05-17 | International Business Machines Corporation | System and method for securely restoring a program context from a shared memory |
EP2096533A4 (en) * | 2006-11-21 | 2011-06-22 | Nec Corp | CONTROL OPERATION CODE GENERATION SYSTEM |
DE102007025397B4 (de) | 2007-05-31 | 2010-07-15 | Advanced Micro Devices, Inc., Sunnyvale | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb |
US8266112B1 (en) | 2007-12-19 | 2012-09-11 | Symantec Corporation | Techniques for recovery of application level objects |
GB2468994B (en) | 2008-01-23 | 2012-11-28 | Intel Corp | Method, apparatus and computer program product for improved graphics performance |
US8230410B2 (en) | 2009-10-26 | 2012-07-24 | International Business Machines Corporation | Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization |
US8850423B2 (en) | 2009-10-29 | 2014-09-30 | International Business Machines Corporation | Assisting server migration |
US20120054731A1 (en) | 2010-08-24 | 2012-03-01 | International Business Machines Corporation | Method, System and Computer Programs to Assist Migration to a Cloud Computing Environment |
US8695010B2 (en) | 2011-10-03 | 2014-04-08 | International Business Machines Corporation | Privilege level aware processor hardware resource management facility |
US9015083B1 (en) | 2012-03-23 | 2015-04-21 | Google Inc. | Distribution of parameter calculation for iterative optimization methods |
US9513915B2 (en) | 2012-03-28 | 2016-12-06 | International Business Machines Corporation | Instruction merging optimization |
CN104204991B (zh) | 2012-03-30 | 2018-01-02 | 英特尔公司 | 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置 |
WO2013188696A2 (en) * | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | An instruction definition to implement load store reordering and optimization |
US20140089646A1 (en) | 2012-09-27 | 2014-03-27 | Texas Instruments Incorporated | Processor with interruptable instruction execution |
US9710874B2 (en) | 2012-12-27 | 2017-07-18 | Nvidia Corporation | Mid-primitive graphics execution preemption |
US9405538B2 (en) * | 2012-12-28 | 2016-08-02 | Intel Corporation | Functional unit having tree structure to support vector sorting algorithm and other algorithms |
US9727594B2 (en) | 2013-01-10 | 2017-08-08 | Microsoft Technology Licensing, Llc | Adaptive range filters for range and point queries |
US20160162293A1 (en) | 2013-03-26 | 2016-06-09 | Via Technologies, Inc. | Asymmetric processor with cores that support different isa instruction subsets |
US10203958B2 (en) | 2013-07-15 | 2019-02-12 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
US9665533B2 (en) | 2013-12-20 | 2017-05-30 | Rambus Inc. | Blob pools, selectors, and command set implemented within a memory appliance for accessing memory |
KR101923289B1 (ko) * | 2014-03-27 | 2018-11-28 | 인텔 코포레이션 | 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직 |
US9766888B2 (en) * | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
US9329850B2 (en) | 2014-06-24 | 2016-05-03 | International Business Machines Corporation | Relocation of instructions that use relative addressing |
US9703733B2 (en) | 2014-06-27 | 2017-07-11 | Intel Corporation | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
US9600442B2 (en) * | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US10318292B2 (en) | 2014-11-17 | 2019-06-11 | Intel Corporation | Hardware instruction set to replace a plurality of atomic operations with a single atomic operation |
US10318297B2 (en) | 2015-01-30 | 2019-06-11 | Huawei Technologies Co., Ltd. | Method and apparatus for operating a self-timed parallelized multi-core processor |
US10942748B2 (en) | 2015-07-16 | 2021-03-09 | Nxp B.V. | Method and system for processing interrupts with shadow units in a microcontroller |
US10102231B2 (en) | 2015-10-20 | 2018-10-16 | International Business Machines Corporation | Ordering heterogeneous operations in bulk processing of tree-based data structures |
US9996361B2 (en) | 2015-12-23 | 2018-06-12 | Intel Corporation | Byte and nibble sort instructions that produce sorted destination register and destination index mapping |
US9665626B1 (en) | 2016-02-02 | 2017-05-30 | International Business Machines Corporation | Sorted merge of streaming data |
US10725677B2 (en) | 2016-02-19 | 2020-07-28 | Sandisk Technologies Llc | Systems and methods for efficient power state transitions |
US10261790B2 (en) | 2016-03-31 | 2019-04-16 | Intel Corporation | Memory copy instructions, processors, methods, and systems |
US10296655B2 (en) | 2016-06-24 | 2019-05-21 | International Business Machines Corporation | Unbounded list processing |
US20180011768A1 (en) | 2016-07-05 | 2018-01-11 | International Business Machines Corporation | Control state preservation during transactional execution |
US10037267B2 (en) | 2016-10-21 | 2018-07-31 | Advanced Micro Devices, Inc. | Instruction set architecture and software support for register state migration |
US10162859B2 (en) | 2016-10-31 | 2018-12-25 | International Business Machines Corporation | Delayable query |
US10496371B2 (en) * | 2017-06-29 | 2019-12-03 | Intel Corporation | Key-value compaction |
US10698792B2 (en) | 2018-05-02 | 2020-06-30 | Microsoft Technology Licensing, Llc | Execution control with cross-level trace mapping |
US10831478B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
US20200142669A1 (en) | 2018-11-06 | 2020-05-07 | International Business Machines Corporation | Controlling storage accesses for merge operations |
US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
-
2018
- 2018-11-06 US US16/181,923 patent/US10831478B2/en active Active
-
2019
- 2019-06-19 TW TW108121225A patent/TWI736912B/zh active
- 2019-11-05 HU HUE19798279A patent/HUE060425T2/hu unknown
- 2019-11-05 WO PCT/EP2019/080160 patent/WO2020094600A1/en unknown
- 2019-11-05 KR KR1020217011428A patent/KR102527963B1/ko active IP Right Grant
- 2019-11-05 BR BR112021008844-0A patent/BR112021008844A2/pt unknown
- 2019-11-05 PL PL19798279.6T patent/PL3877840T3/pl unknown
- 2019-11-05 IL IL282055A patent/IL282055B2/en unknown
- 2019-11-05 SI SI201930365T patent/SI3877840T1/sl unknown
- 2019-11-05 LT LTEPPCT/EP2019/080160T patent/LT3877840T/lt unknown
- 2019-11-05 SG SG11202102996YA patent/SG11202102996YA/en unknown
- 2019-11-05 JP JP2021517672A patent/JP7288048B2/ja active Active
- 2019-11-05 ES ES19798279T patent/ES2929826T3/es active Active
- 2019-11-05 CN CN201980072863.0A patent/CN112970000A/zh active Pending
- 2019-11-05 AU AU2019377216A patent/AU2019377216B2/en active Active
- 2019-11-05 DK DK19798279.6T patent/DK3877840T3/da active
- 2019-11-05 EP EP19798279.6A patent/EP3877840B1/en active Active
- 2019-11-05 CA CA3118173A patent/CA3118173A1/en active Pending
- 2019-11-05 PT PT197982796T patent/PT3877840T/pt unknown
- 2019-11-05 MX MX2021005005A patent/MX2021005005A/es unknown
-
2020
- 2020-09-30 US US17/037,962 patent/US11221850B2/en active Active
-
2021
- 2021-05-10 ZA ZA2021/03133A patent/ZA202103133B/en unknown
Also Published As
Publication number | Publication date |
---|---|
US20210011719A1 (en) | 2021-01-14 |
CA3118173A1 (en) | 2020-05-14 |
PL3877840T3 (pl) | 2023-01-02 |
PT3877840T (pt) | 2022-11-03 |
CN112970000A (zh) | 2021-06-15 |
EP3877840A1 (en) | 2021-09-15 |
SG11202102996YA (en) | 2021-04-29 |
KR102527963B1 (ko) | 2023-05-03 |
IL282055A (en) | 2021-05-31 |
MX2021005005A (es) | 2021-12-02 |
LT3877840T (lt) | 2023-01-25 |
AU2019377216A1 (en) | 2021-04-22 |
DK3877840T3 (da) | 2022-11-14 |
US10831478B2 (en) | 2020-11-10 |
IL282055B2 (en) | 2024-01-01 |
ZA202103133B (en) | 2022-07-27 |
SI3877840T1 (sl) | 2023-01-31 |
EP3877840B1 (en) | 2022-10-19 |
US20200142696A1 (en) | 2020-05-07 |
WO2020094600A1 (en) | 2020-05-14 |
BR112021008844A2 (pt) | 2021-08-17 |
KR20210055771A (ko) | 2021-05-17 |
AU2019377216B2 (en) | 2022-11-24 |
IL282055B1 (en) | 2023-09-01 |
JP7288048B2 (ja) | 2023-06-06 |
TWI736912B (zh) | 2021-08-21 |
US11221850B2 (en) | 2022-01-11 |
HUE060425T2 (hu) | 2023-02-28 |
JP2022503925A (ja) | 2022-01-12 |
ES2929826T3 (es) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI736912B (zh) | 用於通用處理器之排序及合併指令之電腦程式產品、電腦系統及電腦實施方法 | |
US11281469B2 (en) | Saving and restoring machine state between multiple executions of an instruction | |
CN112930532A (zh) | 控制合并操作的存储访问 | |
TW202034155A (zh) | 指令執行中之負零控制 | |
JP7413371B2 (ja) | 部分的に完了された命令の移行 | |
TWI729678B (zh) | 用於移動資料及設定儲存金鑰指令之電腦程式產品、電腦系統及電腦實施方法 | |
TW202036272A (zh) | 載入/儲存位元組反轉元件指令 |