專利名稱:多線程處理器中性能監(jiān)視的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般來(lái)說(shuō)涉及數(shù)據(jù)處理,特別地說(shuō)涉及一個(gè)數(shù)據(jù)處理系統(tǒng)中的性能監(jiān)視。更具體地說(shuō)本發(fā)明涉及一個(gè)多線程處理器內(nèi)部每個(gè)線程的性能監(jiān)視。
為了從處理器中抽取最佳性能,硬件和軟件工程師檢測(cè)和分析處理器的動(dòng)態(tài)行為。過(guò)去,在這種處理器分析中有用的大多數(shù)處理器狀態(tài)可由外部?jī)x器檢測(cè)。例如,在低集成水平下,大多數(shù)機(jī)器的狀態(tài)、總線的事務(wù)處理和其它有用的信號(hào)可以在模塊互連設(shè)備、邊緣連接器和芯片背板上檢測(cè)。從而數(shù)據(jù)可以容易地采集和為處理器性能分析應(yīng)用施行后處理。
然而,隨著集成度的增加,從而使得處理器狀態(tài)對(duì)外部?jī)x器不可檢測(cè),因此需要將性能監(jiān)視電路集成到處理器內(nèi)部,以便捕獲優(yōu)化硬件和軟件需要的經(jīng)驗(yàn)數(shù)據(jù)。板上性能監(jiān)視器通常包括一個(gè)或者多個(gè)計(jì)數(shù)器,使得每一個(gè)計(jì)數(shù)器計(jì)數(shù)指示處理器性能的一個(gè)選擇事件的發(fā)生,諸如處理器周期、執(zhí)行的指令或者超高速緩沖存儲(chǔ)器失中。雖然當(dāng)前可用的性能監(jiān)視器可以提供合適的數(shù)據(jù)來(lái)分析常規(guī)處理器的動(dòng)態(tài)行為,然而使用單一計(jì)數(shù)器記錄一個(gè)選擇事件所有發(fā)生的一個(gè)常規(guī)性能監(jiān)視器不能為給多重并發(fā)線程提供硬件支持的多線程處理器提供合適的性能數(shù)據(jù)。例如,一個(gè)常規(guī)的性能監(jiān)視器不能提供指示超高速緩沖存儲(chǔ)器可歸屬于每一線程的失中數(shù)目的信息或者由每一線程在一個(gè)有意義數(shù)目的周期中使用的處理器周期數(shù)。
因此,希望提供包括一個(gè)硬件性能監(jiān)視器的多線程處理器,它能獨(dú)立地監(jiān)視該處理器內(nèi)多個(gè)線程中的每一個(gè)線程。
本發(fā)明的一個(gè)目的是提供一種改進(jìn)的數(shù)據(jù)處理方法和系統(tǒng)。
本發(fā)明的另一個(gè)目的是提供一種改進(jìn)的用于數(shù)據(jù)處理系統(tǒng)中的性能監(jiān)視的方法和系統(tǒng)。
本發(fā)明的再一個(gè)目的是提供一種在多線程處理器中對(duì)每個(gè)線程性能監(jiān)視的方法和系統(tǒng)。
下面將會(huì)敘述上述目的的實(shí)現(xiàn)。提供一種在多線程處理器內(nèi)進(jìn)行性能監(jiān)視的方法和系統(tǒng)。該系統(tǒng)包括一個(gè)響應(yīng)第一和第二線程內(nèi)的指令的處理器和一個(gè)性能監(jiān)視器,該監(jiān)視器分開(kāi)記錄由處理器響應(yīng)第一線程產(chǎn)生的第一事件和由處理器響應(yīng)第二線程產(chǎn)生的第二事件。在一個(gè)實(shí)施例中,處理器具有第一和第二操作方式。在該實(shí)施例中,當(dāng)性能監(jiān)視器工作在第一方式時(shí),性能監(jiān)視器內(nèi)的第一計(jì)數(shù)器響應(yīng)第一事件的每一次發(fā)生遞增,性能監(jiān)視器內(nèi)的第二計(jì)數(shù)器響應(yīng)第二事件的每一次發(fā)生遞增。另外,當(dāng)性能監(jiān)視器工作在第二方式時(shí),第一計(jì)數(shù)器響應(yīng)第一事件的每一次發(fā)生和響應(yīng)第二事件的每一次發(fā)生遞增。
本發(fā)明的上述目的以及其它目的、特征和優(yōu)點(diǎn)在下面詳細(xì)的說(shuō)明中將十分明顯。
相信作為本發(fā)明特點(diǎn)的新穎性特征在所附權(quán)利要求中說(shuō)明。然而,參考下述對(duì)作為例子的一個(gè)實(shí)施例的詳細(xì)說(shuō)明并參考附圖可以最好地理解本發(fā)明自身以及一個(gè)優(yōu)選的使用方式、另外的目的和優(yōu)點(diǎn)。
圖1說(shuō)明包括本發(fā)明的性能監(jiān)視器的一個(gè)數(shù)據(jù)處理系統(tǒng)的示范實(shí)施例;圖2是圖1所述性能監(jiān)視器以總體方式運(yùn)行時(shí)的表示;圖3是圖1所述性能監(jiān)視器以多線程方式運(yùn)行時(shí)的表示;圖4是一個(gè)邏輯流圖,說(shuō)明當(dāng)性能監(jiān)視器工作在全局和多線程方式的每一情況下事件是如何引向該性能監(jiān)視器的;圖5是一個(gè)邏輯流圖,說(shuō)明當(dāng)性能監(jiān)視器工作在全局和多線程方式的每一情況下性能監(jiān)視器中斷是如何產(chǎn)生的;圖6是一個(gè)邏輯流圖,說(shuō)明當(dāng)性能監(jiān)視器工作在全局和多線程方式的每一情況下該性能監(jiān)視器的計(jì)數(shù)器是如何存取的。
現(xiàn)在參考附圖,特別是參考圖1,其中說(shuō)明了在所附權(quán)利要求范圍之內(nèi)的本發(fā)明的數(shù)據(jù)處理系統(tǒng)的一個(gè)實(shí)施例的一個(gè)方框圖。在所說(shuō)明的示意實(shí)施例中,處理器10由一個(gè)單一的超大規(guī)模集成電路微處理器組成,它包括數(shù)據(jù)處理電路和一個(gè)板上性能監(jiān)視器50。于是,如下面將進(jìn)一步說(shuō)明,處理器10的各種執(zhí)行單元、寄存器、緩沖器、存儲(chǔ)器和其它功能單元都由集成電路構(gòu)成。處理器10優(yōu)選由國(guó)際商業(yè)機(jī)器公司(IBM)生產(chǎn)的精簡(jiǎn)指令集計(jì)算(RISC)處理器系列中的一種組成,但是熟悉本技術(shù)領(lǐng)域的人理解,也可以使用其它適合的處理器來(lái)實(shí)現(xiàn)本發(fā)明。
如圖1所示,處理器10經(jīng)由總線接口單元(BIU)12連接到系統(tǒng)總線11,總線接口單元12通過(guò)參與總線仲裁控制在處理器10和連接到系統(tǒng)總線11上的其它設(shè)備例如主存儲(chǔ)器52和非易失海量存儲(chǔ)器54之間的信息傳輸。圖1所示數(shù)據(jù)處理系統(tǒng)優(yōu)選包括連接到系統(tǒng)總線11上的其它未示出設(shè)備,它們對(duì)理解下述說(shuō)明并非必需,因而為簡(jiǎn)單起見(jiàn)而省略。
BIU12連接到存儲(chǔ)器管理單元14(MMU),它管理由處理器10對(duì)存儲(chǔ)在處理器10的存儲(chǔ)器層次結(jié)構(gòu)的各個(gè)部件中的數(shù)據(jù)和指令的存取。在圖示實(shí)施例中,處理器10的存儲(chǔ)器層次結(jié)構(gòu)不僅包括非易失海量存儲(chǔ)器54和主存儲(chǔ)器52,而且包括一個(gè)通過(guò)L2超高速緩沖存儲(chǔ)器接口58存取的一個(gè)成一體的二級(jí)(L2)超高速緩沖存儲(chǔ)器56,一個(gè)一級(jí)(L1)指令超高速緩沖存儲(chǔ)器14和一個(gè)L1數(shù)據(jù)超高速緩沖存儲(chǔ)器16。于是,MMU14的管理功能包括例如使用變換旁視緩沖器(Translation Lookaside Buffer)(TLB)13執(zhí)行邏輯到實(shí)際地址的變換,使用存儲(chǔ)控制(SC)電路23存取L1數(shù)據(jù)超高速緩沖存儲(chǔ)器16和L2超高速緩沖存儲(chǔ)器56內(nèi)的數(shù)據(jù)以及在行緩沖器(LB)15和BIU12之間傳輸數(shù)據(jù)行。熟悉本技術(shù)領(lǐng)域的人理解,在漸進(jìn)高速存儲(chǔ)器之內(nèi)以這種方式升級(jí)數(shù)據(jù)和指令能使處理器10實(shí)現(xiàn)對(duì)存儲(chǔ)在存儲(chǔ)器層次結(jié)構(gòu)較高級(jí)之內(nèi)的數(shù)據(jù)和指令相對(duì)快的存取,從而改善數(shù)據(jù)處理系統(tǒng)的總性能。
L1指令超高速緩沖存儲(chǔ)器14又連接到順序緩沖器17、線程切換緩沖器18、分支緩沖器19和分支單元20,分支單元20與調(diào)度單元21一起形成處理器10的指令單元(IU)邏輯部分25。IU25控制處理器10的浮點(diǎn)(FP)邏輯部分26和定點(diǎn)(FX)邏輯部分30之內(nèi)的多個(gè)可能同時(shí)出現(xiàn)的硬件線程之一的執(zhí)行。在本公開(kāi)說(shuō)明書中,使用術(shù)語(yǔ)“硬件線程”或簡(jiǎn)稱“線程”來(lái)說(shuō)明一組指令(它們與其它并發(fā)線程可以屬于或可以不屬于同一程序),它們的狀態(tài)可以同時(shí)維持在處理器硬件中,同時(shí),一個(gè)或多個(gè)其它的硬件線程及其執(zhí)行由處理器硬件控制。于是,對(duì)于熟悉本技術(shù)領(lǐng)域的人來(lái)說(shuō)十分明顯,由處理器10支持的細(xì)粒多線程與由許多現(xiàn)有技術(shù)的操作系統(tǒng)支持的軟件管理粗粒多任務(wù)不同。另外,應(yīng)該理解,雖然后面將要說(shuō)明處理器10只支持兩個(gè)并發(fā)線程(亦即一個(gè)活動(dòng)的,一個(gè)不活動(dòng)的),但是本發(fā)明同樣可應(yīng)用于支持另外活動(dòng)和不活動(dòng)線程的多線程處理器。
工作時(shí),順序緩沖器17在活動(dòng)線程內(nèi)從L1指令超高速緩沖存儲(chǔ)器14取指令并臨時(shí)緩沖存儲(chǔ)該指令。順序緩沖器17把取來(lái)的指令按接收次序傳給調(diào)度單元21。調(diào)度單元21部分地解碼每一條指令,然后傳輸分支指令到分支處理單元(BPU)20,傳輸順序指令到FP26和FX30中合適的一個(gè)去執(zhí)行。響應(yīng)分支指令的接收,如果取該分支的話分支單元20判定繼續(xù)執(zhí)行的目標(biāo)地址,并將該目標(biāo)地址供給L1指令超高速緩沖存儲(chǔ)器14。當(dāng)仍在順序執(zhí)行路徑上向順序緩沖器17供給指令時(shí),L1指令超高速緩沖存儲(chǔ)器14響應(yīng)目標(biāo)地址,在目標(biāo)執(zhí)行路徑中用指令加載分支緩沖器19。其結(jié)果,如果隨后取該分支,則分支緩沖器19能夠在目標(biāo)執(zhí)行路徑內(nèi)供給調(diào)度單元21指令而不會(huì)出現(xiàn)任何延遲。之后,順序緩沖器17開(kāi)始在新執(zhí)行路徑內(nèi)取指令。
IU25以相似方式執(zhí)行線程切換。線程切換緩沖器18在不活動(dòng)線程內(nèi)取下一要執(zhí)行的指令并緩沖存儲(chǔ)。響應(yīng)一個(gè)所選擇的事件的出現(xiàn),例如,對(duì)活動(dòng)線程的L2超高速緩沖存儲(chǔ)器未中或TLB未中,不活動(dòng)線程被指定為活動(dòng)線程,同時(shí)在線程切換緩沖器18中的指令傳輸?shù)椒种Ь彌_器19中。然后調(diào)度單元21開(kāi)始從新激活的線程中分發(fā)指令到BPU20、FP26和FX30。同時(shí)順序緩沖器17開(kāi)始在新激活的線程中取指令,而線程切換緩沖器18開(kāi)始在沒(méi)激活的線程內(nèi)取指令。
現(xiàn)在參考FP26和FX30,除了分支單元20外,處理器10的執(zhí)行電路包括雙精度浮點(diǎn)單元(FPU)27、加載存儲(chǔ)單元(LSU)32、簡(jiǎn)單和復(fù)雜整數(shù)單元34和簡(jiǎn)單整數(shù)單元36。執(zhí)行單元27、32、34和36中的每一個(gè)都能夠在每一處理器周期內(nèi)執(zhí)行一個(gè)或多個(gè)順序指令相關(guān)類型的一個(gè)或多個(gè)指令。例如,簡(jiǎn)單整數(shù)單元36執(zhí)行定點(diǎn)數(shù)學(xué)運(yùn)算(例如加或減)和使用從特定整數(shù)寄存器38加載的源操作數(shù)的比較運(yùn)算。隨著一個(gè)定點(diǎn)指令的執(zhí)行,簡(jiǎn)單整數(shù)單元36把該指令的結(jié)果數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)特定整數(shù)寄存器38中。相似地,雙精度FPU27執(zhí)行雙精度浮點(diǎn)算術(shù)和邏輯運(yùn)算,諸如對(duì)從浮點(diǎn)寄存器(FPR)28加載的源操作數(shù)執(zhí)行浮點(diǎn)乘和除,并將結(jié)果數(shù)據(jù)存儲(chǔ)在特定的FPR28中。處理器10的每一個(gè)順序指令執(zhí)行單元使用流水線操作以進(jìn)一步改善處理器10的超標(biāo)量結(jié)構(gòu)的性能。如上所述,每一個(gè)FPR28和整數(shù)寄存器38都有多個(gè)雙寄存器集或“路”,它們中的每一個(gè)都與由處理器10支持的多個(gè)并發(fā)線程中的一個(gè)相關(guān)。
根據(jù)本發(fā)明,處理器10包括一個(gè)性能監(jiān)視器50,支持對(duì)由處理器10支持的多個(gè)并發(fā)線程的每一個(gè)獨(dú)立的性能監(jiān)視,有關(guān)性能監(jiān)視器將在后面詳述。如上所述,性能監(jiān)視器50接收由IU25、FP26、FX30、SC23、BIU12和L2超高速緩沖存儲(chǔ)器接口58的操作產(chǎn)生的事件發(fā)生作為輸入。在可能由性能監(jiān)視器50所接收的大量事件發(fā)生之中所選擇的事件發(fā)生被記錄在性能監(jiān)視器50之內(nèi)的軟件可讀和可寫性能監(jiān)視器計(jì)數(shù)器(PMC)之內(nèi)。響應(yīng)指定一個(gè)PMC“地址”的結(jié)構(gòu)定義的指令的執(zhí)行,性能監(jiān)視器50輸出該指定的PMC的值,例如通過(guò)存儲(chǔ)該指定的PMC的值在所選擇的一個(gè)整數(shù)寄存器38之內(nèi)。性能監(jiān)視器50還具有一個(gè)性能監(jiān)視中斷輸出,它響應(yīng)一個(gè)PMC的溢出而被確定。
根據(jù)本發(fā)明的一個(gè)重要方面,性能監(jiān)視器50具有兩種工作方式(1)全局方式,其中同一事件的所有發(fā)生被記錄在一起而不管這些發(fā)生是否都是由響應(yīng)同一線程的處理而產(chǎn)生;(2)多線程方式,其中分別記錄與每一線程相關(guān)的事件的發(fā)生。
現(xiàn)在參考圖2,其中說(shuō)明性能監(jiān)視器50工作在全局方式時(shí)的一個(gè)概念圖。如上所述,在全局方式下,由處理器10的所有邏輯部分產(chǎn)生的事件發(fā)生輸入到多路轉(zhuǎn)換器82。然后多路轉(zhuǎn)換器82響應(yīng)選擇輸入86為這些事件發(fā)生選擇路由到在PMC84之內(nèi)的特定的計(jì)數(shù)器,輸入86是響應(yīng)在軟件可訪問(wèn)控制寄存器80之內(nèi)的位字段的設(shè)定而產(chǎn)生的??刂萍拇嫫?0之內(nèi)的位字段不僅指定事件的發(fā)生,而且如果有的話,每一個(gè)PMC84記錄指定性能監(jiān)視器50的工作方式(亦即是全局方式還是多線程方式),和什么時(shí)候?yàn)槊恳籔MC84啟動(dòng)計(jì)數(shù)和禁止計(jì)數(shù)。響應(yīng)一個(gè)事件的接收,遞增一個(gè)所啟動(dòng)的PMC。如圖2所示,如果任何PMC84的位0置為1,那么由OR門88產(chǎn)生一個(gè)性能監(jiān)視器中斷。
現(xiàn)在參考圖3,其中說(shuō)明性能監(jiān)視器50工作在多線程方式時(shí)的一個(gè)概念圖。在說(shuō)明的示范實(shí)施例中,處理器10支持最多兩個(gè)并發(fā)線程,它們每一個(gè)分配給PMC84的一半。于是,標(biāo)以參考號(hào)碼84a的PMC1-PMC4被分配給線程0,而標(biāo)以參考號(hào)碼84b的PMC5-PMC8被分配給線程1。如圖所示,事件發(fā)生由多路轉(zhuǎn)換器82a響應(yīng)選擇輸入86a選擇路由到PMC1-PMC4,事件發(fā)生由多路轉(zhuǎn)換器82b響應(yīng)選擇輸入86b選擇路由到PMC5-PMC8。選擇輸入86a和86b以上述參考圖2所述的方式響應(yīng)控制寄存器80內(nèi)的位字段的值產(chǎn)生。
與工作在全局方式下的性能監(jiān)視器50的操作相比,當(dāng)性能監(jiān)視器50工作在多線程方式時(shí),事件發(fā)生并非全部相同處理。反之,一個(gè)事件發(fā)生以依賴于該事件發(fā)生所屬事件組的方式處理。第一組事件包括僅與活動(dòng)線程相關(guān)的事件。這些事件的發(fā)生可以由IU25、FX30和FP26產(chǎn)生,并包括下列內(nèi)容(1)指令完成(2)處理器周期(3)存儲(chǔ)等待周期(4)分支數(shù)據(jù)(5)數(shù)據(jù)相關(guān)(6)未校準(zhǔn)存取(7)L1指令超高速緩沖存儲(chǔ)器失中計(jì)數(shù)(8)浮點(diǎn)運(yùn)算(9)線程切換計(jì)數(shù)第二組事件可以或者與活動(dòng)線程相關(guān),或者與不活動(dòng)線程相關(guān)。這些事件的發(fā)生可以由SC23產(chǎn)生,并包括下列內(nèi)容(1)L1數(shù)據(jù)超高速緩沖存儲(chǔ)器失中事件,諸如總計(jì)數(shù)、等待時(shí)間、失中類型等(2)變換失中事件(例如TLB失中事件)(3)L2超高速緩沖存儲(chǔ)器失中事件第三(和最后)組事件不與一個(gè)特定線程相關(guān)。這些事件的發(fā)生可以由BIU12、LB15或者L2超高速緩沖存儲(chǔ)器接口58產(chǎn)生并包括(1)L2超高速緩沖存儲(chǔ)器行轉(zhuǎn)換(2)L2超高速緩沖存儲(chǔ)器舍棄(castouts)(3)L2超高速緩沖存儲(chǔ)器窺探計(jì)數(shù)(4)行緩沖器使用(5)系統(tǒng)總線使用(6)系統(tǒng)總線再試如圖3所示,第一事件組內(nèi)的事件發(fā)生由AND門100和102作為輸入接收。第一事件組內(nèi)的事件發(fā)生只在線程0活動(dòng)時(shí)才輸入到多路轉(zhuǎn)換器82a,只在線程1活動(dòng)時(shí)才輸入到多路轉(zhuǎn)換器82b。與屬于第一事件組的事件發(fā)生相反,第二事件組內(nèi)的事件,如上所述,它們由在說(shuō)明實(shí)施例中的MMU14之內(nèi)的SC23產(chǎn)生,傳遞給多路轉(zhuǎn)換器82a和82b中適合的一個(gè)用于可能的選擇,而不管與該事件發(fā)生關(guān)聯(lián)的線程是活動(dòng)線程還是不活動(dòng)線程。屬于第三事件組的事件發(fā)生既傳遞給多路轉(zhuǎn)換器82a也傳遞給多路轉(zhuǎn)換器82b用于可能的選擇。
現(xiàn)在參考圖4,其中示出總結(jié)性能監(jiān)視器50為全局和多線程操作方式的每一種處理事件發(fā)生的方法的邏輯流圖。如圖所示,處理過(guò)程從框170開(kāi)始,然后前進(jìn)到框172,在這里確定性能監(jiān)視器50是否運(yùn)行在多線程方式。如果性能監(jiān)視器50不運(yùn)行在多線程方式而運(yùn)行在全局方式,那么處理前進(jìn)到方框174,這里多路轉(zhuǎn)換器82為由選擇輸入86選擇的事件發(fā)生選擇路由到PMC84中合適的一個(gè)。如上所述,由不同線程產(chǎn)生的同一事件的發(fā)生在PMC之內(nèi)合并,使得為每一選擇的事件保持一個(gè)單一事件計(jì)數(shù)。
再次參考框172,如果性能監(jiān)視器50工作在多線程方式,那么處理前進(jìn)到框176,在這里確定一個(gè)所檢測(cè)到的事件發(fā)生是否是由IU25、FX30或者FP26產(chǎn)生(亦即事件發(fā)生是否屬于第一事件組)。如果是,則判定線程0是否是活動(dòng)線程,其由框178表示。如果線程0是活動(dòng)線程,那么處理前進(jìn)到方框180,這里事件發(fā)生如果被選擇的話被傳輸?shù)絇MC1-PMC4中合適的一個(gè)。然而,如果線程1是活動(dòng)的線程,那么處理從框178前進(jìn)到方框182,方框182表示事件發(fā)生如果被選擇的話被傳輸?shù)絇MC5-PMC8中合適的一個(gè)。
返回框176,如果一個(gè)被檢測(cè)到的事件發(fā)生不是由IU25、FX30或者FP26產(chǎn)生的話,那么處理前進(jìn)到框184???84判定該事件發(fā)生是否由SC23產(chǎn)生。如果是,則處理前進(jìn)到框186,在這里判定該事件發(fā)生是響應(yīng)處理線程0還是響應(yīng)處理線程1而產(chǎn)生。如果該事件發(fā)生是響應(yīng)處理線程0而產(chǎn)生,那么處理前進(jìn)到方框188,方框188表示如果該事件發(fā)生被選擇就發(fā)送該事件發(fā)生到PMC1-PMC4中的一個(gè)。另外,如果在框186判定該事件發(fā)生是響應(yīng)處理線程1而產(chǎn)生,那么處理前進(jìn)到方框190,方框190表示如果該事件發(fā)生被選擇就發(fā)送該事件發(fā)生到PMC5-PMC8中的一個(gè)。
再次參考框184,如果判定該事件發(fā)生不是由SC23產(chǎn)生,那么處理前進(jìn)到方框192,它判定該事件發(fā)生是由BIU12、LB15或者L2超高速緩沖存儲(chǔ)器接口58產(chǎn)生。響應(yīng)這一判定,如果該事件發(fā)生被選擇的話,則其被送到PMC1-PMC8中合適的一個(gè)。
現(xiàn)在參考圖5,其中說(shuō)明總結(jié)性能監(jiān)視器50的中斷行為的一個(gè)邏輯流圖。如圖所示,該處理從框130開(kāi)始,之后前進(jìn)到框132,在這里判定性能監(jiān)視器50是否工作在多線程方式。框132所示判定例如可以通過(guò)檢查控制寄存器80之內(nèi)的一個(gè)預(yù)定的位字段的值實(shí)現(xiàn)。如果性能監(jiān)視器50不是工作在多線程方式而工作在全局方式的話,則處理前進(jìn)到框134,這里判定PMC1-PMC8中某一個(gè)的位0是否具有值1。如果不是,則處理返回到框132。然而,如果PMC84中至少有一個(gè)的位0設(shè)定為1,那么如圖5方框150所示,產(chǎn)生一個(gè)性能監(jiān)視器中斷。與全局方式相反,當(dāng)性能監(jiān)視器50工作在多線程方式時(shí),只有與活動(dòng)線程相關(guān)的中斷被提交給軟件。于是,參考圖5中框136和框138,如果線程0是活動(dòng)的,那么只提供與PMC84a相關(guān)的中斷;與PMC84b相關(guān)的中斷被保存,直到線程1再次活動(dòng)。另外,如框140和150所示,如果線程1是活動(dòng)的,那么與PMC84b相關(guān)的中斷被提交給軟件,而與PMC84a相關(guān)的中斷被保存,直到線程0再次活動(dòng)。在圖3中,這種中斷行為由OR門104和108與AND門106和110實(shí)現(xiàn)。
現(xiàn)在參考圖6,其中表示總結(jié)存取性能監(jiān)視器50內(nèi)的PMC1-PMC8的方法的一個(gè)邏輯流圖。如圖所示,處理從框200響應(yīng)LSU32接收從調(diào)度單元21來(lái)的指令開(kāi)始,調(diào)度單元指定一個(gè)特定的要讀取的PMC。響應(yīng)該指令,LSU32把PMC號(hào)碼交給性能監(jiān)視器50,其如圖所示在框202判定它工作在多線程方式還是全局方式。如方框204所示,響應(yīng)性能監(jiān)視器50工作在全局方式的判定,性能監(jiān)視器50輸出指定的PMC的值到整數(shù)寄存器38中指定的一個(gè)。
再次參考框202,響應(yīng)性能監(jiān)視器50工作在多線程方式,處理前進(jìn)到框206???06判定,線程0還是線程1是活動(dòng)線程。如果線程1是活動(dòng)線程,那么被指定的PMC地址(其有效范圍是1-4)映射在PMC5-PMC8中對(duì)應(yīng)的一個(gè),如方框208說(shuō)明。另外,如果線程0是活動(dòng)線程,那么使用該指定的PMC地址訪問(wèn)PMC1-PMC4中相應(yīng)的一個(gè),如方框210所說(shuō)明。如圖3所示,這一PMC地址映射是由尋址邏輯90實(shí)現(xiàn)的。
如上所述,本發(fā)明提供一個(gè)多線程處理器,它包括一個(gè)當(dāng)工作在第一方式時(shí)能夠單獨(dú)地監(jiān)視多個(gè)并發(fā)線程的性能的性能監(jiān)視器。另外,該性能監(jiān)視器可以用軟件配置工作在第二方式,在這種方式下集中監(jiān)視由處理器產(chǎn)生的所有事件發(fā)生。雖然本發(fā)明是特別參考一個(gè)優(yōu)選實(shí)施例表示和說(shuō)明的,但是熟悉本技術(shù)領(lǐng)域的人理解,可以進(jìn)行各種形式和細(xì)節(jié)的改變而不離開(kāi)本發(fā)明的精神和范圍。
權(quán)利要求
1.一個(gè)系統(tǒng),包括一個(gè)響應(yīng)在第一線程內(nèi)的指令和第二線程內(nèi)的指令的處理器;一個(gè)性能監(jiān)視器,它單獨(dú)地記錄由所述處理器響應(yīng)所述第一線程產(chǎn)生的一個(gè)第一事件發(fā)生和由所述處理器響應(yīng)所述第二線程產(chǎn)生的一個(gè)第二事件發(fā)生。
2.權(quán)利要求1的所述系統(tǒng),其特征在于,所述處理器和所述性能監(jiān)視器都在一個(gè)單一半導(dǎo)體基片形成。
3.權(quán)利要求1的所述系統(tǒng),其特征在于,所述性能監(jiān)視器包括一個(gè)第一計(jì)數(shù)器和一個(gè)第二計(jì)數(shù)器,以及具有第一工作方式,當(dāng)所述性能監(jiān)視器工作在所述第一方式時(shí),所述第一計(jì)數(shù)器響應(yīng)所述第一事件發(fā)生遞增,所述第二計(jì)數(shù)器響應(yīng)所述第二事件發(fā)生遞增。
4.權(quán)利要求3的所述系統(tǒng),其特征在于,所述第一事件發(fā)生和所述第二事件發(fā)生是同一事件的兩次發(fā)生。
5.權(quán)利要求3所述系統(tǒng),其特征在于,所述性能監(jiān)視器具有第二工作方式,當(dāng)所述性能監(jiān)視器工作在所述第二工作方式時(shí),所述第一計(jì)數(shù)器既響應(yīng)所述第一事件發(fā)生也響應(yīng)所述第二事件發(fā)生遞增。
6.權(quán)利要求1所述系統(tǒng),其特征在于,所述處理器響應(yīng)所述第一和第二線程產(chǎn)生多個(gè)不同事件的發(fā)生,所述性能監(jiān)視器包括一個(gè)控制器,它選擇判定記錄其發(fā)生的所述多個(gè)不同事件的一個(gè)子集。
7.權(quán)利要求1所述系統(tǒng),其特征在于,所述多線程處理器一時(shí)執(zhí)行所述第一線程和所述第二線程中的一個(gè),所述處理器在產(chǎn)生所述第一事件發(fā)生和響應(yīng)所述第一線程產(chǎn)生的一個(gè)第三事件發(fā)生之間至少執(zhí)行所述第二線程內(nèi)的一條指令,所述性能監(jiān)視器把所述第一事件發(fā)生和所述第三事件發(fā)生記錄在一起。
8.權(quán)利要求1所述系統(tǒng),其特征在于,所述處理器在所述第一線程不活動(dòng)時(shí)產(chǎn)生所述第一事件發(fā)生。
9.權(quán)利要求1所述系統(tǒng),其特征在于,所述性能監(jiān)視器包括多個(gè)記錄事件發(fā)生的計(jì)數(shù)器,所述多個(gè)計(jì)數(shù)器的第一子組分配給所述第一線程,所述多個(gè)計(jì)數(shù)器的第二子組分配給所述第二線程,對(duì)于一個(gè)特定的事件,只有屬于所述第一子組的一個(gè)計(jì)數(shù)器可以響應(yīng)在所述第一線程活動(dòng)時(shí)產(chǎn)生的所述特定事件的發(fā)生遞增,只有屬于所述第二子組的一個(gè)計(jì)數(shù)器可以響應(yīng)在所述第二線程活動(dòng)時(shí)產(chǎn)生的所述特定事件的發(fā)生遞增。
10.權(quán)利要求9所述系統(tǒng),其特征在于,進(jìn)一步包括尋址邏輯,其中響應(yīng)從所述第一和第二線程之一來(lái)的一個(gè)讀請(qǐng)求,所述尋址邏輯映射所述讀請(qǐng)求到在所述第一和第二計(jì)數(shù)器子組中相應(yīng)一組中的一個(gè)特定的計(jì)數(shù)器。
11.權(quán)利要求9所述系統(tǒng),其特征在于,進(jìn)一步包括中斷產(chǎn)生電路,其中所述中斷產(chǎn)生電路僅在所述第一線程活動(dòng)時(shí)響應(yīng)所述第一子組中的一個(gè)計(jì)數(shù)器的狀態(tài)產(chǎn)生一個(gè)中斷,和僅在所述第二線程活動(dòng)時(shí)響應(yīng)所述第二子組中的一個(gè)計(jì)數(shù)器的狀態(tài)產(chǎn)生一個(gè)中斷。
12.一種在一個(gè)多線程處理器中的性能監(jiān)視方法,所述方法包括在一個(gè)多線程處理器中,處理一個(gè)第一線程和一個(gè)第二線程;在所述多線程處理器中響應(yīng)處理所述第一線程產(chǎn)生一個(gè)第一事件發(fā)生和在所述多線程處理器中響應(yīng)處理所述第二線程產(chǎn)生一個(gè)第二事件發(fā)生;分別記錄所述第一事件發(fā)生和所述第二事件發(fā)生。
13.權(quán)利要求12所述方法,其特征在于,所述多線程處理器具有一個(gè)包括第一計(jì)數(shù)器和第二計(jì)數(shù)器的性能監(jiān)視器,所述性能計(jì)數(shù)器具有第一工作方式,其中,響應(yīng)所述性能監(jiān)視器工作在所述第一方式執(zhí)行分別記錄所述第一事件發(fā)生和所述第二事件發(fā)生的所述步驟,所述記錄步驟包括步驟響應(yīng)所述第一事件發(fā)生遞增所述第一計(jì)數(shù)器和響應(yīng)所述第二事件發(fā)生遞增所述第二計(jì)數(shù)器。
14.權(quán)利要求13所述方法,其特征在于,所述第一事件發(fā)生和所述第二事件發(fā)生是同一事件的兩次發(fā)生。
15.權(quán)利要求14所述方法,其特征在于,所述性能監(jiān)視器具有第二工作方式以及所述方法進(jìn)一步包括步驟響應(yīng)所述性能監(jiān)視器工作在所述第二方式,既響應(yīng)所述第一事件發(fā)生也響應(yīng)所述第二事件發(fā)生遞增所述第一計(jì)數(shù)器。
16.權(quán)利要求12所述方法,其特征在于,所述多線程處理器響應(yīng)處理所述第一和第二線程產(chǎn)生多個(gè)不同事件的發(fā)生,所述方法進(jìn)一步包括步驟選擇判定記錄其發(fā)生的所述多個(gè)不同事件的一個(gè)子集。
17.權(quán)利要求12所述方法,其特征在于,所述多線程處理器一時(shí)執(zhí)行所述第一線程和所述第二線程中的一個(gè),所述處理器在產(chǎn)生所述第一事件發(fā)生和響應(yīng)所述第一線程產(chǎn)生的一個(gè)第三事件發(fā)生之間至少執(zhí)行所述第二線程內(nèi)的一條指令,所述方法進(jìn)一步包括把所述第一事件發(fā)生和所述第三事件發(fā)生記錄在一起的步驟。
18.權(quán)利要求12所述方法,其特征在于,產(chǎn)生所述第一事件發(fā)生的所述步驟包括當(dāng)所述第一線程不活動(dòng)時(shí)產(chǎn)生所述第一事件發(fā)生的步驟。
19.權(quán)利要求12所述方法,其特征在于,所述多線程處理器包括多個(gè)記錄事件發(fā)生的計(jì)數(shù)器,其中所述多個(gè)計(jì)數(shù)器的第一子組分配給所述第一線程,所述多個(gè)計(jì)數(shù)器的第二子組分配給所述第二線程,所述第一事件發(fā)生和所述第二事件發(fā)生是一個(gè)特定事件的兩次發(fā)生,其中分別記錄所述第一事件發(fā)生和所述第二事件發(fā)生的所述步驟包括響應(yīng)所述第一線程活動(dòng)時(shí)產(chǎn)生的所述特定事件的一個(gè)發(fā)生遞增屬于所述第一子組的一個(gè)計(jì)數(shù)器;響應(yīng)所述第二線程活動(dòng)時(shí)產(chǎn)生的所述特定事件的一個(gè)發(fā)生遞增屬于所述第二子組的一個(gè)計(jì)數(shù)器。
20.權(quán)利要求19所述方法,其特征在于,進(jìn)一步包括響應(yīng)由所述第一和第二線程之一的一個(gè)讀請(qǐng)求,映射所述讀請(qǐng)求到在所述第一和第二計(jì)數(shù)器子組中相應(yīng)一組中的一個(gè)特定的計(jì)數(shù)器。
21.權(quán)利要求19所述方法,其特征在于,進(jìn)一步包括步驟僅在所述第一線程活動(dòng)時(shí)響應(yīng)所述第一子組中的一個(gè)計(jì)數(shù)器的狀態(tài)產(chǎn)生一個(gè)中斷,和僅在所述第二線程活動(dòng)時(shí)響應(yīng)所述第二子組中的一個(gè)計(jì)數(shù)器的狀態(tài)產(chǎn)生一個(gè)中斷。
全文摘要
提供在一個(gè)多線程處理器中的一種性能監(jiān)視方法和系統(tǒng)。該系統(tǒng)包括一個(gè)響應(yīng)在第一和第二線程之內(nèi)的指令的處理器和一個(gè)性能監(jiān)視器,后者分別記錄由處理器響應(yīng)第一線程產(chǎn)生的一個(gè)第一事件和由處理器響應(yīng)第二線程產(chǎn)生的一個(gè)第二事件。在一個(gè)實(shí)施例中,處理器具有第一工作方式和第二工作方式。在該實(shí)施例中,當(dāng)性能監(jiān)視器工作在第一方式,性能監(jiān)視器中的一個(gè)第一計(jì)數(shù)器響應(yīng)第一事件的每一次發(fā)生遞增,和性能監(jiān)視器中的一個(gè)第二計(jì)數(shù)器響應(yīng)第二事件的每一次發(fā)生遞增。另外的可能為,當(dāng)性能監(jiān)視器工作在第二方式,第一計(jì)數(shù)器響應(yīng)第一事件的每一次發(fā)生和響應(yīng)第二事件的每一次發(fā)生遞增。
文檔編號(hào)G06F11/34GK1193144SQ98104398
公開(kāi)日1998年9月16日 申請(qǐng)日期1998年2月9日 優(yōu)先權(quán)日1997年3月11日
發(fā)明者T·D·拉爾森, J·C·拉多爾夫, A·H·沃特倫 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司