專利名稱:線程級推測中的動態(tài)數(shù)據(jù)同步的制作方法
線程級推測中的動態(tài)數(shù)據(jù)同步
背景技術(shù):
在現(xiàn)代處理器中,通常具有多個能夠并行執(zhí)行的計算核。然而,很多順序或串行的應(yīng)用和程序不能有效地利用并行架構(gòu)。線程級推測(Thread-levelspeculation TLS)是一種使順序程序并行化的有希望的技術(shù),其利用靜態(tài)或動態(tài)編譯器和硬件以便在錯誤推測發(fā)生時恢復(fù)。然而在依賴加載和存儲指令之間沒有適當(dāng)同步的情況下,例如,加載可在存儲之前執(zhí)行并導(dǎo)致數(shù)據(jù)違背,這破壞推測線程并且需要對于重新加載的數(shù)據(jù)的重新執(zhí)行。附圖簡述
圖1是根據(jù)本發(fā)明一個實施例的示例系統(tǒng)的框圖。圖2是根據(jù)本發(fā)明一實施例的示例推測引擎的框圖。圖3A和3B是根據(jù)本發(fā)明一實施例的示例軟件代碼的框圖。圖4是根據(jù)本發(fā)明的一實施例的線程級推測中的動態(tài)數(shù)據(jù)同步的流程圖。圖5是根據(jù)本發(fā)明實施例的系統(tǒng)的框圖。詳細描述在各實施例中,引入具有推測高速緩存的處理器,該推測高速緩存具有同步位,該同步位被設(shè)置時可使高速緩存線或字的讀取停止。本領(lǐng)域的技術(shù)人員將意識到這可防止錯誤的推測和相關(guān)的被破化線程的無效。還介紹了設(shè)置和清除同步位的處理器指令。編譯器可利用這些指令來同步數(shù)據(jù)依賴性。本發(fā)明旨在實施在可包括附加并行和/或線程推測特征的處理器和系統(tǒng)中?,F(xiàn)在參見圖1,所示為根據(jù)本發(fā)明的一個實施例的示例系統(tǒng)的框圖。如圖1所示,系統(tǒng)100可包括處理器102和存儲器104,諸如動態(tài)隨機存取存儲器(DRAM)。處理器102可包括核106-110、推測高速緩存112和推測引擎118。核106-110能夠彼此獨立地執(zhí)行指令且可包括任意類型的架構(gòu)。盡管被示為包括三個核,然而處理器102可具有任意數(shù)量的核且可包括未示出的其它組件或控制器。在一個實施例中,處理器102是芯片上系統(tǒng)(S0C)。推測高速緩存112可包括任意數(shù)量的獨立高速緩存且可包含任意數(shù)量的實體。盡管期望作為低等待時間一級高速緩存,然而推測高速緩存112可在任意架構(gòu)級下以任意存儲器技術(shù)來實現(xiàn)。推測高速緩存112包括與高速緩存線或字116相關(guān)聯(lián)的同步位114。當(dāng)同步位114被設(shè)置時,如下文更詳細描述的,線或字116可能不能被核加載,因為例如另一個核可能要執(zhí)行加載依賴的存儲。在一個實施例中,當(dāng)同步位114被設(shè)置時試圖從高速緩存線或字116加載的核將停止直到同步位114被清除。推測引擎118可實現(xiàn)用于線程級推測中的動態(tài)數(shù)據(jù)同步的方法,例如參考圖4描述的,且可具有參考圖2描述的架構(gòu)。推測引擎118可與處理器102分離且可被實現(xiàn)為硬件、軟件或硬件和軟件的組合?,F(xiàn)在參見圖2,所示為根據(jù)本發(fā)明的一實施例的示例推測引擎的框圖。如圖2所示,推測引擎118可包括并行化服務(wù)202、并行輸出代碼204和串行輸入代碼206。并行化服務(wù)202可提供推測引擎118,具有使串行指令并行化并在線程級推測中增加動態(tài)數(shù)據(jù)同步的能力。
并行化服務(wù)202可包括線程服務(wù)208、同步集服務(wù)210和同步清除服務(wù)212,其可分別從串行指令創(chuàng)建并行線程、插入處理器指令以在依賴源之前設(shè)置同步位、并插入處理器指令以在依賴源之后清除同步位。并行化服務(wù)202可從串行輸入代碼206 (例如如圖3A所示)創(chuàng)建并行輸出代碼204 (例如如圖3B所示)。現(xiàn)在參考圖3A和3B,示出的是根據(jù)本發(fā)明一實施例的示例軟件代碼的框圖。如圖3A所示,順序指令300包括串行前進的各種加載和存儲,且旨在由處理器的單個核執(zhí)行。順序指令300可用作推測引擎118的串行輸入代碼206。如圖3B所示,并行指令302可表示推測引擎118的并行輸出代碼204。線程304-308能夠由核106-110單獨地執(zhí)行。線程304-308可各自包括處理器指令(例如,標記_通信_地址mark_comm_addr ),該指令在被執(zhí)行時在諸如存儲指令之類的依賴源之前設(shè)置關(guān)于特定高速緩存線或字116的同步位114。線程304-308還可各自包括對應(yīng)的處理器指令(例如,清除_通信_地址clear_comm_add;r),該指令在被執(zhí)行時在依賴源之后清除同步位114??稍诰€程304和308中看到數(shù)據(jù)依賴的示例,其中依賴接收端(dependence sink)將要等待依賴源完成并清除同步位。在這種情況下,加載310將停止線程308的前進直到存儲312完成且線程304清除相關(guān)聯(lián)的同步位?,F(xiàn)在參考圖4,示出根據(jù)本發(fā)明的一實施例的線程級推測中的動態(tài)數(shù)據(jù)同步的流程圖。如圖4所示,方法開始于從串行指令創(chuàng)建(402)并行線程。在一個實施例中,線程服務(wù)208被調(diào)用以從順序指令300生成并行指令302。在另一個實施例中,所生成的線程(304-308)的數(shù)量至少部分地基于處理器中核(106-110)的數(shù)量。該方法繼續(xù),插入(404)處理器指令以設(shè)置和清除同步位。在一個實施例中,當(dāng)生成地址時,同步設(shè)置服務(wù)210在依賴源或潛在的依賴源之前的早期點將指令(標記_通信_地址)插入線程304-308。在另一個實施例中,同步清除服務(wù)212在依賴源或潛在的依賴源之后將指令(清除_通信_地址)插入線程304-308。該方法以在多核處理器的核上執(zhí)行(406)并行線程結(jié)束。在一個實施例中,線程304-308分別在核106-110上執(zhí)行。在一個實施例中,核110的執(zhí)行可停止在加載310上,直到同步位114被核106上執(zhí)行的線程304清除為止。各實施例可在許多不同的系統(tǒng)類型中實現(xiàn)?,F(xiàn)在參見圖5,所示為根據(jù)本發(fā)明實施例的系統(tǒng)的框圖。如圖5所示,多處理器系統(tǒng)500是點對點互連系統(tǒng),并且包括經(jīng)由點對點互連550耦合的第一處理器570和第二處理器580。如圖5所示,處理器570和580中的每一個都可以是多核處理器,包括第一和第二處理器核(即,處理器核574a與574b以及處理器核584a與584b )。每個處理器可包括根據(jù)本發(fā)明的實施例的動態(tài)數(shù)據(jù)同步線程級推測硬件、軟件和固件。仍參考圖5,第一處理器570還包括存儲器控制器中樞(MCH) 572與點對點(P_P)接口 576和578。類似地,第二處理器580包括MCH 582與P-P接口 586和588。如圖5所示,MCH 572和582將各處理器耦合到相應(yīng)的存儲器,即存儲器532和存儲器534,這些存儲器可以是主存儲器(例如,動態(tài)隨機存取存儲器(DRAM))的本地附連到相應(yīng)處理器的部分,其中的每一個可包括根據(jù)本發(fā)明的一個實施例的擴展頁表。第一處理器570和第二處理器580可分別經(jīng)由P-P互連552和554耦合到芯片組590。如圖5所示,芯片組590包括P-P接口 594 和 598。
此外,芯片組590包括將芯片組592與高性能圖形引擎538耦合的接口 590。接著,芯片組590可經(jīng)由接口 596耦合到第一總線516。如圖5所示,各種I/O設(shè)備514可連同總線橋518 —起稱合到第一總線516,總線橋518將第一總線516稱合到第二總線520。各種設(shè)備可被耦合到第二總線520,這些設(shè)備包括例如鍵盤/鼠標522、通信設(shè)備526以及諸如磁盤驅(qū)動器或其它大容量存儲設(shè)備之類的數(shù)據(jù)儲存器單元528,在一個實施例中該數(shù)據(jù)儲存器單元可包括代碼530。此外,音頻I/O 524可耦合到第二總線520。各實施例可以用代碼實現(xiàn),并可存儲在其上存儲有指令的存儲介質(zhì)上,這些指令可用來對系統(tǒng)編程以執(zhí)行這些指令。存儲介質(zhì)可包括但不限于任何類型的磁盤,包括軟盤、光盤、壓縮盤只讀存儲器(⑶-ROM)、可重寫壓縮盤(⑶-RW)以及磁光盤,半導(dǎo)體器件,比如只讀存儲器(ROM)、諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)之類的隨機存取存儲器(RAM)、可擦除可編程只讀存儲器(EPR0M)、閃存、電可擦除可編程只讀存儲器(EEPR0M),磁卡或光卡,或適于存儲電子指令的任何其它類型的介質(zhì)。盡管本發(fā)明已針對有限數(shù)量的實施例作了描述,然而本領(lǐng)域技術(shù)人員將會從其中領(lǐng)會到許多修改和變型。所附權(quán)利要求旨在覆蓋所有這樣的修改和變型,只要其落在本發(fā)明的真實精神和范圍內(nèi)。
權(quán)利要求
1.一種包括內(nèi)容的存儲介質(zhì),所述內(nèi)容在被訪問機器執(zhí)行時導(dǎo)致所述訪問機器 執(zhí)行多核處理器的第一核中的指令;確定推測高速緩存中數(shù)據(jù)的地址作為依賴接收端的一部分;以及如果與所述數(shù)據(jù)相關(guān)聯(lián)的同步位已經(jīng)被第二核中的依賴源設(shè)置,則等待訪問所述數(shù)據(jù)。
2.如權(quán)利要求1所述的存儲介質(zhì),其特征在于,還包括在被訪問機器執(zhí)行時導(dǎo)致所述訪問機器通過執(zhí)行處理器指令設(shè)置同步位的內(nèi)容。
3.如權(quán)利要求2所述的存儲介質(zhì),其特征在于,還包括在被訪問機器執(zhí)行時導(dǎo)致所述訪問機器通過執(zhí)行處理器指令清除同步位的內(nèi)容。
4.如權(quán)利要求3所述的存儲介質(zhì),其特征在于,所述依賴接收端包括加載指令。
5.如權(quán)利要求3所述的存儲介質(zhì),其特征在于,所述依賴接收端包括存儲指令。
6.如權(quán)利要求3所述的存儲介質(zhì),其特征在于,與所述數(shù)據(jù)相關(guān)聯(lián)的所述同步位包括高速緩存線位。
7.如權(quán)利要求3所述的存儲介質(zhì),其特征在于,與所述數(shù)據(jù)相關(guān)聯(lián)的所述同步位包括高速緩存字位。
8.如權(quán)利要求3所述的存儲介質(zhì),其特征在于,用于通過執(zhí)行處理器指令設(shè)置同步位的內(nèi)容包括用于在生成依賴源地址時設(shè)置同步位的內(nèi)容。
9.一種系統(tǒng),包括處理器,其包括用于執(zhí)行指令的第一核和第二核;·推測高速緩存,用于存儲用于所述處理器的數(shù)據(jù)和指令,所述推測高速緩存包括同步位以指示相關(guān)聯(lián)的數(shù)據(jù)是否遭受依賴源,并且當(dāng)同步位被設(shè)置時停止依賴接收端的操作; 耦合到所述處理器的動態(tài)隨機存取存儲器(DRAM),所述DRAM存儲串行指令;以及推測引擎,所述推測弓I擎通過創(chuàng)建獨立線程并插入處理器指令以在依賴源之前設(shè)置同步位來使串行指令并行化。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括所述推測引擎,用于插入相應(yīng)的處理器指令以在依賴源之后清除所述同步位。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述依賴源包括存儲指令。
12.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述依賴接收端包括加載指令。
13.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述同步位包括高速緩存線位。
14.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述同步位包括高速緩存字位。
15.一種由專門的推測引擎執(zhí)行的方法,包括從串行指令集創(chuàng)建并行化線程;在所述線程中插入處理器指令,以在依賴源之前設(shè)置同步位,并在依賴源之后清除所述同步位,其中所述同步位被設(shè)計成在被設(shè)置時停止依賴接收端;以及在多核處理器的核上執(zhí)行并行化線程。
16.如權(quán)利要求15所述的方法,其特征在于,所述依賴源包括存儲指令。
17.如權(quán)利要求15所述的方法,其特征在于,所述依賴接收端包括加載指令。
18.如權(quán)利要求15所述的方法,其特征在于,所述同步位包括高速緩存線位。
19.如權(quán)利要求15所述的方法,其特征在于,所述同步位包括高速緩存字位。
20.如權(quán)利要求15所述的方法,其特征在于,在所述線程中插入處理器指令以在依賴源之前設(shè)置同步位包括插入處理器指令以在生成依賴源地址時設(shè)置同步位。
全文摘要
在一個實施例中,本發(fā)明介紹一種推測引擎,用于通過從串行指令創(chuàng)建獨立的線程并插入處理器指令,以在依賴源之前設(shè)置同步位,并在依賴源之后清除同步位來使串行指令并行化,其中該同步位被設(shè)計成停止依賴接收端在獨立核上運行的線程。描述并要求保護其他的實施例。
文檔編號G06F9/30GK103003796SQ201180027637
公開日2013年3月27日 申請日期2011年6月27日 優(yōu)先權(quán)日2010年6月29日
發(fā)明者W·劉, 吳友峰 申請人:英特爾公司