亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

預測處理器中的競爭的制作方法

文檔序號:6651674閱讀:129來源:國知局
專利名稱:預測處理器中的競爭的制作方法
技術領域
本發(fā)明涉及計算機系統,并特別地,涉及如執(zhí)行多個線程的系統。
背景技術
包括多處理器(MP)系統和單處理器系統的計算機系統可以包括多個“線程”,每一個線程均獨立于其他的線程執(zhí)行程序指令。使用多個處理器或者線程允許更有效率地并且以更高的速度來處理各種任務或函數,甚至多個應用程序。應用多線程或處理器意味著兩個或更多個處理器或者線程可以共享儲存在系統內的同一數據并且同時訪問它們。但是,在共享數據時必須注意保持存儲器排序(memory ordering)。
出于數據一致性的目的,如果多個線程或處理器期望讀、修改和寫單個存儲器位置,則不應該允許多個主體(agent)同時對數據進行操作。使多個處理器的使用進一步復雜的是數據經常儲存在與處理器相關聯、用于加速該處理器對數據的訪問的緩存(cache)中。因為這種緩存通常被局限于特定處理器,所以大多數近來的對數據的更新可以被置于系統中緩存的任何一個中。任何訪問該數據的主體應該從最近更新過的緩存接收到有效或更新過的數據值,并且,從該緩存寫回存儲器的數據或轉移到其他緩存的數據必須是當前的數據,以便保持緩存一致性(cache coherency)。
多線程(MT)軟件使用不同的機制來在不同的線程之間交互作用和協調。一個常見的MT同步形式是信號量(semaphore)旋轉鎖(spin-lock)。信號量旋轉鎖機制是在訪問共享的存儲器變量或結構(即共享元素)時用來保證多個線程間的相互排斥(即防止同時訪問)的鎖操作。為了提供共享元素的唯一且一致的視圖,它由鎖變量保護。每一個需要訪問共享元素的線程必須通過原子化信號量操作獲得保護鎖。為了獲得該鎖,線程要讀鎖變量的值,將該值與預先確定的“自由”值比較,然后寫“鎖”值。這種讀-修改-寫操作必須要像是發(fā)生在一個步驟中,以使多個線程不同時地讀“自由”值且寫所述“鎖”值,從而允許兩個線程都相信它們已經獲得了該鎖。
在給定線程獲得了關于鎖變量的鎖以后,其他期望訪問該鎖變量的線程通常必須一直等到最初的線程完成其鎖操作為止。通常,尋求訪問的其他線程將開始對鎖變量地址的探查(snoop),以便對狀態(tài)(即“自由”還是“鎖定”)進行檢查。發(fā)現了“鎖定”值的線程將經常等一小段時間并再次探查,從而在小的探查-等待循環(huán)中旋轉。當一個或更多個線程期望訪問已經由另一個線程擁有的鎖變量或者期望訪問正被另一個線程訪問的鎖變量時,競爭出現了。在運行時期間,當一次只有唯一一個主體尋求執(zhí)行關于該鎖變量的鎖操作時,鎖操作是無競爭的。當線程完成修改共享變量或結構時,它將把“自由”值寫回鎖變量。
因為同步在MT應用程序中經常發(fā)生,所以處理器應該高效率地實現鎖操作,以使MT應用程序可以如期望的那樣執(zhí)行。如果鎖操作在運行時無競爭,則它能夠被大大地優(yōu)化。這種優(yōu)化可以包括相關聯緩存線(cache line)的推測性預取、鎖省略(lock elision)等。但是,如果鎖操作有競爭,則這些優(yōu)化技術導致高昂的代價。
因此,存在預測有競爭的鎖操作的需求,從而使得處理器能夠高效率地實現鎖操作。


