專利名稱:檢測(cè)程序模式的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及程序管理,具體而言,涉及檢測(cè)程序中的模式的方法和設(shè)備。
背景技術(shù):
由計(jì)算機(jī)和其它基于處理器的設(shè)備執(zhí)行的程序通常會(huì)表現(xiàn)出重復(fù)的模式(pattern)。眾所周知,識(shí)別這樣的重復(fù)模式可以優(yōu)化程序的執(zhí)行。例如,軟件和固件程序員長(zhǎng)期利用小規(guī)模的重復(fù)模式,如使用迭代循環(huán)等,來(lái)減小代碼規(guī)模、控制內(nèi)存分配以及執(zhí)行旨在優(yōu)化和簡(jiǎn)化程序執(zhí)行的其它任務(wù)。
最近,對(duì)尋找識(shí)別復(fù)雜的工作任務(wù),例如,可控運(yùn)行時(shí)環(huán)境(managedrun-time environment)和其它基于服務(wù)器的應(yīng)用中的大規(guī)模重復(fù)模式,以優(yōu)化這些工作任務(wù)的興趣越來(lái)越高。例如,眾所周知,一個(gè)工作任務(wù)可以概念化為一系列的宏觀事務(wù)。這里使用的術(shù)語(yǔ)“宏觀事務(wù)(macroscopic transaction)”和“子事務(wù)(sub-transaction)”是指商業(yè)級(jí)事務(wù)和/或應(yīng)用軟件級(jí)事務(wù)。例如,互聯(lián)網(wǎng)零售商,如Amazon.com的服務(wù)器的工作任務(wù)可以概念化為產(chǎn)品展示、訂單輸入、訂單處理、顧客登記、支付處理等一系列宏觀事務(wù)和子事務(wù)。進(jìn)入更微觀一級(jí),工作任務(wù)中的各個(gè)宏觀事務(wù)可以看做為一系列的程序狀態(tài)。希望能夠通過(guò),例如,減少主計(jì)算機(jī)執(zhí)行宏觀事務(wù)和/或程序狀態(tài)和/或在這之間轉(zhuǎn)換所占用的時(shí)間來(lái)優(yōu)化工作任務(wù)的執(zhí)行。因此,希望能夠識(shí)別宏觀事務(wù)中程序狀態(tài)的重復(fù)模式,以預(yù)測(cè)程序狀態(tài)的轉(zhuǎn)換,優(yōu)化宏觀事務(wù)和/或程序狀態(tài)的執(zhí)行,提高與這些事務(wù)相關(guān)的工作任務(wù)的處理能力。
曾經(jīng)嘗試過(guò)利用重復(fù)結(jié)構(gòu)(如循環(huán))以把數(shù)據(jù)預(yù)取(prefetch)至高速緩存中。但是,那些現(xiàn)有技術(shù)的方法很大程度上局限于高度規(guī)則和簡(jiǎn)單的工作任務(wù),如科學(xué)代碼的執(zhí)行。有效地預(yù)測(cè)更大、更復(fù)雜的工作任務(wù)的程序狀態(tài)和/或宏觀事務(wù)仍是一個(gè)未解決的難題。
圖1是檢測(cè)程序模式的示例性設(shè)備的示意圖;圖2是圖1中示例性狀態(tài)識(shí)別器的更詳細(xì)的示意圖;圖3是一個(gè)示例性軌跡的示意圖;圖4解釋了圖3所示簽名構(gòu)造裝置和權(quán)值分配機(jī)構(gòu)構(gòu)造簽名的示例性方式;圖5顯示了可以為程序中識(shí)別的各個(gè)狀態(tài)創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)的示例;圖6是圖1所示預(yù)測(cè)器示例的更詳細(xì)的示意圖;圖7是由圖6所示的熵值計(jì)算器計(jì)算的熵值示例的圖表;圖8是實(shí)現(xiàn)圖1所示設(shè)備的軌跡采樣器的機(jī)器可讀指令示例的流程圖;圖9A-9C是實(shí)現(xiàn)圖1所示設(shè)備的狀態(tài)識(shí)別器和預(yù)測(cè)器的機(jī)器可讀指令示例的流程圖;圖10是可以執(zhí)行圖8和圖9A-9C所示程序以實(shí)現(xiàn)圖1所示設(shè)備的計(jì)算機(jī)示例的示意圖。
具體實(shí)施例方式
如上所述,實(shí)際的全球服務(wù)器應(yīng)用程序通常會(huì)表現(xiàn)出重復(fù)的行為。這些重復(fù)行為通常是由本地或遠(yuǎn)程客戶端請(qǐng)求執(zhí)行主站點(diǎn)的應(yīng)用程序接口(API)所定義的任務(wù)或商業(yè)交易而驅(qū)動(dòng)的。由于可供客戶端請(qǐng)求執(zhí)行的任務(wù)是有限的,所以在主服務(wù)器上客戶端的API調(diào)用是重復(fù)性的程序執(zhí)行模式。如下所述,這種重復(fù)性提供了提高效率的機(jī)會(huì),可以通過(guò)微處理器結(jié)構(gòu)和/或軟件而加以利用。
這些重復(fù)性程序執(zhí)行模式中的基本單元是宏觀事務(wù)或子事務(wù)。宏觀事務(wù)或者子事務(wù)可以被認(rèn)為是一個(gè)由指令來(lái)度量的路徑長(zhǎng)度(pathlength)。例如,這樣的事務(wù)或者子事務(wù)的路徑長(zhǎng)度通常介于104至106條指令之間。
每個(gè)事務(wù)或子事務(wù)包括一個(gè)或多個(gè)程序狀態(tài)。程序狀態(tài)定義為在給定的時(shí)間窗口中信息的集合(例如,一組內(nèi)存地址和/或一組指令地址)。程序狀態(tài)具有基于測(cè)量和可調(diào)的特性。另一方面,事務(wù)或子事務(wù)通常是工作任務(wù)的固有特性。
圖1是示例性設(shè)備10預(yù)測(cè)正在執(zhí)行的程序的程序狀態(tài)和/或識(shí)別程序的宏觀事務(wù)的示意圖。為了構(gòu)造程序的軌跡(trace),設(shè)備10具有軌跡采樣器12。軌跡采樣器以傳統(tǒng)的方式工作,構(gòu)造程序的任何類型的軌跡。例如,軌跡采樣器12可以使用硬件計(jì)數(shù)器(如處理器計(jì)數(shù)器)和/或軟件方法(如可控運(yùn)行時(shí)環(huán)境(MRTE)方法從所執(zhí)行的程序中采集軌跡數(shù)據(jù)。例如,軌跡采樣器12可以獲取處理器的程序計(jì)數(shù)器中出現(xiàn)的指令地址,創(chuàng)建指令地址軌跡。作為其它的例子,軌跡采樣器12可以檢測(cè)和處理器的高速緩存相關(guān)聯(lián)的地址總線,創(chuàng)建內(nèi)存地址軌跡。本領(lǐng)域普通技術(shù)人員可以容易地理解,可以采用許多其它技術(shù)來(lái)創(chuàng)建相同或不同類型的軌跡。例如,軌跡采樣器12也可以配置為創(chuàng)建基本塊(basicblock)軌跡。
為了由軌跡采樣器12生成的軌跡而識(shí)別程序狀態(tài)序列,設(shè)備10還具有狀態(tài)識(shí)別器14。本領(lǐng)域普通技術(shù)人員可以理解,狀態(tài)識(shí)別器14可以用任意的方式識(shí)別軌跡采樣器12所生成的(或正在創(chuàng)建的)軌跡內(nèi)的各個(gè)狀態(tài)。在所示的例子中,狀態(tài)識(shí)別器14通過(guò)比較相鄰的至少部分地表示軌跡中出現(xiàn)的項(xiàng)目(entry)的數(shù)據(jù)集來(lái)識(shí)別程序狀態(tài)。為了使這個(gè)比較更可控制,所示的狀態(tài)識(shí)別器14將集合轉(zhuǎn)換成位向量,其作為集合中數(shù)據(jù)的速記代理(shorthand proxy)。然后所示的狀態(tài)識(shí)別器14比較相鄰集合的位向量并確定位向量之間的差別是否足以說(shuō)明已經(jīng)出現(xiàn)了新的狀態(tài)。每個(gè)集合可以包括軌跡中順序的項(xiàng)目組??梢允褂密壽E的所有項(xiàng)目,或使用項(xiàng)目的一個(gè)子集(如每十個(gè)項(xiàng)目中使用一個(gè)),以創(chuàng)建集合。而且,可以使用選進(jìn)集合中的項(xiàng)目的一部分(如最后八個(gè)比特),或該項(xiàng)目的全部(如該項(xiàng)目中的所有比特)來(lái)創(chuàng)建位向量。本領(lǐng)域普通技術(shù)人員可以很容易地理解,調(diào)節(jié)集合的分辨度(如,通過(guò)調(diào)節(jié)在創(chuàng)建集合時(shí)跳過(guò)的項(xiàng)目數(shù)量和/或調(diào)節(jié)軌跡中用于生成位向量的項(xiàng)目的比特的數(shù)目和位置),可以調(diào)節(jié)由狀態(tài)識(shí)別器14識(shí)別的程序狀態(tài)的確定性。因此,程序狀態(tài)的精確度是基于測(cè)量并且可調(diào)的。
狀態(tài)識(shí)別器14的例子如圖2所示。在顯示的例子中,狀態(tài)識(shí)別器14包括簽名構(gòu)造裝置(signature developer)16,用于從軌跡的項(xiàng)目集中構(gòu)造可能狀態(tài)簽名(possible state signature)。為了更好地解釋簽名構(gòu)造裝置16的工作,參見(jiàn)圖3所示的軌跡示例。在圖3的例子中,軌跡18包括一系列項(xiàng)目,這些項(xiàng)目以某種方式表示計(jì)算機(jī)和/或其部件的由于程序執(zhí)行而隨著時(shí)間改變的特征。例如,這些項(xiàng)目可以是在處理器的程序計(jì)數(shù)器中出現(xiàn)的指令地址,在與處理器相關(guān)聯(lián)的高速緩存的地址總線上出現(xiàn)的內(nèi)存地址,或計(jì)算機(jī)中隨程序執(zhí)行而變化的任何其它可記錄特征。本領(lǐng)域普通技術(shù)人員可以理解,這些項(xiàng)目可以是完整地址、完整地址的一部分、和/或完整地址或部分地址的代理(proxy)??紤]到被跟蹤記錄以創(chuàng)建軌跡18的項(xiàng)目的數(shù)據(jù)類型會(huì)有很大的范圍,圖3以符號(hào)“A”后面跟一個(gè)數(shù)字來(lái)一般性地描述這些項(xiàng)目。符號(hào)“A”后面的數(shù)字用于唯一地區(qū)分這些項(xiàng)目。程序的執(zhí)行使用來(lái)創(chuàng)建軌跡的被監(jiān)視特征兩次或多次具有相同的值,則軌跡18會(huì)兩次或多次包含相同的項(xiàng)目(如,項(xiàng)目A5在軌跡18中出現(xiàn)兩次)。符號(hào)“A”后面的數(shù)字可以指示該項(xiàng)目相對(duì)于其它項(xiàng)目的相對(duì)位置。例如,如果軌跡18是一個(gè)指令地址軌跡,則字母后面的各個(gè)數(shù)字表示相應(yīng)地址在內(nèi)存中的位置。為了便于說(shuō)明,如果沒(méi)有特別說(shuō)明,則下面的例子都假設(shè)軌跡18是指令地址軌跡,反映運(yùn)行關(guān)心程序的處理器所執(zhí)行的指令的完整內(nèi)存地址。
簽名構(gòu)造裝置16的主要目的是為軌跡18中的項(xiàng)目創(chuàng)建代理。具體而言,軌跡18中的項(xiàng)目可以包含很多的數(shù)據(jù)。為了將這些項(xiàng)目轉(zhuǎn)換為更加可管理的表示,簽名構(gòu)造裝置16將項(xiàng)目歸組為集合26,并將集合26轉(zhuǎn)換為可能狀態(tài)簽名28。在所示的例子中,可能狀態(tài)簽名28是位向量。集合26可以如圖4所示轉(zhuǎn)換為位向量28。
在圖4的例子中,隨機(jī)散列函數(shù)(random hashing function)30用于將集合16中的項(xiàng)目映射為一個(gè)n位向量28。在圖4的例子中,值“B”32定義了模型的分辨率(如,集合26中被散列函數(shù)30跳過(guò)和/或處理以生成n位向量28的項(xiàng)目數(shù)量)。散列函數(shù)30將軌跡18中的一組項(xiàng)目映射為位向量的基本作用是本領(lǐng)域普通技術(shù)人員所熟知(例如,參見(jiàn)Dhodapkar & Smith,“Managing Multi-Configuration hardware ViaDynamic Working Set Analysis”)。因此,為簡(jiǎn)短起見(jiàn),這里不再進(jìn)一步解釋。有興趣的讀者可以參考任何資料,包括上述提到的Dhodapkar&Smith的文章,得到進(jìn)一步的信息。
在將集合26的項(xiàng)目映射為位向量簽名28時(shí),為了對(duì)集合26的成員進(jìn)行加權(quán),比如使后面的成員比前面的成員具有更大的權(quán)值,設(shè)備10進(jìn)一步具有權(quán)值分配機(jī)構(gòu)34。如圖4的示例性映射函數(shù)所示,權(quán)值分配機(jī)構(gòu)34在使用散列函數(shù)30對(duì)集合26進(jìn)行操作之前,將指數(shù)衰減函數(shù)(exponential decay function)36應(yīng)用于集合26的項(xiàng)目(如,f1=e-t/T,其中t=時(shí)間、T=半壽命周期)。將指數(shù)衰減函數(shù)應(yīng)用于集合26的項(xiàng)目,因此,當(dāng)散列函數(shù)30將集合26轉(zhuǎn)換為可能狀態(tài)簽名28時(shí),集合26中最后面的項(xiàng)目比集合26中的早期值對(duì)可能狀態(tài)簽名28中出現(xiàn)的值具有更大的影響。本領(lǐng)域普通技術(shù)人員可以理解,如這里所討論的其它結(jié)構(gòu)和模塊一樣,權(quán)值分配機(jī)構(gòu)34是可選的。換一句話說(shuō),圖4所示的指數(shù)衰減函數(shù)36是可以選擇不要的。
如上所述,所示的簽名構(gòu)造裝置16對(duì)軌跡18中出現(xiàn)的項(xiàng)目的連續(xù)集合26進(jìn)行操作,創(chuàng)建相應(yīng)于那些集合26的一系列位向量28。本領(lǐng)域普通技術(shù)人員可以理解,簽名構(gòu)造裝置16可以以多種方式將軌跡18中的項(xiàng)目歸組為集合26。但是,在所示的例子中,簽名構(gòu)造裝置16創(chuàng)建集合26,使相鄰的集合發(fā)生重疊(即,共享至少一個(gè)項(xiàng)目)。換一句話說(shuō),簽名構(gòu)造裝置16使用一個(gè)滑動(dòng)窗口(sliding window)來(lái)定義一系列重疊的集合26。軌跡18中由相鄰集合26共享的項(xiàng)目數(shù)量(即,相鄰集合的交集)可以小至一個(gè)元素,或大至除一個(gè)元素之外的所有元素(如,見(jiàn)圖4中重疊的集合26)。在簽名構(gòu)造裝置16創(chuàng)建相鄰的相交集合26的例子中,使用權(quán)值分配機(jī)構(gòu)34是特別有利的,這可以使得簽名構(gòu)造裝置16創(chuàng)建的可能狀態(tài)簽名28更對(duì)應(yīng)于新的非重疊項(xiàng)目,而不是重疊項(xiàng)目和舊的非重疊項(xiàng)目。
為了根據(jù)可能狀態(tài)簽名28識(shí)別程序狀態(tài),設(shè)備10進(jìn)一步具有狀態(tài)區(qū)分器38。在所示的例子中,狀態(tài)區(qū)分器38通過(guò)選擇一個(gè)可能狀態(tài)簽名28作為第一狀態(tài)簽名40(如,圖3的STATE1),為其余的分析提供一個(gè)參考點(diǎn),從而開(kāi)始識(shí)別程序狀態(tài)。通常,默認(rèn)地選擇可能狀態(tài)簽名序列(如,PS1-PSN)中的第一可能狀態(tài)簽名28(如,圖3的PS1)作為第一狀態(tài)簽名40,但是本領(lǐng)域普通技術(shù)人員可以理解,這個(gè)選擇是任意的,也可以選擇另外一個(gè)可能狀態(tài)簽名28(如,PS2-PSN)作為第一狀態(tài)簽名40。
一旦選擇了第一狀態(tài)簽名40,狀態(tài)區(qū)分器38就將第一狀態(tài)簽名40與下一個(gè)可能狀態(tài)簽名28(如PS2)進(jìn)行比較。例如,如果第一狀態(tài)簽名40是第一可能狀態(tài)簽名,則可以把第一狀態(tài)簽名40與可能狀態(tài)簽名28列表中的第二可能狀態(tài)簽名PS2進(jìn)行比較。如果下一個(gè)可能狀態(tài)簽名28(如PS2)與第一狀態(tài)簽名40之間存在至少預(yù)定量的差別,則用于創(chuàng)建軌跡18的被測(cè)量參數(shù)有了足夠的變化,說(shuō)明相應(yīng)的程序進(jìn)入了一個(gè)新的程序狀態(tài)。相應(yīng)地,狀態(tài)區(qū)分器38將下一個(gè)可能狀態(tài)簽名28(如PS2)識(shí)別為第二狀態(tài)簽名。
另一方面,如果下一個(gè)狀態(tài)簽名28(如PS2)與第一狀態(tài)簽名40之間沒(méi)有至少預(yù)定量的差別,則用于創(chuàng)建軌跡18的被測(cè)量參數(shù)的變化還不足以說(shuō)明相應(yīng)的程序進(jìn)入了新的程序狀態(tài)。相應(yīng)地,狀態(tài)區(qū)分器38拋棄可能狀態(tài)簽名28(如PS2),跳轉(zhuǎn)至下一個(gè)可能狀態(tài)簽名28(如PS3),再將第一狀態(tài)簽名40與該下一個(gè)可能狀態(tài)簽名28(如PS3)進(jìn)行比較,重復(fù)上述過(guò)程。狀態(tài)區(qū)分器38繼續(xù)這個(gè)過(guò)程,將可能狀態(tài)簽名28(如PS2-PSN)與第一狀態(tài)簽名40進(jìn)行比較,直至識(shí)別出一個(gè)可能狀態(tài)簽名28(如PS4)與第一狀態(tài)簽名40之間存在至少預(yù)定量的差別。當(dāng)識(shí)別出這樣一個(gè)可能狀態(tài)簽名(如PS4)時(shí),狀態(tài)區(qū)分器38把這個(gè)可能狀態(tài)簽名(如PS4)指定為第二狀態(tài)簽名(如STATE2)。所有參與過(guò)的可能狀態(tài)簽名28(如PS2-PS3)都不再使用而被拋棄。
一旦識(shí)別出第二狀態(tài)(如STATE2),狀態(tài)區(qū)分器38再開(kāi)始這個(gè)處理,將第二狀態(tài)簽名(如PS4)和下一個(gè)可能狀態(tài)簽名(如PS5等)進(jìn)行比較,以識(shí)別第三狀態(tài)(如STATE3),直至所有的可能狀態(tài)簽名(如PS2-PSN)都被檢查一遍,從而識(shí)別出在程序的當(dāng)前執(zhí)行過(guò)程中發(fā)生的所有程序狀態(tài)(STATE1-STATEN)。出現(xiàn)在第一程序狀態(tài)40后面的程序狀態(tài)例子(如,STATE2-STATEN)如圖3所示。如這個(gè)例子所示,根據(jù)所分析的程序,任何數(shù)目的程序狀態(tài)都可以出現(xiàn)/重復(fù)出現(xiàn)任何次數(shù)。
本領(lǐng)域普通技術(shù)人員可以理解,有許多可能的方法來(lái)比較狀態(tài)簽名(如,STATE1-STATEN)和下一個(gè)可能狀態(tài)簽名(如,PS2-PSN),以確定是否進(jìn)入了一個(gè)新的程序狀態(tài)。本領(lǐng)域技術(shù)人員還可以理解,可以使用許多不同的閾值作為確定是否進(jìn)入新程序狀態(tài)的觸發(fā)器。閾值的選擇是在程序中找出的狀態(tài)的數(shù)量和清晰度的決定性因素。在所示的例子中,簽名之間表明一個(gè)新程序狀態(tài)所需的閾值之差為漢明距離(Hamming distance)。這樣,如果一個(gè)狀態(tài)簽名(如,STATE1)和一個(gè)可能狀態(tài)簽名(如,PS2)之差滿足下式,則已經(jīng)進(jìn)入了一個(gè)新的程序狀態(tài)。
Δ=|狀態(tài)簽名XOR可能狀態(tài)簽名|/|狀態(tài)簽名OR可能狀態(tài)簽名|換一句話說(shuō),在這個(gè)示例性的實(shí)施中,如果只出現(xiàn)在(a)當(dāng)前狀態(tài)簽名和(b)可能狀態(tài)簽名其中一個(gè)中的位值集合(即,差值集合)除以出現(xiàn)在(a)當(dāng)前狀態(tài)簽名和/或(b)可能狀態(tài)簽名中所有成員的集合(即,成員的全集(如,出現(xiàn)在位向量中的邏輯1值)的結(jié)果大于一個(gè)預(yù)定值(如,Δ),則進(jìn)入了一個(gè)新的狀態(tài)。
為了管理與狀態(tài)區(qū)分器38識(shí)別的狀態(tài)相關(guān)的數(shù)據(jù),設(shè)備10進(jìn)一步包括存儲(chǔ)器44(見(jiàn)圖1)。所示例子中的存儲(chǔ)器44是包含多個(gè)狀態(tài)數(shù)據(jù)結(jié)構(gòu)的狀態(tài)數(shù)組,其中每個(gè)數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于一個(gè)唯一的程序狀態(tài)。本領(lǐng)域普通技術(shù)人員可以理解,狀態(tài)數(shù)據(jù)結(jié)構(gòu)和狀態(tài)數(shù)組44可以以多種形式設(shè)置。在所示的例子中,狀態(tài)數(shù)組44很大,足以包含四百個(gè)狀態(tài)數(shù)據(jù)結(jié)構(gòu),并且狀態(tài)數(shù)組中的各個(gè)數(shù)據(jù)結(jié)構(gòu)又包括如下的字段(a)相應(yīng)程序狀態(tài)的狀態(tài)簽名,(b)相應(yīng)程序狀態(tài)的年齡,(c)相應(yīng)程序狀態(tài)的使用頻率,(d)相應(yīng)程序狀態(tài)的熵值,和(e)包含從相應(yīng)程序狀態(tài)轉(zhuǎn)換為一系列程序狀態(tài)的一系列概率的子數(shù)組。
狀態(tài)數(shù)據(jù)結(jié)構(gòu)的例子如圖5所示。狀態(tài)簽名字段可以用來(lái)存儲(chǔ)相應(yīng)于數(shù)據(jù)結(jié)構(gòu)的狀態(tài)的位向量簽名(如,STATE1-STATEN)。年齡字段可以用來(lái)存儲(chǔ)指示最后一次進(jìn)入相應(yīng)狀態(tài)的時(shí)間的值。因?yàn)闋顟B(tài)數(shù)組是有限的,年齡字段可以用來(lái)識(shí)別舊的狀態(tài)數(shù)據(jù)結(jié)構(gòu),可以重寫(xiě)舊狀態(tài)數(shù)據(jù)結(jié)構(gòu)而存儲(chǔ)新發(fā)生的狀態(tài)數(shù)據(jù)結(jié)構(gòu)。使用頻率字段可以用來(lái)存儲(chǔ)用于識(shí)別在該數(shù)據(jù)結(jié)構(gòu)的壽命周期中進(jìn)入相應(yīng)狀態(tài)的次數(shù)的數(shù)據(jù)。熵值字段可以用來(lái)存儲(chǔ)用于識(shí)別宏觀事務(wù)結(jié)束的數(shù)據(jù)。概率集子數(shù)組可以用來(lái)存儲(chǔ)指示在該狀態(tài)數(shù)據(jù)結(jié)構(gòu)的壽命周期中,程序從對(duì)應(yīng)于該狀態(tài)數(shù)據(jù)結(jié)構(gòu)的程序狀態(tài)進(jìn)入到各個(gè)程序狀態(tài)的次數(shù)比率的數(shù)據(jù)。例如,每個(gè)數(shù)據(jù)結(jié)構(gòu)可以存儲(chǔ)多達(dá)十六組的三個(gè)字段,包括指示相應(yīng)于該狀態(tài)數(shù)據(jù)結(jié)構(gòu)的程序狀態(tài)在過(guò)去已經(jīng)轉(zhuǎn)換至的程序狀態(tài)的名稱的數(shù)據(jù),那些轉(zhuǎn)換發(fā)生的相對(duì)時(shí)間,和相應(yīng)于該狀態(tài)數(shù)據(jù)結(jié)構(gòu)的程序狀態(tài)轉(zhuǎn)換至該字段集合中第一個(gè)字段中確定的狀態(tài)的次數(shù)百分比。
為了確定和狀態(tài)識(shí)別器所識(shí)別的程序狀態(tài)相關(guān)的熵值,設(shè)備10進(jìn)一步包括預(yù)測(cè)器46。如下所述,在所示的例子中,預(yù)測(cè)器46使用熵值來(lái)識(shí)別宏觀事務(wù)的結(jié)束。
圖6更加詳細(xì)地顯示了一個(gè)示例性的預(yù)測(cè)器46。為了計(jì)算從一個(gè)程序狀態(tài)轉(zhuǎn)換至另一個(gè)程序狀態(tài)的概率,預(yù)測(cè)器46具有狀態(tài)轉(zhuǎn)換監(jiān)視器48。每當(dāng)發(fā)生了程序狀態(tài)轉(zhuǎn)換(也就是,每當(dāng)程序狀態(tài)從一種狀態(tài)變化至另一種狀態(tài)),狀態(tài)轉(zhuǎn)換監(jiān)視器48在相應(yīng)于正在退出的程序狀態(tài)的狀態(tài)數(shù)據(jù)結(jié)構(gòu)的子數(shù)組中記錄該事件。具體而言,狀態(tài)轉(zhuǎn)換監(jiān)視器48記錄下指示所轉(zhuǎn)換至的數(shù)組的名稱和轉(zhuǎn)換的發(fā)生時(shí)間(或時(shí)間的代理)的數(shù)據(jù)。要記錄轉(zhuǎn)換發(fā)生的時(shí)間(或時(shí)間的代理),因?yàn)樵谒镜睦又?,狀態(tài)轉(zhuǎn)換監(jiān)視器48使用指數(shù)移動(dòng)平均(exponential moving average)計(jì)算概率。這樣,不是簡(jiǎn)單地對(duì)狀態(tài)數(shù)據(jù)結(jié)構(gòu)的子數(shù)組中的項(xiàng)目進(jìn)行平均來(lái)根據(jù)過(guò)去的表現(xiàn)計(jì)算特定狀態(tài)之間轉(zhuǎn)換的概率,狀態(tài)轉(zhuǎn)換監(jiān)視器48根據(jù)它們的相對(duì)發(fā)生時(shí)間,通過(guò)將那些項(xiàng)目乘以一個(gè)指數(shù)函數(shù)來(lái)對(duì)狀態(tài)數(shù)據(jù)結(jié)構(gòu)的子數(shù)組中的項(xiàng)目進(jìn)行加權(quán)。這種方法的結(jié)果是,在概率計(jì)算中,在時(shí)間上后發(fā)生的子數(shù)組的項(xiàng)目比在時(shí)間上早發(fā)生的項(xiàng)目有更大的權(quán)值,狀態(tài)轉(zhuǎn)換監(jiān)視器48可以比使用直接移動(dòng)平均方法更快地識(shí)別概率的變化模式。
為了將狀態(tài)轉(zhuǎn)換監(jiān)視器48計(jì)算的概率轉(zhuǎn)換為熵值,設(shè)備10進(jìn)一步包括熵值計(jì)算器50。給定狀態(tài)的熵值是與那個(gè)狀態(tài)相關(guān)的轉(zhuǎn)換不確定性。換一句話說(shuō),給定當(dāng)前狀態(tài)的歷史信息,熵值將當(dāng)前程序狀態(tài)結(jié)束時(shí)要發(fā)生哪種程序狀態(tài)的信息不確定性量化。例如,對(duì)于給定的具有轉(zhuǎn)換為第二程序狀態(tài)和第三程序狀態(tài)的歷史信息的程序狀態(tài),熵值計(jì)算器50計(jì)算從本程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率(a)和從本程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率對(duì)數(shù)(b)的乘積(1)和從本程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率(a)和從本程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率對(duì)數(shù)(b)的乘積(2)之和,從而對(duì)于給定的程序狀態(tài)將概率轉(zhuǎn)換為熵值。用另一種方式描述,對(duì)于狀態(tài)數(shù)組44中的每個(gè)狀態(tài)數(shù)據(jù)結(jié)構(gòu),熵轉(zhuǎn)換器50根據(jù)公知的香農(nóng)(Shannon)公式計(jì)算熵值H=-K∑(Pi*log Pi),其中H為熵值,K為常數(shù),Pi是從當(dāng)前狀態(tài)(也就是,與狀態(tài)數(shù)據(jù)結(jié)構(gòu)相關(guān)的狀態(tài))轉(zhuǎn)換為狀態(tài)“i”(也就是,在當(dāng)前狀態(tài)的數(shù)據(jù)結(jié)構(gòu)的子數(shù)組中識(shí)別出的狀態(tài))的概率。在所執(zhí)行的程序中識(shí)別出的每個(gè)狀態(tài)的熵值存儲(chǔ)在相應(yīng)狀態(tài)的數(shù)據(jù)結(jié)構(gòu)中(見(jiàn)圖5)。
為了預(yù)測(cè)要從當(dāng)前狀態(tài)轉(zhuǎn)換至的下一個(gè)可能的程序狀態(tài),預(yù)測(cè)器46進(jìn)一步包括事件預(yù)測(cè)器54。事件預(yù)測(cè)器54比較當(dāng)前程序狀態(tài)的數(shù)據(jù)結(jié)構(gòu)的子數(shù)組中出現(xiàn)的概率,確定后面最可能的一個(gè)或多個(gè)狀態(tài)。后面的最可能的狀態(tài)是具有最高概率的狀態(tài)。
事件預(yù)測(cè)器54還根據(jù)與當(dāng)前程序狀態(tài)相關(guān)的熵值來(lái)識(shí)別宏觀事務(wù)。從宏觀應(yīng)用的邏輯層次來(lái)看,可以觀察到與所計(jì)算的熵值(H)的連接,即微觀軌跡特征。當(dāng)新的商業(yè)交易開(kāi)始時(shí),程序執(zhí)行通常會(huì)沿著具有低熵的相對(duì)明確的軌線進(jìn)行。但是,當(dāng)程序執(zhí)行到達(dá)宏觀事務(wù)中最后的程序狀態(tài)時(shí),熵值出現(xiàn)峰值,關(guān)于程序?qū)?huì)轉(zhuǎn)換至下一個(gè)可能的程序狀態(tài)有最大的不確定性。換一句話說(shuō),在宏觀事務(wù)內(nèi),通常會(huì)有重復(fù)的程序狀態(tài)序列。通過(guò)觀察程序狀態(tài)之間過(guò)去的行為,可以檢測(cè)到這些模式,并使用它們來(lái)預(yù)測(cè)未來(lái)的行為。相反,宏觀事務(wù)的順序比宏觀事務(wù)內(nèi)程序狀態(tài)的順序具有更高程度的隨機(jī)性,因?yàn)閳?zhí)行宏觀事務(wù)的順序取決于從第三方接收到的事務(wù)請(qǐng)求的順序,因此具有很大的隨機(jī)性。為了使這點(diǎn)更清楚,以在線零售商為例。在線零售商的服務(wù)器從大量的不同客戶端接收請(qǐng)求,并以總體隨機(jī)的方式將這些請(qǐng)求排列為一個(gè)隊(duì)列。因此處理這些請(qǐng)求的順序是隨機(jī)的。但是,一旦服務(wù)器開(kāi)始處理一個(gè)請(qǐng)求,它通常會(huì)在處理隊(duì)列中其它事務(wù)之前處理完這整個(gè)事務(wù)。因此,宏觀事務(wù)末尾處的程序狀態(tài)通常具有高熵值(也就是,對(duì)于要進(jìn)入的程序狀態(tài)具有很高的不確定性),因?yàn)閷?duì)于在剛執(zhí)行完的當(dāng)前事務(wù)之后要執(zhí)行哪個(gè)宏觀事務(wù)具有很高的不確定性。從而,宏觀事務(wù)的最后程序狀態(tài)相對(duì)于周圍的熵值具有熵值尖峰。換一句話說(shuō),宏觀事務(wù)的最后程序狀態(tài)的熵值與緊接著該最后程序狀態(tài)之前或之后的程序狀態(tài)的熵值相比通常具有相對(duì)最大值。
事件預(yù)測(cè)器54利用這個(gè)特征,使用熵值尖峰作為宏觀事務(wù)結(jié)束的劃分標(biāo)識(shí)。這樣,宏觀事務(wù)可以定義為具有熵值尖峰結(jié)束狀態(tài)的程序狀態(tài)有序序列。宏觀事務(wù)映射為商業(yè)或應(yīng)用軟件事務(wù),是工作任務(wù)的固有特征。相同的宏觀事務(wù)可以包含不同的程序狀態(tài)集,這是工作任務(wù)的基于測(cè)量的特征,可以通過(guò)轉(zhuǎn)換閾值進(jìn)行調(diào)節(jié)。但是,要注意,對(duì)于高級(jí)別的商業(yè)邏輯并不重要的可重復(fù)子事務(wù)也會(huì)在呈現(xiàn)熵值尖峰的程序狀態(tài)中結(jié)束,這樣就可能會(huì)錯(cuò)誤地識(shí)別為宏觀事務(wù)。這種錯(cuò)誤識(shí)別在實(shí)際情況,如程序的調(diào)節(jié)中并不是問(wèn)題,因?yàn)閷?duì)于所有的實(shí)際應(yīng)用,具有很高的轉(zhuǎn)換不確定性的子事務(wù)都和事務(wù)一樣。
如上所述,事件預(yù)測(cè)器54把一系列程序狀態(tài)的熵值尖峰識(shí)別為宏觀事務(wù)的結(jié)束。本領(lǐng)域普通技術(shù)人員可以理解,事件預(yù)測(cè)器54可以使用多種技術(shù)來(lái)識(shí)別熵值尖峰。例如,事件預(yù)測(cè)器54可以將當(dāng)前狀態(tài)的熵值與前一個(gè)狀態(tài)的熵值和后一個(gè)狀態(tài)的熵值進(jìn)行比較。如果當(dāng)前狀態(tài)的熵值大于前一個(gè)狀態(tài)的熵值和后一個(gè)狀態(tài)的熵值,則當(dāng)前狀態(tài)的熵值就是相對(duì)最大值(也就是,尖峰)并且把當(dāng)前狀態(tài)識(shí)別為宏觀事務(wù)的結(jié)束。否則,當(dāng)前狀態(tài)的熵值就不是相對(duì)最大值,當(dāng)前狀態(tài)不識(shí)別為宏觀事務(wù)的結(jié)束。
顯示由熵值計(jì)算器50計(jì)算的熵值圖表如圖7所示。在圖7的圖表中,不使用簽名來(lái)標(biāo)示程序狀態(tài),我們使用每個(gè)程序狀態(tài)的第一發(fā)現(xiàn)時(shí)間作為唯一的索引。這些第一發(fā)現(xiàn)時(shí)間作為圖7的Y軸坐標(biāo),(Y軸坐標(biāo)也表示下面描述的熵值),內(nèi)存訪問(wèn)作為圖7的X軸坐標(biāo)。內(nèi)存訪問(wèn)是時(shí)間的代理。
圖7的圖表包括兩個(gè)圖表。一個(gè)圖表表示在一段時(shí)期中進(jìn)入的程序狀態(tài)。另一個(gè)圖表表示同一時(shí)期中相應(yīng)程序狀態(tài)的熵值。從圖7中可以看出,圖表中的每個(gè)狀態(tài)(也就是,由◆表示的各個(gè)數(shù)據(jù)點(diǎn))與其相應(yīng)的熵值(也就是,由正方形■表示的各個(gè)數(shù)據(jù)點(diǎn))垂直對(duì)齊。從圖7中還可以看出,熵值尖峰是周期性的。每個(gè)熵值尖峰代表一個(gè)宏觀事務(wù)的結(jié)束。
實(shí)現(xiàn)圖1所示設(shè)備10的示例性機(jī)器可讀指令的流程圖如圖8和圖9A-9C所示。在這個(gè)例子中,機(jī)器可讀指令包括由處理器(如以下結(jié)合圖10所述的示例性計(jì)算機(jī)1000中的處理器1012)執(zhí)行的程序。該程序可以包含在存儲(chǔ)于有形的介質(zhì),如CD-ROM、軟盤(pán)、硬盤(pán)、數(shù)字通用光盤(pán)(DVD)、或與處理器1012相聯(lián)的存儲(chǔ)器中的軟件中,但本領(lǐng)域普通技術(shù)人員可以理解,該程序的全部和/或部分也可以以公知的方式由處理器1012之外的設(shè)備執(zhí)行,和/或包含在固件或?qū)S糜布?。例如,可以由軟件、硬件?或固件來(lái)實(shí)現(xiàn)軌跡采樣器12、狀態(tài)識(shí)別器14、預(yù)測(cè)器46、權(quán)值分配機(jī)構(gòu)34、簽名構(gòu)造裝置16、狀態(tài)區(qū)分器38、狀態(tài)轉(zhuǎn)換監(jiān)視器48、熵值計(jì)算器50、和/或事件預(yù)測(cè)器54中的任何一個(gè)或全部。而且,盡管該示例性程序是參照?qǐng)D8和圖9A-9C的流程圖描述的,但本領(lǐng)域普通技術(shù)人員可以理解,也可以使用其它的實(shí)現(xiàn)設(shè)備10的方法。例如,各模塊的執(zhí)行順序可以變化,和/或上述的一些模塊可以改變、刪掉、或組合。
圖8的程序從塊100開(kāi)始,目標(biāo)程序開(kāi)始執(zhí)行。當(dāng)目標(biāo)程序執(zhí)行時(shí),軌跡采樣器12創(chuàng)建所執(zhí)行程序的)一個(gè)或多個(gè)特征的一個(gè)或多個(gè)軌跡(塊102)。例如,軌跡采樣器12可以創(chuàng)建指令地址軌跡、內(nèi)存地址軌跡、基本塊軌跡、和/或任何其它類型的軌跡??刂茝膲K102到塊104。
如果已經(jīng)調(diào)用了軌跡處理線程(thread)(塊104),則控制從塊104到塊106。如果完成了程序的軌跡18(塊106),則圖8的程序終止。否則,如果未完成軌跡18(塊106),則控制返回至塊102,繼續(xù)軌跡18的記錄。
如果還沒(méi)有調(diào)用軌跡處理線程(塊104),則控制進(jìn)行到塊108。在塊108,開(kāi)始軌跡處理線程。然后控制返回至塊106。如上所述,如果完成了軌跡18(塊106),則程序終止,或如果未完成軌跡18則程序繼續(xù)生成軌跡18(塊102)。這樣控制繼續(xù)在塊100-108之間循環(huán),直至目標(biāo)程序停止執(zhí)行并且完成了軌跡18。
軌跡處理線程的例子如圖9A-9C所示。所示的軌跡處理線程從塊120開(kāi)始,此處簽名構(gòu)造裝置16從軌跡采樣器12創(chuàng)建的軌跡18中獲得項(xiàng)目的集合26。如上所述,可以以任何方式創(chuàng)建項(xiàng)目的集合26,包含任何成員。在圖3的例子中,每個(gè)集合26包括一系列連續(xù)項(xiàng)目(也就是,沒(méi)有項(xiàng)目被跳過(guò)),相鄰的集合相互重疊(也就是,至少一個(gè)項(xiàng)目被用在兩個(gè)相鄰的集合中)。但是,也可以采用跳過(guò)軌跡18中的一些項(xiàng)目的集合和/或不重疊的集合。
一旦從軌跡18中提取出創(chuàng)建集合26的項(xiàng)目(塊120),權(quán)值分配機(jī)構(gòu)39就調(diào)節(jié)提取出的項(xiàng)目的值,使后期的項(xiàng)目比早期項(xiàng)目具有更大的權(quán)值(塊122)。例如,權(quán)值分配機(jī)構(gòu)34可以對(duì)集合的項(xiàng)目應(yīng)用指數(shù)衰減函數(shù)36(如,f1=e-t/T)(塊122)。
權(quán)值分配機(jī)構(gòu)34對(duì)項(xiàng)目值進(jìn)行了加權(quán)之后(塊122),簽名構(gòu)造裝置16將集合26中的項(xiàng)目映射為一個(gè)n位向量,以創(chuàng)建集合26的可能狀態(tài)簽名28(塊124)。如上所述,可以使用散列函數(shù)來(lái)把集合26中的項(xiàng)目映射為可能狀態(tài)簽名28。
生成可能狀態(tài)簽名28后(塊124),狀態(tài)區(qū)分器38確定可能狀態(tài)簽名28是否是第一可能狀態(tài)簽名(塊126)。如果是第一可能狀態(tài)簽名(塊126),則默認(rèn)地,把第一可能狀態(tài)簽名定義為第一狀態(tài)簽名。這樣,狀態(tài)區(qū)分器38把當(dāng)前狀態(tài)簽名變量設(shè)置與等于可能狀態(tài)簽名28(塊128),并且在第一狀態(tài)的狀態(tài)數(shù)組44中創(chuàng)建狀態(tài)數(shù)據(jù)結(jié)構(gòu)(塊130)。狀態(tài)數(shù)據(jù)結(jié)構(gòu)的一個(gè)例子如圖5所示。狀態(tài)區(qū)分器38通過(guò)創(chuàng)建如圖5所示的字段,將當(dāng)前狀態(tài)簽名寫(xiě)入新?tīng)顟B(tài)數(shù)據(jù)結(jié)構(gòu)的狀態(tài)簽名字段中,把新?tīng)顟B(tài)數(shù)據(jù)結(jié)構(gòu)的年齡字段設(shè)置為等于當(dāng)前時(shí)間或當(dāng)前時(shí)間的代理,并把熵值字段和概率子數(shù)組字段設(shè)置為等于零,從而創(chuàng)建狀態(tài)數(shù)據(jù)結(jié)構(gòu)。
然后,簽名構(gòu)造裝置16采集下一個(gè)項(xiàng)目集合26以創(chuàng)建可能狀態(tài)簽名28(塊132)。在所示的例子中,被簽名構(gòu)造裝置16用來(lái)創(chuàng)建可能狀態(tài)簽名28的集合26是重疊的。這樣簽名構(gòu)造裝置16可以通過(guò)從最近的項(xiàng)目集合26中去掉最老的項(xiàng)目并且加入同樣數(shù)量的新項(xiàng)目來(lái)創(chuàng)建新的當(dāng)前集合26,以創(chuàng)建下一個(gè)集合26(塊132)。然后控制返回至塊122,如上所述對(duì)新的當(dāng)前集合中的項(xiàng)目進(jìn)行加權(quán)。
在塊126,如果當(dāng)前的可能狀態(tài)簽名不是第一個(gè)可能狀態(tài)簽名,則控制從塊126跳至塊134(圖9B)。在塊134,狀態(tài)區(qū)分器38計(jì)算當(dāng)前狀態(tài)簽名(即,上述的當(dāng)前狀態(tài)簽名變量的值)和當(dāng)前可能狀態(tài)簽名之間的差值。狀態(tài)區(qū)分器38然后將計(jì)算的差值與一個(gè)閾值(如,哈明距離)進(jìn)行比較。如果計(jì)算的差值超過(guò)該閾值(塊136),則程序狀態(tài)發(fā)生了變化,并且控制進(jìn)行至塊138。如果計(jì)算的差值未超過(guò)該閾值(塊136),則如上所述,簽名構(gòu)造裝置16采集下一個(gè)項(xiàng)目集合26以創(chuàng)建可能狀態(tài)簽名28(塊132,圖9A),并且控制返回至塊122。這樣,控制繼續(xù)在塊122-136之中循環(huán),直至程序狀態(tài)發(fā)生變化。
為便于說(shuō)明,假設(shè)程序狀態(tài)發(fā)生了變化(塊136),狀態(tài)區(qū)分器38把當(dāng)前狀態(tài)簽名變量設(shè)置為等于當(dāng)前可能狀態(tài)簽名28(塊138)。狀態(tài)區(qū)分器38然后檢查狀態(tài)數(shù)組44中的簽名以確定當(dāng)前狀態(tài)簽名是否對(duì)應(yīng)于一個(gè)已知狀態(tài)的簽名(塊140)。如果當(dāng)前狀態(tài)簽名是一個(gè)已知狀態(tài)簽名,則控制進(jìn)行至塊160(圖9C)。否則,如果當(dāng)前狀態(tài)簽名不是已知狀態(tài)簽名(即,當(dāng)前狀態(tài)簽名不對(duì)應(yīng)于狀態(tài)數(shù)組44中已經(jīng)存在的狀態(tài)),則控制進(jìn)行至塊142(圖9B)。
為便于說(shuō)明,假設(shè)當(dāng)前狀態(tài)簽名是一個(gè)未知的狀態(tài)簽名(如,當(dāng)前程序狀態(tài)是一個(gè)新的程序狀態(tài))(塊140),如以上結(jié)合塊130所述,狀態(tài)區(qū)分器38在第一狀態(tài)的狀態(tài)數(shù)組44中創(chuàng)建狀態(tài)數(shù)據(jù)結(jié)構(gòu)(塊142)。
狀態(tài)轉(zhuǎn)換監(jiān)視器48然后更新最近狀態(tài)的概率子數(shù)組以反映從最近狀態(tài)至新的當(dāng)前狀態(tài)的轉(zhuǎn)換(塊144)。然后控制進(jìn)行至塊146,狀態(tài)區(qū)分器38確定狀態(tài)數(shù)組44是否已滿(即,新添加的數(shù)據(jù)結(jié)構(gòu)是否使用了狀態(tài)數(shù)組中最后的可用位置)。如果狀態(tài)數(shù)組44未滿,則控制返回至塊132(圖9A),簽名構(gòu)造裝置16采集下一個(gè)項(xiàng)目集合26以創(chuàng)建可能狀態(tài)簽名28。然后如上所述,控制返回至塊122。
如果狀態(tài)數(shù)組已滿(塊146),則控制進(jìn)行至塊150(圖9B),狀態(tài)區(qū)分器38從狀態(tài)數(shù)組44中刪除最舊的狀態(tài)數(shù)據(jù)結(jié)構(gòu)。通過(guò)比較狀態(tài)數(shù)組44中的狀態(tài)數(shù)據(jù)結(jié)構(gòu)的使用字段可以識(shí)別最舊的狀態(tài)數(shù)據(jù)結(jié)構(gòu)。刪除最舊的狀態(tài)數(shù)據(jù)結(jié)構(gòu)之后(塊150),控制進(jìn)行至塊148,簽名構(gòu)造裝置16采集下一個(gè)項(xiàng)目集合26以創(chuàng)建可能狀態(tài)簽名28。然后如上所述,控制返回至塊122。
假設(shè)當(dāng)前狀態(tài)簽名是已知的狀態(tài)簽名(塊140),控制進(jìn)行至塊160(圖9C)。狀態(tài)轉(zhuǎn)換監(jiān)視器48更新最近狀態(tài)的概率子數(shù)組以反映從最近狀態(tài)至新的當(dāng)前狀態(tài)的轉(zhuǎn)換(塊160)??刂迫缓筮M(jìn)行至塊162,熵值計(jì)算器50計(jì)算當(dāng)前狀態(tài)的熵值。如上所述,可以通過(guò)許多不同的方式計(jì)算熵值。例如,在所示的例子中,使用香農(nóng)公式計(jì)算熵值。
一旦計(jì)算了熵值(塊162),事件預(yù)測(cè)器54通過(guò),例如,比較當(dāng)前狀態(tài)的狀態(tài)數(shù)據(jù)結(jié)構(gòu)的概率子數(shù)組中的各個(gè)值來(lái)識(shí)別接下來(lái)最可能的狀態(tài)(塊164)。事件預(yù)測(cè)器54可以檢查最近幾個(gè)狀態(tài)的熵值來(lái)確定是否出現(xiàn)了熵值尖峰(塊168)。如果識(shí)別出熵值尖峰(塊168),則事件預(yù)測(cè)器54把對(duì)應(yīng)于熵值尖峰的程序狀態(tài)識(shí)別為宏觀事務(wù)的最近狀態(tài)(塊170)。如果未識(shí)別出熵值尖峰(塊168),則未發(fā)生宏觀事務(wù)的結(jié)束。相應(yīng)地,控制跳過(guò)塊170而返回至塊132(圖9A)。
不管控制是經(jīng)過(guò)塊170還是直接由塊168到達(dá)塊132,在塊132,簽名構(gòu)造裝置16采集下一個(gè)項(xiàng)目集合26以創(chuàng)建可能狀態(tài)簽名28。然后如上所述,控制返回至塊122。控制繼續(xù)在塊122-170之間循環(huán),直至處理完全部的軌跡18。一旦處理完全部的軌跡18,圖9A-9C的軌跡處理線程結(jié)束。
圖10是能夠?qū)崿F(xiàn)這里所述設(shè)備和方法的示例性計(jì)算機(jī)1000的框圖。計(jì)算機(jī)1000可以是,例如,服務(wù)器、個(gè)人計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、互聯(lián)網(wǎng)設(shè)備、DVD播放器、CD播放器、數(shù)字?jǐn)z像機(jī)、個(gè)人視頻記錄器、機(jī)頂盒、或任何其它類型的計(jì)算設(shè)備。
這個(gè)示例的系統(tǒng)1000包括處理器1012。例如,處理器1012可以是Pentium系列、Itanium系列、XScale系列或CentrinoTM系列中的一種或多種Intel微處理器。當(dāng)然,其它系列的其它處理器也適用。
處理器1012通過(guò)總線1018與主存儲(chǔ)器(包括易失性存儲(chǔ)器1014和非易失性存儲(chǔ)器1016)進(jìn)行通訊。易失性存儲(chǔ)器1014可以是同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM),動(dòng)態(tài)隨機(jī)尋址存儲(chǔ)器(DRAM),RAMBUS動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(RDRAM)和/或任何其它類型的隨機(jī)存取存儲(chǔ)設(shè)備。非易失性存儲(chǔ)器1016可以是閃存(flash memory)和/或任何其它適當(dāng)類型的存儲(chǔ)設(shè)備。通常由存儲(chǔ)控制器(未顯示)以傳統(tǒng)的方式控制對(duì)主存儲(chǔ)器1014、1016的訪問(wèn)。
計(jì)算機(jī)1000還包括傳統(tǒng)的接口電路1020。接口電路1020可以是任何公知類型的接口標(biāo)準(zhǔn),如以太網(wǎng)接口、通用串行總線(USB)、和/或第三代輸入/輸出(3GIO)接口。
一個(gè)或多個(gè)輸入設(shè)備1022連接到接口電路1020。輸入設(shè)備1022允許用戶向處理器1012輸入數(shù)據(jù)和命令。輸入設(shè)備可以是,例如,鍵盤(pán)、鼠標(biāo)、觸摸屏、軌跡板、軌跡球、等位點(diǎn)(isopoint)和/或語(yǔ)音識(shí)別系統(tǒng)。
一個(gè)或多個(gè)輸出設(shè)備1024也連接到接口電路1020。輸出設(shè)備1024可以是,例如,顯示設(shè)備(液晶顯示器、陰極射線管顯示器(CRT)、打印機(jī)和/或揚(yáng)聲器)。接口電路1020通常包括圖形驅(qū)動(dòng)卡。
接口電路1020也包括通訊設(shè)備,如調(diào)制解調(diào)器或網(wǎng)絡(luò)接口卡,以便于經(jīng)過(guò)網(wǎng)絡(luò)1026(如,以太網(wǎng)連接、數(shù)字用戶線路(DSL)、電話線、同軸電纜、蜂窩電話系統(tǒng)等)與外部計(jì)算機(jī)進(jìn)行數(shù)據(jù)交換。
計(jì)算機(jī)1000也包括一個(gè)或多個(gè)大容量存儲(chǔ)設(shè)備1028,用于存儲(chǔ)軟件和數(shù)據(jù)。大容量存儲(chǔ)設(shè)備1028包括軟盤(pán)驅(qū)動(dòng)器、硬盤(pán)驅(qū)動(dòng)器、CD驅(qū)動(dòng)器和數(shù)字通用光盤(pán)(DVD)驅(qū)動(dòng)器。大容量存儲(chǔ)設(shè)備1028可以實(shí)現(xiàn)存儲(chǔ)器44的功能。
作為在圖10所示設(shè)備這樣的系統(tǒng)中實(shí)現(xiàn)這里所述的方法和/或設(shè)備的另一種選擇,這里所描述的方法和/或設(shè)備也可以包含在處理器和/或ASIC(專用集成電路)這樣的結(jié)構(gòu)中。
如上所述,本領(lǐng)域普通技術(shù)人員可以理解,上述方法和設(shè)備可以在靜態(tài)編譯器、可控運(yùn)行時(shí)環(huán)境即時(shí)編輯器(JIT)中實(shí)現(xiàn)、和/或直接在微處理器的硬件中實(shí)現(xiàn),以在執(zhí)行不同程序時(shí)實(shí)現(xiàn)性能優(yōu)化。
盡管以上描述了特定的示例性方法、設(shè)備和制造物品,但本發(fā)明的不限于此。相反,本發(fā)明涵蓋落入所附權(quán)利要求及其等同物所限定的范圍內(nèi)的所有方法/設(shè)備和制造物品。
權(quán)利要求
1.一種檢測(cè)宏觀事務(wù)的方法,包括構(gòu)造程序軌跡;從軌跡中識(shí)別程序狀態(tài)序列;確定與所述序列中識(shí)別的程序狀態(tài)相關(guān)的熵值;和根據(jù)熵值識(shí)別宏觀事務(wù)。
2.如權(quán)利要求1所述的方法,其中,所述的構(gòu)造軌跡包括構(gòu)造程序計(jì)數(shù)器軌跡、指令指針軌跡、基本塊軌跡和內(nèi)存地址軌跡中的至少一種。
3.如權(quán)利要求1所述的方法,其中,所述的識(shí)別程序狀態(tài)序列包括給軌跡中的項(xiàng)目集合分配可能狀態(tài)簽名;選擇一個(gè)可能狀態(tài)簽名作為第一狀態(tài)簽名;將第一狀態(tài)簽名與至少一個(gè)后續(xù)的可能狀態(tài)簽名進(jìn)行比較;和如果所述的至少一個(gè)后續(xù)的可能狀態(tài)簽名與第一狀態(tài)簽名之間存在至少預(yù)定量的差別,則把該后續(xù)的可能狀態(tài)簽名識(shí)別為第二狀態(tài)簽名。
4.如權(quán)利要求3所述的方法,其中,給軌跡中的項(xiàng)目集合分配可能狀態(tài)簽名包括由軌跡中的第一項(xiàng)目集合構(gòu)造第一可能狀態(tài)簽名;和由軌跡中的第二項(xiàng)目集合構(gòu)造第二可能狀態(tài)簽名,第一項(xiàng)目集合與第二項(xiàng)目集合部分地重疊。
5.如權(quán)利要求4所述的方法,其中,由軌跡中的第一項(xiàng)目集合構(gòu)造第一可能狀態(tài)簽名包括對(duì)第一集合的成員進(jìn)行加權(quán),使后面的成員比前面的成員具有更大的權(quán)值;和將加權(quán)后的成員映射為位向量簽名。
6.如權(quán)利要求3所述的方法,其中,所述的至少一個(gè)后續(xù)的可能狀態(tài)簽名包括第二狀態(tài)簽名以及第一和第二簽名之間插入的至少一個(gè)可能簽名,并且在識(shí)別第一和第二簽名后,忽略該至少一個(gè)插入的可能簽名。
7.如權(quán)利要求1所述的方法,其中,確定與序列中識(shí)別的程序狀態(tài)相關(guān)的熵值包括確定從第一程序狀態(tài)轉(zhuǎn)換至多個(gè)程序狀態(tài)的概率;和將所述的概率轉(zhuǎn)換為第一程序狀態(tài)的熵值。
8.如權(quán)利要求7所述的方法,其中,所述的概率包括移動(dòng)均值和指數(shù)移動(dòng)均值中的至少一種。
9.如權(quán)利要求7所述的方法,其中,將概率轉(zhuǎn)換為第一程序狀態(tài)的熵值包括計(jì)算從第一程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率(a)和從第一程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率的對(duì)數(shù)(b)的乘積(1)和從第一程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率(a)和從第一程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率的對(duì)數(shù)(b)的乘積(2)的和值。
10.如權(quán)利要求9所述的方法,其中,將概率轉(zhuǎn)換為第一程序狀態(tài)的熵值進(jìn)一步包括將所述和值乘以一個(gè)常數(shù)。
11.如權(quán)利要求1所述的方法,其中,根據(jù)熵值識(shí)別宏觀事務(wù)包括把熵值中的第一個(gè)尖峰識(shí)別為宏觀事務(wù)的結(jié)束。
12.如權(quán)利要求1所述的方法,進(jìn)一步包括用各自的首次發(fā)現(xiàn)時(shí)間來(lái)索引各個(gè)程序狀態(tài)。
13.如權(quán)利要求1所述的方法,進(jìn)一步包括預(yù)測(cè)當(dāng)前程序狀態(tài)預(yù)期會(huì)轉(zhuǎn)換到的至少一個(gè)后續(xù)的可能程序狀態(tài)。
14.一種制造物品,其存儲(chǔ)有機(jī)器可讀指令,所述指令執(zhí)行時(shí)使機(jī)器構(gòu)造程序的軌跡;從軌跡中識(shí)別程序狀態(tài)序列;確定與所述序列中識(shí)別的程序狀態(tài)相關(guān)的熵值;和根據(jù)熵值識(shí)別宏觀事務(wù)。
15.如權(quán)利要求14所述的制造物品,其中,所述的軌跡包括程序計(jì)數(shù)器軌跡、指令指針軌跡、基本塊軌跡和內(nèi)存地址軌跡中的至少一種。
16.如權(quán)利要求14所述的制造物品,其中,機(jī)器可讀指令使機(jī)器通過(guò)以下步驟識(shí)別程序狀態(tài)序列給軌跡中的項(xiàng)目集合分配可能狀態(tài)簽名;選擇一個(gè)可能狀態(tài)簽名作為第一狀態(tài)簽名;將第一狀態(tài)簽名與至少一個(gè)后續(xù)的可能狀態(tài)簽名進(jìn)行比較;和如果所述的至少一個(gè)后續(xù)的可能狀態(tài)簽名與第一狀態(tài)簽名之間存在至少預(yù)定量的差別,則把該后續(xù)的可能狀態(tài)簽名識(shí)別為第二狀態(tài)簽名。
17.如權(quán)利要求16所述的制造物品,其中,機(jī)器可讀指令使機(jī)器通過(guò)以下步驟給軌跡中的項(xiàng)目集合分配可能狀態(tài)簽名由軌跡中的第一項(xiàng)目集合構(gòu)造第一可能狀態(tài)簽名;和由軌跡中的第二項(xiàng)目集合構(gòu)造第二可能狀態(tài)簽名,第一項(xiàng)目集合與第二項(xiàng)目集合部分地重疊。
18.如權(quán)利要求17所述的制造物品,其中,機(jī)器可讀指令使機(jī)器通過(guò)以下步驟由軌跡中的第一項(xiàng)目集合構(gòu)造第一可能狀態(tài)簽名對(duì)第一集合的成員進(jìn)行加權(quán),使后面的成員比前面的成員具有更大的權(quán)值;和將加權(quán)后的成員映射為位向量簽名。
19.如權(quán)利要求16所述的制造物品,其中,所述的至少一個(gè)后續(xù)的可能狀態(tài)簽名包括第二狀態(tài)簽名以及第一和第二簽名之間插入的至少一個(gè)可能簽名,并且在識(shí)別第一和第二簽名后,忽略該至少一個(gè)插入的可能簽名。
20.如權(quán)利要求14所述的制造物品,其中,機(jī)器可讀指令使機(jī)器通過(guò)以下步驟確定與序列中識(shí)別的程序狀態(tài)相關(guān)的熵值確定從第一程序狀態(tài)轉(zhuǎn)換至多個(gè)程序狀態(tài)的概率;和將概率轉(zhuǎn)換為第一程序狀態(tài)的熵值。
21.如權(quán)利要求20所述的制造物品,其中,所述的概率包括移動(dòng)均值和指數(shù)移動(dòng)均值中的至少一種。
22.如權(quán)利要求20所述的制造物品,其中,機(jī)器可讀指令使機(jī)器通過(guò)計(jì)算從第一程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率(a)和從第一程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率的對(duì)數(shù)(b)的乘積(1)以及從第一程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率(a)和從第一程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率的對(duì)數(shù)(b)的乘積(2)的和值而將概率轉(zhuǎn)換為第一程序狀態(tài)的熵值。
23.如權(quán)利要求22所述的制造物品,其中,機(jī)器可讀指令使機(jī)器將所述的和值乘以一個(gè)常數(shù),從而將概率轉(zhuǎn)換為第一程序狀態(tài)的熵值。
24.如權(quán)利要求14所述的制造物品,其中,機(jī)器可讀指令使機(jī)器把熵值中的第一個(gè)尖峰識(shí)別為宏觀事務(wù)的結(jié)束,從而根據(jù)熵值識(shí)別宏觀事務(wù)。
25.如權(quán)利要求14所述的制造物品,其中,機(jī)器可讀指令使機(jī)器根據(jù)各自的首次發(fā)現(xiàn)時(shí)間來(lái)索引各個(gè)程序狀態(tài)。
26.如權(quán)利要求14所述的制造物品,其中,機(jī)器可讀指令還使機(jī)器預(yù)測(cè)當(dāng)前程序狀態(tài)預(yù)期會(huì)轉(zhuǎn)換到的至少一個(gè)后續(xù)的可能程序狀態(tài)。
27.一種識(shí)別程序狀態(tài)的設(shè)備,包括軌跡采樣器,構(gòu)造程序的軌跡;狀態(tài)識(shí)別器,從軌跡中識(shí)別程序狀態(tài)序列;和預(yù)測(cè)器,確定與狀態(tài)識(shí)別器識(shí)別的程序狀態(tài)相關(guān)的熵值。
28.如權(quán)利要求27所述的設(shè)備,其中,預(yù)測(cè)器根據(jù)熵值識(shí)別宏觀事務(wù)。
29.如權(quán)利要求27所述的設(shè)備,其中,所述的軌跡包括程序計(jì)數(shù)器軌跡、指令指針軌跡、基本塊軌跡和內(nèi)存地址軌跡中的至少一種軌跡。
30.如權(quán)利要求27所述的設(shè)備,其中,狀態(tài)識(shí)別器進(jìn)一步包括簽名構(gòu)造裝置,構(gòu)造軌跡中的項(xiàng)目集合的可能狀態(tài)簽名;狀態(tài)辨別器,根據(jù)可能狀態(tài)簽名識(shí)別程序狀態(tài);和存儲(chǔ)器,存儲(chǔ)狀態(tài)辨別器識(shí)別的程序狀態(tài)的狀態(tài)簽名。
31.如權(quán)利要求30所述的設(shè)備,其中,簽名構(gòu)造裝置通過(guò)將軌跡中的第一項(xiàng)目集合映射為第一位向量簽名來(lái)構(gòu)造第一可能狀態(tài)簽名。
32.如權(quán)利要求31所述的設(shè)備,其中,簽名構(gòu)造裝置將軌跡第二項(xiàng)目集合映射為第二位向量簽名,從而由軌跡中的第二項(xiàng)目集合構(gòu)造第二可能狀態(tài)簽名
33.如權(quán)利要求32所述的設(shè)備,其中,第一項(xiàng)目集合與第二項(xiàng)目集合部分地重疊。
34.如權(quán)利要求31所述的設(shè)備,進(jìn)一步包括權(quán)值分配機(jī)構(gòu),在將軌跡第一項(xiàng)目集合映射為第一位向量簽名時(shí),對(duì)第一集合的成員進(jìn)行加權(quán),使后面的成員比前面的成員具有更大的權(quán)值。
35.如權(quán)利要求30所述的設(shè)備,其中,狀態(tài)辨別器選擇一個(gè)可能狀態(tài)簽名作為第一狀態(tài)簽名;將第一狀態(tài)簽名與至少一個(gè)后續(xù)的可能狀態(tài)簽名進(jìn)行比較;如果所述至少一個(gè)后續(xù)的可能狀態(tài)簽名與第一狀態(tài)簽名之間存在至少預(yù)定量的差別,則把該后續(xù)的可能狀態(tài)簽名識(shí)別為第二狀態(tài)簽名,從而識(shí)別程序狀態(tài)。
36.如權(quán)利要求35所述的設(shè)備,其中,所述的至少一個(gè)后續(xù)的可能狀態(tài)簽名包括第二狀態(tài)簽名以及第一和第二簽名之間插入的至少一個(gè)可能簽名,并且在識(shí)別第一和第二簽名后,拋棄該至少一個(gè)插入的可能簽名。
37.如權(quán)利要求30所述的設(shè)備,其中,所述的存儲(chǔ)器存儲(chǔ)數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括以下的至少一個(gè)第一程序狀態(tài)的簽名;第一程序狀態(tài)的年齡;第一程序狀態(tài)的使用頻率;第一程序狀態(tài)的熵值;和從第一程序狀態(tài)轉(zhuǎn)換至一組程序狀態(tài)的一組概率。
38.如權(quán)利要求27所述的設(shè)備,其中,預(yù)測(cè)器進(jìn)一步包括狀態(tài)轉(zhuǎn)換監(jiān)視器,計(jì)算從第一程序狀態(tài)轉(zhuǎn)換至多種程序狀態(tài)的概率;和熵值計(jì)算器,將所述的概率轉(zhuǎn)換為第一程序狀態(tài)的熵值。
39.如權(quán)利要求38所述的設(shè)備,其中,狀態(tài)轉(zhuǎn)換監(jiān)視器以指數(shù)移動(dòng)均值計(jì)算所述的概率。
40.如權(quán)利要求39所述的設(shè)備,其中,熵值計(jì)算器通過(guò)計(jì)算從第一程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率(a)和從第一程序狀態(tài)轉(zhuǎn)換為第二程序狀態(tài)的概率的對(duì)數(shù)(b)的乘積(1)和從第一程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率(a)和從第一程序狀態(tài)轉(zhuǎn)換為第三程序狀態(tài)的概率的對(duì)數(shù)(b)的乘積(2)的和值,從而將概率轉(zhuǎn)換為第一程序狀態(tài)的熵值。
41.如權(quán)利要求40所述的設(shè)備,其中,熵值計(jì)算器將所述的和值乘以一個(gè)常數(shù),從而將概率轉(zhuǎn)換為第一程序狀態(tài)的熵值。
42.如權(quán)利要求27所述的設(shè)備,其中,預(yù)測(cè)器進(jìn)一步包括事件預(yù)測(cè)器,以根據(jù)所述的熵值識(shí)別宏觀事務(wù)。
43.如權(quán)利要求42所述的設(shè)備,其中,事件預(yù)測(cè)器把熵值中的第一個(gè)尖峰識(shí)別為宏觀事務(wù)的結(jié)束。
44.如權(quán)利要求27所述的設(shè)備,其中,狀態(tài)識(shí)別器和熵值計(jì)算器中至少一個(gè)根據(jù)各自的首次發(fā)現(xiàn)時(shí)間來(lái)索引各個(gè)程序狀態(tài)。
45.如權(quán)利要求27所述的設(shè)備,其中,預(yù)測(cè)器進(jìn)一步包括預(yù)測(cè)至少一個(gè)后續(xù)的可能程序狀態(tài)的事件預(yù)測(cè)器。
46.一種預(yù)測(cè)所執(zhí)行程序中的后續(xù)狀態(tài)的方法,包括構(gòu)造程序的軌跡;通過(guò)比較相互重疊的至少部分地表示與所述軌跡相關(guān)的地址的數(shù)據(jù)集,識(shí)別程序狀態(tài)序列;構(gòu)造程序狀態(tài)序列中在各對(duì)程序狀態(tài)之間轉(zhuǎn)換的概率集;識(shí)別程序的當(dāng)前程序狀態(tài);和根據(jù)當(dāng)前程序狀態(tài)和至少一個(gè)所述的概率,預(yù)測(cè)后續(xù)的程序狀態(tài)。
47.如權(quán)利要求46所述的方法,其中,識(shí)別程序狀態(tài)序列包括給至少部分地表示所述地址的數(shù)據(jù)集分配可能狀態(tài)簽名;選擇一個(gè)可能狀態(tài)簽名作為第一狀態(tài)簽名;將第一狀態(tài)簽名與至少一個(gè)后續(xù)的可能狀態(tài)簽名進(jìn)行比較;和如果所述至少一個(gè)后續(xù)的可能狀態(tài)簽名與第一狀態(tài)簽名之間存在至少預(yù)定量的差別,則把后續(xù)的可能狀態(tài)簽名識(shí)別為第二狀態(tài)簽名。
48.如權(quán)利要求46所述的方法,其中,所述的地址包括指令地址和內(nèi)存地址中至少一種。
49.一種預(yù)測(cè)程序的后續(xù)程序狀態(tài)的設(shè)備,包括軌跡采樣器,構(gòu)造程序的軌跡;狀態(tài)識(shí)別器,通過(guò)比較相互重疊的至少部分地表示與所述軌跡相關(guān)的地址的數(shù)據(jù)集,識(shí)別程序狀態(tài)序列;狀態(tài)轉(zhuǎn)換監(jiān)視器,計(jì)算在各個(gè)程序狀態(tài)之間轉(zhuǎn)換的概率;和預(yù)測(cè)器,根據(jù)當(dāng)前狀態(tài)和至少一個(gè)所述的概率預(yù)測(cè)至少一個(gè)后續(xù)的可能程序狀態(tài)。
50.如權(quán)利要求49所述的設(shè)備,其中,狀態(tài)識(shí)別器進(jìn)一步包括簽名構(gòu)造裝置,構(gòu)造至少部分地表示所述地址的數(shù)據(jù)集的可能狀態(tài)簽名;狀態(tài)辨別器,根據(jù)可能狀態(tài)簽名識(shí)別程序狀態(tài);和存儲(chǔ)器,存儲(chǔ)狀態(tài)辨別器識(shí)別的程序狀態(tài)的狀態(tài)簽名。
51.如權(quán)利要求50所述的設(shè)備,其中,簽名構(gòu)造裝置通過(guò)將所述軌跡項(xiàng)目至少部分地表示所述地址的數(shù)據(jù)集中的第一數(shù)據(jù)集映射為第一位向量簽名,從而構(gòu)造第一可能狀態(tài)簽名。
52.如權(quán)利要求49所述的設(shè)備,其中,所述的地址包括指令地址和內(nèi)存地址中至少一種。
53.一種識(shí)別程序狀態(tài)的系統(tǒng),包括軌跡采樣器,構(gòu)造程序的軌跡;狀態(tài)識(shí)別器,從軌跡中識(shí)別程序狀態(tài)序列;預(yù)測(cè)器,確定與狀態(tài)識(shí)別器識(shí)別的程序狀態(tài)相關(guān)的熵值;和靜態(tài)隨機(jī)存取存儲(chǔ)器,存儲(chǔ)所述的熵值。
54.如權(quán)利要求53所述的設(shè)備,其中,預(yù)測(cè)器根據(jù)熵值識(shí)別宏觀事務(wù)。
全文摘要
公布了一種用于檢測(cè)正在執(zhí)行的程序中的模式的方法和設(shè)備。所公布的示例性方法構(gòu)造程序的軌跡;通過(guò)比較相互重疊的至少部分地表示與所述軌跡相關(guān)的地址的數(shù)據(jù)集,識(shí)別程序狀態(tài)序列;構(gòu)造程序狀態(tài)序列中在各對(duì)程序狀態(tài)之間轉(zhuǎn)換的概率集;識(shí)別程序的當(dāng)前程序狀態(tài);和根據(jù)當(dāng)前程序狀態(tài)和至少一個(gè)所述的概率,預(yù)測(cè)后續(xù)的程序狀態(tài)。
文檔編號(hào)G06F12/12GK1542621SQ0315792
公開(kāi)日2004年11月3日 申請(qǐng)日期2003年8月29日 優(yōu)先權(quán)日2003年4月28日
發(fā)明者孫鳴秋 申請(qǐng)人:英特爾公司