專(zhuān)利名稱(chēng):在數(shù)據(jù)處理系統(tǒng)中仲裁線程訪問(wèn)共享資源的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及數(shù)據(jù)處理系統(tǒng)領(lǐng)域。具體地,本發(fā)明涉及在數(shù)據(jù)處理系統(tǒng)中共享資源的領(lǐng)域。
背景技術(shù):
如今數(shù)據(jù)處理系統(tǒng)的最大挑戰(zhàn)之一是對(duì)共享資源的有效同步和仲裁?,F(xiàn)代數(shù)據(jù)處理系統(tǒng)一般包括多個(gè)頻繁地共享資源的處理單元,諸如系統(tǒng)存儲(chǔ)器和高速緩存。
一般,利用多處理器結(jié)構(gòu)的程序被稱(chēng)為“并行程序”?!叭蝿?wù)”是由并行程序執(zhí)行的、任意定義的一件工作?!斑M(jìn)程”(在此與“線程”可替換使用)是執(zhí)行任務(wù)的抽象實(shí)體。并行程序包括有多個(gè)執(zhí)行該程序中的任務(wù)的協(xié)同進(jìn)程。通過(guò)以軟件、硬件或其組合實(shí)現(xiàn)的某種分配機(jī)制來(lái)將任務(wù)分配給進(jìn)程或線程。其中進(jìn)程執(zhí)行分配給它們的任務(wù)的方法是自始至終通過(guò)物理處理單元來(lái)執(zhí)行的。在數(shù)據(jù)處理系統(tǒng)中進(jìn)程可能需要彼此同步以執(zhí)行分配給它們的任務(wù)并共享資源(諸如存儲(chǔ)器)。
共享資源具有的問(wèn)題是通常第一線程可能需要存儲(chǔ)在如下存儲(chǔ)器位置中的數(shù)據(jù),該存儲(chǔ)器位置被系統(tǒng)中的第二線程鎖定。正如在現(xiàn)有技術(shù)中所熟知的,在這樣的情形下,第一線程將會(huì)連續(xù)嘗試訪問(wèn)被鎖定的存儲(chǔ)器位置直到成功。然而,對(duì)不可訪問(wèn)的存儲(chǔ)器位置的連續(xù)重試訪問(wèn)浪費(fèi)了處理單元資源,而該資源本可通過(guò)執(zhí)行有用的工作而被更好地利用。因此,有必要對(duì)現(xiàn)代數(shù)據(jù)處理系統(tǒng)中的這種狀況的處理進(jìn)行改進(jìn),其中在這些狀況期間由于共享資源的暫時(shí)不可用而導(dǎo)致處理單元不能夠繼續(xù)進(jìn)行有用工作。
發(fā)明內(nèi)容
本發(fā)明包括一種在數(shù)據(jù)處理系統(tǒng)中對(duì)共享資源的訪問(wèn)進(jìn)行仲裁的系統(tǒng)和方法。對(duì)第一組線程進(jìn)行監(jiān)控,該第一組線程代表將被一組處理單元中的至少一個(gè)處理單元執(zhí)行的一組任務(wù)。響應(yīng)于檢測(cè)出由第一組線程中的一個(gè)線程發(fā)出的、用于訪問(wèn)被該組線程中的第二線程鎖定的共享資源的請(qǐng)求,該第一線程嘗試訪問(wèn)與該共享資源相關(guān)聯(lián)的列表。該列表通過(guò)共享資源的訪問(wèn)優(yōu)先級(jí),對(duì)該組線程中的至少一個(gè)線程進(jìn)行排序。響應(yīng)于確定出列表被該組線程中的第三線程鎖定,將該第一線程置于要在固定時(shí)間段之后被重新喚醒的休眠狀態(tài)。響應(yīng)于確定出該組處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),在固定時(shí)間段期滿(mǎn)之前將第一線程從休眠狀態(tài)喚醒。另外,響應(yīng)于將第一線程從休眠狀態(tài)喚醒,將第一線程分配給該組處理單元中的至少一個(gè),并且第一線程重試其對(duì)于訪問(wèn)列表的嘗試。
本發(fā)明的上述特征,以及另外的目的、特征以及優(yōu)點(diǎn)將通過(guò)以下的詳細(xì)說(shuō)明而變得明了。
在所附權(quán)利要求中闡述本發(fā)明的新穎性特征。而在結(jié)合附圖閱讀以下對(duì)例示性實(shí)施例的詳細(xì)說(shuō)明時(shí),本發(fā)明本身、及其使用的優(yōu)選方式、進(jìn)一步的目的和優(yōu)點(diǎn)將被最好地理解,其中圖1是例示了可以實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的示例性數(shù)據(jù)處理系統(tǒng)的方框圖;圖2是示出了可以實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的示例性數(shù)據(jù)處理單元的方框圖;圖3是例示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的對(duì)由多線程訪問(wèn)共享資源進(jìn)行處理的示例性方法的高級(jí)邏輯流程圖;圖4A是圖1的示例性數(shù)據(jù)處理系統(tǒng)100的簡(jiǎn)化框圖,其示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例、一對(duì)線程競(jìng)爭(zhēng)事務(wù)鎖;圖4B是圖1的示例性數(shù)據(jù)處理系統(tǒng)100的簡(jiǎn)化框圖,其例示了根據(jù)本發(fā)明的優(yōu)選實(shí)施例、一對(duì)線程競(jìng)爭(zhēng)列表鎖;具體實(shí)施方式
正如所描述的,示例性的數(shù)據(jù)處理系統(tǒng)100包括經(jīng)由系統(tǒng)總線106與系統(tǒng)存儲(chǔ)器104耦合的處理單元102。優(yōu)選地,系統(tǒng)存儲(chǔ)器104可被實(shí)現(xiàn)為一組動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)模塊。一般,系統(tǒng)存儲(chǔ)器104包括用于運(yùn)行一組應(yīng)用程序的數(shù)據(jù)以及指令。夾層(mezzanine)總線108用作系統(tǒng)總線106與外設(shè)總線114之間的媒介。本領(lǐng)域的技術(shù)人員將理解,外設(shè)總線114可被實(shí)現(xiàn)為周邊器件互連(PCI)、加速圖形端口(AGP)、或者任何其它的外設(shè)總線。耦合到外設(shè)總線114的有被數(shù)據(jù)處理系統(tǒng)100用作大容量存儲(chǔ)設(shè)備的硬盤(pán)驅(qū)動(dòng)器110。耦合到外設(shè)總線114的還有一組外設(shè)112a-n。
本領(lǐng)域的技術(shù)人員將理解,數(shù)據(jù)處理系統(tǒng)100可以包括在圖1中未具體例示出的很多附加部件。因?yàn)檫@些附加部件不是理解本發(fā)明所必需的,所以未在圖1中例示出或在此進(jìn)一步討論。然而,還應(yīng)該理解,由本發(fā)明提供的、用于改進(jìn)對(duì)共享資源的處理的增強(qiáng)數(shù)據(jù)處理系統(tǒng)100可應(yīng)用于任何系統(tǒng)架構(gòu)的數(shù)據(jù)處理系統(tǒng),決不限于一般的多處理器架構(gòu)或圖1例示的對(duì)稱(chēng)多處理(SMP)架構(gòu)。
現(xiàn)在參照?qǐng)D2,例示了根據(jù)本發(fā)明的處理單元102的示例性實(shí)施例的詳細(xì)框圖。如圖所示,處理單元102包含指令管線,該指令管線包括指令排序單元(ISU)200和多個(gè)執(zhí)行單元208、212、214、218和220。ISU 200利用通過(guò)指令存儲(chǔ)器管理單元(IMMU)204執(zhí)行的有效到真實(shí)地址翻譯(effective-to-real address translation ERAT)而獲得的真實(shí)地址,來(lái)從L1I高速緩存206取出處理用指令。當(dāng)然,如果所請(qǐng)求的指令的高速緩存線并不駐留在L1I高速緩存206中,那么ISU 200就經(jīng)由I高速緩存重載總線207從L2高速緩存234請(qǐng)求指令的相關(guān)高速緩存線,其中I高速緩存重載總線207還耦合到硬件預(yù)取引擎232。L2高速緩存234還包括數(shù)據(jù)陣列235和高速緩存控制器236。
在取出指令并進(jìn)行預(yù)處理(如果有的話)之后,ISU 200基于指令類(lèi)型,經(jīng)由指令總線209可能不按順序地將指令分配給執(zhí)行單元208、212、214、218和220。即,狀況寄存器修改指令和分支指令被分別分配給狀況寄存器單元(CRU)208和分支執(zhí)行單元(BEU)212,固定點(diǎn)和負(fù)載/存儲(chǔ)指令被分別分配給固定點(diǎn)單元(FXU)214和負(fù)載存儲(chǔ)單元(LSU)218,浮點(diǎn)指令被分配給浮點(diǎn)單元(FPU)220。
ISU 200使用的指令集合包括但并不限于根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于針對(duì)共享資源對(duì)同步鎖進(jìn)行仲裁和控制的指令??衫脭?shù)據(jù)處理系統(tǒng)100將該指令集合存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中。這些計(jì)算機(jī)可讀介質(zhì)包括但并不限于系統(tǒng)存儲(chǔ)器104、高速緩存206和234、HDD 110,并且可以被實(shí)現(xiàn)為只讀、隨機(jī)存取、光學(xué)、或磁介質(zhì)中的任意類(lèi)型。
在可能的排隊(duì)和緩存之后,由執(zhí)行單元208、212、214、218和220適時(shí)地執(zhí)行ISU 200所分派的指令。在此將指令“執(zhí)行”定義為如下進(jìn)程,通過(guò)該進(jìn)程,處理單元的邏輯電路檢查指令操作碼(opcode)以及相關(guān)聯(lián)的操作數(shù)(若有的話),并且作為響應(yīng),在數(shù)據(jù)處理系統(tǒng)中(例如,在系統(tǒng)存儲(chǔ)器位置之間、寄存器或緩存器與存儲(chǔ)器之間等)移動(dòng)數(shù)據(jù)或指令,或?qū)υ摂?shù)據(jù)執(zhí)行邏輯或數(shù)學(xué)運(yùn)算。對(duì)于存儲(chǔ)器存取(例如負(fù)載類(lèi)型或存儲(chǔ)器類(lèi)型)指令,執(zhí)行一般包括根據(jù)指令操作數(shù)來(lái)計(jì)算目標(biāo)有效地址(EA)。
在執(zhí)行單元208、212、214、218和220之一中執(zhí)行期間,指令可以從與該執(zhí)行單元耦合的寄存器組中的一個(gè)或多個(gè)結(jié)構(gòu)化的和/或重命名寄存器接收輸入操作數(shù)(如果有的話)。類(lèi)似地由執(zhí)行單元208、212、214、218和220將指令執(zhí)行的數(shù)據(jù)結(jié)果(如果有的話)寫(xiě)到寄存器組中的指令指定的位置。
例如,F(xiàn)XU 214從通用寄存器組(GPRF)216接收輸入操作數(shù)并將目的操作數(shù)(即數(shù)據(jù)結(jié)果)存儲(chǔ)到通用寄存器組(GPRF)216,F(xiàn)PU 220從浮點(diǎn)寄存器組(FPRF)222接收輸入操作數(shù)并將目的操作數(shù)存儲(chǔ)到浮點(diǎn)寄存器組(FPRF)222,LSU 218從GPRF 216接收輸入操作數(shù),并使數(shù)據(jù)在L1D高速緩存230(經(jīng)由互連線217)與GPRF216和FPRF 222兩者之間被傳送。類(lèi)似地,當(dāng)執(zhí)行狀況寄存器修改(condition-register-modifying)指令或取決于狀況寄存器(condition-register-dependent)的指令時(shí),CRU 208和BEU 212訪問(wèn)控制寄存器組(CRF)210,在優(yōu)選實(shí)施例中控制寄存器組(CRF)210包括狀況寄存器、鏈路寄存器、計(jì)數(shù)寄存器、及各個(gè)寄存器的重命名寄存器。BEU 212訪問(wèn)狀況寄存器、鏈路寄存器和計(jì)數(shù)寄存器的值,以解析有狀況的分支,從而獲取路徑地址,BEU 212將該路徑地址提供給指令排序單元200,以發(fā)起沿指示路徑的指令取出。在執(zhí)行單元完成指令執(zhí)行之后,執(zhí)行單元通知指令排序單元200,該指令排序單元200按照程序順序和數(shù)據(jù)結(jié)果(如果有的話)的提交(commitment),將指令的完成調(diào)度到處理單元202的結(jié)構(gòu)化狀態(tài),仍參照?qǐng)D2,本發(fā)明的優(yōu)選實(shí)施例優(yōu)選地包括數(shù)據(jù)存儲(chǔ)器管理單元(DMMU)224。DMMU 224對(duì)程序啟動(dòng)的負(fù)載中的有效地址(EA)進(jìn)行翻譯,并將從LSU 218接收的操作指令存儲(chǔ)到用于訪問(wèn)易失性存儲(chǔ)器分層結(jié)構(gòu)的物理地址(PA)中,該易失性存儲(chǔ)器分層結(jié)構(gòu)包括L1D高速緩存230、L2高速緩存234和系統(tǒng)存儲(chǔ)器104。DMMU 224包括翻譯后援緩存器(translation lookaside buffer TLB)226和TLB預(yù)取引擎228。
TLB 226對(duì)頁(yè)表項(xiàng)(PTE)的子集的副本進(jìn)行緩存,頁(yè)表項(xiàng)用于將被在處理單元102中的軟件執(zhí)行所使用的有效地址(EA)翻譯成物理地址(PA)。如在此所使用的,有效地址(EA)被定義為用于識(shí)別存儲(chǔ)器存儲(chǔ)位置或映射到虛擬地址空間的其他資源的地址。另一方面,在此將物理地址(PA)定義為物理地址空間中的地址,該地址識(shí)別真實(shí)的存儲(chǔ)器存儲(chǔ)位置或其它真實(shí)資源。
圖3是示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例在數(shù)據(jù)處理系統(tǒng)中仲裁共享資源的示例方法的高級(jí)流程圖。本領(lǐng)域的技術(shù)人員將理解,仲裁共享資源的本方法可通過(guò)以下任意方法來(lái)實(shí)現(xiàn),這些方法包括但并不限于軟件(例如軟件同步算法)、硬件(例如具有優(yōu)先級(jí)電路的共享鎖線路,該優(yōu)先級(jí)電路在有多個(gè)請(qǐng)求者時(shí)對(duì)哪個(gè)處理單元獲得下一個(gè)鎖線路進(jìn)行仲裁),以及軟件和硬件的任意組合。
如前面所討論的,“進(jìn)程”或“線程”是在程序環(huán)境中執(zhí)行任務(wù)的實(shí)體。其中進(jìn)程執(zhí)行它們的分配任務(wù)的方法是始終經(jīng)由物理處理單元來(lái)執(zhí)行的,諸如處理單元102。為了防止數(shù)據(jù)損壞,可由一個(gè)以上線程寫(xiě)入(改變)的任何存儲(chǔ)器位置必須由第一線程在訪問(wèn)期間鎖定,這些存儲(chǔ)器位置是諸如系統(tǒng)存儲(chǔ)器104、高速緩存206和236等中的位置。如果第二線程請(qǐng)求訪問(wèn)由第一線程訪問(wèn)的相同存儲(chǔ)器位置,那么第二線程必須等待,直到第一線程完成其操作為止。
圖4A和4B是示例性數(shù)據(jù)處理系統(tǒng)100的簡(jiǎn)化框圖,其示出了本發(fā)明的優(yōu)選實(shí)施例如何仲裁共享資源。如圖所示,分別從處理單元102a、102b和102c執(zhí)行一組線程410、412和414。另外示出了系統(tǒng)存儲(chǔ)器位置400、事務(wù)鎖402、列表406、休眠定時(shí)器407、列表鎖408以及線程416、418和414,所有這些都在等待訪問(wèn)系統(tǒng)存儲(chǔ)器位置400。為了節(jié)約在處理單元102上的處理時(shí)間,期望只有當(dāng)處理單元102沒(méi)有另外的有用工作要執(zhí)行(例如處理單元進(jìn)入空閑狀態(tài))時(shí),這些處理單元處理來(lái)自線程的鎖獲得重試請(qǐng)求。因?yàn)橹T如線程410、412和414的線程是用于處理給定任務(wù)的虛擬實(shí)體,所以數(shù)據(jù)處理系統(tǒng)100中的任何處理單元102都可以執(zhí)行線程。
本發(fā)明的優(yōu)選實(shí)施例提供了一種執(zhí)行線程的系統(tǒng)和方法,這些線程發(fā)出對(duì)于沒(méi)有其它有用工作要執(zhí)行的處理單元102的列表鎖408的重試請(qǐng)求。如果線程超過(guò)了列表鎖重試請(qǐng)求的預(yù)定次數(shù),則假設(shè)該列表鎖近期不可用,并將該線程置于休眠模式。當(dāng)(1)在預(yù)定時(shí)間段之后休眠定時(shí)器407期滿(mǎn),并且該線程被重新分配給處理單元102以執(zhí)行時(shí);或(2)處理單元102進(jìn)入空閑狀態(tài)并且不在執(zhí)行有用工作時(shí),將該線程從休眠模式中恢復(fù)。
如圖4A所示,線程410要求訪問(wèn)系統(tǒng)存儲(chǔ)器位置400,所以線程410請(qǐng)求獲得用于系統(tǒng)存儲(chǔ)器位置400的事務(wù)鎖402(圖3的步驟300和302)。正如所描述的,線程412已獲得了系統(tǒng)存儲(chǔ)器位置400的事務(wù)鎖402,將線程410鎖在外面。如果線程410能夠訪問(wèn)對(duì)于系統(tǒng)存儲(chǔ)器位置400的事務(wù)鎖402(例如,如果線程412沒(méi)有訪問(wèn)事務(wù)鎖402),則線程410將僅繼續(xù)處理它的分配任務(wù)(步驟304)。
現(xiàn)在參照?qǐng)D4B,因?yàn)榫€程410不能獲得系統(tǒng)存儲(chǔ)器位置400上的事務(wù)鎖402,所以線程410請(qǐng)求訪問(wèn)列表鎖408(步驟306)。在本發(fā)明的優(yōu)選實(shí)施例中,列表406包括有等待訪問(wèn)系統(tǒng)存儲(chǔ)器位置400的線程列表。為了將線程添加到列表406,必須獲得列表鎖408,以防止其它線程訪問(wèn)列表406。通常,如果多個(gè)線程嘗試訪問(wèn)同一存儲(chǔ)器位置時(shí),則為了添加到列表406而存在對(duì)于訪問(wèn)列表鎖408的競(jìng)爭(zhēng)。另外,在本發(fā)明的優(yōu)選實(shí)施例中,列表鎖408在用戶(hù)空間中是全局使能的鎖(例如,可由用戶(hù)應(yīng)用訪問(wèn),而操作系統(tǒng)的內(nèi)核和較低級(jí)沒(méi)有特權(quán))。另外,當(dāng)將線程置于休眠模式時(shí),在處理單元102進(jìn)入空閑狀態(tài),或者可認(rèn)為正好對(duì)空閑具有優(yōu)先級(jí)時(shí),將該線程喚醒并設(shè)置在處理單元102的局部運(yùn)行隊(duì)列上。
如圖4B所例示的,列表鎖408當(dāng)前被從處理單元102c發(fā)布的線程414保持。線程410將重試列表鎖請(qǐng)求(步驟314)。如果列表鎖請(qǐng)求被重試了超過(guò)預(yù)定次數(shù)(步驟316),則處理單元102a將線程410設(shè)置為休眠模式(步驟318),并為線程410啟動(dòng)休眠定時(shí)器407。本領(lǐng)域的技術(shù)人員將理解,盡管在圖4A和圖4B中將休眠定時(shí)器407例示為如在系統(tǒng)存儲(chǔ)器104中的位置,但是還可以按照其它方式來(lái)實(shí)現(xiàn)休眠定時(shí)器407,這些方式包括但不限于經(jīng)由其它計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)的軟件、經(jīng)由硬件電路、或硬件和軟件的任意組合。如果列表鎖請(qǐng)求被重試了未超過(guò)預(yù)定次數(shù),則過(guò)程返回到步驟314,并以反復(fù)的方式繼續(xù)。
如果休眠定時(shí)器期滿(mǎn)(步驟320),過(guò)程返回到步驟314,其例示了在線程410被重新分配給處理單元102(步驟323)之后,線程410重試列表鎖請(qǐng)求。然而,如果休眠定時(shí)器尚未期滿(mǎn),則過(guò)程繼續(xù)到步驟322,該步驟示出了對(duì)處理單元102是否變得空閑進(jìn)行確定,將處理單元102變得空閑定義為不在執(zhí)行有用工作的處理單元102。如果處理單元102尚未變得空閑,則過(guò)程返回到步驟320。然而,如果處理單元102已變得空閑,則線程410被分配給空閑的處理單元102,過(guò)程返回到步驟314,并以反復(fù)的方式繼續(xù)。
返回步驟306,如果線程410獲得關(guān)于列表406的列表鎖408,則過(guò)程繼續(xù)到步驟308,該步驟例示了線程410被設(shè)置為休眠模式。過(guò)程繼續(xù)到步驟310,該步驟示出了線程410被設(shè)置在列表406上,列表406包括有正在等待訪問(wèn)系統(tǒng)存儲(chǔ)器位置400的線程416、418和414的條目。過(guò)程繼續(xù)到步驟312,其例示了對(duì)處理單元102是否變得空閑作出確定。如果處理單元102尚未變得空閑,則過(guò)程在步驟312處反復(fù)。如果處理單元102已經(jīng)變得空閑,則將線程410分配給空閑的處理單元102(步驟313),并且過(guò)程返回到步驟302,該步驟例示了線程410發(fā)送請(qǐng)求以獲得關(guān)于系統(tǒng)存儲(chǔ)器位置400的事務(wù)鎖402。
正如所公開(kāi)的,本發(fā)明包括一種在數(shù)據(jù)處理系統(tǒng)中對(duì)訪問(wèn)共享資源進(jìn)行仲裁的系統(tǒng)和方法。對(duì)第一組線程進(jìn)行監(jiān)控,該組線程代表將被一組處理單元中的至少一個(gè)處理單元執(zhí)行的一組任務(wù)。響應(yīng)于檢測(cè)到由第一組線程中的一個(gè)線程發(fā)出的、用于訪問(wèn)被該組線程中的第二線程鎖定的共享資源的請(qǐng)求,該第一線程嘗試訪問(wèn)與該共享資源相關(guān)聯(lián)的列表。該列表通過(guò)對(duì)所述共享資源的訪問(wèn)優(yōu)先級(jí),對(duì)該組線程中的至少一個(gè)線程進(jìn)行排序。響應(yīng)于確定出所述列表被該組線程中的第三線程鎖定,將所述第一線程置于休眠狀態(tài)。響應(yīng)于確定出該組處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),將所述第一線程從休眠狀態(tài)喚醒。另外,響應(yīng)于將所述第一線程從所述休眠狀態(tài)喚醒,將所述第一線程分配給該組處理單元中的至少一個(gè),并且第一線程重試它的對(duì)訪問(wèn)所述列表的嘗試。
另外,應(yīng)該理解,另選地,可以在存儲(chǔ)有程序產(chǎn)品的計(jì)算機(jī)可讀介質(zhì)中實(shí)現(xiàn)本發(fā)明的至少一些方面。可經(jīng)由各種信號(hào)承載介質(zhì)將限定本發(fā)明功能的程序轉(zhuǎn)送到數(shù)據(jù)存儲(chǔ)系統(tǒng)或計(jì)算機(jī)系統(tǒng),該信號(hào)承載介質(zhì)包括但不限于不可寫(xiě)存儲(chǔ)介質(zhì)(例如CD-ROM),可寫(xiě)存儲(chǔ)介質(zhì)(例如,軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器、讀/寫(xiě)CD-ROM、光學(xué)介質(zhì)),以及通信介質(zhì),諸如包括以太網(wǎng)在內(nèi)的計(jì)算機(jī)和電話網(wǎng)絡(luò)。應(yīng)該理解,因此在這樣的信號(hào)承載介質(zhì)中,當(dāng)對(duì)用于指示本發(fā)明方法功能的計(jì)算機(jī)可讀指令進(jìn)行承載和編碼時(shí),表示本發(fā)明的另選實(shí)施例。此外,應(yīng)該理解,可通過(guò)如下一種系統(tǒng)來(lái)實(shí)現(xiàn)本發(fā)明,該系統(tǒng)具有以本文描述的硬件、軟件或者硬件和軟件的組合、及其等同物的形式存在的裝置。
盡管參照附圖來(lái)具體地示出并描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解,在不脫離本發(fā)明的精神和范圍的情況下,可以在形式和細(xì)節(jié)上作出各種變化。
權(quán)利要求
1.一種方法,包括對(duì)多個(gè)線程進(jìn)行監(jiān)控,所述線程代表了將被多個(gè)處理單元中的至少一個(gè)處理單元執(zhí)行的多個(gè)任務(wù);響應(yīng)于檢測(cè)到由所述多個(gè)線程中的第一線程發(fā)出的、用于訪問(wèn)被所述多個(gè)線程中的第二線程鎖定的共享資源的請(qǐng)求,嘗試訪問(wèn)與所述共享資源相關(guān)聯(lián)的列表,其中所述列表通過(guò)對(duì)所述共享資源的訪問(wèn)優(yōu)先級(jí),對(duì)所述多個(gè)線程中的至少一個(gè)線程進(jìn)行排序;響應(yīng)于確定出所述列表被所述多個(gè)線程中的第三線程鎖定,將所述第一線程置于休眠狀態(tài);響應(yīng)于確定出所述多個(gè)處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),將所述第一線程從休眠狀態(tài)喚醒;并且響應(yīng)于所述的將所述第一線程從所述休眠狀態(tài)喚醒,將所述第一線程分配給所述多個(gè)處理單元中的所述至少一個(gè),并且重試所述的對(duì)訪問(wèn)所述列表的嘗試。
2.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于確定出所述列表被所述多個(gè)線程中的所述第三線程鎖定,以預(yù)定嘗試次數(shù)重試所述的對(duì)訪問(wèn)所述列表的嘗試。
3.根據(jù)權(quán)利要求1所述的方法,其中所述的將所述第一線程喚醒還包括響應(yīng)于確定出在預(yù)定時(shí)間段期滿(mǎn)之前所述多個(gè)處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),將所述第一線程從定時(shí)休眠狀態(tài)喚醒,其中所述定時(shí)休眠狀態(tài)使所述第一線程在所述預(yù)定時(shí)間段期滿(mǎn)之后可被喚醒。
4.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于所述第一線程成功地訪問(wèn)所述列表,將所述第一線程置于所述休眠狀態(tài)。
5.根據(jù)權(quán)利要求4所述的方法,還包括響應(yīng)于確定出所述多個(gè)處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),嘗試訪問(wèn)所述共享資源。
6.一種數(shù)據(jù)處理系統(tǒng),包括多個(gè)處理單元,執(zhí)行代表多個(gè)任務(wù)的多個(gè)線程;共享資源,被耦合到所述多個(gè)處理單元;列表,與所述共享資源相關(guān)聯(lián),用于通過(guò)對(duì)所述共享資源的訪問(wèn)優(yōu)先級(jí),對(duì)所述多個(gè)線程中的至少一個(gè)線程進(jìn)行排序;以及實(shí)現(xiàn)計(jì)算機(jī)程序代碼的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序代碼包括如下指令,所述指令可由所述多個(gè)處理單元執(zhí)行并且被配置成對(duì)多個(gè)線程進(jìn)行監(jiān)控,這些線程代表將被多個(gè)處理單元中的至少一個(gè)處理單元執(zhí)行的多個(gè)任務(wù);響應(yīng)于檢測(cè)到由所述多個(gè)線程中的第一線程發(fā)出的、用于訪問(wèn)被所述多個(gè)線程中的第二線程鎖定的共享資源的請(qǐng)求,嘗試訪問(wèn)與所述共享資源相關(guān)聯(lián)的列表,其中所述列表通過(guò)對(duì)所述共享資源的訪問(wèn)優(yōu)先級(jí),對(duì)所述多個(gè)線程中的至少一個(gè)線程進(jìn)行排序;響應(yīng)于確定出所述列表被所述多個(gè)線程中的第三線程鎖定,將第一線程置于休眠狀態(tài);響應(yīng)于確定出所述多個(gè)處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),將所述第一線程從休眠狀態(tài)喚醒;并且響應(yīng)于所述的將所述第一線程從所述休眠狀態(tài)喚醒,將所述第一線程分配給所述多個(gè)處理單元中的所述至少一個(gè),并且重試所述的對(duì)訪問(wèn)所述列表的嘗試。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)處理系統(tǒng),其中所述計(jì)算機(jī)程序代碼還包括如下指令,所述指令可由所述多個(gè)處理單元執(zhí)行并且被配置成響應(yīng)于確定出所述列表被所述多個(gè)線程中的所述第三線程鎖定,以預(yù)定嘗試次數(shù)重試所述的對(duì)訪問(wèn)所述列表的嘗試。
8.根據(jù)權(quán)利要求6所述的數(shù)據(jù)處理系統(tǒng),其中所述計(jì)算機(jī)程序代碼還包括如下指令,所述指令可由所述多個(gè)處理單元執(zhí)行并且被配置成響應(yīng)于確定出在預(yù)定時(shí)間段期滿(mǎn)之前所述多個(gè)處理單元中的至少一個(gè)進(jìn)入已空閑狀態(tài),將所述第一線程從所述休眠狀態(tài)喚醒,其中定時(shí)休眠狀態(tài)使所述第一線程在所述預(yù)定時(shí)間段期滿(mǎn)之后可被喚醒。
9.根據(jù)權(quán)利要求6所述的數(shù)據(jù)處理系統(tǒng),其中所述計(jì)算機(jī)程序代碼還包括如下指令,所述指令可由所述多個(gè)處理單元執(zhí)行并且被配置成響應(yīng)于所述第一線程成功地訪問(wèn)所述列表,將所述第一線程置于所述休眠狀態(tài)。
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中所述計(jì)算機(jī)程序代碼還包括如下指令,所述指令可由所述多個(gè)處理單元執(zhí)行并且被配置成響應(yīng)于確定出所述多個(gè)處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),嘗試訪問(wèn)所述共享資源。
全文摘要
在數(shù)據(jù)處理系統(tǒng)中仲裁線程訪問(wèn)共享資源的系統(tǒng)和方法。對(duì)第一組線程進(jìn)行監(jiān)控,該組線程代表將被一組處理單元中的至少一個(gè)處理單元執(zhí)行的一組任務(wù)。響應(yīng)于檢測(cè)出由第一組線程中的一個(gè)線程發(fā)出的、用于訪問(wèn)被該組線程中的第二線程鎖定的共享資源的請(qǐng)求,該第一線程嘗試訪問(wèn)與該共享資源相關(guān)聯(lián)的列表。該列表通過(guò)共享資源的訪問(wèn)優(yōu)先級(jí),對(duì)該組線程中的至少一個(gè)線程進(jìn)行排序。響應(yīng)于確定出列表被該組線程中的第三線程鎖定,將該第一線程置于在固定時(shí)間段之后被重新喚醒的休眠狀態(tài)。響應(yīng)于確定出該組處理單元中的至少一個(gè)已進(jìn)入空閑狀態(tài),在固定時(shí)間段期滿(mǎn)之前將第一線程從休眠狀態(tài)喚醒。另外,響應(yīng)于將第一線程從休眠狀態(tài)喚醒,將第一線程分配給該組處理單元中的至少一個(gè),并且第一線程重試對(duì)于訪問(wèn)該列表的嘗試。
文檔編號(hào)G06F9/46GK1959644SQ200610142980
公開(kāi)日2007年5月9日 申請(qǐng)日期2006年10月26日 優(yōu)先權(quán)日2005年10月27日
發(fā)明者格雷格·R.·梅維尼, 米索爾·薩斯亞納拉亞納·斯里尼瓦斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司