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

在事務執(zhí)行模式中的運行時間檢測采樣的制作方法

文檔序號:6533324閱讀:324來源:國知局
在事務執(zhí)行模式中的運行時間檢測采樣的制作方法
【專利摘要】本發(fā)明的實施例涉及在事務執(zhí)行模式中實現(xiàn)運行時間檢測采樣。本發(fā)明的一個方面包括一種用于在事務執(zhí)行模式中實現(xiàn)運行時間檢測采樣的方法。所述方法包括:通過處理器確定所述處理器被配置為在事務執(zhí)行模式中執(zhí)行指令流的指令,所述指令限定事務。所述方法也包括:互鎖所述指令的存儲操作的完成,以防止指令導向的存儲,直到所述事務的完成。所述方法進一步包括:在所述事務執(zhí)行模式中的同時在所述指令的執(zhí)行期間識別樣本點。所述方法另外包括:在所述事務的成功完成時運行時間檢測導向地存儲在所述樣本點處獲得的運行時間檢測信息。
【專利說明】在事務執(zhí)行模式中的運行時間檢測采樣

【技術領域】
[0001]本發(fā)明總體上涉及一種在計算環(huán)境內(nèi)的處理,并且更具體地涉及使用運行時間檢測在事務執(zhí)行模式期間的被收集事件的采樣。

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


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

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

【專利附圖】

【附圖說明】
[0011]圖1A為描繪實施例中的示例主機計算機系統(tǒng)的圖;
[0012]圖1B為描繪實施例中的示例模擬主機計算機系統(tǒng)的圖;
[0013]圖1C為描繪實施例中的示例計算機系統(tǒng)的圖;
[0014]圖2為描繪實施例中的示例計算機網(wǎng)絡的圖;
[0015]圖3為描繪實施例中的計算機系統(tǒng)的元件的圖;
[0016]圖4A描繪實施例中的計算機系統(tǒng)的詳細元件;
[0017]圖4B描繪實施例中的計算機系統(tǒng)的詳細元件;
[0018]圖4C描繪實施例中的計算機系統(tǒng)的詳細元件;
[0019]圖5描繪根據(jù)實施例的用于處理器的運行時間檢測的系統(tǒng)的示意圖;
[0020]圖6描繪實施例中的包括可由特權狀態(tài)設置的控制的運行時間檢測控制塊(RICCB)的一部分。
[0021]圖7描繪實施例中的當半特權位(K)經(jīng)設置為I時的RICCB控制塊的一部分;
[0022]圖8描繪根據(jù)實施例的報告群組。
[0023]圖9描繪述根據(jù)實施例的、用于在事務執(zhí)行模式中實現(xiàn)運行時間檢測采樣的處理流。
[0024]圖10圖示了根據(jù)實施例的計算機程序產(chǎn)品。

