專利名稱:對(duì)多核處理器的性能分析的關(guān)系建模的制作方法
對(duì)多核處理器的性能分析的關(guān)系建模
背景技術(shù):
本發(fā)明一般涉及多核處理器,具體涉及多核機(jī)器的性能分析?,F(xiàn)代的通用和圖形處理器可包括一個(gè)或多個(gè)核。這些處理器可運(yùn)行大量的線程。 因此,在給定任務(wù)量以及可能運(yùn)行的不同線程的數(shù)量的情況下,分析處理器的性能可能涉 及復(fù)雜的任務(wù)。通常,痕跡(trace)是在處理器上運(yùn)行的任務(wù)之間的時(shí)間順序的圖形描述?;?軟件的痕跡分析使軟件設(shè)計(jì)者能夠理解任務(wù)間的操作順序。然而,多核處理器可能需要更復(fù)雜的分析。附圖簡(jiǎn)述
圖1是本發(fā)明的一個(gè)實(shí)施例的示意圖;圖2是描繪圖1所示的實(shí)施例所使用的程序的流程圖;圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的基于任務(wù)的關(guān)系模型的可視化;圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例產(chǎn)生的父/子關(guān)系的可視化;以及圖5是根據(jù)本發(fā)明的另一實(shí)施例的依賴關(guān)系的可視化。詳細(xì)描述根據(jù)本發(fā)明的一些實(shí)施例,代碼組塊調(diào)用任務(wù)之間的除時(shí)間順序之外的關(guān)系可以 被可視化。任務(wù)是用于調(diào)度和執(zhí)行的任何普通工作單元。它可以是具有開(kāi)始和結(jié)束的代碼 的任何部分。它的持續(xù)時(shí)間可被定義為用于執(zhí)行該任務(wù)的循環(huán)數(shù)量。痕跡是任務(wù)之間的連接。關(guān)系模型根據(jù)父-子、同屬、依賴性以及生產(chǎn)者和消費(fèi)者 給出任務(wù)之間的關(guān)系。也可使用其他關(guān)系。第一任務(wù)和由第一任務(wù)產(chǎn)生的第二任務(wù)之間存在父/子關(guān)系。當(dāng)?shù)谝蝗蝿?wù)依賴第 二任務(wù)來(lái)執(zhí)行時(shí),第一和第二任務(wù)存在依賴關(guān)系。生產(chǎn)者/消費(fèi)者關(guān)系意味著第一任務(wù)創(chuàng) 建數(shù)據(jù)并將其放置在緩沖器中,然后第二任務(wù)使用來(lái)自緩沖器中的該數(shù)據(jù)。原語(yǔ)是關(guān)系一方的任何實(shí)體。任務(wù)是一種類型的原語(yǔ)。另一種原語(yǔ)被稱為參數(shù)。 參數(shù)可以是緩沖器、名-值對(duì)、字符串、或與任務(wù)有關(guān)系的任何類型的標(biāo)準(zhǔn)數(shù)據(jù)類型或結(jié) 構(gòu)。也可使用其他原語(yǔ)。參照?qǐng)D1,性能分析工具10可包括控件12,該控件12可以是處理器。該處理器可 以是多核處理器。在一個(gè)實(shí)施例中,該處理器可以是圖形處理器,而在一個(gè)實(shí)施例中,該處 理器可以是單指令多數(shù)據(jù)(SIMD)多核處理器??丶?2被耦合到存儲(chǔ)器14,該存儲(chǔ)器14可 儲(chǔ)存該工具的圖形用戶界面(GUI) 16或前端、編碼原語(yǔ)和原語(yǔ)之間的關(guān)系的多個(gè)應(yīng)用編程 接口(API) 18、以及提供可用功能的工具箱的庫(kù)20。該控件可耦合到輸入/輸出22以允許 用戶輸入信息以及接收輸出。顯示器M可用于使包括任務(wù)的原語(yǔ)之間的關(guān)系可視化。性能分析工具10可被軟件開(kāi)發(fā)人員用于通過(guò)了解原語(yǔ)(諸如在該軟件內(nèi)的任務(wù)) 之間的關(guān)系來(lái)提高他們的軟件性能。通過(guò)理解這些關(guān)系,軟件開(kāi)發(fā)人員可了解如何提高軟 件的性能。一般而言,軟件開(kāi)發(fā)人員開(kāi)發(fā)兩個(gè)版本的代碼。代碼的一個(gè)版本是僅執(zhí)行需要的
4功能(諸如游戲)的代碼。代碼的另一版本內(nèi)包括API 18,在一些實(shí)施例中,API 18創(chuàng)建 原語(yǔ)關(guān)系的可視化(但是,在其他實(shí)施例中,在沒(méi)有可視化的情況下二進(jìn)制輸出可被用于 進(jìn)一步分析)。具有API版本的代碼被稱為操縱代碼。將操縱代碼流送到前端圖形用戶界 面16使設(shè)計(jì)者能夠看到代碼的進(jìn)展。它顯示了在代碼中運(yùn)行的線程、在線程內(nèi)的任務(wù)、以 及最重要的那些任務(wù)之間的功能關(guān)系。參照?qǐng)D2,通過(guò)應(yīng)用編程接口 18實(shí)現(xiàn)的序列由接收線程選擇開(kāi)始,如框22所示。 接著,如框24所示,選擇原語(yǔ)標(biāo)識(shí)符。在框沈,該標(biāo)識(shí)符被登記。而后,在框觀,向原語(yǔ)分 配標(biāo)識(shí)符。此時(shí),設(shè)計(jì)者于是輸入選定原語(yǔ)與其他原語(yǔ)之間的關(guān)系。所選原語(yǔ)被稱為“這個(gè)” 原語(yǔ),而與這個(gè)原語(yǔ)有關(guān)系的原語(yǔ)被稱為“那些”原語(yǔ)。在一些實(shí)施例中,序列18自動(dòng)隱含超出那些通過(guò)設(shè)計(jì)者所輸入的一些關(guān)系。舉例 而言,如果第一任務(wù)是第二任務(wù)的父,則意味著這第二任務(wù)是該父的子。同樣,如果第一任 務(wù)與第二任務(wù)相關(guān)并且第二任務(wù)與第三任務(wù)相關(guān),則意味著該第一任務(wù)與第三任務(wù)也相關(guān) 并隱含該關(guān)系的本質(zhì)。這可被稱為傳遞關(guān)系或其他關(guān)系所隱含的關(guān)系。在一些實(shí)施例中, 傳遞關(guān)系的使用減少了用戶數(shù)據(jù)輸入的負(fù)擔(dān)。此外,可能有一個(gè)或N個(gè)扇出關(guān)系。舉例而 言,在一些實(shí)施例中,單個(gè)父可產(chǎn)生任何數(shù)量的子,且所有那些子不需要另行編碼。此外,序列18向各個(gè)原語(yǔ)標(biāo)識(shí)符提供時(shí)間戳。它也提供任何任務(wù)開(kāi)始與結(jié)束的時(shí) 間作為輸出。因此,在一個(gè)實(shí)施例中,它可將一連串的線程顯示為圖表中的行。每個(gè)行可包 括線程中任務(wù)的序列。此外,嵌套任務(wù)也可通過(guò)可視化表示,諸如將嵌套任務(wù)顯示為延伸出 在其中執(zhí)行該嵌套任務(wù)的任務(wù)。用戶可點(diǎn)擊特定任務(wù),且響應(yīng)于該任務(wù)選擇,可以圖形化地 顯不其關(guān)系。相對(duì)基于時(shí)間的跟蹤系統(tǒng),系統(tǒng)10可以是基于關(guān)系的。任務(wù)和不同緩沖器間的時(shí) 間關(guān)系沒(méi)有任務(wù)之間的關(guān)系重要。在一些實(shí)施例中,示出了任務(wù)內(nèi)的關(guān)系,甚至在一些實(shí)施 例中這些任務(wù)無(wú)相對(duì)時(shí)序。因此,在該線程內(nèi),任務(wù)的時(shí)間順序可顯示,但在一些實(shí)施例中, 不同線程中的任務(wù)的時(shí)間順序可能不顯示。在一些實(shí)施例中,相對(duì)于時(shí)間關(guān)系,功能關(guān)系可 以被可視化。功能關(guān)系是任務(wù)之間的除時(shí)間順序之外的任何關(guān)系。在一個(gè)實(shí)施例中,各個(gè)任務(wù)可以由矩形表示,矩形在χ方向的長(zhǎng)度是執(zhí)行該功能 需要的時(shí)長(zhǎng)的函數(shù)。在一些實(shí)施例中,可使用鼠標(biāo)點(diǎn)擊和拖動(dòng)的技術(shù)選擇多個(gè)任務(wù)以顯示 那些選定任務(wù)和任何其他任務(wù)之間的關(guān)系。因此,作為簡(jiǎn)單示例,參照?qǐng)D3,存在四個(gè)原語(yǔ),包括三個(gè)任務(wù)36、38和42以及一個(gè) 緩沖器40形式的參數(shù)。箭頭44、52、50以及48示出了這些任務(wù)之間的關(guān)系。例如,頂點(diǎn)任 務(wù)38可將其結(jié)果放置在緩沖器40中,并且那些結(jié)果可由像素任務(wù)42使用。因此,任務(wù)38 是生產(chǎn)者而任務(wù)42是消費(fèi)者。由于頂點(diǎn)任務(wù)38由繪圖任務(wù)36創(chuàng)建,因此箭頭52表示該 頂點(diǎn)任務(wù)是繪圖任務(wù)36的子。同樣,像素任務(wù)42依賴于頂點(diǎn)任務(wù)38執(zhí)行,因此箭頭46表 示該依賴性。因此,在一些情況下,任務(wù)之間可以有多重關(guān)系。此外,也存在多個(gè)對(duì)象類型?;氐綀D2,在框觀,在向原語(yǔ)分配標(biāo)識(shí)符后,接著輸入這個(gè)原語(yǔ)的關(guān)系,如框30所 示。雖然在此描述了手動(dòng)技術(shù),但也可構(gòu)想自動(dòng)技術(shù),在自動(dòng)技術(shù)中代碼分析導(dǎo)致在無(wú)需用 戶干預(yù)的情況下就可自動(dòng)輸入關(guān)系。而后,在菱形32中,檢查確定是否還有原語(yǔ)需要編碼。如果有,則該流程重復(fù)。否則,菱形34處的檢查確定是否還有線程需要編碼。如果有,則該流程重復(fù)。否則,該流程結(jié) 束ο圖4示出了父/子關(guān)系的可視化示例。在一個(gè)實(shí)施例中,可視化可以是具有鼠標(biāo) 可選任務(wù)或原語(yǔ)描述的圖形用戶界面。在該示例中,僅示出四個(gè)線程。對(duì)于每個(gè)線程,任務(wù) 由矩形表示。在這種情況下,用戶已選擇了第二線程中的父任務(wù)B。作為響應(yīng),父/子關(guān)系的可 視化自動(dòng)生成。換句話說(shuō),箭頭從任務(wù)B延伸到第三線程中的一連串任務(wù)C,任務(wù)C是任務(wù) B的子。此外,箭頭從第三線程中的任務(wù)C延伸至第四線程中的任務(wù)C,該任務(wù)C是父任務(wù) B的孫。圖5是依賴關(guān)系的可視化。圖5對(duì)應(yīng)于圖4,除了現(xiàn)在用戶選擇的任務(wù)B依賴于任 務(wù)A、C、D和E。S卩,任務(wù)B依賴來(lái)自任務(wù)A的輸入,如由標(biāo)記為“傳入依賴性”的箭頭所表 示。任務(wù)C、D和E依賴標(biāo)記為“傳出依賴性”的任務(wù)B的輸出。因此,可視化顯示了不同線 程的任務(wù)之間的功能關(guān)系。本文中所描述的圖形處理技術(shù)可在各種硬件體系結(jié)構(gòu)中實(shí)現(xiàn)。例如,圖形功能可 被集成在芯片組中。替代地,可使用分立的圖形處理器。作為另一實(shí)施例,圖形功能可由包 括多核處理器的通用處理器實(shí)現(xiàn)。在本說(shuō)明書通篇中對(duì)“一個(gè)實(shí)施例”或“一實(shí)施例”的引用意味著結(jié)合該實(shí)施例描 述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明包含的至少一個(gè)實(shí)現(xiàn)中。因此,短語(yǔ)“一個(gè)實(shí)施例” 或“在一實(shí)施例中”的出現(xiàn)不一定指代同一實(shí)施例。此外,特定特征、結(jié)構(gòu)或特性可按照與 所說(shuō)明的特定實(shí)施例不同的其他適當(dāng)形式來(lái)創(chuàng)立,而且所有此類形式可包含在本申請(qǐng)的權(quán) 利要求中。雖然已經(jīng)關(guān)于有限個(gè)實(shí)施例描述了本發(fā)明,但本領(lǐng)域技術(shù)人員將會(huì)理解從中得出 的多種修改和變化。所附權(quán)利要求旨在覆蓋落入本發(fā)明的真實(shí)精神和范圍中的所有這些修 改和變化。
權(quán)利要求
1.一種方法,包括接收多核處理器中的多個(gè)代碼原語(yǔ)的標(biāo)識(shí);以及指示原語(yǔ)之間的功能關(guān)系。
2.如權(quán)利要求1所述的方法,其特征在于,包括提供至少兩個(gè)任務(wù)之間的功能關(guān)系的 可視化。
3.如權(quán)利要求1所述的方法,其特征在于,包括指示任務(wù)和參數(shù)之間的功能關(guān)系。
4.如權(quán)利要求3所述的方法,其特征在于,指示任務(wù)和參數(shù)之間的功能關(guān)系包括指示 任務(wù)和緩沖器之間的功能關(guān)系。
5.如權(quán)利要求1所述的方法,其特征在于,包括提供包括父-子、同屬、依賴性或生產(chǎn)者 和消費(fèi)者中的至少一個(gè)的功能關(guān)系的可視化。
6.如權(quán)利要求1所述的方法,其特征在于,包括自動(dòng)隱含原語(yǔ)之間的關(guān)系。
7.如權(quán)利要求6所述的方法,其特征在于,包括隱含傳遞關(guān)系。
8.如權(quán)利要求1所述的方法,其特征在于,包括自動(dòng)隱含一個(gè)至任何數(shù)量的關(guān)系及其 逆關(guān)系。
9.如權(quán)利要求1所述的方法,其特征在于,包括使用戶能夠選擇任務(wù),并響應(yīng)于所述任 務(wù)選擇指示所選任務(wù)與其他原語(yǔ)的功能關(guān)系。
10.如權(quán)利要求1所述的方法,其特征在于,包括向特定線程上的各個(gè)任務(wù)提供標(biāo)識(shí)符。
11.一種存儲(chǔ)指令的計(jì)算機(jī)可讀介質(zhì),所述指令由計(jì)算機(jī)執(zhí)行以標(biāo)識(shí)多核處理器中的多個(gè)代碼原語(yǔ);標(biāo)識(shí)原語(yǔ)之間的功能關(guān)系。
12.如權(quán)利要求11所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于使至少兩個(gè)任務(wù)之間的 功能關(guān)系可視化的指令。
13.如權(quán)利要求11所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于指示任務(wù)和參數(shù)之間的 功能關(guān)系的指令。
14.如權(quán)利要求13所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于指示任務(wù)和緩沖器之間 的功能關(guān)系的指令。
15.如權(quán)利要求11所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于提供包括父到子、同屬、 依賴性或生產(chǎn)者和消費(fèi)者中的至少一個(gè)功能關(guān)系的可視化的指令。
16.如權(quán)利要求11所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于自動(dòng)隱含原語(yǔ)之間的關(guān) 系的指令。
17.如權(quán)利要求16所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于隱含傳遞關(guān)系的指令。
18.如權(quán)利要求11所述的介質(zhì),其特征在于,進(jìn)一步儲(chǔ)存用于自動(dòng)隱含一個(gè)至任何數(shù) 量的關(guān)系及其逆關(guān)系的指令。
19.如權(quán)利要求11所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于使用戶能夠選擇任務(wù)并 響應(yīng)于所述任務(wù)選擇示出所選任務(wù)與另一原語(yǔ)的功能關(guān)系的指令。
20.如權(quán)利要求11所述的介質(zhì),其特征在于,進(jìn)一步存儲(chǔ)用于向特定線程上的各個(gè)任 務(wù)提供標(biāo)識(shí)符的指令。
21.一種裝置,包括多核處理器;以及耦合到所述處理器的存儲(chǔ)器,所述存儲(chǔ)器儲(chǔ)存指令以指示代碼任務(wù)之間的功能關(guān)系。
22.如權(quán)利要求21所述的裝置,其特征在于,所述存儲(chǔ)器存儲(chǔ)用于標(biāo)識(shí)包括任務(wù)和參 數(shù)的原語(yǔ)之間的關(guān)系的指令。
23.如權(quán)利要求21所述的裝置,其特征在于,所述裝置用于提供至少兩個(gè)原語(yǔ)之間的 功能關(guān)系的可視化。
24.如權(quán)利要求21所述的裝置,其特征在于,所述裝置是圖形處理器。
25.如權(quán)利要求M所述的裝置,其特征在于,所述裝置是單指令多數(shù)據(jù)多核處理器。
26.如權(quán)利要求21所述的裝置,其特征在于,所述裝置用于提供包括父到子、同屬、依 賴性或生產(chǎn)者和消費(fèi)者中的至少一個(gè)功能關(guān)系的可視化。
全文摘要
提供了一種用于對(duì)多核處理器進(jìn)行性能分析的關(guān)系建模方法。相關(guān)模型可被用于為多核處理器中的多個(gè)線程的每一個(gè)編碼原語(yǔ)。原語(yǔ)可包括任務(wù)和參數(shù),諸如緩沖器。關(guān)系可鏈接到特定任務(wù)。具有指示關(guān)系的編碼的任務(wù)然后可在用戶選擇時(shí)用于顯示任務(wù)之間的功能關(guān)系的可視化。
文檔編號(hào)G06F11/34GK102141954SQ20101061804
公開(kāi)日2011年8月3日 申請(qǐng)日期2010年12月22日 優(yōu)先權(quán)日2009年12月23日
發(fā)明者C·J·科邁克, J·普魯姆, N·杜卡 申請(qǐng)人:英特爾公司