專利名稱:改進(jìn)推測多線程的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器體系結(jié)構(gòu)設(shè)計(jì)領(lǐng)域,更具體的說,是涉及一種改進(jìn)TLS(Thread Level Speculation,推測多線程)性能的方法及裝置。
背景技術(shù):
隨著半導(dǎo)體工藝的發(fā)展,單個處理器芯片上也可放置多個計(jì)算核心,其采用的主要為如圖I所示的片上CMP(Chip Multiprocessor,多核處理器)的設(shè)計(jì),使多個線程可以并行運(yùn)行,從而繼續(xù)提高處理器性能。在基于CMP進(jìn)行并行編程的過程中,一方面,程序員需要開發(fā)并行程序,為CMP提供多個可以同時運(yùn)行的線程;另一方面,對于已有的串行程序,也需要對它們進(jìn)行并行化。其中,在并行化已有的串行程序時,需要程序員手動創(chuàng)建多進(jìn)程,對它們進(jìn)行數(shù)據(jù)依賴分析,對于存在數(shù)據(jù)依賴關(guān)系的線程,需要插入通信和同步操作。采用上述方式并行化已由的串行程序不僅對程序員是巨大的負(fù)擔(dān),而且經(jīng)手工并行化 的程序的正確性和性能也無法保證。因此,現(xiàn)有技術(shù)中采用TLS技術(shù)簡化并行編程,同時保證程序性能和正確性而提出的。具體過程為使用TLS從串行程序中提取多個線程,然后推測地并行運(yùn)行它們時,并確保這些線程遵守原串行程序的串行語義。因此,TLS的推測線程可以被區(qū)分為“先驅(qū)線程”和“后繼線程”,分別對應(yīng)在原串行程序中先被執(zhí)行的指令序列和后被執(zhí)行的指令序列。在執(zhí)行過程中,TLS通過硬件或者軟件機(jī)制來記錄線程間數(shù)據(jù)共享信息,動態(tài)檢測數(shù)據(jù)依賴沖突。一旦檢測到線程間發(fā)生數(shù)據(jù)依賴沖突,TLS自動回退并重啟引發(fā)依賴沖突的線程。其中,出現(xiàn)數(shù)據(jù)沖突的情況為一個后繼線程首先讀取一個變量的值,然后該變量又被一個先驅(qū)線程改寫。這是現(xiàn)有技術(shù)中典型的一個“讀后寫依賴沖突”,在這種情形下,后繼線程讀取的值是一個“舊值”,該讀取舊值的動作叫做“未成熟讀取”。為了解決這個沖突,如圖2所示,TLS回退(squash)該后繼線程,然后重新執(zhí)行它,使其能夠讀取到正確的新值,以確保程序執(zhí)行的正確性。但是,在存在大量線程間數(shù)據(jù)依賴的程序中,發(fā)生依賴沖突的可能性非常大,因而也會發(fā)生大量的TLS推測線程回退。例如當(dāng)使用TLS對SPEC 2000程序art進(jìn)行8線程并行化時,其回退率為196%,而twolf程序的回退率高達(dá)375%。采用現(xiàn)有技術(shù)中的TLS方法,在回退的過程中不僅會放棄已經(jīng)完成的正確操作,浪費(fèi)了計(jì)算能力,而且在重新執(zhí)行線程時,需要再次讀取所需數(shù)據(jù),即需要執(zhí)行額外的訪存操作;因而,采用現(xiàn)有技術(shù)中的LTS方法回退率過高,增加TLS的功耗和開銷,進(jìn)而降低了 TLS的性能。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種改進(jìn)推測多線程性能的方法及裝置,以克服現(xiàn)有技術(shù)中由于“未成熟讀取”操作產(chǎn)生的線程回退,造成增加TLS的功耗、開銷,降低TLS性能的問題。為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案
一種改進(jìn)推測多線程性能的方法,包括獲取網(wǎng)絡(luò)消息中由先驅(qū)線程和后繼線程發(fā)出的推測線程消息,所述推測線程消息包括訪存請求消息;區(qū)分并排列承載于所述先驅(qū)線程和后繼線程上發(fā)出的訪存請求消息的優(yōu)先級順序,所述先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于所述后繼線程發(fā)出的訪存請求消息;依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)?。?yōu)選地,在獲取網(wǎng)絡(luò)消息中的推測線程消息之前,還包括
獲取網(wǎng)絡(luò)消息中的非推測線程的消息,執(zhí)行傳送。優(yōu)選地,包括當(dāng)不同的先驅(qū)線程發(fā)出不同的所述訪存請求消息時,不同的所述訪存請求消息之間的優(yōu)先級由承載其的所述先驅(qū)線程的位置決定,所述先驅(qū)線程的位置越靠前優(yōu)先級越聞。優(yōu)選地,包括當(dāng)不同的后繼線程發(fā)出不同的所述訪存請求消息時,不同的所述訪存請求消息之間的優(yōu)先級由承載其的所述后繼線程的位置決定,所述后繼線程的位置越靠前優(yōu)先級越聞。優(yōu)選地,依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)懀唧w過程為確認(rèn)經(jīng)片上網(wǎng)絡(luò)中的路由器傳送的訪存請求消息的類型;按照所述承載于所述先驅(qū)線程和后繼線程上的訪存請求消息的優(yōu)先級,排列需傳送的所述訪存請求消息的優(yōu)先級順序;依據(jù)所述優(yōu)先級順序向所述目錄節(jié)點(diǎn)傳送當(dāng)前優(yōu)先級最高的訪存請求消息,對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)?;?dāng)對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懳赐瓿蓵r,接收到來自發(fā)出優(yōu)先級較低的先驅(qū)線程或后繼線程上的訪存請求消息,向優(yōu)先級較低的先驅(qū)線程或后繼線程反饋未完成信息;所述優(yōu)先級較低的先驅(qū)線程或后繼線程執(zhí)行阻塞操作。優(yōu)選地,還包括當(dāng)無法區(qū)分承載于所述先驅(qū)線程或后繼線程上的所述訪存請求消息的優(yōu)先級時,按照輪轉(zhuǎn)調(diào)度策略執(zhí)行所述推測線程消息的傳送。優(yōu)選地,基于優(yōu)先級的包仲裁策略區(qū)分所述訪存請求消息的優(yōu)先級。一種改進(jìn)推測多線程性能的裝置,包括獲取單元,用于獲取網(wǎng)絡(luò)消息中由先驅(qū)線程和后驅(qū)線程發(fā)出的推測線程消息,所述推測線程消息包括訪存請求消息;區(qū)分排列單元,用于區(qū)分并排列承載于所述先驅(qū)線程和后繼線程上發(fā)出的訪存請求消息的優(yōu)先級順序,所述先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于所述后繼線程發(fā)出的訪存請求消息;傳送單元,用于依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)憽?優(yōu)選地,所述傳送單元包括確認(rèn)模塊,用于確認(rèn)經(jīng)片上網(wǎng)絡(luò)中的路由器傳送的訪存請求消息的類型;排隊(duì)模塊,用于按照所述承載于所述先驅(qū)線程和后繼線程上的訪存請求消息的優(yōu)先級,排列需傳送的所述訪存請求消息的優(yōu)先級順序;順序傳送模塊,用于依據(jù)所述優(yōu)先級順序向所述目錄節(jié)點(diǎn)傳送當(dāng)前優(yōu)先級最高的訪存請求消息,對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懀慌袛喾答伳K,用于判斷當(dāng)前所述目錄節(jié)點(diǎn)處的數(shù)據(jù)是否已完成讀或?qū)?,?dāng)對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懳赐瓿蓵r,接收到來自發(fā)出優(yōu)先級較低的先驅(qū)線程或后繼線程上的訪存請求消息,向優(yōu)先級較低的先驅(qū)線程或后繼線程反饋未完成信息;
阻塞模塊,用于所述優(yōu)先級較低的先驅(qū)線程或后繼線程執(zhí)行阻塞操作。優(yōu)選地,還包括輪轉(zhuǎn)調(diào)度策略執(zhí)行單元,用于當(dāng)無法區(qū)分承載于所述先驅(qū)線程或后繼線程上的所述訪存請求消息的優(yōu)先級時,按照輪轉(zhuǎn)調(diào)度策略執(zhí)行所述推測線程消息的傳送。經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明公開了一種改進(jìn)推測多線程性能的方法及裝置,通過區(qū)分承載于多個線程上的推測線程消息中的不同的訪存請求消息的優(yōu)先級,并依據(jù)不同的訪存請求消息各自對應(yīng)的線程的優(yōu)先級依次傳送至目錄節(jié)點(diǎn)處,以便于按照優(yōu)先級的順序完成對目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)憽S捎诔休d于多個線程中的先驅(qū)線程的訪存請求消息優(yōu)先級高于后繼線程的訪存請求消息,因而使對應(yīng)先驅(qū)線程的訪存請求消息可以更快的被傳送,避免對應(yīng)后繼線程的訪存請求消息先于先驅(qū)線程上的訪存請求消息到達(dá)目錄節(jié)點(diǎn)處,發(fā)生“未成熟讀取”的操作,從而降低TLS系統(tǒng)中線程的回退率,甚至避免線程回退現(xiàn)象的發(fā)生,降低了 TLS的功耗和開銷,同時穩(wěn)定并提高了 TLS性能。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖I為現(xiàn)有技術(shù)中的CMP的結(jié)構(gòu)示意圖;圖2為現(xiàn)有技術(shù)中TLS線程回退示意圖;圖3為本發(fā)明實(shí)施例一公開的一種推測線程方法的流程圖;圖4為現(xiàn)有技術(shù)中TLS線程負(fù)載不均衡的示意圖;圖5為本發(fā)明實(shí)施例一公開的一種推測線程方法中傳送訪存請求的流程圖;圖6為本發(fā)明實(shí)施例一公開的一種推測線程方法實(shí)施時的示意圖a ;圖7為本發(fā)明實(shí)施例一公開的一種推測線程方法實(shí)施時的示意圖b ;圖8為本發(fā)明實(shí)施例一公開的一種推測線程方法實(shí)施時的示意圖c ;圖9為本發(fā)明實(shí)施例公開的一種推測線程裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了引用和清楚起見,下文中使用的技術(shù)名詞的說明、簡寫或縮寫總結(jié)如下TLS Thread Level Speculation,推測多線程;NoC :Network-on_Chip,片上互聯(lián)網(wǎng);CMP Chip Multiprocessor,多核處理器;VA Virtual Channel Arbitration,虛通道仲裁;
SA Switch Arbitration,交換結(jié)構(gòu)仲裁。下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。由背景技術(shù)可知,現(xiàn)有技術(shù)中所采用的TLS技術(shù),在簡化并行編程的過程中,從串行程序中提取多個線程,然后推測地并行運(yùn)行時,按照原串行程序的串行語義進(jìn)行執(zhí)行,在執(zhí)行的過程中,TLS通過硬件或者軟件機(jī)制來記錄線程間數(shù)據(jù)共享信息,動態(tài)檢測數(shù)據(jù)依賴沖突,一旦檢測到線程間發(fā)生數(shù)據(jù)依賴沖突,TLS自動回退并重啟引發(fā)依賴沖突的線程。但是現(xiàn)有技術(shù)中的TLS的執(zhí)行方式中存在大量線程間數(shù)據(jù)依賴的情況,容易在進(jìn)行數(shù)據(jù)的讀或?qū)懙倪^程中發(fā)生依賴沖突,從而導(dǎo)致發(fā)生大量的TLS推測線程回退產(chǎn)生大量的“未成熟讀取”操作,增加TLS的功耗和開銷,降低TLS性能的問題。因此,本發(fā)明提供了一種改進(jìn)TLS性能的方法,從CMP中的NoC的角度出發(fā),實(shí)際上通過在NoC路由器中使用新的基于優(yōu)先級的包仲裁策略,對程序中的多個線程,以及承載于不同線程上推測線程消息中的的訪存請求消息進(jìn)行優(yōu)先級的區(qū)分,并將接收到的訪存請求依據(jù)確定的優(yōu)先級順序依次傳送至目錄節(jié)點(diǎn)處,以便于按照優(yōu)先級的順序完成對目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)?。由于,在區(qū)分的過程中承載于先驅(qū)線程的訪存請求消息的優(yōu)先級高于承載于后繼線程的訪存請求消息,因而使先驅(qū)線程的訪存請求可以更快的被傳送,避免后繼線程的訪存請求先于先驅(qū)線程上的訪存請求到達(dá)目錄節(jié)點(diǎn)處,發(fā)生“未成熟讀取”的操作,從而降低TLS系統(tǒng)中線程的回退率,甚至避免線程回退現(xiàn)象的發(fā)生,降低了 TLS的功耗和開銷,同時穩(wěn)定并提高了 TLS性能的問題。具體內(nèi)容通過以下實(shí)施例進(jìn)行詳細(xì)說明。實(shí)施例一請參閱附圖3,為本發(fā)明公開一種改進(jìn)推測多線程性能的方法的流程圖,主要包括以下步驟步驟S101,獲取網(wǎng)絡(luò)消息中由先驅(qū)線程和后繼線程發(fā)出的推測線程消息。在所有進(jìn)行傳送的網(wǎng)絡(luò)消息中,該網(wǎng)絡(luò)消息主要包括非推測線程消息和推測線程消息,一般情況下非推測線程消息的優(yōu)先級高于推測線程消息,因此,在執(zhí)行步驟SlOl之前還包括獲取網(wǎng)絡(luò)消息中的非推測線程的消息,并執(zhí)行傳送。在優(yōu)選傳送屬于非推測線程消息之后,執(zhí)行步驟SlOl獲取網(wǎng)絡(luò)消息中的推測線程消息,該推測線程消息包括訪存請求消息,該訪存請求消息包括讀數(shù)據(jù)請求和寫數(shù)據(jù)請求。在TLS系統(tǒng)中,該推測線程消息由推測線程發(fā)出,該推測線程按照先驅(qū)線程和后繼線程。在推測線程中,按照推測線程中的先驅(qū)線程和后繼線程的前后位置,并通過基于NoC路由器的VA階段和SA階段,使用其中基于優(yōu)先級的包仲裁策略。由于,實(shí)際上由推測線程中的先驅(qū)線程發(fā)出的為需要先被執(zhí)行的指令序列,后繼線程發(fā)出的為需要后被執(zhí)行的指令序列。因此,需要對先驅(qū)線程和后繼線程上的發(fā)出的訪存請求消息進(jìn)行優(yōu)先級的區(qū)分。步驟S102,區(qū)分并排列承載于所述先驅(qū)線程和后繼線程上發(fā)出的訪存請求消息的優(yōu)先級順序,所述先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于所述后繼線程發(fā)出的訪存請求消息。在執(zhí)行步驟S102之后,對各個推測線程上發(fā)出的訪存請求消息進(jìn)行優(yōu)先級的區(qū)分和排列,即區(qū)分并排列承載于先驅(qū)線程上的訪存請求消息和后繼線程上的訪存請求消息的優(yōu)先級順序。其中,確認(rèn)先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于后繼線程發(fā)出的訪存請求消息。
步驟S103,依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)憽Mㄟ^執(zhí)行上述步驟SlOl至步驟S103,區(qū)分并確定了需要經(jīng)過NoC上的路由器傳送的訪存請求消息的優(yōu)先級順序,然后按照確定的優(yōu)先級的順序經(jīng)NoC上的路由器向目錄節(jié)點(diǎn)傳送推測線程消息中的訪存請求消息,即是實(shí)現(xiàn)經(jīng)路由器選擇先傳送高優(yōu)先級的訪存消息,后傳送低優(yōu)先級的訪存消息,使先驅(qū)線程的訪存請求消息先于后繼線程的訪存請求消息到達(dá)目錄節(jié)點(diǎn)。在現(xiàn)有技術(shù)中并不存在按照優(yōu)先級的順序傳送先驅(qū)線程和后繼線程的訪存請求消息,存在后繼線程傳送的訪存請求消息先于先驅(qū)線程中的訪存請求消息到達(dá)目錄節(jié)點(diǎn)處,如果后繼線程中的訪存請求消息為讀數(shù)據(jù)請求,而先驅(qū)線程中的訪存請求消息為寫數(shù)據(jù)請求,從而引發(fā)后繼線程的“未成熟讀取”的操作,產(chǎn)生線程的回退操作。但是,采用本發(fā)明實(shí)施例所公開的方法,確定訪存請求消息的優(yōu)先級,并按照確定的優(yōu)先級順序傳送訪存請求消息。即,使優(yōu)先級較高的寫數(shù)據(jù)請求經(jīng)NoC上的路由器先傳送至目錄節(jié)點(diǎn)處,即保證先驅(qū)線程中的寫數(shù)據(jù)請求先于后繼線程的讀數(shù)據(jù)請求到達(dá)目錄節(jié)點(diǎn),使得后繼線程的讀數(shù)據(jù)請求不會成為“未成熟讀取”。進(jìn)而阻止線程間依賴沖突的發(fā)生,從而降低了 TLS線程回退率。需要說明的是,由于本發(fā)明所公開的改進(jìn)推測線程性能的方法時基于優(yōu)先級的NoC包仲裁策略的,該包仲裁策略遵守以下規(guī)則A.在所有的網(wǎng)絡(luò)消息中,優(yōu)先傳送屬于非推測線程的消息;B.在所有屬于推測線程的網(wǎng)絡(luò)消息中,優(yōu)先傳送屬于先驅(qū)線程的消息;C.如果以上兩條規(guī)則未能區(qū)分出應(yīng)被優(yōu)先傳送的消息,則使用非優(yōu)先級的包仲裁策略,如輪轉(zhuǎn)調(diào)度策略。通過在NoC路由器中使用該包仲裁策略,屬于先驅(qū)線程的消息被賦予較高的優(yōu)先級,使它們能夠被更快地傳送。而在執(zhí)行上述三條規(guī)則的過程中,如果未能區(qū)分出應(yīng)被優(yōu)先傳送的消息,即當(dāng)無法區(qū)分所述推測線程消息中的訪存請求的優(yōu)先級時,使用非優(yōu)先級的包仲裁策略,即上述C中描述的輪轉(zhuǎn)調(diào)度策略執(zhí)行所述推測線程消息的傳送,即采用現(xiàn)有技術(shù)的方式進(jìn)行推測消息的傳送。因而,采用本發(fā)明所公開的改進(jìn)推測線程性能的方法,使優(yōu)先級較高的先驅(qū)線程的訪存請求消息先于后繼線程的訪存請求消息到達(dá)目錄節(jié)點(diǎn)的可能性增大,使得后繼線程的讀數(shù)據(jù)請求不會成為“未成熟讀取”,而不會產(chǎn)生線程間依賴沖突,使TLS線程回退率也被降低。
另一方面,因?yàn)楝F(xiàn)有技術(shù)中一個線程的執(zhí)行速度很大程度上受限于其訪存延遲,而訪存請求消息需要通過NoC被發(fā)送,由于現(xiàn)有技術(shù)中后繼線程先于先驅(qū)線程完成,需要空等,直到所有先驅(qū)線程都完成后才進(jìn)行提交(如圖4所示),造成的“推測線程負(fù)載不均衡”問題。而采用本發(fā)明所公開的方法,在NoC中優(yōu)先傳送先驅(qū)線程的訪存請求消息,可以減小其訪存延遲,加快其執(zhí)行速度,從而后續(xù)線程等待先驅(qū)線程完成執(zhí)行,即降低了發(fā)生負(fù)載不均衡的可能性。在執(zhí)行上述本發(fā)明實(shí)施例公開的方法的基礎(chǔ)上,執(zhí)行步驟S103時的具體過程如圖5所示,主要包括以下步驟步驟S1031,確認(rèn)經(jīng)片上網(wǎng)絡(luò)中的路由器傳送的訪存請求消息的類型。
步驟S1032,按照所述承載于所述先驅(qū)線程和后繼線程上發(fā)出的訪存請求消息的優(yōu)先級,排列需傳送的所述訪存請求消息的優(yōu)先級順序。在執(zhí)行步驟S1031之后已確定當(dāng)前推測線程中的先驅(qū)線程和后繼線程中所承載的訪存請求消息的類型。執(zhí)行步驟S1032,按照先驅(qū)線程的訪存請求消息和后繼線程的訪存請求消息的優(yōu)先級排列傳送的順序,即排列需要傳送的訪存請求消息的順序。需要說明的是,當(dāng)不同的先驅(qū)線程發(fā)出不同的所述訪存請求消息(寫數(shù)據(jù)請求或讀數(shù)據(jù)請求)時,所述訪存請求消息的優(yōu)先級由承載其的所述先驅(qū)線程的位置決定,所述先驅(qū)線程的位置越靠前優(yōu)先級越高;當(dāng)不同的后繼線程發(fā)出不同的所述訪存請求消息(讀數(shù)據(jù)請求或?qū)憯?shù)據(jù)請求)時,所述訪存請求消息的優(yōu)先級由承載其的所述后繼線程的位置決定,所述后繼線程的位置越靠前優(yōu)先級越高。步驟S1033,依據(jù)優(yōu)先級順序向所述目錄節(jié)點(diǎn)傳送當(dāng)前優(yōu)先級最高的訪存請求消息,對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)?。步驟S1034,判斷當(dāng)前所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)懯欠裢瓿?,如果否,并且此時接收到來自發(fā)出優(yōu)先級較低的先驅(qū)線程或后繼線程上的訪存請求消息,則執(zhí)行步驟S1035 ;如果是,則執(zhí)行步驟S1037。步驟S1035,向優(yōu)先級較低的先驅(qū)線程或后繼線程反饋未完成信息。步驟S1036,使所述優(yōu)先級較低的先驅(qū)線程或后繼線程執(zhí)行阻塞操作。步驟S1037,經(jīng)下一個優(yōu)先級較低的先驅(qū)線程或后繼線程傳送承載的訪存請求,然后返回執(zhí)行步驟S1034。在執(zhí)行上述步驟S1031至步驟S1037的過程中,由于依據(jù)優(yōu)先級從高至低對訪存請求消息進(jìn)行傳送,并且在上一個優(yōu)先級較高的訪存請求消息未完成使下一個承載優(yōu)先級較低的訪存請求消息的推測線程處于阻塞狀態(tài),直至優(yōu)先級較高的訪存請求消息執(zhí)行結(jié)束之后,再執(zhí)行下一個訪存請求消息。對于由先驅(qū)線程發(fā)出的寫數(shù)據(jù)請求和后繼線程發(fā)出的讀數(shù)據(jù)請求,通過使用該基于優(yōu)先級的包仲裁策略,可以使優(yōu)先級較高的寫數(shù)據(jù)請求先于優(yōu)先級較低的讀數(shù)據(jù)請求到達(dá)目錄節(jié)點(diǎn)的,即使得位于后繼線程上的讀數(shù)據(jù)請求不會成為“未成熟讀取”,避免線程之間的依賴沖突的發(fā)生,促使TLS線程回退率降低。同時,還可以降低推測線程負(fù)載不均衡,減少負(fù)載不均衡造成的計(jì)算資源的浪費(fèi)。在上述本發(fā)明公開的實(shí)施例的基礎(chǔ)上,將本發(fā)明應(yīng)用于一個典型的基于目錄cache 一致性的TLS系統(tǒng)中,從而說明本發(fā)明基于優(yōu)先級的包仲裁策略如何避免“未成熟讀取”操作的發(fā)生,以及避免TLS線程回退的產(chǎn)生,降低其線程回退率。同樣的,本發(fā)明所示例的方法適用于其它所有基于目錄cache —致性的TLS系統(tǒng),具有一般性,凡采取該仲裁策略的技術(shù)方案,均可落在本發(fā)明要求保護(hù)的范圍之內(nèi)。如下給出一示例如圖6所示,3個TLS推測線程TX,TY, TZ分別運(yùn)行在處理器1,2,3上,其中按照優(yōu)先級TX為優(yōu)先級最高的先驅(qū)線程,即排列最前的推測線程,而TZ是優(yōu)先級最低的后繼線程,即排列最靠后的后繼線程,在本示例中,按照推測線程消息中訪存請求的優(yōu)先級,即寫數(shù)據(jù)請求和讀數(shù)據(jù)請求的優(yōu)先級,上述推測線程分別對應(yīng)作為訪存請求的寫(RX)、寫(RY)、讀(RZ)數(shù)據(jù)A的請求。其中,數(shù)據(jù)A和其目錄信息位于節(jié)點(diǎn)0處。于是,TX,TY和TZ分別向節(jié)點(diǎn)0發(fā)出訪存請求RX,RY和RZ。如圖7所示,在三個訪存請求RX,RY和RZ在到達(dá)目錄節(jié)點(diǎn)(節(jié)點(diǎn)0)之前,被同時 緩沖在NoC中的某個路由器的虛擬通道中。為了說明本發(fā)明的有益效果,如圖8所示,對比目前被廣泛使用的輪轉(zhuǎn)仲裁策略(圖8中用B標(biāo)識)與本發(fā)明提供的基于優(yōu)先級的仲裁策略(圖8中用D標(biāo)識)。當(dāng)使用輪轉(zhuǎn)仲裁策略B時,三個訪存請求消息到達(dá)目錄節(jié)點(diǎn)的順序?yàn)镽Z,RY, RX。該到達(dá)順序所引發(fā)的后續(xù)TLS系統(tǒng)行為如下首先,目錄節(jié)點(diǎn)服務(wù)RZ請求,使線程TZ成為數(shù)據(jù)A的共享者。其次,目錄節(jié)點(diǎn)服務(wù)RY請求,將該寫請求轉(zhuǎn)發(fā)給數(shù)據(jù)A的共享者線程TZ。線程TZ收到來自其前驅(qū)線程TY的寫A請求RY后,發(fā)現(xiàn)自身曾發(fā)出過“未成熟讀取”操作,引發(fā)了數(shù)據(jù)依賴沖突,產(chǎn)生線程TZ回退并重啟,以解決數(shù)據(jù)依賴沖突,同時使線程TY成為數(shù)據(jù)A的擁有者。最后,目錄節(jié)點(diǎn)服務(wù)RX請求,將該寫請求轉(zhuǎn)發(fā)給數(shù)據(jù)A的擁有者線程TY。線程TY收到來自其前驅(qū)線程TX的寫A請求RX后,發(fā)現(xiàn)自身曾發(fā)出過“未成熟讀取”操作,引發(fā)了數(shù)據(jù)依賴沖突,產(chǎn)生線程TX回退并重啟,以解決數(shù)據(jù)依賴沖突,同時使線程TX成為數(shù)據(jù)A的擁有者??梢钥闯觯谶@種情況下,當(dāng)使用被普遍采用的現(xiàn)有技術(shù)中的輪轉(zhuǎn)仲裁策略時,TLS系統(tǒng)會發(fā)生2次線程回退操作。當(dāng)使用基于優(yōu)先級的仲裁策略D時,三個訪存請求消息到達(dá)目錄節(jié)點(diǎn)的順序?yàn)镽X, RY, RZ。該到達(dá)順序所引發(fā)的后續(xù)TLS系統(tǒng)行為如下首先,目錄節(jié)點(diǎn)服務(wù)RX請求,使線程TX成為數(shù)據(jù)A的擁有者。其次,目錄節(jié)點(diǎn)服務(wù)RY請求,將該寫請求轉(zhuǎn)發(fā)給數(shù)據(jù)A的擁有者線程TX。線程TX收到來自其后續(xù)線程TY的寫A請求RY后,通知線程TY數(shù)據(jù)A還未成熟,使線程TY進(jìn)行阻塞操作,因此不會發(fā)生“未成熟讀取”操作。最后,同樣的,目錄節(jié)點(diǎn)服務(wù)RZ請求,將該寫請求轉(zhuǎn)發(fā)給數(shù)據(jù)A的擁有者線程TX。線程TX收到來自其后續(xù)線程TZ的寫A請求RZ后,通知線程TZ數(shù)據(jù)A還未成熟,使線程TZ進(jìn)行阻塞操作,因此也不會發(fā)生“未成熟讀取”操作。通過上述現(xiàn)有技術(shù)與本發(fā)明的對比可以看到,基于優(yōu)先級的包仲裁策略能夠有效地加速先驅(qū)線程的消息的傳送,避免“未成熟讀取”操作的發(fā)生,從而減少TLS線程回退,降低回退率,能夠起到提高TLS系統(tǒng)性能的作用。
上述本發(fā)明公開的實(shí)施例中詳細(xì)描述了一種推測多線程方法,對于本發(fā)明的方法可采用多種形式的裝置實(shí)現(xiàn),因此本發(fā)明還公開了一種推測線程裝置,下面給出具體的實(shí)施例進(jìn)行詳細(xì)說明。請參閱附圖9,為本發(fā)明實(shí)施例公開的一種推測多線程裝置的結(jié)構(gòu)示意圖,主要包括獲取單元101、區(qū)分排列單元102和傳送單元103。獲取單元101,用于獲取網(wǎng)絡(luò)消息中的推測線程消息。區(qū)分排列單元102用于區(qū)分并排列承載于所述先驅(qū)線程和后繼線程上的訪存請求消息的優(yōu)先級順序,所述先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于所述后繼線程發(fā)出的訪存請求消息。傳送單元103,用于依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)憽?需要說明的是,傳送單元103中包括確認(rèn)模塊1031、排隊(duì)模塊1032、順序傳送模塊1033、判斷反饋模塊1034和阻塞模塊1035。確認(rèn)模塊1031,用于確認(rèn)經(jīng)NoC的路由器傳送的訪存請求消息的類型。排隊(duì)模塊1032,用于按照所述承載于所述先驅(qū)線程和后繼線程上的訪存請求消息的優(yōu)先級,排列需傳送的所述訪存請求消息的優(yōu)先級順序。順序傳送模塊1033,用于依據(jù)所述優(yōu)先級順序向所述目錄節(jié)點(diǎn)傳送當(dāng)前優(yōu)先級最高的訪存請求消息,對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)憽E袛喾答伳K1034,用于判斷當(dāng)前所述目錄節(jié)點(diǎn)處的數(shù)據(jù)是否以完成讀或?qū)?,?dāng)對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懳赐瓿蓵r,接收到來自優(yōu)先級較低的先驅(qū)線程或后繼線程上的訪存請求消息,向優(yōu)先級較低的先驅(qū)線程或后繼線程反饋未完成信息。阻塞模塊1035,用于所述優(yōu)先級較低的先驅(qū)線程或后繼線程執(zhí)行阻塞操作。需要說明的是,在本發(fā)明公開的該裝置中,還包括輪轉(zhuǎn)調(diào)度策略執(zhí)行單元(圖中未標(biāo)識),用于當(dāng)無法區(qū)分承載于所述先驅(qū)線程或后繼線程上的所述訪存請求消息的優(yōu)先級時,按照輪轉(zhuǎn)調(diào)度策略執(zhí)行所述推測線程消息的傳送。由于該推測多線程裝置對應(yīng)于上述本發(fā)明公開的推測多線程方法,其各單元,以及各模塊的執(zhí)行過程以及原理與上述本發(fā)明公開的推測多線程方法一致,這里不再贅述。綜上所述通過本發(fā)明實(shí)施例公開的方法,區(qū)分訪存請求的優(yōu)先級,并按照確定優(yōu)先級的順序傳送訪存請求。即使承載于先驅(qū)線程中的優(yōu)先級較高的寫數(shù)據(jù)請求先傳送至目錄節(jié)點(diǎn)處,即保證先驅(qū)線程中的寫數(shù)據(jù)請求先于后繼線程的讀數(shù)據(jù)請求到達(dá)目錄節(jié)點(diǎn),使得后繼線程的讀數(shù)據(jù)請求不會成為“未成熟讀取”。進(jìn)而阻止線程間依賴沖突的發(fā)生,從而降低了TLS線程回退率。同時,優(yōu)先傳送先驅(qū)線程的訪存請求消息,可以減小其訪存延遲,加快其執(zhí)行速度,從而后續(xù)線程等待先驅(qū)線程完成執(zhí)行,即降低了發(fā)生負(fù)載不均衡的可能性。本說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。
權(quán)利要求
1.一種改進(jìn)推測多線程性能的方法,其特征在于,包括 獲取網(wǎng)絡(luò)消息中由先驅(qū)線程和后繼線程發(fā)出的推測線程消息,所述推測線程消息包括訪存請求消息; 區(qū)分并排列承載于所述先驅(qū)線程和后繼線程上發(fā)出的訪存請求消息的優(yōu)先級順序,所述先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于所述后繼線程發(fā)出的訪存請求消息; 依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)憽?br>
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在獲取網(wǎng)絡(luò)消息中的推測線程消息之前,還包括 獲取網(wǎng)絡(luò)消息中的非推測線程的消息,執(zhí)行傳送。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,包括 當(dāng)不同的先驅(qū)線程發(fā)出不同的所述訪存請求消息時,不同的所述訪存請求消息之間的優(yōu)先級由承載其的所述先驅(qū)線程的位置決定,所述先驅(qū)線程的位置越靠前優(yōu)先級越高。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,包括 當(dāng)不同的后繼線程發(fā)出不同的所述訪存請求消息時,不同的所述訪存請求消息之間的優(yōu)先級由承載其的所述后繼線程的位置決定,所述后繼線程的位置越靠前優(yōu)先級越高。
5.根據(jù)權(quán)利要求I至4中任意一項(xiàng)所述的方法,其特征在于,依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)?,具體過程為 確認(rèn)經(jīng)片上網(wǎng)絡(luò)中的路由器傳送的訪存請求消息的類型; 按照所述承載于所述先驅(qū)線程和后繼線程上的訪存請求消息的優(yōu)先級,排列需傳送的所述訪存請求消息的優(yōu)先級順序; 依據(jù)所述優(yōu)先級順序向所述目錄節(jié)點(diǎn)傳送當(dāng)前優(yōu)先級最高的訪存請求消息,對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懀? 當(dāng)對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懳赐瓿蓵r,接收到來自發(fā)出優(yōu)先級較低的先驅(qū)線程或后繼線程上的訪存請求消息,向優(yōu)先級較低的先驅(qū)線程或后繼線程反饋未完成信息; 所述優(yōu)先級較低的先驅(qū)線程或后繼線程執(zhí)行阻塞操作。
6.根據(jù)權(quán)利要求I至4中的任意一項(xiàng)所述的方法,其特征在于,還包括 當(dāng)無法區(qū)分承載于所述先驅(qū)線程或后繼線程上的所述訪存請求消息的優(yōu)先級時,按照輪轉(zhuǎn)調(diào)度策略執(zhí)行所述推測線程消息的傳送。
7.根據(jù)權(quán)利要求I至4中的任意一項(xiàng)所述的方法,其特征在于,基于優(yōu)先級的包仲裁策略區(qū)分所述訪存請求消息的優(yōu)先級。
8.一種改進(jìn)推測多線程性能的裝置,其特征在于,包括 獲取單元,用于獲取網(wǎng)絡(luò)消息中由先驅(qū)線程和后驅(qū)線程發(fā)出的推測線程消息,所述推測線程消息包括訪存請求消息; 區(qū)分排列單元,用于區(qū)分并排列承載于所述先驅(qū)線程和后繼線程上發(fā)出的訪存請求消息的優(yōu)先級順序,所述先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于所述后繼線程發(fā)出的訪存請求消息;傳送單元,用于依據(jù)確定的所述優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的所述訪存請求消息,完成對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)憽?br>
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述傳送單元包括 確認(rèn)模塊,用于確認(rèn)經(jīng)片上網(wǎng)絡(luò)中的路由器傳送的訪存請求消息的類型; 排隊(duì)模塊,用于按照所述承載于所述先驅(qū)線程和后繼線程上的訪存請求消息的優(yōu)先級,排列需傳送的所述訪存請求消息的優(yōu)先級順序; 順序傳送模塊,用于依據(jù)所述優(yōu)先級順序向所述目錄節(jié)點(diǎn)傳送當(dāng)前優(yōu)先級最高的訪存請求消息,對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懀? 判斷反饋模塊,用于判斷當(dāng)前所述目錄節(jié)點(diǎn)處的數(shù)據(jù)是否已完成讀或?qū)?,?dāng)對所述目錄節(jié)點(diǎn)處的數(shù)據(jù)進(jìn)行讀或?qū)懳赐瓿蓵r,接收到來自發(fā)出優(yōu)先級較低的先驅(qū)線程或后繼線程上的訪存請求消息,向優(yōu)先級較低的先驅(qū)線程或后繼線程反饋未完成信息; 阻塞模塊,用于所述優(yōu)先級較低的先驅(qū)線程或后繼線程執(zhí)行阻塞操作。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,還包括 輪轉(zhuǎn)調(diào)度策略執(zhí)行單元,用于當(dāng)無法區(qū)分承載于所述先驅(qū)線程或后繼線程上的所述訪存請求消息的優(yōu)先級時,按照輪轉(zhuǎn)調(diào)度策略執(zhí)行所述推測線程消息的傳送。
全文摘要
本發(fā)明公開了一種改進(jìn)推測多線程技術(shù)性能的方法及裝置,其方法為獲取網(wǎng)絡(luò)消息中的推測線程消息,區(qū)分并排列由先驅(qū)線程和后繼線程發(fā)出的訪存請求消息的優(yōu)先級順序,先驅(qū)線程發(fā)出的訪存請求消息的優(yōu)先級高于后繼線程發(fā)出的訪存請求消息;依據(jù)確定的優(yōu)先級順序向目錄節(jié)點(diǎn)傳送對應(yīng)的訪存請求消息,完成對目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)?。通過上述本發(fā)明公開的方法,區(qū)分推測線程消息中的訪存請求的優(yōu)先級,以及對程序中的多個線程的區(qū)分優(yōu)先級,以便于按照優(yōu)先級的順序完成對目錄節(jié)點(diǎn)處的數(shù)據(jù)讀或?qū)?,從而避免線程回退,降低線程中的回退率和TLS的功耗,穩(wěn)定并提高TLS性能。
文檔編號G06F9/38GK102799414SQ20111013631
公開日2012年11月28日 申請日期2011年5月24日 優(yōu)先權(quán)日2011年5月24日
發(fā)明者安虹, 李頎, 代文博, 李功明, 鄧博斌, 吳石磊 申請人:中國科學(xué)技術(shù)大學(xué)