用于測試事務(wù)性執(zhí)行狀態(tài)的指令和邏輯的制作方法
【專利說明】
[00011 本發(fā)明專利申請是國際申請?zhí)枮镻CT/US2013/046633,國際申請日為2013年06月 19日,進入中國國家階段的申請?zhí)枮?01380028480.6,名稱為"用于測試事務(wù)性執(zhí)行狀態(tài)的 指令和邏輯"的發(fā)明專利申請的分案申請。
[0002] 相關(guān)申請
[0003] 本申請是2012年2月2日提交的指定美國的當前待審的國際申請PCT/US2012/ 023611的部分繼續(xù)申請。在先的該國際申請通過引用結(jié)合于此,如同其整體記載于本申請 中。
技術(shù)領(lǐng)域
[0004] 本公開一般涉及處理邏輯、微處理器以及相關(guān)的指令集架構(gòu)的領(lǐng)域,這些指令集 架構(gòu)在被處理器或其他處理邏輯所執(zhí)行時執(zhí)行邏輯、數(shù)學(xué)或其他功能性操作。具體地,本公 開涉及用于測試事務(wù)性執(zhí)行狀態(tài)的指令和邏輯。
【背景技術(shù)】
[0005] 半導(dǎo)體處理和邏輯設(shè)計的進步已允許在集成電路器件上可能存在的邏輯量的增 加。因此,計算機系統(tǒng)配置已經(jīng)從系統(tǒng)中的單個或多個集成電路發(fā)展到單個集成電路上存 在的多個處理核和多個邏輯處理器。處理器或集成電路通常包括單個處理器管芯,其中處 理器管芯可包括任意數(shù)量的核或邏輯處理器。
[0006] 集成電路上日益增加的核和邏輯處理器的數(shù)量使得更多軟件線程能夠被并發(fā)地 執(zhí)行。然而,可能同時執(zhí)行的軟件線程的數(shù)量的增加已造成與同步軟件線程之間共享的數(shù) 據(jù)有關(guān)的問題。用于訪問多核或多邏輯處理器系統(tǒng)中的共享數(shù)據(jù)的一個常見的解決方案包 括使用鎖來保證對共享數(shù)據(jù)的多個訪問之間的互斥。然而,不斷增加的執(zhí)行多個軟件線程 的能力對鎖定數(shù)據(jù)產(chǎn)生瓶頸,導(dǎo)致線程要等待其它線程的完成(使它們的執(zhí)行串行化),從 而降低了使多個線程并發(fā)執(zhí)行的益處。此外,在寫入方試圖修改數(shù)據(jù)的情況下,一些只讀訪 問可使用鎖來確保數(shù)據(jù)的互斥,這會帶來排斥其它只讀訪問的不希望有的副作用。
[0007] 例如,考慮保持共享數(shù)據(jù)的散列表。利用鎖系統(tǒng),編程者可鎖定整個散列表,從而 允許一個線程訪問整個散列表。然而,其它線程的吞吐量和性能可能不利地受影響,因為它 們無法訪問散列表中的任何條目,直到該鎖被釋放為止。替代地,散列表中的每個條目可能 被鎖定,從而導(dǎo)致軟件中的許多鎖結(jié)構(gòu)。在這樣的構(gòu)造中,可能需要獲得許多鎖以執(zhí)行特定 任務(wù),這會導(dǎo)致與其它線程的死鎖。無論哪種方式,在將該簡單示例外推到大的可縮放程序 中之后,顯然鎖競爭、串行化、精細粒度同步以及死鎖避免的復(fù)雜程度變成編程者的極其繁 瑣的負擔(dān)。
[0008] 另一種最近的數(shù)據(jù)同步技術(shù)包括使用事務(wù)性存儲器(TM)。通常,事務(wù)性執(zhí)行包括 原子地執(zhí)行多個微操作、操作或指令的分組。在上述示例中,兩個線程在散列表內(nèi)執(zhí)行,并 且它們的存儲器訪問被監(jiān)控/追蹤。如果兩個線程訪問/改變相同的條目,則可執(zhí)行沖突化 解以確保數(shù)據(jù)有效性。一種類型的事務(wù)性執(zhí)行包括軟件事務(wù)性存儲器(STM),其中通常在沒 有硬件支持的情況下在軟件中執(zhí)行對存儲器訪問、沖突化解、中止任務(wù)以及其它事務(wù)性任 務(wù)的追蹤。另一類型的事務(wù)性執(zhí)行包括硬件事務(wù)性存儲器(HTM)系統(tǒng),其中包括用于支持訪 問追蹤、沖突化解以及其它事務(wù)性任務(wù)的硬件。
[0009] 類似于事務(wù)性存儲器的技術(shù)包括硬件鎖省略(HLE),其中在不使用鎖的情況下實 驗性地執(zhí)行被鎖定的關(guān)鍵區(qū)段。如果執(zhí)行成功(即無沖突),則使結(jié)果全局可見。換言之,就 像省略了來自關(guān)鍵區(qū)段的鎖指令的事務(wù)那樣執(zhí)行關(guān)鍵區(qū)段,而不是執(zhí)行原子地定義的事 務(wù)。作為結(jié)果,在上述示例中,不是用事務(wù)來代替散列表執(zhí)行,而是試驗性地執(zhí)行由鎖指令 定義的關(guān)鍵區(qū)段。多個線程類似地在散列表中執(zhí)行,并且它們的訪問被監(jiān)控/追蹤。如果這 些線程中的任一個對同一條目進行訪問/改動,則可執(zhí)行沖突化解以確保數(shù)據(jù)有效性。但是 如果未檢測到?jīng)_突,則原子地進行對散列表的更新。
[0010] 如所見,事務(wù)性執(zhí)行和鎖省略具有在多個線程中提供更佳性能的潛力。然而,HLE 和TM對于微處理器是相對新的研究領(lǐng)域。因此,尚未充分探索或詳細研究處理器中的HLE和 TM實現(xiàn)方式。
【附圖說明】
[0011]在附圖的各圖中通過示例而非限制地示出本發(fā)明。
[0012] 圖1示出用于使用指令和邏輯來測試事務(wù)性執(zhí)行狀態(tài)的計算系統(tǒng)的一個實施例。
[0013] 圖2示出用于使用指令和邏輯來測試事務(wù)性執(zhí)行狀態(tài)的處理器的一個實施例。
[0014] 圖3A示出根據(jù)一個實施例的用于提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令編 碼。
[0015] 圖3B示出根據(jù)另一實施例的用于提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令編 碼。
[0016] 圖3C示出根據(jù)另一實施例的用于提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令編 碼。
[0017] 圖3D示出根據(jù)另一實施例的用于提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令編 碼。
[0018] 圖3E示出根據(jù)另一實施例的用于提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令編 碼。
[0019] 圖4A是處理器微架構(gòu)中用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的 一個實施例的框圖。
[0020] 圖4B示出用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的處理器微架構(gòu) 的一個實施例的要素。
[0021] 圖5是用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的處理器的一個實施 例的框圖。
[0022] 圖6是用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的計算機系統(tǒng)的一個 實施例的框圖。
[0023] 圖7是用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的計算機系統(tǒng)的另一 實施例的框圖。
[0024]圖8是用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的計算機系統(tǒng)的另一 實施例的框圖。
[0025] 圖9是用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的芯片上系統(tǒng)的一個 實施例的框圖。
[0026] 圖10是用于執(zhí)行提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的處理器的實施例 的框圖。
[0027] 圖11是提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的IP核開發(fā)系統(tǒng)的一個實施例的框 圖。
[0028] 圖12示出提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的架構(gòu)仿真系統(tǒng)的一個實施例。
[0029] 圖13示出用于轉(zhuǎn)換提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的指令的系統(tǒng)的一個實 施例。
[0030]圖14示出提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的裝置的一個實施例。
[0031] 圖15示出用于提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的過程的一個實施例的流程 圖。
[0032] 圖16示出用于提供用于測試事務(wù)性執(zhí)行狀態(tài)的功能的過程的替代實施例的流程 圖。
【具體實施方式】
[0033] 本申請中公開的用于測試事務(wù)性執(zhí)行狀態(tài)的指令和邏輯的一些實施例可結(jié)合處 理器指令集架構(gòu)(ISA)事務(wù)性同步擴展(TSX)來實現(xiàn)。這樣的擴展可提供動態(tài)地檢測在多線 程軟件環(huán)境中何時需要通過鎖保護的關(guān)鍵區(qū)段的串行化的能力。編程者指定的代碼區(qū)(稱 為事務(wù)性區(qū)域)可事務(wù)性地執(zhí)行。如果該事務(wù)性執(zhí)行成功地完成(即沒有來自另一進程或線 程的競爭),則在成功完成并從該事務(wù)性區(qū)域退出時,所有存儲器操作或存儲器中的數(shù)據(jù)的 修改將如同原子地或同時地發(fā)生。
[0034] 硬件鎖省略(HLE)是這樣的擴展的一個實施例,它為編程者提供指令集接口以利 用兩個指令前綴提示XAQUIRE和XRELEASE來指定獲取周圍的事務(wù)性區(qū)域并釋放保護關(guān)鍵區(qū) 段的鎖。利用HLE,處理器可省略與該鎖相關(guān)聯(lián)的寫操作,并試圖事務(wù)性地執(zhí)行該區(qū)域。如果 處理器檢測到任何數(shù)據(jù)沖突,則將執(zhí)行事務(wù)性中止,并將非事務(wù)性地并且不省略地重新執(zhí) 行該關(guān)鍵區(qū)段。
[0035] 受限制的事務(wù)性存儲器(RTM)是用于編程者的指令集接口的另一實施例,其使用 三個指令:XBEGIN和XEND,用于執(zhí)行事務(wù)性區(qū)域;以及XAB0RT,用于明確地中止RTM區(qū)域的執(zhí) 行。XBEGIN指令也可指定向相對偏移量的分支,作為將在事務(wù)性中止的情況下執(zhí)行的回退 代碼區(qū)段?;赝舜a可包含沖突化解步驟。明確的XAB0RT還可指定8位立即值以寫入寄存 器,例如給回退代碼區(qū)段使用。本申請中公開的用于測試事務(wù)性執(zhí)行狀態(tài)的指令和邏輯的 實施例也可結(jié)合其它處理器ISA事務(wù)性擴展、和/或結(jié)合HTM、和/或結(jié)合STM、和/或結(jié)合其它 事務(wù)性執(zhí)行上下文來實現(xiàn)。
[0036] 本申請中公開了用于測試事務(wù)性執(zhí)行狀態(tài)的新穎指令、邏輯、方法和裝置。實施例 包括解碼用于開始事務(wù)性區(qū)域的第一指令或前綴。響應(yīng)于該第一指令或前綴,產(chǎn)生用于一 組架構(gòu)狀態(tài)寄存器的檢查點,并追蹤來自處理元件的在與該第一指令相關(guān)聯(lián)的事務(wù)性區(qū)域 中的存儲器訪問。在一個實施例中,用于編程者的指令集接口可包括用于測試事務(wù)性狀態(tài) 的第二指令,其中執(zhí)行該第二指令以確定執(zhí)行上下文是否在該事務(wù)性區(qū)域或推測性事務(wù)關(guān) 鍵區(qū)段(諸如HLE或RTM)之內(nèi)。在一個實施例中,這樣的指令可用于:如果確定該指令正在事 務(wù)性區(qū)域內(nèi)部執(zhí)行,則將標志寄存器設(shè)置為一個值(例如零)。在一個實施例中,這樣的指令 可用于:如果確定該指令不在事務(wù)性區(qū)域內(nèi)部執(zhí)行,則將標志寄存器設(shè)置為另一個值(例如 一)。在一個替代實施例中,這樣的指令可用于將寄存器設(shè)置為指示可能的事務(wù)性區(qū)域的嵌 套級的值。在另一替代實施例中,這樣的指令可用于確定訪問與存儲器操作數(shù)相關(guān)聯(lián)的存 儲器是否會導(dǎo)致可能的事務(wù)性區(qū)域的事務(wù)性中止。在另一替代實施例中,這樣的指令可用 于確定是否存在足夠的緩沖可用于可能的事務(wù)性區(qū)域的事務(wù)性執(zhí)行。其它替代的實施例也 是可能的。
[0037]將理解,通過使用這樣的指令的一個實施例,編程者可在可能的事務(wù)性區(qū)域(諸如 HLE區(qū)域)內(nèi)部動態(tài)地確定該區(qū)域是否正在事務(wù)性地被執(zhí)行,或該區(qū)域是否正在事務(wù)性中止 之后非事務(wù)性地被重新執(zhí)行。使用這樣的指令的一個實施例,編程者可在可能的事務(wù)性區(qū) 域(諸如RTM區(qū)域)內(nèi)部動態(tài)地確定XAB0RT指令是否將恢復(fù)先前的架構(gòu)狀態(tài),或是否將被視 為Ν0Ρ(即無操作)。使用這樣的指令的一個實施例,編程者可動態(tài)地確定庫例程是從事務(wù)性 區(qū)域內(nèi)被調(diào)用還是從回退代碼區(qū)段被調(diào)用。將理解,通過使用這樣的指令的一個實施例,編 程者可動態(tài)地確定事務(wù)性區(qū)域的嵌套級是否會接近硬件限制以及進一步的嵌套是否將會 導(dǎo)致事務(wù)性中止。
[0038]在以下描述中,陳述了諸如處理邏輯、處理器類型、微架構(gòu)條件、事件、啟用機制等 多種特定細節(jié),以提供對本發(fā)明實施例的更透徹理解。然而,本領(lǐng)域技術(shù)人員應(yīng)當領(lǐng)會,沒 有這些具體細節(jié)也可實踐本發(fā)明。此外,沒有詳細示出一些公知的結(jié)構(gòu)、電路等等,以避免 不必要地模糊本發(fā)明的實施例。
[0039] 本發(fā)明的這些和其它實施例可根據(jù)以下教導(dǎo)而實現(xiàn),并且應(yīng)當明白,可在以下教 導(dǎo)中作出各種修改和改變,而不背離本發(fā)明的更寬廣精神和范圍。從而,應(yīng)按照說明性而不 是限制性的意義來看待說明書和附圖,并且本發(fā)明僅根據(jù)權(quán)利要求及其等價物來定界。
[0040] 圖1示出用于使用指令和邏輯來測試事務(wù)性執(zhí)行狀態(tài)的計算系統(tǒng)100的一個實施例。 根據(jù)本發(fā)明,諸如根據(jù)在此所描述的實施例,系統(tǒng)1〇〇包括諸如處理器102之類的組件,以采用 包括邏輯的執(zhí)行單元來執(zhí)行算法以處理數(shù)據(jù)。系統(tǒng)100代表基于可從美國加利福尼亞州圣克 拉拉市的英特爾公司獲得的 PENTIUM? III、PENTIUM? 4、Xe:ontra、Itanium?、 XScalet!^P/或StrongARMtm微處理器的處理系統(tǒng),不過也可使用其它系統(tǒng)(包括具有其它微 處理器的PC、工程工作站、機頂盒等)。在一個實施例中,樣本系統(tǒng)100可執(zhí)行可從美國華盛 頓州雷蒙德市的微軟公司獲得的WIND0WS tm操作系統(tǒng)的一個版本,不過也可使用其它操作系 統(tǒng)(例如UNIX和Linux)、嵌入式軟件、和/或圖形用戶界面。因此,本發(fā)明的各實施例不限于 硬件和軟件的任何具體組合。
[0041] 實施例不限于計算機系統(tǒng)。本發(fā)明的替代實施例可被用于其他設(shè)備,諸如手持式 設(shè)備和嵌入式應(yīng)用。手持設(shè)備的一些示例包括蜂窩電話、網(wǎng)際協(xié)議設(shè)備、數(shù)碼相機、個人數(shù) 字助理(PDA)以及手持PC。嵌入式應(yīng)用可包括:微控制器、數(shù)字信號處理器(DSP)、芯片上系 統(tǒng)、網(wǎng)絡(luò)計算機(NetPC)、機頂盒、網(wǎng)絡(luò)集線器、廣域網(wǎng)(WAN)交換機、或可執(zhí)行根據(jù)至少一個 實施例的一個或多個指令的任何其他系統(tǒng)。
[0042]圖1是計算機系統(tǒng)10