Movatterモバイル変換


[0]ホーム

URL:


TWI305897B - Method, apparatus and related computer system for avoiding locks by speculatively executing critical sections - Google Patents

Method, apparatus and related computer system for avoiding locks by speculatively executing critical sections
Download PDF

Info

Publication number
TWI305897B
TWI305897BTW093102963ATW93102963ATWI305897BTW I305897 BTWI305897 BTW I305897BTW 093102963 ATW093102963 ATW 093102963ATW 93102963 ATW93102963 ATW 93102963ATW I305897 BTWI305897 BTW I305897B
Authority
TW
Taiwan
Prior art keywords
execution
critical section
program
cache memory
storage
Prior art date
Application number
TW093102963A
Other languages
English (en)
Other versions
TW200504588A (en
Inventor
Marc Tremblay
Shailender Chaudhry
Quinn A Jacobson
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filedlitigationCriticalhttps://patents.darts-ip.com/?family=32853304&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=TWI305897(B)"Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Sun Microsystems IncfiledCriticalSun Microsystems Inc
Publication of TW200504588ApublicationCriticalpatent/TW200504588A/zh
Application grantedgrantedCritical
Publication of TWI305897BpublicationCriticalpatent/TWI305897B/zh

Links

Classifications

Landscapes

Description

1305897 (1) 玖、發明說明 相關申請案 本申請案依據3 5美國§ 1 1 9法典 十三日由 Shailender Chaudhry、Marc Jacobson,所申請之 No. 60/447,128 姜 記憶體」的優先權。 【發明所屬之技術領域】 本發明關於改善電腦系統內效能& 本發明關於藉由臆測地執行程式碼關I 問鎖所包含之冗餘工作的方法與裝置。 【先前技術】 電腦系統設計者目前正開發一種 多重處理晶片(CMP )與較傳統之多 CMP )中的多線程。藉由適當的硬體 提昇許多應用程式的效能。然而,隨 續提昇,線程(處理)間同步花費的 時間的一大部分。事實上,多線程應 線程,此同步的冗餘工作成爲限制應 素。 由一個程式設計者的觀點,同步 完成。在線程進入程式碼的關鍵區段 個閂鎖,並於該線程離開該關鍵區段 ,主張2003年二月 Tremblay 及 Quinn ^國臨時專利「交易 技術。較具體地, 區段,以避免使用 制,以支援新一代 處理共享記憶體( 援,多線程可大幅 微處理器效能的持 間便成爲整個執行 程式開始使用更多 程式效能的主要因 吊錯由使用問鎖而 前’典型地需要— 閂鎖解除。若其他 -5- 1305897 (2) 線程要進入該相同的關鍵區段,便須嘗試獲得相同的閂鎖 。若因進行中之線程的佔用’而無法獲得該閂鎖,該線程 便須等待直到該進行中之線程解除閂鎖。(請注意,閂鎖 可經由許多方法而完成,例如經由自動作業或信號。) 可惜’在數據機微處理器中,獲得閂鎖的處理與解除 閂鎖的處理均極費時。其包括典型地嵌平負載緩衝器與記 憶緩衝器等自動作業,即使不需成千亦需數百個處理器週 期來完成。 此外’隨著多線程應用程式使用越多線程,便需要越 多閂鎖。例如,若多個線程需要擷取一共用資料結構,那 麼整個資料結構使用單一閂鎖,對效能而言是不切實際的 。反之’使用多個微粒閂鎖鎖定資料結構的細小部分則是 較佳的。如此使得多個線程可在該資料結構的不同部分並 列作業。然而’其亦需要單一線程,獲得及解除多個閂鎖 ’以便擷取該資料結構的不同部分。 在若千狀況中’是當不需要時使用閂鎖。例如,許多 應用程式利用「線程安全」庫常式,其係使用閂鎖以確保 多線程應用程式之「線程安全」。可惜,即使當線程安全 庫常式係由單線程應用程式呼叫時,仍無法避免獲得及解 除該些閂鎖中所包含的冗餘工作。 應用程式典型地使用閂鎖,以確保程式碼之關鍵區段 之間的互斥性。然而’在許多狀況中,即使線程可同時執 行一關鍵區段,其彼此亦不干擾。在渠等狀況中,互斥性 係用於避免線程彼此實際子擾之狀況。因此,在許多狀況 -6 - 1305897 (3) 中’獲得及解除閂鎖中所包含的冗餘工作是極大的浪費。 吾人所需要的是一種方法與裝置,可減少擷取程式碼 之關鍵區段時’多閂鎖中所包含的冗餘工作。 【發明內容】 本發明之一實施例提供一種系統,有助於避免藉由臆 測地執行程式碼之關鍵區段的閂鎖。作業中,該系統允許 程序臆 '測地執行程式中程式碼之關鍵區段,而不需首先獲 得與該關鍵區段相關的閂鎖。若該程序隨後完成該關鍵區 段’而未受其他程序的干擾資料擷取,該系統便指定臆測 執行中的改變’並恢復經過該關鍵區段之程式的正常非臆 測執行。否則’若在執行關鍵區段中發生其他程序的干擾 資料擷取,該系統便放棄臆測執行中的改變,並嘗試再次 執行該關鍵區段。 在此實施例的變化中,允許於該關鍵區段的臆測執行 中’擷取其他程序的資料。 在此實施例的變化中,嘗試再次執行該關鍵區段,係 包括臆測地再次執行該關鍵區段。 在此實施例的變化中,若該關鍵區段歷經許多臆測執 行的嘗試後’並未順利地完成,該系統便獲得與該關鍵區 段相關的閂鎖’並接著非臆測地執行該關鍵區段。該系統 接著解除該閂鎖。 在此實施例的變化中’於允許臆測地執行該關鍵區段 之程序前’該系統執行一查核作業,查核暫存器的値,及 -7- 1305897 (4) 與該程序相關的其他狀態資訊。 在此實施例的變化中,於該關鍵區段的臆測執行中’ 進行一載入作業,該系統「載入標記」一相關的快取記憶 體儲存界。請注意,該相關的快取記億體儲存界可載入標 記爲一級(L1 )快取記憶體。 在此實施例的變化中,於該關鍵區段的臆測執行中, 進行一儲存作業,該系統便先取得專用的相關快取記憶體 儲存界,並「儲存標記」相關的快取記憶體儲存界。請注 意,該相關的快取記憶體儲存界,可儲存標記於最接近快 取記憶體儲存界相干之處理器的快取記憶體等級。 在此實施例的變化中,干擾的資料擷取可包括藉由其 他程序,儲存至已由該程序載入標記的快取記億體儲存界 ;及藉由其他程序,載入或儲存至已由該程序儲存標記的 快取記憶體儲存界。 在此實施例的變化中,當指定臆測執行中的改變時, 該系統便淸除快取記憶體儲存界的載入標記,並指定臆測 執行中暫存器檔案的改變。該系統亦將儲存標記的快取記 憶體儲存界視爲閂鎖,藉此使其他程序等待擷取該儲存標 記的快取記憶體儲存界。該系統接著將臆測執行中產生的 緩衝器條目,儲存至記憶體,其中所執行的每一儲存緩衝 器條目,包括未標記(藉以解除閂鎖)之相關的快取記億 體儲存界。 在此實施例的變化中,當放棄臆測執行中的改變時, 該系統便放棄臆測執行中暫存器檔案的改變,並淸除快取 -8- 1305897 (5) 記憶體儲存界的載入標記。該系統亦汲取在 生的儲存緩衝器條目,並淸除快取記憶體儲 記。 【實施方式】 下列說明係爲使任一熟悉本技藝之人士 發明,並於特定應用與需求的內文中提供。 的各種修改,對於熟悉本技藝之人士將是顯 中所定義的理論可在不偏離本發明的精神與 於其他實施例與應用。因此,本發明並不希 示的實施例’而是符合此間所揭露之原理與 圍。 電腦系統 圖】描繪依據本發明一實施例之電腦系 系統1 〇〇通常爲任一形式的電腦系統,包括 微處理器爲主的電腦系統、大型電腦、數位 手提電腦裝置、個人資訊管理系統、裝置控 中的計算引擎。如圖1中所描繪的,電腦系 理器1 0 1及二級(L2 )快取記憶體】2 〇,其 未顯示)相連。處理器1〇2結構上與處理器 以下列僅說明處理器1 0 1。 處理器101具有兩個暫存器檔案1〇3及 一爲「現用暫存器檔案」,另一爲備份「影 臆測執行中產 存界的儲存標 執行並利用本 所揭露實施例 而易見的,文 範圍下,施用 望侷限於所顯 特性的最寬範 統1 00。電腦 但不侷限於以 信號處理器、 制器,及裝置 統1 00包括處 與主記憶體( 1 01相似,所 1 04,其中之 子暫存器檔案 1305897 (6) 」。在本發明的一實施例中,處理器1 ο 1提供快閃複製作 業,立即將暫存器檔案103的所有値複製至暫存器檔案 1 04。此有助於實施快速暫存器查核作業,以支援臆測執 行。 處理器1 0 1亦包括一或多項功能性單元,例如加法器 1 07及乘法器1 08。該些功能性單元用於執行計算作業, 包括擷取自暫存器檔案103或104的運算元。如同傳統處 理器’經由載入緩衝器1 1 1及儲存緩衝器1 1 2進行載入及 儲存作業。 處理器1 0 1另包括一級(L 1 )資料快取記憶體1 1 5, 儲存將爲處理器1 0 1處理的資料項目。請注意,L 1資料 快取記憶體1 1 5中的每一儲存界包括「載入標記位元J , 標示臆測執行中該儲存界已載入的資料値。如下列參照圖 3 - 8之說明,此載入標記位元係用於判斷臆測執行中是否 發生任何干擾記憶參考。處理器1 〇1亦包括L 1指令快取 記憶體(未顯示)。 請注意,載入標記不必然發生於L1資料快取記憶體 I 1 5。通常載入標記可發生於任一等級的快取記憶體’例 如L 2快取記億體1 2 0。然而,爲求性能之故,載入標記 儘可能發生於最接近處理器的快取記憶體等級’此例中爲 L 1資料快取記億體1 1 5。否則,即使選中L 1 ’亦須前進 至L2快取記憶體120。 L2快取記憶體1 2〇在處理器1 〇1中’與L 1資料快取 記憶體1 ] 5 (及一相關指令快取記憶體)共同作業’並在 -10- 1305897 (7) 處理器1 02中,與L1資料快取記億體1] 7 (及一相關指 令快取記憶體)共同作業。請注意L2快取記憶體1 20與 相干機制 122結合,例如 2002年六月廿六日由 Shailender Chaudhry 及 Marc Tremblay 二發明者所申請之 No. 10/186,11S美國專利「有助於多重處理器系統中臆測 載入之方法與裝置」(發布編號No. US-2002-0199066-A1 ),其中所說明的反向目錄結構。相干機制1 22維持每一 快取記憶體儲存界的「複寫資訊」1 2 1。若快取記憶體儲 存界的目前版本,必須首先擷取自其他處理器,複寫資訊 121便有助於傳送L2快取記憶體120的快取記憶體儲存 界,至提出要求的處理器。 L2快取記憶體1 20中的每一儲存界包括一「儲存標 記位元」,標示於臆測執行中儲存至該儲存界的資料値。 如下列參照圖3 -8之說明,此儲存標記位元係用於判斷臆 測執行中是否發生任何干擾記憶參考。請注意,儲存標記 並非必然發生於L2快取記憶體1 20中。 理想地,儲存標記發生於最接近處理器的快取記憶體 等級,其中快取記憶體儲存界是相干的。對於寫透式L 1 資料快取記憶體而言,諸寫入自動地傳輸至L2快取記憶 體1 2 0。然而,若L 1資料快取記憶體爲一回寫式快取記 億體,吾人便在L1資料快取記憶體中執行儲存標記。( 請注意,快取記憶體相干協定確保後續修改相同快取記憶 體儲存界的任一其他處理器,將可擷取L 1資料快取記憶 體的快取記憶體儲存界,因而將知悉儲存標記。) -11 - 1305897 ⑻ 執行關鍵區段 圖2描繪依據本發明一實施例,如何執行—關鍵區段 。如圖2左手邊所描繪的,執行關鍵區段的程序,典型地 在進入該關鍵區段之前,需要與該關鍵區段相關的閂鎖。 若該Η鎖已由其他程序獲得’該程序便須等待直至其他程 序解除該閂鎖。一離開該關鍵區段,程序便解除閂鎖。( 請注意,本說明中「線程」與「程序」可交替使用。) 一閃鎖可與共用的資料結構相關。例如,在擷取一共 用結構前’一程序可在該共用的資料結構上獲得一閂鎖。 該程序接著可執行擷取該共用資料結構之程式碼的關鍵區 段。在該程序完成該共用資料結構的擷取之後,該程序便 解除該問鎖。 相較之下,在本發明中,程序並未獲得一閂鎖,而是 在進入該關鍵區段之前’執行一查核指令。若該關鍵區段 順利地不受其他程序干擾而完成,那麼該程序便執行一指 定作業,指定臆測執行中的變化。此一連串的事件將於下 述參照圖3-8進行更詳細的說明。 請注意’在本發明一實施例中,編譯程式取代獲得具 查核指令之指令的閂鎖,亦取代解除具指定指令之指令的 相關問鎖。(請注意,在被取代的指令間可能無一對一的 關係。例如’包含多個指令的單一閂鎖獲得作業,可能被 單一查核指令所取代。)上述討論假設處理器的指令集已 擴充’以包含查核指令與指定指令。渠等指令將於下述參 -12 - 1305897 (9) 照圖4及7進行更詳細的說明。 臆測執行程序 圖3爲一流程圖,描繪依據本發明一實施例,如何展 開臆測執行。一程序在進入程式碼的關鍵區段之前,首先 執行查核指令(步驟3 02 )。接著,該系統在該關鍵區段 內臆測地執行程式碼,並無該臆測執行的指定結果(步驟 3 04 ) 〇 在臆測執行中,系統持續地監控其他處理器的資料參 考(步驟3 05 ),並判斷在臆測執行中是否發生干擾資料 擷取(步驟3〇6 )。若否,該系統便指定臆測執行中的變 化(步驟3 08 ),接著並重新實施通過該關鍵區段之程式 的一般非臆測執行(步驟3 1 0 )。 另一方面,若檢測到干擾資料擷取,該系統便放棄臆 測執行中的改變(步驟3 1 2 ),並嘗試再次執行該關鍵區 段(步驟3 1 4 )。 在本發明一實施例中,系統嘗試再次臆測地執行該關 鍵區段零、一 '二或更多次。若該些嘗試並未順利,該系 統便回復至於進入該關鍵區段之前,獲取該關鍵區段之閂 鎖的傳統技術,並於離開該關鍵區段後,解除閂鎖。 請注意,干擾資料擷取可包括經由其他程序,進行已 被該程序載入標記之侠取記憶體儲存界的儲存。其亦可包 括經由其他程序’進行已被該程序儲存標記之快取記憶體 儲存界的載入或儲存。 -13- 1305897 (10) 亦請注意’檢測干擾資料擷取之電路,可經由略微修 改傳統快取記億體相干電路,而輕易地完成。此傳統快取 記憶體相干電路目前產生信號,可顯示所指定之快取記憶 體儲存界是否被其他處理器擷取。因此,渠等信號可用以 判斷是否已發生干擾資料擷取。 查核程序 圖4爲一流程圖’描繪依據本發明一實施例之查核作 業。此流程圖描繪圖3中’該流程圖之步驟302所發生者 。此系統隨著暫存器檔案的查核作業(步驟402)而展開 。此可包括自暫存器檔案1〇3,執行快閃複製作業至暫存 器檔案104(參閱圖1)。除了暫存器値的查核作業外, 此快閃複製亦可實施與刻正執行程序相關之各種狀態暫存 器的查核作業。通常’該快閃複製作業執行足夠狀態的查 核,以便重新啓動相關線程。 此查核作業亦使得儲存緩衝器1 1 2成爲「閘門化」( 步驟4 04 )。此允許儲存緩衝器中的現有條目傳至記憶體 子系統’但防止臆測執行中所產生的新儲存緩衝器條目亦 進行相同傳輸。 載入標記程序 圖5爲一流程圖,描繪依據本發明一實施例,如何於 臆測執行中實施載入標記。在關鍵區段的臆測執行中,該 系統執行一載入作業。在執行此載入作業時,系統首先嘗 -14- 1305897 (11) 試載入L1資料快取記憶體115的資料項(步驟5 02 )。 若該載入產生一快取記億體命中,該系統便「載入標記」 L1資料快取記憶體1 1 5的相關快取記憶體儲存界(步驟 5 0 6 )。此包括設定快取記憶體儲存界的載入標記位元。. 否則,若該載入造成快取記億體漏失,該系統便自較低階 的電腦層級擷取快取記憶體儲存界(步驟5 08 ),並前進 至步驟5 06,載入標記資料快取記憶體1 1 5中的快取記億 體儲存界。 儲存標記程序 圖6爲一流程圖,描繪依據本發明一實施例,如何於 臆測執行中實施儲存標記。在關鍵區段的臆測執行中,該 系統執行一儲存作業。對此儲存作業而言,系統首先預先 取得專用的相關快取記憶體儲存界(步驟602 )。請注意 ’若儲存界已位於快取記憶體中,且已處於專用狀態,那 麼便不執行該預先取得作業。 由於此範例中,L 1資料快取記憶體11 5爲一寫透式 資料快取記憶體,該儲存作業便經由L1資料快取記憶體 1 15傳導至L2快取記億體120。該系統接著嘗試閂鎖L] 資料快取記憶體1 1 5中,與該儲存作業相關的快取記憶體 儲存界(步驟604 )。若該相關的儲存界位於L2快取記 憶體1 20中(快取記憶體命中),該系統便「儲存標記j L2快取記億體1 20中相關的快取記億體儲存界(步驟6 1 0 )。此包括設定該快取記憶體儲存界的儲存標記位元。否 -15- 1305897 (12) 則,若該相關的快取記憶體儲存界並非位於L2快取記憶 體1 2 0中(快取記憶體漏失),該系統便自較低階的電腦 層級擷取快取記憶體儲存界(步驟6 0 8 ),接著並前進至 步驟6 1 0,儲存標記L2快取記憶體1 2 0中的快取記憶體 儲存界。 其次,在該快取記億體儲存界於步驟6 1 0中被儲存標 記之後,該系統便將該儲存資料輸入至儲存緩衝器1 1 2的 條目中(步驟612)。請注意,此儲存資料仍將位於儲存 緩衝器1 1 2中,直至後續的指定作業展開,或直至放棄臆 測執行中的改變爲止。 指定作業 圖7爲一流程圖,描繪依據本發明一實施例,臆測執 行順利完成後,如何執行指定作業。此流程圖描繪圖3之 流程圖的步驟3 0 8中所發生者。 此系統隨著將儲存標記之快取記憶體儲存界視爲被閂 鎖而展開(步驟7 〇 2 )。此意即其他要求儲存標記儲存界 的程序,在可擷取該儲存界之前必須等待,直至該儲存界 不再被閂鎖爲止。此與傳統快速記憶體中儲存界的閂鎖類 似。 接著’該系統便淸除L]資料快取記億體]1 5的載入 標記(步驟7 〇 4 )。 該系統接著將臆測執行中所產生之儲存緩衝器1 ] 2的 條目,指定記憶體層級(步驟706 )。隨著每一條目均指 •16- 1305897 (13) 定後,L2快取記憶體1 2 0中的相關儲存界便未被標 該系統亦指定暫存器檔案的改變(步驟7 0 8 ) ,可包括執行圖I中所描繪之暫存器檔案]03與暫 案104間的快閃複製。 放棄改變 圖8爲一流程圖’描繪依據本發明一實施例, 行順利完成後,如何執行放棄改變。此流程圖描繪 流程圖的步驟3 1 2中所發生者。該系統首先放棄臆 中暫存器檔案的改變(步驟802)。此可包括淸除 地忽略臆測執行中暫存器檔案的改變。由於在實施 行之前,已查核舊暫存器値,所以上述作業是易於 。該系統亦淸除L 1資料快取記憶體5中快取記 存界的載入標記(步驟8 04 ),並汲取臆測執行中 未指定記憶體層級的儲存緩衝器條目(步驟8 0 6 ) ’該系統未標記相關的L2快取記憶體儲存界。最 本發明一實施例中’該系統分支至查核指令指定的 置(步驟808)。如同上述參照圖1之步驟314的 該目標位置的程式碼嘗試再次執行關鍵區段。 上述本發明之實施例的說明,僅體現描繪與說 。不期盼能極盡透徹或將本發明侷限於所揭露的型 此’許多修改與變化對於熟悉本技藝之人士而言是 見的。此外,上述揭露並不期盼侷限本發明。本發 圍由申請專利之範圍訂定。 記。 。例如 存器檔 臆測執 圖3之 測執行 或簡單 臆測執 完成的 憶體儲 產生之 。同時 後,在 目標位 說明, 明之用 式。因 顯而易 明的範 -17- 1305897 (14) 【圖式簡單說明] 圖1描繪依據本發明—實施例的電腦系統。 圖2描繪依據本發明^__•實施仿丨丨, ,' +股刃貫施例,如何執行關鍵區段。 圖3爲 程圖,描繪依據本發明 嫁I ^月〜實施例的臆測執 行程序。
圖4爲一流程圖 描繪依據本發明〜 實施例的查核作 如何於 圖5爲一流程圖,描繪依據本發明〜 賞施例 臆測執行中進行載入標記。 圖6爲一流程圖,描繪依據本發明〜 臆測執行中進行儲存標記。 鹙施例 如何於 寘施例,如何於 寳施例,如何於 圖7爲一流程圖’描繪依據本發明〜 月思測執彳T順利完成後,進行指定作業。 圖8爲一流程圖,描繪依據本發明〜 臆測執彳T順利完成後,放棄改變。 【主要元件對照表〕 1 00 電腦系統 101' 102 處理器 103、 104、 105、 106 暫存器檔案 107 加法器 1 08 乘法器 111' Π 3 載入緩衝器 -18- 1305897 (15) 112' 114 儲存緩衝器 115' 117 資料快取記憶體 116' 118 載入標記位元 119 儲存標記位元 120 快取記憶體 12 1 複寫資訊 122 相千機制 -19-

