TWI417786B - 幫助一處理環境中之指令執行的方法、系統及程式產品 - Google Patents

幫助一處理環境中之指令執行的方法、系統及程式產品 Download PDF

Info

Publication number
TWI417786B
TWI417786B TW097103822A TW97103822A TWI417786B TW I417786 B TWI417786 B TW I417786B TW 097103822 A TW097103822 A TW 097103822A TW 97103822 A TW97103822 A TW 97103822A TW I417786 B TWI417786 B TW I417786B
Authority
TW
Taiwan
Prior art keywords
instruction
executed
processing
test group
buffer
Prior art date
Application number
TW097103822A
Other languages
English (en)
Other versions
TW200847013A (en
Inventor
Theodore J Bohizic
Viktor S Gyuris
Mark H Decker
Original Assignee
Ibm
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ibm filed Critical Ibm
Publication of TW200847013A publication Critical patent/TW200847013A/zh
Application granted granted Critical
Publication of TWI417786B publication Critical patent/TWI417786B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

幫助一處理環境中之指令執行的方法、系統及程式產品
本發明大體係關於在一處理環境中處理指令,且詳言之,係關於利用緩衝器幫助指令執行。
通常,在一指令流之執行期間,執行一指令,執行複數個測試,且接著執行下一個指令等。然而,某些指令需要特殊處置。舉例而言,一執行指令指定可在執行前被修改的一目標指令。待管理此修改。另外,正跨越一記憶體邊界(例如,頁界)之指令需要獲得該指令之實體不相鄰的部分。再次地,待管理此情形。
此等情況之處置係重要的。然而,在主線處理期間的此等情況之處置使系統效能降級。
基於前述內容,存在對於處置主線處理外部的特殊情況之能力的需求。詳言之,存在對於幫助指令執行之能力的需求。在一實例中,使用緩衝器幫助指令執行,使得處置在主線處理外部的特殊情況。當觀察到具有特殊情況之一指令時,該指令之一指標指向一臨時緩衝器,該臨時緩衝器最起碼具有彼指令之一複本。自該臨時緩衝器執行該指令且接著恢復該指標以指向該記憶體中之適當位置。
經由提供一製品,先前技術之缺點得以克服且提供了額外優點,該製品包括至少一電腦可使用媒體,該至少一電腦可使用媒體具有用以幫助在一處理環境中的指令執行之 電腦可讀程式碼邏輯。該電腦可讀程式碼邏輯在執行時執行(例如)下列操作:給一緩衝器提供一指令;判定該緩衝器中的該指令之一態樣是否待加以修改;回應於該判定指示該態樣待加以修改,修改該態樣;及將一指令指標重定向至該緩衝器以便致能來自該緩衝器的該指令之執行,而非在記憶體中的該指令之執行。
本文中亦描述及主張關於本發明之一或多個態樣之方法及系統。
藉由本發明之技術實現額外特徵及優點。本發明之其他實施例及態樣在本文中得以詳細描述且被考慮為所主張之本發明之一部分。
本發明之一或多個態樣經特定指出且在本說明書之結束處之申請專利範圍中作為實例清楚地主張。自以下結合附圖之詳細描述,本發明之前述及其他目標、特徵及優點係顯而易見的。
根據本發明之一態樣,提供在一處理環境中控制指令執行之能力。作為一實例,回應於通過一單一測試,主線指令流內之指令繼續被處理。然而,若測試失敗,則執行一測試組,而非主線流中之指令。
單一測試包括將一指令計數器與一變量比較,該變量在本文中被稱作範圍末端,其經選擇性地設定為一值。當不符合彼值時,繼續指令執行以繼續進行至主線指令流中之下一個指令。然而,當達到或超過該值後,則執行落至接 著加以執行之一預定測試組。
在一實施例中,在一測試組之處理期間,一緩衝器可用以有助於指令執行。舉例而言,當經處理時,某些指令需要特殊處置(例如,執行指令,及跨越頁界之指令)。為了有助於此處置,使用一緩衝器,其中複製目標指令,從而能夠對指令進行修改(若必要或需要)。
參看圖1描述併有且使用本發明之一或多個態樣的一處理環境之一實施例。在此實例中,處理環境100係基於一架構(其可被稱作本地架構),但仿真另一架構(其可被稱作客體架構)。作為實例,本地架構為由紐約Armonk的International Business Machines Corporation提供之Power4或PowerPC架構,或者由Intel Corporation提供之Intel架構;且客體架構為亦由紐約Armonk的International Business Machines Corporation提供之z/Architecture。z/Architecture之態樣描述於2005年9月之IBM公告案第SA22-7832-04號"z/Architecture Principles of Operation"中,該案之全部內容以引用之方式併入於本文中。
舉例而言,處理環境100包括經由(例如)一或多個匯流排108相互耦接之一本地處理器102(例如,一中央處理單元(CPU))、一記憶體104(例如,主記憶體)及一或多個輸入/輸出(I/O)裝置106。作為實例,處理器102為由紐約Armonk的International Business Machines Corporation(IBM)提供之pSeries伺服器之部分。IBM、pSeries、PowerPC及z/Architecture為美國紐約Armonk的 International Business Machines Corporation之註冊商標。Intel為Intel Corporation之註冊商標。本文中使用之其他名稱可為International Business Machines Corporation或其他公司之註冊商標、商標或產品名稱。
本地中央處理單元102包括在環境內之處理程序中使用的一或多個本地暫存器110,諸如,一或多個通用暫存器及/或一或多個專用暫存器。此等暫存器包括表示在任一特定時間點時的環境狀態之資訊。
為了提供仿真,處理環境經建構以包括一仿真器、一客體作業系統及一或多個客體應用程式。進一步參看圖2描述此等經建構之特徵。
參看圖2,描述處理環境100之一系統架構200之一實施例。舉例而言,系統架構200包括複數個實施層,其界定該環境之經建構之態樣。在此特定實例中,作為實例,該等層體包括:硬體202,其經由一或多個介面及/或控制器耦接至記憶體204及輸入/輸出裝置及/或網路206;一主機作業系統208;一仿真器210;一客體作業系統212;及一或多個客體應用程式214。經由一或多個介面將一層耦接至至少一其他層。舉例而言,經由至少一介面將客體應用程式214耦接至客體作業系統212。其他介面用以耦接其他層體。此外,該架構亦可包括其他層體及/或介面。以下進一步描述圖2中描繪之各種層體。
硬體202為處理環境之本地架構,且係基於(例如)Power4、PowerPC、Intel或其他架構。在該硬體上執 行的為主機作業系統208,諸如由International Business Machines Corporation提供之AIX或LINUX 。 AIX為紐約Armonk的International Business Machines Corporation提供之註冊商標。
仿真器210包括用以仿真一與本地架構不同之架構的許多組件。在此實施例中,正被仿真之架構為由International Business Machines Corporation提供之z/Archiiecture,但亦可仿真其他架構。該仿真使一客體作業系統212(例如,z/OS,International Business Machines Corporation之註冊商標)能夠在本地架構上執行且能夠支援一或多個客體應用程式214(例如,Z應用程式)。參看圖3描述關於仿真器210之進一步細節。
參看圖3,仿真器210包括一耦接至一或多個服務程序302之共用記憶體300、一輸入/輸出(I/O)實施304及一中央處理單元(CPU)實施306,以下進一步詳細描述其中之每一者。
共用記憶體300表示主機中之記憶體之自服務程序302、I/O實施304及CPU實施306可見的一部分。其為一儲存區域,其中獨立的程序(例如,服務程序、I/O實施、CPU實施)藉由讀取資料及將資料儲存至共用記憶體來通信。作為一實例,共用記憶體包括複數個區,其包括(例如)系統全域資訊、CPU內容及資訊、仿真之主要儲存、仿真之主要儲存密鑰及子通道(亦即,表示I/O裝置之資料結構)。
服務程序302包括一或多個程序,其用以建立CPU及一 或多個其他程序,以及提供經建構之操作者功能程序,諸如,開始、停止、重設、初始程式載入(IPL)等。其亦可提供其他功能,諸如,仿真之系統功能程序的顯示或更改、獲得/釋放共用資源、其他維護命令等。
輸入/輸出實施304包括(例如)一或多個子通道程序及一用以與I/O裝置通信之I/O控制器。在本發明之一態樣中I/O控制器負責開始子通道程序及執行恢復。
中央處理單元(CPU)實施306負責執行指令及管理處理。其包括參看圖4A至圖4B描述之許多組件。
參看圖4A,CPU實施306包括(例如):解譯器碼400,其用以獲得、轉譯及執行指令;一經建構之共處理器402,其輔助初始啟動及與晶片(例如,服務調用邏輯處理器(SCLP)程序)之通信;及計時功能程序404,其負責仿真器之計時功能。參看圖4B描述關於解譯器碼400之進一步細即。
解譯器碼400包括(例如)一解譯單元420,該解譯單元420耦接至一記憶體存取單元422、一CPU控制426、一非同步中斷處置器428,及一同步中斷處置器430。
解譯單元420負責自記憶體獲得一或多個客體指令、針對客體指令提供本地指令及執行本地指令。客體指令包含經開發以在不同於本地CPU 102之架構的一架構中執行之軟體指令(例如,機器指令)。舉例而言,客體指令可已經設計以在一z/Architecture處理器上執行,但替代地在本地CPU 102上仿真,本地CPU 102可為(例如)一pSeries伺 服器。
在一實例中,本地指令之提供包括選擇仿真器中與客體指令相關聯之一程式碼段。舉例而言,每一客體指令在仿真器中具有一相關聯之程式碼段,其包括一或多個本地指令之序列,且彼程式碼段經選擇以待執行。
在另一實例中,提供包括在(例如)一轉譯程序期間針對一給定客體指令建立一本地指令流。此包括識別該功能及建立等效的本地指令。
若指令包括一記憶體存取,則記憶體存取常式422用以存取共用記憶體300。該記憶體存取常式可使用轉譯機構(諸如,動態位址轉譯(DAT)432或存取暫存器轉譯(ART)434)來將一邏輯位址轉譯為一絕對位址,該絕對位址接著用以存取記憶體或者可進一步加以轉譯(若需要)。
在此實施例中,待使解譯單元420中之處理成流線型。因此,若造成了更複雜的情況,諸如,等待狀態或者自一架構級改變至另一架構級(例如,z/Architecture至ESA/390)等,則控制轉移至CPU控制426,其處置該事件且接著使控制返回至解譯單元420。
此外,若發生中斷,則處理自解譯單元420過渡至非同步中斷處置器428(若其為非同步中斷)或者同步中斷處置器430(若其為同步中斷)。在處置了中斷後,處理返回至解譯單元420。
詳言之,解譯單元監視共用記憶體中之某些位置,且若位置已改變,則其表示一中斷已由CPU或I/O中之一者設 定。因此,解譯單元調用適當的解譯處置器。
參看圖5描述關於解譯單元420之進一步的細節。詳言之,圖5描繪與解譯單元相關聯的一處理流程之一實施例。在此實施例中,由於每一指令常式具有一相關聯之解碼/調度常式(亦即,無中央控制),故認為該處理為線狀的。在一實施例中,此流程正執行正仿真z/Architecture之指令。
參看圖5,展示處理流程500包括兩個部分,一者在本文中被稱作主線處理502及另一者被稱作測試組處理504。主線處理為流線型處理,其中處理自一指令常式繼續進行至另一指令常式,而並不執行指令間的大量測試。在此實施例中,在指令執行期間執行的唯一測試為一簡單測試,其判定主線處理是否待繼續或者是否處理待落至測試組。若待執行進一步的測試或需要其他動作,則處理退出主線處理,且進入測試組處理504。一旦執行了該等測試或其他處理,則在主線處理中,處理回復。期望在大多數時間處理將保持處於主線處理中。
在一實施例中,在進入主線處理前,執行某一初始化。舉例而言,將一指標輸入至解譯單元420(圖4b),該指標指示包括待加以執行的指令流之一特定檔案或記憶體區域。此指令流包括(例如)待在本地處理器上執行之Z指令。
除了將一指標提供至指令流之外,提供一用於指令流之指令計數器以及與正被仿真的處理環境相關聯之狀態(例如,Z狀態)。狀態包括各種暫存器及旗標,該旗標(例如) 指示指令程式事件記錄(I-PER)模式是否在作用中、I-STEP或ADSTOP是否在作用中、當前執行模式等。狀態經評估,且基於彼評估選擇測試組處理504(圖5)之測試組中之一者。舉例而言,若I-PER模式在作用中,則可選擇一PER測試組。將一指標設定至選定的測試組,且處理在彼測試組處繼續。
執行選定測試組,其可包括執行一或多個測試及/或一或多個動作,其如下所述。在測試組中,若處理再次落至主線處理,則作出關於接下來選擇哪一測試組之決定。另外,設定一變量(範圍末端),其用於單一測試中以判定是否繼續主線處理。如以下進一步詳細地描述,此變量係基於正經執行之測試及指令流之處理階段而設定的。
在執行了測試組後,處理繼續至主線處理之指令常式506,其由測試組判定。當完成了彼選定指令常式時,控制在與選定指令常式506相關聯之一解碼/調度常式508處繼續。
解碼/調度常式讀取下一個操作碼之指令流且繼續進行至彼指令或落至一測試組。舉例而言,在解碼/調度常式中,執行一單一測試以判定流線型主線處理是否繼續或者處理是否臨時落至測試組處理。亦即,在解碼/調度點處,進行一測試以判定是否需要更複雜的處理或者處理是否可保持於主要的線內流中。若需要更複雜的處理,則在進展至一指令常式前,在一預定測試組中人工修改指令周圍之情況以使其簡單,因為指令常式假定情形係簡單的。 舉例而言,指令流假定其可自實體相鄰位置提取一指令。若解碼/調度指示因為指令跨越一頁界,所以其不可能,則處理繼續至執行額外處理之一測試組。
存在可加以選擇之各種測試組,其用於包括例如下列各項之處理:指令頁界跨越510、恢復511、I-PER提取512、I-Step及Adstop 514、開始及退出516及收集統計決定執行模式(JIT模式)518。雖然將此等測試組提供為實例,但可使用額外的、較少或不同測試組。每一測試組設定可包括待在返回至主線處理前執行的一或多個動作。以下描述關於測試組之進一步細節。
可選擇為指令頁界跨越測試組510之一測試組,其用以判定一指令是否正跨越一頁界。當一指令靠近一頁(或其他指定的記憶體單元)之末端時,調用此測試組。舉例而言,將範圍末端變量設定至(例如)等於頁末端減4位元組之值。在與剛完成的指令常式相關聯之解碼/調度常式中,將範圍末端值與指令計數器相比較以判定指令是否靠近頁末端。若滿足此單一測試,則在此實例中,調用測試組510。
在測試組510中,執行一測試以判定該指令是否跨越一個以上頁。作為一實例,若該頁仍具有4個位元組且指令僅為2個位元組,則指令仍裝於該頁上。因此,處理回復於主線處理中,該主線處理執行該指令。然而,若指令為6個位元組且該指令之僅4個位元組處於一頁上,則判定該指令正跨越一頁界。由於指令之最後2個位元組在邏輯上 係相鄰的,但在實體上不相鄰,所以執行處理,以便獲得最後2個位元組且提供6個位元組,如同其在實體上係相鄰的。獲得6個位元組,如同其處於實體相鄰的記憶體中,且其被提供至待加以執行的適當指令常式(經由指標)。
如上所述,代替在主線處理中之每一指令內執行頁界跨越測試,當需要或必要時,僅執行此測試。亦即,僅當判定指令靠近一頁之末端時,對其執行。
另一測試組為恢復測試組511。當需要對於一指令之特殊處置時,調用此測試組,如以下進一步詳細地描述。在一實例中,儲存各種變量之值,且隨復改變彼等變量。恢復接著用以使彼等變量返回至保存的值。
另一測試組為I-PER提取測試組512。PER監視為監視某些程式事件(諸如,自一指定儲存區域提取一指令)之z/架構除錯工具。當範圍末端值指示I-PER模式待開始時,使用此測試組。舉例而言,若PER監視待在頁之中間開始,且範圍末端變量與指令計數器之比較指示頁之中間及PER監視待開始,則調用此測試組且執行與PER相關聯之處理。
另一測試組為I-Step及Adstop測試組514。I-Step及Adstop為經建構之z/架構中的除錯工具。對於I-Step,將處理器置於其跨過一單一指令且接著進入至一暫停狀態的模式下。在暫停狀態期間,檢驗機器之狀態。舉例而言,手動讀取該等暫存器,且其後,發出一連續的I-Step模式。對於待被調用之I-Step測試組,範圍末端變量與指令 計數器一致。在執行了任一種類之指令後,指令計數器將立即超過範圍末端,因此,將範圍末端人工地設定為零。因此,在每一指令後,程式執行立即進入至測試區塊。其將進入至暫停狀態,等待使用者互動,且接著繼續。
Adstop為當指令位址處於一特定範圍內時之停止。其類似於PER模式。
另一測試組為開始及退出測試組。當待將控制轉移為CPU控制及返回時,使用此測試組。當程式執行自一架構模式改變至另一架構模式時,則退出此流程且藉由CPU控制繼續控制。作為一實例,為了調用此測試組,將範圍末端變量設定為零。
收集統計/決定執行模式測試組518用以判定哪一模式待用於執行。此測試組收集使用統計且基於該統計選擇一執行模式。執行模式之實例包括:解譯模式(返回至主線處理502);記錄模式,在該模式下,將每一執行之指令複製至一緩衝器;及轉譯模式,當先前已轉譯了地址時,使用此轉譯模式。作為一實例,為了調用此測試組,將範圍末端變量設定為零。此允許在每一指令後處理此測試組。
雖然在以上測試組中,指示一主要的測試或動作,但每一測試組可包括其他動作。舉例而言,除了主要的測試或動作之外,每一測試組亦可檢查(例如)是否正進行一指令頁界跨越或者一中斷是否待決。亦存在許多其他實例。
參看圖6描述關於解譯器420的與處理一指令流相關聯的進一步細節。
初始地,將至一指令流之指標連同與該指令流相關聯之指令計數器及狀態輸入至解譯器420,步驟600。狀態包括(例如):暫存器,其包括(例如)浮點、一般、控制及/或定址暫存器(作為實例);及旗標,其指示(例如)PER模式在作用中、I-Step在作用中等。評估此狀態,步驟602。
基於評估,選擇測試組中之一者,且開始彼測試組之處理,步驟604。預判定此測試組,其中評估指示處理待自一特定測試組開始。在該測試組中,視測試組而定,執行某些行動。另外,測試組判定下一個待調用(若需要)之測試組,且設定一測試組指標以指向彼下一個測試組。視在該測試組中執行之評估(例如,PER在作用中、靠近一頁界跨越、I-Step在作用中等)而定,下一個測試組可為同一測試組或一不同測試組。
回應於執行測試組,流程繼續進行至主線處理中之一選定指令常式,且執行彼常式,步驟606。在一實例中,常式包括一指令;但在其他實例中,其可包括複數個指令。當指令常式完成時,處理繼續與指令常式相關聯之解碼/調度常式,步驟608。在解碼/調度處,執行單一測試以判定處理待繼續至下一個指令還是落至一測試組,步驟610。此單一測試為關於是否已符合範圍末端之值的一檢查。若尚未符合其(詢問612),則處理繼續主線執行,步驟606。否則,處理落至預定測試組,步驟614,且處理該測試組,步驟616。處理接著繼續下一個待加以處理之指令常式,如由測試組指示。
參看圖7描述關於處理測試組之額外細節。在一測試組之處理期間,可執行一包括特殊處置之指令。為了有助於處置此指令,使用一緩衝器,如下所述。
參看圖7,開始一測試組之處理,且遇到一指令,步驟700。進行關於此指令是否具有需要特殊處置之類型的判定,詢問702。舉例而言,進行關於該指令是否為一執行指令或一跨越一頁界之指令的檢查。若其為需要特殊處置之指令,則使用緩衝器。此緩衝器為駐留於處理器之局部記憶體中之一臨時緩衝器。舉例而言,若指令為一執行指令,其為一指定一待被執行的目標指令之Z指令,則將目標指令載入至經緩衝之記憶體位置中,步驟704。藉由將目標指令複製至緩衝器,可修改與該指令相關聯之至少一態樣,步驟706。舉例而言,假定目標指令為一移動字元(MVC)指令且待修改待加以移動的位元組之數目(如在指令中指定)。該指令經複製至緩衝器且經修改以指示待加以移動的位元組之數目。舉例而言,若待加以移動的位元組之原始數目為4個位元組,則可將此改變至另一值,諸如,8個位元組。因此,代替移動4個位元組,修改目標指令以移動8個位元組(或任何其他數目個位元組)。
如另一實例,假定該指令為一跨越一頁界之指令。在此情況下,目標指令為待執行的指令且在邏輯上相鄰,但實體上不相鄰,將該指令之位元組複製至緩衝器以使其實體上相鄰。舉例而言,將該指令之位於一頁上的第一組位元組複製至緩衝器,且亦將該指令之在另一頁上的剩餘字元 組複製至緩衝器,步驟704。在此實例中,不必修改該指令,且因此,省略步驟706。
在初始化緩衝器後,執行各種任務作為正被處理之測試組的部分。舉例而言,此等任務包括將指令指標重定向至緩衝器及保存各種變量之值以供稍後使用,步驟708。舉例而言,保存範圍末端變量之當前值以及下一個測試組指示符之當前值。
其後,替換此等變量之值,步驟710。舉例而言,將範圍末端設定為零,且設定下一個測試組指示符以指向恢復測試組。
接著執行緩衝器中之指令。在解碼/調度處,單一測試(例如,變量末端)失敗,因此,選擇恢復測試組,步驟714,在恢復期間,不進行步驟708-710處之動作。舉例而言,將指令指標重定向至原始指令流,將範圍末端變量設定至其保存值,且亦將下一個測試組指示符重設定至其保存值。處理接著在下一個指令處繼續,步驟716。
返回至詢問702,若該指令不具有需要特殊處置之類型,則處理繼續該測試組之下一個指令或者返回於主線處理中,如由測試組所指引。
本發明之一或多個態樣可包括於具有(例如)電腦可使用媒體之一製品(例如,一或多個電腦程式產品)中。舉例而言,媒體在其中具有電腦可讀程式碼構件或邏輯(例如,指令、程式碼、命令等)以提供及有助於本發明之能力。該製品可包括為一電腦系統之部分或單獨地出售。
參看圖8描述併有本發明之一或多個態樣的一製品或一電腦程式物品之一實例。舉例而言,一電腦程式產品800包括一或多個電腦可使用媒體802,該一或多個電腦可使用媒體802將電腦可讀程式碼構件或邏輯804儲存於其上以提供及有助於本發明之一或多個態樣。媒體可為電子、磁性、光學、電磁、紅外線或半導體系統(或設備或裝置)或者傳播媒體。電腦可讀取媒體之實例包括半導體或固態記憶體、磁帶、抽取式電腦磁片、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、硬質磁碟及光碟。光碟之實例包括緊密碟片-唯讀記憶體(CD-ROM)、緊密碟片-讀/寫(CD-R/W)及DVD。
程式指令序列或者由一或多個電腦可讀程式碼構件或邏輯界定的一或多個相關模組之一邏輯總成指引本發明之一或多個態樣的效能。
有利地,提供用於控制指令執行的能力,其中將控制維持於主線處理中,除非需要測試(不同於單一範圍末端測試)或其他動作,如由單一範圍末端測試判定。藉由僅當需要時執行該等測試,效能得以增強且編碼得以簡化(例如,每一指令不必包括所有測試之程式碼)。
有利地,使處理為流線型,其中出現至下一個常式之分支(假定不必處理一測試組),而非返回至解譯器且接著至下一個常式。
作為另一優點,藉由使用緩衝器,減少了與某些指令(諸如,執行指令)相關聯之額外負擔。藉由一執行指令, 存在與自記憶體之一頁跳至記憶體之另一頁相關聯的額外負擔。舉例而言,執行處於記憶體之一頁上的執行指令,且接著執行處於記憶體之一不同頁上的目標指令。在執行了目標指令後,處理返回至該執行指令後之指令。存在與此來回分支相關聯之額外負擔。然而,藉由使用緩衝器,維持離開第一頁之記錄,因此當處理返回時,可執行恢復,且不必執行額外測試及/或動作(例如,位址轉譯等)。
雖然以上描述了各種實施例,但此等實施例僅為實例。舉例而言,處理環境可包括基於不同於Power4、PowerPC或Intel之架構的處理單元。另外,不同於pSeries伺服器之伺服器可併有及使用本發明之一或多個態樣。此外,可使用不同於本文中提到的作業系統之作業系統。另外,處理環境可仿真不同於z/Architecture之環境。另外,可使用各種仿真器。仿真器係市售的且由各公司提供。再另外,處理環境不必包括仿真器碼。許多其他類型之處理環境可併有及/或使用本發明之一或多個態樣。
另外,雖然在處理某些指令(諸如,執行指令及跨越頁界之指令)程序中使用一緩衝器,但可存在待使用緩衝器之其他指令及/或情形,且此等指令及/或情形包括於本發明之範疇中。
另外,雖然已將測試組作為實例提供。但可使用額外的、較少及/或其他測試組。包括的測試組之數目視設計而定。對本發明之許多變化係可能的且包括於本發明之範 疇中。
此外,在一或多個實施例中,適合於儲存及/或執行程式碼之資料處理系統係有用的,其包括經由系統匯流排直接或間接耦接至記憶體元件之至少一處理器。該等記憶體元件包括(例如)在程式碼之實際執行期間使用之局部記憶體、大容量儲存器及快取記憶體,快取記憶體提供至少一些程式碼之臨時儲存以便減少在執行期間必須自大容量儲存器擷取碼的次數。
輸入/輸出或I/O裝置(包括(但不限於)鍵盤、顯示器、指標裝置、DASD、磁帶、CD、DVD、隨身碟及其他記憶體媒體等)可直接或經由插入之I/O控制器而耦接至系統。網路轉接器亦可耦接至系統以使該資料處理系統能夠經由插入之私用或共用網路而耦接至其他資料處理系統或遠端印表機或儲存裝置。數據機、電纜數據機及乙太網路卡僅為可用類型網路轉接器中的少數幾種。
可將本發明之一或多個態樣的能力實施於軟體、韌體、硬體或者其一些組合中。可提供可由一機器讀取的至少一程式儲存裝置,該裝置包含具有可由該機器執行以執行本發明之能力的指令之至少一程式。
本文中描繪之流程圖僅為實例。在不脫離本發明之精神的情況下,可存在對本文中描述之此等圖或步驟(或操作)之許多變化。舉例而言,可按一不同次序執行該等步驟,或者可添加、刪除或修改步驟。將所有此等變化考慮為所主張之本發明之一部分。
雖然本文中已詳細描繪及描述了實施例,但對於熟習此項技術者將顯而易見,在不脫離本發明之精神的情況下,可進行各種修改、添加、取代及其類似操作,且因此將此等修改、添加、取代及其類似操作考慮為處於如由下列申請專利範圍界定的本發明之範疇內。
100‧‧‧處理環境
102‧‧‧本地處理器、本地中央處理單元
104‧‧‧記憶體
106‧‧‧輸入/輸出(I/O)裝置
108‧‧‧匯流排
110‧‧‧本地暫存器
200‧‧‧系統架構
202‧‧‧硬體
204‧‧‧記憶體
206‧‧‧輸入/輸出裝置、網路
208‧‧‧主機作業系統
210‧‧‧仿真器
212‧‧‧客體作業系統
214‧‧‧客體應用程式
300‧‧‧共用記憶體
302‧‧‧服務程序
304‧‧‧輸入/輸出(I/O)實施
306‧‧‧中央處理單元(CPU)實施
400‧‧‧解譯器碼
402‧‧‧共處理器
404‧‧‧計時功能程序
420‧‧‧解譯單元/解譯器
422‧‧‧記憶體存取單元
426‧‧‧CPU控制
428‧‧‧非同步中斷處置器
430‧‧‧同步中斷處置器
432‧‧‧動態位址轉譯(DAT)
434‧‧‧存取暫存器轉譯(ART)
500‧‧‧處理流程
502‧‧‧主線處理
504‧‧‧測試組處理
506‧‧‧指令常式
508‧‧‧解碼/調度常式
510‧‧‧指令頁界跨越測試組
511‧‧‧恢復測試組
512‧‧‧I-PER提取測試組
514‧‧‧I-Step及Adstop測試組
516‧‧‧開始及退出測試組
518‧‧‧收集統計/決定執行模式測試組
800‧‧‧電腦程式產品
802‧‧‧電腦可使用媒體
804‧‧‧電腦可讀程式碼構件或邏輯
圖1描繪併有且使用本發明之一或多個態樣的一處理環境之一實施例;圖2描繪根據本發明之一態樣的圖1之處理環境的系統架構之一實施例;圖3描繪根據本發明之一態樣的圖2的系統架構之一仿真器之一實施例之進一步細節;圖4A描繪根據本發明之一態樣的圖3的仿真器之中央處理單元(CPU)實施之一實施例之進一步細節;圖4B描繪根據本發明之一態樣的圖4A的CPU實施之解譯器碼之一實施例之進一步細節;圖5描繪根據本發明之一態樣的指令執行的一流程之一實施例;圖6描繪根據本發明之一態樣的與執行一指令流相關聯的邏輯之一實施例;圖7描繪根據本發明之一態樣的與處理圖6之測試組相關聯的邏輯之一實施例;及圖8描繪併有本發明之一或多個態樣的一電腦程式產品之一實施例。
200‧‧‧系統架構
202‧‧‧硬體
204‧‧‧記憶體
206‧‧‧輸入/輸出裝置、網路
208‧‧‧主機作業系統
210‧‧‧仿真器
212‧‧‧客體作業系統
214‧‧‧客體應用程式

Claims (12)

  1. 一種幫助一處理環境中之指令執行之方法,該方法包含:處理一指令流,該處理包含:執行該指令流之一指令常式;回應於執行該指令常式,執行一測試以判定處理是否待繼續至該指令流中之另一指令常式,或將該指令流之主線處理落至一測試組;回應於判定處理待落至該測試組,執行該測試組以判定是否將一指令指標自該指令流中之待執行之一指令重定向至一緩衝器中之一目標指令,其中執行該測試組包含:判定待執行之該指令相較於該指令流中之一或多個其他指令將被不同地處置;回應於該判定指示待執行之該指令將被不同地處置,為待執行之該指令提供位於記憶體中之一緩衝器中之一目標指令;判定該緩衝器中之該目標指令之一態樣是否待修改;回應於該判定指示該態樣待修改,修改該態樣;及將該指令指標自待執行之該指令重定向至該緩衝器中之該目標指令,其中該緩衝器中之該目標指令將被執行。
  2. 如請求項1之方法,其中該提供該緩衝器中之該目標指 令包含將待執行之該指令自記憶體中之一邏輯相鄰但實體不相鄰之位置複製至該緩衝器中之一實體相鄰位置。
  3. 如請求項1之方法,其中待執行之該指令包含一跨越一頁界之指令,且該提供該緩衝器中之該目標指令包含將待執行之該指令之一第一部分自記憶體之一頁複製至該緩衝器,及將待執行之該指令之一第二部分自記憶體之另一頁複製至該緩衝器。
  4. 如請求項1之方法,其中待執行之該指令包含一執行指令,該緩衝器中之該目標指令係該執行指令之一目標指令,且其中該修改包含修改一具有該緩衝器中之該目標指令之暫存器。
  5. 如請求項4之方法,其中該執行指令之該目標指令包含一移動字元指令,且該暫存器經修改以指示所需之待移動之位元組的數目,該修改置換一在該移動字元指令中指定的初始值。
  6. 如請求項1之方法,其中該方法進一步包含:執行該緩衝器中之該目標指令;及判定處理待於哪一記憶體位置處繼續。
  7. 如請求項6之方法,其中該判定處理待於哪一記憶體位置處繼續包含:選擇待執行之一下一個測試組,該下一個測試組提供於包含待執行之該指令之該指令流之主線處理外部之處理;及指示該下一個測試組係接下來待執行。
  8. 如請求項7之方法,其中該測試組為用以將該指令指標重定向至包括待執行之該指令之該指令流之一恢復測試組。
  9. 如請求項1之方法,其中該處理環境包含一仿真器。
  10. 如請求項1之方法,其中回應於該重定向,該緩衝器中之該指令被執行,而非執行原始指示於該指令流中之該待執行之指令,及其中執行該測試包含使用一單一測試,其中該單一測試使用一變量,該變量基於該指令流之一處理階段及回應於用於該指令流之一先前測試組之執行而經執行之測試而被動態設定,及其中該單一測試包含比較該指令常式之一指令計數器與該變量之值。
  11. 一種用於幫助一處理環境中之指令執行的電腦程式產品,該電腦程式產品包含:可被一處理器讀取之一儲存媒體,其儲存由該處理器執行之指令以用於執行請求項1至10之任一者之方法。
  12. 一種用於幫助在一處理環境中之指令執行的電腦系統,該電腦系統包含:一記憶體;及與該記憶體通信之一處理器,其中該電腦系統經組態以執行請求項1至10之任一者之方法。
TW097103822A 2007-02-01 2008-01-31 幫助一處理環境中之指令執行的方法、系統及程式產品 TWI417786B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/670,187 US7882336B2 (en) 2007-02-01 2007-02-01 Employing a buffer to facilitate instruction execution

Publications (2)

Publication Number Publication Date
TW200847013A TW200847013A (en) 2008-12-01
TWI417786B true TWI417786B (zh) 2013-12-01

Family

ID=39322844

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097103822A TWI417786B (zh) 2007-02-01 2008-01-31 幫助一處理環境中之指令執行的方法、系統及程式產品

Country Status (7)

Country Link
US (1) US7882336B2 (zh)
EP (1) EP2115574B1 (zh)
JP (1) JP5235900B2 (zh)
KR (1) KR101109984B1 (zh)
CN (1) CN101583926B (zh)
TW (1) TWI417786B (zh)
WO (1) WO2008092769A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361109B2 (en) 2010-05-24 2016-06-07 Qualcomm Incorporated System and method to evaluate a data value as an instruction
WO2012161059A1 (en) * 2011-05-20 2012-11-29 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and method for driving the same
EP2881858B1 (de) * 2013-12-09 2016-04-06 dSPACE digital signal processing and control engineering GmbH Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4591982A (en) * 1983-08-29 1986-05-27 International Business Machines Corporation Storage selection override apparatus for a multimicroprocessor implemented data processing system
US6249861B1 (en) * 1998-12-03 2001-06-19 Sun Microsystems, Inc. Instruction fetch unit aligner for a non-power of two size VLIW instruction
TWI259454B (en) * 2002-11-19 2006-08-01 Toshiba Corp Information playback apparatus and information playback method

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57189252A (en) * 1981-05-18 1982-11-20 Mitsubishi Electric Corp Program controlling method
US5918046A (en) 1994-01-03 1999-06-29 Intel Corporation Method and apparatus for a branch instruction pointer table
US5515521A (en) * 1994-02-08 1996-05-07 Meridian Semiconductor, Inc. Circuit and method for reducing delays associated with contention interference between code fetches and operand accesses of a microprocessor
US5586278A (en) 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
WO1998059292A1 (en) 1997-06-25 1998-12-30 Transmeta Corporation Improved microprocessor
JP3652956B2 (ja) * 2000-04-25 2005-05-25 北陸日本電気ソフトウェア株式会社 エミュレーション装置
US7818808B1 (en) * 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7840777B2 (en) * 2001-05-04 2010-11-23 Ascenium Corporation Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime
US20030093649A1 (en) 2001-11-14 2003-05-15 Ronald Hilton Flexible caching of translated code under emulation
GB2393270B (en) * 2002-09-19 2005-07-27 Advanced Risc Mach Ltd Executing variable length instructions stored within a plurality of discrete memory address regions
JP4155052B2 (ja) * 2003-02-18 2008-09-24 日本電気株式会社 エミュレータ、エミュレーション方法およびプログラム
US7383540B2 (en) 2003-12-12 2008-06-03 International Business Machines Corporation Altering execution flow of a computer program
US20050193283A1 (en) * 2003-12-30 2005-09-01 Reinhardt Steven K. Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support
US7519852B2 (en) 2005-05-12 2009-04-14 International Business Machines Corporation Apparatus, system, and method for redirecting an instruction pointer to recovery software instructions
US20080168260A1 (en) * 2007-01-08 2008-07-10 Victor Zyuban Symbolic Execution of Instructions on In-Order Processors
US7783867B2 (en) * 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4591982A (en) * 1983-08-29 1986-05-27 International Business Machines Corporation Storage selection override apparatus for a multimicroprocessor implemented data processing system
US6249861B1 (en) * 1998-12-03 2001-06-19 Sun Microsystems, Inc. Instruction fetch unit aligner for a non-power of two size VLIW instruction
TWI259454B (en) * 2002-11-19 2006-08-01 Toshiba Corp Information playback apparatus and information playback method

Also Published As

Publication number Publication date
TW200847013A (en) 2008-12-01
EP2115574A1 (en) 2009-11-11
JP5235900B2 (ja) 2013-07-10
KR101109984B1 (ko) 2012-02-16
EP2115574B1 (en) 2016-09-28
KR20090095573A (ko) 2009-09-09
US7882336B2 (en) 2011-02-01
CN101583926B (zh) 2012-08-22
JP2010518470A (ja) 2010-05-27
WO2008092769A1 (en) 2008-08-07
US20080189527A1 (en) 2008-08-07
CN101583926A (zh) 2009-11-18

Similar Documents

Publication Publication Date Title
TWI410864B (zh) 在一處理環境中控制指令執行
TWI551986B (zh) 用於自較低特殊權限狀態控制執行階段檢測設施之操作之電腦程式產品、方法及其系統
JP5988444B2 (ja) 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム
EP2956861B1 (en) Method and system for detecting concurrency programming errors in kernel modules and device drivers
JP6138142B2 (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
US8887139B2 (en) Virtual system and method of analyzing operation of virtual system
US20130096880A1 (en) System test method
CN104364769A (zh) 处理器特性的运行时间检测监控
JP2015516602A (ja) ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム
US8904145B2 (en) Adjusting memory allocation of a partition using compressed memory paging statistics
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
TWI417786B (zh) 幫助一處理環境中之指令執行的方法、系統及程式產品
US7685381B2 (en) Employing a data structure of readily accessible units of memory to facilitate memory access
US9111034B2 (en) Testing of run-time instrumentation
KR20190076217A (ko) 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법
JP2005353020A (ja) コンピュータプログラムのシミュレーション方式
JP2005332110A (ja) シミュレーションシステム
Schlumpp Towards Three-Stage Parallelization of System Simulation
JP2024072010A (ja) プログラム、命令実行制御装置、及び命令実行制御方法
WO2017158786A1 (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
JP2013196241A (ja) 情報処理装置およびログ取得方法
JPWO2018163387A1 (ja) 解析装置、解析方法及び解析プログラム