TWI706325B - 用於至間接指定位置之條件分支之電腦程式產品、電腦系統及電腦實施方法 - Google Patents
用於至間接指定位置之條件分支之電腦程式產品、電腦系統及電腦實施方法 Download PDFInfo
- Publication number
- TWI706325B TWI706325B TW107100720A TW107100720A TWI706325B TW I706325 B TWI706325 B TW I706325B TW 107100720 A TW107100720 A TW 107100720A TW 107100720 A TW107100720 A TW 107100720A TW I706325 B TWI706325 B TW I706325B
- Authority
- TW
- Taiwan
- Prior art keywords
- branch
- instruction
- memory
- address
- computer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
執行用以執行至一間接指定位置之一條件分支的一指令。自記憶體中之一位置獲得一分支位址,記憶體中之該位置由該指令指明。基於另一指令之一條件碼而作出是否將發生一分支之一判定,且基於判定將發生該分支而執行至該分支位址之一分支。
Description
一或多個態樣大體上係關於運算環境內之處理,且特定而言,係關於改良此處理。
運算環境內之處理常常包括使用將控制自電腦程式之一個部分轉移至該程式之另一部分的分支指令。存在不同類型之分支指令,包括條件分支指令,其基於先前建立條件之結果,諸如基於比較指令之結果而將控制轉移至程式之另一部分。條件分支指令之一個實例係由紐約阿蒙克市之International Business Machines Corporation供應的z/Architecture之指令集架構(ISA)中所包括的依條件分支指令。
依條件分支指令指明運算元,該運算元指定在分支條件中之任一者係真的情況下待用以替換程式狀態字組(PSW)之指令位址的位址(亦被稱作位置)。在一種形式之指令中,在暫存器中指明運算元(亦即,分支位址)。在又一實例中,由基底暫存器之內容、索引暫存器之內容及12位元不帶正負號位移之總和形成運算元或分支位址。
另外,諸如相對依條件指令之其他分支指令將運算元分支位置指定為帶正負號整數,該整數指明加至指令之位址以形成新PSW指令位址的半
字組之數目。
對於數個條件分支指令,通用暫存器用以形成分支位置。此在用於條件分支指令中之此通用暫存器之內容待自儲存器載入時對程式設計提出挑戰。在某些程式設計情境中,備用的通用暫存器可能不可供分支指令使用。
經由提供用於促進運算環境內之處理的電腦程式產品來克服先前技術之缺點且提供額外優點。電腦程式產品包含可由處理電路讀取且儲存用以執行方法之指令的儲存媒體。該方法包括例如獲得執行至間接指定位置之條件分支的指令,及執行該指令。該執行包括:自記憶體中之一位置獲得一分支位址,記憶體中之該位置由該指令指明;基於另一指令之一條件碼而判定是否將發生一分支;及基於判定將發生該分支而分支至自記憶體中之該位置獲得的該分支位址。至間接指定位置之此條件分支由於在編譯時無需知曉分支位置來促進處理,且消除對除可用於程式之暫存器(亦即,程式堆疊暫存器)外的額外暫存器的需要。
在一個實施例中,該指令包括:一操作碼,其用以指明至一間接指定位置操作之條件分支;一遮罩欄位,其用於是否將發生該分支之該判定中;及複數個欄位,其待用以判定記憶體中供獲得該分支位址之位置。
記憶體中之該位置係藉由使用該指令之該複數個欄位來判定。該複數個欄位包括例如一基本欄位、一索引欄位及至少一個位移欄位。舉例而言,將由該索引欄位指定之一第一暫存器的內容、由該基本欄位指定之一第二暫存器的內容、一第一位移欄位之內容及一第二位移欄位之內容相加以獲得記憶體中之該位置的一位址。
作為一個實例,該條件碼係自一控制暫存器(例如,程式狀態字組(PSW))獲得,且該判定是否將發生該分支包括使用該條件碼選擇與該指令相關聯之一遮罩中的一單元;檢查該單元之一值;及基於該檢查判定該值係一特定值而指示分支。在一個實例中,該遮罩係例如該指令之一欄位,且該單元係一位元。
該分支包括例如用該分支位址替換一控制暫存器(例如,一PSW)中之一指令位址;及繼續進行至該分支位址以繼續處理。
本文中亦描述及主張與一或多個態樣有關之電腦實施方法及系統。另外,本文中亦描述及可能主張與一或多個態樣有關之服務。
經由本文中所描述之技術實現額外特徵及優點。本文中詳細描述其他實施例及態樣且將其視為所主張態樣之一部分。
100:運算環境
102:電腦系統
104:處理器或處理單元
106:記憶體
108:輸入/輸出(I/O)介面
110:匯流排及/或其他連接件
120:快取記憶體
122:本端快取記憶體
130:程式或應用程式
132:作業系統
134:電腦可讀程式指令
140:外部I/O裝置
142:網路介面
144:資料儲存裝置
146:程式
148:電腦可讀程式指令
150:指令提取組件
152:指令解碼單元
154:指令執行組件
156:記憶體存取組件
160:寫回組件
166:間接依條件分支指令
170:暫存器
200:運算環境
202:原生中央處理單元(CPU)
204:記憶體
206:輸入/輸出裝置及/或介面
208:匯流排
210:原生暫存器
212:仿真器程式碼
250:客體指令
252:指令提取常式
254:指令轉譯常式
256:原生指令
260:仿真控制常式
300:間接依條件分支(BIC)指令
302a:操作碼(作業碼)欄位
302b:操作碼(作業碼)欄位
304:遮罩欄位(M1)
306:索引欄位(X2)
308:基本欄位(B2)
310a:第一位移欄位(DL2)
310b:第二位移欄位(DH2)
320:條件碼
322:指令位元編號
324:遮罩位置值
350:程式狀態字組
352:條件碼
354:定址模式
356:資訊
358:指令位址
401:雙字組
402:Amode 64
404:Amode 31
406:Amode 24
410:指令位址
500:步驟
502:步驟
504:步驟
506:步驟
508:詢問
510:步驟
512:步驟
在本說明書之結尾處之申請專利範圍中作為實例特定地指出且清楚地主張一或多個態樣。一或多個態樣之前述內容及目標、特徵及優點自結合隨附圖式進行的以下詳細描述顯而易見,其中:圖1A描繪併有及使用本發明之一或多個態樣的運算環境之一個實例;圖1B描繪根據本發明之態樣的圖1A之處理器的其他細節;圖2A描繪併有及使用本發明之一或多個態樣的運算環境之另一實例;圖2B描繪圖2A之記憶體之其他細節;圖3A描繪根據本發明之態樣的間接依條件分支指令之一個實例;圖3B描繪根據本發明之態樣的與圖3A之遮罩欄位有關之資訊之一個
實例;圖3C描繪根據本發明之態樣使用的程式狀態字組(PSW)之一個實例;圖4圖示地描繪根據本發明之態樣的與執行圖3A之間接依條件分支指令相關聯的處理之一個實例;圖5描繪根據本發明之態樣的與間接依分支條件指令之態樣相關聯的流程之一個實例;及圖6A至圖6B描繪根據本發明之態樣的與促進運算環境中之處理有關的態樣之一個實施例。
根據本發明之態樣,提供在儲存器(在本文中亦被稱作記憶體;除非另外隱含地或明確地指示,否則儲存器與記憶體在本文中可互換使用)指定分支位置(例如,分支位址)之能力。特定而言,在一個實例中,指令(例如,在硬體/軟體介面處之單一架構化機器指令)用以提供間接分支機制,在該機制中,在儲存器中指定分支位置。此指令之一個實例係下文進一步描述之間接依條件分支指令。
參看圖1A描述併有及使用本發明之一或多個態樣的運算環境之一個實施例。在一個實例中,運算環境係基於由紐約阿蒙克市之International Business Machines Corporation供應之z/Architecture。z/Architecture之一個實施例描述於2015年3月之IBM公開案第SA22-7832-10號「z/Architecture Principles of Operation」中,該公開案特此以全文引用的方式併入本文中。Z/ARCHITECTURE係美國紐約阿蒙克市之International Business Machines Corporation之註冊商標。
在另一實例中,運算環境係基於由紐約阿蒙克市之International Business Machines Corporation供應之電源架構(Power Architecture)。電源架構之一個實施例描述於2015年4月9日International Business Machines Corporation之「Power ISATM Version 2.07B」中,該案特此以全文引用的方式併入本文中。電源架構(POWER ARCHITECTURE)係美國紐約阿蒙克市之International Business Machines Corporation之註冊商標。
運算環境亦可基於其他架構,包括但不限於Intel x86架構。亦存在其他實例。
如圖1A中所展示,運算環境100包括例如電腦系統102,該電腦系統例如以通用運算裝置之形式展示。電腦系統102可包括但不限於一或多個處理器或處理單元104(例如,中央處理單元(CPU))、記憶體106(被稱作主記憶體或儲存器,作為實例)及一或多個輸入/輸出介面108,前述各者經由一或多個匯流排及/或其他連接件110而彼此耦接。
匯流排110表示任何若干種類型之匯流排結構中之一或多者,包括記憶體匯流排或記憶體控制器、周邊匯流排、加速圖形埠,及使用多種匯流排架構中之任一者的處理器或區域匯流排。以實例說明而非限制,此等架構包括工業標準架構(ISA)、微通道架構(MCA)、增強型ISA(EISA)、視訊電子標準協會(VESA)區域匯流排及周邊組件互連(PCI)。
記憶體106可包括例如可耦接至處理器104之本端快取記憶體122的快取記憶體120,諸如共用快取記憶體。另外,記憶體106可包括一或多個程式或應用程式130、作業系統132及一或多個電腦可讀程式指令134。電腦可讀程式指令134可經組態以進行本發明之態樣的實施例之功能。
電腦系統102亦可經由例如I/O介面108與一或多個外部裝置140、一或多個網路介面142及/或一或多個資料儲存裝置144通信。實例外部裝置包括使用者終端機、磁帶機、指標裝置、顯示器等。網路介面142使得電腦系統102能夠與諸如區域網路(LAN)、通用廣域網路(WAN)及/或公用網路(例如,網際網路)之一或多個網路通信,從而提供與其他運算裝置或系統之通信。
資料儲存裝置144可儲存一或多個程式146、一或多個電腦可讀程式指令148及/或資料等。電腦可讀程式指令可經組態以進行本發明之態樣的實施例之功能。
電腦系統102可包括及/或耦接至抽取式/非抽取式、揮發性/非揮發性電腦系統儲存媒體。舉例而言,其可包括及/或耦接至非抽取式非揮發性磁性媒體(通常被稱作「硬碟機」)、用於自抽取式非揮發性磁碟(例如,「軟碟」)讀取及寫入至抽取式非揮發性磁碟(例如,「軟碟」)之磁碟機,及/或用於自諸如CD-ROM、DVD-ROM或其他光學媒體之抽取式非揮發性光碟讀取或寫入至抽取式非揮發性光碟之光碟機。應理解,可結合電腦系統102使用其他硬體及/或軟體組件。實例包括但不限於:微碼、裝置驅動程式、冗餘處理單元、外部磁碟機陣列、RAID系統、磁帶機及資料存檔儲存系統等。
電腦系統102可與眾多其他通用或專用運算系統環境或組態一起操作。可能適合與電腦系統102一起使用之熟知運算系統、環境及/或組態之實例包括但不限於:個人電腦(PC)系統、伺服器電腦系統、精簡型用戶端、複雜型用戶端、手持型或膝上型電腦裝置、多處理器系統、基於微處理器之系統、機上盒、可程式化消費型電子裝置、網路PC、小型電腦系
統、大型電腦系統及包括以上系統或裝置中之任一者的分散式雲端運算環境,以及其類似者。
參看圖1B描述關於處理器104之一個實例的其他細節。處理器104包括用以執行指令之複數個功能組件。此等功能組件包括例如:指令提取組件150,其用以提取待執行之指令;指令解碼單元152,其用以解碼所提取指令且用以獲得經解碼指令之運算元;指令執行組件154,其用以執行經解碼指令;記憶體存取組件156,其用以在必要時為指令執行存取記憶體;及寫回組件160,其用以提供經執行指令之結果。根據本發明之態樣,此等組件中之一或多者可用以執行如下文進一步描述之依條件分支至間接位址(例如,自儲存器獲得而非直接來自指令自身之位址)的間接依條件分支指令166。
在一個實施例中,處理器104亦包括待由功能組件中之一或多者使用的一或多個暫存器170。
參看圖2A描述併有及使用一或多個態樣的運算環境之另一實施例。在此實例中,運算環境200包括例如原生中央處理單元(CPU)202、記憶體204及一或多個輸入/輸出裝置及/或介面206,前述各者經由例如一或多個匯流排208及/或其他連接件而彼此耦接。作為實例,運算環境200可包括:由紐約阿蒙克市之International Business Machines Corporation供應之PowerPC處理器或pSeries伺服器;及/或基於由International Business Machines Corporation、Intel或其他公司供應之架構的其他機器。
原生中央處理單元202包括一或多個原生暫存器210,諸如在環境內之處理期間使用的一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示環境在任何特定時間點之狀態的資訊。
此外,原生中央處理單元202執行儲存於記憶體204中之指令及程式碼。在一個特定實例中,中央處理單元執行儲存於記憶體204中之仿真器程式碼212。此程式碼使得在一個架構中組態之運算環境能夠仿真另一架構。舉例而言,仿真器程式碼212允許基於除z/Architecture外之架構的諸如PowerPC處理器、pSeries伺服器或其他伺服器或處理器的機器仿真z/Architecture且執行基於z/Architecture開發之軟體及指令。
參看圖2B描述與仿真器程式碼212有關之其他細節。儲存於記憶體204中之客體指令250包含經開發以在除原生CPU 202之架構外之架構中執行的軟體指令(例如,與機器指令相關)。舉例而言,客體指令250可能已經設計以在z/Architecture處理器上執行,但替代地在可能係例如Intel處理器之原生CPU 202上仿真。在一個實例中,仿真器程式碼212包括指令提取常式252,以自記憶體204獲得一或多個客體指令250且視情況提供對所獲得指令之本端緩衝。該仿真器程式碼亦包括指令轉譯常式254,以判定已獲得之客體指令的類型且將該客體指令轉譯成一或多個對應的原生指令256。此轉譯包括例如識別待由客體指令執行之功能及選取原生指令以執行彼功能。
另外,仿真器程式碼212包括仿真控制常式260以使得執行原生指令。仿真控制常式260可使原生CPU 202執行仿真一或多個先前獲得之客體指令之原生指令的常式且在此執行結束時,將控制傳回至指令提取常式以仿真下一客體指令或客體指令群組之獲得。原生指令256之執行可包括將資料自記憶體204載入至暫存器中;將資料自暫存器儲存回至記憶體;或執行如由轉譯常式判定之某一類型之算術或邏輯運算。
每一常式例如以軟體實施,該軟體儲存於記憶體中且藉由原生中央
處理單元202執行。在其他實例中,常式或操作中之一或多者係以韌體、硬體、軟體或其某一組合實施。可使用原生CPU之暫存器210或藉由使用記憶體204中之位置來仿真經仿真處理器之暫存器。在諸實施例中,客體指令250、原生指令256及仿真器程式碼212可駐留於同一記憶體中或可分配於不同記憶體裝置當中。
如本文中所使用,韌體包括例如處理器之微碼及/或毫碼(Millicode)。韌體包括例如用於實施較高層級機器碼之硬體層級指令及/或資料結構。在一個實施例中,其包括例如專屬碼,該專屬碼通常作為包括受信任軟體之微碼或特定於基礎硬體之微碼遞送,且控制作業系統對系統硬體之存取。
舉例而言,所獲得、經轉譯及經執行之客體指令250係本文中所描述之間接依條件分支指令。將具有一種架構(例如,z/Architecture)之指令自記憶體提取、轉譯及表示為具有另一架構(例如,PowerPC、pSeries、Intel等)之原生指令256之序列。接著執行此等原生指令。
下文描述與基於例如z/Architecture定義之間接依條件分支指令之一個實施例有關的細節。
參看圖3A,在一個實施例中,間接依條件分支(BIC)指令300包括:操作碼(作業碼)欄位302a、302b,其指示間接依條件分支操作;遮罩欄位(M1)304;索引欄位(X2)306;基本欄位(B2)308;及位移欄位,其包含第一位移欄位(DL2)310a及第二位移欄位(DH2)310b,下文描述以上欄位中之每一者。在一個實施例中,該等欄位彼此分離且獨立;然而,在另一實施例中,可組合大於一個欄位。另外,與欄位相關聯之下標編號指示應用該欄位之運算元。舉例而言,具有下標1之任何欄位係與第一運算元相
關聯,且具有下標2之任何欄位係與第二運算元相關聯,等等。
在一個實例中,遮罩欄位304用作四位元遮罩。如圖3B中所展示,四個條件碼320(例如,0、1、2及3)自左向右與遮罩之四個位元對應。當前條件碼(例如,先前執行指令之條件碼)用以選擇對應遮罩位元。若由條件碼選擇之遮罩位元係例如1,則分支係成功的。若所選擇之遮罩位元係例如0,則正常指令定序以下一順序指令繼續進行。
參看圖3B,在一個實施例中,每一條件碼320對應於遮罩304之指令位元編號322且具有相關聯之遮罩位置值324。作為實例,條件碼0對應於指令位元編號8且具有遮罩位置值8(亦即,由於條件碼在遮罩中係自左向右定義,因此條件碼0係在四位元遮罩(23=8)之最左位置中);條件碼1對應於指令位元編號9且具有遮罩位置值4;條件碼2對應於指令位元編號10且具有遮罩位置值2;且條件碼3對應於指令位元編號11且具有遮罩位置值1。
舉例而言,當前條件碼儲存於諸如程式狀態字組(PSW)之控制暫存器中。程式狀態字組執行狀態暫存器及程式計數器之功能。其含有用於適當程式執行之資訊。舉例而言,其用以控制指令定序且保持及指示與當前正執行之程式相關的處理器之狀態。在一個實例中,參看圖3C,程式狀態字組350包括條件碼352;定址模式354(例如,64位元模式、31位元模式、24位元模式);其他資訊356,諸如但不限於當前動態位址轉譯(DAT)及位址空間控制;及指令位址358(未以任何特定次序或位置展示於暫存器中)。條件碼352取決於在執行某些指令中獲得之結果而設定為0、1、2或3;PSW中之條件碼係當前條件碼。指令位址358指明待執行之下一指令的最左位元組之位置。
返回圖3A,欄位306至310b用以界定第二運算元位置;亦即,儲存器中之指明分支位置的位置。DL2 310a及DH2 310b提供被視為例如20位元帶正負號二進位整數之位移。將由X2 306指明之暫存器之內容加上由B2 308指明之暫存器之內容加至由DL2 310a及DH2 301b提供之位移以界定儲存器中之位置。儲存器中之此位置包括分支位置(例如,分支之位址)。
如所指示,儲存器中之8位元組第二運算元用作分支位址。分支位址受制於當前定址模式。在一個實例中,存取第二運算元之8個位元組,而不管定址模式。在一個實例中,使用當前DAT(動態位址轉譯)、定址模式及在諸如程式狀態字組之控制暫存器中指定的位址空間控制來提取第二運算元。然而,自第二運算元位置提取之分支位址被視為指令位址,且在實際模式下被視為實際位址;在主要空間模式、次要空間模式或存取暫存器模式下被視為主要虛擬位址;且在本籍空間模式下被視為本籍虛擬位址。
儘管各種欄位及暫存器經描述,但本發明之一或多個態樣可使用其他、額外或更少欄位或暫存器,或其他大小之欄位或暫存器,等等。許多變化係可能的。舉例而言,可使用隱含暫存器而非指令之明確指定之暫存器或欄位。另外,在其他實施例中,可使用用於指令之擴展助憶後綴,其替換遮罩。再次,其他變化亦係可能的。
在間接依條件指令300之一個實例操作中,若當前程式狀態字組350中之條件碼352指明遮罩欄位304中之位元位置含有例如1,則當前程式狀態字組350中之指令位址358由分支位址(自儲存器獲得)替換;否則,正常指令定序以經更新之指令位址繼續進行。經更新之指令位址在PSW中處於欄位358中。亦即,在z/Architecture中,當CPU將要執行指令時,但在執行之前,其基於PSW中之指令位址而提取指令。接著,其基於例如指令之
前兩個位元而判定指令之長度,且將彼長度(例如,2個位元組、4個位元組或6個位元組)加至指令位址358。此係經更新之位址。
在當前PSW中之條件碼指明M1欄位中之位元位置含有例如0時,針對第二運算元是否辨識到存取例外狀況或程式事件記錄(PER)零位址偵測事件係模型相依的。
基於間接依條件分支指令之執行,條件碼保持不變,且可辨識到以下程式例外狀況:存取(提取運算元2);操作(例如,若雜項指令擴充設施2未安裝);及異動約束。
另外,不同於不針對分支位址執行PER零位址偵測之諸如依條件分支的其他分支型指令,可針對間接依條件分支指令之第二運算元辨識PER零位址偵測事件。
參看圖4描述間接依條件分支指令之執行的圖示描繪。如圖4中所展示,使用(400)指令之欄位306、308、310a及310b判定記憶體中之位置以獲得分支位址。該等欄位指示例如記憶體中之指明分支位址或位置的雙字組401。受制於在PSW中指定之當前定址模式(Amode)(例如,Amode 64(402)、Amode 31(404)或Amode 24(406))的此位址用以基於PSW中之條件碼而替換當前程式狀態字組之指令位址410。舉例而言,若當前程式狀態字組中之條件碼指明遮罩欄位中之位元位置含有例如1,則當前程式狀態字組指令位址由分支位址替換。
參看圖5描述流程之一個實施例,該流程描述間接依條件分支指令之態樣。在一個實例中,圖5之處理係藉由至少一個處理器執行。
參看圖5,在一個實例中,獲得(例如,具有、提供、接收、擷取等)指令(步驟500)。此指令係例如間接依條件分支指令。接著執行所獲得之
指令(步驟502)。在一個實例中,該執行包括例如自控制暫存器(例如,當前程式狀態字組)獲得條件碼(步驟504)。另外,自記憶體中之由指令指明的位置獲得分支位址(步驟506)。舉例而言,將由X2及B2欄位指定之暫存器的內容加至DL2及DH2欄位中之位移以獲得記憶體中之指明分支位址的雙字組。作出關於當前程式狀態字組中之另一指令(例如,先前執行指令)的條件碼是否指明M1欄位中之位元位置含有例如1的判定(詢問508)。若當前PSW中之條件碼並不指明M1欄位中之位元位置含有例如1,則正常指令定序以PSW中之經更新之指令位址繼續進行(步驟510)。然而,若當前程式狀態字組中之條件碼指明遮罩欄位中之位元位置含有例如1,則將發生分支。因此,當前程式狀態字組中之指令位址由分支位址替換,且處理繼續進行至分支位址(步驟512)。
在另一實施例中,僅在將發生分支時(例如,在詢問508之結果係是之後且在步驟512之前)才發生獲得分支位址(亦即,提取第二運算元)。其他變化係可能的。
在一個實例中,間接依條件分支指令可用於基於記憶體中(諸如,程式堆疊或保存區域中)之轉回位址而轉回至呼叫程式。在另一實例中,間接依條件分支指令可用於基於表之分支機制。其他實例係可能的。
本文中詳細描述相對比於暫存器(亦即,處理器中之硬體)、暫存器加基址或相對位移,依條件分支至記憶體中指定之位置的指令(例如,單一架構化指令)。提供條件分支指令,其分支至由程式靜態地或動態地判定之位置(例如,記憶體位置);及分支而不需要除以其他方式可用於程式之暫存器外的額外暫存器。舉例而言,當除程式堆疊暫存器外,無其他暫存器可用或將被使用時,其分支至位置。
存在程式可能已將分支位置併入至程式暫存器中之眾多狀況。作為一實例,在被呼叫副常式中,當該副常式完成時分支至的位置常常置放於保存區域(諸如,程式堆疊)中。作為另一實例,程式可取決於運算出之決策而使用表示分支至的各種位置之位址的表。此常見於文字剖析中,其中表中之單獨位址表示用於字母、數值、標點符號、運算子、空白空間等之後續處理功能的位址。
對於此等實例,程式可具有(或不具有)其可將分支位址載入之受限備用暫存器,但其仍具有提供至含有分支位址之儲存位置之可定址能力的暫存器。因此,根據本發明之態樣,提供直接分支至在儲存器中指定之位置而不必將位址預先載入至暫存器中的機制。
本文中詳細描述自儲存器(亦即,記憶體)運算元獲得待分支至的位置的單一條件分支指令(例如,基於由先前執行指令設定之條件碼)。該分支位址係間接指定的,此係因為該分支位置並非直接獲自暫存器(亦即,CPU內之硬體)或基底暫存器、索引暫存器及位移之組合,或獲自相對於PSW之立即運算值;確切而言,該分支位置係記憶體中之由基底暫存器、索引暫存器及位移之組合指定的欄位。此提供運算環境內之更高效處理;其允許程式條件性地分支至儲存器中之位置。本發明之一或多個態樣不可
避免地與電腦技術相關且促進電腦內之處理,從而改良其效能。
參看圖6A至圖6B描述與促進運算環境中之處理有關的本發明之態樣的一個實施例。參看圖6A,在一個實例中,獲得執行至間接指定位置之條件分支的指令(600),且執行該指令(602)。該執行包括例如:自記憶體中之位置獲得分支位址,記憶體中之該位置由指令指明(604);基於諸如先前執行指令之另一指令的條件碼而判定是否將發生分支(606);及基於判定將發生分支而分支至自記憶體中之位置獲得的分支位址(608)。
作為一個實例,該指令包括例如:操作碼,其用以指明至間接指定位置操作之條件分支;遮罩欄位,其用於該判定中;及複數個欄位,其待用以判定記憶體中之位置從而獲得分支位址(610)。
在一個實施例中,使用例如指令之複數個欄位判定記憶體中之供獲得分支位址的位置,該複數個欄位諸如基本欄位、索引欄位及至少一個位移欄位(620)。
作為一個實例,判定該位置包括將由索引欄位指定之第一暫存器的內容、由基本欄位指定之第二暫存器的內容、第一位移欄位之內容及第二位移欄位之內容相加以獲得記憶體中之位置的位址(622)。
在一個實施例中,自控制暫存器獲得條件碼(630)。
另外,參看圖6B,在一個實施例中,判定是否將發生分支包括使用條件碼選擇與指令相關聯之遮罩(例如,遮罩係指令之欄位)中的單元(例如,位元)(640);檢查該單元之值(644);及基於該檢查判定該值係特定值而指示分支(646)。
此外,在一個實例中,該分支包括用分支位址替換控制暫存器中之指令位址;及繼續進行至分支位址以繼續處理(650)。
許多變化係可能的。
本發明可能係在任何可能的技術細節整合層級處的系統、方法及/或電腦程式產品。該電腦程式產品可包括一(或多個)電腦可讀儲存媒體,其上具有電腦可讀程式指令以使處理器進行本發明之態樣。
電腦可讀儲存媒體可能係有形裝置,其可持留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可能係例如但不限於電子儲存裝置、磁性儲存裝置、光學儲存裝置、電磁儲存裝置、半導體儲存裝置或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶卡、軟碟、經機械編碼裝置,諸如上面記錄有指令之打孔卡或凹槽中之凸起結構,及前述各者之任何合適組合。如本文中所使用,不應將電腦可讀儲存媒體本身解釋為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖纜線傳遞之光脈衝),或經由電線傳輸之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別運算/處理裝置或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)下載至外部電腦或外部儲存裝置。網路可包含銅傳輸纜線、光學傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理裝置中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別運算/處理裝置內之電腦可讀儲存媒體中。
用於進行本發明之操作之電腦可讀程式指令可能係以一或多種程式設計語言之任何組合撰寫之組譯器指令、指令集架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料、用於積體電路系統之組態資料,或原始程式碼或物件碼(object code),該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及程序性程式設計語言,諸如「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全在使用者之電腦上執行、部分地在使用者之電腦上執行、作為獨立套裝軟體執行、部分地在使用者之電腦上執行且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後一種情形中,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可連接至外部電腦(例如,使用網際網路服務提供者經由網際網路)。在一些實施例中,包括例如可程式化邏輯電路系統、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA)之電子電路系統可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路系統而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例的方法、設備(系統)及電腦程式產品之流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,及流程圖說明及/或方塊圖中之區塊之組合。
可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理設備之處理器以產生機器,使得經由該電腦或其他可程式化資料處理設備之處理器執行之指令建立用於實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作的手段。亦可將此等電腦可讀程式指令
儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理設備及/或其他裝置以特定方式起作用,使得儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施該一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之態樣的指令。
電腦可讀程式指令亦可載入至電腦、其他可程式化資料處理設備或其他裝置上,以使一系列操作步驟在電腦、其他可程式化設備或其他裝置上執行以產生電腦實施之處理程序,使得在電腦、其他可程式化設備或其他裝置上執行之指令實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中提到之功能可能不以諸圖中所提到之次序發生。舉例而言,取決於所涉及之功能性,連續展示之兩個區塊實際上可大體上同時執行,或該等區塊可有時以相反次序執行。亦將注意,可藉由執行指定功能或動作或進行專用硬體及電腦指令之組合的基於專用硬體之系統來實施方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或流程圖說明中之區塊之組合。
除上述情形之外,亦可藉由供應對消費者環境之管理之服務提供者來提供、供應、部署、管理、服務(等)一或多個態樣。舉例而言,服務提供者可建立、維持、支援(等)電腦程式碼及/或針對一或多個消費者執行一或多個態樣之電腦基礎架構。作為回報,服務提供者可根據訂用及/或收費協議接收來自消費者之付款(作為實例)。另外或替代地,服務提供者可
接收來自向一或多個第三方出售廣告內容之付款。
在一個態樣中,可部署一應用程式用於執行一或多個實施例。作為一個實例,應用程式之部署包含提供可操作以執行一或多個實施例之電腦基礎架構。
作為另一態樣,可部署運算基礎架構,包含將電腦可讀程式碼整合至運算系統中,在該系統中,程式碼結合運算系統能夠執行一或多個實施例。
作為又一態樣,可提供一種用於整合運算基礎架構之處理程序,包含將電腦可讀程式碼整合至電腦系統中。電腦系統包含電腦可讀媒體,其中電腦媒體包含一或多個實施例。程式碼結合電腦系統能夠執行一或多個實施例。
儘管上文描述各種實施例,但此等實施例僅係實例。舉例而言,其他架構之運算環境可用以併有及使用一或多個實施例。另外,可使用不同指令、指令格式、指令欄位及/或指令值。另外,電腦系統及/或環境可包括更多、更少及/或不同的組件。許多變化係可能的。
另外,其他類型之運算環境可係有益的且可加以使用。作為一實例,可使用適合於儲存及/或執行程式碼之資料處理系統,其包括直接或經由系統匯流排間接地耦接至記憶體元件之至少兩個處理器。記憶體元件包括例如在實際執行程式碼期間使用之本端記憶體、大容量儲存器,及提供對至少某一程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取程式碼之次數的快取記憶體。
輸入/輸出或I/O裝置(包括但不限於鍵盤、顯示器、指標裝置、DASD、磁帶、CD、DVD、隨身碟(thumb drive)及其他記憶體媒體等)可
直接或經由介入之I/O控制器耦接至系統。網路配接器亦可耦接至系統以使得資料處理系統能夠變得經由介入之私用網路或公用網路耦接至其他資料處理系統或遠端印表機或儲存裝置。數據機、纜線數據機及乙太網路卡僅係幾個可用類型之網路配接器。
本文中所使用之術語僅係出於描述特定實施例的目的且並不意欲係限制性的。如本文中所使用,除非上下文另外清晰地指示,否則單數形式「一」及「該」意欲亦包括複數形式。將進一步理解,術語「包含(comprises及/或comprising)」在用於本說明書中時指定所陳述特徵、整體、步驟、操作、元件及/或組件之存在,但不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群組之存在或新增。
以下申請專利範圍中之所有構件或步驟加功能元件之對應結構、材料、動作及等效物(若存在)意欲包括用於結合如特定主張之其他所主張元件來執行功能的任何結構、材料或動作。已出於說明及描述之目的呈現一或多個實施例之描述,但其不意欲為窮盡性的或限於所揭示之形式。對於一般熟習此項技術者而言,許多修改及變化將係顯而易見的。選取及描述實施例以便最佳地解釋各種態樣及實際應用,且使得一般熟習此項技術者能夠理解具有如適於所預期之特定用途之各種修改的各種實施例。
Claims (20)
- 一種用於促進一運算環境中之處理的電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其可由一處理電路讀取且儲存用以執行一方法之指令,該方法包含:獲得執行至一間接指定位置之一條件分支的一指令,其中該指令包含複數個欄位,其待用以判定記憶體中之一位置;及執行該指令,該執行包含:自記憶體中之該位置獲得一分支位址,記憶體中之該位置由該指令指明,並且其中該分支位址為間接指定的,其中該分支位址無法從一暫存器、從基底暫存器、索引暫存器和位移的一組合、或從與提供程式計數器之一選擇的暫存器中一值相關之一間接值而直接獲得;基於另一指令之一條件碼而判定是否將發生一分支,該判定使用該條件碼以對由該指令提供以判定該分支是否發生之一遮罩進行索引;及基於判定將發生該分支而分支至自記憶體中之該位置獲得的該分支位址,其中該分支的執行不必將該分支位址預先載入至該暫存器。
- 如請求項1之電腦程式產品,其中該方法進一步包含判定記憶體中之該位置以獲得該分支位址,該判定使用該指令之該複數個欄位。
- 如請求項2之電腦程式產品,其中該複數個欄位包含一基本欄位、一索引欄位及至少一個位移欄位。
- 如請求項3之電腦程式產品,其中該判定該位置包含將由該索引欄位指定之一第一暫存器的內容、由該基本欄位指定之一第二暫存器的內容、一第一位移欄位之內容及一第二位移欄位之內容相加以獲得記憶體中之該位置的一位址。
- 如請求項1之電腦程式產品,其中該方法進一步包含自一控制暫存器獲得該條件碼。
- 如請求項1之電腦程式產品,其中該判定是否將發生該分支包含:使用該條件碼選擇與該指令相關聯之一遮罩中的一單元;檢查該單元之一值;及基於該檢查判定該值係一特定值而指示分支。
- 如請求項6之電腦程式產品,其中該遮罩係該指令之一欄位。
- 如請求項6之電腦程式產品,其中該單元係一位元。
- 如請求項1之電腦程式產品,其中該指令進一步包含:一操作碼,其用以指明至一間接指定位置操作之該條件分支;及一遮罩欄位,其用於該 判定中。
- 如請求項1之電腦程式產品,其中該分支包含:用該分支位址替換一控制暫存器中之一指令位址;及繼續進行至該分支位址以繼續處理。
- 一種用於促進一運算環境中之處理的電腦系統,該電腦系統包含:一記憶體;及一處理器,其與該記憶體通信,其中該電腦系統經組態以執行一方法,該方法包含:獲得執行至一間接指定位置之一條件分支的一指令,其中該指令包含複數個欄位,其待用以判定記憶體中之一位置;及執行該指令,該執行包含:自記憶體中之該位置獲得一分支位址,記憶體中之該位置由該指令指明,並且其中該分支位址為間接指定的,其中該分支位址無法從一暫存器、從基底暫存器和索引暫存器和位移的一組合、或從與提供程式計數器之一選擇的暫存器中一值相關之一間接值而直接獲得;基於另一指令之一條件碼而判定是否將發生一分支,該判定使用條件碼以對由該指令提供以判定該分支是否發生之一遮罩進行索引;及基於判定將發生該分支而分支至自記憶體中之該位置獲得的該分支位址,其中該分支的執行不必將該分支位址預先載入至一暫 存器。
- 如請求項11之電腦系統,其中該方法進一步包含判定記憶體中之該位置以獲得該分支位址,該判定使用該指令之該複數個欄位。
- 如請求項11之電腦系統,其中該判定是否將發生該分支包含:使用該條件碼選擇與該指令相關聯之一遮罩中的一單元;檢查該單元之一值;及基於該檢查判定該值係一特定值而指示分支。
- 如請求項13之電腦系統,其中該遮罩係該指令之一欄位,且其中該單元係一位元。
- 如請求項11之電腦系統,其中該分支包含:用該分支位址替換一控制暫存器中之一指令位址;及繼續進行至該分支位址以繼續處理。
- 一種促進一運算環境中之處理的電腦實施方法,該電腦實施方法包含:獲得執行至一間接指定位置之一條件分支的一指令,其中該指令包含複數個欄位,其待用以判定記憶體中之一位置;及藉由至少一個處理器執行該指令,該執行包含:自記憶體中之該位置獲得一分支位址,記憶體中之該位置由該 指令指明,並且其中該分支位址為間接指定的,其中該分支位址無法從一暫存器、從基底暫存器和索引暫存器和位移的一組合、或從與提供程式計數器之一選擇的暫存器中一值相關之一間接值而直接獲得;基於另一指令之一條件碼而判定是否將發生一分支,該判定使用條件碼以對由該指令提供以判定該分支是否發生之一遮罩進行索引;及基於判定將發生該分支而分支至自記憶體中之該位置獲得的該分支位址,其中該分支的執行不必將該分支位址預先載入至一暫存器。
- 如請求項16之電腦實施方法,其進一步包含判定記憶體中之該位置以獲得該分支位址,該判定使用該指令之該複數個欄位。
- 如請求項16之電腦實施方法,其中該判定是否將發生該分支包含:使用該條件碼選擇與該指令相關聯之一遮罩中的一單元;檢查該單元之一值;及基於該檢查判定該值係一特定值而指示分支。
- 如請求項18之電腦實施方法,其中該遮罩係該指令之一欄位,且其中該單元係一位元。
- 如請求項16之電腦實施方法,其中該分支包含: 用該分支位址替換一控制暫存器中之一指令位址;及繼續進行至該分支位址以繼續處理。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/409,614 | 2017-01-19 | ||
| US15/409,614 US10713048B2 (en) | 2017-01-19 | 2017-01-19 | Conditional branch to an indirectly specified location |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201832073A TW201832073A (zh) | 2018-09-01 |
| TWI706325B true TWI706325B (zh) | 2020-10-01 |
Family
ID=60302111
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW107100720A TWI706325B (zh) | 2017-01-19 | 2018-01-09 | 用於至間接指定位置之條件分支之電腦程式產品、電腦系統及電腦實施方法 |
Country Status (19)
| Country | Link |
|---|---|
| US (1) | US10713048B2 (zh) |
| EP (1) | EP3571578B1 (zh) |
| JP (1) | JP7324142B2 (zh) |
| KR (1) | KR102238187B1 (zh) |
| CN (1) | CN110192180B (zh) |
| AU (1) | AU2017393885B2 (zh) |
| CA (1) | CA3037445C (zh) |
| DK (1) | DK3571578T3 (zh) |
| ES (1) | ES2890239T3 (zh) |
| HU (1) | HUE056010T2 (zh) |
| IL (1) | IL265554B (zh) |
| LT (1) | LT3571578T (zh) |
| MX (1) | MX2019012409A (zh) |
| PL (1) | PL3571578T3 (zh) |
| PT (1) | PT3571578T (zh) |
| RU (1) | RU2723228C1 (zh) |
| SI (1) | SI3571578T1 (zh) |
| TW (1) | TWI706325B (zh) |
| WO (1) | WO2018133966A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN118590436B (zh) * | 2024-05-09 | 2025-12-05 | 新华三技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5471597A (en) * | 1993-12-23 | 1995-11-28 | Unisys Corporation | System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables |
| US6874081B2 (en) * | 2001-05-17 | 2005-03-29 | Broadcom Corporation | Selection of link and fall-through address using a bit in a branch address for the selection |
Family Cites Families (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US797671A (en) | 1905-03-15 | 1905-08-22 | Draper Co | Warp-stop-motion mechanism. |
| JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
| EP0365188B1 (en) * | 1988-10-18 | 1996-09-18 | Hewlett-Packard Company | Central processor condition code method and apparatus |
| US5034880A (en) * | 1988-12-22 | 1991-07-23 | Wang Laboratories, Inc. | Apparatus and method for executing a conditional branch instruction |
| JPH05108345A (ja) * | 1991-10-16 | 1993-04-30 | Nec Corp | 分岐命令処理装置 |
| JP2001211190A (ja) | 2000-01-25 | 2001-08-03 | Hitachi Ltd | 通信管理装置及び通信管理方法 |
| US6721875B1 (en) | 2000-02-22 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form |
| US7194609B2 (en) | 2002-08-08 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | Branch reconfigurable systems and methods |
| JP2009163624A (ja) | 2008-01-09 | 2009-07-23 | Nec Electronics Corp | プロセッサ装置及び条件分岐処理方法 |
| US7870339B2 (en) | 2008-01-11 | 2011-01-11 | International Business Machines Corporation | Extract cache attribute facility and instruction therefore |
| US20090182983A1 (en) | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare and Branch Facility and Instruction Therefore |
| US8078849B2 (en) * | 2008-12-23 | 2011-12-13 | Juniper Networks, Inc. | Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table |
| US20110314263A1 (en) | 2010-06-22 | 2011-12-22 | International Business Machines Corporation | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
| US8505032B2 (en) * | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Operating system notification of actions to be taken responsive to adapter events |
| US9710266B2 (en) * | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
| US9459867B2 (en) * | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
| CN103838550B (zh) | 2012-11-26 | 2018-01-02 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
| GB2506462B (en) | 2013-03-13 | 2014-08-13 | Imagination Tech Ltd | Indirect branch prediction |
-
2017
- 2017-01-19 US US15/409,614 patent/US10713048B2/en active Active
- 2017-11-09 HU HUE17797326A patent/HUE056010T2/hu unknown
- 2017-11-09 LT LTEPPCT/EP2017/078726T patent/LT3571578T/lt unknown
- 2017-11-09 JP JP2019536292A patent/JP7324142B2/ja active Active
- 2017-11-09 CN CN201780083449.0A patent/CN110192180B/zh active Active
- 2017-11-09 EP EP17797326.0A patent/EP3571578B1/en active Active
- 2017-11-09 PT PT177973260T patent/PT3571578T/pt unknown
- 2017-11-09 AU AU2017393885A patent/AU2017393885B2/en active Active
- 2017-11-09 MX MX2019012409A patent/MX2019012409A/es unknown
- 2017-11-09 WO PCT/EP2017/078726 patent/WO2018133966A1/en not_active Ceased
- 2017-11-09 CA CA3037445A patent/CA3037445C/en active Active
- 2017-11-09 DK DK17797326.0T patent/DK3571578T3/da active
- 2017-11-09 RU RU2019102986A patent/RU2723228C1/ru active
- 2017-11-09 PL PL17797326T patent/PL3571578T3/pl unknown
- 2017-11-09 KR KR1020197018746A patent/KR102238187B1/ko active Active
- 2017-11-09 ES ES17797326T patent/ES2890239T3/es active Active
- 2017-11-09 SI SI201730900T patent/SI3571578T1/sl unknown
-
2018
- 2018-01-09 TW TW107100720A patent/TWI706325B/zh active
-
2019
- 2019-03-22 IL IL265554A patent/IL265554B/en active IP Right Grant
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5471597A (en) * | 1993-12-23 | 1995-11-28 | Unisys Corporation | System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables |
| US6874081B2 (en) * | 2001-05-17 | 2005-03-29 | Broadcom Corporation | Selection of link and fall-through address using a bit in a branch address for the selection |
Non-Patent Citations (1)
| Title |
|---|
| "z/Architecture Principles of Operation", IBM, 2015年3月 * |
Also Published As
| Publication number | Publication date |
|---|---|
| KR102238187B1 (ko) | 2021-04-09 |
| IL265554A (en) | 2019-05-30 |
| EP3571578A1 (en) | 2019-11-27 |
| CA3037445A1 (en) | 2018-07-26 |
| MX2019012409A (es) | 2022-01-04 |
| US10713048B2 (en) | 2020-07-14 |
| DK3571578T3 (da) | 2021-09-27 |
| AU2017393885A1 (en) | 2019-06-13 |
| AU2017393885B2 (en) | 2020-09-17 |
| CA3037445C (en) | 2025-05-20 |
| JP2020505674A (ja) | 2020-02-20 |
| LT3571578T (lt) | 2021-09-27 |
| PL3571578T3 (pl) | 2022-01-24 |
| KR20190086020A (ko) | 2019-07-19 |
| RU2723228C1 (ru) | 2020-06-09 |
| US20180203696A1 (en) | 2018-07-19 |
| EP3571578B1 (en) | 2021-08-25 |
| HUE056010T2 (hu) | 2022-01-28 |
| TW201832073A (zh) | 2018-09-01 |
| SI3571578T1 (sl) | 2021-11-30 |
| JP7324142B2 (ja) | 2023-08-09 |
| PT3571578T (pt) | 2021-09-10 |
| CN110192180B (zh) | 2023-04-21 |
| ES2890239T3 (es) | 2022-01-18 |
| CN110192180A (zh) | 2019-08-30 |
| WO2018133966A1 (en) | 2018-07-26 |
| IL265554B (en) | 2021-02-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI614679B (zh) | 向量浮點測試資料類別立即指令 | |
| TWI664530B (zh) | 用於測試待處理外部中斷指令之電腦程式產品、電腦系統及電腦實施方法 | |
| TWI701551B (zh) | 用於於虛擬化環境中保存/復原受防護之儲存器控制之電腦程式產品、電腦實施方法及電腦系統 | |
| TWI656477B (zh) | 用於具有可選擇比較屬性之浮點指令之電腦程式產品,電腦系統及電腦實現方法 | |
| TWI670649B (zh) | 用於在異動執行期間之受保護儲存器事件處置之電腦程式產品、電腦系統及電腦實施方法 | |
| TWI668568B (zh) | 用於管制受防護儲存器設施之操作之載入及儲存控制之電腦程式產品、電腦系統及電腦實施方法 | |
| JP7786851B2 (ja) | 数値の形式変換方法 | |
| TWI651955B (zh) | 用於基於偵測受防護儲存器事件以識別處理器屬性之電腦程式產品、電腦系統及電腦實施方法 | |
| TW201830257A (zh) | 受防護儲存器事件處理之執行時期檢測 | |
| TWI636397B (zh) | 十進制移位及除法指令 | |
| TW202034155A (zh) | 指令執行中之負零控制 | |
| TWI706325B (zh) | 用於至間接指定位置之條件分支之電腦程式產品、電腦系統及電腦實施方法 | |
| TWI653576B (zh) | 用於十進位乘法及移位指令之電腦程式產品、電腦系統及電腦實施方法 | |
| TWI653579B (zh) | 用於十進位立即載入指令之電腦程式產品、電腦系統及電腦實施方法 | |
| TWI670580B (zh) | 用於時鐘比較器正負號控制之電腦程式產品、電腦系統及電腦實施方法 | |
| TWI748329B (zh) | 用於在右至左方向中移動資料之指令之電腦程式產品、電腦系統及電腦實施方法 | |
| HK40006832B (zh) | 处理到间接指定位置的条件分支的方法和计算机系统 | |
| HK40006832A (zh) | 处理到间接指定位置的条件分支的方法和计算机系统 |