專利名稱:在處理環(huán)境中控制指令執(zhí)行的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及處理環(huán)境中的處理,具體地,涉及在處理環(huán)境中控制指
令執(zhí)行。
背景技術(shù):
通常,在指令流的執(zhí)行期間,執(zhí)行單個(gè)指令,進(jìn)行多個(gè)測(cè)試,且接著執(zhí) 行下一個(gè)指令等。被進(jìn)行的測(cè)試包括例如檢查是否正跨越頁(yè)邊界、檢查特定
處理模式(諸如,某些調(diào)試模式)是否在作用中(active),以及確定適當(dāng)?shù)?執(zhí)行模式。在每一指令后進(jìn)行這些測(cè)試以確保指令執(zhí)行正確地繼續(xù)進(jìn)行。
雖然這些測(cè)試的進(jìn)行確保合適的指令執(zhí)行,但其成本很高。即,在每一 指令后這些測(cè)試的執(zhí)行相當(dāng)大地影響系統(tǒng)性能。
發(fā)明內(nèi)容
基于前述內(nèi)容,存在對(duì)于使處理流線化(streamline)的能力的需求,使得 不太頻繁地進(jìn)行測(cè)試。舉例而言,存在不必進(jìn)行測(cè)試的時(shí)間。作為一示例, 如果被執(zhí)行的指令處于頁(yè)的開(kāi)始,則不必檢查頁(yè)邊界跨越。因此,存在對(duì)于 允許在選定時(shí)間進(jìn)行測(cè)試的能力的需求。另外,存在對(duì)于在不進(jìn)行各種測(cè)試 的情況下使一指令能夠在另一指令后被處理的能力的需求。
通過(guò)提供如權(quán)利要求l所述的方法、相應(yīng)系統(tǒng)和計(jì)算機(jī)程序,先前技術(shù)的 缺點(diǎn)得以克服且提供了額外優(yōu)點(diǎn),
通過(guò)本發(fā)明的技術(shù)來(lái)實(shí)現(xiàn)額外的特征以及優(yōu)點(diǎn)。本發(fā)明的其它實(shí)施例以 及方面在這里得以詳細(xì)描述且被考慮為所請(qǐng)求保護(hù)的本發(fā)明的一部分。
本發(fā)明的一個(gè)或多個(gè)方面被特別指出,并且被清楚地主張為說(shuō)明書(shū)的結(jié) 論處的權(quán)利要求中的示例。依據(jù)結(jié)合附圖進(jìn)行的下列詳細(xì)描述,本發(fā)明的上 述和其它目標(biāo)、特征和優(yōu)點(diǎn)是顯而易見(jiàn)的,在所述附圖中圖l描繪了合并且使用本發(fā)明的 一個(gè)或多個(gè)方面的處理環(huán)境的 一 實(shí)施例; 圖2描繪了根據(jù)本發(fā)明一方面的、圖1的處理環(huán)境的系統(tǒng)架構(gòu)的一實(shí)施例; 圖3描繪了根據(jù)本發(fā)明 一 方面的、圖2的系統(tǒng)架構(gòu)的仿真器的 一 實(shí)施例的 進(jìn)一步細(xì)節(jié);
圖4A描繪了根據(jù)本發(fā)明一方面的、圖3的仿真器的中央處理單元(CPU)實(shí) 現(xiàn)的 一 實(shí)施例的進(jìn)一 步細(xì)節(jié);
圖4B描繪了根據(jù)本發(fā)明 一方面的、圖4A的CPU實(shí)現(xiàn)的解譯器代碼 (interpreter code )的 一 實(shí)施例的進(jìn)一 步細(xì)節(jié);
圖5描繪了根據(jù)本發(fā)明 一方面的指令執(zhí)行的流程的 一 實(shí)施例;
圖6描繪了根據(jù)本發(fā)明 一 方面的、與執(zhí)行指令流相關(guān)聯(lián)的邏輯的 一 實(shí)施
例;
圖7描繪了根據(jù)本發(fā)明一方面的、與處理圖6的測(cè)試組相關(guān)聯(lián)的邏輯的一 實(shí)施例;以及
圖8描繪了合并本發(fā)明 一個(gè)或多個(gè)方面的計(jì)算機(jī)程序產(chǎn)品的 一 實(shí)施例。
具體實(shí)施例方式
根據(jù)本發(fā)明的一方面,提供在處理環(huán)境中控制指令執(zhí)行的能力。作為一 示例,響應(yīng)于通過(guò)單個(gè)測(cè)試,主線(mainline)指令流內(nèi)的指令繼續(xù)被處理。然 而,如果測(cè)試失敗,則4丸行測(cè)試組(test set),而非主線流中的指令。
單個(gè)測(cè)試包括將指令計(jì)數(shù)器與變量比較,該變量在本文中被稱作范圍末 端(end-of-range),其被選擇性地設(shè)置為一值。當(dāng)不滿足該值時(shí),指令執(zhí)行繼 續(xù)進(jìn)行至主線指令流中的下一個(gè)指令。然而,當(dāng)達(dá)到或超過(guò)該值時(shí),執(zhí)行 (execution )轉(zhuǎn)到預(yù)定測(cè)試組,接下來(lái)執(zhí)行該預(yù)定測(cè)試組。
在一實(shí)施例中,在測(cè)試組的處理期間,可采用緩沖器以有助于指令執(zhí)行。 舉例而言,當(dāng)被處理時(shí),某些指令需要特殊處置(例如,執(zhí)行指令,以及跨越 頁(yè)邊界的指令)。為了有助于此處置,使用緩沖器,在其中復(fù)制目標(biāo)指令,從 而能夠?qū)χ噶钸M(jìn)行修改(若必要或需要)。
參看圖l,描述了合并且使用本發(fā)明的一個(gè)或多個(gè)方面的處理環(huán)境的一實(shí) 施例。在此示例中,處理環(huán)境100基于一架構(gòu)(其可被稱作本地架構(gòu)),但仿真 另一架構(gòu)(其可被稱作客戶機(jī)架構(gòu))。作為示例,本地架構(gòu)是由紐約Armonk的 International Business Machines Corporation提供的Power4或PowerPC⑧架構(gòu),或者由Intel Corporation提供的Inte產(chǎn)架構(gòu);并且,客戶機(jī)架構(gòu)是也由紐約Armonk 的International Business Machines Corporation提供的z/Architecture 。 z/Architecture 的各方面描述于2005年9月的IBM公告第SA22-7832-04號(hào) "z/Architecture Principles of Operation"中,該公告的全部?jī)?nèi)容以引用的方式
并入本文中。
舉例而言,處理環(huán)境100包括經(jīng)由例如一個(gè)或多個(gè)總線108相互耦接的本 地處理器102(例如,中央處理單元(CPU))、存儲(chǔ)器104(例如,主存儲(chǔ)器)以及 一個(gè)或多個(gè)輸入/輸出(I/0)裝置106。作為示例,處理器102是由紐約Armonk 的International Business Machines Corporation (IBM⑧)提供的pSeries⑧月良務(wù)器的 一部分。IBM 、 pSeries 、 PowerPC⑧以及z/Architecture⑧是美國(guó)紐約Armonk 的International Business- Machines Corporation的注冊(cè)商標(biāo)。Intel 是Intel Corporation的注冊(cè)商標(biāo)。本文中使用的其它名稱可以是International Business Machines Corporation或其它公司的注冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱。
本地中央處理單元102包括在該環(huán)境內(nèi)的處理期間^吏用的一個(gè)或多個(gè)本 地寄存器110,諸如, 一個(gè)或多個(gè)通用寄存器和/或一個(gè)或多個(gè)專用寄存器。 這些寄存器包括表示在任一特定時(shí)間點(diǎn)時(shí)的環(huán)境狀態(tài)的信息。
為了提供仿真,將處理環(huán)境構(gòu)建為包括仿真器、客戶機(jī)操作系統(tǒng)以及一 個(gè)或多個(gè)客戶機(jī)應(yīng)用程序。參看圖2來(lái)進(jìn)一步描述這些構(gòu)建的特征。
參看圖2,描述處理環(huán)境100的系統(tǒng)架構(gòu)200的一實(shí)施例。舉例而言,系統(tǒng) 架構(gòu)200包括多個(gè)實(shí)現(xiàn)層,它們定義該環(huán)境的構(gòu)建的各方面。在此特定示例中, 作為示例,這些層包括硬件202,其經(jīng)由一個(gè)或多個(gè)接口和/或控制器耦接 至存儲(chǔ)器204以及輸入/輸出裝置和/或網(wǎng)絡(luò)206;主機(jī)操作系統(tǒng)208;仿真器210; 客戶機(jī)操作系統(tǒng)212;以及一個(gè)或多個(gè)客戶沖幾應(yīng)用程序214。經(jīng)由一個(gè)或多個(gè) 接口將一層耦接至至少一個(gè)其它層。舉例而言,經(jīng)由至少一個(gè)接口將客戶機(jī) 應(yīng)用程序214耦接至客戶機(jī)操作系統(tǒng)212。其它接口用以耦接其它層。此外, 該架構(gòu)還可以包括其它層和/或接口 。下面進(jìn)一步描述圖2中描繪的各種層。
硬件202是處理環(huán)境的本地架構(gòu),且基于例如Power4、 PowerPC 、 Intel 或其它架構(gòu)。在該石更件上運(yùn)行的是主機(jī)操作系統(tǒng)202,諸如由International Business Machines Corporation提供的AIX⑧,或者LINUX。 AIX②是紐約Armonk 的International Business Machines Corporation的注冊(cè)商才示。
仿真器210包括用以仿真與本地架構(gòu)不同的架構(gòu)的許多組件。在此實(shí)施例中,正被仿真的架構(gòu)是由International Business Machines Corporation提供的 z/Architecture ,但也可以仿真其它架構(gòu)。該仿真使得客戶機(jī)操作系統(tǒng)212(例 如,z/OS , International Business Machines Corporation的注冊(cè)商標(biāo))能夠在本 地架構(gòu)上執(zhí)行,并且能夠支持一個(gè)或多個(gè)客戶機(jī)應(yīng)用程序214(例如,Z應(yīng)用程 序)。參看圖3描述關(guān)于仿真器210的進(jìn)一步細(xì)節(jié)。參看圖3,仿真器210包括耦接至一個(gè)或多個(gè)ill務(wù)進(jìn)程(process) 302的共 享存儲(chǔ)器300、輸入/輸出(I/0)實(shí)現(xiàn)(implementation) 304以及中央處理單元 (CPU)實(shí)現(xiàn)306,下面進(jìn)一步詳細(xì)描述其中的每一個(gè)。共享存儲(chǔ)器300表示主機(jī)中的存儲(chǔ)器的、從服務(wù)進(jìn)程302、 1/O實(shí)現(xiàn)304以及 CPU實(shí)現(xiàn)306可見(jiàn)的一部分。其是存儲(chǔ)區(qū)域,在其中獨(dú)立的進(jìn)程(例如,服務(wù) 進(jìn)程、1/0實(shí)現(xiàn)、CPU實(shí)現(xiàn))通過(guò)讀取數(shù)據(jù)以及將數(shù)據(jù)存儲(chǔ)至共享存儲(chǔ)器內(nèi)來(lái)通 信。作為一示例,共享存儲(chǔ)器包括多個(gè)區(qū)(region),這些區(qū)包括例如系統(tǒng)全 局信息、CPU上下文(context)和信息、仿真的主要存儲(chǔ)設(shè)備、仿真的主要存儲(chǔ)設(shè)備密鑰以及子信道(即,表示i/o裝置的數(shù)據(jù)結(jié)構(gòu))。服務(wù)進(jìn)程302包括一個(gè)或多個(gè)進(jìn)程,用以建立CPU以及一個(gè)或多個(gè)其它進(jìn) 程,以及提供構(gòu)建的操作者功能程序(operator facility),諸如,開(kāi)始、停止、 重置、初始程序加載(IPL)等。其也可以提供其它功能,諸如,仿真的系統(tǒng)功 能程序的顯示或更改、獲得/釋放共享資源、其它維護(hù)命令等。輸入/輸出實(shí)現(xiàn)304包括例如一個(gè)或多個(gè)子信道進(jìn)程以及用以與1/0裝置通 信的I/0控制器。在本發(fā)明的一方面中,1/0控制器負(fù)責(zé)開(kāi)始子信道進(jìn)程以及執(zhí) 行恢復(fù)。中央處理單元(CPU)實(shí)現(xiàn)306負(fù)責(zé)執(zhí)行指令以及管理處理。其包括參看圖 4A至圖4B描述的許多組件。參看圖4A, CPU實(shí)現(xiàn)306包括例如解譯器代碼400,其用以獲得、轉(zhuǎn)譯 以及執(zhí)行指令;構(gòu)建的協(xié)處理器402,其輔助初始啟動(dòng)以及與芯片(例如,月l 務(wù)調(diào)用邏輯處理器(SCLP)進(jìn)程)的通信;以及定時(shí)功能程序404,其負(fù)責(zé)仿真 器的定時(shí)功能。參看圖4B描述關(guān)于解譯器代碼400的進(jìn)一步細(xì)節(jié)。解譯器代碼400包括例如解譯單元420,該解譯單元420耦接至存儲(chǔ)器訪問(wèn) 單元422、 CPU控制426、異步中斷處理程序(handler) 428以及同步中斷處理 程序430。解譯單元420負(fù)責(zé)從存儲(chǔ)器獲得一個(gè)或多個(gè)客戶機(jī)指令、針對(duì)客戶機(jī)指令提供本地指令以及執(zhí)行本地指令??蛻魴C(jī)指令包含經(jīng)開(kāi)發(fā)以在除了本地CPU102的架構(gòu)之外的架構(gòu)中執(zhí)行的軟件指令(例如,機(jī)器指令)。舉例而言,客戶機(jī)指令可已經(jīng)設(shè)計(jì)為在2/八1"^1&^1 ^@處理器上執(zhí)行,但替代地在本地CPU102上仿真,本地CPU 102可為例如口861^3@服務(wù)器。在一示例中,本地指令的提供包括選擇仿真器中與客戶機(jī)指令相關(guān)聯(lián)的 代碼段。舉例而言,每一客戶機(jī)指令在仿真器中具有相關(guān)聯(lián)的代碼段,其包 括一個(gè)或多個(gè)本地指令的序列,并且,選擇該代碼段以被執(zhí)行。在另 一示例中,該提供包括在例如轉(zhuǎn)譯進(jìn)程期間針對(duì)給定客戶機(jī)指令來(lái) 建立本地指令流。這包括識(shí)別該功能以及建立等效的本地指令。如果指令包括存儲(chǔ)器訪問(wèn),則存儲(chǔ)器訪問(wèn)例程422用以訪問(wèn)共享存儲(chǔ)器 300。存儲(chǔ)器訪問(wèn)例程可使用轉(zhuǎn)譯機(jī)制(諸如,動(dòng)態(tài)地址轉(zhuǎn)譯(DAT)432或訪問(wèn) 寄存器轉(zhuǎn)譯(ART)434)來(lái)將邏輯地址轉(zhuǎn)譯為絕對(duì)地址,該絕對(duì)地址接著用以訪 問(wèn)存儲(chǔ)器或者可進(jìn)一步加以轉(zhuǎn)譯(若需要)。在此實(shí)施例中,要使解譯單元420中的處理流線化。因此,如果出現(xiàn)更復(fù) 雜的情況,諸如,等待狀態(tài)或者從一架構(gòu)級(jí)改變至另一架構(gòu)級(jí)(例如, z/Architectm^至ESA/390)等,則控制轉(zhuǎn)移至CPU控制426,其處置該事件且接 著使控制返回至解譯單元420。此外,如果發(fā)生中斷,則處理從解譯單元420過(guò)渡至異步中斷處理程序 428(若其為異步中斷)或者同步中斷處理程序430(若其為同步中斷)。在處置了 中斷后,處理返回至解譯單元420。具體地,解譯單元監(jiān)視共享存儲(chǔ)器中的某些位置,并且,如果位置已改 變,則其表示中斷已由CPU或I/0中的一個(gè)設(shè)置。因此,解譯單元調(diào)用適當(dāng)?shù)?中斷處理程序。參看圖5,描述關(guān)于解譯單元420的進(jìn)一步的細(xì)節(jié)。具體地,圖5描繪了與 解譯單元相關(guān)聯(lián)的處理流程的一實(shí)施例。在此實(shí)施例中,由于每一指令例程具有相關(guān)聯(lián)的解碼/調(diào)度(dispatch)例程(即,無(wú)中央控制),所以認(rèn)為該處理 流程是線狀的(threaded )。在一實(shí)施例中,此流程正執(zhí)4亍正在仿真 z/Architecture②的指令。參看圖5,其示出處理流程500包括兩個(gè)部分, 一個(gè)在本文中被稱作主線 處理502,以及另一個(gè)被稱作測(cè)試組處理504。主線處理是流線化處理,在其 中處理從一指令例程繼續(xù)進(jìn)行至另 一指令例程,而并不進(jìn)行指令間的大量測(cè)試。在此實(shí)施例中,在指令執(zhí)行之間進(jìn)行的唯一測(cè)試是簡(jiǎn)單測(cè)試,其確定主 線處理是否要繼續(xù)、或者處理是否要轉(zhuǎn)到測(cè)試組。如果要進(jìn)行進(jìn)一步的測(cè)試或需要其它動(dòng)作,則處理退出主線處理,且進(jìn)入測(cè)試組處理504。 一旦進(jìn)行了 這些測(cè)試或其它處理,則處理在主線處理中重新開(kāi)始(resume )。期望在大多 數(shù)時(shí)間,處理將保持處于主線處理中。在一實(shí)施例中,在進(jìn)入主線處理前,進(jìn)行某一初始化。舉例而言,將指 針輸入至解譯單元420(圖4B),該指針指示包括要執(zhí)行的指令流的特定文件或 存儲(chǔ)器區(qū)域。此指令流包括例如要在本地處理器上執(zhí)行的Z指令。除了將指針提供至指令流之外,還提供用于指令流的指令計(jì)數(shù)器、以及 與正被仿真的處理環(huán)境相關(guān)聯(lián)的狀態(tài)(例如,Z狀態(tài))。該狀態(tài)包括各種寄存器 以及標(biāo)志,它們指示例如指令程序事件記錄(I-PER)模式是否在作用中、I-STEP 或ADSTOP是否在作用中、當(dāng)前執(zhí)行模式等。評(píng)估該狀態(tài),并且基于該評(píng)估 來(lái)選擇測(cè)試組處理504(圖5)的測(cè)試組中的一個(gè)。舉例而言,如果I-PER模式在 作用中,則可選擇PER測(cè)試組。將指針設(shè)置至選定的測(cè)試組,且處理在該測(cè) 試組處繼續(xù)。執(zhí)行選定的測(cè)試組,其可包括進(jìn)行一個(gè)或多個(gè)測(cè)試和/或一個(gè)或多個(gè)動(dòng)作, 如下面描述的。在測(cè)試組中,如果處理再次轉(zhuǎn)到主線處理,則作出關(guān)于接下 來(lái)選擇哪個(gè)測(cè)試組的決定。另外,設(shè)置一變量(范圍末端),其用于單個(gè)測(cè)試 中以確定是否繼續(xù)主線處理。如下面進(jìn)一步詳細(xì)描述的,基于正進(jìn)行的測(cè)試 以及指令流的處理階段來(lái)設(shè)置此變量。在執(zhí)行了測(cè)試組后,處理繼續(xù)至主線處理的指令例程506,其由測(cè)試組確 定。當(dāng)完成了選定的指令例程時(shí),控制在與選定的指令例程506相關(guān)聯(lián)的解碼 /調(diào)度例程508處繼續(xù)。解碼/調(diào)度例程讀取下一個(gè)操作碼(opcode)的指令流,且繼續(xù)進(jìn)行至該 指令或轉(zhuǎn)到測(cè)試組。舉例而言,在解碼/調(diào)度例程中,進(jìn)行單個(gè)測(cè)試以確定流 線化主線處理是否繼續(xù)、或者處理是否臨時(shí)轉(zhuǎn)到測(cè)試組處理。即,在解碼/調(diào) 度點(diǎn)處,進(jìn)行測(cè)試以確定是否需要更復(fù)雜的處理、或者處理是否可保持于主 要的線內(nèi)(inline)流中。如果需要更復(fù)雜的處理,則在進(jìn)展至指令例程前, 在預(yù)定測(cè)試組中人工修改指令周?chē)那闆r以使其簡(jiǎn)單,因?yàn)橹噶罾碳俣ㄇ?形是簡(jiǎn)單的。舉例而言,指令流假定其可從物理上相鄰的位置提取指令。如 果解碼/調(diào)度指示因?yàn)橹噶羁缭巾?yè)邊界,所以其不可能,則處理繼續(xù)至在其中執(zhí)行額外處理的測(cè)試組。存在可被選擇用于包括例如下列各項(xiàng)處理的各種測(cè)試組指令頁(yè)邊界跨 越(Instruction Page Boundary Crossing ) 510、恢復(fù)(Recover)511 、 I-PER提耳又 (Fetch)512、 I-Step以及Adstop 514、開(kāi)始以及退出(Start and Exit)516以及收集 統(tǒng)計(jì)決定執(zhí)行模式(Collect Statistics Decide Execution Mode)(JIT才莫式)518。雖 然提供這些測(cè)試組作為示例,但可使用額外的、較少或不同的測(cè)試組。每個(gè) 測(cè)試組可包括在返回至主線處理前要被執(zhí)行的一個(gè)或多個(gè)動(dòng)作。以下描述關(guān) 于測(cè)試組的進(jìn)一步細(xì)節(jié)。可被選擇的一個(gè)測(cè)試組是指令頁(yè)邊界跨越測(cè)試組510,其用以確定指令是 否正跨越頁(yè)邊界。當(dāng)指令靠近頁(yè)(或其它指定的存儲(chǔ)器單元)的末端時(shí),調(diào)用此 測(cè)試組。舉例而言,將范圍末端變量設(shè)置為例如等于頁(yè)末端減4字節(jié)的值。在 與剛完成的指令例程相關(guān)聯(lián)的解碼/調(diào)度例程中,將范圍末端值與指令計(jì)數(shù)器 相比較,以確定指令是否靠近頁(yè)末端。如果滿足此單個(gè)測(cè)試,則在此示例中, 調(diào)用測(cè)試組510。在測(cè)試組510中,進(jìn)行測(cè)試以確定該指令是否跨越一個(gè)以上頁(yè)。作為一示 例,如果該頁(yè)仍具有4個(gè)字節(jié)且指令僅為2個(gè)字節(jié),則指令仍位于該頁(yè)上。因 此,處理在執(zhí)行該指令的主線處理中重新開(kāi)始。然而,如果指令是6個(gè)字節(jié)且 該指令的僅4個(gè)字節(jié)處于一頁(yè)上,則確定該指令正跨越頁(yè)邊界。由于指令的最 后2個(gè)字節(jié)在邏輯上是相鄰的,但在物理上不相鄰,所以執(zhí)行處理,以便獲得 最后2個(gè)字節(jié)且提供6個(gè)字節(jié),如同它們?cè)谖锢砩鲜窍噜彽?。獲得6個(gè)字節(jié),如 同它們處于物理上相鄰的存儲(chǔ)器中,且它們被提供至要被執(zhí)行的適當(dāng)指令例 程(經(jīng)由指針)。如上所述,代替在主線處理中的每一指令內(nèi)進(jìn)行頁(yè)邊界跨越測(cè)試,僅當(dāng) 需要或必要時(shí)執(zhí)行此測(cè)試。即,僅當(dāng)確定指令靠近頁(yè)的末端時(shí)執(zhí)行此測(cè)試。另一測(cè)試組是恢復(fù)測(cè)試組511。當(dāng)需要對(duì)指令的特殊處置時(shí),調(diào)用此測(cè)試 組,如以下進(jìn)一步詳細(xì)描述的。在一示例中,存儲(chǔ)各種變量的值,且隨后改 變這些變量。接著使用恢復(fù)(Recover)以將這些變量返回至保存的值。另 一測(cè)試組是I-PER提取測(cè)試組512。 PER監(jiān)視是監(jiān)視某些程序事件(諸如, 從指定的存儲(chǔ)區(qū)域提取指令)的z/Architected(架構(gòu))調(diào)試(debugging)工具。當(dāng) 范圍末端值指示I-PER模式要開(kāi)始時(shí),使用此測(cè)試組。舉例而言,如果PERj3i 視要在頁(yè)的中間開(kāi)始,且范圍末端變量與指令計(jì)數(shù)器的比較指示頁(yè)的中間以及PERJ^視要開(kāi)始,則調(diào)用此測(cè)試組且執(zhí)行與PER相關(guān)聯(lián)的處理。另 一測(cè)試組是I-Step以及Adstop測(cè)試組514。 I-Step以及Adstop是構(gòu)建的 z/Architecture②中的調(diào)試工具。對(duì)于I-Step,將處理器置于跨過(guò)單個(gè)指令且接著 進(jìn)入至?xí)和顟B(tài)的模式下。在暫停狀態(tài)期間,檢驗(yàn)機(jī)器的狀態(tài)。舉例而言, 手動(dòng)讀取這些寄存器,且其后,發(fā)出連續(xù)的I-Step模式。對(duì)于要被調(diào)用的I-Step 測(cè)試組,范圍末端變量與指令計(jì)數(shù)器一致。在執(zhí)行任何種類的指令后,指令 計(jì)數(shù)器將立即超過(guò)范圍末端,因此,人工地將范圍末端設(shè)置為零。因此,在 每個(gè)指令后,程序執(zhí)行立即進(jìn)入至測(cè)試區(qū)塊。其將進(jìn)入至?xí)和顟B(tài),等待用 戶交互,且隨后繼續(xù)。Adstop是當(dāng)指令地址處于特定范圍內(nèi)時(shí)的停止。其類似于PER模式。 另 一測(cè)試組是開(kāi)始以及退出測(cè)試組。當(dāng)要將控制轉(zhuǎn)移至CPU控制以及返 回時(shí),使用此測(cè)試組。當(dāng)程序執(zhí)行從一個(gè)架構(gòu)模式改變至另一架構(gòu)模式時(shí), 退出此流程,且控制依據(jù)CPU控制而繼續(xù)。作為一示例,為了調(diào)用此測(cè)試組, 將范圍末端變量設(shè)置為零。收集統(tǒng)計(jì)/決定執(zhí)行模式測(cè)試組518用以確定要使用哪個(gè)模式用于執(zhí)行。此 測(cè)試組收集使用統(tǒng)計(jì),且基于該統(tǒng)計(jì)選擇執(zhí)行模式。執(zhí)行模式的示例包括 解譯模式(返回至主線處理502);記錄模式,在該4莫式下,將每個(gè)執(zhí)行的指令 復(fù)制至緩沖器;以及轉(zhuǎn)譯模式,當(dāng)先前已轉(zhuǎn)譯了地址時(shí),使用該轉(zhuǎn)譯模式。 作為一示例,為了調(diào)用此測(cè)試組,將范圍末端變量設(shè)置為零。這允許在每個(gè) 指令后處理此測(cè)試組。雖然在以上測(cè)試組中,指示主要的測(cè)試或動(dòng)作,但每個(gè)測(cè)試組可包括其 它動(dòng)作。舉例而言,除了主要的測(cè)試或動(dòng)作之外,每個(gè)測(cè)試組還可以檢查例 如是否正進(jìn)行指令頁(yè)邊界跨越或者中斷是否待決(pending )。也存在許多其 它示例。參看圖6,描述關(guān)聯(lián)于由解譯器420處理指令流的進(jìn)一步細(xì)節(jié)。 初始地,將指向指令流的指針連同與該指令流相關(guān)聯(lián)的指令計(jì)數(shù)器以及 狀態(tài)輸入至解譯器420,步驟600。狀態(tài)包括例如寄存器,其包括浮點(diǎn)、一 般(general )、控制和/或?qū)ぶ芳拇嫫?,作為示例;以及?biāo)志,其指示例如PER 模式在作用中、I-Step在作用中等。評(píng)估此狀態(tài),步驟602?;谠u(píng)估,選擇測(cè)試組中的一個(gè),且開(kāi)始該測(cè)試組的處理,步驟604。預(yù) 確定此測(cè)試組,其中該評(píng)估指示處理要以特定測(cè)試組開(kāi)始。在該測(cè)試組中,取決于測(cè)試組而進(jìn)行某些動(dòng)作。另外,測(cè)試組確定下一個(gè)要被調(diào)用(若需要) 的測(cè)試組,且設(shè)置測(cè)試組指針以指向該下一個(gè)測(cè)試組。取決于在該測(cè)試組中進(jìn)行的評(píng)估(例如,PER在作用中、靠近一頁(yè)邊界跨越、I-Step在作用中等), 下一個(gè)測(cè)試ia可為相同測(cè)試組或不同測(cè)試組。響應(yīng)于執(zhí)行測(cè)試組,流程繼續(xù)進(jìn)行至主線處理中選定的指令例程,且執(zhí) 行該例程,步驟606。在一示例中,例程包括一個(gè)指令;爿f旦在其它示例中,其 可包括多個(gè)指令。當(dāng)指令例程完成時(shí),處理以與指令例程相關(guān)聯(lián)的解碼/調(diào)度 例程而繼續(xù),步驟608。在解碼/調(diào)度處,進(jìn)行單個(gè)測(cè)試,以確定處理要繼續(xù) 至下一個(gè)指令還是轉(zhuǎn)到測(cè)試組,步驟610。此單個(gè)測(cè)試是關(guān)于是否已滿足范圍 末端的值的檢查。如果尚未滿足該值(詢問(wèn)(INQUIRY) 612),則處理以主 線執(zhí)行繼續(xù),步驟606。否則,處理轉(zhuǎn)到預(yù)定測(cè)試組,步驟614,且處理該測(cè) 試組,步驟616。處理隨后以下一個(gè)要處理的指令例程繼續(xù),如由測(cè)試組指示 的。參看圖7,描述關(guān)于處理測(cè)試組的額外細(xì)節(jié)。在測(cè)試組的處理期間,可執(zhí) 行包括特殊處置的指令。為了有助于處置這樣的指令,使用緩沖器,如下所 述。參看圖7,開(kāi)始測(cè)試組的處理,且遇到指令,步驟700。進(jìn)行關(guān)于此指令 是否是需要特殊處置的類型的確定,詢問(wèn)702。舉例而言,進(jìn)行關(guān)于該指令是 否是執(zhí)行指令或跨越頁(yè)邊界的指令的檢查。如果其為需要特殊處置的指令, 則使用緩沖器。此緩沖器是駐留于處理器的本地存儲(chǔ)器中的臨時(shí)緩沖器。舉 例而言,如果該指令是執(zhí)行指令(其為指定要被執(zhí)行的目標(biāo)指令的Z指令), 則將目標(biāo)指令加載至經(jīng)緩沖的存儲(chǔ)器位置中,步驟704。通過(guò)將目標(biāo)指令復(fù)制 至緩沖器,可修改與該指令相關(guān)聯(lián)的至少一方面,步驟706。舉例而言,假定 目標(biāo)指令是移動(dòng)字符(MVC)指令,且要修改要被移動(dòng)的字節(jié)的數(shù)目(如在指令 中指定)。該指令被復(fù)制至緩沖器,且被修改以指示要被移動(dòng)的字節(jié)的數(shù)目。 舉例而言,如果要被移動(dòng)的字節(jié)的原始數(shù)目是4個(gè)字節(jié),則可將此改變至另一 值,諸如,8個(gè)字節(jié)。因此,代替移動(dòng)4個(gè)字節(jié),修改目標(biāo)指令以移動(dòng)8個(gè)字節(jié) (或任何其它數(shù)目的字節(jié))。作為另一示例,假定該指令是跨越頁(yè)邊界的指令。在此情況下,目標(biāo)指 令是要被執(zhí)行的指令,并且在邏輯上相鄰但在物理上不相鄰,將該指令的字 節(jié)復(fù)制至緩沖器以使它們?cè)谖锢砩舷噜彙Ee例而言,將該指令位于一頁(yè)上的第 一組字節(jié)復(fù)制至緩沖器,并且還將該指令在另 一 頁(yè)上的剩余字節(jié)復(fù)制至緩沖器,步驟704。在此示例中,不必修改該指令,且因此,省略步驟706。在初始化緩沖器后,執(zhí)行各種任務(wù),作為正被處理的測(cè)試組的一部分。 舉例而言,這些任務(wù)包括將指令指針重定向至緩沖器、以及保存各種變量的 值以供稍后使用,步驟708。舉例而言,保存范圍末端變量的當(dāng)前值、以及下 一個(gè)測(cè)試組指示符的當(dāng)前值。其后,替換這些變量的值,步驟710。舉例而言,將范圍末端設(shè)置為零, 且設(shè)置下 一 個(gè)測(cè)試組指示符以指向恢復(fù)測(cè)試組。接著執(zhí)行緩沖器中的指令。在解碼/調(diào)度處,單個(gè)測(cè)試(例如,變量末端) 失敗,因此,選擇恢復(fù)測(cè)試組,步驟714。在恢復(fù)期間,不進(jìn)行(undone)在步 驟708-710處的動(dòng)作。舉例而言,將指令指針重定向至原始指令流,將范圍末 端變量設(shè)置為其保存值,且還將下一個(gè)測(cè)試組指示符重置為其保存值。處理 隨后在下一個(gè)指令處繼續(xù),步驟716。返回至詢問(wèn)702,如果該指令不是需要特殊處置的類型,則處理繼續(xù)該測(cè) 試組的下一個(gè)指令或者返回于主線處理中,如由測(cè)試組所指引。舉例而言,本發(fā)明的一個(gè)或多個(gè)方面可包括于具有例如計(jì)算機(jī)可用介質(zhì) 的產(chǎn)品(例如, 一個(gè)或多個(gè)計(jì)算機(jī)程序產(chǎn)品)中。舉例而言,介質(zhì)在其中具有計(jì) 算機(jī)可讀程序代碼構(gòu)件或邏輯(例如,指令、代碼、命令等),以提供并有助于 本發(fā)明的能力。可將該產(chǎn)品包括為計(jì)算機(jī)系統(tǒng)的一部分或單獨(dú)出售。參看圖8描述合并本發(fā)明的 一個(gè)或多個(gè)方面的產(chǎn)品或計(jì)算機(jī)程序產(chǎn)品的 一示例。舉例而言,計(jì)算機(jī)程序產(chǎn)品800包括一個(gè)或多個(gè)計(jì)算機(jī)可用介質(zhì)802, 以將計(jì)算機(jī)可讀程序代碼構(gòu)件或邏輯804存儲(chǔ)于其上,以提供并有助于本發(fā)明 的一個(gè)或多個(gè)方面。介質(zhì)可為電子、;茲性、光學(xué)、電-茲、紅外或半導(dǎo)體系統(tǒng)(或 設(shè)備或裝置)或者傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的示例包括半導(dǎo)體或固態(tài)存儲(chǔ) 器、磁帶、可移動(dòng)計(jì)算機(jī)磁盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、 硬質(zhì)磁盤(pán)以及光盤(pán)。光盤(pán)的示例包括光盤(pán)只讀存儲(chǔ)器(CD-ROM)、光盤(pán)-讀/寫(xiě) (CD-R/W)以及DVD。程序指令序列或者由一個(gè)或多個(gè)計(jì)算機(jī)可讀程序代碼構(gòu)件或邏輯定義的 一個(gè)或多個(gè)相關(guān)模塊的邏輯集合(assembly)指引本發(fā)明的一個(gè)或多個(gè)方面 的執(zhí)行。有利地,提供用于控制指令執(zhí)行的能力(其中將控制維持于主線處理中),除非需要測(cè)試(不同于單個(gè)范圍末端測(cè)試)或其它動(dòng)作,如由單個(gè)范圍末端測(cè)試 所確定的。通過(guò)僅當(dāng)需要時(shí)執(zhí)行這些測(cè)試,增強(qiáng)了性能并且簡(jiǎn)化了編碼(例 如,每個(gè)指令不必包括所有測(cè)試的代碼)。有利地,使處理流線化,其中分支出現(xiàn)至下一個(gè)例程(假定不必處理測(cè)試 組),而不是返回至解i奪器且隨后至下一個(gè)例程。作為另一優(yōu)點(diǎn),通過(guò)使用緩沖器,減少了與某些指令(諸如,執(zhí)行指令) 相關(guān)聯(lián)的開(kāi)銷。依據(jù)執(zhí)行指令,存在與從存儲(chǔ)器的一頁(yè)跳至存儲(chǔ)器的另一頁(yè) 相關(guān)聯(lián)的開(kāi)銷。舉例而言,執(zhí)行處于存儲(chǔ)器的一頁(yè)上的執(zhí)行指令,且接著執(zhí) 行處于存儲(chǔ)器的不同頁(yè)上的目標(biāo)指令。在執(zhí)行了目標(biāo)指令后,處理返回至該 執(zhí)行指令后的指令。存在與此來(lái)回分支相關(guān)聯(lián)的開(kāi)銷。然而,通過(guò)使用緩沖 器,維持離開(kāi)第一頁(yè)的記錄,因此當(dāng)處理返回時(shí),可執(zhí)行恢復(fù),且不必執(zhí)行 額外測(cè)試和/或動(dòng)作(例如,地址轉(zhuǎn)-澤等)。雖然以上描述了各種實(shí)施例,但這些實(shí)施例僅為示例。舉例而言,處理環(huán)境可包括基于不同于Power4、 PowerPC②或Intef的架構(gòu)的處理單元。另夕卜, 不同于?86『168@服務(wù)器的服務(wù)器可合并并且使用本發(fā)明的一個(gè)或多個(gè)方面。此 外,可使用除了本文中提到的操作系統(tǒng)之外的操作系統(tǒng)。另外,處理環(huán)境可 仿真不同于z/Architectm^的環(huán)境。另外,可使用各種仿真器。仿真器是市售 的且由各公司提供。再另外,處理環(huán)境不必包括仿真器代碼。許多其它類型 的處理環(huán)境可合并和/或使用本發(fā)明的一個(gè)或多個(gè)方面。另外,雖然在處理某些指令(諸如,執(zhí)行指令以及跨越頁(yè)邊界的指令)中使 用緩沖器,但可存在要使用緩沖器的其它指令和/或情形,并且這些指令和/ 或情形包括于本發(fā)明的范圍中。另外,雖然已將測(cè)試組作為示例提供。但可使用額外的、較少和/或其它 測(cè)試組。包括的測(cè)試組的數(shù)目取決于設(shè)計(jì)。對(duì)本發(fā)明的許多變化是可能的且 包括于本發(fā)明的范圍中。此外,在一個(gè)或多個(gè)實(shí)施例中,適合于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處 理系統(tǒng)是有用的,其包括經(jīng)由系統(tǒng)總線直接或間接耦接至存儲(chǔ)器組件的至少 一個(gè)處理器。所述存儲(chǔ)器組件包括例如在程序代碼的實(shí)際執(zhí)行期間使用的本 地存儲(chǔ)器、大容量存儲(chǔ)設(shè)備以及高速緩存,高速緩存提供至少一些程序代碼 的臨時(shí)存儲(chǔ),以便減少在執(zhí)行期間必須從大容量存儲(chǔ)設(shè)備恢復(fù)代碼的次數(shù)。輸入/輸出或I/0裝置(包括但不限于鍵盤(pán)、顯示器、指示(pointing)裝置、DASD、磁帶、CD、 DVD、隨身碟(thumb drive)以及其它存儲(chǔ)介質(zhì)等)可直 接或經(jīng)由中間的I/0控制器而耦接至系統(tǒng)。網(wǎng)絡(luò)適配器也可以耦接至系統(tǒng),以 使該數(shù)據(jù)處理系統(tǒng)能夠變?yōu)榻?jīng)由中間的私有或共享網(wǎng)絡(luò)而耦接至其它數(shù)據(jù)處 理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)裝置。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器以及以太網(wǎng) 卡僅為可用類型的網(wǎng)絡(luò)適配器中的少數(shù)幾種??梢杂密浖?、固件、硬件或者它們的一些組合來(lái)實(shí)現(xiàn)本發(fā)明的一個(gè)或多 個(gè)方面的能力。可提供可由機(jī)器讀取的至少一個(gè)程序存儲(chǔ)裝置,該裝置包含 可由該機(jī)器執(zhí)行以執(zhí)行本發(fā)明的能力的至少 一個(gè)程序的指令。本文中描繪的流程圖僅為示例。在不脫離本發(fā)明的精神的情況下,可存 在對(duì)本文中描述的這些附圖或步驟(或操作)的許多變化。舉例而言,可按不同 次序執(zhí)行這些步驟,或者可添加、刪除或修改這些步驟。將所有這些變化考 慮為請(qǐng)求保護(hù)的本發(fā)明的 一部分。雖然本文中已詳細(xì)描繪以及描述了實(shí)施例,但對(duì)于相關(guān)領(lǐng)域的技術(shù)人員 將顯而易見(jiàn)的是,在不脫離本發(fā)明的精神的情況下,可進(jìn)行各種修改、添加、 替換以及其類似操作,并且因此將這些修改、添加、替換及其類似操作考慮 為處于如下列權(quán)利要求書(shū)中定義的本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種在處理環(huán)境中控制指令執(zhí)行的方法,所述方法包括執(zhí)行指令流的指令例程;響應(yīng)于執(zhí)行該指令例程,使用測(cè)試來(lái)確定處理要繼續(xù)至該指令流的另一指令例程還是轉(zhuǎn)到測(cè)試組;以及響應(yīng)于該確定,執(zhí)行該另一指令例程或該測(cè)試組。
2. 如權(quán)利要求l所述的方法,其中該測(cè)試在該確定中使用動(dòng)態(tài)設(shè)置的變量。
3. 如權(quán)利要求2所述的方法,其中該變量被設(shè)置為取決于被執(zhí)行以設(shè)置 該變量的一個(gè)或多個(gè)測(cè)試的結(jié)果的值,并且其中該值在該指令流的執(zhí)行期間 是可改變的。
4. 如權(quán)利要求2所述的方法,其中使用該測(cè)試包括將該指令例程的指令 計(jì)數(shù)器與該變量的值相比較,以確定如何繼續(xù)。
5. 如權(quán)利要求l所述的方法,其中該測(cè)試組可由多個(gè)指令例程使用,并 且使得該多個(gè)指令例程能夠無(wú)該測(cè)試組代碼。
6. 如權(quán)利要求l所述的方法,其中先前從多個(gè)測(cè)試組選擇該測(cè)試組。
7. 如權(quán)利要求6所述的方法,其中該多個(gè)測(cè)試組包括下列各項(xiàng)中的至少 一個(gè)指令頁(yè)邊界跨越測(cè)試組、I-PER提取測(cè)試組、I-Step以及adstop測(cè)試組、 開(kāi)始和退出測(cè)試組,以及收集統(tǒng)計(jì)和決定l丸行^t式測(cè)試組。
8. 如權(quán)利要求l所述的方法,還包括 執(zhí)行該處理環(huán)境的狀態(tài)的評(píng)估;以及 至少部分基于該評(píng)估來(lái)選4奪該測(cè)試組。
9. 如權(quán)利要求l所述的方法,其中該指令例程正在仿真客戶機(jī)架構(gòu)的一 個(gè)或多個(gè)指令。
10. 如權(quán)利要求l所述的方法,其中該處理環(huán)境包括仿真的環(huán)境,所述處 理環(huán)境基于一個(gè)架構(gòu)并且仿真與該一個(gè)架構(gòu)不同的另 一架構(gòu)。
11. 如權(quán)利要求IO所述的方法,其中該另 一架構(gòu)包括該z/Architecture, 并且該一個(gè)架構(gòu)包括非z/Architecture。
12. 如權(quán)利要求l所述的方法,其中該測(cè)試包括于與該指令例程相關(guān)聯(lián)的 解碼/調(diào)度例程中,其中該指令流的每個(gè)指令例程具有與其相關(guān)聯(lián)的分散的解碼/調(diào)度例程。
13. 如權(quán)利要求l所述的方法,其中該另一指令例程可與所執(zhí)行的指令例 程相同或與所執(zhí)行的指令例程不同。
14. 一種系統(tǒng),包括適于執(zhí)行如任何在前方法權(quán)利要求所述的方法的所 有步驟的裝置。
15. —種包括指令的計(jì)算機(jī)程序,其中所述指令用于當(dāng)在計(jì)算機(jī)系統(tǒng)上執(zhí)行所述計(jì)算機(jī)程序時(shí),執(zhí)行如任何在前方法權(quán)利要求所述的方法的所有步
全文摘要
通過(guò)確定處理應(yīng)在主線處理中繼續(xù)還是轉(zhuǎn)到測(cè)試組的單個(gè)測(cè)試來(lái)控制指令執(zhí)行。該單個(gè)測(cè)試將動(dòng)態(tài)設(shè)置的變量與指令計(jì)數(shù)器相比較。如果滿足該測(cè)試,則主線處理繼續(xù)。否則,處理轉(zhuǎn)到測(cè)試組。
文檔編號(hào)G06F11/14GK101601013SQ200880003881
公開(kāi)日2009年12月9日 申請(qǐng)日期2008年1月22日 優(yōu)先權(quán)日2007年2月1日
發(fā)明者維克托·久瑞斯, 西奧多·博希齊克, 馬克·德克爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司