Claims (1)

  1. 曰書 ¥ 日修丨 替换頁 拾、申請專利範圍 附件4A: 第93102963號專利申請案 中文申請專利範圍替換本 民國96年7月26日修正 1. 一種藉由臆測地執行程式碼之關鍵區段而避免閂鎖 的方法,包括: 允許程序臆測地執行程式中程式碼之關鍵區段,不需 首先獲得與該關鍵區段相關的閂鎖; 其中若該程序完成該關鍵區段,而未受其他程序的干 擾資料擷取,該方法便進一步包括: 指定臆測執行中的改變,並恢復經過該關鍵區段之程 式的正常非臆測執行;及 其中若在執行關鍵區段中發生其他程序的干擾資料擷 取,該方法便進一步包括: 放棄臆測執行中的改變,並嘗試零或多次地再次執行 該關鍵區段。 2. 如申請專利範圍第1項之方法,其中允許於該關鍵 區段的臆測執行中,進行其他程序的資料擷取。 3 ·如申請專利範圍第1項之方法’其中嘗試再次執行 該關鍵區段,包括臆測地再次執行該關鍵區段。 4.如申請專利範圍第3項之方法,其中若該關鍵區段 歷經許多臆測執行的嘗試後,並未順利地完成,該方法便 進一步包括: '· 1 1 丨··丨 . "丨 1305897 萆H#4)正替換頁 獲得與該關鍵區段相關的閂鎖; 非臆測地執行該關鍵區段;及 解除與該關鍵區段相關的該閂鎖。 5 .如申請專利範圍弟1項之方法,其中於允許臆測地 執行該關鍵區段之程序前,該方法進一步包括執行_查核 作業’查核暫存器的値,及與該程序相關的其他狀態資訊
    6 ·如申請專利範圍第1項之方法,其中於該關鍵區段 的臆測執行中,進行一載入作業,該方法進一步包括載入 標記一相關的快取記億體儲存界。 7 ·如申請專利範圍第6項之方法,其中該相關的快取 記憶體儲存界被載入標記於一級(L 1 )快取記憶體中。
    8 ·如申請專利範圍第1項之方法,其中於該關鍵區段 的臆測執行中,進行一儲存作業,該方法進一步包括:預 先取得專用的相關快取記億體儲存界;並「儲存標記」相 關的快取記憶體儲存界。 9. 如申請專利範圍第8項之方法,其中該相關的快取 記憶體儲存界,被儲存標記於最接近快取記憶體儲存界相 干之處理器的快取記憶體等級。 10. 如申請專利範圍第1項之方法,其中干擾的資料 擷取可包括: 藉由其他程序,儲存至已由該程序載入標記的快取記 憶體儲存界;及 藉由其他程序,載入或儲存至已由該程序儲存標記的 -2- 1305897 ! (3) / 快取記憶體儲存界。 1 1 ·如申請專利範圍第1項之方法,其中在執行該關 鍵區段之前,程序執行查核作業: 查核目前處理器的暫存器檔案;及 使得該程序的儲存緩衝器成爲閘門化,如此該儲存緩 衝器便不能將臆測執行中所產生的儲存向外傳送。
    1 2 .如申請專利範圍第1項之方法,其中指定臆測執 行中的改變包括: 將被儲存標記之快取記憶體儲存界視爲已閂鎖,藉以 使得其他程序等待擷取被儲存標記之快取記億體儲存界; 清除快取記憶體儲存界的載入標記; 將該臆測執行中所產生之儲存緩衝器條目指定至記憶 體,其中指定每一儲存緩衝器條目包括解除標記,藉以解 除相關快取記憶體儲存界的閂鎖;及 指定臆測執行中暫存器檔案的改變。
    1 3 ·如申請專利範圍第1項之方法,其中放棄臆測執 行中的改變包括: 放棄臆測執行中暫存器檔案的改變; 清除快取記憶體儲存界的載入標記; 汲取臆測執行中所產生之儲存緩衝器條目;及 清除快取記憶體儲存界的儲存標記。 1 4. 一種藉由臆測地執行程式碼之關鍵區段而避免閂 鎖的裝置,包括: 一種臆測執行機制單元,用以允許程序臆測地執行程 -3- 1305897 (4)
    式中程式碼之關鍵區段,不需首先獲得與該關鍵區段相關 的閂鎖; 一種指定機制單元’其中若該程序完成該關鍵區段, 而未受其他程序的干擾資料擷取’該指定機制單元便用以 指定臆測執行中的改變,並恢復經過該關鍵區段之程式的 正常非臆測執行;及
    一種再次執行機制單元,其中若在執行關鍵區段中發 生其他程序的干擾資料擷取’該再次執行機制單元便用以 放棄臆測執行中的改變’並嘗試零或多次地再次執行該關 鍵區段。 15. 如申請專利範圍第14項之裝置,其中該臆測執行 機制單元’用以允許於該關鍵區段的臆測執行中,進行其 他程序的資料擷取。 16. 如申請專利範圍第14項之裝置,其中該再次執行 機制單元,用以臆測地再次執行該關鍵區段。
    17·如申請專利範圍第14項之裝置,其中若該關鍵區 段歷經許多臆測執行的嘗試後,並未順利地完成,該再次 執行機制單元用以: 獲得與該關鍵區段相關的閂鎖; 非臆測地執行該關鍵區段;及 解除與該關鍵區段相關的該閂鎖。 1 8 .如申請專利範圍第1 4項之裝置,進一步包括一查 核機制單元,在允許該程序臆測地執行該關鍵區段之前, 用以查核暫存器的値,及與該程序相關的其他狀態資訊。 -4- 1305897 (5)
    1 9.如申請專利範圍第】4項之裝置,其中於該關鍵區 段的臆測執行中,一旦執行載入作業,該臆測執行機制單 元便用以載入標記一相關的快取記憶體儲存界。 20.如申請專利範圍第1 9項之裝置’其中該相關的快 取SS憶體儲存界被載入標記於一級(l 1 )快取記憶體中。 2 1 ·如申請專利範圍第丨3項之裝置,其中於該關鍵區 段的臆測執行中’一旦執行儲存作業,該臆測執行機制單 元便用以:
    預先取得專用的相關快取記憶體儲存界;並儲存標記 相關的快取記憶體儲存界。 2 2 .如申請專利範圍第2 1項之裝置,其中相關的快取 記憶體儲存界,被儲存標記於最接近快取記憶體儲存界相 干之處理器的快取記憶體等級。 23. 如申請專利範圍第14項之裝置,其中干擾的資料 擷取可包括:
    藉由其他程序,儲存至已由該程序載入標記的快取記 憶體儲存界;及 藉由其他程序,載入或儲存至已由該程序儲存標記的 快取記憶體儲存界。 24. 如申請專利範圍第14項之裝置,進一步包括一查 核機制單元,其中在執行該關鍵區段之前’該查核機制單 元用以: 查核現有處理器暫存器檔案;及 安裝該程序的儲存緩衝器使其成爲閘門化’如此該儲 -5- 躲?‘傭 1305897 (6) 存緩衝器便不能將臆測執行中所產生的儲存向外傳送。 25 .如申請專利範圍第1 4項之裝置,其中當指定臆測 執行中的改變時,該指定機制單元用以: 將被儲存標記之快取記憶體儲存界視爲已閂鎖,藉以 使得其他程序等待擷取被儲存標記之快取記億體儲存界; 清除快取記憶體儲存界的載入標記;
    將該臆測執行中所產生之儲存緩衝器條目指定至記憶 體,其中指定每一儲存緩衝器條目包括解除標記,藉以解 除相關快取記憶體儲存界的閂鎖;及 指定臆測執行中暫存器檔案的改變。 26.如申請專利範圍第14項之裝置,其中當放棄臆測 執行中的改變.時,該指定機制單元用以: 放棄臆測執行中暫存器檔案的改變; 清除快取記憶體儲存界的載入標記;
    汲取臆測執行中所產生之儲存緩衝器條目;及 清除快取記憶體儲存界的儲存標記。 2 7.—種藉由臆測地執行關鍵區段以避免閂鎖之電腦 系統,包括: 一處理器; 在該處理器中的一種臆測執行機制,用以允許程序臆 測地執行程式中程式碼之關鍵區段,不需首先獲得與該關 鍵區段相關的閂鎖; 在該處理器中的一種指定機制,其中若該程序完成該 關鍵區段,而未受其他程序的干擾資料擷取,該指定機制 -6- 1305897 ------- I年月曰修’i.L替換頁丨 便用以指定臆測執行中的改變,並恢復經過該關鍵區段之 程式的正常非臆測執行;及 在該處理器中的一種再次執行機制,其中若在執行關 鍵區段中發生其他程序的干擾資料擷取,該再次執行機制 便用以放棄臆測執行中的改變,並嘗試零或冬> ^ 少人地再次執 行該關鍵區段。
