專利名稱:在多插槽系統(tǒng)中請求擁有鏈的制作方法
在多插槽系統(tǒng)中請求擁有鏈
背景技術:
線程是可被調度用于執(zhí)行的最小處理單元。因而,線程可被視為一系列的指令,包括訪問(即,讀取和/或寫入)高速緩存行的指令。許多計算機系統(tǒng)具有并行執(zhí)行多個線程的兩個或者更多的多線程處理器。盡管通常通過具有多個多線程處理器,改善了計算機系統(tǒng)的性能,不過取決于線程被準予訪問的順序,多個線程之間訪問相同的高速緩存行的并行嘗試可能造成性能問題。這由與插槽(socket)間高速緩存行轉移相關的較長等待時間引起。盡管存在這種插槽間高速緩存行轉移等待時間,不過具有多個多線程處理器的計算機系統(tǒng)架構仍然被廣泛使用。
發(fā)明內容
在一個方面,本發(fā)明涉及一種管理高速緩存行的方法。所述方法包括:從在本地多線程處理器上執(zhí)行的多個本地線程接收訪問高速緩存行的多個本地請求;將與多個本地請求對應的多個條目插入與高速緩存行相關的地址鏈中;標識所述多個條目中在地址鏈的頭部的第一條目;響應標識在頭部的第一條目并且響應所述第一條目對應于擁有高速緩存行的請求(RT0),開始地址鏈的遍歷;在地址鏈的遍歷期間,設定在所述多個條目中的第二條目中標識的狀態(tài)元素,其中所述狀態(tài)元素對應于來自中央排序單元的對于與所述第二條目對應的本地請求的串行化確認;從在外部多線程處理器上執(zhí)行的外部線程接收訪問高速緩存行的外部請求;響應設定所述狀態(tài)元素,將對應于所述外部請求的第三條目插入地址鏈中第二條目之后;和響應在地址鏈中的第二條目之后插入所述第三條目,在執(zhí)行所述多個本地請求之后,將高速緩存行讓給外部線程。在一個方面,本發(fā)明涉及一種保存管理高速緩存行的指令的非臨時性計算機可讀存儲介質。所述指令包括以下功能:從在本地多線程處理器上執(zhí)行的多個本地線程接收訪問高速緩存行的多個本地請求;將與多個本地請求對應的多個條目插入與高速緩存行相關的地址鏈中;標識所述多個條目中在地址鏈的頭部的第一條目;響應第一條目在頭部被標識并且響應所述第一條目對應于擁有高速緩存行的請求(RT0),開始地址鏈的遍歷;在地址鏈的遍歷期間,設定在所述多個條目中的第二條目中標識的狀態(tài)元素,其中所述狀態(tài)元素對應于來自中央排序單元的對于與所述第二條目對應的本地線程的串行化確認;從在外部多線程處理器上執(zhí)行的外部線程接收訪問高速緩存行的外部請求;響應所述狀態(tài)元素被設定,將對應于所述外部請求的第三條目插入地址鏈中第二條目之后;和響應所述第三條目被插入在地址鏈中的第二條目之后,在執(zhí)行所述多個本地請求之后,將高速緩存行讓給外部線程。在一個方面,本發(fā)明涉及一種管理高速緩存行的系統(tǒng)。所述系統(tǒng)包括:在本地多線程處理器上執(zhí)行并且發(fā)出訪問高速緩存行的多個本地請求的多個本地線程;在外部多線程處理器上執(zhí)行,并且發(fā)出訪問高速緩存行的外部請求的外部線程;和保存高速緩存行,并且包含保存對應于多個本地請求的多個本地條目和對應于外部請求的外部條目的地址鏈的本地高速緩沖存儲器,其中本地高速緩沖存儲器被配置成在地址鏈的遍歷期間,設定在多個本地條目中標識并且對應于來自中央排序單元的串行化確認的狀態(tài)元素,其中響應所述狀態(tài)元素被設定,將所述外部條目插入地址鏈中所述多個本地條目之后,并且其中響應所述外部條目被插入地址鏈中所述多個本地條目之后,在執(zhí)行所述多個本地請求之后,將高速緩存行讓給外部線程。根據以下說明和附加權利要求,本發(fā)明的其它方面將是顯而易見的。
圖1表示按照本發(fā)明的一個或多個實施例的系統(tǒng)。圖2表示按照本發(fā)明的一個或多個實施例的高速緩存行。圖3表示按照本發(fā)明的一個或多個實施例的地址鏈。圖4表示按照本發(fā)明的一個或多個實施例的流程圖。圖5表示按照本發(fā)明的一個或多個實施例的例子。圖6表示按照本發(fā)明的一個或多個實施例的計算機系統(tǒng)。
具體實施例方式下面參考附圖,詳細說明本發(fā)明的具體實施例??紤]到一致性,各個圖中的相同元件用相同的附圖標記表示。在本發(fā)明的實施例的以下詳細說明中,記載了眾多的具體細節(jié),以便更透徹地理解本發(fā)明。不過,對本領域的普通技術人員來說,顯然可在沒有這些具體細節(jié)的情況下實踐本發(fā)明。在其它情況下,沒有詳細說明公知的特征,以避免不必要地使說明變復雜。一般來說,本發(fā)明的實施例提供管理高速緩存行的系統(tǒng)和方法。具體地說,高速緩存行被保持在本地多線程處理器的高速緩沖存儲器中,直到所有本地請求(即,由在本地多線程處理器上執(zhí)行的線程發(fā)出的請求)都被處理為止。只有在處理了本地請求之后,高速緩存行才被讓給由在外部處理器上執(zhí)行的外部線程發(fā)出的外部請求。在本發(fā)明的一個或多個實施例中,本地多線程處理器包括對應于高速緩存行并且保存對應于本地請求的本地條目的地址鏈。慎重地設定由各個本地條目標識的狀態(tài)元素,以迫使對應于外部請求的條目被插入在地址鏈的末端(即,尾部),從而在本地請求被處理之后才被處理。圖1表示按照本發(fā)明的一個或多個實施例的多插槽系統(tǒng)(100)。如圖1中所示,多插槽系統(tǒng)(100)具有多個組件,包括中央排序單元(102)、存儲器(142),和執(zhí)行一個或多個線程(即,線程Al (107)、線程AN (109)、線程BI (127)、線程BN (129))的一個或多個多線程處理器(即,多線程處理器A (105)、多線程處理器B (125))。此外,每個多線程處理器(105,205)包括保存一個或多個高速緩存行(S卩,高速緩存行A (113)、高速緩存行B (133))和一個或多個地址鏈(即,地址鏈A (115)、地址鏈B (135))的高速緩沖存儲器(即,高速緩沖存儲器A (111)、高速緩沖存儲器B (131))。在本發(fā)明的一個或多個實施例中,線程(107,109,127,129)包括訪問(B卩,讀取和/或寫入)存儲器(142)中的一個或多個位置的指令(即,請求)。這些存儲器位置可保存多個線程都能訪問的共享資源(例如,鎖、全局變量等),和/或只有特定線程才能訪問的專有變量。為了加速這些指令的執(zhí)行,這些存儲器地址的內容可被本地保存在訪問時間比存儲器(142 )快的高速緩沖存儲器(111,131)中。具體地說,每個高速緩存行(113,133 )對應于存儲器(142)中的一塊位置,是該塊位置中的內容(S卩,共享資源、專有變量等)的本地副本。在本發(fā)明的一個或多個實施例中,如果本地高速緩沖存儲器(即,高速緩沖存儲器A (111))未保存本地線程(例如,線程Al (107))請求的存儲器地址的內容,那么從保存相應的高速緩存行的外部高速緩沖存儲器(即,高速緩沖存儲器B (131))轉移該相應的高速緩存行(即,該外部線程讓出該高速緩存行)。不過,如果沒有外部高速緩沖存儲器保存該高速緩存行,那么從存儲器(142 )取回該高速緩存行。在本發(fā)明的一個或多個實施例中,取決于線程被準予訪問的順序,在線程(107,109,127,129)之間訪問相同的高速緩存行的并行嘗試可能造成性能問題。這由與插槽間高速緩存行轉移(即,來往于外部高速緩沖存儲器和本地高速緩沖存儲器之間的轉移)相關的較長等待時間引起。例如,假定線程Al (107)具有對包含全局變量的高速緩存行A (113)的寫訪問,而線程AN (109)具有保存到相同全局變量的指令。線程AN (109)從線程Al (107)獲得所述寫訪問需要10ns-20ns。不過,如果線程BI (127)具有保存到相同全局變量的指令,那么處理器間轉移(即,高速緩存行A (113)到高速緩沖存儲器B (131)的轉移)可能花費不止100ns。為了改善所有線程經歷的總等待時間,更為有效的是在將高速緩存行讓給多線程處理器外部的線程之前,在該多線程處理器本地的多個線程內攤銷將該高速緩存行引入該多線程處理器中的等待時間。圖2表示按照本發(fā)明的一個或多個實施例的多個高速緩存行(S卩,高速緩存行W(210)、高速緩存行Z (250))。高速緩存行(210,250)可對應于上面參考圖1說明的高速緩存行A (113)或者高速緩存行B (133)任何一個。如圖2中所示,高速緩存行(210,250)可包括共享資源(例如,全局變量W (212))和/或專有變量(即,專有變量Zl (213)、專有變量Z2 (214))。多個線程可并行發(fā)出訪問高速緩存行W (210)的請求,以便讀取和/或寫入全局變量W (212)。這是真共享(即,多個線程并行發(fā)出訪問高速緩存行中的一個或多個相同字節(jié)的請求)的例子。作為替代地,一個線程可發(fā)出訪問高速緩存行Z (250),以便讀取和/或寫入專有變量Zl (213)的請求,而一個不同的線程可并行發(fā)出訪問高速緩存行Z (250),以便讀取和/或寫入專有變量Z2(214)的請求。這是偽共享(即,多個線程并行發(fā)出訪問高速緩存行中的非重疊字節(jié)的請求)的例子。單個高速緩存行可以既具有共享資源,又具有專有變量。返回參見圖1,每個高速緩沖存儲器(111,131)包括與保存的高速緩存行(113,133)對應的一個或多個地址鏈(115,135)。地址鏈(115,135)控制/跟蹤處理對高速緩存行(113,133)的請求的順序。具體地說,地址鏈A (115)規(guī)定線程(107,109,127,129)訪問高速緩存行A (113)的順序。類似地,地址鏈B (135)規(guī)定線程(107,109,127,129)訪問高速緩存行B (133)的順序。圖3表示按照本發(fā)明的一個或多個實施例的地址鏈(B卩,地址鏈Q (310))。地址鏈Q (310)是上面參考圖1說明的地址鏈A (115)的例子。如圖3中所示,地址鏈Q (310)包括多個本地條目(即,本地條目Al (302)、本地條目々2 (304)、本地條目A3 (306)等)和至少一個外部條目(即,外部條目BI (308))。本地條目(302,304,306)對應于本地線程(例如,線程Al (107)、線程AN (109))訪問高速緩存行A (113)的請求(B卩,本地請求)。外部條目BI (308)對應于外部線程(例如,線程BI (127))訪問高速緩存行A (113)的請求(即,外部請求)。在本發(fā)明的一個或多個實施例中,如果在多線程處理器A( 105)上執(zhí)行的多個線程發(fā)出對高速緩存行A (113)的存儲請求,那么創(chuàng)建對應于這些“本地”存儲的本地條目(302,304,306),并插入地址鏈Q (310)中。按照接收“本地”存儲的順序,處理這些“本地”存儲。換句話說,串行處理這些“本地”存儲(在任意特定時間,只處理地址鏈的一個成員)。在本發(fā)明的一個或多個實施例中,構造地址鏈Q (310),以致如果該地址鏈中的最舊的請求(SP,在頭部(312)的條目)是請求擁有(RTO )(例如,存儲、交換(SWAP )操作、比較并交換(CAS )操作等),那么保證在高速緩存行被讓與外部請求之前,完成地址鏈中的所有本地條目。換句話說,如果地址鏈(310)的頭部(312)是RT0,那么與外部線程(例如,線程BI (127)、線程BN (129))作出的外部請求對應的外部條目BI (308)被追加在地址鏈(310)中的最新的本地條目之后,從而使得可以在外部請求開始被處理之前,完成所有本地鏈成員。如上所述,多插槽系統(tǒng)(100)包括中央排序單元(102)。中央排序單元(102)選擇將在系統(tǒng)(100)中有效的請求(S卩,線程發(fā)出的請求),并向選擇為有效的線程發(fā)出串行化確認。在本發(fā)明的一個或多個實施例中,每個本地條目(302,304,306)包括稱為mb_acked的狀態(tài)元素。當收到來自中央排序單元(102)的串行化確認時,設定狀態(tài)元素mb_acked。串行化確認指示對應于該本地條目的請求現在在系統(tǒng)中有效。在本發(fā)明的一個或多個實施例中,只有與在地址鏈(310)頭部的條目對應的請求才能夠收到來自中央排序單元(102)的串行化確認。在本發(fā)明的一個或多個實施例中,只要最舊的成員(B卩,在頭部(312)的條目)是RT0,就搶先對地址鏈(310)的較新成員設定mb_acked。換句話說,即使對于地址鏈(310)的較新成員,尚未從中央排序單元收到串行化確認,也將對較新的成員設定狀態(tài)元素mb_acked,只要RTO在地址鏈的頭部。此外,即使原來的最舊成員不是RT0,當RTO到達地址鏈的頭部時,將遍歷地址鏈,以設定所有的后續(xù)(即,較新)成員的mb_acked比特(B卩,設定mb_
cicked_I) ο在本發(fā)明的一個或多個實施例中,mb_acked狀態(tài)元素被外部請求用于確定對應的外部條目BI (308)應被插入的地址鏈(310)中的位置。在本發(fā)明的一個或多個實施例中,外部請求在mb_acked被設定為I的最新的成員之后(即,在本地條目A3 (306)之后),插入對應的外部條目BI (308)。受益于上面的詳細說明,本領域的技術人員會理解如果只有當請求從中央排序單元(即,上面參考圖1說明的中央排序單元(102))收到串行化確認時,才設定mb_acked狀態(tài),那么由于在地址鏈的較新成員到達地址鏈的頭部之前不能向中央排序單元(102)發(fā)送請求,因此當外部請求到達時,所述較新的成員可能不能使它們各自的mb_acked比特被設定。從而,在這樣的情形下,可以緊接在地址鏈中的最舊的有效請求之后(即,緊接在本地條目Al (302)之后)插入外部條目BI (308),并在本地條目Al (302)的處理完成時將高速緩存行轉移到外部高速緩沖存儲器。圖4表示按照本發(fā)明的一個或多個實施例的流程圖。圖4中所示的處理可由多插槽系統(tǒng)(100)的一個或多個組件執(zhí)行。在本發(fā)明的不同實施例之中,圖4中所示的一個或多個步驟可被省略、重復和/或按不同的順序進行。因而,本發(fā)明的實施例不應被認為局限于圖4中所示步驟的具體數目和排列。
最初,從在本地多線程處理器上執(zhí)行的多個本地線程接收訪問高速緩存行的多個本地請求(步驟405)。該高速緩存行可包括由多個本地線程共享的資源(例如,全局變量)(8口,真共享),和/或該高速緩存行可包括未被多個本地線程共享,但是保存在該高速緩存行的非重疊字節(jié)中的各個專有變量(即,假共享)。在步驟410,對應于本地請求的多個本地條目被插入與該高速緩存行相關的地址鏈中。每個本地條目識別對應的本地線程和狀態(tài)元素(即,mb_acked)。如果多線程處理器的高速緩沖存儲器尚未保存該高速緩存行,那么將需要從保存該高速緩存行的外部高速緩沖存儲器轉移該高速緩存行。不過,如果沒有外部高速緩沖存儲器保存該高速緩存行,那么將需要從主存儲器取回該高速緩存行。在步驟415,確定在地址鏈的頭部的本地條目(即,頭部條目)對應于擁有該高速緩存行的請求(RT0)。如上所述,擁有請求的例子包括存儲操作、交換操作、CAS操作等等。在步驟420,響應確定頭部條目對應于擁有該高速緩存行的請求,遍歷地址鏈。換句話說,地址鏈的遍歷由在地址鏈的頭部的RTO觸發(fā)。在所述遍歷期間,設定地址鏈中的本地條目中的狀態(tài)元素(即,mb_acked=l)0可在從中央排序單元收到對RTO頭部條目的串行化確認之前或之后,進行所述遍歷。在步驟425,接收訪問該高速緩存行的外部請求。該外部請求由在外部多線程處理器上執(zhí)行的外部線程發(fā)出。創(chuàng)建關于該外部請求的外部條目,并插入地址鏈中。具體地說,在其狀態(tài)元素被設定(即,mb_acked=l)的最新的本地條目之后插入該外部條目。因而,該外部條目實際上被插入在地址鏈的尾部,在地址鏈的頭部和該外部條目之間的所有條目是本地條目。在步驟430,在外部請求之前處理所有的本地請求,因為在地址鏈中,外部條目在本地條目之后。一旦處理了本地請求,就將高速緩存行讓給對應于外部條目的外部線程。將高速緩存行讓給外部線程可包括將高速緩存行從本地多線程處理器的高速緩沖存儲器轉移到執(zhí)行該外部線程的外部多線程處理器的高速緩沖存儲器。讓與的高速緩存行可被保存在外部處理器的高速緩沖存儲器中。圖5表示按照本發(fā)明的一個或多個實施例的例子。具體地說,圖5中的例子包括兩種情形:情形I (598)和情形II (599)。在情形I (598)中,本地線程發(fā)出訪問高速緩存行的多個本地存儲請求。假定該高速緩存行已被保存在執(zhí)行本地線程的本地多線程處理器的高速緩沖存儲器中。因而,該高速緩存行的地址鏈(501)包括對應于存儲請求的3個條目(B卩,存儲Xl (505)、存儲X2(507)、存儲X3 (509))。此外,每個條目標識mb_acked狀態(tài)元件。如在情形I (598)中所示,對地址鏈(501)中的存儲Xl (505),mb_acked狀態(tài)元素被設定(即,mb_acked=l)。響應從中央排序單元收到對相應請求的串行化確認,設定存儲Xl (505)的mb_acked狀態(tài)元素。不過,未設定剩余條目(507,509)中的mb_acked狀態(tài)兀素(即,mb_acked=0)。仍然參見情形I (598),在對該高速緩存行的外部存儲請求到達時,創(chuàng)建外部條目(即,存儲Yl (511))。如在地址鏈(502)中所示,緊接在使mb_acked狀態(tài)元素被設定的最新的本地條目之后(即,緊接在存儲Xl (505))之后,插入外部條目(B卩,存儲Yl (511))。因而,一旦完成對應于存儲Xl (505)的本地請求的處理,存儲Yl (511)是地址鏈(502)中的下一個條目,且該高速緩存行將被讓給發(fā)出外部請求的外部多線程處理器。該高速緩存行最終將需要被歸還給本地多線程處理器,以便處理剩余的本地條目(即,存儲X2(507)、存儲X3 (509))。高速緩存行的讓與和高速緩存的歸還是費時的操作。在情形II (599)中,本地線程發(fā)出訪問高速緩存行的多個本地存儲請求。假定該高速緩存行已被保存在執(zhí)行本地線程的本地多線程處理器的高速緩沖存儲器中。因而,該高速緩存行的地址鏈(552)包括對應于存儲請求的3個條目(即,存儲Xl (505)、存儲X2(507)、存儲X3 (509))。此外,每個條目標識mb_acked狀態(tài)元素。當將地址鏈(552)中的頭部條目標識為RTO時,遍歷地址鏈(552),且設定地址鏈(552)中的所有后續(xù)(即,較新的)成員的mb_acked狀態(tài)元素,即使較新的成員尚未收到串行化確認。如在情形II (599)中所示,對地址鏈(552)中的所有條目(B卩,存儲Xl (505)、存儲X2 (507)、存儲X3 (509))設定 mb_acked 狀態(tài)兀素(即,mb_acked=l )。仍然參見情形II (599),在對該高速緩存行的外部存儲請求到達時,創(chuàng)建外部條目(即,存儲Yl (511))。如在地址鏈(554)中所示,緊接在使mb_acked狀態(tài)元素被設定的最新的本地條目之后(即,緊接在存儲X3 (509))之后,插入外部條目(B卩,存儲Yl (511))。因而,只有在所有本地請求(即,存儲Xl (505)、存儲X2 (507)和存儲X3 (509))的處理之后,高速緩存行才被讓給發(fā)出外部請求的外部多線程處理器。通過在讓與高速緩存行之前,處理所有的本地請求,不在本地處理器和外部處理器之間反復轉移高速緩存行,從而減小由高速緩存行的反復轉移引起的延遲。情形II (599)可以利用上面參考圖1說明的多插槽系統(tǒng)(100),和/或上面參考圖4說明的處理來實現。 作為另一個例子,假定存在執(zhí)行8個本地線程的本地多線程處理器,和執(zhí)行8個外部線程的外部處理器。此外,假定所有8個本地線程和所有8個外部線程都想對相同的高速緩存行進行更新。另外,假定插槽內等待時間(即,在本地線程之間轉移高速緩存行的訪問的等待時間)為20ns,而插槽間等待時間(S卩,在本地線程和外部線程之間轉移訪問的等待時間)為100ns,并且最初將高速緩存行從存儲器提取到發(fā)出第一個請求的本地多線程處理器中的高速緩沖存儲器需要100ns。在情形I (598)中,高速緩存行將在本地多線程處理器和外部多線程處理器之間被反復轉移,訪問準許之間的增量延遲為100ns,或者換句話說,用于所有16個線程進行它們各自的更新的總時間為16*100ns=1600ns。在情形II (599)中,本地多線程處理器中的所有8個線程將在將高速緩存行讓給外部多線程處理器之前,開始對高速緩存行進行它們的更新,需要100ns+ (7*20ns)=240ns。外部多線程處理器中的所有8個線程隨后將能夠依次更新高速緩存行,再次需要100ns+ (7*20ns)=240ns。與情形I (598)中的1600ns相對,在情形II (599)中,所有16個線程完成其更新所用的總時間為 240ns+240ns=480ns。本發(fā)明的實施例實際上可以在任何種類的計算機上實現,與使用的平臺無關。例如,如圖6中所示,計算機系統(tǒng)(600)包括一個或多個處理器(602)(比如中央處理單元(CPU)、集成電路等),相關的存儲器(604)(例如,隨機存取存儲器(RAM)、高速緩沖存儲器、閃速存儲器等)、存儲裝置(606)(例如,硬盤、諸如壓縮盤驅動器或數字視頻盤(DVD)驅動器之類的光驅、閃速記憶棒等),和目前的計算機特有的眾多其它元件和功能(未示出)。計算機系統(tǒng)(600 )還可包括輸入裝置,比如鍵盤(608 )、鼠標(610 )或麥克風(未示出)。此外,計算機系統(tǒng)(600)可包括輸出裝置,比如監(jiān)視器(612)(例如,液晶顯示器(IXD)、等離子體顯示器或者陰極射線管(CRT)監(jiān)視器)。計算機系統(tǒng)(600 )可通過網絡接口連接(未示出)而連接到網絡(614)(例如局域網(LAN)、諸如因特網之類的廣域網(WAN),或者任何其它種類的網絡)。本領域的技術人員會理解存在許多不同種類的計算機系統(tǒng),上述輸入和輸出裝置可以采取其它形式。一般來說,計算機系統(tǒng)(600)至少包括實踐本發(fā)明的實施例必需的最少的處理、輸入和/或輸出裝置。此外,在本發(fā)明的一個或多個實施例中,上述計算機系統(tǒng)(600)的一個或多個元件可以位于遠程位置,并通過網絡與其它元件連接。此外,可在具有多個節(jié)點的分布式系統(tǒng)上實現本發(fā)明的實施例,其中本發(fā)明的各個部分可以位于分布式系統(tǒng)內的不同節(jié)點上。在本發(fā)明的一個實施例中,所述節(jié)點對應于計算機系統(tǒng)。作為替代地,所述節(jié)點可對應于具有相關物理存儲器的處理器。作為替代地,節(jié)點可以對應于處理器,或者具有共享存儲器和/或資源的處理器的微內核。此外,呈實現本發(fā)明的實施例的計算機可讀程序代碼形式的軟件指令可被臨時或永久保存在有形的計算機可讀存儲介質上,比如保存在壓縮盤(CD)、磁盤、固態(tài)存儲器件、磁帶、存儲器或者任何其它非瞬時的有形計算機可讀存儲設備上。雖然關于數目有限的實施例說明了本發(fā)明,不過受益于本公開,本領域的技術人員會理解可以作出不脫離這里公開的本發(fā)明的范圍的其它實施例。因而,本發(fā)明的范圍只應由附加的權利要求限定。
權利要求
1.一種管理高速緩存行的方法,包括: 從在本地多線程處理器上執(zhí)行的多個本地線程接收所述訪問高速緩存行的多個本地請求; 將與所述多個本地請求對應的多個條目插入與所述高速緩存行相關的地址鏈中; 標識在地址鏈的頭部的所述多個條目中的第一條目; 響應標識在頭部的第一條目,并且響應所述第一條目對應于擁有所述高速緩存行的請求RTO,開始所述地址鏈的遍歷; 在所述地址鏈的遍歷期間,設定在所述多個條目中的第二條目中標識的狀態(tài)元素,其中所述狀態(tài)元素對應于來自中央排序單元的對于與所述第二條目對應的本地請求的串行化確認; 從在外部多線程處理器上執(zhí)行的外部線程接收訪問所述高速緩存行的外部請求; 響應設定所述狀態(tài)元素,將對應于所述外部請求的第三條目插入地址鏈中第二條目之后;和 響應將第三條目插入在地址鏈中第二條目之后,在執(zhí)行所述多個本地請求之后,將所述高速緩存行讓給外部線程。
2.按照權利要求1所述的方法,還包括: 響應收到所述多個 本地請求中的至少一個,從操作上連接到所述本地多線程處理器的存儲器取回所述高速緩存行;和 將所述高速緩存行保存在所述本地多線程處理器的高速緩沖存儲器中, 其中所述高速緩存行包含用于所述多個本地線程和所述外部線程的全局變量。
3.按照權利要求1所述的方法,其中所述高速緩存行包含用于所述多個本地線程的多個專有變量。
4.按照權利要求1所述的方法,還包括: 在開始所述遍歷之后,從中央排序單元接收對于與地址鏈中的第一條目對應的本地請求的串行化確認。
5.按照權利要求1所述的方法,其中外部請求對應于存儲操作。
6.按照權利要求1所述的方法,其中所述RTO是交換操作。
7.按照權利要求1所述的方法,其中將高速緩存行讓給外部線程包括將所述高速緩存行保存在外部多線程處理器的高速緩沖存儲器中。
8.一種保存管理高速緩存行的指令的非臨時性計算機可讀存儲介質,所述指令包括以下功能: 從在本地多線程處理器上執(zhí)行的多個本地線程接收所述訪問高速緩存行的多個本地請求; 將與所述多個本地請求對應的多個條目插入與所述高速緩存行相關的地址鏈中; 標識在地址鏈的頭部的所述多個條目中的第一條目; 響應在頭部標識出第一條目,并且響應所述第一條目對應于擁有所述高速緩存行的請求RT0,開始所述地址鏈的遍歷; 在所述地址鏈的遍歷期間,設定在所述多個條目中的第二條目中標識的狀態(tài)元素,其中所述狀態(tài)元素對應于來自中央排序單元的對于與所述第二條目對應的本地請求的串行化確認; 從在外部多線程處理器上執(zhí)行的外部線程接收訪問所述高速緩存行的外部請求; 響應設定所述狀態(tài)元素,將對應于所述外部請求的第三條目插入地址鏈中第二條目之后;和 響應所述第三條目被插入在地址鏈中第二條目之后,在執(zhí)行所述多個本地請求之后,將所述高速緩存行讓給外部線程。
9.按照權利要求8所述的非臨時性計算機可讀存儲介質,所述指令還包括以下功能: 響應收到所述多個本地請求中的至少一個,從操作上連接到所述本地多線程處理器的 存儲器取回所述高速緩存行;和 將所述高速緩存行保存在所述本地多線程處理器的高速緩沖存儲器中, 其中所述高速緩存行包含用于所述多個本地線程和所述外部線程的全局變量。
10.按照權利要求8所述的非臨時性計算機可讀存儲介質,其中所述高速緩存行包含用于所述多個本地線程的多個專有變量。
11.按照權利要求8所述的非臨時性計算機可讀存儲介質,所述指令還包括以下功能: 在開始所述遍歷之后,從中央排序單元接收對于與地址鏈中的第一條目對應的本地請求的串行化確認。
12.按照權利要求8所述的非臨時性計算機可讀存儲介質,其中外部請求對應于存儲操作。
13.按照權利要求8所述的非臨時性計算機可讀存儲介質,其中所述RTO是交換操作。
14.按照權利要求8所述的非臨時性計算機可讀存儲介質,其中將高速緩存行讓給外部線程的指令包括以下功能: 將所述高速緩存行保存在外部多線程處理器的高速緩沖存儲器中。
15.一種管理高速緩存行的系統(tǒng),所述系統(tǒng)包括: 多個本地線程,在本地多線程處理器上執(zhí)行,并且發(fā)出訪問所述高速緩存行的多個本地請求; 外部線程,在外部多線程處理器上執(zhí)行,并且發(fā)出訪問所述高速緩存行的外部請求;和本地高速緩沖存儲器,保存所述高速緩存行并且包含地址鏈,所述地址鏈保存對應于所述多個本地請求的多個本地條目和對應于所述外部請求的外部條目, 其中本地高速緩沖存儲器被配置成在地址鏈的遍歷期間,設定在所述多個本地條目中標識的并且對應于來自中央排序單元的串行化確認的狀態(tài)元素, 其中響應所述狀態(tài)元素被設定,將所述外部條目插入地址鏈中所述多個本地條目之后, 其中響應所述外部條目被插入地址鏈中所述多個本地條目之后,在執(zhí)行所述多個本地請求之后,將所述高速緩存行讓給外部線程。
16.按照權利要求15所述的系統(tǒng),其中響應地址鏈的頭部是擁有高速緩存行的請求RT0,開始所述遍歷。
17.按照權利要求16所述的系統(tǒng),其中所述RTO是CAS操作。
18.按照權利要求15所述的系統(tǒng),還包括: 外部高速緩沖存儲器,配置成在所述高速緩存行被讓與外部線程之后保存所述高速緩存行。
19.按照權利要求15所述的系統(tǒng),其中所述高速緩存行包含用于所述多個本地線程的多個專有變量。
20.按照權利要求15所述的系統(tǒng),還包括: 存儲器,操作上連接到本地多線程處理器和外部多線程處理器, 其中響應所述多個本地請求中的至少一個從存儲器取回所述高速緩存行,和 其中所述高速緩存行包含 用于所述多個本地請求和所述外部請求的全局變量。
全文摘要
一種方法,包括接收訪問高速緩存行的多個本地請求;將與多個本地請求對應的多個條目插入地址鏈中;標識在地址鏈的頭部的第一條目;響應標識出第一條目,并且響應所述第一條目對應于擁有高速緩存行的請求,開始地址鏈的遍歷;在地址鏈的遍歷期間,設定在第二條目中標識的狀態(tài)元素;接收訪問高速緩存行的外部請求;響應設定所述狀態(tài)元素,將對應于所述外部請求的第三條目插入地址鏈中第二條目之后;和響應在地址鏈中的第二條目之后插入第三條目,在執(zhí)行多個本地請求之后,將高速緩存行讓給外部線程。
文檔編號G06F9/38GK103098021SQ201280002803
公開日2013年5月8日 申請日期2012年4月30日 優(yōu)先權日2011年5月13日
發(fā)明者C·W·M·陳, M·坎達潘尼, J·Y·拉姆, R·斯維拉馬克瑞斯南 申請人:甲骨文國際公司