TWI410864B - 在一處理環境中控制指令執行 - Google Patents
在一處理環境中控制指令執行 Download PDFInfo
- Publication number
- TWI410864B TWI410864B TW097103820A TW97103820A TWI410864B TW I410864 B TWI410864 B TW I410864B TW 097103820 A TW097103820 A TW 097103820A TW 97103820 A TW97103820 A TW 97103820A TW I410864 B TWI410864 B TW I410864B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- test group
- test
- processing
- routine
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 108
- 238000012360 testing method Methods 0.000 claims abstract description 174
- 238000000034 method Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 12
- 238000011156 evaluation Methods 0.000 claims description 8
- 238000004088 simulation Methods 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 4
- 239000000872 buffer Substances 0.000 description 19
- 230000009471 action Effects 0.000 description 10
- 238000013519 translation Methods 0.000 description 9
- 238000011084 recovery Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Description
本發明大體係關於在處理環境中之處理,且詳言之,係關於在處理環境中控制指令執行。
通常,在一指令流之執行期間,執行一單一指令,執行複數個測試,且接著執行下一個指令等。被執行之測試包括(例如)檢查是否正超過一頁界、檢查一特定處理模式(諸如,某些除錯模式)是否在作用中,及判定一適當的執行模式。在每一指令後執行此等測試以確保指令執行正確地繼續進行。
雖然此等測試之效能確保合適的指令執行,但其成本很高。亦即,在每一指令後此等測試之執行相當大地影響系統效能。
基於前述內容,存在對於流線處理之能力的需求,使得不太頻繁地執行測試。舉例而言,存在不必執行測試之時間。作為一實例,若在頁之開始時執行指令,則不必檢查頁界跨越。因此,存在對於允許在選定時間執行測試之能力的需求。另外,存在對於在不存在各種測試之效能的情況下使一指令能夠在另一指令後被處理之能力的需求。
經由提供一製品,先前技術之缺點得以克服且提供了額外優點,該製品包括具有用以控制指令執行之電腦可讀程式碼邏輯之至少一電腦可使用媒體。舉例而言,該電腦可
讀程式碼邏輯在執行時執行下列操作:執行一指令流之一指令常式;回應於執行該指令常式,使用一單一測試來判定處理待繼續至該指令流之另一指令常式還是偏離至一測試組;及回應於該判定,執行該另一指令常式或該測試組。
本文中亦描述及主張關於本發明之一或多個態樣之方法及系統。
藉由本發明之技術實現額外特徵及優點。本發明之其他實施例及態樣在本文中得以詳細描述且被考慮為所主張之本發明之一部分。
本發明之一或多個態樣經特定指出且在本說明書之結束處之申請專利範圍中作為實例清楚地主張。自以下結合附圖之詳細描述,本發明之前述及其他目標、特徵及優點係顯而易見的。
根據本發明之一態樣,提供在一處理環境中控制指令執行之能力。作為一實例,回應於通過一單一測試,主線指令流內之指令繼續被處理。然而,若測試失敗,則執行一測試組,而非主線流中之指令。
單一測試包括將一指令計數器與一變量比較,該變量在本文中被稱作範圍末端,其經選擇性地設定為一值。當不符合彼值時,繼續指令執行以繼續進行至主線指令流中之下一個指令。然而,當達到或超過該值後,則執行偏離至接著加以執行之一預定測試組。
在一實施例中,在一測試組之處理期間,一緩衝器可用
以有助於指令執行。舉例而言,當經處理時,某些指令需要特殊處置(例如,執行指令,及跨越頁界之指令)。為了有助於此處置,使用一緩衝器,其中複製目標指令,從而能夠對指令進行修改(若必要或需要)。
參看圖1描述併有且使用本發明之一或多個態樣的一處理環境之一實施例。在此實例中,處理環境100係基於一架構(其可被稱作本地架構),但仿真另一架構(其可被稱作客體架構)。作為實例,本地架構為由紐約Armonk的International Business Machines Corporation提供之Power4或PowerPC架構,或者由Intel Corporation提供之Intel架構;且客體架構為亦由紐約Armonk的InternationalBusiness 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 BusinessMachines 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 (19)
- 一種用於在一處理環境中控制指令執行之電腦程式產品,該電腦程式產品包含:一儲存媒體,其可由一處理器讀取且儲存用於由該處理器執行以實施一方法之指令,該方法包含:執行一指令流之一個指令常式;回應於執行該一個指令常式,使用一單一測試來判定處理待繼續至該指令流之另一指令常式還是偏離主線處理至一測試組;及回應於該判定,執行該另一指令常式或該測試組,其中回應於處理再次偏離主線處理,該執行之步驟執行該測試組且該測試組選擇待執行之一下一測試組。
- 如請求項1之電腦程式產品,其中該單一測試在該判定中使用一經動態設定之變量。
- 如請求項2之電腦程式產品,其中該變量經設定為一視經執行以設定該變量之一或多個測試結果而定的值,且其中該值在該指令流之執行期間係可改變的。
- 如請求項2之電腦程式產品,其中該使用該單一測試包含將該指令常式之一指令計數器與該變量之一值相比較,以判定如何繼續,其中基於該指令流之一處理階段設定該變量且回應於執行該指令流之一先前測試組而執行測試。
- 如請求項1之電腦程式產品,其中該測試組可由複數個指令常式使用,且使該複數個指令常式能夠無該測試組 之程式碼。
- 如請求項1之電腦程式產品,其中複數個測試組係可獲得的,且該方法進一步包含至少部分基於該處理環境之一評估而自該複數個測試組選擇該測試組。
- 如請求項6之電腦程式產品,其中該複數個測試組包含下列各項中之至少一者:一指令頁界跨越測試組、一I-PER提取測試組、一I-Step及adstop測試組、一開始及退出測試組,及一收集統計及決定執行模式測試組。
- 如請求項1之電腦程式產品,進一步包含:執行該處理環境之狀態的一評估;及至少部分基於該評估選擇該測試組。
- 如請求項1之電腦程式產品,其中該指令常式正仿真一客體架構之一或多個指令。
- 如請求項1之電腦程式產品,其中該處理環境包含一仿真環境,該處理環境係基於一架構且仿真與該一架構不同的另一架構。
- 如請求項10之電腦程式產品,其中該另一架構包含一z/架構,且該一架構包含一非z/架構。
- 如請求項1之電腦程式產品,其中該單一測試係包括於一與該指令常式相關聯之解碼/調度常式中,其中該指令流之每一指令常式具有一與其相關聯之分散的解碼/調度常式。
- 如請求項1之電腦程式產品,其中該另一指令常式可與該執行之指令常式相同或與該一個指令常式不同。
- 一種在一處理環境中控制指令執行之方法,該方法包含:執行一指令流之一個指令常式;回應於執行該一個指令常式,使用一單一測試來判定處理待繼續至該指令流之另一指令常式還是偏離主線處理至一測試組;及回應於該判定,執行該另一指令常式或該測試組,其中回應於處理再次偏離主線處理,該執行之步驟執行該測試組且該測試組選擇待執行之一下一測試組。
- 如請求項14之方法,其中該使用該單一測試包含將該指令常式之一指令計數器與一由該單一測試使用的變量之一值相比較,以判定如何繼續。
- 如請求項14之方法,其中該測試組可由複數個指令常式使用,且使該複數個指令常式能夠無該測試組之程式碼。
- 如請求項14之方法,進一步包含:執行該處理環境之狀態的評估;及至少部分基於該評估選擇該測試組。
- 如請求項14之方法,其中該指令常式正仿真一客體架構之一或多個指令。
- 一種用於在一處理環境中控制指令執行之電腦系統,該電腦系統包含:一記憶體;及與該記憶體通聯之一處理器,其中該電腦系統能夠執行如請求項14-18之任一項之方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/670,163 US7783867B2 (en) | 2007-02-01 | 2007-02-01 | Controlling instruction execution in a processing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200849089A TW200849089A (en) | 2008-12-16 |
TWI410864B true TWI410864B (zh) | 2013-10-01 |
Family
ID=39674541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097103820A TWI410864B (zh) | 2007-02-01 | 2008-01-31 | 在一處理環境中控制指令執行 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7783867B2 (zh) |
EP (1) | EP2115582B1 (zh) |
JP (1) | JP5443172B2 (zh) |
KR (1) | KR101013275B1 (zh) |
CN (1) | CN101601013B (zh) |
TW (1) | TWI410864B (zh) |
WO (1) | WO2008092778A2 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7882336B2 (en) * | 2007-02-01 | 2011-02-01 | International Business Machines Corporation | Employing a buffer to facilitate instruction execution |
US9430238B2 (en) | 2012-03-16 | 2016-08-30 | International Business Machines Corporation | Run-time-instrumentation controls emit instruction |
US9367316B2 (en) * | 2012-03-16 | 2016-06-14 | International Business Machines Corporation | Run-time instrumentation indirect sampling by instruction operation code |
US9442824B2 (en) * | 2012-03-16 | 2016-09-13 | International Business Machines Corporation | Transformation of a program-event-recording event into a run-time instrumentation event |
US9158660B2 (en) | 2012-03-16 | 2015-10-13 | International Business Machines Corporation | Controlling operation of a run-time instrumentation facility |
US9280447B2 (en) | 2012-03-16 | 2016-03-08 | International Business Machines Corporation | Modifying run-time-instrumentation controls from a lesser-privileged state |
US9405541B2 (en) | 2012-03-16 | 2016-08-02 | International Business Machines Corporation | Run-time instrumentation indirect sampling by address |
US9465716B2 (en) | 2012-03-16 | 2016-10-11 | International Business Machines Corporation | Run-time instrumentation directed sampling |
US9411591B2 (en) | 2012-03-16 | 2016-08-09 | International Business Machines Corporation | Run-time instrumentation sampling in transactional-execution mode |
US9483268B2 (en) * | 2012-03-16 | 2016-11-01 | International Business Machines Corporation | Hardware based run-time instrumentation facility for managed run-times |
US9250902B2 (en) | 2012-03-16 | 2016-02-02 | International Business Machines Corporation | Determining the status of run-time-instrumentation controls |
US9454462B2 (en) | 2012-03-16 | 2016-09-27 | International Business Machines Corporation | Run-time instrumentation monitoring for processor characteristic changes |
US9471315B2 (en) * | 2012-03-16 | 2016-10-18 | International Business Machines Corporation | Run-time instrumentation reporting |
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
US9582295B2 (en) | 2014-03-18 | 2017-02-28 | International Business Machines Corporation | Architectural mode configuration |
US10311228B2 (en) * | 2014-09-30 | 2019-06-04 | Apple Inc. | Using a fine-grained address space layout randomization to mitigate potential security exploits |
US10311227B2 (en) * | 2014-09-30 | 2019-06-04 | Apple Inc. | Obfuscation of an address space layout randomization mapping in a data processing system |
US11366800B2 (en) * | 2016-08-22 | 2022-06-21 | American Megatrends International, Llc | System and method to automate validating media redirection in testing process |
KR20240030359A (ko) * | 2022-08-30 | 2024-03-07 | 오픈엣지테크놀로지 주식회사 | 신경망에서의 연산방법 및 이를 위한 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037225A1 (en) * | 2000-12-28 | 2003-02-20 | Deng Brian Tse | Apparatus and method for microcontroller debugging |
TW200400468A (en) * | 2002-04-25 | 2004-01-01 | Ibm | Handling multiple operating system capabilities in a logical partition data processing system |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
TW200643790A (en) * | 2005-02-25 | 2006-12-16 | Silicon Storage Tech Inc | Integrated microcontroller and memory with secure interface between system program and user operating system and application |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463739A (en) * | 1992-12-22 | 1995-10-31 | International Business Machines Corporation | Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold |
US5560013A (en) | 1994-12-06 | 1996-09-24 | International Business Machines Corporation | Method of using a target processor to execute programs of a source architecture that uses multiple address spaces |
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
US20060015780A1 (en) * | 1995-10-25 | 2006-01-19 | Cityu Research Limited | Specifying data timeliness requirement and trap enabling on instruction operands of a processor |
US5960198A (en) * | 1997-03-19 | 1999-09-28 | International Business Machines Corporation | Software profiler with runtime control to enable and disable instrumented executable |
GB2329049B (en) * | 1997-09-09 | 2002-09-11 | Advanced Risc Mach Ltd | Apparatus and method for identifying exceptions when debugging software |
US7137105B2 (en) * | 1999-05-12 | 2006-11-14 | Wind River Systems, Inc. | Dynamic software code instrumentation method and system |
US6321329B1 (en) * | 1999-05-19 | 2001-11-20 | Arm Limited | Executing debug instructions |
US6880152B1 (en) | 1999-10-13 | 2005-04-12 | Transmeta Corporation | Method of determining a mode of code generation |
JP3652956B2 (ja) * | 2000-04-25 | 2005-05-25 | 北陸日本電気ソフトウェア株式会社 | エミュレーション装置 |
US6381672B1 (en) | 2000-05-11 | 2002-04-30 | Advanced Micro Devices, Inc. | Speculative opening of a new page when approaching page boundary during read/write of isochronous streams |
US6829701B2 (en) * | 2000-12-15 | 2004-12-07 | Intel Corporation | Watchpoint engine for a pipelined processor |
GB0125628D0 (en) * | 2001-10-25 | 2001-12-19 | Ibm | Computer system with watchpoint support |
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 |
-
2007
- 2007-02-01 US US11/670,163 patent/US7783867B2/en active Active
-
2008
- 2008-01-22 JP JP2009547640A patent/JP5443172B2/ja active Active
- 2008-01-22 CN CN2008800038815A patent/CN101601013B/zh active Active
- 2008-01-22 KR KR1020097010817A patent/KR101013275B1/ko active IP Right Grant
- 2008-01-22 EP EP08708092.5A patent/EP2115582B1/en active Active
- 2008-01-22 WO PCT/EP2008/050727 patent/WO2008092778A2/en active Application Filing
- 2008-01-31 TW TW097103820A patent/TWI410864B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US20030037225A1 (en) * | 2000-12-28 | 2003-02-20 | Deng Brian Tse | Apparatus and method for microcontroller debugging |
TW200400468A (en) * | 2002-04-25 | 2004-01-01 | Ibm | Handling multiple operating system capabilities in a logical partition data processing system |
TW200643790A (en) * | 2005-02-25 | 2006-12-16 | Silicon Storage Tech Inc | Integrated microcontroller and memory with secure interface between system program and user operating system and application |
Also Published As
Publication number | Publication date |
---|---|
CN101601013B (zh) | 2012-10-03 |
WO2008092778A4 (en) | 2008-12-31 |
CN101601013A (zh) | 2009-12-09 |
EP2115582B1 (en) | 2019-04-10 |
US20080189529A1 (en) | 2008-08-07 |
KR101013275B1 (ko) | 2011-02-09 |
WO2008092778A2 (en) | 2008-08-07 |
TW200849089A (en) | 2008-12-16 |
JP2010518471A (ja) | 2010-05-27 |
EP2115582A2 (en) | 2009-11-11 |
KR20090084896A (ko) | 2009-08-05 |
WO2008092778A3 (en) | 2008-11-13 |
JP5443172B2 (ja) | 2014-03-19 |
US7783867B2 (en) | 2010-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI410864B (zh) | 在一處理環境中控制指令執行 | |
JP5988444B2 (ja) | 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム | |
US10360322B2 (en) | Simulation of virtual processors | |
US8887139B2 (en) | Virtual system and method of analyzing operation of virtual system | |
GB2249414A (en) | Predicting the performance of a computer system | |
US20130096880A1 (en) | System test method | |
CN104364769A (zh) | 处理器特性的运行时间检测监控 | |
US7685381B2 (en) | Employing a data structure of readily accessible units of memory to facilitate memory access | |
TWI417786B (zh) | 幫助一處理環境中之指令執行的方法、系統及程式產品 | |
CN102037448A (zh) | 主机数据处理设备内的装置仿真支持 | |
US9111034B2 (en) | Testing of run-time instrumentation | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 | |
CN111338761B (zh) | 一种51单片机虚拟中断控制器及实现方法 | |
CN114765051A (zh) | 内存测试方法及装置、可读存储介质、电子设备 | |
JP2005353020A (ja) | コンピュータプログラムのシミュレーション方式 | |
CN108604205B (zh) | 测试点的创建方法,装置和系统 | |
JP2005332110A (ja) | シミュレーションシステム | |
JP6239212B1 (ja) | シミュレーション装置、シミュレーション方法及びシミュレーションプログラム | |
WO2018163387A1 (ja) | 解析装置、解析方法及び解析プログラム | |
CN117251118A (zh) | 支持虚拟NVMe仿真与集成方法及系统 |