TW093102963A2003-02-132004-02-09Method, apparatus and related computer system for avoiding locks by speculatively executing critical sectionsTWI305897B (en)

Applications Claiming Priority (2)

Application NumberPriority DateFiling DateTitle
US44712803P2003-02-132003-02-13
US10/439,911US6862664B2 (en)2003-02-132003-05-16Method and apparatus for avoiding locks by speculatively executing critical sections

Publications (2)

Publication NumberPublication Date
TW200504588A TW200504588A (en)2005-02-01
TWI305897Btrue TWI305897B (en)2009-02-01

Family

ID=32853304

Family Applications (1)

Application NumberTitlePriority DateFiling Date
TW093102963ATWI305897B (en)2003-02-132004-02-09Method, apparatus and related computer system for avoiding locks by speculatively executing critical sections

Country Status (6)

CountryLink
US (1)US6862664B2 (zh)
EP (1)EP1593038A1 (zh)
JP (1)JP4558714B2 (zh)
KR (1)KR100748292B1 (zh)
TW (1)TWI305897B (zh)
WO (1)WO2004075051A1 (zh)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US6282637B1 (en)*1998-12-022001-08-28Sun Microsystems, Inc.Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs
US7120762B2 (en)*2001-10-192006-10-10Wisconsin Alumni Research FoundationConcurrent execution of critical sections by eliding ownership of locks
US7269694B2 (en)2003-02-132007-09-11Sun Microsystems, Inc.Selectively monitoring loads to support transactional program execution
US7089374B2 (en)*2003-02-132006-08-08Sun Microsystems, Inc.Selectively unmarking load-marked cache lines during transactional program execution
US7398355B1 (en)2003-02-132008-07-08Sun Microsystems, Inc.Avoiding locks by transactionally executing critical sections
US7269693B2 (en)2003-02-132007-09-11Sun Microsystems, Inc.Selectively monitoring stores to support transactional program execution
US6938130B2 (en)*2003-02-132005-08-30Sun Microsystems Inc.Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US20040163082A1 (en)*2003-02-132004-08-19Marc TremblayCommit instruction to support transactional program execution
US7418577B2 (en)*2003-02-132008-08-26Sun Microsystems, Inc.Fail instruction to support transactional program execution
US7269717B2 (en)*2003-02-132007-09-11Sun Microsystems, Inc.Method for reducing lock manipulation overhead during access to critical code sections
US7178062B1 (en)*2003-03-122007-02-13Sun Microsystems, Inc.Methods and apparatus for executing code while avoiding interference
US7340569B2 (en)*2004-02-102008-03-04Wisconsin Alumni Research FoundationComputer architecture providing transactional, lock-free execution of lock-based programs
US8074030B1 (en)2004-07-202011-12-06Oracle America, Inc.Using transactional memory with early release to implement non-blocking dynamic-sized data structure
US7703098B1 (en)2004-07-202010-04-20Sun Microsystems, Inc.Technique to allow a first transaction to wait on condition that affects its working set
US7930694B2 (en)*2004-09-082011-04-19Oracle America, Inc.Method and apparatus for critical section prediction for intelligent lock elision
US7376800B1 (en)2004-09-142008-05-20Azul Systems, Inc.Speculative multiaddress atomicity
US7865701B1 (en)2004-09-142011-01-04Azul Systems, Inc.Concurrent atomic execution
JP2006185232A (ja)*2004-12-282006-07-13Hitachi Ltd複数のプログラムの実行方法、プログラム変換方法及びこれを用いたコンパイラプログラム
US7984248B2 (en)*2004-12-292011-07-19Intel CorporationTransaction based shared data operations in a multiprocessor environment
US7664928B1 (en)*2005-01-192010-02-16Tensilica, Inc.Method and apparatus for providing user-defined interfaces for a configurable processor
US20060271395A1 (en)*2005-05-252006-11-30Harris Steven TDistributed object identity in a virtual machine cluster
US7882339B2 (en)*2005-06-232011-02-01Intel CorporationPrimitives to enhance thread-level speculation
US8799882B2 (en)*2005-12-072014-08-05Microsoft CorporationCompiler support for optimizing decomposed software transactional memory operations
US7590806B2 (en)2005-12-072009-09-15Microsoft CorporationFiltering of transactional memory operations using associative tables
US8180971B2 (en)2005-12-092012-05-15University Of RochesterSystem and method for hardware acceleration of a software transactional memory
US7730286B2 (en)*2005-12-302010-06-01Intel CorporationSoftware assisted nested hardware transactions
US20070186056A1 (en)*2006-02-072007-08-09Bratin SahaHardware acceleration for a software transactional memory system
US7991965B2 (en)*2006-02-072011-08-02Intel CorporationTechnique for using memory attributes
JP4712583B2 (ja)*2006-03-202011-06-29富士通株式会社ソフトウェア検証プログラム、ソフトウェア検証装置、ソフトウェア検証方法
US7930695B2 (en)*2006-04-062011-04-19Oracle America, Inc.Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7747996B1 (en)*2006-05-252010-06-29Oracle America, Inc.Method of mixed lock-free and locking synchronization
US20080005504A1 (en)*2006-06-302008-01-03Jesse BarnesGlobal overflow method for virtualized transactional memory
US7617421B2 (en)*2006-07-272009-11-10Sun Microsystems, Inc.Method and apparatus for reporting failure conditions during transactional execution
US9798590B2 (en)*2006-09-072017-10-24Intel CorporationPost-retire scheme for tracking tentative accesses during transactional execution
US9268710B1 (en)2007-01-182016-02-23Oracle America, Inc.Facilitating efficient transactional memory and atomic operations via cache line marking
US7613908B2 (en)*2007-02-232009-11-03Intel CorporationSelective hardware lock disabling
US8095750B2 (en)*2007-05-142012-01-10International Business Machines CorporationTransactional memory system with fast processing of common conflicts
US9009452B2 (en)2007-05-142015-04-14International Business Machines CorporationComputing system with transactional memory using millicode assists
US8095741B2 (en)*2007-05-142012-01-10International Business Machines CorporationTransactional memory computing system with support for chained transactions
US8321637B2 (en)*2007-05-142012-11-27International Business Machines CorporationComputing system with optimized support for transactional memory
US8117403B2 (en)*2007-05-142012-02-14International Business Machines CorporationTransactional memory system which employs thread assists using address history tables
US8688920B2 (en)2007-05-142014-04-01International Business Machines CorporationComputing system with guest code support of transactional memory
US9280397B2 (en)*2007-06-272016-03-08Intel CorporationUsing buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US7865769B2 (en)*2007-06-272011-01-04International Business Machines CorporationIn situ register state error recovery and restart mechanism
JP5163220B2 (ja)*2008-03-262013-03-13富士通株式会社キャッシュ制御装置、情報処理装置
US9928071B1 (en)2008-05-022018-03-27Azul Systems, Inc.Enhanced managed runtime environments that support deterministic record and replay
US8930644B2 (en)*2008-05-022015-01-06Xilinx, Inc.Configurable transactional memory for synchronizing transactions
US8195896B2 (en)*2008-06-102012-06-05International Business Machines CorporationResource sharing techniques in a parallel processing computing system utilizing locks by replicating or shadowing execution contexts
US20100031084A1 (en)*2008-08-042010-02-04Sun Microsystems, Inc.Checkpointing in a processor that supports simultaneous speculative threading
US8806145B2 (en)*2008-11-072014-08-12Oracle America, Inc.Methods and apparatuses for improving speculation success in processors
US8898401B2 (en)*2008-11-072014-11-25Oracle America, Inc.Methods and apparatuses for improving speculation success in processors
EP2570924B1 (en)2008-12-012019-02-20BlackBerry LimitedAnticipatory responses to commands
US8274380B2 (en)*2008-12-012012-09-25Research In Motion LimitedAnticipatory responses to commands
US8402464B2 (en)*2008-12-012013-03-19Oracle America, Inc.System and method for managing contention in transactional memory using global execution data
US8914620B2 (en)*2008-12-292014-12-16Oracle America, Inc.Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
US8627017B2 (en)*2008-12-302014-01-07Intel CorporationRead and write monitoring attributes in transactional memory (TM) systems
JP4754004B2 (ja)*2009-03-052011-08-24インターナショナル・ビジネス・マシーンズ・コーポレーションマルチスレッド上で動作するプログラムのプログラム・コードをロック衝突が少ないプログラム・コードに変換するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム
US9940138B2 (en)*2009-04-082018-04-10Intel CorporationUtilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US8495311B2 (en)*2009-06-252013-07-23International Business Machines CorporationUpdating shared variables atomically
US8521961B2 (en)*2009-08-202013-08-27International Business Machines CorporationCheckpointing in speculative versioning caches
US8566524B2 (en)*2009-08-312013-10-22International Business Machines CorporationTransactional memory system with efficient cache support
US9952864B2 (en)*2009-12-232018-04-24Intel CorporationSystem, apparatus, and method for supporting condition codes
US8972994B2 (en)*2009-12-232015-03-03Intel CorporationMethod and apparatus to bypass object lock by speculative execution of generated bypass code shell based on bypass failure threshold in managed runtime environment
US8739164B2 (en)*2010-02-242014-05-27Advanced Micro Devices, Inc.Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8464261B2 (en)2010-03-312013-06-11Oracle International CorporationSystem and method for executing a transaction using parallel co-transactions
US8631223B2 (en)*2010-05-122014-01-14International Business Machines CorporationRegister file supporting transactional processing
US20110320781A1 (en)*2010-06-292011-12-29Wei LiuDynamic data synchronization in thread-level speculation
US8661227B2 (en)2010-09-172014-02-25International Business Machines CorporationMulti-level register file supporting multiple threads
US20120079245A1 (en)*2010-09-252012-03-29Cheng WangDynamic optimization for conditional commit
US9268596B2 (en)2012-02-022016-02-23Intel CorparationInstruction and logic to test transactional execution status
US8893137B2 (en)*2012-03-132014-11-18Cisco Technology, Inc.Transaction-based shared memory protection for high availability environments
WO2013147820A1 (en)*2012-03-292013-10-03Intel CorporationSystem and method for managing persistence with a multi-level memory hierarchy including non-volatile memory
US8688661B2 (en)2012-06-152014-04-01International Business Machines CorporationTransactional processing
US10437602B2 (en)2012-06-152019-10-08International Business Machines CorporationProgram interruption filtering in transactional execution
US9436477B2 (en)2012-06-152016-09-06International Business Machines CorporationTransaction abort instruction
US20130339680A1 (en)2012-06-152013-12-19International Business Machines CorporationNontransactional store instruction
US9740549B2 (en)2012-06-152017-08-22International Business Machines CorporationFacilitating transaction completion subsequent to repeated aborts of the transaction
US9348642B2 (en)2012-06-152016-05-24International Business Machines CorporationTransaction begin/end instructions
US8682877B2 (en)2012-06-152014-03-25International Business Machines CorporationConstrained transaction execution
US9361115B2 (en)2012-06-152016-06-07International Business Machines CorporationSaving/restoring selected registers in transactional processing
US9448796B2 (en)2012-06-152016-09-20International Business Machines CorporationRestricted instructions in transactional execution
US9772854B2 (en)2012-06-152017-09-26International Business Machines CorporationSelectively controlling instruction execution in transactional processing
US9336046B2 (en)2012-06-152016-05-10International Business Machines CorporationTransaction abort processing
US9384004B2 (en)2012-06-152016-07-05International Business Machines CorporationRandomized testing within transactional execution
US10120731B2 (en)2013-07-152018-11-06Intel CorporationTechniques for controlling use of locks
US20150277914A1 (en)*2014-03-272015-10-01John H. KelmLock elision with binary translation based processors
GB2533650B (en)2014-12-232021-07-21Advanced Risc Mach LtdDebugging data processing transactions
US10387158B2 (en)*2014-12-242019-08-20Intel CorporationSystems, apparatuses, and methods for data speculation execution
US9785442B2 (en)2014-12-242017-10-10Intel CorporationSystems, apparatuses, and methods for data speculation execution
US10061589B2 (en)2014-12-242018-08-28Intel CorporationSystems, apparatuses, and methods for data speculation execution
US10942744B2 (en)2014-12-242021-03-09Intel CorporationSystems, apparatuses, and methods for data speculation execution
US10387156B2 (en)2014-12-242019-08-20Intel CorporationSystems, apparatuses, and methods for data speculation execution
US10303525B2 (en)2014-12-242019-05-28Intel CorporationSystems, apparatuses, and methods for data speculation execution
US10061583B2 (en)2014-12-242018-08-28Intel CorporationSystems, apparatuses, and methods for data speculation execution
US10169106B2 (en)2016-06-302019-01-01International Business Machines CorporationMethod for managing control-loss processing during critical processing sections while maintaining transaction scope integrity
US11868818B2 (en)*2016-09-222024-01-09Advanced Micro Devices, Inc.Lock address contention predictor
JP7014965B2 (ja)*2018-06-062022-02-02富士通株式会社演算処理装置及び演算処理装置の制御方法
US11599359B2 (en)*2020-05-182023-03-07Advanced Micro Devices, Inc.Methods and systems for utilizing a master-shadow physical register file based on verified activation

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JP2882475B2 (ja)*1996-07-121999-04-12日本電気株式会社スレッド実行方法
US6460124B1 (en)*2000-10-202002-10-01Wisconsin Alumni Research FoundationMethod of using delays to speed processing of inferred critical program portions
US6463511B2 (en)*2000-12-292002-10-08Intel CorporationSystem and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
JP3632635B2 (ja)*2001-07-182005-03-23日本電気株式会社マルチスレッド実行方法及び並列プロセッサシステム
US7120762B2 (en)*2001-10-192006-10-10Wisconsin Alumni Research FoundationConcurrent execution of critical sections by eliding ownership of locks