圖1是根據本發(fā)明的一個實施方案的處理器的一部分的框圖。
圖2是根據本發(fā)明的一個實施方案的方法的流程圖。
圖3是根據本發(fā)明的一個實施方案的系統的框圖。
圖4是根據本發(fā)明另一個實施方案的多處理器系統的框圖。

發(fā)明內容
在一個實施方案中,本發(fā)明包括預測器,用于預測要在程序中執(zhí)行的操作的競爭。所述操作可以基于所述預測的結果來處理,所述預測可以基于多個獨立的預測。在一個實施方案中,如果沒有競爭被預測到,則可以優(yōu)化所述操作。其他的實施方案被描述并被要求保護。
根據本發(fā)明的一個方面,公開了一種裝置,包括用于預測要被執(zhí)行的操作的競爭的預測器。
根據本發(fā)明的另一方面,公開了一種系統,包括第一預測器,用于預測鎖操作是否有競爭;第二預測器,用于指示程序中競爭的水平;以及耦合到所述第一預測器并耦合到所述第二預測器的動態(tài)隨機訪問存儲器(DRAM),以儲存所述程序。
根據本發(fā)明的又一方面,公開了一種方法,包括預測鎖操作在執(zhí)行期間是否有競爭;以及如果預測所述鎖操作沒有競爭,則優(yōu)化所述鎖操作。
根據本發(fā)明的再一方面,公開了一種制品,包括包含指令的機器可讀儲存介質,所述指令如果被機器執(zhí)行,則使得所述機器能夠執(zhí)行一種方法,所述方法包括預測要被執(zhí)行的操作的競爭;以及基于所述預測來處理所述操作。
根據本發(fā)明的又再一方面,公開了一種裝置,包括用于預測操作是否有競爭的第一預測器,所述第一預測器具有帶有多個條目的表;指示全局競爭水平的第二預測器,所述第二預測器包括全局計數器;以及耦合到所述第一預測器和所述第二預測器的預測器控制器,所述預測器控制器用于基于來自所述第一預測器和所述第二預測器的輸入產生最終預測。
具體實施方案參考圖1,示出了根據本發(fā)明的一個實施方案的處理器100的一部分的框圖。如圖1中所示,處理器100包括鎖預測器110和存儲器排序緩沖器(MOB)150。雖然在圖1中只示出了這些元件,但是要理解,處理器100可以包括額外的部件,例如數據緩存、分支預測單元、流水線級、各種寄存器,等等。
鎖預測器110可以用來預測程序內的鎖操作在執(zhí)行期間是否可能是有競爭的。在圖1的實施方案中,鎖預測器110包括第一預測器(即表或T預測器)120和第二預測器(即全局或G預測器)130。T預測器120和G預測器130可以獨立地預測鎖操作是否可能是有競爭的。作為結果的來自兩個預測器的預測都被提供給預測器邏輯140,預測器邏輯140可以是控制器等,用于以期望的方式對結果進行組合。雖然示出了兩個單獨的預測器,但是本發(fā)明的范圍不限于此,并且,在一些實施方案中可以存在額外的預測器(或者甚至是單獨一個)。
由預測器邏輯140產生的最終預測通過線145提供給MOB 150。更具體地說,最終預測被提供給MOB控制邏輯180,MOB控制邏輯180可以是控制器等,它用來控制MOB150內的緩沖器,所述緩沖器包括加載緩沖器160和儲存緩沖器170。加載緩沖器160可以用來在加載微操作(mop)執(zhí)行之前儲存它們,并跟蹤以前的加載或者其他的存儲器操作,所述其他的存儲器操作必須在給定的存儲器操作自身可以被完成之前完成。類似地,儲存緩沖器170可以用來儲存例如儲存操作的存儲器操作,并用來跟蹤以前的存儲器操作(一般是加載),在可以提交(commit)給定的存儲器操作自身之前,必須完成所述的以前的存儲器操作。
當計算加載鎖操作的地址時,對應于鎖變量的地址可以通過線162從執(zhí)行單元105提供給T預測器120,以便開始預測。此外,操作可以被輸入加載緩沖器160的條目。提供給T預測器120的這個地址可以用來訪問T預測器120內的查找表125,以便輸出與鎖變量的地址相關聯的計數。該計數可以指示程序執(zhí)行期間在那個鎖變量上已經發(fā)生過的競爭次數。當然,有關加載鎖操作的其他信息(例如其程序計數器)也可以被提供給T預測器以幫助表查找。
如圖1中所示,在一些實施方案中,額外的線163可以耦合在加載緩沖器160和T預測器120之間,以便將對應于表變量的地址提供給T預測器120。該線可以用于從加載緩沖器160獲得關于重分派的預測。
如圖1中進一步所示,來自T預測器120的計數可以從T預測器120提供給預測器邏輯140。同時,當前存在的對線程內全局競爭的預測從G預測器輸出,并提供給預測器邏輯140。預測器邏輯140可以組合這些輸入,以獲得最終預測,然后,所述最終預測被提供給MOB控制邏輯180。
依次,MOB控制邏輯180可以基于預測來處理鎖操作。例如,MOB控制邏輯180可以基于最終預測來確定是否優(yōu)化鎖操作。雖然MOB控制邏輯180可以以各種方式來處理鎖操作的執(zhí)行,但是,如果預測指示不可能有競爭,則MOB控制邏輯180可以實現對鎖操作的優(yōu)化。相反,如果預測指示有可能有競爭,則MOB控制邏輯180可以使得鎖操作被保守地執(zhí)行。
在一個實施方案中,T預測器120可以包括在程序執(zhí)行期間曾遭遇競爭的鎖變量的地址表125。雖然在圖1的實施方案中示出了單個表,但是可以存在多個表,每一個均對應于不同的線程?;蛘?,單個表可以存在,并且在每一個條目中可以包括線程標識符,以便將條目與對應的線程相關聯。
表125的每一個條目均可以具有飽和計數器(saturating counter),例如兩位的飽和計數器。當表變量的地址在程序中第一次有競爭時,它被添加到表125,并且該條目的計數器被初始化為零。如果對應于表標量的地址再次有競爭,則該條目的計數可以被遞增。如果在程序執(zhí)行期間計數飽和,則T預測器120可以預測每一個后續(xù)的訪問該表變量的鎖操作將是有競爭的。相反,如果地址未儲存在該表中,或者與該表中的條目相關聯的計數還沒有飽和,則T預測器120可以預測鎖操作將是無競爭的。
在一些實施方案中,由于表條目競爭所致,表125內的條目可能被覆寫。此外,在一些實施方案中,整個表可以被周期性地清除。在一個實施方案中,可以將128個條目的表用于該表。在這樣的實施方案中,表125可以直接被映射,具有被用于每一個條目的4位的標簽。在一個實現中,表變量地址的低六位可以被屏蔽掉,接下來較高的七位地址可以用作進入表的索引,并且接下來的4個最高位可以被儲存為標簽。地址的剩余位可以被丟棄。
在程序的執(zhí)行期間,一些鎖變量很少有競爭,而其他的則經常有競爭。在各種實施方案中,T預測器120中的計數器的飽和本質可以捕獲這種行為。即,經常競爭的鎖變量可以很快地使T預測器120內的計數器飽和,而很少競爭的鎖變量將持續(xù)地被T預測器120預測為無競爭。在一個實施方案中,可以使用飽和上/下計數器。利用這種計數器,當鎖變量有競爭時,可以遞增計數器條目,而當其不競爭時,計數器條目可以被遞減。然后,T預測器120內的邏輯可以將計數值與閾值進行比較,以確定給定的鎖操作是否有可能有競爭。
在一個實施方案中,G預測器130可以包括指示程序內的競爭量的全局(G)計數器132。雖然在圖1中被示出為單個計數器,但是可以存在多個計數器,每一個均與不同的線程相關聯。
G預測器130可以用來指示程序內的競爭的全局視圖。雖然在這里針對程序描述,但是在一些實施方案中,G預測器130可以以線程為基礎對競爭進行分析。無論何時鎖操作有競爭,G計數器132就可以被遞增。G預測器130還可以包括指示程序內的競爭水平的控制邏輯。在一個實施方案中,可以將計數器值與第一閾值和第二閾值進行比較。如果當前計數低于第一閾值,則G預測器130預測程序內的競爭為低。相反,如果計數器值超過了第一閾值但是低于第二閾值,則G預測器130可以預測程序內的競爭處于中等水平。如果當前計數在第二閾值之上,則G預測器130可以預測程序內的競爭為高。在一個實施方案中,第一閾值可以被設置為5并且第二閾值可以被設置為25,盡管本發(fā)明的范圍不限于此。而且,不是向預測器邏輯140發(fā)送預測,G預測器130可以輸出G計數器132的當前計數值,并且預測器邏輯140可以基于該值來預測競爭。
在一些實施方案中,計數器132可以被間隔性地復位。此外,計數器132可以是飽和計數器(即,被防止溢出)。以這種方式,G預測器130可以捕獲程序內的競爭突發(fā)。即,在程序的某個部分期間(例如給定數量的指令),競爭可能為高,而在程序的不同部分,競爭可以為低(或中等)。以這種方式,G預測器130可以捕獲競爭的突發(fā)。此外,G預測器130可以起到對抗緣于不良書寫的代碼等的病態(tài)競爭情形的看門狗(watchdog)機制的作用。例如,當T預測器120中的表125被太多的鎖和跟蹤湮沒時,G預測器130可以基于其全局視圖來預測競爭。
如上所述,計數器132可以以各種間隔復位。例如,在一個實施方案中,它可以大約每隔30,000個處理器周期被復位。在這樣的實施方案中,可以每個處理器周期遞增第二個計數器(即復位(R)計數器)134,并且,當第二計數器134溢出時,計數器132可以被復位。在一個實施方案中,R計數器134可以是15位的計數器,且也包括在G預測器130內。在其他的實施方案中,R計數器134可以被置于G預測器130之外。此外,在其他實施方案中,G計數器132可以是飽和增/減計數器,所述計數器在發(fā)生競爭時被遞增,并且在不發(fā)生競爭時被遞減。
因此,獨立的預測可以被從T預測器120和G預測器130提供給預測器邏輯140?,F在參考表1,所示的是可以在預測器邏輯140中實施的狀態(tài)圖。如表1中所示,預測器邏輯140可以基于獨立預測發(fā)展出最終預測。
表1