【具體實施方式】
[0025]本發(fā)明的一個實施例使能使用運行時間檢測在事務執(zhí)行模式中的事件的樣本。運行時間檢測是能夠不僅用在實驗室或僅用于離線分析而且用于在處理器(CPU)上在程序控制下的程序運行時間期間的客戶環(huán)境中的設施。被獲取和執(zhí)行來運行程序的指令的序列可以被稱為指令流。為了增強數(shù)據(jù)收集靈活性,可以基于可配置間隔來收集事件。被程序可設置的CPU控件管理運行時間檢測。運行時間檢測通常在固定的樣本基礎上報告事件;然而,可以通過使用運行時間檢測下一個(RINEXDT)指令來導向在檢測的指令流中的另外的興趣點。通過或者指令計數(shù)或者循環(huán)計數(shù)來確定固定樣本間隔。也可以基于檢測在指令流中的作為目標的指令操作碼或地址來來支持間接樣本。當執(zhí)行隨后的分析時,在檢測的指令流中的具體信息可以很有益。
[0026]處理器可以支持多個指令執(zhí)行模式,包括事務執(zhí)行模式。在事務執(zhí)行模式中,可以試執(zhí)行指令的序列以確認在實際上允許指令的效果影響系統(tǒng)的當前狀態(tài)之前完整的序列可以成功地完成。這可以通過下述方式而實現(xiàn):互鎖指令的序列,在該序列的執(zhí)行之前存儲系統(tǒng)狀態(tài)信息,并且一旦指令的序列完成而沒有異常終止則將所有指令導向的系統(tǒng)更新存儲為塊更新。事務異常終止事件可能源自在事務執(zhí)行模式中作為指令的序列的一部分有意執(zhí)行的特定異常終止指令,或者可以源自在事務執(zhí)行模式中的同時指令的序列的故障或中斷。
[0027]在事務外部,每一個樣本點導致多記錄報告群組的存儲,該報告群組包括從收集緩沖器近來收集的數(shù)據(jù)以及與在樣本點處的指令的執(zhí)行相關聯(lián)的數(shù)據(jù)。在事務內(nèi),事務執(zhí)行模式互鎖指令的存儲操作的完成,以防止指令導向的存儲改變,直到事務的完成??梢酝七t在事務內(nèi)的在樣本點處識別的報告群組的運行時間檢測導向的存儲,直到事務的成功結束,其中,除了通過在事務內(nèi)的指令執(zhí)行無論什么通常的存儲之外,也執(zhí)行報告群組的推遲的副作用存儲。替代地,可以在完成事務之前對于事務執(zhí)行暫存緩沖器進行報告群組的運行時間檢測導向的存儲,并且基于事務的成功完成將報告群組作為副作用存儲復制到程序緩沖器。作為另一種選擇,可以在事務執(zhí)行模式中的同時將報告群組的運行時間檢測導向的存儲實現(xiàn)為向程序緩沖器的非事務存儲,并且程序緩沖器當前地址在事務執(zhí)行模式中暫時前進,在成功地完成事務時保留該暫時前進,并且在事務故障時復位。
[0028]圖1A描繪實施例中的主機計算機系統(tǒng)50的代表性組件。組件的其他配置也可在計算機系統(tǒng)中使用。代表性主機計算機系統(tǒng)50包含與主存儲器(計算機存儲器)2通信的一個或多個處理器I以及至存儲器件11及網(wǎng)絡10的用于與其他計算機或SAN等通信的I/O接口。處理器I符合具有架構化指令集及架構化功能性的架構。處理器I可具有用于將程序地址(虛擬地址)變換為存儲器中的真實地址的動態(tài)地址轉譯(DAT) 3。DAT 3通常包括用于高速緩存轉譯的轉譯后備緩沖器(TLB) 7,使得對計算機存儲器2的塊的稍后存取不需要延遲地址轉譯。通常,高速緩沖存儲器9是用于計算機存儲器2與處理器I之間。高速緩沖存儲器9可為階層式的,其具有可供一個以上CPU使用的大的高速緩沖存儲器及介于大的高速緩沖存儲器與每一 CPU之間的較小、較快速(較低層級)的高速緩沖存儲器。在一些實施例中,較低層級高速緩沖存儲器經(jīng)劃分以為指令提取及數(shù)據(jù)存取提供單獨的低層級高速緩沖存儲器。在實施例中,由指令提取單元4經(jīng)由高速緩沖存儲器9從計算機存儲器2提取指令。該指令在指令解碼單元6中被解碼且(在一些實施例中與其他指令一起)被分派至指令執(zhí)行單元8。通常,使用若干指令執(zhí)行單元8,例如算術執(zhí)行單元、浮點執(zhí)行單元及分支指令執(zhí)行單元。該指令是由指令執(zhí)行單元8執(zhí)行,從而按需要從指令指定的寄存器或計算機存儲器2存取操作數(shù)。如果將從計算機存儲器2存取(載入或存儲)操作數(shù),則載入存儲單元5通常在被執(zhí)行的指令的控制下處置該存取。指令可在硬件電路中或以內(nèi)部微代碼(固件)形式執(zhí)行或通過兩者的組合執(zhí)行。
[0029]在圖1B中,提供模擬主機計算機系統(tǒng)21,其模擬具有主機架構的主機計算機系統(tǒng),諸如圖1的主機計算機系統(tǒng)50。在模擬主機計算機系統(tǒng)21中,主機處理器(CPU) I為模擬主機處理器(或虛擬主機處理器)29,且包含原生處理器27,該原生處理器具有不同于主機計算機系統(tǒng)50的處理器I的原生指令集架構的原生指令集架構。模擬主機計算機系統(tǒng)21具有原生處理器27可存取的存儲器22。在實施例中,存儲器22經(jīng)分割成計算機存儲器2部分及模擬例程存儲器23部分。計算機存儲器2根據(jù)主機計算機架構而可供模擬主機計算機系統(tǒng)21的程序使用。原生處理器27執(zhí)行不同于模擬處理器29的架構的架構的架構指令集的原生指令(原生指令獲得自模擬例程存儲器23),且可通過使用在可解碼所存取的該主機指令的序列及存取/解碼例程中獲得的一個或多個指令而從計算機存儲器2中的程序存取用于執(zhí)行的主機指令,以確定用于模擬所存取的該主機指令的功能的原生指令執(zhí)行例程。針對主機計算機系統(tǒng)50架構定義的其他設施可由架構化設施例程模擬,其他設施包括諸如(例如)通用寄存器、控制寄存器、動態(tài)地址轉譯及輸入/輸出(I/O)子系統(tǒng)支持及處理器高速緩沖存儲器的設施。模擬例程也可利用原生處理器27中可用的功能(諸如通用寄存器及虛擬地址的動態(tài)轉譯)來改進模擬例程的性能。也可提供特殊硬件及卸載引擎以幫助原生處理器27模擬主機計算機系統(tǒng)50的功能。
[0030]在大型計算機中,程序設計師(通常,現(xiàn)今的“C”程序設計師)常常通過編譯器應用程序來使用架構化機器指令。存儲在存儲介質(zhì)中的這些指令可原生地在z/ArchitectureIBM服務器中執(zhí)行,或替代地在執(zhí)行其他架構的機器中執(zhí)行。可在現(xiàn)有及未來的IBM大型計算機服務器中及在IBM的其他機器(例如,pSeries?服務器及xseries?服務器)上模擬指令。可于在廣泛多種機器(使用由IBM?、Intel.?、AMD?、Sun Microsystems及其他公司制造的硬件)上執(zhí)行Linux的機器中執(zhí)行指令。除了在Z/Architecture?下在該硬件上執(zhí)行之外,也可使用 Linux 以及由 Hercules、UMX、Fundamental Software, Inc.(FSI)或Platform Solut1ns, Inc.(PSI)提供的使用模擬的機器,其中執(zhí)行通常在模擬模式下。在模擬模式下,模擬軟件是由原生處理器執(zhí)行以模擬模擬處理器的架構。
[0031]模擬主機計算機系統(tǒng)21的組件中的一個或多個將在“ IBM? z/ArchitecturePrinciples of Operat1n”(公告第 SA22-7832-08 號,第 9 版,2010 年 8 月)中予以進一步描述,該公告特此以全文引用方式并入本文中。IBM為國際商業(yè)機器公司(Armonk,NewYork, USA)額注冊商標。本文中所使用的其他名稱可為國際商業(yè)機器公司或其他公司的注冊商標、商標或產(chǎn)品名稱。
[0032]原生處理器27通常執(zhí)行存儲在包含固件或原生操作系統(tǒng)的模擬例程存儲器23中的模擬軟件以執(zhí)行對模擬處理器的模擬。該模擬軟件負責提取并執(zhí)行模擬處理器架構的指令。該模擬軟件維持模擬程序計數(shù)器以追蹤指令邊界。該模擬軟件一次可提取一個或多個模擬機器指令且將該一個或多個模擬機器指令轉換成供原生處理器27執(zhí)行的原生機器指令的相應群組。這些經(jīng)轉換指令可被高速緩存,以使得可實現(xiàn)較快速轉換。該模擬軟件維持模擬處理器架構的架構規(guī)則以便保證針對模擬處理器撰寫的操作系統(tǒng)及應用程序正確地操作。此外,該模擬軟件提供由模擬處理器架構識別的資源,包括(但不限于)控制寄存器、通用寄存器、浮點寄存器、包括(例如)段表及頁表的動態(tài)地址轉譯功能、中斷機制、上下文切換機制、當日時間(TOD)時鐘及至1/0子系統(tǒng)的架構化接口,以使得經(jīng)設計以在模擬處理器29上執(zhí)行的操作系統(tǒng)或應用程序可在具有該模擬軟件的原生處理器27上執(zhí)行。
[0033]被模擬的特定指令經(jīng)解碼,且子例程被調(diào)用以執(zhí)行個別指令的功能。模擬模擬處理器29的功能的模擬軟件功能被以(例如)“C”子例程或驅(qū)動程序來實施,或以在理解優(yōu)選實施例的描述的后將在本領域普通技術人員的能力范圍內(nèi)的提供特定硬件的驅(qū)動程序的某一其他方法來實施。
[0034]在實施例中,本發(fā)明可由軟件(有時被稱為經(jīng)授權內(nèi)部碼、固件、微代碼、毫碼(mill1-code)、微微代碼(pico_code)等,其中的任一個都符合本發(fā)明)實踐。參看圖1A,體現(xiàn)本發(fā)明的軟件程序代碼是由也被稱為主機計算機系統(tǒng)50的CPU(中央處理單元)I的處理器從存儲器件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)絡10至其他計算機系統(tǒng)地分發(fā)給用戶以供這些其他系統(tǒng)的用戶使用。
[0035]替代地,程序代碼可體現(xiàn)于計算機存儲器2中,且由處理器I使用處理器總線(未圖示)存取。此程序代碼包括操作系統(tǒng),該操作系統(tǒng)控制各種計算機組件和一個或多個應用程序的功能及交互。程序代碼通常是從諸如存儲器件11的致密介質(zhì)分頁至計算機存儲器2,程序代碼可在計算機存儲器中供處理器I處理。用于將軟件程序代碼體現(xiàn)于存儲器中、實體介質(zhì)上和/或經(jīng)由網(wǎng)絡分發(fā)軟件碼的技術及方法是公知的且本文中將不予以進一步論述。程序代碼在被產(chǎn)生且存儲在有形介質(zhì)(包括(但不限于)電子存儲器模塊(RAM)、閃速存儲器、致密盤(CD)、DVD、磁帶等)上時常常被稱為“計算機程序產(chǎn)品”。計算機程序產(chǎn)品介質(zhì)通常可由優(yōu)選在計算機系統(tǒng)中的處理電路讀取以供處理電路執(zhí)行。
[0036]圖1C說明本發(fā)明可于其中實踐的代表性工作站或服務器硬件系統(tǒng)。圖1C的系統(tǒng)100包含諸如個人計算機、工作站或服務器的代表性基本計算機系統(tǒng)101,其包括可選的外圍設備?;居嬎銠C系統(tǒng)101包括一個或多個處理器106及總線(未圖示),該總線用以連接一個或多個處理器106與基本計算機系統(tǒng)101的其他組件及根據(jù)現(xiàn)有技術實現(xiàn)一個或多個處理器106與基本計算機系統(tǒng)101之間的通信。該總線將處理器106連接至存儲器105及長期存儲器107,長期存儲器可包括(例如)硬驅(qū)動器(包括(例如)磁性介質(zhì)、CD、DVD及閃速存儲器中的任一個)或帶驅(qū)動器。基本計算機系統(tǒng)101也可包括用戶接口適配器,其經(jīng)由該總線將一個或多個處理器106連接至一個或多個接口設備,諸如鍵盤104、鼠標103、打印機/掃描儀110和/或其他接口設備,其他接口設備可為任何用戶接口設備(諸如觸敏屏幕、數(shù)字化輸入板等)。該總線也經(jīng)由顯示適配器將一個或多個處理器連接至顯示器件102,諸如IXD屏幕或監(jiān)視器。
[0037]基本計算機系統(tǒng)101可通過能夠與網(wǎng)絡109通信108的網(wǎng)絡適配器而與其他計算機或計算機網(wǎng)絡通信。示例網(wǎng)絡適配器為通信頻道、令牌環(huán)(token ring)、乙太網(wǎng)絡或調(diào)制解調(diào)器。替代地,基本計算機系統(tǒng)101可使用無線接口(諸如蜂窩數(shù)字分組數(shù)據(jù)(⑶ro)卡)進行通信?;居嬎銠C系統(tǒng)101可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這些其他計算機相關聯(lián),或基本計算機系統(tǒng)101可為具有另一計算機的客戶端/服務器配置中的客戶端坐寸ο
[0038]圖2說明本發(fā)明可于其中實踐的數(shù)據(jù)處理網(wǎng)絡200。數(shù)據(jù)處理網(wǎng)絡200可包括諸如無線網(wǎng)絡及有線網(wǎng)絡的多個個別網(wǎng)絡,該多個個別網(wǎng)絡中的每一個可包括多個個別工作站201、202、203、204和/或圖1C的基本計算機系統(tǒng)101。另外,如本領域普通技術人員將了解,可包括一個或多個LAN,其中LAN可包含耦接至主機處理器的多個智能工作站。
[0039]程序設計碼111可體現(xiàn)于存儲器105中,且由處理器106使用處理器總線存取。此程序設計碼包括操作系統(tǒng),其控制各種計算機組件和一個或多個應用程序112的功能及交互。程序代碼通常是從長期存儲器107分頁至高速存儲器105,程序代碼可在高速存儲器中供處理器106進行處理。用于將軟件程序設計碼體現(xiàn)于存儲器中、實體介質(zhì)上和/或經(jīng)由網(wǎng)絡分發(fā)軟件碼的技術及方法是公知的且本文中將不予以進一步論述。程序代碼在被產(chǎn)生且存儲在有形介質(zhì)(包括(但不限于)電子存儲器模塊(RAM)、閃速存儲器、致密盤(CD)、DVD、磁帶等)上時常常被稱為“計算機程序產(chǎn)品”。計算機程序產(chǎn)品介質(zhì)通??捎蓛?yōu)選在計算機系統(tǒng)中的處理電路讀取以供處理電路執(zhí)行。
[0040]處理器最容易利用的高速緩沖存儲器(通常比處理器的其他高速緩沖存儲器快速且小)為最低(LI或?qū)蛹壱?高速緩沖存儲器,且主存儲器(主存儲器)為最高層級高速緩沖存儲器(L3,如果存在3個層級)。最低層級高速緩沖存儲器常常被劃分為保存待執(zhí)行的機器指令的指令高速緩沖存儲器(I高速緩沖存儲器)及保存數(shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩沖存儲器(D高速緩沖存儲器)。
[0041]仍參看圖2,網(wǎng)絡也可包括大型計算機或服務器,諸如可存取數(shù)據(jù)存儲庫也可從工作站205直接存取的網(wǎng)關計算機(客戶端服務器)206或應用程序服務器(遠程服務器)208。網(wǎng)關計算機206充當至每一網(wǎng)絡207的進入點。網(wǎng)關在將一個網(wǎng)絡連接協(xié)議連接至另一者時是必需的。網(wǎng)關計算機206可優(yōu)選地借助于通信鏈路耦接至另一網(wǎng)絡(例如,因特網(wǎng)207)。網(wǎng)關計算機206也可使用通信鏈路直接耦接至一個或多個工作站101、201、202、203及204。網(wǎng)關計算機可利用可從國際商業(yè)機器公司購得的IBM eServer? zSeries?z9?服務器來實施。
[0042]在實施例中,體現(xiàn)本發(fā)明的軟件程序設計碼是由基本計算機系統(tǒng)101的處理器106從長期存儲介質(zhì)(諸如圖1C的長期存儲器107)存取。軟件程序設計碼可體現(xiàn)于供數(shù)據(jù)處理系統(tǒng)使用的多種已知介質(zhì)(諸如磁盤、硬驅(qū)動器或CD-ROM)中的任一個上。該碼可分布在這些介質(zhì)上,或可從一個計算機系統(tǒng)的存儲器或存儲器經(jīng)由網(wǎng)絡至其他計算機系統(tǒng)地分發(fā)給用戶210及211以供這些其他系統(tǒng)的用戶使用。
[0043]參看圖3,描繪處理器106的示例性處理器實施例。將一個或多個層級的高速緩沖存儲器303用以緩沖存儲器塊以便改進處理器106的性能。高速緩沖存儲器303為保存可能被使用的存儲器數(shù)據(jù)的高速緩存行的高速緩沖器。典型高速緩存行為64、128或256個字節(jié)的存儲器數(shù)據(jù)。在實施例中,將單獨的高速緩存用于高速緩存指令而非用于高速緩存數(shù)據(jù)。常常由本領域公知的各種“窺探”演算法來提供高速緩存一致性(存儲器及高速緩沖存儲器中的行的復本的同步)。諸如處理器系統(tǒng)的存儲器105的主存儲器常常被稱為高速緩沖存儲器。在具有4個層級的高速緩沖存儲器303的處理器系統(tǒng)中,存儲器105有時被稱為層級5 (L5)高速緩沖存儲器,因為存儲器105通常較快且僅保存可供計算機系統(tǒng)使用的非易失性存儲器(DASD、磁帶等)的一部分。存儲器105 “高速緩存”由操作系統(tǒng)分頁到存儲器105內(nèi)及外的數(shù)據(jù)頁。
[0044]程序計數(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ù)器值是與關于執(zhí)行中的程序的其他狀態(tài)信息(諸如條件碼)一起存儲在PSW中,且載入指向待執(zhí)行的新程序模塊的指令的新程序代碼計數(shù)器值。執(zhí)行分支采納操作以便通過將分支指令的結果載入至程序計數(shù)器311中而準許程序做出決策或在程序內(nèi)循環(huán)。
[0045]在實施例中,指令提取單元305是用以代表處理器106提取指令。指令提取單元305提取“下一順序指令”、分支采納指令的目標指令或在上下文切換后程序的第一指令。在實施例中,指令提取單元305使用預提取技術而基于經(jīng)預提取的指令可能被使用的可能性來推測性地預提取指令。舉例而言,指令提取單元305可提取包括下一順序指令的16個字節(jié)的指令及額外字節(jié)的其他順序指令。
[0046]所提取指令接著由處理器106執(zhí)行。在實施例中,該所提取指令被傳遞至指令提取單元305的解碼/分派單元306。解碼/分派單元306解碼該指令且將關于該經(jīng)解碼指令的信息轉遞至適當執(zhí)行單元307、308和/或310。執(zhí)行單元307從指令提取單元305接收關于經(jīng)解碼算術指令的信息且將根據(jù)指令的操作碼(運算碼)對操作數(shù)執(zhí)行算術運算。操作數(shù)是從存儲器105、架構化寄存器309或從執(zhí)行中的指令的立即字段提供至執(zhí)行單元307。當存儲時,執(zhí)行的結果是存儲在存儲器105、架構化寄存器309或存儲在其他機器硬件(諸如控制寄存器、PSW寄存器等)中。
[0047]處理器106通常具有用于執(zhí)行指令的功能的一個或多個執(zhí)行單元307、308及310。參看圖4A,執(zhí)行單元307可通過接口邏輯407而與架構化寄存器309、解碼/分派單元306、載入/存儲單元310及其他處理器單元401通信。執(zhí)行單元307可使用若干寄存器電路403、404及405來保存信息,算術邏輯單元(ALU) 402將對該信息進行操作。ALU 402執(zhí)行諸如加減乘除的算術運算,以及諸如及(and)、或(or)、以及互斥或(xor)、旋轉及移位的邏輯功能。在實施例中,ALU支持與設計依賴的特殊化運算。其他電路可提供包括(例如)條件碼及復原支持邏輯的其他架構化設施408。通常,ALU運算的結果被保存在輸出寄存器電路406中,該輸出寄存器電路可將該結果轉遞至多種其他處理函數(shù)。在其他實施例中,存在處理器單元的許多配置,本描述僅意欲提供對一個實施例的代表性理解。
[0048]ADD指令(例如)將在具有算術及邏輯功能性的執(zhí)行單元307中執(zhí)行,而浮點指令(例如)將在具有特殊化浮點能力的浮點執(zhí)行單元(未圖示)中執(zhí)行。優(yōu)選地,執(zhí)行單元通過對由指令識別的操作數(shù)執(zhí)行運算碼定義的函數(shù)而對操作數(shù)進行運算。舉例而言,可由執(zhí)行單元307對在由指令的寄存器字段識別的兩個架構化寄存器309中發(fā)現(xiàn)的操作數(shù)執(zhí)行ADD指令。
[0049]執(zhí)行單元307對兩個操作數(shù)執(zhí)行算術加法且將結果存儲在第三操作數(shù)中,其中該第三操作數(shù)可為第三寄存器或該兩個源寄存器中的一個。執(zhí)行單元307優(yōu)選利用算術邏輯單元(ALU)402,其能夠執(zhí)行諸如移位、旋轉、與、或及XOR的多種邏輯函數(shù),以及包括加減乘除中的任一個的多種代數(shù)函數(shù)。一些ALU 402是為了純量運算而設計且一些ALU是為了浮點運算而設計。在實施例中,數(shù)據(jù)可視架構而為大端序(big endian)(其中最低有效字節(jié)在最高字節(jié)地址處)或小端序(little endian)(其中最低有效字節(jié)在最低字節(jié)地址處)。IBM z/Architecture為大端序。帶正負號字段可具正負號及量值,其視架構而定為二進位反碼或二進位補碼。二進位補碼是有利的,因為ALU不必設計減法能力,因為呈二進位補碼的負值或正值在ALU內(nèi)僅需要加法。數(shù)字通常以速記(shorthand)描述,其中例如,12位的字段定義4,096字節(jié)塊的地址且通常被描述為4Kbyte (千字節(jié))塊。
[0050]參看圖4B,用于執(zhí)行分支指令的分支指令信息通常被發(fā)送至分支單元308,其在其他條件運算完成之前使用諸如分支歷史表432的分支預測演算法來預測分支的結果。將在條件運算完成之前提取并推測地執(zhí)行當前分支指令的目標。當條件運算完成時,將基于條件運算的條件及推測出的結果而完成或舍棄推測地執(zhí)行的分支指令。典型分支指令可測試條件碼且在條件碼滿足該分支指令的分支要求的情況下分支至目標地址,可(例如)基于包括在寄存器字段或指令的立即字段中發(fā)現(xiàn)的數(shù)字的若干數(shù)字來計算目標地址。在實施例中,分支單元308可使用具有多個輸入寄存器電路427、428及429及輸出寄存器電路430的ALU 426。分支單元308可與(例如)通用寄存器、解碼/分派單元306或其他電路425通信。
[0051]可出于包括(例如)以下各者的多種原因而中斷一組指令的執(zhí)行:由操作系統(tǒng)起始的上下文切換,導致上下文切換的程序例外或錯誤,導致上下文切換的I/O中斷信號,或多個程序的多線程活動(在多線程環(huán)境中)。在實施例中,上下文切換動作存儲關于當前在執(zhí)行中的程序的狀態(tài)信息,且接著載入關于正被調(diào)用的另一程序的狀態(tài)信息。狀態(tài)信息可存儲在(例如)硬件寄存器中或存儲器中。狀態(tài)信息包括指向待執(zhí)行的下一指令的程序計數(shù)器值、條件碼、存儲器轉譯信息及架構化寄存器內(nèi)容。上下文切換活動可由硬件電路、應用程序、操作系統(tǒng)程序或固件碼(微代碼、微微代碼或經(jīng)授權內(nèi)部碼(LIC))單獨地或組合地實行。
[0052]處理器根據(jù)指令定義的方法來存取操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供明確地指向通用寄存器或?qū)S眉拇嫫?例如浮點寄存器)的一個或多個寄存器字段。指令可利用由運算碼字段識別為操作數(shù)的多個隱含寄存器。指令可利用操作數(shù)的存儲器位置。操作數(shù)的存儲器位置可由寄存器、立即字段或如由z/Architecture長位移設施(long displacement facility)舉例說明的寄存器與立即字段的組合提供,在該z/Architecture長位移設施中指令定義基寄存器、索引寄存器及立即字段(位移字段),其被加在一起以提供操作數(shù)在存儲器中的位置。本文中的位置暗示在主存儲器(主存儲器)中的位置,除非另有指示。
[0053]參看圖4C,處理器使用載入/存儲單元310來存取存儲器。載入/存儲單元310可通過經(jīng)由高速緩沖存儲器/存儲器接口獲得目標操作數(shù)在存儲器中的地址及將該操作數(shù)載入架構化寄存器309或另一存儲器位置中來執(zhí)行載入操作,或可通過獲得目標操作數(shù)在存儲器中的地址及將從架構化寄存器309或另一存儲器位置獲得的數(shù)據(jù)存儲在存儲器中的目標操作數(shù)字置中來執(zhí)行存儲操作。載入/存儲單元310可為推測性的且可以相對于指令序列而言無序的序列存取存儲器;然而,載入/存儲單元310對程序維持指令是有序地執(zhí)行的表像。載入/存儲單元310可與架構化寄存器309、解碼/分派單元306、高速緩沖存儲器/存儲器接口或其他元件455通信,且包含各種寄存器電路、ALU 458及控制邏輯463以計算存儲地址且提供管線排序以保持運算有序。一些運算可能無序,但載入/存儲單元提供如本領域公知的用以使無序的運算對程序表現(xiàn)為已有序地執(zhí)行的功能性。
[0054]優(yōu)選地,應用程序“看見”的地址常常被稱為虛擬地址。虛擬地址有時被稱為“邏輯地址”及“有效地址”。這些虛擬地址是虛擬的,因為虛擬地址是通過多種DAT技術中的一個(諸如圖3的DAT 312)重定向至實體存儲器位置,DAT技術包括(但不限于)將偏移值(offset value)作為虛擬地址的首碼、經(jīng)由一個或多個轉譯表轉譯虛擬地址,轉譯表至少單獨地或組合地包括段表及頁表,優(yōu)選地,段表具有指向頁表的輸入項。在z/Architecture中,提供轉譯的階層,其包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表及選用的頁表。常常通過利用轉譯后備緩沖器(TLB)來改進地址轉譯的性能,該轉譯后備緩沖器包含將虛擬地址映射至相關聯(lián)實體存儲器位置的輸入項。輸入項是在DAT 312使用轉譯表轉譯虛擬地址時創(chuàng)建。于是,虛擬地址的后續(xù)使用可利用快速TLB的輸入項而非緩慢的順序轉譯表存取??赏ㄟ^包括最近最少使用(LRU)演算法的多種替換演算法管理TLB內(nèi)容。
[0055]在處理器106為多處理器系統(tǒng)的處理器的情況下,每一處理器有責任使經(jīng)共用資源(諸如I/o、高速緩沖存儲器、TLB及存儲器)保持連鎖以達成一致性。在實施例中,“窺探”技術將被用于維持高速緩存一致性。在窺探環(huán)境中,每一高速緩存行可被標記為處于共用狀態(tài)、排他狀態(tài)、有變化狀態(tài)、無效狀態(tài)及類似狀態(tài)中的任一個中以便促進共用。
[0056]圖3的I/O單元304為處理器106提供了用于附接至外圍設備(包括例如磁帶、磁盤、打印機、顯示器及網(wǎng)絡)的構件。I/o單元304常常由軟件驅(qū)動程序提供給計算機程序。在諸如來自IBM的z/Series的大型計算機中,頻道適配器及開放式系統(tǒng)適配器為大型計算機的I/O單元,I/O單元提供操作系統(tǒng)與外圍設備之間的通信。
[0057]檢測數(shù)據(jù)為與處理器106的操作有關的數(shù)據(jù)。在實施例中,對檢測數(shù)據(jù)及其他系統(tǒng)層級量度的存取可能受限制或不可用。計算機處理器在特權狀態(tài)(或監(jiān)督狀態(tài))及較低特權狀態(tài)(或問題狀態(tài))下操作。在特權狀態(tài)中,程序可經(jīng)由特權操作對所有系統(tǒng)資源進行存取(例如,對所有控制寄存器及監(jiān)督存儲器空間進行存取)。特權狀態(tài)也被稱為特權模式或監(jiān)督模式。在計算機處理器上執(zhí)行的操作系統(tǒng)可在特權狀態(tài)中操作。較低特權狀態(tài)為對系統(tǒng)資源的存取受限制的非特權狀態(tài)。舉例而言,在較低特權狀態(tài)中執(zhí)行的應用程序可對控制寄存器具有有限存取權或無存取權,且僅可存取由操作系統(tǒng)指派給應用程序的用戶存儲器空間。較低特權狀態(tài)通常被指派給在操作系統(tǒng)的控制下執(zhí)行的應用程序,且不可在較低特權狀態(tài)中執(zhí)行特權操作。較低特權狀態(tài)也被稱為問題狀態(tài)、問題模式或用戶模式。
[0058]對于在較低特權狀態(tài)中執(zhí)行的程序而言不可進行寫入存取的一個這種受限資源為程序狀態(tài)字(PSW)。PSW可包含待執(zhí)行的下一指令的程序計數(shù)器、可由分支指令使用的條件碼字段、用于指示檢測被啟用或停用的檢測控制字段,及用以控制指令排序且確定計算機處理器的狀態(tài)(包括指派給程序的特權狀態(tài))的其他信息。在多線程處理環(huán)境中,多個程序共用可用計算機處理器能力或?qū)⒖捎糜嬎銠C處理器能力按時間截塊。程序中的每一個具有上下文信息(context informat1n),其包括相關聯(lián)PSW、用于存取指派給程序的主存儲器的地址轉譯表的原始地址、一組通用寄存器當前值、控制寄存器、浮點寄存器等。目前在作用中或控制的PSW被稱為當前PSW。PSW管理目前在執(zhí)行中的程序。計算機處理器具有中斷能力,其準許計算機處理器回應于例外條件及外部刺激而迅速地上下文切換至另一程序。當中斷出現(xiàn)時,計算機處理器針對特定中斷類別而將當前PSW置于經(jīng)指派存儲位置(稱為舊PSW位置)中。計算機處理器從第二經(jīng)指派存儲位置提取新PSW。此新上下文確定了待執(zhí)行的下一程序。在實施例中,這些存儲位置位于計算機處理器可存取的存儲器位置中。當計算機處理器已完成處理該中斷時,處置該中斷的程序可重新載入包括舊PSW的舊上下文,使舊PSW又變?yōu)楫斍癙SW,使得被中斷程序可繼續(xù)。
[0059]可以明確方式(例如,當指令執(zhí)行讀取PSW位的部分時)或隱含方式(例如,在指令提取、操作數(shù)提取、地址產(chǎn)生計算、地址產(chǎn)生源等中)參考PSW的字段。明確參考通常在運行時間執(zhí)行,而隱含參考通常在指令執(zhí)行期間在管線的不同階段(即,指令提取、指令解碼、運行時間及完成時間)執(zhí)行。可獨立于彼此來參考或更新PSW中的個別字段。
[0060]在實施例中,通過操縱上下文,操作系統(tǒng)控制計算機處理資源,包括由計算機處理器啟用運行時間檢測??稍诓僮飨到y(tǒng)的執(zhí)行期間以及由操作系統(tǒng)所執(zhí)行的任何軟件應用程序啟用或停用運行時間檢測。運行時間檢測的啟用/停用狀態(tài)經(jīng)存儲為與程序相關聯(lián)的PSW中的上下文信息。
[0061]運行時間檢測(RI)設施可并入實施z/Architecture的模型上。當RI設施經(jīng)安裝且被啟用時,在程序執(zhí)行期間將數(shù)據(jù)收集至CPU內(nèi)的一個或多個收集緩沖器中且接著將其報告至程序緩沖器。所存儲信息的每一單元被稱為報告群組。報告群組的內(nèi)容由多個記錄組成,記錄的內(nèi)容表示由CPU在程序執(zhí)行期間識別的事件。
[0062]當以一配置安裝運行時間檢測設施時,PSff字段(RI位)啟用運行時間檢測。該運行時間檢測控制的有效性確定了開啟RI位的能力,但當RI為I時,CPU控制有效且運行時間檢測經(jīng)啟用。運行時間檢測設施可包括以下指令:載入運行時間檢測控制、修改運行時間檢測控制、運行時間檢測發(fā)出、運行時間檢測下一個、運行時間檢測關閉、運行時間檢測開啟、存儲運行時間檢測控制,及測試運行時間檢測控制。
[0063]載入運行時間檢測控制(LRIC)指令初始化管理運行時間檢測的運行時間檢測控制。修改運行時間檢測控制(MRIC)指令修改最初由LRIC創(chuàng)建的運行時間檢測控制的全部或子集。運行時間檢測發(fā)出(RIEMIT)指令通過將通用寄存器的值存儲在收集緩沖器中來收集該值。運行時間檢測下一個(RINEXT)指令執(zhí)行對在RINEXT之后的下一個順序指令(NSI)的導向取樣。運行時間檢測關閉(R1FF)指令停用運行時間檢測。運行時間檢測開啟(R1N)指令啟用運行時間檢測。存儲運行時間檢測控制(STRIC)指令將該運行時間檢測控制的當前值置于指定的存儲位置中。測試運行時間檢測控制(TRIC)指令檢查該運行時間檢測控制。在有效的情況下,設置控制經(jīng)更改指示符的狀態(tài)。
[0064]運行時間檢測設施包括用于使測量警告外部中斷擱置(pending)的能力。由運行時間檢測收集且報告至程序緩沖器的信息的一些是依賴模型的,且因此未被定義。由運行時間檢測設施提供的樣本及數(shù)據(jù)是用于對性能特性的統(tǒng)計估計,且是實質(zhì)上準確的,且可能不可重復。舉例而言,不管取樣模式如何,都不可預測:導致例外或與特定系統(tǒng)內(nèi)部活動相關聯(lián)的樣本指令是否會導致報告群組的存儲,以及如果報告群組經(jīng)存儲,包括在運行時間檢測數(shù)據(jù)中的依賴模型數(shù)據(jù)是否會受影響。
[0065]收集緩沖器是用以捕獲記錄的集合,記錄的內(nèi)容報告在程序執(zhí)行期間由處理器識別的事件。示例為:一個或多個采納分支的執(zhí)行;事務執(zhí)行中止事件;指令提取高速緩存未命中;數(shù)據(jù)提取或存儲高速緩存未命中;以及RIEMIT指令的操作數(shù)。RIEMIT指令的執(zhí)行通過將通用寄存器的值存儲至收集緩沖器中來收集該值。可在諸如指令數(shù)據(jù)緩沖器的其他緩沖器中收集和/或存儲額外數(shù)據(jù)。
[0066]報告受報告控制控制。當樣本指令經(jīng)識別時,每一報告控制啟用對相應條件的檢查。如果相應條件存在,則形成且存儲報告群組。當無報告控制經(jīng)啟用或經(jīng)啟用報告控制的相應條件不存在時,不存儲報告群組??蓮闹噶顢?shù)據(jù)緩沖器及其他依賴模型源獲取關于樣本指令所報告的數(shù)據(jù),且接著將其用以創(chuàng)建報告群組的一個或多個記錄的內(nèi)容,一個這種記錄為指令記錄。
[0067]可在報告群組存儲器中捕獲的記錄類型包括:填充、額外、開始、時間戳、指令、發(fā)出、事務執(zhí)行(TX)中止、調(diào)用、返回和傳送。當收集緩沖器中的有效記錄的數(shù)目不足以填滿當前報告群組大小的報告群組時,在報告群組中使用填充記錄(filler record)??稍趫蟾嫒航M的額外區(qū)段中使用額外記錄。開始記錄為第一報告群組的第一記錄。時間戳記錄經(jīng)存儲為除第一報告群組外的每一個報告群組的記錄O。當針對樣本指令存儲報告群組時創(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)建。
[0068]圖5描繪可實施于實施例中的用于處理器的運行時間檢測的系統(tǒng)的示意圖。在實施例中,系統(tǒng)500包括中央處理單元(CPU),諸如圖1的處理器106。在實施例中,處理器106為單一處理器。在替代實施例中,處理器106為多核心處理器的單一處理核心。在實施例中,處理器106能夠以變化的速度操作。
[0069]在實施例中,處理器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ù)。
[0070]處理器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í)行。
[0071]在實施例中,處理器106將來自主存儲器514中的用于目前執(zhí)行的操作系統(tǒng)或應用程序的PSW數(shù)據(jù)512的PSW 512載入寄存器510中且設置(例如)寄存器510中的一個或多個處理器設置。在實施例中,寄存器510中的PSW包括用于啟用及控制檢測模塊506的一個或多個位。
[0072]—個或多個應用程序518包括經(jīng)編譯以在特定操作系統(tǒng)上執(zhí)行的軟件應用程序、在解譯器上執(zhí)行的經(jīng)解譯碼(例如,Java)或操作系統(tǒng)支持線程(例如,進程管理、守護進程等)。一個或多個操作系統(tǒng)516和/或一個或多個應用程序518中的每一個可執(zhí)行指令以觸發(fā)檢測模塊506以使其開始或停止收集檢測數(shù)據(jù)。
[0073]在實施例中,一個或多個應用程序518中的一個執(zhí)行指令,該指令已被確定為樣本指令,從而在該樣本指令的執(zhí)行完成時創(chuàng)建樣本點,且接著使檢測模塊506將應用程序的所收集數(shù)據(jù)從收集緩沖器508移動至主存儲器514中的可由應用程序存取的程序緩沖器522。主存儲器514可為本領域已知的任何可尋址存儲器。在實施例中,主存儲器514可包括有時被稱為高速緩沖存儲器的快速存取緩沖存儲器。每一 CPU可具有相關聯(lián)高速緩沖存儲器。在額外實施例中,主存儲器514為動態(tài)隨機存取存儲器(DRAM)。在又一實施例中,主存儲器為存儲器件,諸如可由應用程序存取的計算機硬驅(qū)動器或閃速存儲器。
[0074]為了配置運行時間檢測控制,處理器106支持載入運行時間檢測控制(LRIC)指令。除本文予以進一步描述的特定LRIC字段外,將理解,也可定義額外字段以支持其他功能性。LRIC指令可用以載入運行時間檢測且最初配置運行時間檢測,且是由圖5的檢測模塊506支持。在實施例中,檢測模塊506 (也被稱為運行時間檢測模塊506)實施運行時間檢測控制及報告控制。運行時間檢測控制的當前狀態(tài)可使用存儲運行時間控制(STRIC)指令從圖5的寄存器510存儲至主存儲器514中。可作為LRIC指令的操作數(shù)載入的控制塊的各種字段的定義也在本文中用以指代運行時間檢測控制的相應值的狀態(tài)。
[0075]圖6描繪實施例中的包括可由特權狀態(tài)設置的控制的運行時間檢測控制控制塊(RICCB)的一部分??刂茐K部分600可包括除了參看圖6所描述的那些值之外的額外值??捎蒐RIC指令來執(zhí)行對控制塊部分600的修改。
[0076]該控制塊部分包括有效性位602 (V位)。有效性位602指示處理器中的運行時間檢測控制的集合的有效性,因為控制是由LRIC指令先前設置。
[0077]該控制塊也包括S位604,其用以確定是否允許較低特權狀態(tài)程序執(zhí)行MRIC指令。K位606指示較低特權狀態(tài)程序是否被準許在半特權狀態(tài)中關于運行時間檢測控制(諸如運行時間檢測控制的原始地址及極限地址)進行執(zhí)行。H位608確定地址控制(B卩,原始地址、極限地址及當前地址)是否參考主要虛擬地址空間(primary virtual address space)或主虛擬地址空間(home virtual address space)。0位610被忽略且當作0對待。
[0078]較低特權狀態(tài)樣本報告控制位612 (Ps位)是與較低特權狀態(tài)程序結合使用。當在較低特權狀態(tài)中且運行時間檢測控制中的Ps位612為零時,在運行時間檢測經(jīng)啟用時忽略運行時間檢測控制的報告控制,且因此不導致存儲報告群組。當在較低特權狀態(tài)中且運行時間檢測控制中的Ps位612為I時,檢查報告控制且根據(jù)其經(jīng)定義功能來加以使用。
[0079]監(jiān)督狀態(tài)樣本報告控制位614 (Qs位)是與監(jiān)督狀態(tài)程序結合使用。當在監(jiān)督狀態(tài)中且運行時間檢測控制中的Qs位614為零時,在運行時間檢測經(jīng)啟用時忽略運行時間檢測控制的報告控制,且因此不導致存儲報告群組。當在監(jiān)督狀態(tài)中且運行時間檢測控制中的Qs位614為I時,檢查報告控制且根據(jù)其經(jīng)定義功能來加以使用。
[0080]較低特權狀態(tài)收集緩沖器控制位616 (Pc位)控制著對圖5的收集緩沖器508的更新。當在較低特權狀態(tài)中且運行時間檢測控制中的Pc位616為零時,在運行時間檢測經(jīng)啟用時忽略運行時間檢測控制的收集緩沖器控制,且收集緩沖器508的更新被阻止。當在較低特權狀態(tài)中且運行時間檢測控制中的Pc位616為I時,檢查收集緩沖器控制且根據(jù)其經(jīng)定義功能來加以使用。
[0081]監(jiān)督狀態(tài)收集緩沖器控制位618 (Qc位)控制著對收集緩沖器508的更新。當在監(jiān)督狀態(tài)中且運行時間檢測控制中的Qc位618為零時,在運行時間檢測經(jīng)啟用時忽略運行時間檢測控制的收集緩沖器控制,且收集緩沖器508的更新被阻止。當在監(jiān)督狀態(tài)中且運行時間檢測控制中的Qc位618為I時,檢查經(jīng)指示收集緩沖器控制且根據(jù)其經(jīng)定義功能來加以使用。
[0082]G位620為運行時間檢測暫停中斷(也被稱為暫停中斷)的擱置控制。當G位620為零時,暫停中斷不在擱置中。當G位602為I時,暫停中斷在擱置中。當程序緩沖器522中的第一報告群組被寫入時,G位620被設置為零。即,當運行時間檢測程序緩沖器原始地址(ROA) 702等于圖7的運行時間檢測程序緩沖器當前地址(RCA) 706時,G位620被設置為零。當嘗試將除了第一報告群組之外的報告群組存儲在程序緩沖器522中時,G位620在運行時間檢測暫停條件不存在的情況下經(jīng)設置為零,且報告群組被存儲。當嘗試將除了第一報告群組之外的報告群組存儲在程序緩沖器522中時,G位620在運行時間檢測暫停條件存在的情況下經(jīng)設置為1,且不存儲報告群組。
[0083]U位622為用于緩沖器滿中斷及暫停中斷的啟用控制。當U位622為零時,中斷請求的產(chǎn)生被停用,且如果該產(chǎn)生在擱置中,則其保持擱置。
[0084]L位624為緩沖器滿中斷的擱置控制。當L位624為零時,緩沖器滿中斷不在擱置中。當L位624為I時,緩沖器滿中斷在擱置中。
[0085]密鑰字段626為4位的無正負號的整數(shù),其值被用作報告群組的存儲的存儲保護密鑰。僅在存儲密鑰匹配與對存儲器存取的請求相關聯(lián)的存取密鑰時才準許報告群組的存儲,且在存儲密鑰匹配存取密鑰時或在存儲密鑰的提取保護位為零時準許提取。在存儲密鑰的四個存取控制位等于存取密鑰時或在存取密鑰為零時,密鑰匹配。
[0086]圖7描繪當MRIC被準許以半特權模式(即,K位為I)執(zhí)行時的RICCB控制塊的一部分??刂茐K700也可為用于初始化運行時間檢測控制的LRIC指令的操作數(shù)??刂茐K700可包括除了參看圖7所描述的那些值之外的額外值。在實施例中,MRIC指令操作數(shù)的未另外指明的多個區(qū)段不可由較低特權狀態(tài)程序存取。當半特權模式被準許時,運行時間檢測程序緩沖器原始地址(ROA) 702及運行時間檢測程序緩沖器極限地址(RLA) 704是由較低特權狀態(tài)程序用MRIC指令設置。ROA 702為圖5的程序緩沖器522的第一字節(jié)的位置。RLA 704指示程序緩沖器522的最后一個字節(jié)的位置。
[0087]在實施例中,運行時間檢測程序緩沖器當前地址(RCA) 706可由MRIC指令更新。RCA 706為待存儲的下一個報告群組在程序緩沖器522中的位置。RCA 706檢查報告群組大小字段744 (RGS字段),且影響用以形成程序緩沖器522的地址的有效位位置的數(shù)目。64位的RCA 706為字O、字I的位位置O至26-RGS和附加在右邊的RGS+5 二進位零。此為將存儲在程序緩沖器522中的后續(xù)報告群組在圖5的程序緩沖器522中的開始位置。報告群組為由檢測模塊506創(chuàng)建且隨后存儲在程序緩沖器522中的信息單元。在實施例中,當由RCA 706指定的RGS字段744不等于運行時間檢測控制的當前報告群組大小(即,RCA 706會改變RGS字段744)時,則將RCA 706設置為ROA 702。
[0088]剩余樣本間隔計數(shù)字段742 (RSIC字段)可由較低特權程序使用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)設置為非零值時,其經(jīng)受SF字段740也經(jīng)受的相同依賴模型最大限制。當RSIC字段742的原始值為零時,取樣模式將支配在LRIC指令及MRIC指令的執(zhí)行期間RSIC字段742是否經(jīng)設置為SF字段740中的值,或該字段是否繼續(xù)展示為零,直至運行時間檢測經(jīng)啟用。
[0089]SF字段740含有64位的無正負號的整數(shù),其值為單元的縮放因子計數(shù)。單元的尺寸是根據(jù)模式字段708 (M字段)確定。當RSIC字段742中的值為零時,SF字段740提供RSIC字段742的遞減至零的初始值,在遞減至零時,當前指令被識別為樣本指令,且從SF字段740值再新間隔計數(shù)。SF字段740的有效值在I至264-1的范圍中。如果指定了零,則采用值一。然而,每一模型可具有SF字段740的最小值及最大值兩者。最小值及最大值也可基于模式字段708而不同。如果指定了小于最小值的值,則依賴模型最小值被載入。如果指定了大于最大值的值,則依賴模型最大值被載入。
[0090]DC控制字段736為4位的無正負號的整數(shù),其值指明與數(shù)據(jù)提取或存儲高速緩存未命中相關聯(lián)的高速緩存等待層級。即,樣本指令遭遇數(shù)據(jù)存取高速緩存未命中。除非被另一運行時間檢測控制禁止,否則嘗試存儲表示樣本指令的報告群組,該樣本指令的數(shù)據(jù)存取在數(shù)值上大于或等于由DC控制字段736的值指明的層級的高速緩存等待層級處經(jīng)識別為未命中。用于數(shù)據(jù)存取的高速緩沖存儲器結構及高速緩存等待層級是依賴模型的。對于具有多個操作數(shù)或長操作數(shù)的指令,其是依賴模型于哪一操作數(shù)存取(如果存在)是用于報告控制。依賴模型行為可忽略DC控制字段736的值,且因此不使用該值作為存儲報告群組的原因。
[0091]IC字段734為4位的無正負號的整數(shù),其值指明與指令提取高速緩存未命中相關聯(lián)的高速緩存等待層級。即,樣本指令的提取遭遇指令提取高速緩存未命中。對于IC字段734及DC控制字段736兩者而言,高速緩存等待層級為特定高速緩存層級存取與進行觀測的處理器的距離的抽象化。等待層級取決于處理器與主存儲器之間的嵌套高速緩存層級的量與在多個處理器之間共用這些高速緩存層級的方式的組合。較大等待層級通常對應于消耗較多時間的存取。IC字段734及DC控制字段736中的值可被視為高速緩存等待層級的零原點識別。舉例而言,值零對應于LI高速緩沖存儲器(即,最接近處理器的高速緩沖存儲器)。值一因此為下一層高速緩沖存儲器,其可被稱為L2高速緩沖存儲器,或甚至L1.5高速緩沖存儲器(在一些機器中)。值2-15指明額外高速緩存等待層的邏輯漸進,直至達到主存儲器,但不包括主存儲器本身。一般而言,高速緩沖存儲器結構不會深達十五層。因此,IC字段734及DC控制字段736中的值15被解譯為特殊情況,其分別且無關于高速緩存等待層級地意味:并未出于產(chǎn)生報告群組的存儲的目的而識別出指令提取或數(shù)據(jù)存取的高速緩存未命中。除非被另一運行時間檢測控制禁止,否則嘗試存儲表示樣本指令的報告群組,該樣本指令的提取被識別在數(shù)值上大于或等于由IC字段734的值指明的層級的高速緩存等待層級處未命中。用于指令提取的高速緩沖存儲器結構及高速緩存等待層級是依賴模型的。依賴模型行為可忽略IC字段734的值,且因此不使用該值作為存儲報告群組的原因。
[0092]高速緩存等待層級更動控制報告控制位732 (F位)是用于非分支指令且用于分支預測控制。當運行時間檢測控制中的F位732為零時,檢查運行時間檢測控制的高速緩存報告控制(IC字段734及DC控制字段736)且根據(jù)其經(jīng)定義功能來加以使用。檢查運行時間檢測控制的分支預測控制(BPxn 722、BPxt 724、BPti 726及BPni 728位)且根據(jù)其經(jīng)定義功能來加以使用。當F位732為I時,這些相同控制被忽略且報告群組被存儲,除非被另一控制禁止。
[0093]數(shù)據(jù)高速緩存未命中控制位730 (D位)指示報告群組是否將被存儲。如果D位730為1,則可或可不將額外類型記錄置于報告群組的含有關于樣本指令的依賴模型數(shù)據(jù)的額外區(qū)段中。
[0094]MRIC 指令包括分支預測(BP)報告控制(BPxn 722、BPxt 724、BPti 726 及 BPni728)。如果運行時間檢測控制中的BP報告控制位為零,則不檢查相應條件。如果BP報告控制位為I且相應分支預測條件存在,則報告群組被存儲。
[0095]BPxn位722在為I時啟用對分支預測信息的檢查。因此,如果樣本分支被錯誤地預測為經(jīng)采納而實際上未被采納,則報告群組被存儲。
[0096]BPxt位724在為I時啟用對分支預測信息的檢查。因此,如果樣本分支被錯誤地預測為未被采納而實際上經(jīng)采納,則報告群組被存儲。
[0097]BPti位726在為I時啟用對分支預測信息的檢查。因此,如果樣本分支被正確地預測為經(jīng)采納且實際上被采納,但分支目標被錯誤地預測,則報告群組被存儲。
[0098]BPni位728在為I時啟用對分支預測信息的檢查。因此,如果樣本分支被正確地預測為未被采納且實際上未被采納,且分支目標被錯誤地預測,則報告群組被存儲。
[0099]事務執(zhí)行模式記錄位720 (X位)的啟用控制控制著對事務執(zhí)行模式中止記錄的收集。當運行時間檢測控制中的X位720為零時,不收集事務執(zhí)行模式中止記錄。當X位720為I時,收集事務執(zhí)行模式中止記錄且將記錄置于圖5的收集緩沖器508中。如果模型未被安裝有事務執(zhí)行設施,則忽略X位720。
[0100]RIEMIT指令控制位718 (E位)控制RIEMIT指令的執(zhí)行。當在運行時間檢測經(jīng)啟用時運行時間檢測控制中的E位718為零或被忽略且當作零來對待時,RIEMIT執(zhí)行無操作(no-operat1n)。當E位718為I且未被以其他方式忽略時,RIEMIT經(jīng)啟用以執(zhí)行其經(jīng)定義功能。
[0101]J位746在為零時指定:不管掩碼值如何,條件分支(BC)指令在其他類型分支類別中。如果J位746為1,則指定掩碼15的BC指令在返回類型分支類別中。當BC指令指定掩碼1-14時,其不受J位746影響且始終在其他類型分支類別中。當在返回類型分支類別中時,R位716控制至圖5的收集緩沖器508中的包括。當在其他類型分支類別中時,B位748控制至收集緩沖器508中的包括。其他類型分支類別也可被指示為傳送類型分支類別。
[0102]指令地址碼位714 (C位)控制調(diào)用類型分支的啟用。如果運行時間檢測控制中的C位714為I且指令為調(diào)用類型分支,則收集緩沖器508被更新。如果對調(diào)用類型分支及返回類型分支兩者的依賴模型檢測被組合,則C位714對兩個類型起作用,且R位716無效。
[0103]R位716為返回類型分支的啟用控制。如果運行時間檢測控制中的R位716為I且指令為返回類型分支,則收集緩沖器508被更新。
[0104]B位748為對除了調(diào)用類型分支及返回類型分支以外的分支的啟用控制。如果運行時間檢測控制中的B位748為I且指令為由運行時間檢測識別的其他類型分支,則收集緩沖器508被更新。
[0105]最大地址已超出位712 (MAE位)在經(jīng)設置為I時指示已存儲了具有經(jīng)設置為I的C位714的一個或多個報告群組。一旦MAE位712經(jīng)設置為1,繼續(xù)運行時間檢測的執(zhí)行不會將該位設置回至零。將MAE位712指定為零的LRIC指令或MRIC指令的執(zhí)行會將MAE位712設置為零。
[0106]運行時間檢測下一個(RINEXT)控制位710 (N位)控制著對運行時間檢測下一個指令(其控制樣本指令的執(zhí)行)的啟用。當運行時間檢測控制中的N位710為零或被忽略且當作零來對待時,RINEXT執(zhí)行無操作。當N位710為I且未被以其他方式忽略時,RINEXT被啟用以執(zhí)行其經(jīng)定義功能。
[0107]模式字段708 (M字段)為4位的無正負號的整數(shù),其在運行時間檢測控制中的值指定用于運行時間檢測控制的取樣模式。所支持的取樣模式可包括基于對CPU循環(huán)進行計數(shù)、對指令進行計數(shù)的取樣,或可回應于諸如RINEXT的樣本指令而定向至樣本。
[0108]報告群組大小字段744 (RGS)為3位的無正負號的整數(shù),其值指定報告群組的記錄的數(shù)目(Rd。報告群組中的記錄的數(shù)目可從兩個記錄(包括開始/時間戳記錄及指令最后記錄)變化至多達256個記錄。在實施例中,上限可為依賴模型的。置于報告群組中的16字節(jié)記錄的數(shù)目為2-+1)。
[0109]主要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為I時,在CPU(例如,處理器106)以次要CPU能力操作的情況下發(fā)生抑制。當Y位738為I且Z位739為零時,在CPU(例如,處理器106)以主要CPU能力操作的情況下發(fā)生抑制。當Y位738及Z位739均為I時,發(fā)生抑制。
[0110]圖7的以上字段及位是字段的放置及命名的示例,且在本文中為清楚起見而提供。將理解,在其他實施例中,可僅使用字段的子集,字段可呈任何次序或在任何位置中,和/或可用不同名稱來表示。
[0111]當運行時間檢測經(jīng)安裝且啟用時,可在收集緩沖器508中捕獲許多事件及數(shù)據(jù)。收集緩沖器508被用以捕獲記錄的集合,記錄的內(nèi)容報告在程序執(zhí)行期間由處理器106識別的事件。示例為:一個或多個采納分支的執(zhí)行,事務執(zhí)行中止事件,高速緩存未命中,及運行時間檢測發(fā)出指令的操作數(shù)。IC控制字段734及DC控制字段736設置層級,程序可對在該層級采取用以改進指令或數(shù)據(jù)預取行為的某一校正動作有興趣。RIEMIT指令的執(zhí)行通過將通用寄存器的值存儲至收集緩沖器508中來收集該值。額外數(shù)據(jù)可被收集和/或存儲在其他緩沖器中,其他緩沖器諸如用以收集依賴模型樣本指令數(shù)據(jù)以建構運行時間檢測指令記錄的指令數(shù)據(jù)緩沖器(IDB)(未描繪)。
[0112]所收集的運行時間檢測信息是以取樣方式報告。對來自指令流的指令進行取樣。經(jīng)取樣的指令被稱為樣本指令。當運行時間檢測經(jīng)啟用時,用于確定樣本指令的若干模式被定義如下。在循環(huán)計數(shù)模式中,計數(shù)為SF 740或RSIC 742 (其任一個被用以提供用于當前間隔的計數(shù))中所指定的CPU循環(huán)的數(shù)目。回應于與取樣模式相關聯(lián)的事件調(diào)整該計數(shù)。舉例而言,當處理器106處在操作狀態(tài)中時,該計數(shù)可被遞減。當該計數(shù)遞減至諸如零的臨限值時,當前指令被識別為樣本指令,且將該計數(shù)重新初始化至SF 740值且該計數(shù)開始隨下一循環(huán)遞減。當樣本指令的執(zhí)行完成時,執(zhí)行報告(如果適當)。
[0113]在指令計數(shù)模式中,在SF 740或RSIC 742 (其任一個被用以提供用于當前間隔的計數(shù))中指定計數(shù)。針對由單一操作單元組成的指令,在作為用以調(diào)整計數(shù)的事件的指令完成時遞減計數(shù)。當計數(shù)遞減至諸如零的臨限值時,指令為樣本指令。對于由多個操作單元組成的指令,可按以下方式中的一個遞減計數(shù):
[0114]a.針對可中斷指令,直到部分完成的所有操作單元表示一個已計數(shù)單元,針對該已計數(shù)單元,計數(shù)遞減。
[0115]b.針對可中斷指令,從最近的部分完成起直到最終完成的所有操作單元表示一個已計數(shù)單元,針對該已計數(shù)單元,計數(shù)遞減。
[0116]c.針對在執(zhí)行由指令的參數(shù)指定的處理的CPU確定子部分之后完成的指令,完成表示一個已計數(shù)單元,針對該已計數(shù)單元,計數(shù)遞減。
[0117]d.針對在執(zhí)行多個操作單元之后完成而不在以上類別a_c中的指令,最后一個操作單元的完成表示一個已計數(shù)單元,針對該已計數(shù)單元,計數(shù)遞減。
[0118]當針對指令的任何已計數(shù)單元而言計數(shù)遞減至零時,指令為樣本指令。當達到諸如零的臨限值時,將計數(shù)重新初始化至SF 740值,且計數(shù)開始如以上a-d中所描述的倒數(shù)計數(shù)(count down) 0在計數(shù)模式的所有情況下,在樣本指令的最后一個操作單元完成之后發(fā)生報告(如果適當)。
[0119]在導向的樣本模式中,當N比特710是I并且成功地執(zhí)行RINEXT指令時導向的樣本出現(xiàn)。樣本指令是在RINEXT指令后的下一個順序的指令(NSI)。如果下一個順序的指令是執(zhí)行類型指令,則樣本指令是執(zhí)行類型指令的目標指令。導向的樣本可以當在循環(huán)計數(shù)或指令計數(shù)模式中出現(xiàn)。計數(shù)樣本與導向的樣本和其結果產(chǎn)生的行為的任何一個相結合地繼續(xù),并且不被影響,除了如果從計數(shù)樣本確定的樣本指令是由導向樣本確定的相同的指令,則不存儲兩個報告群組。
[0120]還可以基于檢測到目標指令操作碼或指令流中的地址,支持間接采樣模式。緩沖器或陣列可以用于存儲指令操作碼的數(shù)目、指令地址、和/或指令操作元中的地址。樣本指令是匹配間接操作碼或地址值之一的指令。
[0121]不管取樣模式如何,當樣本指令是由RINEXT指令的執(zhí)行識別時,存儲報告群組。然而,運行時間檢測控制Y 738、Z 739、Qs 614及Ps 612繼續(xù)有效。
[0122]循環(huán)計數(shù)及指令計數(shù)取樣各自基于內(nèi)部系統(tǒng)事件及例外條件而確定會經(jīng)受一定量的可變性的適當間隔。倒數(shù)計數(shù)(countdown)在運行時間檢測從停用轉變至啟用時開始。視可插入于RINEXT與NSI的完成之間的任何事件而定,導向取樣經(jīng)受較少量的可變性。值得注意,中斷可導致被視為NSI的指令不再為NSI。
[0123]與模式無關,取樣識別樣本指令。一旦樣本指令經(jīng)識別,收集便在該樣本指令的執(zhí)行完成時停止,且開始報告。接著應用管理報告的各種報告控制。在使報告群組的存儲在擱置中時,收集繼續(xù)。
[0124]在事務執(zhí)行模式中,可以將多個指令編群組以形成單個事務。檢測模塊506可以與事務執(zhí)行(TX)模塊526協(xié)作以在事務執(zhí)行模式中的同時向事務執(zhí)行暫存緩沖器524存儲運行時間檢測事件。當在事務期間可以出現(xiàn)的樣本點的可能數(shù)量大于對于事務的剩余持續(xù)時間在處理器106內(nèi)可以暫時存儲的數(shù)量時,可以使用事務執(zhí)行暫存緩沖器524。事務執(zhí)行暫存緩沖器524提供了暫時的存儲,使得可以在成功的事務完成時向程序緩沖器522條件地存儲一個或多個報告群組。可以明白,TX模塊526可以被群組合到檢測模塊506或處理器106的另一個部分內(nèi)。
[0125]當不在事務執(zhí)行模式中時,在樣本指令的執(zhí)行完成時,報告群組的存儲變?yōu)樵跀R置中。當在事務執(zhí)行模式中時,在樣本指令的執(zhí)行完成時,報告群組的存儲被延后,直至事務結束,且接著變?yōu)樵跀R置中。當報告群組的存儲被延后或在擱置中時,如果識別出以下中斷中的任一個,則報告群組可被清除:1)程序中斷;2)緊急機器檢查中斷;3)重新啟動中斷;及4)監(jiān)督調(diào)用中斷。
[0126]任何擱置中的I/O、外部及可抑制的機器檢查中斷保持擱置,直至報告群組已被存儲或運行時間檢測控制確定報告群將不被存儲。
[0127]每一模式可或可不允許報告控制的不同集合。當取樣模式為指令計數(shù)或循環(huán)計數(shù),但導向取樣也被使用時,可能通過多個取樣方法來識別出相同樣本指令。當此情況發(fā)生,且待使用的報告控制根據(jù)取樣模式而不同時,應用與導向取樣相關聯(lián)的報告控制。
[0128]如先前所描述,當在程序執(zhí)行期間啟用運行時間檢測時,運行時間檢測數(shù)據(jù)是收集于處理器106內(nèi)。在實施例中,在處理器106內(nèi)收集數(shù)據(jù)的位置為收集緩沖器508,且視情況為指令數(shù)據(jù)緩沖器。在實施例中,收集緩沖器508為處理器106的內(nèi)部緩沖器,其用以存儲(save)所收集的最近記錄。當檢測到樣本觸發(fā)點時,將記錄從收集緩沖器508復制至程序緩沖器522中以作為將寫入至程序緩沖器522的報告群組的部分。在實施例中,以非破壞性方式從收集緩沖器復制記錄。
[0129]收集緩沖器508可被稱為“硬件收集緩沖器”,因為收集緩沖器508位于處理器中,且在實施例中經(jīng)實施為表示給定事件的指令地址802及事件后設數(shù)據(jù)804的寄存器對的陣列。在實施例中,指令數(shù)據(jù)緩沖器也由寄存器對的陣列來實施。事件的示例為采納分支,針對該采納分支,寄存器對可保存該分支的指令地址,且該后設數(shù)據(jù)可保存分支的目標以及關于分支的歷史行為的信息。在實施例中,寄存器對經(jīng)排序,且隨著事件出現(xiàn)于指令流中而被順序地更新。維持計數(shù)器以指示陣列中的最近經(jīng)更新輸入項的索引。在實施例中,收集緩沖器508為循環(huán)緩沖器,且當收集緩沖器508被填滿時,下一事件覆寫陣列中的第一輸入項,且在發(fā)生后續(xù)事件時陣列的寄存器對的順序更新重新開始。因而,假設陣列CB[0]至CB[N-1]及指示最新更新索引的計數(shù)器i,所捕獲的事件的追蹤可由序列CB[i]、
CB[1-l]、......、CB[1]、CB[0]、CB[N-1]、CB[N-2]、......、CB[i+l]來表示。在另一實施例中,使用兩個指針:指向緩沖器中的最舊輸入項的頭指針,及指向緩沖器中的最新輸入項的尾/當前指針。
[0130]在收集緩沖器508中順序地捕獲表示處理器106在任何給定執(zhí)行點處的狀態(tài)的事件。將收集緩沖器508用以捕獲記錄的集合,記錄的內(nèi)容報告在程序執(zhí)行期間由處理器106識別的事件(例如,一個或多個采納分支的執(zhí)行,事務執(zhí)行中止事件,RIEMIT指令的操作數(shù)等)。在實施例中,經(jīng)識別的事件視圖7中所展示的RICCB的內(nèi)容而定。圖8中所展示的收集緩沖器508的實施例中的輸入項包括事件指令地址802及其他相關的事件后設數(shù)據(jù)804。事件后設數(shù)據(jù)804的示例包括(但不限于):采納分支的指令地址及該分支的目標(包括關于分支的歷史行為的某一信息);RIEMIT指令的指令地址及各別寄存器值;及事務中止指令的地址及各別事務復原進入點。
[0131]圖8中所展示的收集緩沖器508的實施例能夠存儲多達32個輸入項(S卩,關于32個事件的信息),其中由64個位(例如,位0:63)指定每一指令地址802且由64個位(例如,位64:127)指定事件后設數(shù)據(jù)804。收集緩沖器的大小(Rffl)為依賴模型計數(shù),其表示記錄的數(shù)目。在圖8中所展示的收集緩沖器508的實施例中,收集緩沖器的字節(jié)大小為16字節(jié)記錄大小的倍數(shù)。在實施例中,收集緩沖器的大小為大于或等于模型的最大報告群組的計數(shù)(Rm)與報告群組中的未從收集緩沖器獲取的記錄的計數(shù)(Rirc)之間的差的記錄數(shù)目。因此,在實施例中,收集緩沖器的大小經(jīng)表示為:Rra彡(Reg-Rnc) ο
[0132]在實施例中,收集緩沖器508及指令數(shù)據(jù)緩沖器(如果使用指令數(shù)據(jù)緩沖器)的內(nèi)容被清除或以其他方式受以下事件影響:(I)中斷;(2)開啟及關閉運行時間檢測設施的PSW位(例如,位24)從I變至O;及(3)當運行時間檢測設施處于事務執(zhí)行模式中時識別出樣本指令時(在此情況下,對收集數(shù)據(jù)緩沖器508及指令數(shù)據(jù)緩沖器的進一步更新停止且在事務結束時繼續(xù)),此時,報告群組的存儲在擱置中且收集緩沖器508及指令數(shù)據(jù)緩沖器被清除。在諸如在圖1B中所示的模擬主計算機系統(tǒng)的一個實施例中,使用寄存器和/或存儲器來實現(xiàn)收集緩沖器508。在這個實施例中,也使用寄存器和/或存儲器來實現(xiàn)如果存在的選用指令數(shù)據(jù)緩沖器。
[0133]在實施例中,額外能力可影響數(shù)據(jù)收集,且可看作提供額外數(shù)據(jù)收集點,而不實質(zhì)上干擾先前所描述的正常指令計數(shù)或循環(huán)計數(shù)取樣。這些能力包括RIEMIT指令的執(zhí)行,RIEMIT指令通過將通用寄存器的值存儲至收集緩沖器508中來收集該值。另外,先前所描述的運行時間檢測控制中的數(shù)據(jù)收集控制位可用以定制所收集數(shù)據(jù)的類型,例如,E、C、R及B控制位。以此方式,所收集數(shù)據(jù)的類型是可程序化的。
[0134]在實施例中,實施指令數(shù)據(jù)緩沖器以收集用以建構運行時間檢測指令記錄的依賴模型樣本指令數(shù)據(jù)。指令數(shù)據(jù)緩沖器從指令收集數(shù)據(jù)以便在該指令被識別為樣本指令時使數(shù)據(jù)可用。在實施例中,該指令數(shù)據(jù)緩沖器為處理器中的硬件緩沖器/存儲位置,關于可變?yōu)橛|發(fā)器以作為樣本點的指令的信息是存儲在該硬件緩沖器/存儲位置中,使得在登出過程期間,該信息可與來自收集緩沖器508的數(shù)據(jù)一起被寫出。類似于收集緩沖器508,該指令數(shù)據(jù)緩沖器包括指令地址及與該指令相關聯(lián)的后設數(shù)據(jù)。指令數(shù)據(jù)緩沖器中的后設數(shù)據(jù)常常為依賴機器的,且可包括(但不限于):高速緩存未命中相關的信息,及分支預測相關的信息。
[0135]根據(jù)實施例,所收集的其他數(shù)據(jù)可不來自于收集緩沖器508且可不來自于指令數(shù)據(jù)緩沖器。示例包括用以形成以下各者的部分的數(shù)據(jù):(I)報告群組的第一記錄:時間戳或開始記錄;及(2)額外類型的記錄,其可針對每一個報告群組而創(chuàng)建且因此不存儲在收集緩沖器508中,這些記錄(當存在時)可放置于報告群組的額外或依賴機器部分中。這些系統(tǒng)產(chǎn)生的記錄在本文中被稱為“系統(tǒng)信息記錄”。
[0136]圖8描述了在樣本點處被存儲到程序緩沖器522的報告群組800的高級示例。在記錄中的報告群組的大小被表示為RKe,等于2(ΜΒ+1),其中,RGS是作為指數(shù)的報告群組大小。當在報告群組中使用時,可以或可以不非破壞性地復制從除了收集緩沖器508之外的位置復制的模型相關的數(shù)量的記錄(Rnc)。在圖8的示例中,Reg = 8, Rgs = 2,并且Rnc = 4。在圖8中所示的示例報告群組800包括報頭區(qū)段802、主體區(qū)段804、額外記錄區(qū)段806和腳注區(qū)段808。
[0137]報頭區(qū)段802可以包括開始記錄或時間標記記錄,用于存儲狀態(tài)、跟蹤和/或定時信息。對于在程序緩沖器中存儲的第一報告群組在報頭區(qū)段802中存儲開始記錄(即,當RCA 706等于ROA 702時)。在一個實施例中,開始記錄包括:記錄類型字段“02” ;報告群組數(shù)量(NRG)字段,用于指示在程序緩沖器中當前存儲了多少報告群組;RGS字段,用于指示報告群組的大??;停止(S)字段,用于指示程序緩沖器522是否滿了 ;暫停(H)字段,用于指示是否暫停了運行時間檢測;以及,日時(TOD)時鐘時間段,用于指示何時寫入開始記錄。在一個實施例中,在開始記錄中的字段的至少一個子集出自RI控制塊(例如,RICCB)。時間標記記錄的一個實施例具有記錄類型“03”,并且包括用于指示何時存儲記錄的TOD時鐘字段。在一個實施例中,對于除了第一報告群組之外的每一個報告群組在報頭區(qū)段802中存儲時間標記記錄。
[0138]報告群組的主體區(qū)段804可以包括用于從收集緩沖器508樣本的事件和信息的多種記錄。事件和信息可以表示例如由發(fā)送指令捕獲的狀態(tài)信息、事務執(zhí)行異常終止、調(diào)用、返回、分支和填充。
[0139]在一個實施例中,在成功地執(zhí)行RIEMIT指令時,在收集緩沖器508中建立和存儲發(fā)送記錄。發(fā)送記錄的一個實施例包括:記錄類型字段“10”;指令地址碼字段,用于指示在發(fā)送記錄中如何表示當前PSW的指令地址比特位置;指令地址字段,其根據(jù)編址模式(例如,64、31或24比特)來變化,并且如果RIEMIT是執(zhí)行類型指令的目標則包含RIEMIT指令或執(zhí)行類型指令的指令地址,以及,發(fā)送數(shù)據(jù)字段,用于存儲來自由RIEMIT指令指定的一般寄存器的數(shù)據(jù)。
[0140]在一個實施例中,通過隱含的異常終止或通過事務異常終止指令的執(zhí)行來建立和在收集緩沖器508中存儲事務執(zhí)行模式異常終止記錄。異常終止記錄的一個實施例包括:記錄類型字段“11”、指令地址碼字段,用于指示如何在事務執(zhí)行異常終止記錄中表示當前PSff的指令地址比特位置;指令地址字段,其根據(jù)編址模式(例如,64、31或24比特)來變化,并且如果異常終止指令是執(zhí)行類型指令的目標則包含異常終止指令或執(zhí)行類型指令的指令地址,以及,用于與異常終止相關聯(lián)的任何模型相關數(shù)據(jù)的字段。
[0141]在一個實施例中,通過調(diào)用類型分支指令來建立調(diào)用記錄,該調(diào)用類型分支指令例如是:當R2字段非零時的BRANCH AND SAVE (分支和存儲)(BASR) ;BRANCH AND SAVE (分支和存儲)(BAS) ;BRANCH RELATIVE AND SAVE LONG ;BRANCH RELATIVE AND SAVE ;當1?2 字段是非零時的BRANCH AND LINK (BALR) ;BRANCH AND LINK (BAL);以及,當R2字段是非零時的BRANCH AND SAVE AND SET MODE。調(diào)用記錄的一個實施例包括:記錄類型字段“ 12”、指令地址碼字段,用于指示如何在調(diào)用記錄中表示當前PSW的指令地址比特位置;指令地址字段,其根據(jù)編址模式(例如,64、31或24比特)來變化,并且如果分支指令是執(zhí)行類型指令的目標則包含分支指令或執(zhí)行類型指令的指令地址,以及,良好作為的字段,用于指示是否周期地預測了分支;以及,目標地址字段,其包含分支目標地址(也被稱為“被調(diào)用位置”)。
[0142]程序緩沖器522中的報告群組900的主體區(qū)段904中的返回記錄及傳送記錄具有與調(diào)用記錄1402、1404及1406相同的格式。在實施例中,返回記錄具有為“ 13”的記錄類型字段且是通過返回類型分支指令的執(zhí)行而創(chuàng)建,該返回類型分支指令諸如當R2字段為非零且掩碼為15時的BRANCH ON CONDIT1N (BCR),當J位為I且掩碼為15時的BRANCH ONCONDIT1N(BC),及當R2字段為非零時的BRANCH AND SET MODE。對于返回記錄,指令地址字段含有分支指令或執(zhí)行類型指令(如果分支為執(zhí)行類型指令的目標)的地址,且目標地址字段含有返回位置。
[0143]在實施例中,傳送記錄具有為“14”的記錄類型字段且是通過諸如以下各者的返回類型分支指令的執(zhí)行而創(chuàng)建:a.當R2字段為非零且掩碼在1-14的范圍中時,BRANCH ON CONDIT1N (BCR) ;b.當J位為零或掩碼在1_14的范圍中時,BRANCH ONCONDIT1N (BC) ;c.BRANCH ON ⑶UNT (BCT, BCTR, BCTG, BCTGR) ;d.BRANCH ON INDEXHIGH(BXH, BXHG) ;e.BRANCH ON INDEX LOW OR EQUAL(BXLE, BXLEG) ;f.BRANCH RELATIVEON CONDIT1N (BRC) ;g.BRANCH RELATIVE ON C0NDIT10NL0NG(BRCL) ;h.BRANCH RELATIVEON COUNT(BRCT, BRCTG) ;1.BRANCH RELATIVE ON COUNT HIGH(BRCTH) ;j.BRANCH RELATIVEON INDEX HIGH(BRXH, BRXHG) ;k.BRANCH RELATIVE ON INDEX LOW OREQUAL(BRXLE, BRXLG);1.COMPARE AND BRANCH(CRB, CGRB) ;m.COMPARE AND BRANCH RELATIVE (CRJ,CGRJ);n.COMPARE IMMEDIATE AND BRANCH(CIB, CGIB) ;0.COMPARE IMMEDIATE ANDBRANCH RELATIVE(CIJ, CGIJ) ;p.COMPARE LOGICAL AND BRANCH(CLRB, CLGRB);q.COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ) ;r.COMPARE LOGICALIMMEDIATE ANDBRANCH(CLIB, CLGIB);及 s.COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE(CLIJ, CLGIJ)。傳送記錄是在分支經(jīng)采納時創(chuàng)建。對于傳送記錄,指令地址字段含有分支指令或執(zhí)行類型指令(如果分支為執(zhí)行類型指令的目標)的地址,且目標地址字段含有返回位置。
[0144]當收集緩沖器508中的有效記錄的數(shù)目不足以填滿具有當前RGS的報告群組900時,在報告群組900的主體區(qū)段904中使用填充記錄。圖15為填充記錄1500的實施例。圖15中所展示的實施例包括記錄類型1502,其經(jīng)設置為“00”以指示該記錄為填充記錄1500,且剩余字節(jié)是未定義的。
[0145]報告群組900中的額外記錄區(qū)段906 (在存在時)可含有依賴模型記錄。在實施例中,除了記錄類型經(jīng)設置為“01”以指示該記錄為額外記錄且該額外記錄的剩余字節(jié)含有依賴模型數(shù)據(jù)之外,額外記錄的格式類似于填充記錄1500。
[0146]腳注區(qū)段808可以包括包含關于樣本指令的執(zhí)行的信息的指令記錄。當對于樣本指令存儲報告群組時,建立指令記錄。指令記錄的一個實施例包括:記錄類型字段“04”、指令地址碼字段,用于指示如何在指令記錄中表示當前PSW的指令地址比特位置;指令地址字段,其根據(jù)編址模式(例如,64、31或24比特)來變化,并且如果樣本指令是執(zhí)行類型指令的目標則包含樣本指令或執(zhí)行類型指令的指令地址,以及,指令數(shù)據(jù)緩沖器(IDB)字段,其包含從IDB收集的任何模型相關數(shù)據(jù)。
[0147]圖9描述了可以在事務執(zhí)行模式中實現(xiàn)運行時間檢測采樣的處理流900??梢杂商幚砥?06執(zhí)行處理流900??梢曰蛘咄ㄟ^圖1B的模擬處理器29來實現(xiàn)處理流900。為了容易說明,在此相對于處理器106描述處理流900。
[0148]初始,圖5的運行時間檢測模塊506和寄存器510可以被配置為使用LRIC操作數(shù)支持基于間隔的、間接的或?qū)虻臉颖?,以加載如上所述的圖6和7的控制塊600和700。一旦配置和使能了運行時間檢測控件,則可以在收集緩沖器508中收集諸如事件和數(shù)據(jù)的信息。周期地、間接地或如所導向,達到觸發(fā)報告群組向程序緩沖器522內(nèi)的存儲的樣本指令,可以推遲向也被稱為運行時間檢測程序緩沖器522的該程序緩沖器522的存儲,直到事務成功地完成。選用地,事務執(zhí)行暫存緩沖器524可以用于容納多個報告群組的存儲,直到事務完成,并且報告群組被傳送到運行時間檢測程序緩沖器522。
[0149]在塊902處,處理器106確定它是否被配置為在事務執(zhí)行模式中執(zhí)行指令流的指令,其中,指令限定事務。指令流可以是來自運行時間存儲器504的問題狀態(tài)程序或管理狀態(tài)程序。
[0150]在塊904處,處理器106互鎖指令的存儲操作的完成,以防止指令導向的存儲,直到事務的完成。在塊906處,處理器106在事務執(zhí)行模式中的同時在指令的執(zhí)行期間識別樣本點。樣本點可以基于間隔計數(shù)達到閾值(例如,指令計數(shù)或循環(huán)計數(shù))、通過間接指令操作碼、通過間接地址或通過RINEXT指令。
[0151]在塊908處,如果識別了樣本點,則處理器106執(zhí)行在樣本點處獲得的運行時間檢測信息的運行時間檢測導向的存儲??梢砸远喾N方式來執(zhí)行運行時間檢測導向的存儲。在處理器106在事務執(zhí)行模式中的同時,在程序緩沖器508中收集運行時間檢測事件。在一個實施例中,當在事務執(zhí)行模式中的同時,推遲在運行時間檢測程序緩沖器522中存儲作為報告群組的所收集的運行時間檢測事件。在塊910處,基于事務的完成來執(zhí)行在運行時間檢測程序緩沖器522中的報告群組的副作用存儲。副作用存儲將RCA 706前進,以考慮新存儲的報告群組并且準備存儲下一個報告群組。副作用存儲是未被在處理器106上執(zhí)行的指令直接請求而是作為副作用間接地出現(xiàn)的存儲。
[0152]作為替代,如果處理器106包括事務執(zhí)行暫存緩沖器524,則在處理器106在事務執(zhí)行模式中的同時在事務執(zhí)行暫存緩沖器524中展示會存儲報告群組。在事務執(zhí)行模式中的同時,推遲從事務執(zhí)行暫存緩沖器524向運行時間檢測程序緩沖器522的報告群組的存儲。這允許在事務執(zhí)行模式中的同時在指令的執(zhí)行期間識別隨后的樣本點,并且隨后的報告群組被存儲在事務執(zhí)行暫存緩沖器524中。塊910副作用的替代實現(xiàn)方式基于事務的完成從事務執(zhí)行暫存緩沖器524向運行時間檢測程序緩沖器522存儲報告群組。副作用存儲將RCA 706前進,以考慮新存儲的報告群組并且準備存儲下一個報告群組。
[0153]作為另一種選擇,處理器106可以響應于從非事務執(zhí)行模式向事務執(zhí)行模式的轉換而存儲RCA 706的拷貝。處理器106執(zhí)行作為向由RCA 706標識的地址寫入的報告群組的非事務存儲的運行時間檢測導向的存儲?;谙蜻\行時間檢測程序緩沖器522存儲報告群組而更新RCA 706。該更新將RCA 706暫時前進,以考慮新存儲的報告群組和準備下一個報告群組。這被稱為運行時間檢測程序緩沖器522的條件管理。在塊912處,如果使用條件管理,則基于事務的成功完成而保持RCA 706的前進。處理器106可以檢測與事務相關聯(lián)的事務異常終止事件??梢栽跈z測到事務異常終止事件時將RCA 706恢復到RCA 706的拷貝。與事務異常終止事件相關聯(lián)的事務異常終止記錄被收集并且被存儲在程序緩沖器522中的下一個報告群組中?;謴蚏CA 706恢復可能已經(jīng)用于存儲事務的報告群組的空間,并且仍然報告與事務異常終止事件相關聯(lián)的數(shù)據(jù)。替代地,如果未期望空間恢復,則不必復制和恢復RCA 706。在任何一種情況下,可以在事務異常終止記錄中恢復事務故障代碼,以指示事務故障原因。
[0154]可以使得與事務執(zhí)行模式相關地收集的數(shù)據(jù)可用于樣本被配備來讀取運行時間檢測記錄并且提供事務執(zhí)行結果和故障代碼的分析的軟件。該分析的輸出可以用于自適應地重新編譯即時間程序,以避免或減少事務執(zhí)行模式故障的數(shù)量。
[0155]如上所述,可以以計算機實現(xiàn)的處理和用于設施那些處理的設備的形式來體現(xiàn)實施例。一個實施例可以包括在計算機可讀/可用介質(zhì)1002上如圖10中所述的計算機程序產(chǎn)品1000,該計算機可讀/可用介質(zhì)1002具有計算機程序代碼邏輯1004,該計算機程序代碼邏輯1004包含在作為制造品的有形介質(zhì)中包含的指令。用于計算機可用介質(zhì)1002的示例性制造品可以包括軟盤、⑶-ROM、硬盤驅(qū)動器、通用串行總線(USB)快閃驅(qū)動器或任何其他計算機可讀存儲介質(zhì),其中,當向計算機內(nèi)加載計算機程序代碼邏輯1004并且其被計算機執(zhí)行時,計算機變?yōu)橛糜趯嵤┍景l(fā)明的設備。實施例包括計算機程序代碼邏1004,例如,不論其是否被存儲在存儲介質(zhì)中、被加載到計算機內(nèi)和/或被計算機執(zhí)行或者通過某種傳輸介質(zhì)被發(fā)送,該通過某種傳輸介質(zhì)例如是通過電子布線或電纜、通過光纖或經(jīng)由電磁輻射,其中,當計算機程序代碼邏輯1004被加載到計算機內(nèi)并且被計算機執(zhí)行時,計算機變?yōu)橛糜趯嵤┍景l(fā)明的設備。當在通用微處理器上被實現(xiàn)時,計算機程序代碼邏輯1004分段配置微處理器以建立特定邏輯電路。
[0156]技術效果和益處包括使用運行時間檢測在事務執(zhí)行模式中樣本事件。對于在處理器在否則阻擋在事務期間的存儲的事務執(zhí)行模式中的同時的樣本的支持使得能夠在事務執(zhí)行期間能夠收集一個或多個樣本點。獨立的事務執(zhí)行暫存緩沖器可以提供中間存儲區(qū)域,用于在事務完成之前推遲向程序緩沖器的報告群組的寫入。跟蹤程序緩沖器當前地址的值可以通過下述方式來使能在程序緩沖器中的空間恢復:響應于事務異常終止事件而將程序緩沖器當前地址復位到較早的位置。對于在事務執(zhí)行模式中的樣本的支持也可以被包括在使用模擬例程的模擬或虛擬處理器中。
[0157]在此使用的術語僅用于描述特定實施例的目的,并且不意欲限制本發(fā)明。支持使用的單數(shù)形式“一個”和“該”意欲也包括復數(shù)形式。除非上下文清楚地另外指示。進一步可以明白,術語“包括”和/或“包含”當在本說明書中使用時指定所述特征、整數(shù)、步驟、操作、元件和/或部件的存在,但是不排出一個或多個其他特征、整數(shù)、步驟、操作、元件、部件和/或其群組的存在或增加。
[0158]在所附的權利要求中的所有部件或步驟外加功能元素的對應的結構、材料、行為和等同內(nèi)容意欲包括用于與具體要求保護的其他要求保護的元素相結合地執(zhí)行功能的任何結構、材料或行為。為了例示和說明的目的,已經(jīng)提供了在本說明書內(nèi)公開的實施例的描述,但是該說明不意欲是窮盡的或限于所公開的形式。在不偏離本發(fā)明的實施例的范圍和精神的情況下,許多修改和變化對于本領域內(nèi)的普通技術人員是顯然的。選擇和描述實施例以便最佳地解釋本發(fā)明的原理和實際應用,并且使得其他本領域內(nèi)的普通技術人員能夠明白用于具有適合于所考慮的特定用途的各種修改的各個實施例的發(fā)明布置。
[0159]所屬【技術領域】的技術人員知道,本發(fā)明的方面可以被體現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的方面可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。
[0160]可以采用一個或多個計算機可讀的介質(zhì)的任意群組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的群組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的群組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。
[0161]計算機可讀信號介質(zhì)可以包括例如在基帶或作為載波的一部分的、其中體現(xiàn)了計算機可讀程序代碼的傳播的數(shù)據(jù)信號。這樣的傳播信號可以采取各種形式的任何一種,包括但是不限于電磁、光學或其任何適當?shù)娜航M合。計算機可讀信號介質(zhì)可以是不作為計算機可讀存儲介質(zhì)并且可以傳輸、傳播或傳送程序以由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的任何計算機可讀介質(zhì)。
[0162]體現(xiàn)在計算機可讀介質(zhì)上的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于:無線、有線、光纜、RF等,或上述的任意合適的群組合。
[0163]可以以一種或多種程序設計語言或其群組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向?qū)ο蟮某绦蛟O計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設計語言一諸如” C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。
[0164]本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的群組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0165]也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruct1nmeans)的制造品(manufacture)。
[0166]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0167]如上所述,可以以計算機實現(xiàn)的處理和用于實施那些處理的形式來體現(xiàn)實施例。在實施例中,以由一個或多個網(wǎng)絡元件執(zhí)行的計算機程序代碼來體現(xiàn)本發(fā)明。實施例包括在計算機可用介質(zhì)上的計算機程序產(chǎn)品,其具有計算機程序代碼邏輯,該計算機程序代碼邏輯包含在作為制造品的有形介質(zhì)中包含的指令。用于計算機可用介質(zhì)的示例性制造品可以包括軟盤、⑶-ROM、硬盤驅(qū)動器、通用串行總線(USB)快閃驅(qū)動器或任何其他計算機可讀存儲介質(zhì),其中,當向計算機內(nèi)加載計算機程序代碼邏輯并且其被計算機執(zhí)行時,計算機變?yōu)橛糜趯嵤┍景l(fā)明的設備。實施例包括計算機程序代碼邏輯,例如,不論其是否被存儲在存儲介質(zhì)中、被加載到計算機內(nèi)和/或被計算機執(zhí)行或者通過某種傳輸介質(zhì)被發(fā)送,該通過某種傳輸介質(zhì)例如是通過電子布線或電纜、通過光纖或經(jīng)由電磁輻射,其中,當計算機程序代碼邏輯被加載到計算機內(nèi)并且被計算機執(zhí)行時,計算機變?yōu)橛糜趯嵤┍景l(fā)明的設備。當在通用微處理器上被實現(xiàn)時,計算機程序代碼邏輯分段配置微處理器以建立特定邏輯電路。
[0168]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的群組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的群組合來實現(xiàn)。
【權利要求】
1.一種計算機程序產(chǎn)品,用于在事務執(zhí)行模式中實現(xiàn)運行時間檢測采樣,所述計算機程序產(chǎn)品包括: 有形存儲介質(zhì),其能夠被處理電路讀取,并且存儲用于由所述處理電路執(zhí)行以執(zhí)行一種方法的指令,所述方法包括: 通過處理器確定所述處理器被配置為在事務執(zhí)行模式中執(zhí)行指令流的指令,所述指令限定事務; 互鎖所述指令的存儲操作的完成,以防止指令導向的存儲,直到所述事務的完成; 在所述事務執(zhí)行模式中的同時在所述指令的執(zhí)行期間識別樣本點;以及在所述事務的成功完成時運行時間檢測導向的存儲在所述樣本點處獲得的運行時間檢測息。
2.根據(jù)權利要求1所述的計算機程序產(chǎn)品,其中,運行時間檢測導向的存儲在所述樣本點處獲得的所述運行時間檢測信息進一步包括: 在所述事務執(zhí)行模式中的同時在收集緩沖器中收集運行時間檢測事件; 在所述事務執(zhí)行模式中的同時,推遲作為報告群組的所述收集的運行時間檢測事件在運行時間檢測程序緩沖器中的存儲;并且 基于所述事務的完成來在所述運行時間檢測程序緩沖器中副作用存儲所述報告群組。
3.根據(jù)權利要求1所述的計算機程序產(chǎn)品,其中,運行時間檢測導向的存儲在所述樣本點處獲得的所述運行時間檢測信息進一步包括: 在事務執(zhí)行暫存緩沖器中存儲包括所述運行時間檢測信息的報告群組;并且在所述事務執(zhí)行模式中的同時,推遲從所述事務執(zhí)行暫存緩沖器向運行時間檢測程序緩沖器的所述報告群組的存儲。
4.根據(jù)權利要求3所述的計算機程序產(chǎn)品,進一步包括: 在所述事務執(zhí)行模式中的同時,在所述指令的執(zhí)行期間識別隨后的樣本點; 在所述事務執(zhí)行暫存緩沖器中將在所述隨后的樣本點處獲得的隨后的運行時間檢測信息運行時間檢測導向的存儲為隨后的報告群組; 在所述事務執(zhí)行模式中的同時,推遲在所述運行時間檢測程序緩沖器中的所述隨后報告群組的存儲;并且 基于所述事務的所述完成,從所述事務執(zhí)行暫存緩沖器向所述運行時間檢測程序緩沖器副作用存儲所述報告群組和所述隨后的報告群組。
5.根據(jù)權利要求1所述的計算機程序產(chǎn)品,進一步包括: 在從非事務執(zhí)行模式向所述事務執(zhí)行模式轉換時,在運行時間檢測程序緩沖器中存儲指向當前位置的程序緩沖器當前地址的拷貝; 執(zhí)行作為向所述程序緩沖器當前地址寫入的報告群組的非事務存儲的所述運行時間檢測導向的存儲; 基于存儲所述報告群組而更新所述程序緩沖器當前地址; 檢測與所述事務相關聯(lián)的事務異常終止事件; 在檢測到所述事務異常終止事件時,將所述程序緩沖器當前地址恢復到所述程序緩沖器當前地址的所述拷貝;并且 在所述運行時間檢測程序緩沖器中的下一個報告群組中存儲與所述事務異常終止事件相關聯(lián)的事務異常終止記錄。
6.根據(jù)權利要求1所述的計算機程序產(chǎn)品,進一步包括: 檢測作為故障的事務異常終止事件,以成功地完成所述事務;并且 在收集緩沖器中收集與所述事務異常終止事件相關聯(lián)的事務異常終止記錄;并且 存儲包含所述事務異常終止記錄的報告群組。
7.根據(jù)權利要求6所述的計算機程序產(chǎn)品,進一步包括: 在所述事務異常終止記錄中存儲事務故障代碼,以指示事務故障原因。
8.根據(jù)權利要求1所述的計算機程序產(chǎn)品,其中,基于下述部分之一來識別所述樣本點:循環(huán)計數(shù)采樣、指令計數(shù)采樣、間接采樣和導向的采樣。
9.一種計算機實現(xiàn)的方法,用于在事務執(zhí)行模式中實現(xiàn)運行時間檢測采樣,所述方法包括: 通過處理器確定所述處理器被配置為在事務執(zhí)行模式中執(zhí)行指令流的指令,所述指令限定事務; 互鎖所述指令的存儲操作的完成,以防止指令導向的存儲,直到所述事務的完成; 在所述事務執(zhí)行模式中的同時在所述指令的執(zhí)行期間識別樣本點;以及在所述事務的成功完成時運行時間檢測導向的存儲在所述樣本點處獲得的運行時間檢測息。
10.根據(jù)權利要求9所述的方法,其中,運行時間檢測導向的存儲在所述樣本點處獲得的所述運行時間檢測信息進一步包括: 在所述事務執(zhí)行模式中的同時在收集緩沖器中收集運行時間檢測事件; 在所述事務執(zhí)行模式中的同時,推遲作為報告群組的所述收集的運行時間檢測事件在運行時間檢測程序緩沖器中的存儲;并且 基于所述事務的完成來在所述運行時間檢測程序緩沖器中副作用存儲所述報告群組。
11.根據(jù)權利要求9所述的方法,其中,運行時間檢測導向的存儲在所述樣本點處獲得的所述運行時間檢測信息進一步包括: 在事務執(zhí)行暫存緩沖器中存儲包括所述運行時間檢測信息的報告群組;并且在所述事務執(zhí)行模式中的同時,推遲從所述事務執(zhí)行暫存緩沖器向運行時間檢測程序緩沖器的所述報告群組的存儲。
12.根據(jù)權利要求11所述的方法,進一步包括: 在所述事務執(zhí)行模式中的同時,在所述指令的執(zhí)行期間識別隨后的樣本點; 在所述事務執(zhí)行暫存緩沖器中將在所述隨后的樣本點處獲得的隨后的運行時間檢測信息運行時間檢測導向的存儲為隨后的報告群組; 在所述事務執(zhí)行模式中的同時,推遲在所述運行時間檢測程序緩沖器中的所述隨后報告群組的存儲;并且 基于所述事務的所述完成,從所述事務執(zhí)行暫存緩沖器向所述運行時間檢測程序緩沖器副作用存儲所述報告群組和所述隨后的報告群組。
13.根據(jù)權利要求9所述的方法,進一步包括: 在從非事務執(zhí)行模式向所述事務執(zhí)行模式轉換時,在運行時間檢測程序緩沖器中存儲指向當前位置的程序緩沖器當前地址的拷貝; 執(zhí)行作為向所述程序緩沖器當前地址寫入的報告群組的非事務存儲的所述運行時間檢測導向的存儲; 基于存儲所述報告群組而更新所述程序緩沖器當前地址; 檢測與所述事務相關聯(lián)的事務異常終止事件; 在檢測到所述事務異常終止事件時,將所述程序緩沖器當前地址恢復到所述程序緩沖器當前地址的所述拷貝;并且 在所述運行時間檢測程序緩沖器中的下一個報告群組中存儲與所述事務異常終止事件相關聯(lián)的事務異常終止記錄。
14.根據(jù)權利要求9所述的方法,進一步包括: 檢測作為故障的事務異常終止事件,以成功地完成所述事務;并且 在收集緩沖器中收集與所述事務異常終止事件相關聯(lián)的事務異常終止記錄;并且 存儲包含所述事務異常終止記錄的報告群組。
15.根據(jù)權利要求14所述的方法,進一步包括: 在所述事務異常終止記錄中存儲事務故障代碼,以指示事務故障原因。
16.一種用于在事務執(zhí)行模式中實現(xiàn)運行時間檢測采樣的系統(tǒng),所述系統(tǒng)包括: 存儲器;以及 處理器,其包括運行時間檢測模塊,所述運行時間檢測模塊被配置為執(zhí)行一種方法,所述方法包括: 通過處理器確定所述處理器被配置為在事務執(zhí)行模式中執(zhí)行指令流的指令,所述指令限定事務; 互鎖所述指令的存儲操作的完成,以防止指令導向的存儲,直到所述事務的完成; 在所述事務執(zhí)行模式中的同時在所述指令的執(zhí)行期間識別樣本點;以及在所述事務的成功完成時運行時間檢測導向的存儲在所述樣本點處獲得的運行時間檢測息。
17.根據(jù)權利要求16所述的系統(tǒng),其中,運行時間檢測導向的存儲在所述樣本點處獲得的所述運行時間檢測信息進一步包括: 在所述事務執(zhí)行模式中的同時在收集緩沖器中收集運行時間檢測事件; 在所述事務執(zhí)行模式中的同時,推遲作為報告群組的所述收集的運行時間檢測事件在運行時間檢測程序緩沖器中的存儲;并且 基于所述事務的完成來在所述運行時間檢測程序緩沖器中副作用存儲所述報告群組。
18.根據(jù)權利要求16所述的系統(tǒng),進一步包括: 在所述事務執(zhí)行模式中的同時,在所述指令的執(zhí)行期間識別隨后的樣本點; 在所述事務執(zhí)行暫存緩沖器中將在所述隨后的樣本點處獲得的隨后的運行時間檢測信息運行時間檢測導向的存儲為隨后的報告群組; 在所述事務執(zhí)行模式中的同時,推遲在所述運行時間檢測程序緩沖器中的所述隨后報告群組的存儲;并且 基于所述事務的所述完成,從所述事務執(zhí)行暫存緩沖器向所述運行時間檢測程序緩沖器副作用存儲所述報告群組和所述隨后的報告群組。
19.根據(jù)權利要求16所述的系統(tǒng),進一步包括: 在從非事務執(zhí)行模式向所述事務執(zhí)行模式轉換時,在運行時間檢測程序緩沖器中存儲指向當前位置的程序緩沖器當前地址的拷貝; 執(zhí)行作為向所述程序緩沖器當前地址寫入的報告群組的非事務存儲的所述運行時間檢測導向的存儲; 基于存儲所述報告群組而更新所述程序緩沖器當前地址; 檢測與所述事務相關聯(lián)的事務異常終止事件; 在檢測到所述事務異常終止事件時,將所述程序緩沖器當前地址恢復到所述程序緩沖器當前地址的所述拷貝;并且 在所述運行時間檢測程序緩沖器中的下一個報告群組中存儲與所述事務異常終止事件相關聯(lián)的事務異常終止記錄。
20.根據(jù)權利要求16所述的系統(tǒng),進一步包括: 檢測作為故障的事務異常終止事件,以成功地完成所述事務;并且 在收集緩沖器中收集與所述事務異常終止事件相關聯(lián)的事務異常終止記錄;并且 存儲包含所述事務異常終止記錄的報告群組。
【文檔編號】G06F11/34GK104169889SQ201380014663
【公開日】2014年11月26日 申請日期:2013年3月7日 優(yōu)先權日:2012年3月16日
【發(fā)明者】C.W.蓋尼, M.格施溫德, J.D.布拉德伯里 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
离岛区| 稷山县| 云龙县| 池州市| 抚宁县| 大田县| 若羌县| 客服| 丰都县| 辽阳县| 浦城县| 大方县| 二连浩特市| 定南县| 灵璧县| 木兰县| 邵东县| 孝昌县| 伊春市| 库车县| 屯留县| 建水县| 神农架林区| 龙里县| 英超| 临澧县| 宁武县| 安远县| 西充县| 工布江达县| 福建省| 渝北区| 桃园市| 新竹县| 西和县| 盐边县| 乌鲁木齐市| 贵德县| 兴安县| 淮安市| 富顺县|