Also Published As

Publication numberPublication date
KR20050095836A (ko)2005-10-04
JP2006518077A (ja)2006-08-03
WO2004075051A1 (en)2004-09-02
TW200504588A (en)2005-02-01
KR100748292B1 (ko)2007-08-09
JP4558714B2 (ja)2010-10-06
EP1593038A1 (en)2005-11-09
US6862664B2 (en)2005-03-01
US20040162948A1 (en)2004-08-19

Similar Documents

PublicationPublication DateTitle
TWI305897B (en)Method, apparatus and related computer system for avoiding locks by speculatively executing critical sections
US7818510B2 (en)Selectively monitoring stores to support transactional program execution
US7904664B2 (en)Selectively monitoring loads to support transactional program execution
US6938130B2 (en)Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US7269717B2 (en)Method for reducing lock manipulation overhead during access to critical code sections
US8176266B2 (en)Transaction based shared data operations in a multiprocessor environment
US7389383B2 (en)Selectively unmarking load-marked cache lines during transactional program execution
US7206903B1 (en)Method and apparatus for releasing memory locations during transactional execution
US7398355B1 (en)Avoiding locks by transactionally executing critical sections
US20100332901A1 (en)Advice-based feedback for transactional execution
EP1913473A1 (en)Avoiding locks by transactionally executing critical sections
US20040163082A1 (en)Commit instruction to support transactional program execution
US7216202B1 (en)Method and apparatus for supporting one or more servers on a single semiconductor chip
US7418577B2 (en)Fail instruction to support transactional program execution
US8065670B2 (en)Method and apparatus for enabling optimistic program execution

Legal Events

DateCodeTitleDescription
MK4AExpiration of patent term of an invention patent

[8]ページ先頭

©2009-2025 Movatter.jp