欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

處理器特性的運行時間檢測監(jiān)控的制作方法

文檔序號:6533323閱讀:277來源:國知局
處理器特性的運行時間檢測監(jiān)控的制作方法
【專利摘要】本發(fā)明的實施例涉及使用運行時間檢測監(jiān)控處理器的處理器特性信息。本發(fā)明的一個方面包括在處理器上執(zhí)行指令流,并且檢測在所述處理器上的所述執(zhí)行的指令流的運行時間檢測樣本點。基于所述運行時間檢測樣本點來在運行時間檢測程序緩沖器中存儲報告群組。所述報告群組包括與所述處理器相關(guān)聯(lián)的處理器特性信息。
【專利說明】處理器特性的運行時間檢測監(jiān)控

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明總體上涉及在計算環(huán)境內(nèi)的處理,并且更具體地涉及在使用運行時間檢測 的同時監(jiān)控處理器特性。

【背景技術(shù)】
[0002] 計算機處理器使用日益復雜的分支預測及指令高速緩存邏輯來執(zhí)行事務 (transaction)。這些程序已被引入以增加指令吞吐量,且因此增加處理性能。用于改進性 能的邏輯的引入使得難以肯定地預測特定軟件應用程序?qū)⑷绾卧谟嬎銠C處理器上執(zhí)行。在 軟件開發(fā)過程期間,常常存在功能性與性能之間的平衡。軟件在基于執(zhí)行軟件的底層硬件 的一個或多個抽象層級處執(zhí)行。當將硬件虛擬化時,額外抽象層被引入。隨著性能增強邏輯 及各種抽象層(layer)的引入,將難以透徹地理解當程序正在執(zhí)行時在硬件層級(level) 實際發(fā)生的事。在不具此信息的情況下,軟件開發(fā)者將更抽象的方法(諸如,執(zhí)行持續(xù)時 間、存儲器使用率、線程的數(shù)目等)用于最佳化軟件應用程序。


【發(fā)明內(nèi)容】

[0003] 技術(shù)問題
[0004] 當硬件特定信息可用時,該信息通常是在事后被提供給開發(fā)者,且該信息是以聚 集地、在高層級、和/或穿插著其他程序及操作系統(tǒng)的活動的方式提供,從而難以識別可能 影響軟件應用程序的效率及準確度的問題。
[0005] 對于問題的解決方案
[0006] 實施例包括用于使用運行時間檢測來監(jiān)控處理器的處理器特性信息的方法、系統(tǒng) 和計算機程序產(chǎn)品。所述計算機程序產(chǎn)品包括有形存儲介質(zhì),其能夠被處理電路讀取,并且 存儲用于由所述處理電路執(zhí)行以執(zhí)行一種方法的指令。所述方法包括:在處理器上執(zhí)行指 令流,并且檢測在所述處理器上的所述執(zhí)行的指令流的運行時間檢測樣本點。所述方法進 一步包括:基于所述運行時間檢測樣本點來在運行時間檢測程序緩沖器中存儲報告群組, 所述報告群組包括與所述處理器相關(guān)聯(lián)的處理器特性信息。
[0007] 用于使用運行時間檢測來監(jiān)控處理器的處理器特性信息的方法包括:在處理器上 執(zhí)行指令流。所述方法也包括:檢測在所述處理器上的所述執(zhí)行的指令流的運行時間檢測 樣本點。所述方法進一步包括:基于所述運行時間檢測樣本點來在運行時間檢測程序緩沖 器中存儲報告群組,所述報告群組包括與所述處理器相關(guān)聯(lián)的處理器特性信息。
[0008] 用于使用運行時間檢測來監(jiān)控處理器的處理器特性信息的系統(tǒng)包括:存儲器和具 有運行時間檢測模塊的處理器。所述運行時間檢測模塊被配置為執(zhí)行一種方法,所述方法 包括:在處理器上執(zhí)行指令流,并且檢測在所述處理器上的所述執(zhí)行的指令流的運行時間 檢測樣本點。所述方法進一步包括:基于所述運行時間檢測樣本點來在運行時間檢測程序 緩沖器中存儲報告群組,所述報告群組包括與所述處理器相關(guān)聯(lián)的處理器特性信息。
[0009] 額外特征及優(yōu)點是經(jīng)由本發(fā)明的技術(shù)來實現(xiàn)。本發(fā)明的其他實施例及方面將在本 文中予以詳細描繪且被視為所主張發(fā)明的一部分。為了更好地理解本發(fā)明的優(yōu)點及特征, 參看描繪及附圖。
[0010] 在說明書結(jié)尾處的權(quán)利要求中特定指出且清楚地主張了被視為本發(fā)明的主題。將 根據(jù)結(jié)合隨附圖進行的以下詳細描繪顯而易見本發(fā)明的前述及其他特征及優(yōu)點。

【專利附圖】

【附圖說明】
[0011] 圖IA為描繪實施例中的示例主機計算機系統(tǒng)的圖;
[0012] 圖IB為描繪實施例中的示例模擬主機計算機系統(tǒng)的圖;
[0013] 圖IC為描繪實施例中的示例計算機系統(tǒng)的圖;
[0014] 圖2為描繪實施例中的示例計算機網(wǎng)絡(luò)的圖;
[0015] 圖3為描繪實施例中的計算機系統(tǒng)的元件的圖;
[0016]圖4A描繪實施例中的計算機系統(tǒng)的詳細元件;
[0017]圖4B描繪實施例中的計算機系統(tǒng)的詳細元件;
[0018]圖4C描繪實施例中的計算機系統(tǒng)的詳細元件;
[0019] 圖5描繪根據(jù)實施例的用于處理器的運行時間檢測的系統(tǒng)的示意圖;
[0020] 圖6描繪實施例中的包括可由特權(quán)狀態(tài)設(shè)置的控制的運行時間檢測控制塊 (RICCB)的一部分。
[0021] 圖7描繪實施例中的當半特權(quán)位(K)經(jīng)設(shè)置為1時的RICCB控制塊的一部分;
[0022] 圖8描繪根據(jù)實施例的報告群組。
[0023] 圖9描繪根據(jù)實施例的開始記錄。
[0024] 圖10描繪根據(jù)實施例的時間戳記錄。
[0025] 圖11描繪根據(jù)實施例的用于使用運行時間檢測來監(jiān)控處理器特性改變的處理 流。
[0026] 圖12描繪根據(jù)實施例的用于運行時間檢測存儲抑制查看的處理流。
[0027] 圖13圖示根據(jù)實施例的計算機程序產(chǎn)品。

