專利名稱:串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法和評(píng)估器的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及微處理器芯片結(jié)構(gòu)設(shè)計(jì)領(lǐng)域,特別涉及一種串行程序線程級(jí)推測(cè)執(zhí)行 能力評(píng)估方法和評(píng)估器。
背景技術(shù):
隨著半導(dǎo)體技術(shù)的發(fā)展,將多個(gè)處理器核集成到單個(gè)芯片的多核技術(shù)已經(jīng)成為微 處理器設(shè)計(jì)主流的方案。與傳統(tǒng)單核結(jié)構(gòu)中的資源分時(shí)復(fù)用機(jī)制不同,多核處理器需要根 據(jù)應(yīng)用程序?qū)嶋H執(zhí)行的需求,在空間域?qū)π酒Y源進(jìn)行劃分。由于大部分應(yīng)用程序都是采 用串行編程模型設(shè)計(jì),為充分利用微處理器多核結(jié)構(gòu)的資源優(yōu)勢(shì),線程級(jí)推測(cè)執(zhí)行技術(shù)成 為普遍采用的技術(shù)之一。線程級(jí)推測(cè)執(zhí)行技術(shù)是為了打破應(yīng)用程序執(zhí)行的串行性,對(duì)應(yīng)用 程序進(jìn)行切分,形成以代碼段為粒度的線程執(zhí)行單位,通過推測(cè)應(yīng)用程序的執(zhí)行路徑,即推 測(cè)地并行執(zhí)行按照串行順序應(yīng)該執(zhí)行的代碼段序列,實(shí)現(xiàn)多個(gè)線程在多個(gè)處理器核上并行 執(zhí)行,使應(yīng)用程序執(zhí)行性能得到提升。不同串行應(yīng)用之間以及單個(gè)程序內(nèi)部不同執(zhí)行階段的線程推測(cè)執(zhí)行能力是存在 差異的,在線程推測(cè)執(zhí)行能力強(qiáng)的程序區(qū)域,推測(cè)執(zhí)行可以發(fā)揮多核處理器平臺(tái)的并行優(yōu) 勢(shì),使得應(yīng)用程序性能得到提升,但是對(duì)于線程推測(cè)執(zhí)行能力弱的程序區(qū)域,錯(cuò)誤的推測(cè)執(zhí) 行則會(huì)造成多核處理器平臺(tái)計(jì)算資源和功耗的浪費(fèi),對(duì)應(yīng)用程序性能起不到提升作用,因 此,如何評(píng)估不同串行應(yīng)用和單個(gè)程序內(nèi)部不同執(zhí)行階段的線程推測(cè)執(zhí)行能力成為多核結(jié) 構(gòu)設(shè)計(jì)關(guān)注的重要問題。當(dāng)前,通常采用軟件和硬件相結(jié)合的機(jī)制來實(shí)現(xiàn)對(duì)串行程序線程 級(jí)推測(cè)執(zhí)行能力的估算,其主要實(shí)現(xiàn)方式如下由處理器提供的計(jì)數(shù)器獲取并統(tǒng)計(jì)串行程 序當(dāng)前執(zhí)行階段在處理器上的運(yùn)行信息,具體包括某段時(shí)間內(nèi)的Cache缺失率、ILP(In struction-Level-Parallelism,指令級(jí)并行性)、I/O訪問次數(shù)、程序的執(zhí)行效率等,由操 作系統(tǒng)或其它功能軟件對(duì)所述運(yùn)行信息進(jìn)行統(tǒng)計(jì)分析等處理,估算串行程序當(dāng)前運(yùn)行的執(zhí) 行階段的線程級(jí)推測(cè)執(zhí)行能力,并根據(jù)估算的線程級(jí)推測(cè)執(zhí)行能力,完成對(duì)多核處理器資 源的分配決策,實(shí)現(xiàn)根據(jù)串行程序單個(gè)執(zhí)行階段的執(zhí)行狀態(tài)的調(diào)整每個(gè)任務(wù)階段的資源數(shù) 量。通過對(duì)現(xiàn)有技術(shù)的研究,發(fā)明人發(fā)現(xiàn),現(xiàn)有的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估 方案需要在串行程序當(dāng)前任務(wù)階段的執(zhí)行過程中,由處理器的性能計(jì)數(shù)器統(tǒng)計(jì)其運(yùn)行信 息,并由操作系統(tǒng)或其它功能軟件對(duì)這些運(yùn)行信息進(jìn)行分析和處理后,才能對(duì)當(dāng)前階段的 線程級(jí)推測(cè)執(zhí)行能力進(jìn)行評(píng)估,并根據(jù)評(píng)估結(jié)果為當(dāng)其分配處理器資源,因此這種方案在 為串行程序的任務(wù)階段分配處理器資源時(shí),不僅存在一定的時(shí)間滯后性,而且評(píng)估的開銷 較大,無法充分發(fā)揮串行程序的并行執(zhí)行能力,影響多核平臺(tái)上串行程序的執(zhí)行效率的提 尚ο
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本申請(qǐng)的目的在于提供一種完全硬件實(shí)現(xiàn)的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法和評(píng)估器,以實(shí)現(xiàn)在串行程序的一個(gè)任務(wù)階段執(zhí)行之前,預(yù)先評(píng) 估該任務(wù)階段的線程級(jí)推測(cè)執(zhí)行能力,使后續(xù)執(zhí)行可以根據(jù)預(yù)估的推測(cè)執(zhí)行能力,及時(shí)的 為其分配處理器資源,以充分發(fā)揮串行程序的并行執(zhí)行能力,提高多核平臺(tái)上串行程序的 執(zhí)行效率。為實(shí)現(xiàn)上述目的,本發(fā)明提供了如下技術(shù)方案—種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,包括從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確推測(cè)線程 數(shù)目,得到該執(zhí)行階段的線程推測(cè)深度值;確定所述執(zhí)行階段的線程推測(cè)深度值為所述執(zhí)行階段的下一次執(zhí)行時(shí)的線程級(jí) 推測(cè)執(zhí)行能力評(píng)估值。本發(fā)明還提供了串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法的另一種實(shí)現(xiàn)方式,包 括從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確推測(cè)線程 數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值;按照上述方式分別獲取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;確定獲取到的多個(gè)已執(zhí)行階段的線程推測(cè)深度值的均值作為所述串行程序的下 一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。結(jié)合上述兩種實(shí)現(xiàn)方式,本發(fā)明提供了串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法的 又一種實(shí)現(xiàn)方式,包括從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確推測(cè)線程 數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值;按照上述方式分別獲取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值,并按照每 個(gè)執(zhí)行階段的非推測(cè)線程為索引將該執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷 史表中;使用當(dāng)前執(zhí)行階段的非推測(cè)線程為索引訪問推測(cè)深度局部歷史表,作為當(dāng)前執(zhí)行 階段線程級(jí)推測(cè)執(zhí)行能力的第一評(píng)估值;確定所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為當(dāng)前執(zhí)行階段線程級(jí) 推測(cè)執(zhí)行能力的第二評(píng)估值;執(zhí)行當(dāng)前執(zhí)行階段并獲取當(dāng)前執(zhí)行階段的線程推測(cè)深度值;將所述線程推測(cè)深度值分別和所述第一預(yù)估值、第二預(yù)估值相比較;當(dāng)?shù)谝活A(yù)估 值更接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),在所述當(dāng)前執(zhí)行階段下一次執(zhí)行之初, 以其非推測(cè)線程為索引訪問所述推測(cè)深度局部歷史表,將得到的值確定為其下一次執(zhí)行時(shí) 的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值;當(dāng)?shù)诙A(yù)估值更接近當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí), 確定多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能 力評(píng)估值。相對(duì)應(yīng)與上述評(píng)估方法,本發(fā)明還提供了一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估 器,包括計(jì)數(shù)器,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段 正確推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值;
存儲(chǔ)單元,包括推測(cè)深度局部歷史表,用于以所述執(zhí)行階段的非推測(cè)線程為索引, 將所述執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷史表中;預(yù)測(cè)單元,用于在串行程序的任一執(zhí)行階段執(zhí)行之前,以該執(zhí)行階段的非推測(cè)線 程為索引,訪問所述推測(cè)深度局部歷史表,將返回值作為該執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能 力的評(píng)估值。本發(fā)明還提供了串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器的另一種組成和結(jié)構(gòu),包 括計(jì)數(shù)器,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段 正確推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值,并按照上述方式分別獲取串 行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;預(yù)測(cè)單元,用于確定所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值為當(dāng)前執(zhí)行 單元線程級(jí)推測(cè)執(zhí)行能力的評(píng)估值。結(jié)合上述評(píng)估器的兩種結(jié)構(gòu),本發(fā)明還提供了串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估 器的另一種組成和結(jié)構(gòu),包括計(jì)數(shù)器,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段 正確推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值,并按照上述方式分別獲取串 行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;第一存儲(chǔ)單元,包括推測(cè)深度局部歷史表,用于以所述執(zhí)行階段的非推測(cè)線程為 索引,將該執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷史表中;第二存儲(chǔ)單元,包括全局歷史移位寄存器,用于分別將所述多個(gè)已執(zhí)行階段的線 程推測(cè)深度值存儲(chǔ)到全局歷史移位寄存器;第一預(yù)測(cè)單元,用于以所述當(dāng)前執(zhí)行階段的非推測(cè)線程為索引,訪問推測(cè)深度局 部歷史表,將返回值作為所述執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力的第一評(píng)估值;第二預(yù)測(cè)單元,用于將所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值平均值作為當(dāng)前執(zhí) 行階段線程級(jí)推測(cè)執(zhí)行能力的第二評(píng)估值;評(píng)估偏差比較單元,用于將所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值分別和所述第一 預(yù)估值、第二預(yù)估值相比較;評(píng)估確定單元,用于當(dāng)?shù)谝活A(yù)估值更接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值 時(shí),在所述當(dāng)前執(zhí)行階段下一次執(zhí)行前,以其非推測(cè)線程為索引訪問所述推測(cè)深度局部歷 史表,將得到的值確定為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值;當(dāng)?shù)诙A(yù)估值更 接近當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),確定多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值 為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。由以上本申請(qǐng)實(shí)施例提供的技術(shù)方案可見,本申請(qǐng)實(shí)施例在任一個(gè)執(zhí)行階段的實(shí) 際執(zhí)行之前,通過預(yù)測(cè)單元根據(jù)已執(zhí)行的階段的歷史線程推測(cè)深度值預(yù)測(cè)所述當(dāng)前執(zhí)行階 段的線程級(jí)推測(cè)執(zhí)行能力,并在該階段實(shí)際執(zhí)行過程中通過簡(jiǎn)單統(tǒng)計(jì)正確的推測(cè)線程的數(shù) 量來更新預(yù)測(cè)單元,從而實(shí)現(xiàn)了以在一個(gè)執(zhí)行階段在實(shí)際運(yùn)行之前,得到該執(zhí)行階段的線 程級(jí)推測(cè)執(zhí)行能力預(yù)測(cè)評(píng)估值,進(jìn)而根據(jù)得到的預(yù)估值,在該執(zhí)行階段實(shí)際執(zhí)行時(shí),及時(shí)的 為該執(zhí)行階段分配合理的處理器資源,充分發(fā)揮串行程序的并行執(zhí)行能力,提高多核平臺(tái) 上串行程序的執(zhí)行效率。
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本 申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下, 還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請(qǐng)實(shí)施例一中的線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法流程圖;圖2為本申請(qǐng)實(shí)施例一中的獲取線推測(cè)深度值的方式示意圖;圖3為本申請(qǐng)實(shí)施例二中提供的線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法的部分流程圖;圖4為本申請(qǐng)實(shí)施例二中提供的更新推測(cè)深度局部歷史表方式示意圖;圖5為本申請(qǐng)實(shí)施例三中提供的線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法流程圖;圖6為本申請(qǐng)實(shí)施例四中提供的線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法的部分流程圖;圖7為本申請(qǐng)實(shí)施例四中提供的更新推測(cè)深度全局歷史移位寄存器示意圖;圖8為本申請(qǐng)實(shí)施例五中提供的線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法流程圖;圖9為本申請(qǐng)實(shí)施例七中提供的評(píng)估器的一種結(jié)構(gòu)示意圖;圖10為本申請(qǐng)實(shí)施例九中提供的評(píng)估器的一種結(jié)構(gòu)示意圖;圖11為本申請(qǐng)實(shí)施例九中提供的評(píng)估器的評(píng)估方式示意圖。
具體實(shí)施例方式為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)方案。下面將結(jié)合本申請(qǐng)實(shí)施例中的 附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是 本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。實(shí)施例一本實(shí)施例提供了一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,如圖1所示,為該 方法的一種流程示意圖,該方法包括以下步驟步驟S101,從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù);步驟S102,判斷下一個(gè)推測(cè)線程是否驗(yàn)證為正確推測(cè)線程,如果是,執(zhí)行步驟 S103,否則,執(zhí)行步驟S104 ;步驟S103,將所述執(zhí)行階段的正確推測(cè)線程數(shù)目加1,并返回執(zhí)行步驟S102 ;步驟S104,結(jié)束計(jì)數(shù)流程,得到該執(zhí)行階段的正確推測(cè)線程數(shù)目,并確定該數(shù)目為 該執(zhí)行階段的線程推測(cè)深度值;在串行程序執(zhí)行過程中,對(duì)每一個(gè)執(zhí)行階段在執(zhí)行過程中都可以重復(fù)上述步驟 SlOl至步驟S104中的操作,以獲取每個(gè)執(zhí)行階段的線程推測(cè)深度值。如圖2所示,假設(shè)線程TO為該執(zhí)行階段的非推測(cè)線程,線程Tl到Tn為該執(zhí)行階 段的推測(cè)線程,在該階段的執(zhí)行過程中,如果線程TO執(zhí)行結(jié)束,且Tl已經(jīng)被驗(yàn)證為正確推 測(cè)的線程,此時(shí)可以為該執(zhí)行階段的線程推測(cè)深度值加1,即如果所述線程推測(cè)深度值的初 始值為0,則在Tl驗(yàn)證為正確執(zhí)行的線程后,將所述線程推測(cè)深度值由0更新為1,當(dāng)線程 Tl執(zhí)行結(jié)束后,且T2驗(yàn)證為正確執(zhí)行的線程后,則將所述線程推測(cè)深度值由1更新為2,依次類推,T3到Tn都驗(yàn)證為正確執(zhí)行的推測(cè)線程時(shí),所述線程推測(cè)深度值更新為n,如果Tn 的下一個(gè)線程驗(yàn)證為錯(cuò)誤推測(cè)的線程時(shí),結(jié)束計(jì)數(shù)過程,此時(shí)得到的線程推測(cè)深度值η就 是該執(zhí)行階段的線程推測(cè)深度值,說明該執(zhí)行階段包括TO、Tl……Tn等n+1個(gè)可以并行執(zhí) 行的線程。如果多核處理器平臺(tái)結(jié)構(gòu)上采用線程與處理器核一一對(duì)應(yīng)的執(zhí)行方式,則為該 執(zhí)行階段分配的處理器核的數(shù)量最佳為n+1個(gè)。當(dāng)Tn的下一個(gè)線程驗(yàn)證為錯(cuò)誤推測(cè)的線程時(shí),Tn可以作為下一個(gè)執(zhí)行階段的為 非推測(cè)線程,計(jì)算下一執(zhí)行階段的推測(cè)執(zhí)行能力。步驟S105,確定所述執(zhí)行階段的線程推測(cè)深度值為所述執(zhí)行階段的下一次執(zhí)行時(shí) 的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。本發(fā)明中,所述的一個(gè)執(zhí)行階段是指以一個(gè)非推測(cè)線程為開始,以一個(gè)錯(cuò)誤執(zhí)行 線程為計(jì)數(shù)的同一代碼區(qū)域,其中,所述執(zhí)行階段的下一次執(zhí)行是指以同一個(gè)非推測(cè)線程 為開始的執(zhí)行階段,根據(jù)該執(zhí)行階段的路徑或深度的不同,一個(gè)執(zhí)行階段和該執(zhí)行階段的 下一次執(zhí)行的線程推測(cè)深度值可能相同或不同,以下實(shí)施例中相似之處可參見此描述,不 再贅述。由于串行程序執(zhí)行的時(shí)間局部性,剛剛執(zhí)行過的代碼區(qū)域很可能會(huì)緊接著再次執(zhí) 行,因此,本發(fā)明提出了根據(jù)串行程序執(zhí)行時(shí)獲取的歷史推測(cè)深度值預(yù)先評(píng)估推測(cè)所述執(zhí) 行階段的下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力。本實(shí)施例中提供的具體實(shí)現(xiàn)方式為將在 運(yùn)行過程中計(jì)數(shù)得到的串行程序的一個(gè)已執(zhí)行階段的真實(shí)線程推測(cè)執(zhí)行能力,作為該執(zhí)行 階段的所述執(zhí)行階段的下一次執(zhí)行時(shí)的線程推測(cè)執(zhí)行能力評(píng)估值。如上述步驟中所示,假 設(shè)在所述執(zhí)行階段實(shí)際執(zhí)行過程中計(jì)數(shù)得到其真實(shí)線程推測(cè)執(zhí)行能力為n,則以η為所述 執(zhí)行階段的下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力預(yù)測(cè)評(píng)估值。如果多核處理器平臺(tái)結(jié)構(gòu)上 采用線程與處理器核一一對(duì)應(yīng)的執(zhí)行方式,則后續(xù)步驟較佳的可以為所述執(zhí)行階段的下一 次執(zhí)行時(shí)分配n+1個(gè)處理器核。通過上述方式,可以在一個(gè)執(zhí)行階段在實(shí)際運(yùn)行之前,得到該執(zhí)行階段的線程推 測(cè)執(zhí)行能力預(yù)測(cè)評(píng)估值,進(jìn)而根據(jù)得到的預(yù)估值,在串行程序的一個(gè)執(zhí)行階段下一次重復(fù) 執(zhí)行之前,及時(shí)的為該執(zhí)行階段分配處理器資源,以充分發(fā)揮串行程序的并行執(zhí)行能力,提 高多核平臺(tái)上串行程序的執(zhí)行效率。實(shí)施例二 在實(shí)施例一中提供的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法中,還可將經(jīng)過計(jì)數(shù) 獲取到的執(zhí)行階段的實(shí)際線程推測(cè)深度值存儲(chǔ),以方便后續(xù)執(zhí)行階段訪問讀取,因此在所 述得到所述執(zhí)行階段的線程推測(cè)深度值之后,還可以包括步驟S301,以所述執(zhí)行階段的非推測(cè)線程為索引,將該執(zhí)行階段的線程推測(cè)深度 值存儲(chǔ)到推測(cè)深度局部歷史表中;步驟S302,在所述執(zhí)行階段下一次執(zhí)行之初,以其非推測(cè)線程地址為索引,訪問所 述推測(cè)深度局部歷史表,得到所述執(zhí)行階段的線程推測(cè)深度值。如圖4所示,為本實(shí)施例提供的一種具體實(shí)現(xiàn)方式以圖中所示執(zhí)行階段起始線 程TO地址為索引,使用當(dāng)前執(zhí)行階段的推測(cè)執(zhí)行深度值η更新推測(cè)深度局部歷史表對(duì)應(yīng)表 項(xiàng)。其中,所述深度局部歷史表中可以設(shè)置有以每個(gè)執(zhí)行階段的非推測(cè)線程為索引的初始 值,如圖所示,TO到Tn的執(zhí)行階段的非推測(cè)線程TO地址索引的推測(cè)深度局部歷史表表項(xiàng)數(shù)值代表的該執(zhí)行階段的線程推測(cè)執(zhí)行能力初始值為乂,在1 的下一個(gè)發(fā)生推測(cè)執(zhí)行錯(cuò)誤 時(shí)使用當(dāng)前執(zhí)行階段推測(cè)深度數(shù)值η代替X。在以TO為非推測(cè)線程的執(zhí)行階段下一次執(zhí)行之前,以該執(zhí)行階段的非推測(cè)線程 TO地址為索引,訪問推測(cè)深度局部歷史表,得到的對(duì)應(yīng)表項(xiàng)的數(shù)值η作為以TO為非推測(cè)線 程的執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力的預(yù)測(cè)評(píng)估值,后續(xù)步驟中硬件資源管理機(jī)制可以根 據(jù)該預(yù)測(cè)評(píng)估值為TO為非推測(cè)線程的執(zhí)行階段分配合適數(shù)量的處理器核資源。在Tn為非 推測(cè)線程的執(zhí)行階段的執(zhí)行過程中,計(jì)數(shù)該階段的實(shí)際線程推測(cè)執(zhí)行能力,當(dāng)?shù)玫降膶?shí)際 線程推測(cè)執(zhí)行能力為y時(shí),將以線程Tn為索引,將y存儲(chǔ)到推測(cè)深度局部歷史,作為以Tn 為非推測(cè)線程的執(zhí)行階段的下一次重復(fù)執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力預(yù)測(cè)評(píng)估值。本實(shí)施例中提供的方法與實(shí)施例一中提供的方法的其它部分可以相互參見,在此 不在贅述。本實(shí)施例提供的技術(shù)方案可以將經(jīng)過計(jì)數(shù)獲取到的執(zhí)行階段的實(shí)際線程推測(cè)深 度值存儲(chǔ),方便了該執(zhí)行階段下一次重復(fù)執(zhí)行前訪問讀取作為后續(xù)階段的線程級(jí)推測(cè)能力 預(yù)測(cè)評(píng)估值。實(shí)施例三本實(shí)施例提供了串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法的另一種實(shí)現(xiàn)方式,如圖 5所示,為該方法的又一種流程示意圖,所述方法包括以下步驟步驟S501,從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù);步驟S502,判斷下一個(gè)推測(cè)線程是否驗(yàn)證為正確推測(cè)線程,如果是,執(zhí)行步驟 S503,否則,執(zhí)行步驟S504 ;步驟S503,將所述執(zhí)行階段的正確推測(cè)線程數(shù)目加1,并返回執(zhí)行步驟S502 ;步驟S504,結(jié)束計(jì)數(shù)流程,得到該執(zhí)行階段的正確正確推測(cè)線程數(shù)目,并確定該數(shù) 目為該執(zhí)行階段的線程推測(cè)深度值;按照上述步驟S501至S504提供的方式分別獲取串行程序的多個(gè)已執(zhí)行階段的線 程推測(cè)深度值;上述中步驟中,獲取一個(gè)執(zhí)行階段的線程推測(cè)深度值的具體實(shí)現(xiàn)方式可以參見實(shí) 施例一中所述,在此不再贅述。本步驟與實(shí)施例一中的相應(yīng)步驟的不同之處僅在于本步驟中增加了按照上述獲 取一個(gè)執(zhí)行階段的線程推測(cè)深度值的方式,獲取多個(gè)已執(zhí)行階段的線程推測(cè)深度值。具體 的可以獲取最近2個(gè)、3個(gè)或大于3個(gè)的已執(zhí)行階段的線程推測(cè)深度值。步驟S505 確定獲取到的多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為串行 程序的下一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。由于串行程序執(zhí)行的時(shí)間局部性,剛剛執(zhí)行過的代碼區(qū)域很可能會(huì)緊接著再次執(zhí) 行,因此,本發(fā)明提出了根據(jù)串行程序執(zhí)行時(shí)獲取的歷史推測(cè)深度值預(yù)先評(píng)估推測(cè)下一執(zhí) 行階段的線程級(jí)推測(cè)執(zhí)行能力。本實(shí)施例中提供的具體實(shí)現(xiàn)方式為將獲取到的多個(gè)已執(zhí) 行階段的線程推測(cè)深度值的平均值作為串行程序的下一執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力 評(píng)估值。具體的可以以最近2個(gè)、3個(gè)或大于3個(gè)的已執(zhí)行階段的線程推測(cè)深度值的平均值 作為下一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。本實(shí)施例中提供的方法與實(shí)施例一或?qū)嵤├刑峁┑姆椒ㄏ啾容^,采用了最近 的多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值,取代了最近的一個(gè)已執(zhí)行階段的線程推測(cè)
10深度值,作為下一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。本實(shí)施例提供的基于串行程 序全局的評(píng)估方法比實(shí)施例一或二中基于串行程序全局的評(píng)估方法相比,在程序相鄰的執(zhí) 行階段的相關(guān)聯(lián)性不強(qiáng)的情況下,能夠更加準(zhǔn)確的預(yù)測(cè)評(píng)估到下一個(gè)執(zhí)行階段的線程級(jí)推 測(cè)執(zhí)行能力。實(shí)施例四在實(shí)施例三中提供的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法中,還可將經(jīng)過計(jì)數(shù) 獲取到的多個(gè)已執(zhí)行階段的線程推測(cè)深度值存儲(chǔ),以方便后續(xù)執(zhí)行階段訪問讀取,因此在 所述得到所述多個(gè)執(zhí)行階段的線程推測(cè)深度值之后,還可以包括步驟S601,分別將所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到全局歷史移位寄 存器中;步驟S602,在執(zhí)行所述下一個(gè)執(zhí)行階段之初,訪問所述全局歷史移位寄存器,得到 串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值。下面,以將最近三個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為串行程序的下一 個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值為例,進(jìn)行具體說明所述全局歷史移位寄存器中可以包括三個(gè)數(shù)據(jù)的入口項(xiàng),在當(dāng)前執(zhí)行階段執(zhí)行的 同時(shí),記錄當(dāng)前階段的線程推測(cè)深度值,當(dāng)前階段執(zhí)行完畢后,將全局歷史移位寄存器中存 儲(chǔ)的最遠(yuǎn)的已執(zhí)行階段的線程推測(cè)深度值移除,將存儲(chǔ)的其它兩個(gè)線程推測(cè)深度值依次向 前移位,并將計(jì)數(shù)得到的當(dāng)前執(zhí)行階段的線程推測(cè)深度值,存儲(chǔ)到所述全局歷史移位寄存 器中。在下一個(gè)執(zhí)行階段執(zhí)行之前,訪問所述全局歷史移位寄存器,從中獲取到的最近 三個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為串行程序下一個(gè)執(zhí)行階段的線程級(jí)推測(cè) 執(zhí)行能力評(píng)估值。如圖7所示,為本實(shí)施例提供的評(píng)估方法的一種實(shí)現(xiàn)方式示意圖,所示具有三個(gè) 數(shù)據(jù)的入口項(xiàng)的全局歷史移位寄存器中更新前存儲(chǔ)的數(shù)據(jù)為χ、y和z,最近的已執(zhí)行階段 TO至Tn的推測(cè)深度值為n,則用η更新所示移位寄存器后,所述全局歷史移位寄存器中存 儲(chǔ)的數(shù)據(jù)為y、z和η。更新存儲(chǔ)有推測(cè)深度全局歷史的移位寄存器后,使用全局歷史移位寄 存器中存儲(chǔ)的推測(cè)深度值y、z和η評(píng)估下一個(gè)執(zhí)行階段的推測(cè)執(zhí)行能力,平均值(n+y+z)/3 作為評(píng)估的推測(cè)深度值。如果多核結(jié)構(gòu)上采用線程與處理器核一一對(duì)應(yīng)的執(zhí)行,此時(shí)資源 管理機(jī)制需要為的下一執(zhí)行階段分配(n+y+z)/3個(gè)處理器核資源。如果數(shù)值(n+y+z)/3為 非整數(shù)數(shù)值時(shí),為充分發(fā)揮串行程序的并行執(zhí)行能力,可以為下一執(zhí)行階段分配大于數(shù)值 (n+y+z)/3的最小整數(shù)個(gè)處理器核資源。本實(shí)施例中提供的方法與實(shí)施例三中提供的方法的其它部分可以相互參見,在此 不在贅述。本實(shí)施例提供的技術(shù)方案可以將經(jīng)過計(jì)數(shù)獲取到的多個(gè)已執(zhí)行階段的線程推測(cè) 深度值存儲(chǔ),方便了后續(xù)執(zhí)行階段訪問讀取作為后續(xù)階段的線程級(jí)推測(cè)能力預(yù)測(cè)評(píng)估值。實(shí)施例五不同串行應(yīng)用程序之間或單個(gè)串行程序內(nèi)部不同執(zhí)行階段的相關(guān)性的強(qiáng)弱可能 會(huì)不同,因此為了更加準(zhǔn)確的能夠更加準(zhǔn)確的預(yù)測(cè)評(píng)估到下一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí) 行能力,本實(shí)施例結(jié)合實(shí)施例一和實(shí)施例三中提供的方法,提供了串行程序線程級(jí)推測(cè)執(zhí) 行能力評(píng)估方法的另一種實(shí)現(xiàn)方式,如圖8所示,為該實(shí)現(xiàn)方式的一種流程示意圖,具體包括以下步驟步驟S801,從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù);步驟S802,判斷下一個(gè)推測(cè)線程是否驗(yàn)證為正確推測(cè)線程,如果是,執(zhí)行步驟 S803,否則,執(zhí)行步驟S804 ;步驟S803,將所述執(zhí)行階段的正確推測(cè)線程數(shù)目加1,并返回執(zhí)行步驟S802 ;步驟S804,結(jié)束計(jì)數(shù)流程,得到該執(zhí)行階段的正確推測(cè)線程數(shù)目,并確定該數(shù)目為 該執(zhí)行階段的線程推測(cè)深度值;按照上述方式分別獲取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;步驟S805,按照每個(gè)執(zhí)行階段的非推測(cè)線程為索引將該執(zhí)行階段的線程推測(cè)深度 值存儲(chǔ)到推測(cè)深度局部歷史表中;步驟S806,使用當(dāng)前執(zhí)行階段的非推測(cè)線程為索引訪問推測(cè)深度局部歷史表,作 為當(dāng)前執(zhí)行階段線程級(jí)推測(cè)執(zhí)行能力的第一評(píng)估值;步驟S807,確定所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為當(dāng)前執(zhí)行階 段線程級(jí)推測(cè)執(zhí)行能力的第二評(píng)估值;步驟S808,執(zhí)行當(dāng)前執(zhí)行階段并獲取當(dāng)前執(zhí)行階段的線程推測(cè)深度值;步驟S809,判斷將所述線程推測(cè)深度值分別和所述第一預(yù)估值、第二預(yù)估值的誤 差的大小;當(dāng)?shù)谝活A(yù)估值更接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),執(zhí)行步驟S810, 當(dāng)?shù)诙A(yù)估值更接近當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),執(zhí)行步驟S811 ;步驟S810,在所述當(dāng)前執(zhí)行階段下一次執(zhí)行之初,以其非推測(cè)線程為索引訪問所 述推測(cè)深度局部歷史表,將得到值作為其線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。步驟S811,在所述當(dāng)前執(zhí)行階段下一次執(zhí)行前,確定多個(gè)已執(zhí)行階段的線程推測(cè) 深度值的平均值為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。此外,當(dāng)?shù)谝活A(yù)估值和第二預(yù)估值同樣接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值 時(shí),可以根據(jù)需要選擇當(dāng)前執(zhí)行階段的線程推測(cè)深度值或當(dāng)前執(zhí)行階段的多個(gè)已執(zhí)行階段 的線程推測(cè)深度值的平均值中的任意一個(gè),作為所述當(dāng)前執(zhí)行階段的下一次執(zhí)行前的線程 級(jí)推測(cè)執(zhí)行能力評(píng)估值。上述步驟的具體實(shí)施方式
是實(shí)施例一和實(shí)施例三中提供的具體實(shí)施方式
的結(jié)合 和優(yōu)選,其相同之處可以與實(shí)施例一和實(shí)施例三相互參見,在此不再贅述。本實(shí)施例提供的技術(shù)方案與實(shí)施例一到實(shí)施例四提供的技術(shù)方案相比較,通過 比較兩種方式的預(yù)估值,選取更為準(zhǔn)確的預(yù)估值,能夠更加準(zhǔn)確的能夠更加準(zhǔn)確的預(yù)測(cè)評(píng) 估到一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力,進(jìn)一步的實(shí)現(xiàn)充分發(fā)揮串行程序的并行執(zhí)行能 力,提高多核平臺(tái)上串行程序的執(zhí)行效率。實(shí)施例六相應(yīng)于實(shí)施例二和實(shí)施例四提供的方案,在實(shí)施例五中,也可以將經(jīng)過計(jì)數(shù)獲取 到的多個(gè)已執(zhí)行階段的線程推測(cè)深度值,或最近已執(zhí)行階段的線程推測(cè)深度值分別存儲(chǔ), 以方便后續(xù)執(zhí)行階段訪問讀取作為后續(xù)階段的線程級(jí)推測(cè)能力預(yù)測(cè)評(píng)估值,因此,實(shí)施例 五所提供的方案中,在所述分別獲取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值之后, 還可以包括分別將所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到全局歷史移位寄存器中;
在執(zhí)行所述當(dāng)前執(zhí)行階段之前,訪問所述全局歷史移位寄存器,得到串行程序的 多個(gè)已執(zhí)行階段的線程推測(cè)深度值。上述步驟的具體實(shí)施方式
是實(shí)施例二和實(shí)施例四中提供的具體實(shí)施方式
的結(jié)合, 其相同之處可以與實(shí)施例二和實(shí)施例四相互參見,在此不再贅述。此外,實(shí)施例五和本實(shí)施例中,也可以以最近2個(gè)、3個(gè)或大于3個(gè)的已執(zhí)行階段的 線程推測(cè)深度值的平均值作為下一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。以最近的三個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為下一個(gè)執(zhí)行階段的線 程級(jí)推測(cè)執(zhí)行能力評(píng)估值為例所述確定所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值平均值為當(dāng)前執(zhí)行階段線程級(jí) 推測(cè)執(zhí)行能力的第二評(píng)估值,包括確定最近的三個(gè)已執(zhí)行階段的線程推測(cè)深度值平均值為當(dāng)前執(zhí)行階段線程級(jí)推 測(cè)執(zhí)行能力的第二評(píng)估值;所述確定包括當(dāng)前執(zhí)行階段的多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為 所述當(dāng)前執(zhí)行階段的下一執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值,包括確定包括當(dāng)前執(zhí)行階段的最近三個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為 所述當(dāng)前執(zhí)行階段的下一執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。上述步驟的具體實(shí)施方式
與和實(shí)施例四中提供的具體實(shí)施方式
的類似,其相同之 處可以與實(shí)施例四中提供的技術(shù)方案相互參見,在此不再贅述。本實(shí)施例提供的技術(shù)方案,可以將經(jīng)過計(jì)數(shù)獲取到的多個(gè)已執(zhí)行階段的實(shí)際線程 推測(cè)深度值,或最近已執(zhí)行階段的實(shí)際線程推測(cè)深度值分別存儲(chǔ),方便了后續(xù)執(zhí)行階段訪 問讀取作為后續(xù)階段的線程級(jí)推測(cè)能力預(yù)測(cè)評(píng)估值。實(shí)施例七相應(yīng)于實(shí)施例一和實(shí)施例二中提供的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,本 實(shí)施例提供了一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器,如圖8所示,為所述評(píng)估器的結(jié) 構(gòu)示意圖,包括計(jì)數(shù)器901,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階 段正確推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值;存儲(chǔ)單元902,包括推測(cè)深度局部歷史表,用于以所述執(zhí)行階段的非推測(cè)線程為索 引,將所述執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷史表中;預(yù)測(cè)單元903,用于在串行程序的任一執(zhí)行階段執(zhí)行之前,以該執(zhí)行階段的非推測(cè) 線程為索引,訪問所述推測(cè)深度局部歷史表,將返回值作為該執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行 能力的評(píng)估值;此外,本實(shí)施例提供的評(píng)估器,還可以包括更新單元904,用于在任一執(zhí)行階段執(zhí)行結(jié)束后,以所述計(jì)數(shù)器獲取到的該執(zhí)行 階段的線程推測(cè)深度值,更新所述推測(cè)深度局部歷史表中該執(zhí)行階段的非推測(cè)線程索引的值。具體的,本實(shí)施例提供的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器可以采用如下方式 評(píng)估一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力計(jì)數(shù)步驟假設(shè)線程TO為該執(zhí)行階段的非推測(cè)線程,線程Tl到Tn為該執(zhí)行階段的推測(cè)線程,以當(dāng)前執(zhí)行階段起始線程TO地址為索引,使用計(jì)數(shù)器記錄的當(dāng)前執(zhí)行階段的 推測(cè)執(zhí)行深度值η更新推測(cè)深度局部歷史表對(duì)應(yīng)表項(xiàng)。在該階段的執(zhí)行過程中,如果線程 TO執(zhí)行結(jié)束,且Tl已經(jīng)被驗(yàn)證為正確推測(cè)的線程,此時(shí)可以為該執(zhí)行階段的線程推測(cè)深度 值加1,即如果所述線程推測(cè)深度值的初始值為0,則在Tl驗(yàn)證為正確執(zhí)行的線程后,將所 述線程推測(cè)深度值由0更新為1,當(dāng)線程Tl執(zhí)行結(jié)束后,且Τ2驗(yàn)證為正確執(zhí)行的線程后, 則將所述線程推測(cè)深度值由1更新為2,依次類推,Τ3到Tn都驗(yàn)證為正確執(zhí)行的推測(cè)線程 時(shí),所述線程推測(cè)深度值更新為η,如果Tn的下一個(gè)線程驗(yàn)證為錯(cuò)誤推測(cè)的線程時(shí),結(jié)束計(jì) 數(shù)過程,此時(shí)得到的線程推測(cè)深度值η就是該執(zhí)行階段的線程推測(cè)深度值。評(píng)估步驟在一個(gè)執(zhí)行階段實(shí)際運(yùn)行之初,以該執(zhí)行階段的非推測(cè)線程TO為索 引,訪問所述推測(cè)深度局部歷史表對(duì)應(yīng)表項(xiàng),得到對(duì)應(yīng)的線程推測(cè)深度值η,并將η作為該 執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。進(jìn)一步的,如果多核處理器平臺(tái)結(jié)構(gòu)上采用線程 與處理器核一一對(duì)應(yīng)的執(zhí)行方式,則后續(xù)步驟較佳的可以為該執(zhí)行階段的線程分配η+1個(gè) 處理器核。由于本實(shí)施例是實(shí)施例一和實(shí)施例二中提供的方法實(shí)施例對(duì)應(yīng)的裝置實(shí)施例,其 類似之處可以相互參見,在此不在贅述。本實(shí)施例提供的基于推測(cè)深度局部歷史的評(píng)估器,可以在一個(gè)執(zhí)行階段在實(shí)際運(yùn) 行之前,得到該執(zhí)行階段的線程推測(cè)執(zhí)行能力預(yù)測(cè)評(píng)估值,進(jìn)而根據(jù)得到的預(yù)估值,在串行 程序的一個(gè)執(zhí)行階段實(shí)際執(zhí)行時(shí),及時(shí)的為該執(zhí)行階段分配處理器資源,實(shí)現(xiàn)充分發(fā)揮串 行程序的并行執(zhí)行能力,提高多核平臺(tái)上串行程序的執(zhí)行效率。實(shí)施例八相應(yīng)于實(shí)施例三和實(shí)施例四中提供的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,本 實(shí)施例提供了一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器,包括計(jì)數(shù)器,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段 正確推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值,并按照上述方式分別獲取串 行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;預(yù)測(cè)單元,用于確定所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值為當(dāng)前執(zhí)行 單元線程級(jí)推測(cè)執(zhí)行能力的評(píng)估值。以獲取到的三個(gè)已執(zhí)行階段的線程推測(cè)深度值為n、y、ζ為例,如果多核結(jié)構(gòu)上采 用線程與處理器核一一對(duì)應(yīng)的執(zhí)行,此時(shí)后續(xù)的資源管理機(jī)制需要為的下一執(zhí)行階段分配 (n+y+z)/3個(gè)處理器核資源。如果數(shù)值(n+y+z)/3為非整數(shù)數(shù)值時(shí),為充分發(fā)揮串行程序 的并行執(zhí)行能力,可以為下一執(zhí)行階段分配大于數(shù)值(n+y+z)/3的最小整數(shù)個(gè)處理器核資源。此外,還可將經(jīng)過計(jì)數(shù)獲取到的多個(gè)已執(zhí)行階段的實(shí)際線程推測(cè)深度值存儲(chǔ),以 方便后續(xù)執(zhí)行階段訪問讀取,因此所述評(píng)估器,還可以包括存儲(chǔ)單元,包括全局歷史移位寄存器,用于分別將所述多個(gè)已執(zhí)行階段的線程推 測(cè)深度值存儲(chǔ)到全局歷史移位寄存器;更新單元,用于移除全局歷史移位寄存器中存儲(chǔ)時(shí)間最長(zhǎng)的一項(xiàng),并將最近的一 個(gè)已執(zhí)行階段的線程推測(cè)執(zhí)行能力加入全局歷史移位寄存器。此外,本實(shí)施例中可以以最近2個(gè)、3個(gè)或大于3個(gè)的已執(zhí)行階段的線程推測(cè)深度
14值的平均值作為下一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。以將最近的三個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為下一個(gè)執(zhí)行階段的 線程級(jí)推測(cè)執(zhí)行能力評(píng)估值為例所述全局歷史移位寄存器中分別存儲(chǔ)有最近的三個(gè)已執(zhí)行階段的線程推測(cè)深度 值。所述全局歷史移位寄存器中可以包括三個(gè)數(shù)據(jù)的入口項(xiàng),在當(dāng)前執(zhí)行階段執(zhí)行的同時(shí), 記錄當(dāng)前階段的線程推測(cè)深度值,當(dāng)前階段執(zhí)行完畢后,將全局歷史移位寄存器中存儲(chǔ)的 最遠(yuǎn)的已執(zhí)行階段的線程推測(cè)深度值移除,將存儲(chǔ)的其它兩個(gè)線程推測(cè)深度值依次向前移 位,并將計(jì)數(shù)得到的當(dāng)前執(zhí)行階段的線程推測(cè)深度值,存儲(chǔ)到所述全局歷史移位寄存器中。由于本實(shí)施例是實(shí)施例三和實(shí)施例四中提供的方法實(shí)施例對(duì)應(yīng)的裝置實(shí)施例,其 類似之處可以相互參見,在此不在贅述。本實(shí)施例中提供的基于推測(cè)深度全局歷史的評(píng)估器與實(shí)施例七中提供的基于推 測(cè)深度局部歷史的評(píng)估器相比,采用了最近的多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均 值,取代了最近的一個(gè)已執(zhí)行階段的線程推測(cè)深度值,作為下一個(gè)執(zhí)行階段的線程級(jí)推測(cè) 執(zhí)行能力評(píng)估值。在一個(gè)執(zhí)行階段的首次執(zhí)行的情況下,能夠更加準(zhǔn)確的預(yù)測(cè)評(píng)估到下一 個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力。實(shí)施例九相應(yīng)于實(shí)施例五和實(shí)施例六中提供的串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,本 實(shí)施例提供了一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器,如圖10所示,為該評(píng)估器的一種 結(jié)構(gòu)示意圖,包括計(jì)數(shù)器1001,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行 階段正確推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值,并按照上述方式分別獲 取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;第一存儲(chǔ)單元1002,包括推測(cè)深度局部歷史表,用于以所述執(zhí)行階段的非推測(cè)線 程為索引,將該執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷史表中;第二存儲(chǔ)單元1003,包括全局歷史移位寄存器,用于分別將所述多個(gè)已執(zhí)行階段 的線程推測(cè)深度值存儲(chǔ)到全局歷史移位寄存器;第一預(yù)測(cè)單元1004,用于以所述當(dāng)前執(zhí)行階段的非推測(cè)線程為索引,訪問推測(cè)深 度局部歷史表,將返回值作為所述執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力的第一評(píng)估值;第二預(yù)測(cè)單元1005,用于將所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值平均值作為當(dāng) 前執(zhí)行階段線程級(jí)推測(cè)執(zhí)行能力的第二評(píng)估值。;評(píng)估偏差比較單元1006,用于將所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值分別和所述
第一預(yù)估值、第二預(yù)估值相比較;評(píng)估確定單元1007,用于當(dāng)?shù)谝活A(yù)估值更接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深度 值時(shí),在所述當(dāng)前執(zhí)行階段下一次執(zhí)行之初,以其非推測(cè)線程為索引訪問所述推測(cè)深度局 部歷史表,將得到的值確定為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值;當(dāng)?shù)诙A(yù)估 值更接近當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),確定多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平 均值為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。同時(shí),如果當(dāng)?shù)谝活A(yù)估值和第二預(yù)估值同樣接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深 度值時(shí),可以根據(jù)需要選擇當(dāng)前執(zhí)行階段的線程推測(cè)深度值或當(dāng)前執(zhí)行階段的多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值中的一個(gè),作為所述當(dāng)前執(zhí)行階段的下一次執(zhí)行時(shí)的線程 級(jí)推測(cè)執(zhí)行能力評(píng)估值。此外,還可以將經(jīng)過計(jì)數(shù)獲取到的多個(gè)已執(zhí)行階段的實(shí)際線程推測(cè)深度值,或最 近已執(zhí)行階段的實(shí)際線程推測(cè)深度值分別存儲(chǔ),以方便后續(xù)執(zhí)行階段訪問讀取作為后續(xù)階 段的線程級(jí)推測(cè)能力預(yù)測(cè)評(píng)估值,因此所述評(píng)估器,如圖11的結(jié)構(gòu)示意圖所示,還可以包 括第一更新單元1008,用于在任一執(zhí)行階段執(zhí)行結(jié)束后,以所述計(jì)數(shù)器獲取到的該 執(zhí)行階段的線程推測(cè)深度值,更新所述推測(cè)深度局部歷史表中該執(zhí)行階段的非推測(cè)線程索 引的值;第二更新單元1009,用于移除全局歷史移位寄存器中存儲(chǔ)時(shí)間最長(zhǎng)的一項(xiàng),將最 近的已執(zhí)行階段的線程推測(cè)執(zhí)行能力加入全局歷史移位寄存器。本實(shí)施例提供的評(píng)估器具體的可以通過以下方式實(shí)現(xiàn)評(píng)估串行程序的一個(gè)執(zhí)行 階段的線程級(jí)推測(cè)執(zhí)行能力如圖12所示,為本實(shí)施例提供的評(píng)估器實(shí)現(xiàn)線程級(jí)推測(cè)能力評(píng)估的實(shí)現(xiàn)方式示 意圖。本實(shí)施例提供的評(píng)估器可以包括實(shí)施例七中提供的基于推測(cè)深度局部歷史的線程級(jí) 推測(cè)執(zhí)行能力評(píng)估器,和實(shí)施例八中提供的基于推測(cè)深度全局歷史的線程級(jí)推測(cè)執(zhí)行能力 評(píng)估器;此外本實(shí)施例提供的評(píng)估器還可以包括計(jì)數(shù)器、評(píng)估偏差比較單元、評(píng)估器選擇表 和評(píng)估確定單元。其中計(jì)數(shù)器可以由基于推測(cè)深度局部歷史的評(píng)估器、基于推測(cè)深度全局 歷史的評(píng)估器以及本實(shí)施例提供的計(jì)數(shù)器三者共享,其功能是記錄串行程序執(zhí)行階段的實(shí) 際線程推測(cè)深度值;評(píng)估偏差比較單元用于比較上一次訪問兩個(gè)評(píng)估器(基于推測(cè)深度局 部歷史的評(píng)估器和基于推測(cè)深度全局歷史的評(píng)估器)的評(píng)估結(jié)果與當(dāng)前執(zhí)行階段推實(shí)際 測(cè)深度值的偏差,根據(jù)程序執(zhí)行的時(shí)間局部性特征,當(dāng)程序執(zhí)行再次到達(dá)同一代碼區(qū)域時(shí), 評(píng)估偏差較小的評(píng)估器應(yīng)當(dāng)作為該代碼區(qū)域下一次執(zhí)行時(shí)的選擇;評(píng)估器選擇表包含多個(gè) 入口項(xiàng),用于存儲(chǔ)評(píng)估偏差比較單元產(chǎn)生的對(duì)評(píng)估器的選擇值,由于只需要在基于局部歷 史的評(píng)估器和基于全局歷史的評(píng)估器兩者中選一,因此評(píng)估器選擇表每項(xiàng)入口只需要1位 存儲(chǔ)即可;評(píng)估確定單元用于根據(jù)評(píng)估器選擇表對(duì)基于推測(cè)深度局部歷史的評(píng)估器和基于 推測(cè)深度全局歷史的評(píng)估器的評(píng)估結(jié)果進(jìn)行選擇。由于本實(shí)施例提供的評(píng)估器包含基于推測(cè)深度局部歷史的評(píng)估器和基于推測(cè)深 度全局歷史的評(píng)估器,相似部分可參見實(shí)施例七和實(shí)施例八中的描述,在此不再贅述。本實(shí) 施例只詳細(xì)介紹評(píng)估偏差比較單元和評(píng)估器選擇表的訪問方式步驟一評(píng)估偏差比較單元比較評(píng)估結(jié)果。可采用如下方式實(shí)現(xiàn)更新評(píng)估器選 擇表,當(dāng)產(chǎn)生推測(cè)執(zhí)行錯(cuò)誤時(shí),首先使用計(jì)數(shù)器記錄的推測(cè)深度值與上次訪問基于推測(cè)深 度局部歷史評(píng)估器和基于推測(cè)深度全局歷史評(píng)估器產(chǎn)生的數(shù)值進(jìn)行比較,產(chǎn)生更接近實(shí)際 推測(cè)深度值的評(píng)估器將被作為下一次評(píng)估的選擇;圖中使用評(píng)估偏差比較單元,判斷推測(cè) 深度局部歷史評(píng)估器的偏差是否大于推測(cè)深度全局歷史評(píng)估器的偏差,如果是,則評(píng)估偏 差比較單元產(chǎn)生結(jié)果為1,表示下一次應(yīng)當(dāng)采用基于推測(cè)深度全局歷史的評(píng)估器;否則產(chǎn) 生0,表示下一次應(yīng)當(dāng)采用基于推測(cè)深度全局歷史的評(píng)估器。然后采用執(zhí)行階段起始線程地 址對(duì)評(píng)估器選擇表進(jìn)行索引,使用評(píng)估偏差比較器產(chǎn)生的結(jié)果更新其中的選擇數(shù)值。圖中 評(píng)估偏差比較器產(chǎn)生的結(jié)果為0,執(zhí)行階段起始線程TO地址索引的選擇表表項(xiàng)初始值為1,更新后變?yōu)?。步驟二 評(píng)估值選擇。由于Tn成為新的非推測(cè)線程,并開始一個(gè)新的執(zhí)行階段,因 此使用Tn地址對(duì)評(píng)估器選擇表進(jìn)行索引,相應(yīng)入口項(xiàng)的布爾數(shù)值作為選擇基于推測(cè)深度 局部歷史的評(píng)估器評(píng)估結(jié)果和基于推測(cè)深度全局歷史的評(píng)估器評(píng)估結(jié)果的選擇控制。圖中 Tn地址索引選擇表表項(xiàng)數(shù)值為0,表示以Tn為起始的執(zhí)行階段推測(cè)深度應(yīng)該選擇基于推測(cè) 深度局部歷史的評(píng)估器產(chǎn)生結(jié)果,通過評(píng)估確定單元,本實(shí)施例提供的評(píng)估器最終的輸出 結(jié)果為基于推測(cè)深度局部歷史的評(píng)估器產(chǎn)生結(jié)果X。進(jìn)一步的,如果多核處理器平臺(tái)結(jié)構(gòu)上采用線程與處理器核一一對(duì)應(yīng)的執(zhí)行方 式,則后續(xù)步驟中的處理器資源分配單元較佳的可以為該執(zhí)行階段下一次執(zhí)行時(shí)分配X+1 個(gè)處理器核。本實(shí)施例提供的評(píng)估器綜合了實(shí)施例七和實(shí)施例八中提供的評(píng)估器的優(yōu)點(diǎn),通過 比較兩種方式的預(yù)估值,選取更為準(zhǔn)確的預(yù)估值,能夠更加準(zhǔn)確的能夠更加準(zhǔn)確的預(yù)測(cè)評(píng) 估到一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力,進(jìn)一步的實(shí)現(xiàn)充分發(fā)揮串行程序的并行執(zhí)行能 力,提高多核平臺(tái)上串行程序的執(zhí)行效率。本申請(qǐng)實(shí)施例提供的技術(shù)方案,通過在一個(gè)執(zhí)行階段的實(shí)際執(zhí)行過程中,通過統(tǒng) 計(jì)正確的推測(cè)線程的數(shù)量得到該階段的實(shí)際線程推測(cè)深度值,進(jìn)而根據(jù)已執(zhí)行的階段的歷 史線程推測(cè)深度值預(yù)測(cè)下一個(gè)未執(zhí)行的階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值,實(shí)現(xiàn)了以在一 個(gè)執(zhí)行階段在實(shí)際運(yùn)行之前,得到該執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力預(yù)測(cè)評(píng)估值,進(jìn)而根 據(jù)得到的預(yù)估值,在串行程序的一個(gè)執(zhí)行階段實(shí)際執(zhí)行時(shí),由后續(xù)步驟及時(shí)的為該執(zhí)行階 段分配處理器資源,充分發(fā)揮串行程序的并行執(zhí)行能力,提高多核平臺(tái)上串行程序的執(zhí)行 效率。同時(shí)本申請(qǐng)實(shí)施例提供的技術(shù)方案,利用較少的硬件資源就可以完成線程級(jí)推測(cè) 執(zhí)行能力評(píng)估;能夠?qū)Υ谐绦虻木€程級(jí)推測(cè)執(zhí)行能力做出準(zhǔn)確評(píng)估(采用SPEC2000測(cè)試 程序,平均預(yù)測(cè)正確率約為92% ),可以有效指導(dǎo)多核結(jié)構(gòu)上處理器核資源的分配和調(diào)整; 與具體的多核處理器平臺(tái)的結(jié)構(gòu)無關(guān),可用于任何采用串行程序線程級(jí)推測(cè)執(zhí)行模型的多 核處理器平臺(tái)。對(duì)于本發(fā)明的裝置實(shí)施例而言,由于其基本相應(yīng)于方法實(shí)施例,所以相關(guān)之處參 見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為 分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或 者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)設(shè)備上。可以根據(jù)實(shí) 際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員 在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,在沒有超過 本申請(qǐng)的精神和范圍內(nèi),可以通過其他的方式實(shí)現(xiàn)。當(dāng)前的實(shí)施例只是一種示范性的例子, 不應(yīng)該作為限制,所給出的具體內(nèi)容不應(yīng)該限制本申請(qǐng)的目的。例如,所述單元或子單元的 劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或多個(gè) 子單元結(jié)合一起。另外,多個(gè)單元可以或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些 特征可以忽略,或不執(zhí)行。另外,所描述裝置和方法以及不同實(shí)施例的示意圖,在不超出本申請(qǐng)的范圍內(nèi),可以與其它系統(tǒng),模塊,技術(shù)或方法結(jié)合或集成。另一點(diǎn),所顯示或討論的相互之間的耦合或 直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電 性,機(jī)械或其它的形式。 本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他 實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)所公開的實(shí)施例的上 述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng) 域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的 精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些 實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。
權(quán)利要求
1.一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,其特征在于,包括從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確推測(cè)線程數(shù) 目,得到該執(zhí)行階段的線程推測(cè)深度值;確定所述執(zhí)行階段的線程推測(cè)深度值為所述執(zhí)行階段的下一次執(zhí)行時(shí)的線程級(jí)推測(cè) 執(zhí)行能力評(píng)估值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在得到該執(zhí)行階段的線程推測(cè)深度值之 后,還包括以所述執(zhí)行階段的非推測(cè)線程為索引,將該執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深 度局部歷史表中;在所述執(zhí)行階段下一次執(zhí)行之初,以其非推測(cè)線程地址為索引,訪問所述推測(cè)深度局 部歷史表,得到所述執(zhí)行階段的線程推測(cè)深度值。
3.—種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,其特征在于,包括從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確推測(cè)線程數(shù) 目,并確定為該執(zhí)行階段的線程推測(cè)深度值;按照上述方式分別獲取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值; 確定獲取到的多個(gè)已執(zhí)行階段的線程推測(cè)深度值的均值作為所述串行程序的下一個(gè) 執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在所述分別獲取串行程序的多個(gè)已執(zhí)行 階段的線程推測(cè)深度值之后,還包括分別將所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到全局歷史移位寄存器中; 在執(zhí)行所述下一個(gè)執(zhí)行階段之初,訪問所述全局歷史移位寄存器,獲取到串行程序的 多個(gè)已執(zhí)行階段的線程推測(cè)深度值。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于 所述多個(gè)已執(zhí)行的階段為最近的三個(gè)已執(zhí)行的階段。
6.一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法,其特征在于,包括從串行程序一個(gè)執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確推測(cè)線程數(shù) 目,并確定為該執(zhí)行階段的線程推測(cè)深度值;按照上述方式分別獲取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值,并按照每個(gè)執(zhí) 行階段的非推測(cè)線程為索引將該執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷史表 中;使用當(dāng)前執(zhí)行階段的非推測(cè)線程為索引訪問推測(cè)深度局部歷史表,作為當(dāng)前執(zhí)行階段 線程級(jí)推測(cè)執(zhí)行能力的第一評(píng)估值;確定所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值作為當(dāng)前執(zhí)行階段線程級(jí)推測(cè) 執(zhí)行能力的第二評(píng)估值;執(zhí)行當(dāng)前執(zhí)行階段并獲取當(dāng)前執(zhí)行階段的線程推測(cè)深度值;將所述線程推測(cè)深度值分別和所述第一預(yù)估值、第二預(yù)估值相比較;當(dāng)?shù)谝活A(yù)估值更 接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),在所述當(dāng)前執(zhí)行階段下一次執(zhí)行之初,以其 非推測(cè)線程為索引訪問所述推測(cè)深度局部歷史表,將得到的值確定為其下一次執(zhí)行時(shí)的線 程級(jí)推測(cè)執(zhí)行能力評(píng)估值;當(dāng)?shù)诙A(yù)估值更接近當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),確定多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng) 估值。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于在所述分別獲取串行程序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值之后,還包括 分別將所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到全局歷史移位寄存器中; 在執(zhí)行所述當(dāng)前執(zhí)行階段之前,訪問所述全局歷史移位寄存器,得到串行程序的多個(gè) 已執(zhí)行階段的線程推測(cè)深度值。
8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于 所述多個(gè)已執(zhí)行的階段為最近的三個(gè)已執(zhí)行的階段。
9.一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器,其特征在于包括計(jì)數(shù)器,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確 推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值;存儲(chǔ)單元,包括推測(cè)深度局部歷史表,用于以所述執(zhí)行階段的非推測(cè)線程為索引,將所 述執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷史表中;預(yù)測(cè)單元,用于在串行程序的任一執(zhí)行階段執(zhí)行之前,以該執(zhí)行階段的非推測(cè)線程為 索引,訪問所述推測(cè)深度局部歷史表,將返回值作為該執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力的 評(píng)估值。
10.根據(jù)權(quán)利要求9所述的評(píng)估器,其特征在于,還包括更新單元,用于在任一執(zhí)行階段執(zhí)行結(jié)束后,以所述計(jì)數(shù)器獲取到的該執(zhí)行階段的線 程推測(cè)深度值,更新所述推測(cè)深度局部歷史表中該執(zhí)行階段的非推測(cè)線程索引的值。
11.一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器,其特征在于包括計(jì)數(shù)器,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確 推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值,并按照上述方式分別獲取串行程 序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;預(yù)測(cè)單元,用于確定所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值為當(dāng)前執(zhí)行單元 線程級(jí)推測(cè)執(zhí)行能力的評(píng)估值。
12.根據(jù)權(quán)利要求11所述的評(píng)估器,其特征在于,還包括存儲(chǔ)單元,包括全局歷史移位寄存器,用于分別將所述多個(gè)已執(zhí)行階段的線程推測(cè)深 度值存儲(chǔ)到全局歷史移位寄存器;更新單元,用于移除全局歷史移位寄存器中存儲(chǔ)時(shí)間最長(zhǎng)的一項(xiàng),并將最近的一個(gè)已 執(zhí)行階段的線程推測(cè)執(zhí)行能力加入全局歷史移位寄存器。
13.根據(jù)權(quán)利要求11或12所述的評(píng)估器,其特征在于所述全局歷史移位寄存器中存儲(chǔ)有最近的三個(gè)已執(zhí)行階段的線程推測(cè)深度值。
14.一種串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估器,其特征在于包括計(jì)數(shù)器,用于從串行程序任一執(zhí)行階段的非推測(cè)線程開始計(jì)數(shù),獲取該執(zhí)行階段正確 推測(cè)線程數(shù)目,并確定為該執(zhí)行階段的線程推測(cè)深度值,并按照上述方式分別獲取串行程 序的多個(gè)已執(zhí)行階段的線程推測(cè)深度值;第一存儲(chǔ)單元,包括推測(cè)深度局部歷史表,用于以所述執(zhí)行階段的非推測(cè)線程為索引, 將該執(zhí)行階段的線程推測(cè)深度值存儲(chǔ)到推測(cè)深度局部歷史表中;第二存儲(chǔ)單元,包括全局歷史移位寄存器,用于分別將所述多個(gè)已執(zhí)行階段的線程推 測(cè)深度值存儲(chǔ)到全局歷史移位寄存器;第一預(yù)測(cè)單元,用于以所述當(dāng)前執(zhí)行階段的非推測(cè)線程為索引,訪問推測(cè)深度局部歷 史表,將返回值作為所述執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力的第一評(píng)估值;第二預(yù)測(cè)單元,用于將所述多個(gè)已執(zhí)行階段的線程推測(cè)深度值平均值作為當(dāng)前執(zhí)行階 段線程級(jí)推測(cè)執(zhí)行能力的第二評(píng)估值;評(píng)估偏差比較單元,用于將所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值分別和所述第一預(yù)估 值、第二預(yù)估值相比較;評(píng)估確定單元,用于當(dāng)?shù)谝活A(yù)估值更接近所述當(dāng)前執(zhí)行階段的線程推測(cè)深度值時(shí),在 所述當(dāng)前執(zhí)行階段下一次執(zhí)行前,以其非推測(cè)線程為索引訪問所述推測(cè)深度局部歷史表, 將得到的值確定為其下一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值;當(dāng)?shù)诙A(yù)估值更接近當(dāng) 前執(zhí)行階段的線程推測(cè)深度值時(shí),確定多個(gè)已執(zhí)行階段的線程推測(cè)深度值的平均值為其下 一次執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。
15.根據(jù)權(quán)利要求14所述的評(píng)估器,其特征在于,還包括第一更新單元,用于在任一執(zhí)行階段執(zhí)行結(jié)束后,以所述計(jì)數(shù)器獲取到的該執(zhí)行階段 的線程推測(cè)深度值,更新所述推測(cè)深度局部歷史表中該執(zhí)行階段的非推測(cè)線程索引的值;第二更新單元,用于移除全局歷史移位寄存器中存儲(chǔ)時(shí)間最長(zhǎng)的一項(xiàng),將最近的已執(zhí) 行階段的線程推測(cè)執(zhí)行能力加入全局歷史移位寄存器。
16.根據(jù)權(quán)利要求14或15所述的評(píng)估器,其特征在于所述全局歷史移位寄存器中分別存儲(chǔ)有最近的三個(gè)已執(zhí)行階段的線程推測(cè)深度值。
全文摘要
本申請(qǐng)公開了串行程序線程級(jí)推測(cè)執(zhí)行能力評(píng)估方法和評(píng)估器,所述方法包括通過記錄串行程序一個(gè)執(zhí)行階段在執(zhí)行過程中包括的正確推測(cè)的線程的數(shù)目,得到該執(zhí)行階段的線程推測(cè)深度值;確定所述線程推測(cè)深度值作為所述執(zhí)行階段后續(xù)重復(fù)執(zhí)行時(shí)的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值;或者,將所述執(zhí)行階段及其前幾個(gè)已執(zhí)行階段的線程級(jí)推測(cè)深度值的平均值作為所述執(zhí)行階段的下一個(gè)執(zhí)行階段的線程級(jí)推測(cè)執(zhí)行能力評(píng)估值。該方案能夠?qū)崿F(xiàn)在串行程序的一個(gè)任務(wù)階段執(zhí)行之前,預(yù)先評(píng)估該任務(wù)階段的線程級(jí)推測(cè)執(zhí)行能力,使后續(xù)執(zhí)行可以根據(jù)預(yù)估的推測(cè)執(zhí)行能力,及時(shí)的為其分配處理器資源,以充分發(fā)揮串行程序的并行執(zhí)行能力,提高多核平臺(tái)上串行程序的執(zhí)行效率。
文檔編號(hào)G06F9/50GK102063289SQ201010278549
公開日2011年5月18日 申請(qǐng)日期2010年9月7日 優(yōu)先權(quán)日2010年9月7日
發(fā)明者任永青, 劉揚(yáng), 孫濤, 安虹, 毛夢(mèng)捷, 鄧春華 申請(qǐng)人:中國科學(xué)技術(shù)大學(xué)