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

為記錄事件提供前置與后置處理程序的方法與裝置的制作方法

文檔序號:6512810閱讀:242來源:國知局
專利名稱:為記錄事件提供前置與后置處理程序的方法與裝置的制作方法
技術(shù)領(lǐng)域
一般地,本發(fā)明涉及一種改進(jìn)的數(shù)據(jù)處理系統(tǒng),具體地講,涉及一種在數(shù)據(jù)處理系統(tǒng)中當(dāng)發(fā)生中斷時監(jiān)視處理器性能的方法與系統(tǒng)。更具體地講,本發(fā)明涉及一種方法、裝置與計算機(jī)指令,用來為記錄事件提供前置處理程序(handler)與后置處理程序。
背景技術(shù)
典型的數(shù)據(jù)處理系統(tǒng)利用處理器來執(zhí)行一組指令以執(zhí)行特定任務(wù),例如從主存儲器中讀取特定字符。然而,隨著需要處理器執(zhí)行的任務(wù)數(shù)目的增加,對于希望優(yōu)化系統(tǒng)的工程師來說,處理器對存儲器的訪問模式的效率以及此類訪問的特性成為重要因素。
當(dāng)前,現(xiàn)有技術(shù)包含可以計數(shù)數(shù)據(jù)處理系統(tǒng)內(nèi)軟件可選事件(例如高速緩存丟失、所執(zhí)行的指令、I/O數(shù)據(jù)傳送請求)的發(fā)生次數(shù),以及執(zhí)行給定進(jìn)程所需要的時間的機(jī)制。一種此類機(jī)制為性能監(jiān)視器。性能監(jiān)視器進(jìn)行對選定特性的監(jiān)視,從而通過確定特定時間的機(jī)器狀態(tài)而有助于系統(tǒng)分析。該分析提供以下信息當(dāng)執(zhí)行指令時如何使用處理器,以及當(dāng)存儲數(shù)據(jù)時處理器與主存儲器的交互作用。該分析還用來確定應(yīng)用代碼是否改變,例如分支指令與存儲器訪問的重定位,從而(如果需要的話)進(jìn)一步優(yōu)化系統(tǒng)性能。另外,性能監(jiān)視器可以提供處理系統(tǒng)中事件之間所經(jīng)過的時間量。性能監(jiān)視器提供工程師可以用來分析系統(tǒng)性能的事件計數(shù)。另外,性能監(jiān)視器可以收集有關(guān)處理器如何訪問數(shù)據(jù)處理系統(tǒng)的一級與二級高速緩存、以及主存儲器,以發(fā)現(xiàn)特定于硬件或軟件環(huán)境的性能瓶頸。
除之外上述性能監(jiān)視器之外,中斷處理單元還可以用來記錄事件,例如指令執(zhí)行、分支事件、或者當(dāng)中斷發(fā)生時的系統(tǒng)事件等等。當(dāng)諸如鼠標(biāo)或者鍵盤等設(shè)備發(fā)起中斷信號時,發(fā)出中斷信號,以通知處理器發(fā)生了事件。當(dāng)處理器接受中斷請求時,處理器完成其當(dāng)前指令,并且將控制傳送給中斷處理程序。中斷處理程序執(zhí)行與該中斷相關(guān)聯(lián)的中斷服務(wù)例程。中斷也可能由特定機(jī)器語言操作代碼引起,例如摩托羅拉公司的產(chǎn)品——68000的TRAP。在這種情況下,諸如除以零等未預(yù)料軟件條件使處理器存儲當(dāng)前狀態(tài),存儲有關(guān)特定中斷的標(biāo)識信息,并且將控制傳送給處理該未預(yù)料軟件條件的中斷處理程序。
然而,以上的性能監(jiān)視器必須在運行時修改應(yīng)用程序,以記錄精確的性能軌跡數(shù)據(jù),例如在中斷處理期間執(zhí)行的指令數(shù)目。因此,以下是有益的具有一種改進(jìn)的方法、裝置、以及計算機(jī)指令,用來針對在進(jìn)入之前以及緊接退出中斷處理程序之后發(fā)生的事件提供前置與后置處理程序,以記錄精確的性能數(shù)據(jù),而不用修改底層的應(yīng)用程序。

發(fā)明內(nèi)容
本發(fā)明提供了一種方法、裝置與計算機(jī)指令,用來提供前置與后置處理程序,以在中斷發(fā)生時記錄事件。前置與后置處理程序允許和與待記錄的性能監(jiān)視事件相關(guān)聯(lián)的時間戳一道記錄軌跡記錄,以向用戶提供更加細(xì)致的性能數(shù)據(jù)。
在優(yōu)選實施方式中,本發(fā)明的機(jī)制提供了前置與后置處理程序,以記錄當(dāng)執(zhí)行分支指令時性能監(jiān)視事件的發(fā)生次數(shù)。利用“分支時陷阱”(即當(dāng)執(zhí)行分支指令時被處理的陷阱或中斷)來使用前置序與后置處理程序,以產(chǎn)生指令軌跡,該軌跡包含從那里得到分支的“來源”地址,并且可能包含該分支分支去向的“目的”地址。應(yīng)該理解可以各種方式壓縮信息以最小化待記錄的信息量。前置與后置處理程序記錄在進(jìn)行分支之前以及緊跟其后發(fā)生的性能監(jiān)視事件。
在替換實施方式中,當(dāng)中斷發(fā)生時,在處理器從中斷處理程序獲取指令之前,本發(fā)明的機(jī)制允許前置處理程序在進(jìn)入中斷處理程序之前記錄軌跡記錄。所記錄的事件提供了當(dāng)進(jìn)入中斷處理程序時的系統(tǒng)狀態(tài)。
當(dāng)中斷處理程序完成中斷服務(wù)例程時,本發(fā)明的機(jī)制允許后置處理程序在返回正常執(zhí)行之前記錄事件以及低級信息,例如為中斷所執(zhí)行的指令數(shù)目。該低級信息可以提供當(dāng)退出中斷時的系統(tǒng)狀態(tài)。
在以下對優(yōu)選實施方式的詳細(xì)描述中,將討論這些以及其他特征與優(yōu)點,并且本領(lǐng)域技術(shù)人員應(yīng)該理解這些以及其他特征與優(yōu)點。