【具體實施方式】
[0028] 本發(fā)明的一個實施例啟用使用運行時間檢測通過地址的事件的間接樣本。運行時 間檢測是能夠不僅用在實驗室或用于離線分析而且用于在處理器(CPU)上在程序控制下 的程序運行時間期間的客戶環(huán)境中的設(shè)施。被獲取和執(zhí)行來運行程序的指令的序列可以 被稱為指令流。為了增強數(shù)據(jù)收集靈活性,??梢曰诳膳渲瞄g隔來收集事件。被程序可 設(shè)置的CPU控制管理運行時間檢測。運行時間檢測通常在固定的樣本基礎(chǔ)上報告事件;然 而,可以通過使用運行時間檢測下一個(RINEXDT)指令來引導在檢測的指令流中的另外的 興趣點。通過或者指令計數(shù)或循環(huán)計數(shù)來確定固定樣本間隔。在檢測的指令流中的具體信 息可以當執(zhí)行隨后的分析時很有益。能夠在儀表運行期間建立與在檢測的指令流中的特定 指令相關(guān)聯(lián)的另外引導的樣本點可以實質(zhì)上增大可用于事后分析的關(guān)鍵信息的數(shù)目。
[0029] 對于支持多個運行速度或在以不同速度運行的處理器之間的遷移的處理器會出 現(xiàn)與檢測數(shù)據(jù)的收集的并發(fā)癥。例如,如果運行的軟件程序動態(tài)地從較快處理器向以較低 速度運行的較慢處理器遷移,則現(xiàn)有的樣本率在每一個指令被有效地增大,并且可以導致 錯誤的統(tǒng)計。例如,當監(jiān)控高速緩存未中率時,每一個指令的對于存儲器的高速緩存未中的 數(shù)目可以看起來較不頻繁或成本低,因為對于存儲器的訪問通常在時間上是常數(shù),但是指 令被完成得較慢。處理器運行速度的默認設(shè)置可以被稱為主要CPU能力,而波長的處理器 運行速度可以被稱為次要CPU能力。對于相關(guān)的數(shù)據(jù)收集的另外的挑戰(zhàn)可以包括使用多代 的不同處理器來用于共同的程序、CPU配置和狀態(tài)以及其他外部因素??梢曰贑PU版本來 識別處理器產(chǎn)生和支持的特征。其他模型相關(guān)的極限也可以在CPU之間改變,諸如最大報 告群組存儲大小。CPU能力設(shè)置、CPU版本和模型相關(guān)的極限被統(tǒng)稱為CPU特性。從可以在 處理器之間移位的程序或指令流執(zhí)行的視點看,在執(zhí)行同一程序或指令流的同時在CPU特 性上的改變可以具有最小的影響或?qū)е率沟眠\行時間檢測數(shù)據(jù)無效。
[0030] 已經(jīng)描繪了用于支持在處理器或虛擬機之間的程序遷移或重新定位的多種 技術(shù)。例如,由Khatri等在2007年9月6日提交并且通過引用被并入在此的美國專 利申請公布 No. 2009/0070760 "VIRTUAL MACHINE (VM)MIGRATION BETWEEN PROCESSOR ARCHITECTURES (在處理器架構(gòu)之間的虛擬機(VM)遷移)"討論了模擬特定特征集以通過掩 蔽CPUID寄存器的所選擇比特來啟用在機器的類似池中的VM遷移。由Lorenc等在2011年 5月3日提交并且通過引用被并入在此的美國專利申請No. 13/100,078"DYNAMIC VIRTUAL MACHINE DOMAIN CONFI⑶RATION AND VIRTUAL MACHINE RELOCATION MANAGEMENT^ 動態(tài)虛 擬機域配置和虛擬機重新定位管理)"討論了動態(tài)重新定位。
[0031] 圖IA描繪實施例中的主機計算機系統(tǒng)50的代表性組件。組件的其他配置也可在 計算機系統(tǒng)中使用。代表性主機計算機系統(tǒng)50包含與主存儲器(計算機存儲器)2通信的 一個或多個處理器1以及至存儲器件11及網(wǎng)絡(luò)10的用于與其他計算機或SAN等通信的1/ 0接口。處理器1符合具有架構(gòu)化指令集及架構(gòu)化功能性的架構(gòu)。處理器1可具有用于將 程序地址(虛擬地址)變換為存儲器中的真實地址的動態(tài)地址轉(zhuǎn)譯(DAT) 3。DAT 3通常包 括用于高速緩存轉(zhuǎn)譯的轉(zhuǎn)譯后備緩沖器(TLB) 7,使得對計算機存儲器2的塊的稍后存取不 需要延遲地址轉(zhuǎn)譯。通常,高速緩沖存儲器9是用于計算機存儲器2與處理器1之間。高速 緩沖存儲器9可為階層式的,其具有可供一個以上CPU使用的大的高速緩沖存儲器及介于 大的高速緩沖存儲器與每一 CPU之間的較小、較快速(較低層級)的高速緩沖存儲器。在 一些實施例中,較低層級高速緩沖存儲器經(jīng)劃分以為指令提取及數(shù)據(jù)存取提供單獨的低層 級高速緩沖存儲器。在實施例中,由指令提取單元4經(jīng)由高速緩沖存儲器9從計算機存儲 器2提取指令。該指令在指令解碼單元6中被解碼且(在一些實施例中與其他指令一起) 被分派至指令執(zhí)行單元8。通常,使用若干指令執(zhí)行單元8,例如算術(shù)執(zhí)行單元、浮點執(zhí)行單 元及分支指令執(zhí)行單元。該指令是由指令執(zhí)行單元8執(zhí)行,從而按需要從指令指定的寄存 器或計算機存儲器2存取操作數(shù)。如果將從計算機存儲器2存?。ㄝd入或存儲)操作數(shù), 則載入存儲單元5通常在被執(zhí)行的指令的控制下處置該存取。指令可在硬件電路中或以內(nèi) 部微代碼(固件)形式執(zhí)行或通過兩者的組合執(zhí)行。
[0032] 在圖IB中,提供模擬主機計算機系統(tǒng)21,其模擬具有主機架構(gòu)的主機計算機系 統(tǒng),諸如圖1的主機計算機系統(tǒng)50。在模擬主機計算機系統(tǒng)21中,主機處理器(CPU) 1為模 擬主機處理器(或虛擬主機處理器)29,且包含原生處理器27,該原生處理器具有不同于主 機計算機系統(tǒng)50的處理器1的原生指令集架構(gòu)的原生指令集架構(gòu)。模擬主機計算機系統(tǒng) 21具有原生處理器27可存取的存儲器22。在實施例中,存儲器22經(jīng)分割成計算機存儲器 2部分及模擬例程存儲器23部分。計算機存儲器2根據(jù)主機計算機架構(gòu)而可供模擬主機計 算機系統(tǒng)21的程序使用。原生處理器27執(zhí)行不同于模擬處理器29的架構(gòu)的架構(gòu)的架構(gòu) 指令集的原生指令(原生指令獲得自模擬例程存儲器23),且可通過使用在可解碼所存取 的該主機指令的序列及存取/解碼例程中獲得的一個或多個指令而從計算機存儲器2中的 程序存取用于執(zhí)行的主機指令,以確定用于模擬所存取的該主機指令的功能的原生指令執(zhí) 行例程。針對主機計算機系統(tǒng)50架構(gòu)定義的其他設(shè)施可由架構(gòu)化設(shè)施例程模擬,其他設(shè)施 包括諸如(例如)通用寄存器、控制寄存器、動態(tài)地址轉(zhuǎn)譯及輸入/輸出(I/O)子系統(tǒng)支持 及處理器高速緩沖存儲器的設(shè)施。模擬例程也可利用原生處理器27中可用的功能(諸如 通用寄存器及虛擬地址的動態(tài)轉(zhuǎn)譯)來改進模擬例程的性能。也可提供特殊硬件及卸載引 擎以幫助原生處理器27模擬主機計算機系統(tǒng)50的功能。
[0033] 在大型計算機中,程序設(shè)計師(通常,現(xiàn)今的"C"程序設(shè)計師)常常通過編譯器應 用程序來使用架構(gòu)化機器指令。存儲在存儲介質(zhì)中的這些指令可原生地在z/Architecture IBM服務器中執(zhí)行,或替代地在執(zhí)行其他架構(gòu)的機器中執(zhí)行。可在現(xiàn)有及未來的IBM大型計 算機服務器中及在IBM的其他機器(例如,pSeries?服務器及xSeries?J?務器)上模擬 指令。可于在廣泛多種機器(使用由IBM?、Intel?、AMD?、Sun Microsystems及其他 公司制造的硬件)上執(zhí)行Linux的機器中執(zhí)行指令。除了在Z/Architecture?下在該硬件 上執(zhí)行之外,也可使用 Linux 以及由 Hercules、UMX、Fundamental Software, Inc. (FSI)或 Platform Solutions, Inc. (PSI)提供的使用模擬的機器,其中執(zhí)行通常在模擬模式下。在 模擬模式下,模擬軟件是由原生處理器執(zhí)行以模擬模擬處理器的架構(gòu)。
[0034] 模擬主機計算機系統(tǒng)21的組件中的一個或多個將在"IBM? z/Architecture Principles of Operation"(公告第 SA22-7832-08 號,第 9 版,2010 年 8 月)中予以進一 步描繪,該公告特此以全文引用方式并入本文中。IBM為國際商業(yè)機器公司(Armonk,New York,USA)額注冊商標。本文中所使用的其他名稱可為國際商業(yè)機器公司或其他公司的注 冊商標、商標或產(chǎn)品名稱。
[0035] 原生處理器27通常執(zhí)行存儲在包含固件或原生操作系統(tǒng)的模擬例程存儲器23中 的模擬軟件以執(zhí)行對模擬處理器的模擬。該模擬軟件負責提取并執(zhí)行模擬處理器架構(gòu)的指 令。該模擬軟件維持模擬程序計數(shù)器以追蹤指令邊界。該模擬軟件一次可提取一個或多個 模擬機器指令且將該一個或多個模擬機器指令轉(zhuǎn)換成供原生處理器27執(zhí)行的原生機器指 令的相應群組。這些經(jīng)轉(zhuǎn)換指令可被高速緩存,以使得可實現(xiàn)較快速轉(zhuǎn)換。該模擬軟件維 持模擬處理器架構(gòu)的架構(gòu)規(guī)則以便保證針對模擬處理器撰寫的操作系統(tǒng)及應用程序正確 地操作。此外,該模擬軟件提供由模擬處理器架構(gòu)識別的資源,包括(但不限于)控制寄存 器、通用寄存器、浮點寄存器、包括(例如)段表及頁表的動態(tài)地址轉(zhuǎn)譯功能、中斷機制、上 下文切換機制、當日時間(TOD)時鐘及至1/0子系統(tǒng)的架構(gòu)化接口,以使得經(jīng)設(shè)計以在模擬 處理器29上執(zhí)行的操作系統(tǒng)或應用程序可在具有該模擬軟件的原生處理器27上執(zhí)行。
[0036] 被模擬的特定指令經(jīng)解碼,且子例程被調(diào)用以執(zhí)行個別指令的功能。模擬模擬處 理器29的功能的模擬軟件功能被以(例如)"C"子例程或驅(qū)動程序來實施,或以在理解優(yōu) 選實施例的描繪的后將在本領(lǐng)域普通技術(shù)人員的能力范圍內(nèi)的提供特定硬件的驅(qū)動程序 的某一其他方法來實施。
[0037] 在實施例中,本發(fā)明可由軟件(有時被稱為經(jīng)授權(quán)內(nèi)部碼、固件、微代碼、毫碼 (milli-code)、微微代碼(pico-code)等,其中的任一個都符合本發(fā)明)實踐。參看圖1A,體 現(xiàn)本發(fā)明的軟件程序代碼是由也被稱為主機計算機系統(tǒng)50的CPU(中央處理單元)1的處 理器從存儲器件11(諸如長期存儲介質(zhì)、CD-ROM驅(qū)動器、帶驅(qū)動器或硬驅(qū)動器)存取。軟件 程序代碼可體現(xiàn)于供數(shù)據(jù)處理系統(tǒng)使用的多種已知介質(zhì)(諸如磁盤、硬驅(qū)動器或CD-ROM) 中的任一個上。程序代碼可分布在這些介質(zhì)上,或可從一個計算機系統(tǒng)的計算機存儲器2 或存儲器經(jīng)由網(wǎng)絡(luò)10至其他計算機系統(tǒng)地分發(fā)給用戶以供這些其他系統(tǒng)的用戶使用。
[0038] 替代地,程序代碼可體現(xiàn)于計算機存儲器2中,且由處理器1使用處理器總線(未 圖示)存取。此程序代碼包括操作系統(tǒng),該操作系統(tǒng)控制各種計算機組件和一個或多個應 用程序的功能及交互。程序代碼通常是從諸如存儲器件11的致密介質(zhì)分頁至計算機存儲 器2,程序代碼可在計算機存儲器中供處理器1處理。用于將軟件程序代碼體現(xiàn)于存儲器 中、實體介質(zhì)上和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件碼的技術(shù)及方法是公知的且本文中將不予以進一 步論述。程序代碼在被產(chǎn)生且存儲在有形介質(zhì)(包括(但不限于)電子存儲器模塊(RAM)、 閃速存儲器、致密盤(CD)、DVD、磁帶等)上時常常被稱為"計算機程序產(chǎn)品"。計算機程序 產(chǎn)品介質(zhì)通??捎蓛?yōu)選在計算機系統(tǒng)中的處理電路讀取以供處理電路執(zhí)行。
[0039] 圖IC說明本發(fā)明可于其中實踐的代表性工作站或服務器硬件系統(tǒng)。圖IC的系統(tǒng) 100包含諸如個人計算機、工作站或服務器的代表性基本計算機系統(tǒng)101,其包括可選的外 圍設(shè)備?;居嬎銠C系統(tǒng)101包括一個或多個處理器106及總線(未圖示),該總線用以連 接一個或多個處理器106與基本計算機系統(tǒng)101的其他組件及根據(jù)現(xiàn)有技術(shù)實現(xiàn)一個或多 個處理器106與基本計算機系統(tǒng)101之間的通信。該總線將處理器106連接至存儲器105 及長期存儲器107,長期存儲器可包括(例如)硬驅(qū)動器(包括(例如)磁性介質(zhì)、CD、DVD 及閃速存儲器中的任一個)或帶驅(qū)動器?;居嬎銠C系統(tǒng)101也可包括用戶接口適配器,其 經(jīng)由該總線將一個或多個處理器106連接至一個或多個接口設(shè)備,諸如鍵盤104、鼠標103、 打印機/掃描儀110和/或其他接口設(shè)備,其他接口設(shè)備可為任何用戶接口設(shè)備(諸如觸 敏屏幕、數(shù)字化輸入板等)。該總線也經(jīng)由顯示適配器將一個或多個處理器連接至顯示器件 102,諸如IXD屏幕或監(jiān)視器。
[0040] 基本計算機系統(tǒng)101可通過能夠與網(wǎng)絡(luò)109通信108的網(wǎng)絡(luò)適配器而與其他計算 機或計算機網(wǎng)絡(luò)通信。示例網(wǎng)絡(luò)適配器為通信頻道、令牌環(huán)(token ring)、乙太網(wǎng)絡(luò)或調(diào) 制解調(diào)器。替代地,基本計算機系統(tǒng)101可使用無線接口(諸如蜂窩數(shù)字分組數(shù)據(jù)(⑶ro) 卡)進行通信?;居嬎銠C系統(tǒng)101可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這些其他計算 機相關(guān)聯(lián),或基本計算機系統(tǒng)101可為具有另一計算機的客戶端/服務器配置中的客戶端 等。
[0041] 圖2說明本發(fā)明可于其中實踐的數(shù)據(jù)處理網(wǎng)絡(luò)200。數(shù)據(jù)處理網(wǎng)絡(luò)200可包括諸 如無線網(wǎng)絡(luò)及有線網(wǎng)絡(luò)的多個個別網(wǎng)絡(luò),該多個個別網(wǎng)絡(luò)中的每一個可包括多個個別工作 站201、202、203、204和/或圖1(:的基本計算機系統(tǒng)101。另外,如本領(lǐng)域普通技術(shù)人員將 了解,可包括一個或多個LAN,其中LAN可包含耦接至主機處理器的多個智能工作站。
[0042] 程序設(shè)計碼111可體現(xiàn)于存儲器105中,且由處理器106使用處理器總線存取。此 程序設(shè)計碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序112的功能及交 互。程序代碼通常是從長期存儲器107分頁至高速存儲器105,程序代碼可在高速存儲器中 供處理器106進行處理。用于將軟件程序設(shè)計碼體現(xiàn)于存儲器中、實體介質(zhì)上和/或經(jīng)由 網(wǎng)絡(luò)分發(fā)軟件碼的技術(shù)及方法是公知的且本文中將不予以進一步論述。程序代碼在被產(chǎn)生 且存儲在有形介質(zhì)(包括(但不限于)電子存儲器模塊(RAM)、閃速存儲器、致密盤(CD)、 DVD、磁帶等)上時常常被稱為"計算機程序產(chǎn)品"。計算機程序產(chǎn)品介質(zhì)通??捎蓛?yōu)選在計 算機系統(tǒng)中的處理電路讀取以供處理電路執(zhí)行。
[0043] 處理器最容易利用的高速緩沖存儲器(通常比處理器的其他高速緩沖存儲器快 速且?。樽畹停↙I或?qū)蛹壱唬└咚倬彌_存儲器,且主存儲器(主存儲器)為最高層級高 速緩沖存儲器(L3,如果存在3個層級)。最低層級高速緩沖存儲器常常被劃分為保存待執(zhí) 行的機器指令的指令高速緩沖存儲器(I高速緩沖存儲器)及保存數(shù)據(jù)操作數(shù)的數(shù)據(jù)高速 緩沖存儲器(D高速緩沖存儲器)。
[0044] 仍參看圖2,網(wǎng)絡(luò)也可包括大型計算機或服務器,諸如可存取數(shù)據(jù)存儲庫也可 從工作站205直接存取的網(wǎng)關(guān)計算機(客戶端服務器)206或應用程序服務器(遠程服 務器)208。網(wǎng)關(guān)計算機206充當至每一網(wǎng)絡(luò)207的進入點。網(wǎng)關(guān)在將一個網(wǎng)絡(luò)連接協(xié) 議連接至另一者時是必需的。網(wǎng)關(guān)計算機206可優(yōu)選地借助于通信鏈路耦接至另一網(wǎng) 絡(luò)(例如,因特網(wǎng)207)。網(wǎng)關(guān)計算機206也可使用通信鏈路直接耦接至一個或多個工 作站101、201、202、203及204。網(wǎng)關(guān)計算機可利用可從國際商業(yè)機器公司購得的IBM eServer? zSeries? z9? 服務器來實施。
[0045] 在實施例中,體現(xiàn)本發(fā)明的軟件程序設(shè)計碼是由基本計算機系統(tǒng)101的處理器 106從長期存儲介質(zhì)(諸如圖IC的長期存儲器107)存取。軟件程序設(shè)計碼可體現(xiàn)于供數(shù) 據(jù)處理系統(tǒng)使用的多種已知介質(zhì)(諸如磁盤、硬驅(qū)動器或CD-ROM)中的任一個上。該碼可 分布在這些介質(zhì)上,或可從一個計算機系統(tǒng)的存儲器或存儲器經(jīng)由網(wǎng)絡(luò)至其他計算機系統(tǒng) 地分發(fā)給用戶210及211以供這些其他系統(tǒng)的用戶使用。
[0046] 參看圖3,描繪處理器106的示例性處理器實施例。將一個或多個層級的高速緩沖 存儲器303用以緩沖存儲器塊以便改進處理器106的性能。高速緩沖存儲器303為保存可 能被使用的存儲器數(shù)據(jù)的高速緩存行的高速緩沖器。典型高速緩存行為64、128或256個 字節(jié)的存儲器數(shù)據(jù)。在實施例中,將單獨的高速緩存用于高速緩存指令而非用于高速緩存 數(shù)據(jù)。常常由本領(lǐng)域公知的各種"窺探"演算法來提供高速緩存一致性(存儲器及高速緩 沖存儲器中的行的復本的同步)。諸如處理器系統(tǒng)的存儲器105的主存儲器常常被稱為高 速緩沖存儲器。在具有4個層級的高速緩沖存儲器303的處理器系統(tǒng)中,存儲器105有時 被稱為層級5 (L5)高速緩沖存儲器,因為存儲器105通常較快且僅保存可供計算機系統(tǒng)使 用的非易失性存儲器(DASD、磁帶等)的一部分。存儲器105 "高速緩存"由操作系統(tǒng)分頁 到存儲器105內(nèi)及外的數(shù)據(jù)頁。
[0047] 程序計數(shù)器(指令計數(shù)器)311追蹤待執(zhí)行的當前指令的地址。z/Architecture 處理器中的程序計數(shù)器是64位的且可截斷至31或24位以支持先前尋址極限。程序計數(shù) 器通常體現(xiàn)于計算機的程序狀態(tài)字(PSW)中,以使得程序計數(shù)器在上下文切換期間保持不 變。因此,進行中的程序(具有程序計數(shù)器值)可被(例如)操作系統(tǒng)中斷(即,當前上下 文從程序環(huán)境切換至操作系統(tǒng)環(huán)境)。程序的PSW在程序不在作用中時維持程序計數(shù)器值, 且在操作系統(tǒng)在執(zhí)行中時使用操作系統(tǒng)的程序計數(shù)器(在PSW中)。在實施例中,程序計數(shù) 器被遞增等于當前指令的字節(jié)數(shù)目的量。精簡指令集計算(RISC)指令通常具有固定長度, 而復雜指令集計算(CISC)指令通常具有可變長度。IBM z/Architecture的指令為具有2、 4或6個字節(jié)的長度的CISC指令。程序計數(shù)器311由(例如)上下文切換操作或分支指令 的分支采納操作來修改。在上下文切換操作中,當前程序計數(shù)器值是與關(guān)于執(zhí)行中的程序 的其他狀態(tài)信息(諸如條件碼)一起存儲在PSW中,且載入指向待執(zhí)行的新程序模塊的指 令的新程序代碼計數(shù)器值。執(zhí)行分支采納操作以便通過將分支指令的結(jié)果載入至程序計數(shù) 器311中而準許程序做出決策或在程序內(nèi)循環(huán)。
[0048] 在實施例中,指令提取單元305是用以代表處理器106提取指令。指令提取單元 305提取"下一順序指令"、分支采納指令的目標指令或在上下文切換后程序的第一指令。在 實施例中,指令提取單元305使用預提取技術(shù)而基于經(jīng)預提取的指令可能被使用的可能性 來推測性地預提取指令。舉例而言,指令提取單元305可提取包括下一順序指令的16個字 節(jié)的指令及額外字節(jié)的其他順序指令。
[0049] 所提取指令接著由處理器106執(zhí)行。在實施例中,該所提取指令被傳遞至指令提 取單元305的解碼/分派單元306。解碼/分派單元306解碼該指令且將關(guān)于該經(jīng)解碼指 令的信息轉(zhuǎn)遞至適當執(zhí)行單元307、308和/或310。執(zhí)行單元307從指令提取單元305接 收關(guān)于經(jīng)解碼算術(shù)指令的信息且將根據(jù)指令的操作碼(運算碼)對操作數(shù)執(zhí)行算術(shù)運算。 操作數(shù)是從存儲器105、架構(gòu)化寄存器309或從執(zhí)行中的指令的立即字段提供至執(zhí)行單元 307。當存儲時,執(zhí)行的結(jié)果是存儲在存儲器105、架構(gòu)化寄存器309或存儲在其他機器硬件 (諸如控制寄存器、PSW寄存器等)中。
[0050] 處理器106通常具有用于執(zhí)行指令的功能的一個或多個執(zhí)行單元307、308及310。 參看圖4A,執(zhí)行單元307可通過接口邏輯407而與架構(gòu)化寄存器309、解碼/分派單元306、 載入/存儲單元310及其他處理器單元401通信。執(zhí)行單元307可使用若干寄存器電路 403、404及405來保存信息,算術(shù)邏輯單元(ALU) 402將對該信息進行操作。ALU 402執(zhí)行 諸如加減乘除的算術(shù)運算,以及諸如及(and)、或(or)、以及互斥或(xor)、旋轉(zhuǎn)及移位的邏 輯功能。在實施例中,ALU支持與設(shè)計依賴的特殊化運算。其他電路可提供包括(例如)條 件碼及復原支持邏輯的其他架構(gòu)化設(shè)施408。通常,ALU運算的結(jié)果被保存在輸出寄存器電 路406中,該輸出寄存器電路可將該結(jié)果轉(zhuǎn)遞至多種其他處理函數(shù)。在其他實施例中,存在 處理器單元的許多配置,本描繪僅意欲提供對一個實施例的代表性理解。
[0051] ADD指令(例如)將在具有算術(shù)及邏輯功能性的執(zhí)行單元307中執(zhí)行,而浮點指 令(例如)將在具有特殊化浮點能力的浮點執(zhí)行單元(未圖示)中執(zhí)行。優(yōu)選地,執(zhí)行單 元通過對由指令識別的操作數(shù)執(zhí)行運算碼定義的函數(shù)而對操作數(shù)進行運算。舉例而言,可 由執(zhí)行單元307對在由指令的寄存器字段識別的兩個架構(gòu)化寄存器309中發(fā)現(xiàn)的操作數(shù)執(zhí) 行ADD指令。
[0052] 執(zhí)行單元307對兩個操作數(shù)執(zhí)行算術(shù)加法且將結(jié)果存儲在第三操作數(shù)中,其中該 第三操作數(shù)可為第三寄存器或該兩個源寄存器中的一個。執(zhí)行單元307優(yōu)選利用算術(shù)邏輯 單元(ALU)402,其能夠執(zhí)行諸如移位、旋轉(zhuǎn)、與、或及XOR的多種邏輯函數(shù),以及包括加減乘 除中的任一個的多種代數(shù)函數(shù)。一些ALU 402是為了純量運算而設(shè)計且一些ALU是為了浮 點運算而設(shè)計。在實施例中,數(shù)據(jù)可視架構(gòu)而為大端序(big endian)(其中最低有效字節(jié) 在最高字節(jié)地址處)或小端序(little endian)(其中最低有效字節(jié)在最低字節(jié)地址處)。 IBM z/Architecture為大端序。帶正負號字段可具正負號及量值,其視架構(gòu)而定為二進位 反碼或二進位補碼。二進位補碼是有利的,因為ALU不必設(shè)計減法能力,因為呈二進位補碼 的負值或正值在ALU內(nèi)僅需要加法。數(shù)字通常以速記(shorthand)描繪,其中例如,12位的 字段定義4, 096字節(jié)塊的地址且通常被描繪為4Kbyte (千字節(jié))塊。
[0053] 參看圖4B,用于執(zhí)行分支指令的分支指令信息通常被發(fā)送至分支單元308,其在 其他條件運算完成之前使用諸如分支歷史表432的分支預測演算法來預測分支的結(jié)果。將 在條件運算完成之前提取并推測地執(zhí)行當前分支指令的目標。當條件運算完成時,將基于 條件運算的條件及推測出的結(jié)果而完成或舍棄推測地執(zhí)行的分支指令。典型分支指令可測 試條件碼且在條件碼滿足該分支指令的分支要求的情況下分支至目標地址,可(例如)基 于包括在寄存器字段或指令的立即字段中發(fā)現(xiàn)的數(shù)字的若干數(shù)字來計算目標地址。在實施 例中,分支單元308可使用具有多個輸入寄存器電路427、428及429及輸出寄存器電路430 的ALU 426。分支單元308可與(例如)通用寄存器、解碼/分派單元306或其他電路425 通信。
[0054] 可出于包括(例如)以下各者的多種原因而中斷一組指令的執(zhí)行:由操作系統(tǒng)起 始的上下文切換,導致上下文切換的程序例外或錯誤,導致上下文切換的I/O中斷信號,或 多個程序的多線程活動(在多線程環(huán)境中)。在實施例中,上下文切換動作存儲關(guān)于當前在 執(zhí)行中的程序的狀態(tài)信息,且接著載入關(guān)于正被調(diào)用的另一程序的狀態(tài)信息。狀態(tài)信息可 存儲在(例如)硬件寄存器中或存儲器中。狀態(tài)信息包括指向待執(zhí)行的下一指令的程序計 數(shù)器值、條件碼、存儲器轉(zhuǎn)譯信息及架構(gòu)化寄存器內(nèi)容。上下文切換活動可由硬件電路、應 用程序、操作系統(tǒng)程序或固件碼(微代碼、微微代碼或經(jīng)授權(quán)內(nèi)部碼(LIC))單獨地或組合 地實行。
[0055] 處理器根據(jù)指令定義的方法來存取操作數(shù)。指令可使用指令的一部分的值提供立 即操作數(shù),可提供明確地指向通用寄存器或?qū)S眉拇嫫鳎ɡ绺↑c寄存器)的一個或多個 寄存器字段。指令可利用由運算碼字段識別為操作數(shù)的多個隱含寄存器。指令可利用操作 數(shù)的存儲器位置。操作數(shù)的存儲器位置可由寄存器、立即字段或如由z/Architecture長位 移設(shè)施(long displacement facility)舉例說明的寄存器與立即字段的組合提供,在該z/ Architecture長位移設(shè)施中指令定義基寄存器、索引寄存器及立即字段(位移字段),其被 加在一起以提供操作數(shù)在存儲器中的位置。本文中的位置暗示在主存儲器(主存儲器)中 的位置,除非另有指示。
[0056] 參看圖4C,處理器使用載入/存儲單元310來存取存儲器。載入/存儲單元310 可通過經(jīng)由高速緩沖存儲器/存儲器接口獲得目標操作數(shù)在存儲器中的地址及將該操作 數(shù)載入架構(gòu)化寄存器309或另一存儲器位置中來執(zhí)行載入操作,或可通過獲得目標操作數(shù) 在存儲器中的地址及將從架構(gòu)化寄存器309或另一存儲器位置獲得的數(shù)據(jù)存儲在存儲器 中的目標操作數(shù)字置中來執(zhí)行存儲操作。載入/存儲單元310可為推測性的且可以相對于 指令序列而言無序的序列存取存儲器;然而,載入/存儲單元310對程序維持指令是有序地 執(zhí)行的表像。載入/存儲單元310可與架構(gòu)化寄存器309、解碼/分派單元306、高速緩沖存 儲器/存儲器接口或其他元件455通信,且包含各種寄存器電路、ALU 458及控制邏輯463 以計算存儲地址且提供管線排序以保持運算有序。一些運算可能無序,但載入/存儲單元 提供如本領(lǐng)域公知的用以使無序的運算對程序表現(xiàn)為已有序地執(zhí)行的功能性。
[0057] 優(yōu)選地,應用程序"看見"的地址常常被稱為虛擬地址。虛擬地址有時被稱為"邏 輯地址"及"有效地址"。這些虛擬地址是虛擬的,因為虛擬地址是通過多種DAT技術(shù)中的一 個(諸如圖3的DAT 312)重定向至實體存儲器位置,DAT技術(shù)包括(但不限于)將偏移值 (offset value)作為虛擬地址的首碼、經(jīng)由一個或多個轉(zhuǎn)譯表轉(zhuǎn)譯虛擬地址,轉(zhuǎn)譯表至少 單獨地或組合地包括段表及頁表,優(yōu)選地,段表具有指向頁表的輸入項。在z/Architecture 中,提供轉(zhuǎn)譯的階層,其包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表及選用的頁表。常 常通過利用轉(zhuǎn)譯后備緩沖器(TLB)來改進地址轉(zhuǎn)譯的性能,該轉(zhuǎn)譯后備緩沖器包含將虛擬 地址映射至相關(guān)聯(lián)實體存儲器位置的輸入項。輸入項是在DAT 312使用轉(zhuǎn)譯表轉(zhuǎn)譯虛擬地 址時創(chuàng)建。于是,虛擬地址的后續(xù)使用可利用快速TLB的輸入項而非緩慢的順序轉(zhuǎn)譯表存 取??赏ㄟ^包括最近最少使用(LRU)演算法的多種替換演算法管理TLB內(nèi)容。
[0058] 在處理器106為多處理器系統(tǒng)的處理器的情況下,每一處理器有責任使經(jīng)共用資 源(諸如I/O、高速緩沖存儲器、TLB及存儲器)保持連鎖以達成一致性。在實施例中,"窺 探"技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每一高速緩存行可被標記為處于共 用狀態(tài)、排他狀態(tài)、有變化狀態(tài)、無效狀態(tài)及類似狀態(tài)中的任一個中以便促進共用。
[0059] 圖3的I/O單元304為處理器106提供了用于附接至外圍設(shè)備(包括例如磁帶、 磁盤、打印機、顯示器及網(wǎng)絡(luò))的構(gòu)件。I/O單元304常常由軟件驅(qū)動程序提供給計算機程 序。在諸如來自IBM的z/Series的大型計算機中,頻道適配器及開放式系統(tǒng)適配器為大型 計算機的I/O單元,I/O單元提供操作系統(tǒng)與外圍設(shè)備之間的通信。
[0060] 檢測數(shù)據(jù)為與處理器106的操作有關(guān)的數(shù)據(jù)。在實施例中,對檢測數(shù)據(jù)及其他系 統(tǒng)層級量度的存取可能受限制或不可用。計算機處理器在特權(quán)狀態(tài)(或監(jiān)督狀態(tài))及較低 特權(quán)狀態(tài)(或問題狀態(tài))下操作。在特權(quán)狀態(tài)中,程序可經(jīng)由特權(quán)操作對所有系統(tǒng)資源進 行存?。ɡ?,對所有控制寄存器及監(jiān)督存儲器空間進行存?。?。特權(quán)狀態(tài)也被稱為特權(quán)模 式或監(jiān)督模式。在計算機處理器上執(zhí)行的操作系統(tǒng)可在特權(quán)狀態(tài)中操作。較低特權(quán)狀態(tài)為 對系統(tǒng)資源的存取受限制的非特權(quán)狀態(tài)。舉例而言,在較低特權(quán)狀態(tài)中執(zhí)行的應用程序可 對控制寄存器具有有限存取權(quán)或無存取權(quán),且僅可存取由操作系統(tǒng)指派給應用程序的用戶 存儲器空間。較低特權(quán)狀態(tài)通常被指派給在操作系統(tǒng)的控制下執(zhí)行的應用程序,且不可在 較低特權(quán)狀態(tài)中執(zhí)行特權(quán)操作。較低特權(quán)狀態(tài)也被稱為問題狀態(tài)、問題模式或用戶模式。
[0061] 對于在較低特權(quán)狀態(tài)中執(zhí)行的程序而言不可進行寫入存取的一個這種受限資源 為程序狀態(tài)字(PSW)。PSW可包含待執(zhí)行的下一指令的程序計數(shù)器、可由分支指令使用的條 件碼字段、用于指示檢測被啟用或停用的檢測控制字段,及用以控制指令排序且確定計算 機處理器的狀態(tài)(包括指派給程序的特權(quán)狀態(tài))的其他信息。在多線程處理環(huán)境中,多個 程序共用可用計算機處理器能力或?qū)⒖捎糜嬎銠C處理器能力按時間截塊。程序中的每一個 具有上下文信息(context information),其包括相關(guān)聯(lián)PSW、用于存取指派給程序的主存 儲器的地址轉(zhuǎn)譯表的原始地址、一組通用寄存器當前值、控制寄存器、浮點寄存器等。目前 在作用中或控制的PSW被稱為當前PSW。PSW管理目前在執(zhí)行中的程序。計算機處理器具 有中斷能力,其準許計算機處理器回應于例外條件及外部刺激而迅速地上下文切換至另一 程序。當中斷出現(xiàn)時,計算機處理器針對特定中斷類別而將當前PSW置于經(jīng)指派存儲位置 (稱為舊PSW位置)中。計算機處理器從第二經(jīng)指派存儲位置提取新PSW。此新上下文確 定了待執(zhí)行的下一程序。在實施例中,這些存儲位置位于計算機處理器可存取的存儲器位 置中。當計算機處理器已完成處理該中斷時,處置該中斷的程序可重新載入包括舊PSW的 舊上下文,使舊PSW又變?yōu)楫斍癙SW,使得被中斷程序可繼續(xù)。
[0062] 可以明確方式(例如,當指令執(zhí)行讀取PSW位的部分時)或隱含方式(例如,在指 令提取、操作數(shù)提取、地址產(chǎn)生計算、地址產(chǎn)生源等中)參考PSW的字段。明確參考通常在 運行時間執(zhí)行,而隱含參考通常在指令執(zhí)行期間在管線的不同階段(即,指令提取、指令解 碼、運行時間及完成時間)執(zhí)行。可獨立于彼此來參考或更新PSW中的個別字段。
[0063] 在實施例中,通過操縱上下文,操作系統(tǒng)控制計算機處理資源,包括由計算機處理 器啟用運行時間檢測??稍诓僮飨到y(tǒng)的執(zhí)行期間以及由操作系統(tǒng)所執(zhí)行的任何軟件應用程 序啟用或停用運行時間檢測。運行時間檢測的啟用/停用狀態(tài)經(jīng)存儲為與程序相關(guān)聯(lián)的 PSW中的上下文信息。
[0064] 運行時間檢測(RI)設(shè)施可并入實施z/Architecture的模型上。當RI設(shè)施經(jīng)安 裝且被啟用時,在程序執(zhí)行期間將數(shù)據(jù)收集至CPU內(nèi)的一個或多個收集緩沖器中且接著將 其報告至程序緩沖器。所存儲信息的每一單元被稱為報告群組。報告群組的內(nèi)容由多個記 錄組成,記錄的內(nèi)容表示由CPU在程序執(zhí)行期間識別的事件。
[0065] 當以一配置安裝運行時間檢測設(shè)施時,PSW字段(RI位)啟用運行時間檢測。該 運行時間檢測控制的有效性確定了開啟RI位的能力,但當RI為1時,CPU控制有效且運行 時間檢測經(jīng)啟用。運行時間檢測設(shè)施可包括以下指令:載入運行時間檢測控制、修改運行時 間檢測控制、運行時間檢測發(fā)出、運行時間檢測下一個、運行時間檢測關(guān)閉、運行時間檢測 開啟、存儲運行時間檢測控制,及測試運行時間檢測控制。
[0066] 載入運行時間檢測控制(LRIC)指令初始化管理運行時間檢測的運行時間檢測控 制。修改運行時間檢測控制(MRIC)指令修改最初由LRIC創(chuàng)建的運行時間檢測控制的全 部或子集。運行時間檢測發(fā)出(RIEMIT)指令通過將通用寄存器的值存儲在收集緩沖器中 來收集該值。運行時間檢測下一個(RINEXT)指令執(zhí)行對在RINEXT之后的下一個順序指令 (NSI)的導向取樣。運行時間檢測關(guān)閉(RIOFF)指令停用運行時間檢測。運行時間檢測開 啟(RION)指令啟用運行時間檢測。存儲運行時間檢測控制(STRIC)指令將該運行時間檢 測控制的當前值置于指定的存儲位置中。測試運行時間檢測控制(TRIC)指令檢查該運行 時間檢測控制。在有效的情況下,設(shè)置控制經(jīng)更改指示符的狀態(tài)。
[0067] 運行時間檢測設(shè)施包括用于使測量警告外部中斷擱置(pending)的能力。由運行 時間檢測收集且報告至程序緩沖器的信息的一些是依賴模型的,且因此未被定義。由運行 時間檢測設(shè)施提供的樣本及數(shù)據(jù)是用于對性能特性的統(tǒng)計估計,且是實質(zhì)上準確的,且可 能不可重復。舉例而言,不管取樣模式如何,都不可預測:導致例外或與特定系統(tǒng)內(nèi)部活動 相關(guān)聯(lián)的樣本指令是否會導致報告群組的存儲,以及如果報告群組經(jīng)存儲,包括在運行時 間檢測數(shù)據(jù)中的依賴模型數(shù)據(jù)是否會受影響。
[0068] 收集緩沖器是用以捕獲記錄的集合,記錄的內(nèi)容報告在程序執(zhí)行期間由處理器識 別的事件。示例為:一個或多個采納分支的執(zhí)行;事務執(zhí)行中止事件;指令提取高速緩存未 命中;數(shù)據(jù)提取或存儲高速緩存未命中;以及RIEMIT指令的操作數(shù)。RIEMIT指令的執(zhí)行通 過將通用寄存器的值存儲至收集緩沖器中來收集該值。可在諸如指令數(shù)據(jù)緩沖器的其他緩 沖器中收集和/或存儲額外數(shù)據(jù)。
[0069] 報告受報告控制控制。當樣本指令經(jīng)識別時,每一報告控制啟用對相應條件的檢 查。如果相應條件存在,則形成且存儲報告群組。當無報告控制經(jīng)啟用或經(jīng)啟用報告控制 的相應條件不存在時,不存儲報告群組??蓮闹噶顢?shù)據(jù)緩沖器及其他依賴模型源獲取關(guān)于 樣本指令所報告的數(shù)據(jù),且接著將其用以創(chuàng)建報告群組的一個或多個記錄的內(nèi)容,一個這 種記錄為指令記錄。
[0070] 可在報告群組存儲器中捕獲的記錄類型包括:填充、額外、開始、時間戳、指令、發(fā) 出、事務執(zhí)行(TX)中止、調(diào)用、返回和傳送。當收集緩沖器中的有效記錄的數(shù)目不足以填滿 當前報告群組大小的報告群組時,在報告群組中使用填充記錄(filler record)。可在報告 群組的額外區(qū)段中使用額外記錄。開始記錄為第一報告群組的第一記錄。時間戳記錄經(jīng)存 儲為除第一報告群組外的每一個報告群組的記錄〇。當針對樣本指令存儲報告群組時創(chuàng)建 指令記錄作為該報告群組的最后記錄。發(fā)出記錄是通過RIEMIT的成功執(zhí)行而創(chuàng)建。事務 執(zhí)行(TX)模式中止記錄是通過隱含中止創(chuàng)建或由事務中止指令的執(zhí)行而創(chuàng)建。調(diào)用記錄 是通過經(jīng)分類為調(diào)用類型分支指令的分支指令的執(zhí)行而創(chuàng)建。返回記錄是通過經(jīng)分類為返 回指令的返回類型分支指令的執(zhí)行而創(chuàng)建。傳送記錄是通過滿足特定條件碼準則的分支指 令的執(zhí)行而創(chuàng)建。
[0071] 圖5描繪可實施于實施例中的用于處理器的運行時間檢測的系統(tǒng)的示意圖。在實 施例中,系統(tǒng)500包括中央處理單元(CPU),諸如圖1的處理器106。在實施例中,處理器 106為單一處理器。在替代實施例中,處理器106為多核心處理器的單一處理核心。在實施 例中,處理器106能夠以變化的速度操作。
[0072] 在實施例中,處理器106進一步包括寄存器510。寄存器510為能夠存儲數(shù)據(jù)的 字以供處理器106使用的硬件寄存器。寄存器510包括用于存儲可由處理器106存取的數(shù) 據(jù)的位的一個或多個鎖存器。寄存器510可包括(例如)多個通用寄存器和多個控制寄存 器。處理器106另外包括與寄存器510通信的檢測模塊506。檢測模塊506為控制處理器 106的檢測的處理電路。檢測模塊506配置以直接從處理器106收集檢測數(shù)據(jù),諸如一個或 多個采納分支的執(zhí)行路徑、事務執(zhí)行中止事件、各種運行時間操作數(shù)、時間戳信息等。檢測 模塊506從處理器106收集檢測數(shù)據(jù),且將檢測數(shù)據(jù)存儲在收集緩沖器508中。在實施例 中,收集緩沖器508為收集從檢測模塊506接收的數(shù)據(jù)的循環(huán)緩沖器,且當該循環(huán)緩沖器被 填滿時,該循環(huán)緩沖器用新數(shù)據(jù)覆寫最舊數(shù)據(jù)。
[0073] 處理器106執(zhí)行一個或多個操作系統(tǒng)516和一個或多個應用程序518。一個或多 個操作系統(tǒng)516和一個或多個應用程序518存儲在存儲器520 (諸如硬驅(qū)動器、CD/R0M、閃 速存儲器等)中,且被載入至主存儲器514中的為存儲目前執(zhí)行的操作系統(tǒng)和/或應用程 序的一個或多個作用中片段、被調(diào)用頁(其是按需要從存儲器520載入至運行時間存儲器 504中)而保留的運行時間存儲器504區(qū)域中。在實施例中,操作系統(tǒng)中的每一個作為由超 管理器(未圖示)管理且由處理器106執(zhí)行的虛擬機來執(zhí)行。
[0074] 在實施例中,處理器106將來自主存儲器514中的用于目前執(zhí)行的操作系統(tǒng)或應 用程序的PSW數(shù)據(jù)512的PSW 512載入寄存器510中且設(shè)置(例如)寄存器510中的一個 或多個處理器設(shè)置。在實施例中,寄存器510中的PSW包括用于啟用及控制檢測模塊506 的一個或多個位。
[0075] -個或多個應用程序518包括經(jīng)編譯以在特定操作系統(tǒng)上執(zhí)行的軟件應用程序、 在解譯器上執(zhí)行的經(jīng)解譯碼(例如,Java)或操作系統(tǒng)支持線程(例如,進程管理、守護進 程等)。一個或多個操作系統(tǒng)516和/或一個或多個應用程序518中的每一個可執(zhí)行指令 以觸發(fā)檢測模塊506以使其開始或停止收集檢測數(shù)據(jù)。
[0076] 在實施例中,一個或多個應用程序518中的一個執(zhí)行指令,該指令已被確定為樣 本指令,從而在該樣本指令的執(zhí)行完成時創(chuàng)建樣本點,且接著使檢測模塊506將應用程序 的所收集數(shù)據(jù)從收集緩沖器508移動至主存儲器514中的可由應用程序存取的程序緩沖器 522。主存儲器514可為本領(lǐng)域已知的任何可尋址存儲器。在實施例中,主存儲器514可包 括有時被稱為高速緩沖存儲器的快速存取緩沖存儲器。每一 CPU可具有相關(guān)聯(lián)高速緩沖存 儲器。在額外實施例中,主存儲器514為動態(tài)隨機存取存儲器(DRAM)。在又一實施例中,主 存儲器為存儲器件,諸如可由應用程序存取的計算機硬驅(qū)動器或閃速存儲器。
[0077] 為了配置運行時間檢測控制,處理器106支持載入運行時間檢測控制(LRIC)指 令。除本文予以進一步描繪的特定LRIC字段外,將理解,也可定義額外字段以支持其他功 能性。LRIC指令可用以載入運行時間檢測且最初配置運行時間檢測,且是由圖5的檢測模 塊506支持。在實施例中,檢測模塊506 (也被稱為運行時間檢測模塊506)實施運行時間 檢測控制及報告控制。運行時間檢測控制的當前狀態(tài)可使用存儲運行時間控制(STRIC)指 令從圖5的寄存器510存儲至主存儲器514中。可作為LRIC指令的操作數(shù)載入的控制塊 的各種字段的定義也在本文中用以指代運行時間檢測控制的相應值的狀態(tài)。
[0078] 圖6描繪實施例中的包括可由特權(quán)狀態(tài)設(shè)置的控制的運行時間檢測控制控制塊 (RICCB)的一部分??刂茐K部分600可包括除了參看圖6所描繪的那些值之外的額外值。 可由LRIC指令來執(zhí)行對控制塊部分600的修改。
[0079] 該控制塊部分包括有效性位602 (V位)。有效性位602指示處理器中的運行時間 檢測控制的集合的有效性,因為控制是由LRIC指令先前設(shè)置。
[0080] 該控制塊也包括S位604,其用以確定是否允許較低特權(quán)狀態(tài)程序執(zhí)行MRIC指令。 K位606指示較低特權(quán)狀態(tài)程序是否被準許在半特權(quán)狀態(tài)中關(guān)于運行時間檢測控制(諸如 運行時間檢測控制的原始地址及極限地址)進行執(zhí)行。H位608確定地址控制(S卩,原始地 址、極限地址及當前地址)是否參考主要虛擬地址空間(primary virtual address space) 或主虛擬地址空間(home virtual address space)。0位610被忽略且當作0對待。
[0081] 較低特權(quán)狀態(tài)樣本報告控制位612 (Ps位)是與較低特權(quán)狀態(tài)程序結(jié)合使用。當 在較低特權(quán)狀態(tài)中且運行時間檢測控制中的Ps位612為零時,在運行時間檢測經(jīng)啟用時忽 略運行時間檢測控制的報告控制,且因此不導致存儲報告群組。當在較低特權(quán)狀態(tài)中且運 行時間檢測控制中的Ps位612為1時,檢查報告控制且根據(jù)其經(jīng)定義功能來加以使用。
[0082] 監(jiān)督狀態(tài)樣本報告控制位614 (Qs位)是與監(jiān)督狀態(tài)程序結(jié)合使用。當在監(jiān)督狀 態(tài)中且運行時間檢測控制中的Qs位614為零時,在運行時間檢測經(jīng)啟用時忽略運行時間檢 測控制的報告控制,且因此不導致存儲報告群組。當在監(jiān)督狀態(tài)中且運行時間檢測控制中 的Qs位614為1時,檢查報告控制且根據(jù)其經(jīng)定義功能來加以使用。
[0083] 較低特權(quán)狀態(tài)收集緩沖器控制位616 (Pc位)控制著對圖5的收集緩沖器508的 更新。當在較低特權(quán)狀態(tài)中且運行時間檢測控制中的Pc位616為零時,在運行時間檢測經(jīng) 啟用時忽略運行時間檢測控制的收集緩沖器控制,且收集緩沖器508的更新被阻止。當在 較低特權(quán)狀態(tài)中且運行時間檢測控制中的Pc位616為1時,檢查收集緩沖器控制且根據(jù)其 經(jīng)定義功能來加以使用。
[0084] 監(jiān)督狀態(tài)收集緩沖器控制位618 (Qc位)控制著對收集緩沖器508的更新。當在 監(jiān)督狀態(tài)中且運行時間檢測控制中的Qc位618為零時,在運行時間檢測經(jīng)啟用時忽略運行 時間檢測控制的收集緩沖器控制,且收集緩沖器508的更新被阻止。當在監(jiān)督狀態(tài)中且運 行時間檢測控制中的Qc位618為1時,檢查經(jīng)指示收集緩沖器控制且根據(jù)其經(jīng)定義功能來 加以使用。
[0085] G位620為運行時間檢測暫停中斷(也被稱為暫停中斷)的擱置控制。當G位620 為零時,暫停中斷不在擱置中。當G位602為1時,暫停中斷在擱置中。當程序緩沖器522 中的第一報告群組被寫入時,G位620被設(shè)置為零。即,當運行時間檢測程序緩沖器原始地 址(R0A)702等于圖7的運行時間檢測程序緩沖器當前地址(RCA)706時,G位620被設(shè)置為 零。當嘗試將除了第一報告群組之外的報告群組存儲在程序緩沖器522中時,G位620在 運行時間檢測暫停條件不存在的情況下經(jīng)設(shè)置為零,且報告群組被存儲。當嘗試將除了第 一報告群組之外的報告群組存儲在程序緩沖器522中時,G位620在運行時間檢測暫停條 件存在的情況下經(jīng)設(shè)置為1,且不存儲報告群組。
[0086] U位622為用于緩沖器滿中斷及暫停中斷的啟用控制。當U位622為零時,中斷請 求的產(chǎn)生被停用,且如果該產(chǎn)生在擱置中,則其保持擱置。
[0087] L位624為緩沖器滿中斷的擱置控制。當L位624為零時,緩沖器滿中斷不在擱置 中。當L位624為1時,緩沖器滿中斷在擱置中。
[0088] 密鑰字段626為4位的無正負號的整數(shù),其值被用作報告群組的存儲的存儲保護 密鑰。僅在存儲密鑰匹配與對存儲器存取的請求相關(guān)聯(lián)的存取密鑰時才準許報告群組的存 儲,且在存儲密鑰匹配存取密鑰時或在存儲密鑰的提取保護位為零時準許提取。在存儲密 鑰的四個存取控制位等于存取密鑰時或在存取密鑰為零時,密鑰匹配。
[0089] 圖7描繪當MRIC被準許以半特權(quán)模式(S卩,K位為1)執(zhí)行時的RICCB控制塊的 一部分??刂茐K700也可為用于初始化運行時間檢測控制的LRIC指令的操作數(shù)。控制塊 700可包括除了參看圖7所描繪的那些值之外的額外值。在實施例中,MRIC指令操作數(shù)的 未另外指明的多個區(qū)段不可由較低特權(quán)狀態(tài)程序存取。當半特權(quán)模式被準許時,運行時間 檢測程序緩沖器原始地址(ROA) 702及運行時間檢測程序緩沖器極限地址(RLA) 704是由較 低特權(quán)狀態(tài)程序用MRIC指令設(shè)置。ROA 702為圖5的程序緩沖器522的第一字節(jié)的位置。 RLA 704指示程序緩沖器522的最后一個字節(jié)的位置。
[0090] 在實施例中,運行時間檢測程序緩沖器當前地址(RCA)706可由MRIC指令更新。 RCA 706為待存儲的下一個報告群組在程序緩沖器522中的位置。RCA 706檢查報告群組 大小字段744 (RGS字段),且影響用以形成程序緩沖器522的地址的有效位位置的數(shù)目。64 位的RCA 706為字0、字1的位位置0至26-RGS和附加在右邊的RGS+5二進位零。此為將 存儲在程序緩沖器522中的后續(xù)報告群組在圖5的程序緩沖器522中的開始位置。報告群 組為由檢測模塊506創(chuàng)建且隨后存儲在程序緩沖器522中的信息單元。在實施例中,當由 RCA 706指定的RGS字段744不等于運行時間檢測控制的當前報告群組大?。矗琑CA 706 會改變RGS字段744)時,則將RCA 706設(shè)置為ROA 702。
[0091] 剩余樣本間隔計數(shù)字段742 (RSIC字段)可由較低特權(quán)程序使用MRIC指令更新。 RSIC字段742包括64位的無正負號的整數(shù),其指示剩余樣本間隔計數(shù)。當運行時間檢測控 制中的RSIC字段742的值為零或等于縮放因子(scaling factor)字段740 (SF字段)中 的值,且運行時間檢測經(jīng)啟用時,則下一樣本間隔為基于取樣模式708 (M)及SF字段740的 值的完整間隔。當RSIC字段742是非零的且小于SF字段740,且運行時間檢測經(jīng)啟用時, 下一樣本間隔為部分間隔。當RSIC字段742是非零的且大于SF字段740值,且運行時間 檢測經(jīng)啟用時,下一樣本間隔為延長間隔。當延長間隔過期時,下一間隔是基于SF字段740 值。當RSIC字段742經(jīng)設(shè)置為非零值時,其經(jīng)受SF字段740也經(jīng)受的相同依賴模型最大 限制。當RSIC字段742的原始值為零時,取樣模式將支配在LRIC指令及MRIC指令的執(zhí)行 期間RSIC字段742是否經(jīng)設(shè)置為SF字段740中的值,或該字段是否繼續(xù)展示為零,直至運 行時間檢測經(jīng)啟用。
[0092] SF字段740含有64位的無正負號的整數(shù),其值為單元的縮放因子計數(shù)。單元的尺 寸是根據(jù)模式字段708 (M字段)確定。當RSIC字段742中的值為零時,SF字段740提供 RSIC字段742的遞減至零的初始值,在遞減至零時,當前指令被識別為樣本指令,且從SF字 段740值再新間隔計數(shù)。SF字段740的有效值在1至2 64-1的范圍中。如果指定了零,則 采用值一。然而,每一模型可具有SF字段740的最小值及最大值兩者。最小值及最大值也 可基于模式字段708而不同。如果指定了小于最小值的值,則依賴模型最小值被載入。如 果指定了大于最大值的值,則依賴模型最大值被載入。
[0093] DC控制字段736為4位的無正負號的整數(shù),其值指明與數(shù)據(jù)提取或存儲高速緩存 未命中相關(guān)聯(lián)的高速緩存等待層級。即,樣本指令遭遇數(shù)據(jù)存取高速緩存未命中。除非被 另一運行時間檢測控制禁止,否則嘗試存儲表示樣本指令的報告群組,該樣本指令的數(shù)據(jù) 存取在數(shù)值上大于或等于由DC控制字段736的值指明的層級的高速緩存等待層級處經(jīng)識 別為未命中。用于數(shù)據(jù)存取的高速緩沖存儲器結(jié)構(gòu)及高速緩存等待層級是依賴模型的。對 于具有多個操作數(shù)或長操作數(shù)的指令,其是依賴模型于哪一操作數(shù)存?。ㄈ绻嬖冢┦怯?于報告控制。依賴模型行為可忽略DC控制字段736的值,且因此不使用該值作為存儲報告 群組的原因。
[0094] IC字段734為4位的無正負號的整數(shù),其值指明與指令提取高速緩存未命中相關(guān) 聯(lián)的高速緩存等待層級。即,樣本指令的提取遭遇指令提取高速緩存未命中。對于IC字段 734及DC控制字段736兩者而言,高速緩存等待層級為特定高速緩存層級存取與進行觀測 的處理器的距離的抽象化。等待層級取決于處理器與主存儲器之間的嵌套高速緩存層級的 量與在多個處理器之間共用這些高速緩存層級的方式的組合。較大等待層級通常對應于消 耗較多時間的存取。IC字段734及DC控制字段736中的值可被視為高速緩存等待層級的 零原點識別。舉例而言,值零對應于Ll高速緩沖存儲器(即,最接近處理器的高速緩沖存 儲器)。值一因此為下一層高速緩沖存儲器,其可被稱為L2高速緩沖存儲器,或甚至LI. 5 高速緩沖存儲器(在一些機器中)。值2-15指明額外高速緩存等待層的邏輯漸進,直至達 到主存儲器,但不包括主存儲器本身。一般而言,高速緩沖存儲器結(jié)構(gòu)不會深達十五層。因 此,IC字段734及DC控制字段736中的值15被解譯為特殊情況,其分別且無關(guān)于高速緩 存等待層級地意味:并未出于產(chǎn)生報告群組的存儲的目的而識別出指令提取或數(shù)據(jù)存取的 高速緩存未命中。除非被另一運行時間檢測控制禁止,否則嘗試存儲表示樣本指令的報告 群組,該樣本指令的提取被識別在數(shù)值上大于或等于由IC字段734的值指明的層級的高速 緩存等待層級處未命中。用于指令提取的高速緩沖存儲器結(jié)構(gòu)及高速緩存等待層級是依賴 模型的。依賴模型行為可忽略IC字段734的值,且因此不使用該值作為存儲報告群組的原 因。
[0095] 高速緩存等待層級更動控制報告控制位732 (F位)是用于非分支指令且用于分支 預測控制。當運行時間檢測控制中的F位732為零時,檢查運行時間檢測控制的高速緩存 報告控制(IC字段734及DC控制字段736)且根據(jù)其經(jīng)定義功能來加以使用。檢查運行時 間檢測控制的分支預測控制(BPxn722、BPxt 724、BPti 726及BPni 728位)且根據(jù)其經(jīng)定 義功能來加以使用。當F位732為1時,這些相同控制被忽略且報告群組被存儲,除非被另 一控制禁止。
[0096] 數(shù)據(jù)高速緩存未命中控制位730 (D位)指示報告群組是否將被存儲。如果D位730 為1,則可或可不將額外類型記錄置于報告群組的含有關(guān)于樣本指令的依賴模型數(shù)據(jù)的額 外區(qū)段中。
[0097] MRIC 指令包括分支預測(BP)報告控制(BPxn 722、BPxt 724、BPti 726 及 BPni 728)。如果運行時間檢測控制中的BP報告控制位為零,則不檢查相應條件。如果BP報告 控制位為1且相應分支預測條件存在,則報告群組被存儲。
[0098] BPxn位722在為1時啟用對分支預測信息的檢查。因此,如果樣本分支被錯誤地 預測為經(jīng)采納而實際上未被采納,則報告群組被存儲。
[0099] BPxt位724在為1時啟用對分支預測信息的檢查。因此,如果樣本分支被錯誤地 預測為未被采納而實際上經(jīng)采納,則報告群組被存儲。
[0100] BPti位726在為1時啟用對分支預測信息的檢查。因此,如果樣本分支被正確地 預測為經(jīng)采納且實際上被采納,但分支目標被錯誤地預測,則報告群組被存儲。
[0101] BPni位728在為1時啟用對分支預測信息的檢查。因此,如果樣本分支被正確地 預測為未被采納且實際上未被采納,且分支目標被錯誤地預測,則報告群組被存儲。
[0102] 事務執(zhí)行模式記錄位720 (X位)的啟用控制控制著對事務執(zhí)行模式中止記錄的收 集。當運行時間檢測控制中的X位720為零時,不收集事務執(zhí)行模式中止記錄。當X位720 為1時,收集事務執(zhí)行模式中止記錄且將記錄置于圖5的收集緩沖器508中。如果模型未 被安裝有事務執(zhí)行設(shè)施,則忽略X位720。
[0103] RIEMIT指令控制位718 (E位)控制RIEMIT指令的執(zhí)行。當在運行時間檢測經(jīng)啟 用時運行時間檢測控制中的E位718為零或被忽略且當作零來對待時,RIEMIT執(zhí)行無操作 (no-operation)。當E位718為1且未被以其他方式忽略時,RIEMIT經(jīng)啟用以執(zhí)行其經(jīng)定 義功能。
[0104] J位746在為零時指定:不管掩碼值如何,條件分支(BC)指令在其他類型分支類 別中。如果J位746為1,則指定掩碼15的BC指令在返回類型分支類別中。當BC指令指 定掩碼1-14時,其不受J位746影響且始終在其他類型分支類別中。當在返回類型分支類 別中時,R位716控制至圖5的收集緩沖器508中的包括。當在其他類型分支類別中時,B 位748控制至收集緩沖器508中的包括。其他類型分支類別也可被指示為傳送類型分支類 別。
[0105] 指令地址碼位714(C位)控制調(diào)用類型分支的啟用。如果運行時間檢測控制中的 C位714為1且指令為調(diào)用類型分支,則收集緩沖器508被更新。如果對調(diào)用類型分支及返 回類型分支兩者的依賴模型檢測被組合,則C位714對兩個類型起作用,且R位716無效。
[0106] R位716為返回類型分支的啟用控制。如果運行時間檢測控制中的R位716為1 且指令為返回類型分支,則收集緩沖器508被更新。
[0107] B位748為對除了調(diào)用類型分支及返回類型分支以外的分支的啟用控制。如果運 行時間檢測控制中的B位748為1且指令為由運行時間檢測識別的其他類型分支,則收集 緩沖器508被更新。
[0108] 最大地址已超出位712 (MAE位)在經(jīng)設(shè)置為1時指示已存儲了具有經(jīng)設(shè)置為1的 C位714的一個或多個報告群組。一旦ME位712經(jīng)設(shè)置為1,繼續(xù)運行時間檢測的執(zhí)行不 會將該位設(shè)置回至零。將MAE位712指定為零的LRIC指令或MRIC指令的執(zhí)行會將ME位 712設(shè)置為零。
[0109] 運行時間檢測下一個(RINEXT)控制位710 (N位)控制著對運行時間檢測下一個 指令(其控制樣本指令的執(zhí)行)的啟用。當運行時間檢測控制中的N位710為零或被忽略 且當作零來對待時,RINEXT執(zhí)行無操作。當N位710為1且未被以其他方式忽略時,RINEXT 被啟用以執(zhí)行其經(jīng)定義功能。
[0110] 模式字段708 (M字段)為4位的無正負號的整數(shù),其在運行時間檢測控制中的值 指定用于運行時間檢測控制的取樣模式。所支持的取樣模式可包括基于對CPU循環(huán)進行計 數(shù)、對指令進行計數(shù)的取樣,或可回應于諸如RINEXT的樣本指令而定向至樣本。
[0111] 報告群組大小字段744 (RGS)為3位的無正負號的整數(shù),其值指定報告群組的記錄 的數(shù)目(Rd。報告群組中的記錄的數(shù)目可從兩個記錄(包括開始/時間戳記錄及指令最 后記錄)變化至多達256個記錄。在實施例中,上限可為依賴模型的。置于報告群組中的 16字節(jié)記錄的數(shù)目為2 (m:s+1)。
[0112] 主要CPU能力抑制控制位738 (Y位)及次要CPU能力抑制控制位739 (Z位)被共 同稱為抑制控制。對報告群組的存儲的抑制意味著不執(zhí)行存儲嘗試。當配置中的所有CPU 的CPU能力相同時,抑制控制無效且不發(fā)生抑制。在一配置中,如果一個CPU的CPU能力不 同于另一 CPU的能力,則抑制控制生效,且將至少一個CPU稱為以CPU能力或主要CPU能力 操作,而將至少一其他CPU稱為以次要CPU能力操作。主要CPU能力及次要CPU能力是不同 操作速度。當Y位738及Z位739均為零時,抑制不發(fā)生。當Y位738為零且Z位739為 1時,在CPU(例如,處理器106)以次要CPU能力操作的情況下發(fā)生抑制。當Y位738為1 且Z位739為零時,在CPU(例如,處理器106)以主要CPU能力操作的情況下發(fā)生抑制。當 Y位738及Z位739均為1時,發(fā)生抑制。
[0113] 圖7的以上字段及位是字段的放置及命名的示例,且在本文中為清楚起見而提 供。將理解,在其他實施例中,可僅使用字段的子集,字段可呈任何次序或在任何位置中,和 /或可用不同名稱來表示。
[0114] 當運行時間檢測經(jīng)安裝且啟用時,可在收集緩沖器508中捕獲許多事件及數(shù)據(jù)。 收集緩沖器508被用以捕獲記錄的集合,記錄的內(nèi)容報告在程序執(zhí)行期間由處理器106識 別的事件。示例為:一個或多個采納分支的執(zhí)行,事務執(zhí)行中止事件,高速緩存未命中,及運 行時間檢測發(fā)出指令的操作數(shù)。IC控制字段734及DC控制字段736設(shè)置層級,程序可對在 該層級采取用以改進指令或數(shù)據(jù)預取行為的某一校正動作有興趣。RIEMIT指令的執(zhí)行通過 將通用寄存器的值存儲至收集緩沖器508中來收集該值。額外數(shù)據(jù)可被收集和/或存儲在 其他緩沖器中,其他緩沖器諸如用以收集依賴模型樣本指令數(shù)據(jù)以建構(gòu)運行時間檢測指令 記錄的指令數(shù)據(jù)緩沖器(IDB)(未描繪)。
[0115] 所收集的運行時間檢測信息是以取樣方式報告。對來自指令流的指令進行取樣。 經(jīng)取樣的指令被稱為樣本指令。當運行時間檢測經(jīng)啟用時,用于確定樣本指令的若干模式 被定義如下。在循環(huán)計數(shù)模式中,計數(shù)為SF 740或RSIC 742(其任一個被用以提供用于當 前間隔的計數(shù))中所指定的CPU循環(huán)的數(shù)目?;貞谂c取樣模式相關(guān)聯(lián)的事件調(diào)整該計數(shù)。 舉例而言,當處理器106處在操作狀態(tài)中時,該計數(shù)可被遞減。當該計數(shù)遞減至諸如零的臨 限值時,當前指令被識別為樣本指令,且將該計數(shù)重新初始化至SF 740值且該計數(shù)開始隨 下一循環(huán)遞減。當樣本指令的執(zhí)行完成時,執(zhí)行報告(如果適當)。
[0116] 在指令計數(shù)模式中,在SF 740或RSIC 742 (其任一個被用以提供用于當前間隔的 計數(shù))中指定計數(shù)。針對由單一操作單元組成的指令,在作為用以調(diào)整計數(shù)的事件的指令 完成時遞減計數(shù)。當計數(shù)遞減至諸如零的臨限值時,指令為樣本指令。對于由多個操作單 元組成的指令,可按以下方式中的一個遞減計數(shù):
[0117] a.針對可中斷指令,直到部分完成的所有操作單元表示一個已計數(shù)單元,針對該 已計數(shù)單元,計數(shù)遞減。
[0118] b.針對可中斷指令,從最近的部分完成起直到最終完成的所有操作單元表示一個 已計數(shù)單元,針對該已計數(shù)單元,計數(shù)遞減。
[0119] c.針對在執(zhí)行由指令的參數(shù)指定的處理的CPU確定子部分之后完成的指令,完成 表示一個已計數(shù)單元,針對該已計數(shù)單元,計數(shù)遞減。
[0120] d.針對在執(zhí)行多個操作單元之后完成而不在以上類別a_c中的指令,最后一個操 作單元的完成表示一個已計數(shù)單元,針對該已計數(shù)單元,計數(shù)遞減。
[0121] 當針對指令的任何已計數(shù)單元而言計數(shù)遞減至零時,指令為樣本指令。當達到諸 如零的臨限值時,將計數(shù)重新初始化至SF 740值,且計數(shù)開始如以上a-d中所描繪的倒數(shù) 計數(shù)(count down)。在計數(shù)模式的所有情況下,在樣本指令的最后一個操作單元完成之后 發(fā)生報告(如果適當)。
[0122] 在導向取樣模式中,當N位710為1且RINEXT指令被成功執(zhí)行時,導向取樣發(fā)生。 樣本指令為RINEXT指令的后的下一順序指令(NSI)。如果下一順序指令為執(zhí)行類型指令, 則樣本指令為該執(zhí)行類型指令的目標指令。當處于循環(huán)計數(shù)或指令技術(shù)模式中時,可發(fā)生 導向取樣。計數(shù)取樣結(jié)合導向取樣及其所導致動作中的任一個繼續(xù)且不另外受影響,以下 情況除外:如果根據(jù)計數(shù)取樣確定的樣本指令與由導向取樣確定的指令相同,則不存儲兩 個報告群組。
[0123] 不管取樣模式如何,當樣本指令是由RINEXT指令的執(zhí)行識別時,存儲報告群組。 然而,運行時間檢測控制Y 738、Z 739、Qs 614及Ps 612繼續(xù)有效。
[0124] 循環(huán)計數(shù)及指令計數(shù)取樣各自基于內(nèi)部系統(tǒng)事件及例外條件而確定會經(jīng)受一定 量的可變性的適當間隔。倒數(shù)計數(shù)(countdown)在運行時間檢測從停用轉(zhuǎn)變至啟用時開 始。視可插入于RINEXT與NSI的完成之間的任何事件而定,導向取樣經(jīng)受較少量的可變性。 值得注意,中斷可導致被視為NSI的指令不再為NSI。
[0125] 與模式無關(guān),取樣識別樣本指令。一旦樣本指令經(jīng)識別,收集便在該樣本指令的執(zhí) 行完成時停止,且開始報告。接著應用管理報告的各種報告控制。在使報告群組的存儲在 擱置中時,收集繼續(xù)。
[0126] 當不在事務執(zhí)行模式中時,在樣本指令的執(zhí)行完成時,報告群組的存儲變?yōu)樵跀R 置中。當在事務執(zhí)行模式中時,在樣本指令的執(zhí)行完成時,報告群組的存儲被延后,直至事 務結(jié)束,且接著變?yōu)樵跀R置中。當報告群組的存儲被延后或在擱置中時,如果識別出以下中 斷中的任一個,則報告群組可被清除:1)程序中斷;2)緊急機器檢查中斷;3)重新啟動中 斷;及4)監(jiān)督調(diào)用中斷。
[0127] 任何擱置中的I/O、外部及可抑制的機器檢查中斷保持擱置,直至報告群組已被存 儲或運行時間檢測控制確定報告群將不被存儲。
[0128] 每一模式可或可不允許報告控制的不同集合。當取樣模式為指令計數(shù)或循環(huán)計 數(shù),但導向取樣也被使用時,可能通過多個取樣方法來識別出相同樣本指令。當此情況發(fā) 生,且待使用的報告控制根據(jù)取樣模式而不同時,應用與導向取樣相關(guān)聯(lián)的報告控制。
[0129] 如上所述,當在程序執(zhí)行期間啟用運行時間檢測時,在收集緩沖器508中在處理 器106內(nèi)收集運行時間檢測數(shù)據(jù)。在一個實施例中,收集緩沖器508是處理器106的內(nèi)部 緩沖器,其用于存儲所收集的最新的記錄。當檢測到樣本觸發(fā)點時,將記錄作為被寫入到程 序緩沖器522的報告群組的一部分從收集緩沖器508向程序緩沖器522復制。在一個實施 例中,從收集緩沖器508以非破壞性的方式復制記錄。
[0130] 收集緩沖器508可被稱為"硬件收集緩沖器",因為收集緩沖器508位于處理器 中,且在實施例中經(jīng)實施為表示給定事件的指令地址802及事件后設(shè)數(shù)據(jù)804的寄存器對 的陣列。在實施例中,指令數(shù)據(jù)緩沖器也由寄存器對的陣列來實施。事件的示例為采納分 支,針對該采納分支,寄存器對可保存該分支的指令地址,且該后設(shè)數(shù)據(jù)可保存分支的目標 以及關(guān)于分支的歷史行為的信息。在實施例中,寄存器對經(jīng)排序,且隨著事件出現(xiàn)于指令 流中而被順序地更新。維持計數(shù)器以指示陣列中的最近經(jīng)更新輸入項的索引。在實施例 中,收集緩沖器508為循環(huán)緩沖器,且當收集緩沖器508被填滿時,下一事件覆寫陣列中的 第一輸入項,且在發(fā)生后續(xù)事件時陣列的寄存器對的順序更新重新開始。因而,假設(shè)陣列 CB[0]至CB[N-1]及指示最新更新索引的計數(shù)器i,所捕獲的事件的追蹤可由序列CB[i]、 CB[i-l]、......、CB[1]、CB[0]、CB[N-1]、CB[N-2]、......、CB[i+1]來表示。在另一實施例 中,使用兩個指針:指向緩沖器中的最舊輸入項的頭指針,及指向緩沖器中的最新輸入項的 尾/當前指針。
[0131] 在收集緩沖器508中順序地捕獲表示處理器106在任何給定執(zhí)行點處的狀態(tài)的事 件。將收集緩沖器508用以捕獲記錄的集合,記錄的內(nèi)容報告在程序執(zhí)行期間由處理器106 識別的事件(例如,一個或多個采納分支的執(zhí)行,事務執(zhí)行中止事件,RIEMIT指令的操作數(shù) 等)。在實施例中,經(jīng)識別的事件視圖7中所展示的RICCB的內(nèi)容而定。所展示的收集緩沖 器508的實施例中的輸入項包括事件指令地址及其他相關(guān)的事件后設(shè)數(shù)據(jù)。事件后設(shè)數(shù)據(jù) 804的示例包括(但不限于):采納分支的指令地址及該分支的目標(包括關(guān)于分支的歷史 行為的某一信息);RIEMIT指令的指令地址及各別寄存器值;及事務中止指令的地址及各 別事務復原進入點。
[0132] 圖8中所展示的收集緩沖器508的實施例能夠存儲多達32個輸入項(S卩,關(guān)于32 個事件的信息),其中由64個位(例如,位0:63)指定每一指令地址802且由64個位(例 如,位64:127)指定事件后設(shè)數(shù)據(jù)804。收集緩沖器的大?。≧ ra)為依賴模型計數(shù),其表示 記錄的數(shù)目。展示的收集緩沖器508的實施例中,收集緩沖器的字節(jié)大小為16字節(jié)記錄大 小的倍數(shù)。在實施例中,收集緩沖器的大小為大于或等于模型的最大報告群組的計數(shù)(R Ke) 與報告群組中的未從收集緩沖器獲取的記錄的計數(shù)(Ric)之間的差的記錄數(shù)目。因此,在實 施例中,收集緩沖器的大小經(jīng)表示為:Rra彡(RmtRic)。
[0133] 在實施例中,收集緩沖器508及指令數(shù)據(jù)緩沖器(如果使用指令數(shù)據(jù)緩沖器)的 內(nèi)容被清除或以其他方式受以下事件影響:(1)中斷;(2)開啟及關(guān)閉運行時間檢測設(shè)施的 PSW位(例如,位24)從1變至0;及(3)當運行時間檢測設(shè)施處于事務執(zhí)行模式中時識別 出樣本指令時(在此情況下,對收集數(shù)據(jù)緩沖器508及指令數(shù)據(jù)緩沖器的進一步更新停止 且在事務結(jié)束時繼續(xù)),此時,報告群組的存儲在擱置中且收集緩沖器508及指令數(shù)據(jù)緩沖 器被清除。
[0134] 在諸如在圖IB中所示的模擬主計算機系統(tǒng)的一個實施例中,使用寄存器和/或存 儲器來實現(xiàn)收集緩沖器508。在這個實施例中,也使用寄存器和/或存儲器來實現(xiàn)如果存在 的選用指令數(shù)據(jù)緩沖器。
[0135] 在實施例中,額外能力可影響數(shù)據(jù)收集,且可看作提供額外數(shù)據(jù)收集點,而不實質(zhì) 上干擾先前所描繪的正常指令計數(shù)或循環(huán)計數(shù)取樣。這些能力包括RIEMIT指令的執(zhí)行, RIEMIT指令通過將通用寄存器的值存儲至收集緩沖器508中來收集該值。另外,先前所描 繪的運行時間檢測控制中的數(shù)據(jù)收集控制位可用以定制所收集數(shù)據(jù)的類型,例如,E、C、R及 B控制位。以此方式,所收集數(shù)據(jù)的類型是可程序化的。
[0136] 在實施例中,實施指令數(shù)據(jù)緩沖器以收集用以建構(gòu)運行時間檢測指令記錄的依賴 模型樣本指令數(shù)據(jù)。指令數(shù)據(jù)緩沖器從指令收集數(shù)據(jù)以便在該指令被識別為樣本指令時使 數(shù)據(jù)可用。在實施例中,該指令數(shù)據(jù)緩沖器為處理器中的硬件緩沖器/存儲位置,關(guān)于可變 為觸發(fā)器以作為樣本點的指令的信息是存儲在該硬件緩沖器/存儲位置中,使得在登出過 程期間,該信息可與來自收集緩沖器508的數(shù)據(jù)一起被寫出。類似于收集緩沖器508,該指 令數(shù)據(jù)緩沖器包括指令地址及與該指令相關(guān)聯(lián)的后設(shè)數(shù)據(jù)。指令數(shù)據(jù)緩沖器中的后設(shè)數(shù)據(jù) 常常為依賴機器的,且可包括(但不限于):高速緩存未命中相關(guān)的信息,及分支預測相關(guān) 的信息。
[0137] 根據(jù)實施例,所收集的其他數(shù)據(jù)可不來自于收集緩沖器508且可不來自于指令數(shù) 據(jù)緩沖器。示例包括用以形成以下各者的部分的數(shù)據(jù):(1)報告群組的第一記錄:時間戳或 開始記錄;及(2)額外類型的記錄,其可針對每一個報告群組而創(chuàng)建且因此不存儲在收集 緩沖器508中,這些記錄(當存在時)可放置于報告群組的額外或依賴機器部分中。這些 系統(tǒng)產(chǎn)生的記錄在本文中被稱為"系統(tǒng)信息記錄"。
[0138] 圖8描繪了在樣本點處被存儲到程序緩沖器522的報告群組800的高級示例。在 記錄中的報告群組的大小被表示為R Ke,等于2(ΜΒ+1),其中,RGS是作為指數(shù)的報告群組大小。 當在報告群組中使用時,可以或可以不非破壞性地復制從除了收集緩沖器508之外的位置 復制的模型相關(guān)的數(shù)目的記錄(R irc)。在圖8的示例中,Rffi = 8, Res = 2,并且Rnc = 4。在 圖8中所不的不例報告群組800包括首標部分802、主體部分804、額外記錄部分806和頁 腳區(qū)段808。
[0139] 首標部分802可以包括開始記錄或時間戳記錄,用于存儲狀態(tài)、跟蹤和/或定時信 息。對于在程序緩沖器中存儲的第一報告群組在首標部分802中存儲開始記錄(S卩,當RCA 706等于ROA 702時)。在一個實施例中,開始記錄包括:記錄類型字段"02";報告群組數(shù) 目(NRG)字段,用于指示在程序緩沖器中當前存儲了多少報告群組;RGS字段,用于指示報 告群組的大?。煌V梗⊿)字段,用于指示程序緩沖器522是否滿了;暫停(H)字段,用于指 示是否暫停了運行時間檢測;以及,日時(TOD)時鐘時間段,用于指示何時寫入開始記錄。 在一個實施例中,在開始記錄中的字段的至少一個子集出自RI控制塊(例如,RICCB)。時 間戳記錄的一個實施例具有記錄類型"03",并且包括用于指示何時存儲記錄的TOD時鐘字 段。
[0140] 報告群組的主體部分804可以包括用于從收集緩沖器508樣本的事件和信息的多 種記錄。事件和信息可以表示例如由發(fā)送指令捕獲的狀態(tài)信息、事務執(zhí)行異常終止、調(diào)用、 返回、分支和填充。
[0141] 在一個實施例中,在成功地執(zhí)行RIEMIT指令時,在收集緩沖器508中建立和存儲 發(fā)送記錄。發(fā)送記錄的一個實施例包括:記錄類型字段"10";指令地址碼字段,用于指示在 發(fā)送記錄中如何表示當前PSW的指令地址比特位置;指令地址字段,其根據(jù)編址模式(例 如,64、31或24比特)來變化,并且如果RIEMIT是執(zhí)行類型指令的目標則包含RIEMIT指令 或執(zhí)行類型指令的指令地址,以及,發(fā)送數(shù)據(jù)字段,用于存儲來自由RIEMIT指令指定的一 般寄存器的數(shù)據(jù)。
[0142] 在一個實施例中,通過隱含的異常終止或通過事務異常終止指令的執(zhí)行來建立和 在收集緩沖器508中存儲事務執(zhí)行模式異常終止記錄。異常終止記錄的一個實施例包括: 記錄類型字段" 11" ;指令地址碼字段;指令地址字段,其根據(jù)編址模式來變化,并且如果異 常終止指令是執(zhí)行類型指令的目標則包含異常終止指令或執(zhí)行類型指令的指令地址,以 及,用于與異常終止相關(guān)聯(lián)的任何模型相關(guān)數(shù)據(jù)的字段。
[0143] 在一個實施例中,通過調(diào)用類型分支指令的執(zhí)行來建立和存儲調(diào)用記錄,該調(diào)用 類型分支指令例如是:當R2字段非零時的BRANCH AND SAVE (分支和存儲)(BASR) ;BRANCH AND SAVE (分支和存儲)(BAS) ;BRANCH RELATIVE AND SAVE LONG ;BRANCH RELATIVE AND SAVE;當 R2 字段是非零時的 BRANCH AND LINK(BALR) ;BRANCH AND LINK(BAL);以及,當 R2 字段是非零時的BRANCH AND SAVE AND SET MODE。調(diào)用記錄的一個實施例包括:記錄類型 字段" 12" ;指令地址碼字段;指令地址字段,其根據(jù)編址模式來變化,并且如果分支指令是 執(zhí)行類型指令的目標則包含分支指令或執(zhí)行類型指令的指令地址,以及,良好作為的字段, 用于指示是否正確地預測了分支;以及,目標地址字段,其包含分支目標地址(也被稱為 "被調(diào)用位置")。
[0144] 返回記錄和傳送記錄可以具有與調(diào)用記錄相同的格式。在一個實施例中,返回記 錄具有記錄類型字段"13"并且通過諸如當R2字段非零時的BRANCH ON CONDITION(BCR) 的返回類型分支指令的執(zhí)行而被建立。對于返回記錄,如果分支是執(zhí)行類型指令的目標,則 指令地址字段包含分支指令或執(zhí)行類型指令的地址,并且目標地址字段包含返回位置。
[0145] 在實施例中,傳送記錄具有為"14"的記錄類型字段且是通過諸如以下各者 的返回類型分支指令的執(zhí)行而創(chuàng)建:a.當R2字段為非零且掩碼在1-14的范圍中時, BRANCH ON CONDITION (BCR) ;b.當J位為零或掩碼在1-14的范圍中時,BRANCH ON CONDITION (BC) ;c. BRANCH ON ⑶UNT (BCT, BCTR, BCTG, BCTGR) ;d. BRANCH ON INDEX HIGH (BXHjBXHG) ;e. BRANCH ON INDEX LOW OR EQUAL(BXLE, BXLEG) ;f. BRANCH RELATIVE ON CONDITION(BRC) ;g. BRANCH RELATIVE ON C0NDITI0NL0NG(BRCL) ;h. BRANCH RELATIVE ON COUNT(BRCT, BRCTG) ;i. BRANCH RELATIVE ON COUNT HIGH(BRCTH) ;j. BRANCH RELATIVE ON INDEX HIGH(BRXH, BRXHG) ;k. BRANCH RELATIVE ON INDEX LOW 0REQUAL(BRXLE, BRXLG); I. COMPARE AND BRANCH(CRB, CGRB) ;m. COMPARE AND BRANCH RELATIVE(CRJ, CGRJ); n.COMPARE IMMEDIATE AND BRANCH(CIB, CGIB) ;o.COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ, CGIJ) ;p.COMPARE LOGICAL AND BRANCH (CLRB,CLGRB); q.COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ, CLGRJ) ;r.COMPARE LOGICAL IMMEDIATE ANDBRANCH(CLIB, CLGIB);及 s. COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ,CLGIJ)。傳送記錄是在分支經(jīng)采納時創(chuàng)建。對于傳送記錄,指令地址字段 含有分支指令或執(zhí)行類型指令(如果分支為執(zhí)行類型指令的目標)的地址,且目標地址字 段含有返回位置。
[0146] 當收集緩沖器508中的有效記錄的數(shù)目不足以填滿具有當前RGS的報告群組時, 在報告群組中使用填充記錄。填充記錄的實施例包括"〇〇"的記錄類型字段,其指示該記錄 為填充記錄,且剩余字節(jié)是未定義的。
[0147] 額外記錄區(qū)段(在存在時)可含有依賴模型記錄。在實施例中,除了記錄類型經(jīng) 設(shè)置為"01"以指示該記錄為額外記錄且該額外記錄的剩余字節(jié)含有依賴模型數(shù)據(jù)之外,額 外記錄的格式類似于填充記錄。
[0148] 頁腳區(qū)段808可以包括包含關(guān)于樣本指令的執(zhí)行的信息的指令記錄。當對于樣本 指令存儲報告群組時,建立指令記錄。指令記錄的一個實施例包括:記錄類型字段"04"、指 令地址碼字段,用于指示如何在指令記錄中表示當前PSW的指令地址比特位置;指令地址 字段,其根據(jù)編址模式(例如,64、31或24比特)來變化,并且如果樣本指令是執(zhí)行類型指 令的目標則包含樣本指令或執(zhí)行類型指令的指令地址,以及,指令數(shù)據(jù)緩沖器(IDB)字段, 其包含從IDB收集的任何模型相關(guān)數(shù)據(jù)。
[0149] 圖9描繪了當諸如報告群組800的報告群組被存儲到程序緩沖器522并且ROA 702等于RCA 706時建立的開始記錄900的示例。當在第一報告群組后的報告群組被存 儲到程序緩沖器522時更新開始記錄900。開始記錄是第一報告群組的第一記錄。圖9的 示例開始記錄900包括用于表示記錄識別為開始記錄的記錄標識符902。報告群組的數(shù)目 (NRG) 904是自從LRIC或MRIC指令的最近成功執(zhí)行起占用的報告群組空間的計數(shù)。版本 906指示在運行時間檢測設(shè)施上運行的CPU的功能的工程改變水平。也被稱為CPU版本或 處理器版本906的版本906可以在任何記錄之間改變,雖然它一般被認為不頻繁的事件。當 在版本上的改變出現(xiàn)時,識別暫停條件,并且不存儲包括改變的版本代碼的、即將要存儲的 報告群組。
[0150] 從運行時間檢測控制RGS 744獲取報告群組大?。≧GS)908。RGS 908表示在程 序緩沖器522中的所有報告群組的大小,該報告群組包括包含開始記錄900的第一報告群 組。當指令流被遷移到在接收機器上的處理器時,可以在接收機器上將RGS 908與上限作 比較,以驗證RGS 908不超過作為模型相關(guān)的極限的上限。如果超過上限,則出現(xiàn)暫停條件 以防止超過向在接收機器上的程序緩沖器522分配的空間的界限。
[0151] 當程序緩沖器滿的條件存在時,運行時間檢測停止(S比特)910被從0改變?yōu)?。 S比特910指示已經(jīng)因為識別到程序緩沖器滿的條件導致運行時間檢測。
[0152] 能力(T字段)912當0時指示,報告群組表示在其主要CPU能力下運行的CPU上 捕獲的樣本。當T字段912是1時,報告群組表示在其次要CPU能力下運行的CPU上捕獲 的樣本。
[0153] 當日時間時鐘916可以是當原始存儲包含開始記錄900的報告群組時存儲的當前 當日時間時鐘。處理器106可以具有一個或多個可用的時鐘,從其可以確定和存儲當日時 間時鐘916值。
[0154] 暫停(H比特)914當為1時指示,已經(jīng)因為除了緩沖器滿的條件之外的原因?qū)е?暫停了運行時間檢測。當識別運行時間檢測暫停條件時,下面的步驟適用:
[0155] 1.在開始記錄900中的H比特914被設(shè)置為1。
[0156] 2.通過將G比特620設(shè)置為1來使得運行時間檢測暫停的中斷待決。
[0157] 運行時間檢測暫停的中斷保持待決,直到它被清除,。它通過下面的部分的任何一 個而被清除:
[0158] -成功地執(zhí)行將G比特620指定為0的LRIC指令。
[0159] -運行時間檢測暫停中斷的提供。
[0160] -CPU 復位。
[0161] -如果加載等于ROA 702的RCA 706,則MRIC指令的成功執(zhí)行隱含地
[0162] 將G比特620設(shè)置為0。這也是運行時間檢測暫停條件的清除。
[0163] 在運行時間檢測暫停條件存在的同時,下面的結(jié)果適用:
[0164] I. RINEXT的執(zhí)行不執(zhí)行操作。
[0165] 2. RIEMIT的執(zhí)行不執(zhí)行操作。
[0166] 3.是否出現(xiàn)間隔的另外的遞減可以是模型相關(guān)的。如果它出現(xiàn),則在被遞減到0 時它被重新初始化為SF 740也是模型相關(guān)的。如果間隔被遞減為0,則不識別樣本指令。
[0167] 4.不存儲另外的報告群組。
[0168] 5. RCA 706 不前進。
[0169] 6.不影響其他運行時間檢測指令的執(zhí)行。
[0170] 如果在LRIC的執(zhí)行期間將G比特620作為1加載,則使得運行時間檢測暫停的中 斷待決。當MRIC指定ROA 702等于RCA 706時,G比特620被隱含地設(shè)置為0。如果在運 行時間檢測控制中的U比特622是0,則禁止運行時間檢測暫停中斷。
[0171] 在接收到運行時間檢測暫停中斷后,如果在重新啟用運行時間檢測之前未清除運 行時間檢測暫停條件,則當識別了下一個樣本指令時再一次使得中斷待決。當加載或修改 運行時間檢測控制時復位運行時間檢測暫停條件,使得將重新建立開始記錄。當在運行時 間檢測控制中的G比特620被從0改變?yōu)?時,H比特914被設(shè)置為1,并且RCA 706不前 進。
[0172] 除了用于指示暫停條件的G比特620的定義之外,選用地可獲得允許軟件建立其 運行時間環(huán)境以觸發(fā)軟件中斷。這被定義為U比特622。當G比特620和U比特622都是 1時,然后提供運行時間檢測外部警告中斷。當在當前運行時間檢測控制中的L比特624和 U比特622都是1時,識別運行時間檢測警告事件。當在當前運行時間檢測控制中的G比特 620和U比特622都是1時,識別運行時間檢測警告事件。
[0173] 圖10描繪了時間戳記錄1000的示例。當諸如報告群組800的報告群組被存儲到 程序緩沖器522并且ROA 702不等于RCA 706時,建立時間戳記錄1000。時間戳記錄1000 被存儲為除了第一報告群組的每一個報告群組的第一記錄。
[0174] 版本1006指示運行運行時間檢測設(shè)施的CPU的功能的工程改變水平。也被稱為 CPU版本或處理器版本1006的版本1006是處理器版本的當前實例,并且如果程序或指令流 已經(jīng)諸如在圖5的處理器106和106a之間的在處理器之間移位。圖6的處理器106a表示 支持運行時間檢測的處理器106的另一個實例。處理器106a可以位于與作為系統(tǒng)500的 一部分的處理器106物理上不同的機器中。因為版本的改變導致暫停,所以不在程序緩沖 器522中記錄與相對于版本906的版本1006的在值上的改變相關(guān)聯(lián)的時間戳記錄1000。
[0175] 能力(T字段)1012當0時指示報告群組表示在其主要CPU能力下運行的CPU上 捕捉的樣本。當T字段912是1時,報告群組表示在其次要CPU能力下運行的CPU上捕獲 的樣本。
[0176] 當日時間時鐘1016可以是當原始存儲包含時間戳記錄1000時存儲的當前當日時 間時鐘。
[0177] 圖11描繪了用于使用運行時間檢測來監(jiān)控處理器的處理器特性信息的處理流 1100。初始,圖5的運行時間檢測模塊506和寄存器510可以被配置為使用LRIC指令來 支持樣本,以加載如上所述的圖6和7的控制塊600和700。抑制控制Y比特738和Z比 特739也以被設(shè)置來基于一個或多個CPU能力來控制運行時間檢測報告群組存儲抑制。一 旦配置和啟用了運行時間檢測控制,則可以在收集緩沖器508中收集諸如事件和數(shù)據(jù)的信 息?;蛘咧芷诘鼗蛘呷缢龑В_到觸發(fā)報告群組向程序緩沖器522內(nèi)的存儲的樣本指令, 該程序緩沖器522也被稱為運行時間檢測程序緩沖器522。
[0178] 在塊1102處,處理器106執(zhí)行可以是來自運行時間存儲器504的問題狀態(tài)程序或 管理狀態(tài)程序的指令流。
[0179] 在塊1104處,處理器106檢測執(zhí)行的處理器的運行時間檢測樣本點。在塊1106 處,運行時間檢測樣本點導致在運行時間檢測程序緩沖器522中的報告群組的存儲。記錄 的運行時間檢測報告群組包括與處理器106相關(guān)聯(lián)的處理器特性信息。來自系統(tǒng)信息和來 自收集緩沖器508的記錄的群組合可以被合并以向運行時間檢測程序緩沖器522存儲諸如 圖8的報告群組800的報告群組。在成功地在運行時間檢測程序緩沖器522中存儲報告群 組后,在開始記錄900的RGS字段908中遞增所存儲的報告群組的數(shù)目。
[0180] 在塊1108處,檢測執(zhí)行的處理器的隨后運行時間運行時間檢測樣本點。隨后的運 行時間檢測樣本點可以在將指令流從原始處理器106向在不同的機器上的處理器106a遷 移后可能出現(xiàn),該不同的機器具有處理器l〇6a,該處理器106a具有與不同處理器106不同 的一個或多個處理器特性??梢酝ㄟ^系統(tǒng)信息塊或其他手段來讀取當前系統(tǒng)和處理器特性 的值。
[0181] 在塊1110處,查看當前處理器特性信息,然后將隨后的報告群組存儲在運行時間 檢測程序緩沖器522中。參考當前的處理器特性信息可以包括確定當前CPU能力,其中, (PU能力是處理器運行速度的指示。查看當前處理器特性信息也或替代地可以包括查看當 前處理器版本和一個或多個模型相關(guān)的極限。
[0182] 在塊1112處,執(zhí)行確定是否在運行時間檢測程序緩沖器522中存儲隨后的報告群 組,抑制隨后的報告群組在運行時間檢測程序緩沖器522中的存儲或暫停運行時間檢測。 多個條件可以觸發(fā)抑制或暫停,如在此進一步所述。
[0183] 在運行時間檢測程序緩沖器522中存儲隨后的報告群組之前,可以如參考圖12所 述執(zhí)行抑制查看1200。在塊1202處,抑制查看開始。在塊1204處,如果在諸如處理器106 和106a的配置中的CPU沒有不同的CPU能力,S卩,處理器106和106a以相同的速度運行, 則在塊1206處不出現(xiàn)抑制。否則,在塊1208、1210、1212和1214中執(zhí)行一系列查看。注意 可以省略在塊1208-1214中的查看之一,因為一旦已經(jīng)執(zhí)行了該四個查看的三個,則最后 的查看是固有的。一旦已經(jīng)確定CPU的CPU能力與另一個CPU的CPU能力不同,例如,處理 器106和106a具有不同的CPU能力,則抑制控制生效。例如,處理器106可以在主要CPU能 力下運行,而處理器106a在次要CPU能力下運行。主和次要CPU能力是不同的運行速度。
[0184] 在塊1208處,如果Y比特738和Z比特739都是0,則在塊1206處抑制不出現(xiàn)。 因此,即使處理器106和106a具有不同的CPU能力,隨后的報告群組被存儲到程序緩沖器 522,而與運行時間檢測是否在處理器106或106a上運行無關(guān)。T字段912和1012指示用 于相關(guān)聯(lián)的報告群組的CPU能力。
[0185] 在塊1210處,如果Y比特738是0并且Z比特739是1,則如果在塊1216處諸如 處理器106的CPU在次要CPU能力下運行,那么抑制出現(xiàn)。在該情況下,其中T字段912或 10121的報告群組將不被存儲到程序緩沖器522。然而,其中T字段912或1012是0的報 告群組將被存儲到程序緩沖器522。
[0186] 在塊1212處,如果Y比特738是1并且Z比特739是0,則如果在塊1218處諸如 處理器106的CPU在主要CPU能力下運行,那么抑制出現(xiàn)。在該情況下,其中T字段912或 1012是0的報告群組將不被存儲到程序緩沖器522。然而,其中T字段912或1012是1的 報告群組將被存儲到程序緩沖器522。
[0187] 在塊1214處,如果Y比特738和Z比特739都是1,則在塊1220處抑制出現(xiàn)。在 這個示例中,在Y比特738和Z比特739都是1的同時,不向程序緩沖器522存儲報告群組。
[0188] 返回到圖11的塊1110和1112的描繪,查看當前處理器特性信息也可以包括:確 定當前處理器版本,并且將當前處理器版本與在報告群組中記錄的處理器特性信息中的先 前記錄的處理器版本作比較。該先前記錄的處理器版本基于何時建立報告群組的開始記錄 900?;谙惹坝涗浀奶幚砥靼姹緛碓O(shè)置在開始記錄900中的版本字段906??梢曰跈z測 到在先前記錄的處理器版本和當前處理器版本之間在值上的改變而暫停運行時間檢測?;?于暫停的運行時間檢測來設(shè)置在開始記錄900中的H比特914。如果在處理器版本上沒有 改變,則基于當前處理器版本來設(shè)置在時間戳記錄1000中的版本字段1006。
[0189] 基于所檢測到的在處理器版本上的改變而設(shè)置在運行時間檢測控制中的暫停中 斷G比特620?;谒鶛z測的在處理器版本上的改變而暫停在運行時間檢測程序緩沖器522 中的隨后的報告群組的存儲??梢宰x取運行時間檢測控制的暫停中斷啟用控制U比特622。 基于被啟用的暫停中斷啟用控制U比特622和被設(shè)置的暫停中斷G比特620而產(chǎn)生運行時 間檢測警告。
[0190] 可以導致暫停運行時間檢測的另一個事件與開始記錄900的RGS字段908相關(guān)。 基于確定指令流已經(jīng)遷移到諸如處理器l〇6a的第二處理器,可以從在RGS字段908中的報 告群組的處理器特性信息讀取報告群組大小。將該報告群組大小與第二處理器的上限作比 較,并且,基于確定該報告群組大小超過第二處理器的上限而暫停運行時間檢測。這防止了 當報告群組大小大于可以在接收程序緩沖器522的遷移實例的處理器上支持的模型相關(guān) 的極限時防止超出程序緩沖器522??梢詫⑵渌P拖嚓P(guān)的極限的違反定義為不兼容的處 理器特性,該不兼容的處理器特性當被檢測到時導致運行時間檢測的暫停。
[0191] 如上所述,可以以計算機實現(xiàn)的處理和用于設(shè)施那些處理的設(shè)備的形式來體現(xiàn)實 施例。一個實施例可以包括在計算機可讀/可用介質(zhì)1302上如圖13中所述的計算機程序 產(chǎn)品1300,該計算機可讀/可用介質(zhì)1302具有計算機程序代碼邏輯1304,該計算機程序代 碼邏輯1304包含在作為制造品的有形介質(zhì)中包含的指令。用于計算機可用介質(zhì)1302的示 例性制造品可以包括軟盤、⑶-ROM、硬盤驅(qū)動器、通用串行總線(USB)快閃驅(qū)動器或任何其 他計算機可讀存儲介質(zhì),其中,當向計算機內(nèi)加載計算機程序代碼邏輯1304并且其被計算 機執(zhí)行時,計算機變?yōu)橛糜趯嵤┍景l(fā)明的設(shè)備。實施例包括計算機程序代碼邏1304,例如, 不論其是否被存儲在存儲介質(zhì)中、被加載到計算機內(nèi)和/或被計算機執(zhí)行或者通過某種傳 輸介質(zhì)被發(fā)送,該通過某種傳輸介質(zhì)例如是通過電子布線或電纜、通過光纖或經(jīng)由電磁輻 射,其中,當計算機程序代碼邏輯1304被加載到計算機內(nèi)并且被計算機執(zhí)行時,計算機變 為用于實施本發(fā)明的設(shè)備。當在通用微處理器上被實現(xiàn)時,計算機程序代碼邏輯1304分段 配置微處理器以建立特定邏輯電路。
[0192] 技術(shù)效果和益處包括使用運行時間檢測監(jiān)控處理器的處理器特性信息。跟蹤和記 錄諸如處理器速度、處理器版本和使用運行時間檢測監(jiān)控的處理器的模型相關(guān)的極限的處 理器特性信息的值使得能夠檢測在結(jié)果產(chǎn)生的報告數(shù)據(jù)的分析中的可能不一致或錯誤。對 于處理器特性信息的改變的檢測可以觸發(fā)行為,諸如報告的抑制、暫停運行時間檢測和經(jīng) 由中斷的通知。也可以在使用模擬例程的模擬或虛擬處理器中包括對于使用運行時間檢測 來監(jiān)控處理器的處理器特性信息的支持。
[0193] 本文中所使用的術(shù)語僅用于描述特定實施例的目的且不欲限制本發(fā)明。如本文 中所使用,除非上下文另有清晰指示,否則單數(shù)形式"一"及"該"意欲也包括復數(shù)形式。將 進一步理解,術(shù)語"包含"在用于本說明書中時指定所陳述的特征、整數(shù)、步驟、操作、元件和 /或組件的存在,但不排除一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或其群組 的存在或添加。
[0194] 以下權(quán)利要求中的所有構(gòu)件或步驟加功能元件的相應結(jié)構(gòu)、材料、動作及等效物 意欲包括用于連同如具體所主張的其他所主張元件一起執(zhí)行功能的任何結(jié)構(gòu)、材料或動 作。已出于說明及描述目的呈現(xiàn)了本發(fā)明的描述,但該描述不欲為詳盡的或限于呈所揭示 的形式的本發(fā)明。在不脫離本發(fā)明的范疇及精神的情況下,許多修改及變化對于一般本領(lǐng) 域普通技術(shù)人員將顯而易見。選擇并描述實施例以便最佳地解釋本發(fā)明的原理及實際應 用,且使其他一般本領(lǐng)域普通技術(shù)人員能夠理解本發(fā)明的各種實施例,實施例具有適合于 所設(shè)想的特定用途的各種修改。
[0195] 如本領(lǐng)域普通技術(shù)人員將了解,本發(fā)明的方面可體現(xiàn)為系統(tǒng)、方法或計算機程序 產(chǎn)品。相應地,本發(fā)明的方面可采用完全硬件實施例、完全軟件實施例(包括固件、常駐軟 件、微代碼等)或組合軟件方面與硬件方面的實施例的形式,實施例在本文中都可通稱為 "電路"、"模塊"或"系統(tǒng)"。此外,本發(fā)明的方面可采用體現(xiàn)于一個或多個計算機可讀介質(zhì) 中的計算機程序產(chǎn)品的形式,該一個或多個計算機可讀介質(zhì)具有體現(xiàn)于其上的計算機可讀 程序代碼。
[0196] 可利用一個或多個計算機可讀介質(zhì)的任何組合。計算機可讀介質(zhì)可為計算機可讀 信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可為(例如,但不限于)電子、磁性、 光學、電磁、紅外線或半導體系統(tǒng)、裝置或器件,或前述各者的任何合適組合。計算機可讀存 儲介質(zhì)的更特定示例(非詳盡清單)將包括以下各者:具有一或多條導線的電連接件、攜帶 型計算機磁片、硬碟、隨機存取存儲器(RAM)、唯讀存儲器(ROM)、可抹除可程序化唯讀存儲 器(EPROM或閃速存儲器)、光纖、攜帶型致密盤唯讀存儲器(CD-ROM)、光學存儲器件、磁性 存儲器件或前述各者的任何合適組合。在本文件的上下文中,計算機可讀存儲介質(zhì)可為可 含有或存儲供指令執(zhí)行系統(tǒng)、裝置或器件使用或結(jié)合指令執(zhí)行系統(tǒng)、裝置或器件使用的程 序的任何有形介質(zhì)。
[0197] 計算機可讀信號介質(zhì)可包括傳播的數(shù)據(jù)信號,該傳播的數(shù)據(jù)信號具有體現(xiàn)于其中 (例如,在基頻中或作為載波的部分)的計算機可讀程序代碼。此傳播信號可采用多種形式 中的任一個,包括(但不限于)電磁、光學或其任何合適組合。計算機可讀信號介質(zhì)可為并 非計算機可讀存儲介質(zhì)且可傳達、傳播或輸送供指令執(zhí)行系統(tǒng)、裝置或器件使用或結(jié)合指 令執(zhí)行系統(tǒng)、裝置或器件使用的程序的任何計算機可讀介質(zhì)。
[0198] 可使用任何適當介質(zhì)來傳輸體現(xiàn)于計算機可讀介質(zhì)上的程序代碼,適當介質(zhì)包括 (但不限于)無線、有線、光纖纜線、RF等或前述各者的任何合適組合。
[0199] 可以一或多種程序設(shè)計語言的任何組合來撰寫用于執(zhí)行本發(fā)明的方面的操作的 計算機程序代碼,該一或多種程序設(shè)計語言包括物件導向式程序設(shè)計語言(諸如,Java、 SmalltalkX++或其類似者)及習知程序性程序設(shè)計語言(諸如,"C"程序設(shè)計語言或類似 程序設(shè)計語言)。程序代碼可完全在用戶的計算機上執(zhí)行,部分地在用戶的計算機上執(zhí)行, 作為獨立套裝軟件而執(zhí)行,部分地在用戶的計算機上執(zhí)行且部分地在遠程計算機上執(zhí)行, 或完全在遠程計算機或服務器上執(zhí)行。在完全在遠程計算機或服務器上執(zhí)行的情形中,遠 程計算機可經(jīng)由任何類型的網(wǎng)絡(luò)(包括局域網(wǎng)(LAN)或廣域網(wǎng)絡(luò)(WAN))連接至用戶的計 算機,或可連接至外部計算機(例如,使用因特網(wǎng)服務提供者,經(jīng)由因特網(wǎng))。
[0200] 上文中參考根據(jù)本發(fā)明的實施例的方法、裝置(系統(tǒng))及計算機程序產(chǎn)品的流程 圖說明和/或示意圖來描述本發(fā)明的方面。將理解,可通過計算機程序指令來實施流程圖 說明和/或方塊圖中的每一塊及流程圖說明和/或方塊圖中的塊的組合。可將這些計算機 程序指令提供至通用計算機、專用計算機或其他可程序化數(shù)據(jù)處理裝置的處理器以產(chǎn)生一 機器,以使得經(jīng)由該計算機或其他可程序化數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實 施該或流程圖和/或方塊圖塊中所指定的功能/動作的構(gòu)件。
[0201] 也可將這些計算機程序指令存儲在計算機可讀介質(zhì)中,其可指導計算機、其他可 程序化數(shù)據(jù)處理裝置或其他器件以特定方式發(fā)揮作用,使得存儲在該計算機可讀介質(zhì)中的 指令產(chǎn)生一制品,該制品包括實施該或流程圖和/或方塊圖塊中所指定的功能/動作的指 令。
[0202] 也可將計算機程序指令載入至計算機、其他可程序化數(shù)據(jù)處理裝置或其他器件 上,以使一系列操作步驟在該計算機、其他可程序化裝置或其他器件上執(zhí)行以產(chǎn)生計算機 實施的程序,使得在該計算機或其他可程序化裝置上執(zhí)行的指令提供用于實施該或流程圖 和/或方塊圖塊中所指定的功能/動作的程序。
[0203] 如上所述,實施例可以計算機實施的程序及用于實踐那些程序的裝置的形式體 現(xiàn)。在多個實施例中,本發(fā)明系體現(xiàn)于由一個或多個網(wǎng)絡(luò)元件執(zhí)行的計算機程序代碼中。實 施例包括在計算機可用介質(zhì)上的計算機程序產(chǎn)品,該計算機可用介質(zhì)具有含有體現(xiàn)于作為 制品的有形介質(zhì)中的指令的計算機程序代碼邏輯。計算機可用介質(zhì)的示例性制品可包括軟 碟、CD-ROM、硬驅(qū)動器、通用流總線(USB)隨身碟或任何其他計算機可讀存儲介質(zhì),其中,當 計算機程序代碼邏輯被載入至計算機中且由計算機執(zhí)行時,該計算機變?yōu)橛糜趯嵺`本發(fā)明 的裝置。實施例包括計算機程序代碼邏輯,該計算機程序代碼邏輯(例如)存儲在存儲介 質(zhì)中、載入至計算機中和/或由計算機執(zhí)行,或經(jīng)由某一傳輸介質(zhì)(諸如,經(jīng)由電布線或纜 線、經(jīng)由光纖或經(jīng)由電磁輻射)進行傳輸,其中,當計算機程序代碼邏輯被載入至計算機中 且由計算機執(zhí)行時,該計算機變?yōu)橛糜趯嵺`本發(fā)明的裝置。當實施于一通用微處理器上時, 計算機程序代碼邏輯的多個段配置該微處理器以創(chuàng)建特定邏輯電路。
[0204] 圖中的流程圖及方塊圖說明根據(jù)本發(fā)明的各種實施例的系統(tǒng)、方法及計算機程序 產(chǎn)品的可能實施的架構(gòu)、功能性及操作。就此而言,流程圖或方塊圖中的每一塊可表示程序 代碼的模塊、段或部分,其包含用于實施指定邏輯功能的一個或多個可執(zhí)行指令。也應注 意,在一些替代實施中,塊中所提到的功能可不以諸圖中所提到的次序發(fā)生。舉例而言,視 所涉及的功能性而定,連續(xù)展示的兩個塊實際上可實質(zhì)上同時執(zhí)行,或塊有時可以相反次 序執(zhí)行。也應注意,可通過執(zhí)行指定功能或動作的基于專用硬件的系統(tǒng)或?qū)S糜布c計算 機指令的組合來實施方塊圖和/或流程圖說明的每一塊及方塊圖和/或流程圖說明中的塊 的組合。
【權(quán)利要求】
1. 一種計算機程序產(chǎn)品,用于使用運行時間檢測來監(jiān)控處理器的處理器特性信息,所 述計算機程序產(chǎn)品包括: 有形存儲介質(zhì),其可由處理電路讀取,并且存儲供該處理電路執(zhí)行以用于執(zhí)行包含以 下操作的方法的指令: 在處理器上執(zhí)行指令流; 檢測在所述處理器上的所述執(zhí)行的指令流的運行時間檢測樣本點;并且 基于所述運行時間檢測樣本點來在運行時間檢測程序緩沖器中存儲報告群組,所述報 告群組包括與所述處理器相關(guān)聯(lián)的處理器特性信息。
2. 根據(jù)權(quán)利要求1所述的計算機程序產(chǎn)品,進一步包括: 檢測所述執(zhí)行的指令流的隨后的運行時間檢測樣本點; 基于所述隨后的運行時間檢測樣本點,在所述運行時間檢測程序緩沖器中存儲隨后的 報告群組之前,查看當前處理器特性信息;并且 基于所述當前處理器特性信息,確定是否執(zhí)行下述部分之一: 在所述運行時間檢測程序緩沖器中存儲所述隨后的報告群組; 抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告群組的存儲;并且 暫停運行時間檢測。
3. 根據(jù)權(quán)利要求2所述的計算機程序產(chǎn)品,其中,在所述運行時間檢測程序緩沖器中 存儲所述隨后的報告群組進一步包括: 基于所述當前的處理器特性信息,將當前CPU能力和當前處理器版本作為所述隨后的 報告群組的一部分存儲。
4. 根據(jù)權(quán)利要求2所述的計算機程序產(chǎn)品,進一步包括: 確定在當前配置中的處理器是否被配置為使用公共CPU能力運行;并且 基于確定在所述當前配置中的所述處理器之間在CPU能力上存在差別: 讀取運行時間檢測控制的抑制控制;并且 基于用于指示要抑制用于具有對應的CPU能力的處理器的報告群組存儲的所述抑制 控制,抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告群組的存儲。
5. 根據(jù)權(quán)利要求4所述的計算機程序產(chǎn)品,其中,所述抑制控制包括主要CPU能力抑制 控制和次要CPU能力抑制控制,并且用于指示要抑制用于具有對應的CPU能力的處理器的 報告群組存儲的所述抑制控制進一步包括: 基于被設(shè)置的所述主要CPU能力抑制控制和用于指示所述處理器在主要CPU能力下運 行的所述當前處理器特性信息,抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告 群組的存儲;并且 基于被設(shè)置的所述次要CPU能力抑制控制和用于指示所述處理器在所述次要CPU能力 下運行的所述當前處理器特性信息,抑制在所述運行時間檢測程序緩沖器中的所述隨后的 報告群組的存儲。
6. 根據(jù)權(quán)利要求5所述的計算機程序產(chǎn)品,其中,所述主要CPU能力和所述次要CPU能 力代表不同的處理器運行速度。
7. 根據(jù)權(quán)利要求2所述的計算機程序產(chǎn)品,進一步包括: 確定當前處理器版本; 將所述當前處理器版本與在所述報告群組中記錄的所述處理器特性信息中的先前記 錄的處理器版本作比較;并且 基于檢測到在所述先前記錄的處理器版本和所述當前處理器版本之間在值上的改變 而暫停運行時間檢測。
8. 根據(jù)權(quán)利要求7所述的計算機程序產(chǎn)品,進一步包括: 基于所檢測的在處理器版本上的改變而設(shè)置在運行時間檢測控制中的暫停的中斷;并 且 基于所述檢測的在處理器版本上的改變而暫停在所述運行時間檢測程序緩沖器中的 所述隨后的報告群組的存儲。
9. 根據(jù)權(quán)利要求8所述的計算機程序產(chǎn)品,進一步包括: 讀取所述運行時間檢測控制的暫停的中斷啟用控制;并且 基于被啟用的所述暫停的中斷啟用控制和被設(shè)置的所述暫停的中斷而生成運行時間 檢測警告。
10. 根據(jù)權(quán)利要求1所述的計算機程序產(chǎn)品,進一步包括: 確定所述指令流已經(jīng)遷移到第二處理器; 從所述報告群組的所述處理器特性信息讀取報告群組大??; 將所述報告群組大小與所述第二處理器的上限作比較;并且 基于確定所述報告群組大小超過所述第二處理器的所述上限來暫停運行時間檢測。
11. 一種計算機程實現(xiàn)的方法,用于使用運行時間檢測來監(jiān)控處理器的處理器特性信 息,所述方法包括: 在處理器上執(zhí)行指令流; 檢測在所述處理器上的所述執(zhí)行的指令流的運行時間檢測樣本點;并且 基于所述運行時間檢測樣本點來在運行時間檢測程序緩沖器中存儲報告群組,所述報 告群組包括與所述處理器相關(guān)聯(lián)的處理器特性信息。
12. 根據(jù)權(quán)利要求11所述的方法,進一步包括: 檢測所述執(zhí)行的指令流的隨后的運行時間檢測樣本點; 基于所述隨后的運行時間檢測樣本點,在所述運行時間檢測程序緩沖器中存儲隨后的 報告群組之前,查看當前處理器特性信息;并且 基于所述當前處理器特性信息,確定是否執(zhí)行下述部分之一: 在所述運行時間檢測程序緩沖器中存儲所述隨后的報告群組; 抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告群組的存儲;并且 暫停運行時間檢測。
13. 根據(jù)權(quán)利要求12所述的方法,進一步包括: 確定在當前配置中的處理器是否被配置為使用公共CPU能力運行;并且 基于確定在所述當前配置中的所述處理器之間在CPU能力上存在差別: 讀取運行時間檢測控制的抑制控制;并且 基于用于指示要抑制用于具有對應的CPU能力的處理器的報告群組存儲的所述抑制 控制,抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告群組的存儲。
14. 根據(jù)權(quán)利要求12所述的方法,進一步包括: 確定當前處理器版本; 將所述當前處理器版本與在所述報告群組中記錄的所述處理器特性信息中的先前記 錄的處理器版本作比較;并且 基于檢測到在所述先前記錄的處理器版本和所述當前處理器版本之間在值上的改變 而暫停運行時間檢測。
15. 根據(jù)權(quán)利要求11所述的方法,進一步包括: 確定所述指令流已經(jīng)遷移到第二處理器; 從所述報告群組的所述處理器特性信息讀取報告群組大??; 將所述報告群組大小與所述第二處理器的上限作比較;并且 基于確定所述報告群組大小超過所述第二處理器的所述上限來暫停運行時間檢測。
16. -種系統(tǒng),用于使用運行時間檢測來監(jiān)控處理器的處理器特性信息,所述系統(tǒng)包 括: 存儲器;以及 包括運行時間檢測模塊的處理器,所述運行時間檢測模塊被配置為執(zhí)行一種方法,所 述方法包括: 在處理器上執(zhí)行指令流; 檢測在所述處理器上的所述執(zhí)行的指令流的運行時間檢測樣本點;并且 基于所述運行時間檢測樣本點來在運行時間檢測程序緩沖器中存儲報告群組,所述報 告群組包括與所述處理器相關(guān)聯(lián)的處理器特性信息。
17. 根據(jù)權(quán)利要求16所述的系統(tǒng),進一步包括: 檢測所述執(zhí)行的指令流的隨后的運行時間檢測樣本點; 基于所述隨后的運行時間檢測樣本點,在所述運行時間檢測程序緩沖器中存儲隨后的 報告群組之前,查看當前處理器特性信息;并且 基于所述當前處理器特性信息,確定是否執(zhí)行下述部分之一: 在所述運行時間檢測程序緩沖器中存儲所述隨后的報告群組; 抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告群組的存儲;并且 暫停運行時間檢測。
18. 根據(jù)權(quán)利要求17所述的系統(tǒng),進一步包括: 確定在當前配置中的處理器是否被配置為使用公共CPU能力運行;并且 基于確定在所述當前配置中的所述處理器之間在CPU能力上存在差別: 讀取運行時間檢測控制的抑制控制;并且 基于用于指示要抑制用于具有對應的CPU能力的處理器的報告群組存儲的所述抑制 控制,抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告群組的存儲。
19. 根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述抑制控制包括主要CPU能力抑制控制和次 要CPU能力抑制控制,并且用于指示要抑制用于具有對應的CPU能力的處理器的報告群組 存儲的所述抑制控制進一步包括: 基于被設(shè)置的所述主要CPU能力抑制控制和用于指示所述處理器在主要CPU能力下運 行的所述當前處理器特性信息,抑制在所述運行時間檢測程序緩沖器中的所述隨后的報告 群組的存儲;并且 基于被設(shè)置的所述次要CPU能力抑制控制和用于指示所述處理器在所述次要CPU能力 下運行的所述當前處理器特性信息,抑制在所述運行時間檢測程序緩沖器中的所述隨后的 報告群組的存儲。
20. 根據(jù)權(quán)利要求17所述的系統(tǒng),進一步包括: 確定當前處理器版本; 將所述當前處理器版本與在所述報告群組中記錄的所述處理器特性信息中的先前記 錄的處理器版本作比較;并且 基于檢測到在所述先前記錄的處理器版本和所述當前處理器版本之間在值上的改變 而暫停運行時間檢測。
21. 根據(jù)權(quán)利要求20所述的系統(tǒng),進一步包括: 基于所檢測的在處理器版本上的改變而設(shè)置在運行時間檢測控制中的暫停的中斷;并 且 基于所述檢測的在處理器版本上的改變而暫停在所述運行時間檢測程序緩沖器中的 所述隨后的報告群組的存儲。
22. 根據(jù)權(quán)利要求21所述的系統(tǒng),進一步包括: 讀取所述運行時間檢測控制的暫停的中斷啟用控制;并且 基于被啟用的所述暫停的中斷啟用控制和被設(shè)置的所述暫停的中斷而傳送層運行時 間檢測警告。
23. 根據(jù)權(quán)利要求16所述的系統(tǒng),進一步包括: 確定所述指令流已經(jīng)遷移到第二處理器; 從所述報告群組的所述處理器特性信息讀取報告群組大?。? 將所述報告群組大小與所述第二處理器的上限作比較;并且 基于確定所述報告群組大小超過所述第二處理器的所述上限來暫停運行時間檢測。
【文檔編號】G06F11/34GK104364769SQ201380014657
【公開日】2015年2月18日 申請日期:2013年2月22日 優(yōu)先權(quán)日:2012年3月16日
【發(fā)明者】岑中龍, 小查爾斯.W.蓋尼, T.J.斯雷格, M.S.法雷爾, B.L.史密斯, M.M.米特蘭, D.L.奧斯塞克 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
东明县| 石台县| 青冈县| 阿荣旗| 南汇区| 张家口市| 崇信县| 洛阳市| 涿州市| 迁安市| 石台县| 贵州省| 巢湖市| 温州市| 资中县| 孟村| 兴化市| 安福县| 博兴县| 台前县| 北安市| 修水县| 汾西县| 台山市| 石林| 鄄城县| 美姑县| 隆化县| 琼结县| 满城县| 太原市| 和龙市| 临湘市| 宁远县| 饶平县| 休宁县| 依安县| 永善县| 广宁县| 靖边县| 加查县|