[發明專利]用于增強線程級推測的原語無效
| 申請號: | 200680022486.2 | 申請日: | 2006-06-23 |
| 公開(公告)號: | CN101203831A | 公開(公告)日: | 2008-06-18 |
| 發明(設計)人: | Q·雅克布森;H·王;J·舍恩;G·金雅;P·哈默倫德;X·鄒;B·比格比;S·考舒基 | 申請(專利權)人: | 英特爾公司 |
| 主分類號: | G06F9/38 | 分類號: | G06F9/38;G06F9/46 |
| 代理公司: | 永新專利商標代理有限公司 | 代理人: | 王英 |
| 地址: | 美國加*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 增強 線程 推測 | ||
技術領域
本公開總體上涉及信息處理系統,更具體地,涉及支持線程級推測。
背景技術
多線程逐漸得到硬件上的支持。例如,在一種方式中,多處理器系統(諸如單芯片多處理器(“CMP”)系統)中的處理器每個都可以并發地運行多個軟件線程中的一個。在被稱為同時多線程(“SMT”)的另一種方式中,單個物理處理器看起來像是多個邏輯處理器那樣操作系統和用戶程序。對于SMT,能夠在單個處理器上同時啟動并執行多個軟件線程而無需切換。也就是,每個邏輯處理器維護一整套架構狀態,但是該物理處理器的許多其它資源都是共享的,比如高速緩存、執行單元、分支預測器、控制邏輯和總線。因此,對于SMT來說,來自多個軟件線程的指令并發地在每個邏輯處理器上執行。
對于諸如SMT和/或CMP系統這樣的支持軟件線程并發執行的系統,一個應用程序可以被并行化為多線程代碼以利用該系統的并發執行能力。多線程應用程序的線程之間可能需要通信和同步,這通常是通過共享存儲器來完成的。另外,通過將單線程程序組織為多個線程然后并發地運行這些線程,每個線程在單獨一個線程單元上運行,該單線程程序也可以被并行化為多線程代碼。當在對這樣的單線程程序進行并行化處理期間作出關于依賴性的某些假設時,該技術有時被稱為推測多線程(speculative?multithreading)。
為了提高多線程程序的性能和/或使其更易于編寫,可以使用線程級推測。線程級推測指的是推測地確定一個線程的指令塊性能。也就是,該線程執行這些指令,而其他線程不被允許看到這些指令的結果,直到該線程決定提交或丟棄(也稱為放棄)該推測地完成的工作。
通過提供用于緩存和包含作為推測的指令塊的一部分而完成的存儲器更新的能力,處理器能夠使線程級推測更高效。存儲器更新可以被緩存,直到被指示執行或丟棄所推測的存儲器更新。
程序可能希望推測的一件事情是,一個代碼塊是否依賴于并發地運行在其它線程上的其它代碼。處理器通過為檢測依賴性提供支持,能夠使得該推測更高效。例如,處理器可以提供支持以檢測一個推測的代碼塊是否讀取隨后要被另一個并發的線程修改的任意存儲單元。
附圖說明
參考下列附圖,可以理解本發明的實施例,在附圖中相同或相似的單元用相同或相似的數字標明。這些附圖并不是要進行限制,而是被提供用來說明系統、方法和機制的選定實施例,以便提供具有事務執行支持的推測多線程。
圖1是示出一般的并行編程方法的圖形表示的框圖。
圖2是說明根據本發明的至少一個實施例的處理器的選定特性的框圖。
圖3、4和5是說明了用于執行具有事務執行支持的推測多線程的至少一個實施例的數據和控制流的流程圖。
圖6是用于確定事務塊的執行已失敗的機制的至少一個實施例的數據流圖。
圖7是說明能夠執行所公開的技術的系統的至少一個實施例的框圖。
圖8是說明包括地址監控表和原子更新表以支持事務執行的處理器的至少一個實施例的框圖。
具體實施方式
下面的說明描述了用于為線程級推測提供硬件支持的方法、系統和機制的選定實施例。這里所述的裝置、系統和方法實施例可以用于單核或多核多線程系統。在下面的說明中,闡述了大量具體細節,例如處理器類型、多線程環境、系統配置、數據結構、指令助記符以及語義,以便提供對本發明的實施例的更透徹的理解。然而,本領域技術人員可以理解,也可以無需這樣的特定細節而實施本發明。此外,并未詳細示出一些公知的結構、電路等,以免不必要地模糊本發明。
對于采用線程級推測的多線程工作負荷,并發執行的線程的至少一部分(如果不是全部的話)可以共享相同的存儲空間。如這里所使用的,術語“協作線程(cooperative?threads)”描述了共享相同的存儲空間的一組線程。由于協作線程共享存儲空間,它們可以讀取和/或寫入相同的存儲項。因此,為了進行正確的、有意義的工作,并發執行的協作線程應該被彼此同步。
圖1是以圖形形式說明兩個協作線程125、126的框圖,這兩個協作線程125、126共享存儲器的公共邏輯視圖。這樣的共享存儲器多處理范例可以被用于稱為并行編程的方法。根據該方法,應用程序員可以將一個軟件程序(有時稱為“應用程序”或“進程”)拆分成要并發運行的多個線程,以便表示該軟件程序的并行化。也就是,單線程程序(或“進程”)120可以被分成可以并發執行的兩個線程126、125。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于英特爾公司,未經英特爾公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200680022486.2/2.html,轉載請聲明來源鉆瓜專利網。