如表1中所示,G預測器130可以起到看門狗的作用。當競爭的全局預測是高時,無論單個鎖變量的競爭歷史如何,總可以預測競爭。類似地,如果G預測器130指示全局競爭為低,則有可能單個鎖變量將繼續(xù)是無競爭的,而不管其歷史。
相反,如果G預測器130預測競爭是中等的,則最終預測可以基于特定鎖變量的競爭歷史(即T預測器120的輸出)。雖然在表1中以特定實現示出,但是要理解,在其他的實施方案中,來自兩個獨立的預測器的預測可以被以其他的方式組合。
現在參考圖2,所示是根據本發(fā)明的一個實施方案的方法的流程圖。如圖2中所示,方法200是競爭預測器的一個實現,并且可以用來確定對于給定的鎖操作,競爭是否是可能的。如果預測沒有競爭,則鎖操作可以被優(yōu)化。方法200可以通過接收從從保留站(reservation station)分派的加載操作開始(框210)。這個操作可以被寫入MOB 150(框215)。同時,可以確定該加載是否是加載鎖操作(菱形220)。如果它不是,則可以正常執(zhí)行該操作(框230)。
相反,如果確定該加載是加載鎖操作,則控制從菱形220直接傳遞到菱形250,在菱形250中,地址可以被分派到基于地址來預測競爭的預測器(菱形250)。例如,回頭參考圖1的預測器,鎖變量的地址可以從線162提供給T預測器120。依次,T預測器120可以使用該地址(如上所述)來訪問表125,以便確定那里是否包含鎖變量。如果是,則與鎖變量相關聯的計數被施加到T預測器120中的邏輯,T預測器120中的邏輯將預測輸出到預測器邏輯140,預測器邏輯140也從G預測器130接收當前的預測。依次,預測器邏輯140可以基于這兩個輸入來產生最終的競爭預測。該預測被提供給MOB控制邏輯180。
基于該預測,可以開始如下面進一步描述的協議?;诹庑?50處的競爭預測,如果不滿足某些條件,則協議可以阻塞(block)實際操作,而同時,如果預測是沒有競爭,則仍然允許被優(yōu)化的部分(例如預取或省略)繼續(xù)下去。
如果在菱形250處預測了競爭,則可以執(zhí)行保守的鎖定協議(框270)。例如,MOB150可以等待加載緩沖器160中是最老的微操作(uop)的加載鎖操作,或者可以等待儲存緩沖器170排出(drain),或者是類似的過程。
反之,如果預測沒有競爭,則控制從菱形250傳遞倒框260。在那里,鎖操作可以被優(yōu)化(框260)。例如,加載鎖操作可以被推測性地分派,以便預取對應于加載變量的緩存線。也可以實現其他類似的這種優(yōu)化。例如,在加載鎖微操作和依賴性(dependent)微操作變成機器中最老的之前,或者儲存緩沖器被排出之前,加載鎖微操作和依賴性微操作可以被推測性地執(zhí)行。
此外,在一些實施方案中,在從MOB 150重分派之后,預測器可以被訪問,控制從菱形220傳遞倒菱形250,以便為了預測重新檢查?;蛘?,可以儲存和重新使用先前的預測。
在操作期間,MOB 150監(jiān)視進入的探查,以便確定任何其他的線程或處理器是否想要訪問同一鎖變量。MOB 150繼續(xù)這種監(jiān)視,直到加載鎖微操作已經從機器中退出為止。在MOB 150正監(jiān)視鎖變量時發(fā)生的探查將指示不當推測,并且將要求重新執(zhí)行加載鎖及其依賴性(dependent)操作。
在一個實施方案中,通過使額外的指示符與加載緩沖器160內的條目相關聯來指示競爭,可以檢測到加載操作的實際競爭。但是要理解,在其他實施例中可以用其他的方式檢測競爭。
當為了加載操作分配了加載緩沖器160中的條目時,競爭指示符(它可以是單個的競爭位)可以被復位。如果探查操作在條目已經被分配之后并且在指令已經退出之前進入對應于加載操作的加載緩沖器,則競爭位可被置位。當對應于加載操作的加載緩沖器160的條目以后被解除分配時(在鎖指令已退出之后),可以查看競爭位以檢測競爭。更具體地說,條目及其相關聯的競爭位可以被傳遞倒T預測器120和G預測器130,以便對它們進行更新。即,如果競爭位被置位,則T預測器120和G預測器130內的計數器可以被遞增。在圖1的實施方案中,對于這種更新,可以存在單獨的更新通道165。
現在參考圖3,所示是根據本發(fā)明的一個實施方案的代表性計算機系統300的框圖。如圖3中所示,計算機系統300包括第一處理器310a和第二處理器310b。在一個實施方案中,處理器310a可以經第二層(L2)緩存305,通過存儲器系統互連320耦合到緩存一致(coherent)共享存儲器子系統(“一致性存儲器(coherent memory)”)330。在一個實施方案中,一致性存儲器330可以包括動態(tài)隨機訪問存儲器(DRAM),并且還可以包括用于在處理器310a和處理器310b之間共享一致性存儲器330的一致性存儲器控制器邏輯。
要理解,在其他的實施方案中,額外的處理器可以耦合到一致性存儲器330。此外,在某些實施方案中,一致性存儲器330可以分部分實現,并分散開,以使系統300內處理器的子集與一致性存儲器330的某些部分通信,而其他的處理器與一致性存儲器330的其他部分通信。
如圖3中所示,處理器310a可以包括鎖預測器312a、存儲器排序緩沖器(MOB)314a,以及執(zhí)行單元316a。如上所述,鎖預測器312a可以耦合到MOB 314a,以提供對鎖競爭的預測。基于這些預測,MOB 314a可以優(yōu)化鎖操作。然后,被優(yōu)化的操作可以被傳遞到執(zhí)行單元316a,執(zhí)行單元316a可以具有執(zhí)行所述操作的流水線級。然后,有關操作的信息可以被傳遞回MOB 314a,以指示操作完成且準備好了解除分配。此時,MOB 314a可以用操作的競爭狀態(tài)(即有競爭或無競爭)來對鎖預測器312a進行更新。當然,在處理器310a中可以存在額外的元件,例如第一層(L1)緩存。
如圖3中進一步所示,處理器310b中可以存在類似的處理器元件,處理器310b可以是多處理器系統的第二個核心處理器。雖然在圖3的實施方案中示出為每一個均包括預測器,但是在一些實施方案中,可能只有單個核心包括這樣的預測器,所述預測器可以由多個核心共享。更進一步,在一些實施方案中,多線程應用程序可針對每一個線程使用單獨的預測器。在其他的實施方案中,鎖預測器可以存在于單處理器系統中。
一致性存儲器330也可以(經過中心鏈路(hub link))耦合到輸入/輸出(I/O)中心(hub)335,輸入/輸出中心335耦合到I/O擴展總線355和外部總線350。在不同的實施方案中,I/O擴展總線355可以耦合到各種I/O設備,例如鍵盤或鼠標,以及其他設備。外部總線350可以耦合到各種部件,例如外部設備370,外部設備370可以是存儲器設備,例如快閃存儲器、插卡(add-in card),等等。盡管描述參考了系統300的具體部件,但是所示實施方案的很多修改是可能的。
在一些實施方案中,多處理器系統可以是點到點總線系統,例如在公共系統接口(CSI)系統中?,F在參考圖4,所示是根據本發(fā)明的另一個實施方案的多處理器系統的框圖。如圖4中所示,多處理器系統是點到點總線系統,并且包括經過點到點互連450耦合的第一處理器470和第二處理器480。第一處理器470包括處理器核心474、存儲器控制器中心(MCH)472,以及點到點(P-P)接口476和478。類似地,第二處理器480包括相同的部件,即處理器核心484、MCH 483,以及P-P接口486和488。根據本發(fā)明的實施方案,每一個處理器470和480均可以包括預測電路。
如圖4中所示,MCH 472和482將處理器耦合到相應的存儲器,即存儲器432和存儲器434,所述存儲器可以是在局部上連接到相應處理器的主存儲器的一部分。
第一處理器470和第二處理器480可以通過P-P接口(interface)452和454分別耦合到芯片組490。如圖4中所示,芯片組900包括P-P接口494和498。此外,芯片組490包括將芯片組490耦合到高性能圖形引擎438的接口492。在一個實施方案中,先進圖形端口(AGP)總線439可以用來將圖形引擎438耦合到芯片組490。AGP總線439可以符合加州圣克拉拉的英特爾公司1998年4月公布的圖形加速端口接口規(guī)范2.0修訂本?;蛘撸c到點互連439可以耦合這些部件。
依次,芯片組490可以通過接口496耦合到第一總線416。在一個實施方案中,第一總線416可以是如1995年6月的PCI局部總線規(guī)范,生產版,修訂本2.1定義的外設部件互連(PCI)總線,或者是例如PCI Express總線或其他第三代I/O互連總線的總線,盡管本發(fā)明的范圍不限于此。
如圖4中所示,各種輸入/輸出(I/O)設備414以及總線橋418可以耦合到第一總線416,總線橋418將第一總線416耦合到第二總線420。在一個實施方案中,第二總線420可以是低引腳數(low pin count,LPC)總線。各種設備可以耦合到第二總線420,例如包括鍵盤/鼠標422、通訊設備426和數據儲存單元428,在一個實施方案中,數據儲存單元428可以包括代碼430。此外,音頻I/O 424可以耦合到第二總線420。
可以在計算機程序中實現實施方案,所述計算機程序儲存在儲存介質上,具有用于對計算機系統編程來執(zhí)行所述實施方案的指令。儲存介質可以包括但不限于任何類型的盤片、半導體器件,或者任何類型的適于儲存電子指令的介質,所述盤片包括軟盤、光盤、致密盤只讀存儲器(CD-ROM)、致密盤可讀寫存儲器(CD-RW),以及磁光盤;所述半導體器件例如只讀存儲器(ROM)、諸如靜態(tài)和動態(tài)RAM的隨機訪問存儲器(RAM),可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃存儲器、磁卡或光卡。其他的實施方案可以實現為被可編程控制設備執(zhí)行的軟件模塊。
雖然這里描述為基于鎖變量的地址來預測競爭,但是在其他實施方案中,預測也可以基于鎖定指令的線性指令指針(LIP)(有時候也稱為程序計數器)。此外,在其他實施方案中,預測可以基于LIP和鎖變量地址的某種組合。在另一種實施方案中,預測也可以包含來自過去的分支歷史/目標信息的信息。而且,其他操作的競爭預測可能受影響。
雖然已經參考有限數量的實施方案描述了本發(fā)明,但是熟練技術人員將理解由此產生的各種修改和變化。所附權利要求書旨在覆蓋所有這種落入本發(fā)明的真正精神和范圍的修改和變化。
權利要求
1.一種裝置,包括用于預測要被執(zhí)行的操作的競爭的預測器。
2.如權利要求1的裝置,其中,所述預測器包括用于儲存對應于鎖變量的地址信息及所述鎖變量的競爭發(fā)生的表。
3.如權利要求2的裝置,其中,所述預測器還包括用于對線程中的競爭的發(fā)生進行計數的計數器。
4.如權利要求3的裝置,還包括用于基于來自所述表和所述計數器的信息預測所述鎖操作的競爭的預測器邏輯。
5.如權利要求4的裝置,還包括用于基于所述預測器邏輯的輸出優(yōu)化所述操作的控制器。
6.如權利要求1的裝置,其中,所述預測器基于鎖操作的鎖變量的地址來預測所述競爭。
7.如權利要求1的裝置,其中,所述預測器基于第一和第二獨立預測來預測所述競爭。
8.如權利要求1的裝置,還包括耦合到所述預測器的緩沖器,所述緩沖器將所述操作儲存在條目中,所述條目具有與其相關聯的競爭指示符。
9.如權利要求8的裝置,其中,如果所述條目被探查,則所述競爭指示符指示競爭。
10.一種系統,包括第一預測器,用于預測鎖操作是否有競爭;第二預測器,用于指示程序中競爭的水平;以及耦合到所述第一預測器并耦合到所述第二預測器的動態(tài)隨機訪間存儲器(DRAM),以儲存所述程序。
11.如權利要求10的系統,還包括第一控制器,所述第一控制器用于基于所述第一預測器和所述第二預測器的結果產生組合預測。
12.如權利要求11的系統,還包括用于接收所述組合預測的第二控制器。
13.如權利要求12的系統,其中,如果所述組合預測指示沒有競爭,則所述第二控制器將把至少一個優(yōu)化施加于所述鎖操作。
14.如權利要求10的系統,其中,所述第一預測器包括儲存器,所述儲存器用于至少儲存對應于所述程序的鎖變量的地址的一部分。
15.如權利要求10的系統,其中,所述第二預測器包括計數器,所述計數器用于對所述程序中的競爭發(fā)生進行計數。
16.如權利要求15的系統,還包括復位機制,所述復位機制用于在預定數量的處理器周期之后復位所述計數器。
17.如權利要求15的系統,其中,所述計數器包括增/減計數器。
18.一種方法,包括預測鎖操作在執(zhí)行期間是否有競爭;以及如果預測所述鎖操作沒有競爭,則優(yōu)化所述鎖操作。
19.如權利要求18的方法,還包括使用第一預測器和第二預測器來獨立地預測。
20.如權利要求19的方法,還包括組合所述第一預測器和所述第二預測器的結果。
21.如權利要求19的方法,還包括將第一有競爭鎖變量的地址插入所述第一預測器的第一條目。
22.如權利要求21的方法,還包括如果所述第一有競爭鎖變量再次遭遇競爭,則遞增所述第一預測器的所述第一條目的計數。
23.如權利要求22的方法,還包括基于所述計數來在所述第一預測器中預測所述第一有競爭鎖變量的競爭。
24.如權利要求19的方法,還包括如果程序的任何鎖操作有競爭,則遞增所述第二預測器中的計數器。
25.如權利要求19的方法,還包括如果所述條目被探查,則置位對應于所述鎖操作的緩沖器條目中的競爭指示符。
26.如權利要求25的方法,還包括基于所述競爭指示符來更新所述第一預測器和所述第二預測器其中的至少一個。
27.一種制品,包括包含指令的機器可讀儲存介質,所述指令如果被機器執(zhí)行,則使得所述機器能夠執(zhí)行一種方法,所述方法包括預測要被執(zhí)行的操作的競爭;以及基于所述預測來處理所述操作。
28.如權利要求27的制品,其中,所述方法還包括如果所述條目被探查,則置位對應于所述鎖操作的緩沖器條目中的競爭指示符。
29.如權利要求28的制品,其中,所述方法還包括基于所述競爭指示符來更新所述第一預測器和所述第二預測器其中的至少一個。
30.如權利要求27的制品,其中,所述方法還包括以兩種方式獨立地預測所述競爭。
31.一種裝置,包括用于預測操作是否有競爭的第一預測器,所述第一預測器具有帶有多個條目的表;指示全局競爭水平的第二預測器,所述第二預測器包括全局計數器;以及耦合到所述第一預測器和所述第二預測器的預測器控制器,所述預測器控制器用于基于來自所述第一預測器和所述第二預測器的輸入產生最終預測。
32.如權利要求31的裝置,還包括耦合來接收所述最終預測的排序控制器。
33.如權利要求31的裝置,其中,如果所述最終預測指示沒有競爭,則所述排序控制器將把至少一個優(yōu)化施加于所述操作。
34.如權利要求31的裝置,其中,所述表至少要儲存對應于鎖變量的地址的一部分。
35.如權利要求31的裝置,還包括用于復位所述全局計數器的復位機制。
全文摘要
在一個實施方案中,本發(fā)明包括預測器,用于預測要在程序中執(zhí)行的操作的競爭。所述操作可以基于所述預測的結果來處理,所述預測可以基于多個獨立的預測。在一個實施方案中,如果沒有競爭被預測到,則可以優(yōu)化所述操作。其他的實施方案被描述并被要求保護。
文檔編號G06F9/46GK1797348SQ200510135238
公開日2006年7月5日 申請日期2005年12月29日 優(yōu)先權日2004年12月29日
發(fā)明者布拉廷·薩哈, 馬修·默藤, 塞巴斯蒂恩·希利, 戴維·庫法迪, 珀爾·哈馬倫德 申請人:英特爾公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1