在所附的權(quán)利要求中列出了本發(fā)明特有的新穎特征。然而,參照附圖及以下對說明性實施方式的詳細(xì)描述將更好地理解本發(fā)明自身、優(yōu)選使用模式及其進(jìn)一步的目的與優(yōu)點,其中圖1為可以實現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的示范性方框圖;圖2為根據(jù)本發(fā)明優(yōu)選實施方式的用于處理信息的處理器系統(tǒng)的示范性方框圖;圖3為顯示根據(jù)本發(fā)明優(yōu)選實施方式的、使用前置與后置處理程序記錄中斷的事件的組件的示范性圖示;圖4為顯示根據(jù)本發(fā)明優(yōu)選實施方式的、中斷描述表(IDT)示例的示范性圖示;圖5為概括顯示根據(jù)本發(fā)明優(yōu)選實施方式的、利用前置與后置處理程序記錄中斷的事件的示范性過程的流程圖;以及圖6為概括顯示根據(jù)本發(fā)明優(yōu)選實施方式的、當(dāng)執(zhí)行分支指令時、通過使用前置與后置處理程序利用分支時陷阱來記錄軌跡記錄的示范性過程的流程圖。
具體實施例方式
本發(fā)明的機(jī)制提供了前置與后置處理程序來記錄軌跡記錄,包含其中發(fā)生中斷或者其中執(zhí)行分支指令的“來源”地址。在進(jìn)入中斷處理程序之前或者在退出中斷處理程序之后、或者進(jìn)行分支之前或者退出分支之后,前置與后置處理程序記錄事件,例如性能監(jiān)視事件。通過記錄這些軌跡記錄,工程師們能夠及時發(fā)現(xiàn)特定時刻性能監(jiān)視事件的值。這些記錄有助于工程師們將系統(tǒng)中當(dāng)處理中斷時或者進(jìn)行分支時發(fā)生的事件與在系統(tǒng)正常執(zhí)行期間發(fā)生的事件分離開來。
本發(fā)明可以在計算機(jī)系統(tǒng)中實現(xiàn)。該計算機(jī)系統(tǒng)可以是獨立的計算設(shè)備,通過網(wǎng)絡(luò)互連的客戶端-服務(wù)器環(huán)境下的客戶端或者服務(wù)器計算設(shè)備等等。圖1提供了可以實現(xiàn)本發(fā)明的各方面的計算設(shè)備的示范性圖示。圖1只是示范性的,而所示例子沒有暗示或者指出對其上可以實現(xiàn)本發(fā)明的計算設(shè)備的結(jié)構(gòu)或者組織的限制。
現(xiàn)在參照圖1,顯示了其中可實現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的示范性方框圖。客戶端100為計算機(jī)的實例,其中可以放置實現(xiàn)本發(fā)明的處理的代碼或指令??蛻舳?00采用外圍組件互連(PCI)局部總線體系結(jié)構(gòu)。雖然所顯示的例子采用PCI總線,但是可以使用其他總線體系結(jié)構(gòu),例如加速圖形端口(AGP)與工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)。處理器102與主存儲器104通過PCI橋108連接到PCI局部總線106。PCI橋108還可以包含處理器102的高速緩存和集成的存儲器控制器。通過直接組件互連或者通過插入板,可以進(jìn)行到PCI局部總線106的其他連接。
在所示例子中,局域網(wǎng)(LAN)適配器110、小型計算機(jī)系統(tǒng)接口SCSI主機(jī)總線適配器112、以及擴(kuò)展總線接口114通過直接組件互連而連接到PCI局部總線106。與此不同,音頻適配器116、圖形適配器118、以及音頻/視頻適配器119通過插入擴(kuò)展槽中的插入板連接到PCI局部總線106。擴(kuò)展總線接口114提供用于鍵盤和鼠標(biāo)適配器120、調(diào)制解調(diào)器122、以及附加存儲器124的連接。SCSI主機(jī)總線適配器112提供用于硬盤驅(qū)動器126、磁帶驅(qū)動器128、以及CD-ROM驅(qū)動器130的連接。典型的PCI局部總線實現(xiàn)將支持三或四個PCI擴(kuò)展槽或者插入連接器。
操作系統(tǒng)運行在處理器102上,并且用來協(xié)調(diào)并提供對于圖1的數(shù)據(jù)處理系統(tǒng)100內(nèi)各種組件的控制。操作系統(tǒng)可以是在市面上能夠購買的操作系統(tǒng),例如Windows XP,其可從微軟公司得到。諸如Java等面向?qū)ο蟮木幊滔到y(tǒng)可以與操作系統(tǒng)聯(lián)合運行,并且提供從在客戶端100上執(zhí)行的應(yīng)用程序或者Java程序到操作系統(tǒng)的調(diào)用?!癑ava”為Sun Microsystems公司的商標(biāo)。操作系統(tǒng)、面向?qū)ο蟮木幊滔到y(tǒng)以及應(yīng)用程序或者程序的指令位于存儲設(shè)備上,例如硬盤驅(qū)動器126上,并且可以加載到主存儲器104內(nèi),以由處理器102執(zhí)行。
本領(lǐng)域技術(shù)人員應(yīng)該理解圖1中的硬件可根據(jù)實現(xiàn)而變化。除圖1所示硬件之外,或者替代這些硬件地,可以使用其他內(nèi)部硬件或外圍設(shè)備,例如閃存只讀存儲器(ROM)、等效的非易失存儲器、或者光盤驅(qū)動器等等。另外,本發(fā)明的處理可以應(yīng)用到多處理器數(shù)據(jù)處理系統(tǒng)。
例如,客戶端100如果可選地配置為網(wǎng)絡(luò)計算機(jī),則可不包含SCSI主機(jī)總線適配器112、硬盤驅(qū)動器126、磁帶驅(qū)動器128、以及CD-ROM 130。在這種情況下,該計算機(jī),正確地應(yīng)該稱為客戶端計算機(jī),包含某種類型的網(wǎng)絡(luò)通信接口,例如LAN適配器110、調(diào)制解調(diào)器122等等。作為另一例子,客戶端100可以是獨立的系統(tǒng),其被配置為可引導(dǎo)的,而不依賴于某種類型的網(wǎng)絡(luò)通信接口,而不管客戶端100是否包含某種類型的網(wǎng)絡(luò)通信接口。作為另一例子,客戶端100可以是個人數(shù)字助理(PDA),其配備有ROM和/或閃存ROM,以提供非易失存儲器,用來存儲操作系統(tǒng)文件和/或用戶生成的數(shù)據(jù)。圖1中所示的例子以及上述例子并不是用來暗指對體系結(jié)構(gòu)的限制。
本發(fā)明的處理由處理器102使用計算機(jī)實現(xiàn)的指令來執(zhí)行,這些指令可位于存儲器中,例如主存儲器104、存儲器124,或者位于一或多個外圍設(shè)備126-130中。
轉(zhuǎn)到圖2,顯示了根據(jù)本發(fā)明優(yōu)選實施方式的用來處理信息的處理器系統(tǒng)的示范性方框圖。處理器210可以實現(xiàn)為圖1中的處理器102。
在優(yōu)選實施方式中,處理器210為單一的集成電路超標(biāo)量微處理器。相應(yīng)地,如下詳細(xì)所述,處理器210包含各種單元、寄存器、緩沖器、存儲器、以及其他部分,所有這些都由集成電路形成。另外,在優(yōu)選實施方式中,處理器210根據(jù)精減指令集計算機(jī)(“RISC”)技術(shù)運行。如圖2所示,系統(tǒng)總線211連接到處理器210的總線接口單元(“BIU”)212。BIU 212控制處理器210與系統(tǒng)總線211之間信息的傳送。
BIU 212連接到處理器210的指令高速緩存214與數(shù)據(jù)高速緩存216。指令高速緩存214輸出指令到排序單元218。響應(yīng)于來自指令高速緩存214的這些指令,排序單元218選擇性地輸出指令到處理器210的其他執(zhí)行電路。
除排序單元218之外,在優(yōu)選實施方式中,處理器210的執(zhí)行電路還包含多個執(zhí)行單元,即分支單元220、定點單元A(“FXUA”)222、定點單元B(“FXUB”)224、復(fù)雜定點單元(“CFXU”)226、加載/存儲單元(“LSU”)228、以及浮點單元(“FPU”)230。FXUA 222、FXUB 224、CFXU 226、以及LSU 228從通用體系寄存器(“GPR”)232以及定點重命名緩沖器234輸入其源操作數(shù)信息。另外,F(xiàn)XUA 222與FXUB 224從進(jìn)位位(“CA”)寄存器239輸入“進(jìn)位位”。FXUA 222、FXUB 224、CFXU 226、以及LSU 228輸出其運行結(jié)果(目的操作數(shù)信息),以在定點重命名緩沖器234中的選定項處存儲。另外,CFXU 226從/向?qū)S眉拇嫫魈幚韱卧?“SPR單元”)237輸入與輸出源操作數(shù)信息與目的操作數(shù)信息。
FPU 230從浮點體系寄存器(“FPR”)236與浮點重命名緩沖器238輸入其源操作數(shù)信息。FPU 230輸出其運行結(jié)果(目的操作數(shù)信息),以在浮點重命名緩沖器238中的選定項處存儲。
響應(yīng)于加載指令,LSU 228從數(shù)據(jù)高速緩存216輸入信息,并且將該信息拷貝到重命名緩沖器234與238中的選定項。如果該信息未存儲在數(shù)據(jù)高速緩存216中,則數(shù)據(jù)高速緩存216從連接到系統(tǒng)總線211的系統(tǒng)存儲器260輸入該信息(通過BIU 212與系統(tǒng)總線211)。另外,數(shù)據(jù)高速緩存216能夠從數(shù)據(jù)高速緩存216輸出信息到連接到系統(tǒng)總線211的系統(tǒng)存儲器260(通過BIU 212與系統(tǒng)總線211)。響應(yīng)于存儲指令,LSU 228從GPR 232與FPR236的選定項輸入信息,并且將該信息拷貝到數(shù)據(jù)高速緩存216。
排序單元218從/向GPR 232與FPR 236輸入與輸出信息。從排序單元218,分支單元220輸入指示處理器210當(dāng)前狀態(tài)的指令與信號。響應(yīng)于這些指令與信號,分支單元220(向排序單元218)輸出指示存儲由處理器210執(zhí)行的指令序列的適當(dāng)存儲器地址的信號。響應(yīng)于來自分支單元220的這些信號,排序單元218從指令高速緩存214輸入所指示的指令序列。如果一或多個指令序列未存儲在指令高速緩存214中,則指令高速緩存214從連接到系統(tǒng)總線211的系統(tǒng)存儲器260輸入這些指令(通過BIU 212與系統(tǒng)總線211)。
響應(yīng)于從指令高速緩存214輸入的指令,排序單元218選擇性地分發(fā)指令到選定的執(zhí)行單元220、222、224、226、228、以及230。每個執(zhí)行單元執(zhí)行特定指令類別的一或多條指令。例如,F(xiàn)XUA 222與FXUB 224對源操作數(shù)執(zhí)行第一類別的定點數(shù)學(xué)運算,例如加法、減法、與、或、以及異或。CFXU226對源操作數(shù)執(zhí)行第二類別的定點運算,例如定點乘法與除法。FPU 230對源操作數(shù)執(zhí)行浮點運算,例如浮點乘法與除法。
當(dāng)信息存儲在重命名緩沖器234的選定項時,該信息與為其分配選定的重命名緩沖器的指令所指定的存儲位置相關(guān)聯(lián)(例如GPR 232中的一個或者進(jìn)位位(CA)寄存器242)。響應(yīng)于來自排序單元218的信號,在重命名緩沖器234的選定項處存儲的信息被拷貝到GPR 232中其相關(guān)聯(lián)的一個(或者CA寄存器242)。響應(yīng)于“完成”生成該信息的指令,排序單元218指揮對在重命名緩沖器234選定項處存儲的信息的所述拷貝。該拷貝稱為“寫回”。
當(dāng)信息存儲在重命名緩沖器238的選定項時,該信息與FPR 236中的一個相關(guān)聯(lián)。響應(yīng)于來自排序單元218的信號,在重命名緩沖器238的選定項處存儲的信息被拷貝到FPR 236中其相關(guān)聯(lián)的一個。響應(yīng)于“完成”生成該信息的指令,排序單元218指揮對在重命名緩沖器238選定項處存儲的信息的所述拷貝。
通過在各個執(zhí)行單元220、222、224、226、228、以及230處同時處理多條指令,處理器210達(dá)到高性能。相應(yīng)地,每條指令被當(dāng)作一系列階段處理,每個階段都可與其他指令的階段并行執(zhí)行。這種技術(shù)稱為“流水線”。根據(jù)所示實施方式的一個重要方面,指令一般被處理為六個階段,即獲取、解碼、分發(fā)、執(zhí)行、完成、以及寫回。
在獲取階段,排序單元218(從指令高速緩存214)選擇性地輸入來自一或多個存儲器地址的一或多條指令,所述存儲器地址存儲了上面結(jié)合分支單元220與排序單元218進(jìn)一步討論的指令序列。
在解碼階段,排序單元218解碼多達(dá)四條所獲取的指令。
在分發(fā)階段,在為所分發(fā)的指令的結(jié)果(目的操作數(shù)信息)保留了重命名緩沖器項之后,排序單元218(響應(yīng)于解碼階段的解碼)選擇性地分發(fā)多達(dá)四條已解碼的指令到選定的執(zhí)行單元220、222、224、226、228、以及230中的幾個。在分發(fā)階段,操作數(shù)信息被提供給對于所分發(fā)的指令的選定執(zhí)行單元。處理器210按其編程序列分發(fā)指令。
在執(zhí)行階段,執(zhí)行單元執(zhí)行其所分發(fā)的指令,并且輸出其運行結(jié)果(目的操作數(shù)信息),以在重命名緩沖器234與重命名緩沖器238中選定項處存儲,如上所述。通過這種方式,處理器210能夠相對于其編程序列亂序地執(zhí)行指令。
在完成階段,排序單元218指示指令為“完成”。處理器210按其編程序列“完成”指令。
在寫回階段,排序單元218指揮從重命名緩沖器234與238分別拷貝信息到GRP 232與FPR 236。排序單元218指揮對在選定的重命名緩沖器處存儲的信息的所述拷貝。類似地,在特定指令的寫回階段,響應(yīng)于特定指令,處理器210更新其體系狀態(tài)。處理器210按其編程序列處理指令的各個“寫回”階段。優(yōu)選地,在指定情況下,處理器210合并指令的完成階段與寫回階段。
在所示實施方式中,每條指令都要求一個機(jī)器周期來完成指令處理的每個階段。然而,某些指令(例如由CFXU 226執(zhí)行的復(fù)雜定點指令)可能要求多于一個周期。因此,響應(yīng)于完成先前指令所需的時間的變化,在特定指令的執(zhí)行與完成階段之間可能發(fā)生可變延遲。
在排序單元218內(nèi)配備有完成緩沖器248,用來跟蹤在執(zhí)行單元內(nèi)執(zhí)行的多條指令的完成情況。當(dāng)指示已經(jīng)成功地完成一條指令或一組指令時,按照應(yīng)用程序所指定的先后順序,完成緩沖器248可用來啟動傳送這些已完成指令的結(jié)果到相關(guān)聯(lián)的通用寄存器。
另外,處理器210還包含性能監(jiān)視單元240,該單元連接到指令高速緩存214以及處理器210中的其他單元。利用性能監(jiān)視單元240,可以監(jiān)視處理器210的運行,在所示實施方式中,性能監(jiān)視單元240為軟件可訪問機(jī)制,其能夠提供描述指令執(zhí)行資源的利用情況與存儲控制的詳細(xì)信息。雖然在圖2中未顯示,但是性能監(jiān)視單元240耦合至處理器210的每個功能單元,以允許監(jiān)視處理器210運行的所有方面,包含(例如)重建事件之間的關(guān)系、標(biāo)識錯誤觸發(fā)、標(biāo)識性能瓶頸、監(jiān)視流水線停滯、監(jiān)視空閑處理器周期、確定分發(fā)效率、確定分支效率、確定未對準(zhǔn)數(shù)據(jù)訪問的性能損失、標(biāo)識串行化指令執(zhí)行的頻率、標(biāo)識被禁止的中斷、以及確定性能效率。感興趣的事件還包括(例如)指令解碼的時間、指令的執(zhí)行、分支事件、高速緩存丟失、以及高速緩存命中。
性能監(jiān)視單元240包含依賴于實現(xiàn)的數(shù)目(例如2-8)的計數(shù)器214-242,標(biāo)記為PMC1與PMC2,其用來計數(shù)選定事件的發(fā)生次數(shù)。性能監(jiān)視單元240還包含至少一個監(jiān)視器模式控制寄存器(MMCR)。在該例子中,存在兩個控制寄存器,MMCR 243與244,其指定計數(shù)器241-242的功能。優(yōu)選地,計數(shù)器241-242與MMCR 243-244實現(xiàn)為可以借助由CFXU 226執(zhí)行的MFSPR(從SPR移動)與MTSPR(向SPR移動)進(jìn)行讀或?qū)懺L問的SPR。然而,在一替換實施方式中,計數(shù)器241-242與MMCR 243-244簡單地可以實現(xiàn)為I/O空間中的地址。在另一替換實施方式中,控制寄存器與計數(shù)器可以借助索引寄存器間接地訪問。該實施方式實現(xiàn)于英特爾公司的處理器中的IA-64體系結(jié)構(gòu)中。
另外,處理器210還包括中斷單元250,其連接到指令高速緩存214。另外,盡管在圖2中未顯示,但是中斷單元250連接到處理器210內(nèi)其他功能單元。中斷單元250可以接收來自其他功能單元的信號,并且啟動動作,例如開始錯誤處理或者陷阱過程。在這些例子中,中斷單元250用來生成可能在程序執(zhí)行過程中發(fā)生的例外和中斷。
本發(fā)明提供了一種方法、裝置、以及計算機(jī)指令,用來提供記錄事件的前置與后置處理程序。前置與后置處理程序可以進(jìn)行不同的操作以獲得不同的計算機(jī)程序執(zhí)行度量信息,以供性能分析工具在提供對執(zhí)行期間的計算機(jī)程序性能的分析時使用。前置處理程序被打算用來在執(zhí)行中斷處理例程之前獲得有關(guān)計算機(jī)程序執(zhí)行度量的信息。后置處理程序被打算用來獲得有關(guān)在處理中斷期間(即在執(zhí)行中斷處理例程期間)發(fā)生了什么的信息。
陷阱,即當(dāng)發(fā)生了特定條件時(例如當(dāng)生成了特定中斷或例外時等等)執(zhí)行的一段代碼,此處也被稱為陷阱或者中斷服務(wù)例程。
根據(jù)本發(fā)明,作為處理該陷阱的一部分,在調(diào)用陷阱或者中斷處理例程之前,本發(fā)明的處理器調(diào)用前置處理程序。即,當(dāng)陷阱指令生成中斷或者試圖將控制傳送給陷阱處理例程時,處理器重定向該調(diào)用至前置處理程序,該前置處理程序可能累積或者獲得來自與計算機(jī)程序相關(guān)聯(lián)的性能監(jiān)視機(jī)制的性能監(jiān)視度量信息。然后存儲該信息以標(biāo)識在執(zhí)行陷阱或者中斷處理程序之前的計算機(jī)程序的執(zhí)行狀態(tài)。
類似地,當(dāng)發(fā)生陷阱并且已經(jīng)執(zhí)行了陷阱或中斷處理例程時,可以在執(zhí)行陷阱或者中斷處理例程之后執(zhí)行后置處理程序,以獲得有關(guān)在執(zhí)行陷阱或者中斷處理例程期間發(fā)生了什么的信息。例如,后置處理程序可以增加在中斷處理程序自身中發(fā)生的指令或者高速緩存丟失的數(shù)目,以累積可以輸出到性能分析工具的總值,以在對計算機(jī)程序的性能分析中使用。為了進(jìn)行不同的操作,前置與后置處理程序通過利用發(fā)生的事件的值以及與這些事件相關(guān)聯(lián)的時間戳,處理性能監(jiān)視度量信息(此后稱為“性能信息”)。
另外,前置與后置處理程序可以記錄軌跡記錄。軌跡記錄可以包含其中事件發(fā)生的指令的“來源”地址以及對選定事件的計數(shù),以及標(biāo)識何時寫入軌跡記錄的時間戳。所記錄的事件可以包括在進(jìn)入中斷服務(wù)例程之前以及在退出中斷服務(wù)例程之后發(fā)生的性能監(jiān)視事件。前置與后置處理程序是記錄軌跡記錄或者有關(guān)機(jī)器狀態(tài)的進(jìn)程信息的指令例程。軌跡記錄還可以包括從性能監(jiān)視計數(shù)器中讀取的信息,例如圖2中的計數(shù)器241-242,以及與每個事件相關(guān)聯(lián)的時間戳。性能監(jiān)視事件的例子有所執(zhí)行的指令的數(shù)目、高速緩存丟失的數(shù)目、表后援(lookaside)緩沖器(TLB)丟失的數(shù)目等等。
前置與后置處理程序通過在執(zhí)行處理程序之前記錄性能監(jiān)視計數(shù)器的值并且緊接執(zhí)行處理程序之后記錄記錄性能監(jiān)視計數(shù)器的值,累積在執(zhí)行中斷服務(wù)例程、或者陷阱/中斷處理例程之前與在其期間發(fā)生的事件的軌跡記錄。當(dāng)執(zhí)行前置與后置處理程序時性能監(jiān)視器可以被編程來停止計數(shù)事件。
本發(fā)明的前置與后置處理程序可以被使能或者禁止。作為結(jié)果,通過確定使能或者禁止哪些前置與后置處理程序,可以獲得定制的性能監(jiān)視信息。通過這種方式,用戶可以獲得對于該用戶來說是重要問題的特別有關(guān)的性能信息。這允許有關(guān)什么性能監(jiān)視信息由前置與后置處理程序編輯和分析的很大的靈活性。
另外,也可以通過“分支時陷阱”指令使用前置與后置處理程序例程,以產(chǎn)生軌跡記錄。如上提及的,陷阱為程序中專用的一段代碼,其基于運行程序時的特定條件而發(fā)生。
“分支時陷阱”,或者稱為“分支陷阱”,是如果進(jìn)行分支則發(fā)生的陷阱。如果進(jìn)行分支,則分支時陷阱處理程序接收控制。
在本發(fā)明的優(yōu)選實施方式中,選擇正在被監(jiān)視的計算機(jī)程序中的一或多個分支來進(jìn)行監(jiān)視。當(dāng)選擇進(jìn)行監(jiān)視的這些分支指令中的一個被執(zhí)行時,即當(dāng)進(jìn)行分支時,處理器發(fā)送信號給中斷單元。與從正常的陷阱處理例程中獲取指令不同,如果使能了前置處理程序,則中斷單元通知處理器從前置處理程序中獲取指令,以在執(zhí)行陷阱處理例程與進(jìn)行分支之前記錄軌跡記錄。
軌跡記錄可以包含“來源”存儲器地址,該地址為當(dāng)進(jìn)行分支時的分支指令的存儲器地址。另外,軌跡記錄還可以包含“目的”存儲器地址,該地址為分支去向的存儲器地址??梢詮男阅鼙O(jiān)視設(shè)備與數(shù)據(jù)結(jié)構(gòu)(例如計數(shù)器241-242)獲得的性能監(jiān)視信息可以與這些地址相關(guān)聯(lián)??梢垣@得并且與“目的”和/或“來源”地址相關(guān)聯(lián)的性能監(jiān)視信息的例子為性能監(jiān)視事件的選定計數(shù),例如已經(jīng)發(fā)生的高速緩存丟失的數(shù)目。
在執(zhí)行前置處理程序例程之后,執(zhí)行正常的陷阱服務(wù)例程,或者陷阱處理器程序例程。后置處理程序例程也可以與位于程序內(nèi)的陷阱相關(guān)聯(lián)。在正常的陷阱服務(wù)例程執(zhí)行完成之后并且試圖將對計算機(jī)程序的控制返回給計算機(jī)程序的正常代碼時,調(diào)用該后置處理程序例程。在完成正常的陷阱服務(wù)例程時,并且在返回正常執(zhí)行之前,處理器發(fā)送信號給中斷單元,指示完成了正常的陷阱服務(wù)例程。作為結(jié)果,如果使能了后置處理程序,則中斷單元通知處理器從后置處理程序中獲取指令,以在進(jìn)行分支之后記錄軌跡記錄。由此,前置與后置處理程序允許用戶記錄在執(zhí)行陷阱/中斷處理例程之前與緊跟其之后的低級性能數(shù)據(jù)。該功能的一種優(yōu)選的應(yīng)用為以上討論的“分支時陷阱”情況。
正常地,當(dāng)中斷發(fā)生時,例如當(dāng)在程序執(zhí)行期間發(fā)生頁面錯誤時,處理器停止當(dāng)前執(zhí)行,并且開始從中斷處理程序的進(jìn)入點地址獲取指令。中斷處理程序包含由處理器獲取以處理中斷的中斷服務(wù)例程。在中斷描述符表(IDT)中存儲進(jìn)入點的地址,中斷描述符表為系統(tǒng)表,其將每個中斷與包含相應(yīng)中斷服務(wù)例程的相應(yīng)中斷處理程序相關(guān)聯(lián)。
然而,在本發(fā)明的一種示范實施方式中,響應(yīng)于使中斷被生成的中斷事件的出現(xiàn),本發(fā)明的中斷單元從與元數(shù)據(jù)相關(guān)聯(lián)的處理器接收中斷信號。該元數(shù)據(jù)可以包含處理程序標(biāo)志,例如標(biāo)識以下中斷處理程序之一的非零值正常中斷處理程序、前置處理程序、或者后置處理程序。
如果在元數(shù)據(jù)中設(shè)置了前置處理程序標(biāo)志,則不同于上述從正常中斷處理程序獲取指令,中斷單元通知處理器在特定時刻從前置處理程序例程中獲取指令,該前置處理程序例程在執(zhí)行“正?!敝袛嗵幚沓绦蛑坝涗涇壽E數(shù)據(jù)。在本說明書中使用的術(shù)語——“正?!敝袛嗵幚沓绦颍溉绻丛O(shè)置前置和/或后置標(biāo)志,則根據(jù)所生成的中斷執(zhí)行的中斷處理例程。
由前置處理程序例程生成的軌跡數(shù)據(jù)可以包含其中發(fā)生中斷的指令的“目的”和/或“來源”地址以及選定的性能監(jiān)視信息。在軌跡記錄中也可以包含時間戳。
一旦執(zhí)行了前置處理程序例程,則前置處理程序通知處理器從正常中斷處理程序中獲取指令。當(dāng)正常中斷處理程序執(zhí)行完成時,如果設(shè)置了后置處理程序標(biāo)志,則本發(fā)明的中斷單元在正常中斷處理程序之后的特定時刻通知處理器從后置處理程序中獲取指令,以記錄中斷軌跡數(shù)據(jù)。
通過這種方式,前置與后置處理程序允許記錄特定時刻處特定陷阱或者中斷所特有的軌跡數(shù)據(jù),而不用修改任何操作系統(tǒng)例程。通過利用前置與后置處理程序,可以在執(zhí)行正常陷阱或者中斷處理例程之前(例如響應(yīng)于進(jìn)行分支)或者緊跟執(zhí)行正常陷阱或者中斷處理例程之后記錄軌跡記錄。根據(jù)由前置與后置處理程序生成的信息,可以獲得以下情況在計算機(jī)程序執(zhí)行時,在執(zhí)行分支指令時到進(jìn)行分支時之間、以及在進(jìn)行分支之后到返回正常執(zhí)行之間發(fā)生了什么。
另外,在正常陷阱或者中斷處理例程的入口與出口,可以記錄性能軌跡數(shù)據(jù),以標(biāo)識在特定中斷發(fā)生時到開始陷阱或者中斷處理例程時之間發(fā)生的變化。另外,也可以標(biāo)識在結(jié)束陷阱或者中斷處理例程時到中斷返回之間發(fā)生的變化。該信息為工程師們提供了一種工具,用來將在系統(tǒng)正常執(zhí)行期間發(fā)生的事件與當(dāng)系統(tǒng)被中斷或者進(jìn)行分支時發(fā)生的事件相分離。
在另一優(yōu)選實施方式中,可以實現(xiàn)前置與后置處理程序例程來執(zhí)行其他功能,例如處理由性能監(jiān)視單元用來計數(shù)事件的計數(shù)的上溢。性能監(jiān)視單元可以實現(xiàn)為圖2中的性能監(jiān)視單元240。該計數(shù)可以存儲在IDT中或者在IDT之外的專用存儲位置中。因為在計數(shù)事件期間可能發(fā)生上溢,所以前置與后置處理程序例程可以定期查找計數(shù)值以檢查上溢。在一種實施方式中,如果計數(shù)值將要回繞(wrap),則前置與后置處理程序例程可以向處理器發(fā)信號表示將要發(fā)生上溢。在另一實施方式中,前置與后置處理程序可以包含處理上溢的例程,例如通過讀取并重置計數(shù)值。
接著轉(zhuǎn)到圖3,根據(jù)本發(fā)明優(yōu)選實施方式顯示了說明用來使用前置與后置處理程序記錄中斷的事件的組件的示范性示圖。在該示例實現(xiàn)中,中央處理單元(CPU)302可以實現(xiàn)為圖2中的處理器210。在優(yōu)選實施方式中,當(dāng)執(zhí)行分支指令時,由應(yīng)用程序執(zhí)行陷阱。該陷阱通知CPU 302生成并發(fā)送信號給中斷單元304,以指示發(fā)生了例外,即指執(zhí)行了分支指令。中斷單元304通知CPU 302從前置處理程序中獲取指令,以在進(jìn)行分支之前記錄軌跡數(shù)據(jù)。在進(jìn)行分支之前,前置處理程序例程記錄軌跡數(shù)據(jù),該數(shù)據(jù)可以包含其中執(zhí)行分支指令的“來源”地址,分支去向的“目的”地址,以及性能信息,例如發(fā)生的選定性能事件的計數(shù)值。
在執(zhí)行陷阱處理例程之后,向中斷單元304返回完成陷阱處理例程的指示。然后,中斷單元304通知CPU 302從后置處理程序中獲取指令,以在返回正常執(zhí)行之前記錄軌跡數(shù)據(jù)。
在替換實施方式中,當(dāng)發(fā)生中斷時,例如當(dāng)在程序執(zhí)行期間發(fā)生高速緩存丟失時,CPU 302發(fā)送帶有標(biāo)識中斷類型的相關(guān)元數(shù)據(jù)的信號給中斷單元304,該元數(shù)據(jù)用來標(biāo)識將要執(zhí)行以處理中斷的特定中斷處理例程。然后,中斷單元304可以標(biāo)識IDT中的地址,并且通知處理器根據(jù)在元數(shù)據(jù)中指示的中斷類型在IDT中的標(biāo)識地址處從中斷處理例程獲取指令。這可能涉及下述的從與由元數(shù)據(jù)標(biāo)識的處理程序關(guān)聯(lián)地存儲的前置和/或后置處理程序的地址中獲取指令。
接著轉(zhuǎn)到圖4,根據(jù)本發(fā)明的優(yōu)選實施方式顯示了說明中斷描述表(IDT)示例的示范性示圖。在該示例實現(xiàn)中,中斷描述符表(IDT)402包含存儲器地址404、中斷類型406、前置處理程序地址408、以及后置處理程序地址410。在IDT 402中表示的中斷類型406只是用于說明目的。
在個例子中,當(dāng)發(fā)生中斷時,例如虛擬散列頁面表(VHPH)數(shù)據(jù)錯誤中斷(其為與虛擬散列頁面表相關(guān)聯(lián)的中斷),處理器發(fā)送標(biāo)識發(fā)生該中斷的信號給中斷單元,例如圖3中的中斷單元304。中斷單元檢查與信號相關(guān)聯(lián)的元數(shù)據(jù)400,以確定是否使能了前置或者后置處理程序以處理所標(biāo)識的中斷。在該例子中,元數(shù)據(jù)為01,這意味著使能了前置處理程序。如果元數(shù)據(jù)為00,則使能了正常中斷處理程序;如果元數(shù)據(jù)為10,則使能了后置處理程序。如果元數(shù)據(jù)為11,則使能了前置處理程序與后置處理程序兩者。
對于元數(shù)據(jù)被設(shè)置為01、00、10還是11,可以根據(jù)(例如)與用來監(jiān)視計算機(jī)程序執(zhí)行的性能監(jiān)視應(yīng)用程序相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)來判定。即,用戶可以通過至性能監(jiān)視應(yīng)用程序的用戶輸入,為特定類型的事件或者為特定軌跡設(shè)置使能前置處理程序、使能后置處理程序、使能兩者、或者都不使能。該信息可以存儲在與性能監(jiān)視應(yīng)用程序相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)中,其可以被訪問來設(shè)置與處理器相關(guān)聯(lián)的寄存器以指示使能前置處理程序、使能后置處理程序、使能兩者、或者都不使能。
可替換地,該信息可以在每次生成陷阱或中斷時由處理器或者中斷單元訪問的數(shù)據(jù)結(jié)構(gòu)中進(jìn)行維護(hù),以確定該特定陷阱或中斷與前置處理程序、后置處理程序、兩者相關(guān)聯(lián)、或者都不相關(guān)聯(lián)。該數(shù)據(jù)結(jié)構(gòu)可以是(例如)IDT、陰影(shadow)IDT數(shù)據(jù)結(jié)構(gòu)、或者其他數(shù)據(jù)結(jié)構(gòu)。在另一實施方式中,可以使用寄存器來指示前置處理程序的地址以及用于后置處理程序的不同的寄存器。零值意味著沒有前置或后置處理程序,而非零值指示前置或后置處理程序的地址。該方法允許用于所有陷阱的一個前置處理程序與一個后置處理程序。[請注意這很可能是優(yōu)選實施方式,一定要在權(quán)利要求中出現(xiàn)。]如果使能了前置處理程序,則中斷單元從與中斷類型(其在從處理器的接收的信號中指示)相關(guān)聯(lián)的IDT 402的前置處理程序地址字段408中找到前置處理程序地址408,在該例子中為0x4000 412,并且執(zhí)行從存儲器地址0x4000 424開始的相應(yīng)的前置處理程序例程422以記錄事件。
一旦執(zhí)行了前置處理程序例程422,中斷單元就從IDT 402的存儲器地址字段404中找到VHPT數(shù)據(jù)錯誤中斷服務(wù)例程的開始存儲器地址404,在該例子中為0x0000 426,并且通知處理器執(zhí)行中斷處理程序的正常中斷服務(wù)例程。一旦完成了正常中斷服務(wù)例程,處理器就發(fā)送信號給圖3中的中斷單元304。中斷單元304檢查與由處理器響應(yīng)于發(fā)生中斷而發(fā)送的信號相關(guān)聯(lián)的元數(shù)據(jù)400,以確定是否也使能了后置處理程序。
如果使能了后置處理程序,則中斷單元304從IDT 402的后置處理程序地址字段410中找到后置處理程序開始地址410,在該例子中為0x5000 442。然后中斷單元通知處理器執(zhí)行從存儲器地址0x5000 442開始的、相應(yīng)的后置處理程序例程440以記錄事件。一旦執(zhí)行了后置處理程序例程440,中斷單元就通知處理器返回引起中斷的計算機(jī)程序的原來的指令。
接著轉(zhuǎn)到圖5,根據(jù)本發(fā)明的優(yōu)選實施方式顯示了從中斷單元的角度概括了利用前置與后置處理程序來記錄中斷的事件的示范性過程的流程圖。當(dāng)響應(yīng)于執(zhí)行陷阱指令或者生成的中斷、處理器發(fā)送帶有相關(guān)元數(shù)據(jù)的信號給中斷單元時,開始該處理(步驟502)。接著,通過檢查在元數(shù)據(jù)中設(shè)置的標(biāo)志,根據(jù)與該信號相關(guān)聯(lián)的元數(shù)據(jù),判定是否使能了前置處理程序(步驟504)。如果未使能前置處理程序,則中斷單元在IDT中(例如圖4中的IDT 402)找到相應(yīng)于中斷類型(例如圖4中的中斷類型406)的、正常中斷處理例程的存儲器地址(例如圖4中的存儲器地址404)(步驟510),并且通知處理器執(zhí)行該中斷處理例程(步驟512)。
如果使能了前置處理程序,則中斷單元找到前置處理程序例程的開始地址(步驟506),并且通知處理器執(zhí)行該前置處理程序例程(步驟508)以記錄事件。然后,中斷單元通知處理器IDT中相應(yīng)于中斷類型的中斷處理例程的存儲器地址(步驟510),以執(zhí)行該中斷處理例程(步驟512)。
一旦處理器執(zhí)行了中斷處理例程,中斷單元就在IDT中找到相應(yīng)于中斷類型或者IDT項的后置處理程序地址(步驟514)。根據(jù)元數(shù)據(jù)判定是否使能了后置處理程序(步驟516)。如果未使能后置處理程序,則中斷單元通知處理器返回原來的執(zhí)行(步驟522)。此后該處理終止。
如果使能了后置處理程序,則中斷單元找到后置處理程序例程開始地址(步驟518)。然后,中斷單元通知處理器在返回原來的執(zhí)行(步驟522)之前執(zhí)行該后置處理程序例程(步驟520)以記錄事件。此后該處理終止。
接著轉(zhuǎn)到圖6,根據(jù)本發(fā)明的優(yōu)選實施方式顯示了從中斷單元的角度概括當(dāng)執(zhí)行分支指令時利用分支時陷阱通過使用前置與后置處理程序來記錄軌跡記錄的示范性過程的流程圖。當(dāng)響應(yīng)于正在執(zhí)行的分支指令、處理器發(fā)送信號給中斷單元以指示執(zhí)行分支指令時,開始該處理(步驟602)。然后中斷單元,例如圖3中的中斷單元304,通知處理器執(zhí)行來自前置處理程序例程的指令(步驟604)。接著,執(zhí)行分支指令以進(jìn)行分支(步驟606)。隨后,中斷單元通知處理器在返回正常執(zhí)行(步驟612)之前執(zhí)行來自后置處理程序的指令以記錄軌跡數(shù)據(jù)(步驟610),此后該過程終止。
由此,本發(fā)明提供了一種不用通過在運行時修改應(yīng)用程序和/或系統(tǒng)代碼來記錄性能數(shù)據(jù)的解決方案。提供了前置與后置處理程序來以各種方式處理性能信息。一個例子是通過累積所發(fā)生的事件值以供性能分析工具使用。另外,當(dāng)執(zhí)行分支指令時,前置與后置處理程序可以利用“分支時陷阱”條件來記錄軌跡數(shù)據(jù)。前置與后置處理程序還可以用來對于在進(jìn)入中斷處理程序之前與緊跟退出中斷處理程序之后發(fā)生的事件記錄精確的性能數(shù)據(jù)。所記錄的值為工程師們提供了一種工具,用來將在系統(tǒng)正常執(zhí)行期間發(fā)生的事件與當(dāng)系統(tǒng)被中斷時發(fā)生的事件相分離,以更好地優(yōu)化系統(tǒng)。
應(yīng)該注意雖然已經(jīng)針對全功能數(shù)據(jù)處理系統(tǒng)的情況描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該理解本發(fā)明的過程能夠以指令的計算機(jī)可讀介質(zhì)的形式以及各種形式進(jìn)行分布,并且不管實際用來進(jìn)行該分布的信號承載介質(zhì)的特定類型為何,同樣適用本發(fā)明。計算機(jī)可讀介質(zhì)的例子包括可記錄類型介質(zhì),例如軟盤、硬盤驅(qū)動器、RAM、CD-ROM、DVD-ROM以及傳送類型介質(zhì),例如數(shù)字與模擬通信鏈路,使用諸如射頻與光波傳送等傳送形式的有線或無線通信鏈路。計算機(jī)可讀介質(zhì)可以采用編碼格式的形式,所述編碼格式在特定數(shù)據(jù)處理系統(tǒng)中實際使用時被解碼。
對本發(fā)明的描述出于展示與描述目的,而不是窮盡的或者限于所公開形式的本發(fā)明。對于本領(lǐng)域技術(shù)人員,顯然存在許多修改與變化。選擇與描述的實施方式以便最好地解釋本發(fā)明的原理與實際應(yīng)用,并且使本領(lǐng)域技術(shù)人員理解本發(fā)明具有適合于所設(shè)想的實際應(yīng)用的各種修改的各種實施方式。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中處理性能信息的方法,包含以下步驟在該數(shù)據(jù)處理系統(tǒng)的處理器的中斷單元處接收中斷信號;確定是否為中斷使能了前置處理程序例程與后置處理程序例程中的至少一個;如果使能了前置例程,則啟動前置處理程序例程以在第一時刻記錄事件;啟動中斷處理程序例程;以及如果使能了后置處理程序例程,則啟動后置處理程序例程以在第二時刻記錄事件。
2.如權(quán)利要求1所述的方法,其中記錄事件包括記錄多個計數(shù)。
3.如權(quán)利要求1所述的方法,其中記錄事件包括記錄時間戳。
4.如權(quán)利要求2所述的方法,其中所述計數(shù)表示事件的發(fā)生次數(shù)。
5.如權(quán)利要求4所述的方法,其中從包含高速緩存丟失與所執(zhí)行的指令數(shù)目的組中選擇事件。
6.如權(quán)利要求1所述的方法,其中第一與第二時刻分別與第一與第二時間戳相關(guān)聯(lián)。
7.如權(quán)利要求1所述的方法,還包括多個前置處理程序例程與多個后置處理程序例程,其中每個前置處理程序例程與每個后置處理程序例程在發(fā)生中斷時記錄不同的事件。
8.如權(quán)利要求1所述的方法,其中記錄事件包括累積計數(shù)總值。
9.如權(quán)利要求8所述的方法,其中通過相加所記錄的事件計數(shù)來累積所述計數(shù)總值。
10.如權(quán)利要求8所述的方法,其中在性能分析工具中顯示所述計數(shù)總值。
11.如權(quán)利要求2所述的方法,其中當(dāng)啟動前置或后置處理程序例程時,不更新所述計數(shù)。
12.一種在數(shù)據(jù)處理系統(tǒng)中執(zhí)行指令的方法,包含以下步驟在該數(shù)據(jù)處理系統(tǒng)的處理器的中斷單元處接收中斷信號;確定是否為中斷使能了前置處理程序例程與后置處理程序例程中的至少一個;如果使能了前置例程,則啟動前置處理程序例程以在第一時刻記錄軌跡記錄;啟動中斷處理程序例程;以及如果使能了后置處理程序例程,則啟動后置處理程序例程以在第二時刻記錄軌跡記錄。
13.如權(quán)利要求12所述的方法,其中軌跡記錄包括指示哪里發(fā)生中斷的指令的來源地址。
14.如權(quán)利要求12所述的方法,其中軌跡記錄包括多個計數(shù)。
15.如權(quán)利要求14所述的方法,其中所述計數(shù)表示事件的發(fā)生次數(shù)。
16.如權(quán)利要求15所述的方法,其中從包含高速緩存丟失與時鐘周期的組中選擇事件。
17.如權(quán)利要求12所述的方法,其中軌跡記錄包括時間戳。
18.如權(quán)利要求12所述的方法,還包括多個前置處理程序例程與多個后置處理程序例程,其中每個前置處理程序例程與每個后置處理程序例程在發(fā)生中斷時記錄不同的事件。
19.如權(quán)利要求12所述的方法,其中第一和第二時刻分別與第一和第二時間戳相關(guān)聯(lián)。
20.如權(quán)利要求12所述的方法,其中前置處理程序例程或后置處理程序例程監(jiān)視所記錄的事件的計數(shù),以確定是否發(fā)生了上溢。
21.如權(quán)利要求20所述的方法,其中前置處理程序例程或后置處理程序例程通過讀取并重置所述計數(shù)來處理上溢。
22.一種數(shù)據(jù)處理系統(tǒng),包括中斷單元,用來接收中斷信號;前置處理程序例程與后置處理程序例程;其中響應(yīng)于在中斷單元處收到的中斷的中斷信號,前置處理程序例程在第一時刻記錄軌跡記錄;以及其中響應(yīng)于中斷完成,后置處理程序例程在第二時刻記錄軌跡記錄。
23.如權(quán)利要求22所述的系統(tǒng),其中軌跡記錄包括指示哪里發(fā)生中斷的指令的來源地址。
24.如權(quán)利要求22所述的系統(tǒng),其中軌跡記錄包括多個計數(shù)。
25.如權(quán)利要求24所述的系統(tǒng),其中所述計數(shù)表示事件的發(fā)生次數(shù)。
26.如權(quán)利要求25所述的系統(tǒng),其中從包含高速緩存丟失與時鐘周期的組中選擇事件。
27.如權(quán)利要求22所述的系統(tǒng),其中軌跡記錄包括時間戳。
28.如權(quán)利要求22所述的系統(tǒng),還包括多個前置處理程序例程與多個后置處理程序例程,其中每個前置處理程序例程與每個后置處理程序例程在發(fā)生中斷時記錄不同的事件。
29.如權(quán)利要求22所述的系統(tǒng),其中第一和第二時刻分別與第一和第二時間戳相關(guān)聯(lián)。
30.如權(quán)利要求24所述的系統(tǒng),其中當(dāng)啟動前置或后置處理程序例程時,不更新所述計數(shù)。
31.如權(quán)利要求22所述的系統(tǒng),其中前置處理程序例程或后置處理程序例程監(jiān)視所記錄的事件的計數(shù),以確定是否發(fā)生了上溢。
32.如權(quán)利要求31所述的系統(tǒng),其中前置處理程序例程或后置處理程序例程通過讀取并重置所述計數(shù)來處理上溢。
33.一種計算可讀介質(zhì)中的計算機(jī)程序產(chǎn)品,包含第一指令,用來在數(shù)據(jù)處理系統(tǒng)的處理器的中斷單元處接收中斷信號;第二指令,用來確定是否為中斷使能了前置處理程序例程與后置處理程序例程中的至少一個;第三指令,用來如果使能了前置例程,則啟動前置處理程序例程以在第一時刻記錄軌跡記錄;以及第四指令,用來啟動中斷處理程序例程;以及第五指令,用來如果使能了后置處理程序例程,則啟動后置處理程序例程以在第二時刻記錄軌跡記錄。
34.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,其中軌跡記錄包括指示哪里發(fā)生中斷的指令的來源地址。
35.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,其中軌跡記錄包括多個計數(shù)。
36.如權(quán)利要求35所述的計算機(jī)程序產(chǎn)品,其中所述計數(shù)表示事件的發(fā)生次數(shù)。
37.如權(quán)利要求36所述的計算機(jī)程序產(chǎn)品,其中從包含高速緩存丟失與時鐘周期的組中選擇事件。
38.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,其中軌跡記錄包括時間戳。
39.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,還包括多個前置處理程序例程與多個后置處理程序例程,其中每個前置處理程序例程與每個后置處理程序例程在發(fā)生中斷時記錄不同的事件。
40.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,其中在軌跡記錄中,第一和第二時刻分別與第一和第二時間戳相關(guān)聯(lián)。
41.如權(quán)利要求33所述的計算機(jī)程序產(chǎn)品,其中前置處理程序例程或后置處理程序例程監(jiān)視所記錄的事件的計數(shù),以確定是否發(fā)生了上溢。
42.如權(quán)利要求35所述的計算機(jī)程序產(chǎn)品,其中當(dāng)啟動前置或后置處理程序例程時,不更新所述計數(shù)。
43.如權(quán)利要求41所述的計算機(jī)程序產(chǎn)品,其中前置處理程序例程或后置處理程序例程通過讀取并重置所述計數(shù)來處理上溢。
44.一種在數(shù)據(jù)處理系統(tǒng)中執(zhí)行分支指令的方法,包含以下步驟執(zhí)行程序的分支指令;響應(yīng)于執(zhí)行陷阱,在該數(shù)據(jù)處理系統(tǒng)的處理器的中斷單元處接收信號,其中響應(yīng)于執(zhí)行所述程序的分支指令,執(zhí)行所述陷阱;響應(yīng)于收到該信號,啟動前置處理程序例程以在第一時刻記錄軌跡記錄;當(dāng)完成程序的分支指令的執(zhí)行時,啟動后置處理程序例程以在第二時刻記錄軌跡記錄。
45.如權(quán)利要求44所述的方法,其中軌跡記錄包括指示分支指令地址的來源地址。
46.如權(quán)利要求44所述的方法,其中軌跡記錄包括指示分支指令去向地址的目的地址。
47.如權(quán)利要求44所述的方法,其中軌跡記錄包括多個計數(shù)。
48.如權(quán)利要求47所述的方法,其中所述計數(shù)表示事件的發(fā)生次數(shù)。
49.如權(quán)利要求44所述的方法,其中軌跡記錄包括時間戳。
50.如權(quán)利要求48所述的方法,其中從包含高速緩存丟失與時鐘周期的組中選擇事件。
51.如權(quán)利要求44所述的方法,還包括多個前置處理程序例程與多個后置處理程序例程,其中每個前置處理程序例程與每個后置處理程序例程記錄不同的事件。
52.如權(quán)利要求44所述的方法,其中在軌跡記錄中,第一和第二時刻分別與第一和第二時間戳相關(guān)聯(lián)。
53.如權(quán)利要求47所述的方法,其中當(dāng)啟動前置與后置處理程序例程時,不更新所述計數(shù)。
全文摘要
一種方法、裝置與計算機(jī)指令,用來提供前置與后置處理程序,以在進(jìn)入中斷處理程序之前或者退出中斷處理程序之后記錄軌跡記錄。軌跡記錄包含其中發(fā)生中斷或其中執(zhí)行分支指令的“來源”地址、或分支去向的“目的”地址,及選定性能監(jiān)視事件的情況和計數(shù)。時間戳可與每個事件相關(guān)聯(lián)。在一種實施方式中,利用分支時陷阱來使用前置與后置處理程序,以在進(jìn)行分支之前以及緊跟其之后記錄軌跡記錄。在另一實施方式中,使能前置處理程序,以記錄在執(zhí)行中斷服務(wù)例程之前發(fā)生的軌跡記錄。使能后置處理程序,以記錄在執(zhí)行中斷服務(wù)例程之后并且在返回正常執(zhí)行之前發(fā)生的軌跡記錄。用戶可以在以后收集所得的低級性能軌跡數(shù)據(jù)以進(jìn)行更加結(jié)構(gòu)化的性能分析。
文檔編號G06F9/38GK1648865SQ20051000463
公開日2005年8月3日 申請日期2005年1月14日 優(yōu)先權(quán)日2004年1月14日
發(fā)明者小吉米·E·德威特, 弗蘭克·E·萊文, 克里斯托弗·M·理查森, 羅伯特·J·厄克特 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
射阳县| 寿光市| 秭归县| 百色市| 滨州市| 敖汉旗| 宜阳县| 观塘区| 北京市| 松阳县| 天门市| 贵州省| 定远县| 安泽县| 瑞丽市| 磴口县| 平塘县| 无极县| 阿拉善左旗| 婺源县| 上饶县| 循化| 阜平县| 威海市| 十堰市| 石泉县| 湘西| 红安县| 河曲县| 广汉市| 滕州市| 安康市| 拜城县| 阜南县| 昌图县| 襄汾县| 西畴县| 沁水县| 铜川市| 皋兰县| 贵南县|