專利名稱:多線程程序的低功率執(zhí)行的制作方法
多線程程序的低功率執(zhí)行
背景技術:
除非本文另外指出,否則本節(jié)中描述的手段不是本申請權利要求的現(xiàn)有技術,并且不應因包括在本節(jié)中而承認是現(xiàn)有技術。因為對電池或其他類型便攜式電源的依賴,諸如普適計算(ubicomp)等一些計算環(huán)境可以包括需要低能量利用的設備。在一些實現(xiàn)方式中,與單核架構相比,多核架構已經(jīng)顯示出了提供節(jié)約功率和能量的平臺的能力,并且可以非常適合于ubicomp設備或其他類型的低功率計算設備。此外,ubicomp設備或其他類型的低功率計算設備可以合并執(zhí)行并行或多線程程序的多核架構,來完成計算任務。因此,由于計算設備可能依賴于電池或其他類型的便攜式電源,因此允許使用盡可能少的能量來執(zhí)行并行或多線程程序的機制是重要 的。
發(fā)明內(nèi)容
本公開總體上描述了一種第一處理元件執(zhí)行多線程程序的一個或多個線程的實現(xiàn)方法。根據(jù)至少一些方法,可以實現(xiàn)條件加載(conditioanl load)。條件加載可以與第一處理元件用來執(zhí)行多線程程序的一個或多個線程的同步原語相關聯(lián)。在一些示例中,可以確定用于使用同步原語的變量的當前值是否在用于第一處理元件的高速緩存存儲器中,并且可以至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載。此外,可以至少基于不存在所述當前值向第二處理元件轉發(fā)一致性請求(coherence request)。然后可以至少基于一致性請求從第二處理元件接收所述當前值。然后可以將接收到的所述當前值與變量的期望值相比較,并且可以至少基于比較結果繼續(xù)阻止條件加載指令。本公開還總體上描述了便于第一處理元件執(zhí)行多線程程序的一個或多個線程的示例設備。第一處理元件可以實現(xiàn)與第一處理元件用來執(zhí)行第一線程的同步原語相關聯(lián)的條件加載指令。示例設備可以包括具有邏輯裝置的一致性管理器。在一些示例中,該邏輯裝置可以配置為確定用于使用同步原語的變量的當前值是否在用于第一處理元件的高速緩存存儲器中,并且可以至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載。同樣,邏輯裝置可以被配置為至少基于不存在所述當前值向第二處理元件轉發(fā)一致性請求。然后可以至少基于一致性請求從第二處理元件接收所述當前值。然后可以將接收到的所述變量的膳食當前值與所述變量的期望值相比較,并且可以至少基于比較結果繼續(xù)阻止條件加載指令。本公開還總體上描述了執(zhí)行多線程程序的一個或多個線程的示例系統(tǒng)。示例系統(tǒng)可以包括執(zhí)行多線程程序的第一線程的第一處理元件。示例系統(tǒng)還可以包括執(zhí)行多線程程序的第二線程的第二處理元件。第二處理元件可以實現(xiàn)與第二處理元件用來執(zhí)行第二線程的同步原語相關聯(lián)的條件加載指令。在一些示例中,第二處理元件可以包括一致性管理器。一致性管理器可以具有邏輯裝置,該邏輯裝置配置為確定用于使用同步原語的變量的當前值是否在第二處理元件的高速緩存存儲器中,并且可以至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載。此外,邏輯裝置可以被配置為至少基于不存在所述當前值向第一處理元件轉發(fā)一致性請求。邏輯裝置還可以配置為至少基于一致性請求從第一處理元件接收所述當前值,然后將接收到的所述當前值與所述變量的期望值相比較。邏輯裝置還可以配置為能夠至少基于比較結果繼續(xù)阻止條件加載指令。本公開還總體上描述了示例計算機程序產(chǎn)品。在一些示例中,計算機程序產(chǎn)品可以包括信號承載介質,具有用于處理元件執(zhí)行多線程程序的一個或多個線程的指令。指令在由邏輯裝置執(zhí)行時使邏輯裝置實現(xiàn)與用于執(zhí)行多線程程序的第一線程的同步原語相關聯(lián)的條件加載指令。指令還可以使邏輯裝置確定用于使用同步原語的變量的當前值是否在用于第一處理元件的高速緩存存儲器中,并且可以至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載。同樣,指令可以使邏輯裝置至少基于不存在所述當前值向第二處理元件轉發(fā)一致性請求。可以至少基于一致性請求從第二處理元件接收鎖定變量的當前值。指令還可以使邏輯裝置將接收到的所述變量的所述當前值與所述變量的期望值相比較,并且可以至少基于比較結果繼續(xù)阻止條件加載指令。
·
以上發(fā)明內(nèi)容僅僅是說明性的,而絕不是限制性的。除了上述示例性的各方案、各實施例和各特征之外,參照附圖和以下詳細說明,將清楚其他方案、其他實施例和其他特征。
根據(jù)以下說明和所附權利要求,結合附圖,本公開的前述和其他特征將更加清楚。在認識到這些附圖僅僅示出了根據(jù)本公開的一些示例且因此不應被認為是限制本公開范圍的前提下,通過使用附圖以額外的特征和細節(jié)來詳細描述本公開,附圖中圖I示出了示例多核處理系統(tǒng);圖2示出了一致性管理器的示例架構的框圖;圖3-5示出了處理元件用來執(zhí)行多線程程序的一個或多個線程的示例同步原語;圖6是處理元件執(zhí)行多線程程序的一個或多個線程的方法的流程圖;圖7示出了示例計算機程序產(chǎn)品的框圖;以及圖8示出了示例計算設備;以上附圖均根據(jù)本公開的至少一些實施例布置。
具體實施例方式在以下詳細說明中,參考了作為詳細說明的一部分的附圖。在附圖中,類似符號通常表示類似部件,除非上下文另行指明。
具體實施方式
部分、附圖和權利要求書中描述的示例性實施例并不是限制性的。在不脫離在此所呈現(xiàn)主題的精神或范圍的情況下,可以利用其他示例或實施例,且可以進行其他改變。應當理解,在此一般性記載以及附圖中圖示的本公開的各方案可以按照多種不同配置來設置、替換、組合、和設計,這里明確設想所述不同配置并使其成為本公開的一部分。本公開涉及與一個或多個處理元件低功率執(zhí)行多線程程序的一個或多個線程的方法、裝置、系統(tǒng)、和計算機程序產(chǎn)品,等等。如本公開中所設想的,由于計算設備可能依賴于電池或其他類型的便攜式電源,允許使用低能量執(zhí)行并行或多線程程序的機制可能是重要的。在一些示例中,可以執(zhí)行并行或多線程程序的設備可以具有包括多個處理器核作為處理元件的處理器架構,或者該設備可以包括具有分離的線程上下文功能的單個處理器核作為處理元件。在任一情況下,設備的處理元件可以共同地執(zhí)行并行或多線程程序。涉及執(zhí)行多線程程序的多個處理元件的耗能操作的一個示例是通常被稱作緊密循環(huán)旋轉(spinning)的操作。緊密循環(huán)旋轉可以涉及一個或多個處理元件,所述一個或多個處理元件在嘗試使用一個或多個同步原語來執(zhí)行多線程程序的線程的同時被保持在緊密循環(huán)中。例如,一個或多個同步原語可以包括但不限于,鎖定同步、障柵(barrier)同步或信號等待同步。以下的表I包括可以如何使用被視為鎖定同步的一種同步原語來獲取對執(zhí)行多線程程序的線程的處理元件的鎖定的示例。如以下更詳細描述,對表I中示出的示例鎖定同步的使用可能會導致緊密循環(huán)旋轉。 表I
LockCode: Id Rl, Lockvar// RI = Lockvar
bneqz Rl, LockCodeIl 如火只丨!=0,則跳較個丄ockCode
test&setRl, Lockvar // 如果Rl為0,則將Lockvar以原子
//方式設為I
bneqz Rl, LockCode // 如果R1!=0,則跳轉至LockCoderet
ReleaseCode: st Lockvar, #0Il Lockvar = 0
ret在一些示例中,為了獲取鎖定,嘗試執(zhí)行多線程程序的第一線程的第一處理元件可以使用表I中示出的示例鎖定同步,表I以標記為“LockCode”的指令行開始。軟件數(shù)據(jù)結構或表示鎖定的鎖定變量可以存儲在示例鎖定同步中的Lockvar所標識的位置。鎖定變量可以保持在用于第一處理元件的高速緩存存儲器中。當?shù)谝惶幚碓褂檬纠i定同步時,首先將鎖定變量的值從存儲器或高速緩存存儲器加載到用于標識為Rl的處理元件的寄存器上。例如,如果加載的鎖定變量的值是“1”,則執(zhí)行第二線程的第二處理元件可以保持鎖定。因此,為了嘗試獲取執(zhí)行第一線程的鎖定,第一處理元件在加載到Rl中的鎖定變量值變?yōu)橹怠?”之前可能需要保持等待。第一處理元件由于跳轉回到標記為LockCode的指令行而在等待上花費時間,并且可以重復示例鎖定同步中的指令。在該死循環(huán)期間,嘗試執(zhí)行第一線程的第一處理元件并不空閑。第一處理元件可以繼續(xù)實現(xiàn)示例鎖定同步的“Id”和“bneqz”指令,而同時繼續(xù)檢查加載到Rl中的鎖定變量值是否改變。上述類型的緊密循環(huán)典型地浪費了與第一處理單元在該緊密循環(huán)中等待的時長成比例的能量。在一些示例中,由于第一處理單元繼續(xù)處在通過使用表I中示出的示例鎖定同步所引起的緊密循環(huán)中,因此最終可以發(fā)現(xiàn)加載到Rl中的鎖定變量已經(jīng)變?yōu)橹怠癘”。值“0”可以指示先前保持鎖定的第二處理元件已經(jīng)釋放了鎖定。此外,使用示例鎖定同步,第一處理元件可以執(zhí)行示例鎖定同步中標識為“test&set”部分的原子指令?!皌est&set”原子指令可以將第一處理器的高速緩存存儲器中在位置LockVar處保持的鎖定變量值讀出到寄存器(例如,R1),并且測試該值。在一些示例中,如果寄存器中的值是“O”,則第一處理單元將值“I”寫入到高速緩存存儲器位置Lockvar。如果在“test&set”原子指令結束處寄存器中的值是“1”,則鎖定獲取失敗了。根據(jù)示例鎖定同步,該點處的獲取失敗會使分支跳轉回到LockCode指令行,以重試鎖定獲取。注意,“test&set”原子指令是必要的,這是因為嘗試執(zhí)行第三線程的第三處理單元也可能在相同時間嘗試獲取對相同數(shù)據(jù)的鎖定,并且僅一個處理元件可以在給定時間獲得鎖定。在一些示例中,使用表I中示出的示例同步鎖定對于使用盡可能小的能量來執(zhí)行多線程程序而言可能有問題。例如,第一處理元件可能在使用示例同步鎖定的同時花費較高和/或浪費的能量,使得處理元件卡在緊密循環(huán)中。同樣,繼續(xù)訪問其高速緩存存儲器來測試鎖定變量的值的第一處理元件也可能會花費較高和/或浪費的能量。在一些示例中,實現(xiàn)了用于處理元件執(zhí)行多線程程序的一個或多個線程的方法。可以實現(xiàn)條件加載指令。條件加載指令可以與第一處理元件用來執(zhí)行多線程程序的一個或多個線程的同步原語(例如,鎖定同步、障柵同步、信號等待同步)相關聯(lián)。在一些示例中, 可以確定用于使用同步原語的變量(例如,鎖定變量)的當前值是否在第一處理元件的高速緩存存儲器中,并且可以至少基于高速緩存存儲器中不存在當前值來阻止條件加載。同樣,可以至少基于用于第一處理元件的高速緩存存儲器中不存在變量當前值向第二處理元件轉發(fā)一致性請求。然后可以至少基于一致性請求從第二處理元件接收變量的當前值。然后可以將接收到的當前值與變量的期望值相比較,并且可以基于比較結果繼續(xù)阻止條件加載指令。阻止和/或繼續(xù)阻止條件加載指令可以一定程度上避免或最小化上述能量浪費緊密循環(huán)。圖I示出了根據(jù)本公開至少一些實施例的示例多處理元件系統(tǒng)100。如圖I所示,多處理元件系統(tǒng)100包括處理節(jié)點110和處理節(jié)點120。在一些示例中,多處理元件系統(tǒng)100的元件可以經(jīng)由通信通道130通信耦合。同樣如圖I所示,處理節(jié)點110包括處理元件112、高速緩存存儲器114和一致性管理器116,而處理節(jié)點120包括處理元件122、高速緩存存儲器124和一致性管理器126。盡管圖I至所示的多處理元件系統(tǒng)100包括兩個分開的處理節(jié)點,但是本公開不限于具有僅兩個處理節(jié)點的多處理元件系統(tǒng),因為上多處理元件系統(tǒng)可以具有多于兩個處理節(jié)點。同樣,本公開也可以適用于線程在駐留在不同芯片上的處理器或處理元件上運行的多芯片多處理器系統(tǒng)、線程在芯片上的不同核上運行的多核芯片、以及線程在相同核上的不同線程上下文上運行的多線程核。在一些示例中,多處理元件系統(tǒng)100可以用于完成包括一個或多個并行或多線程程序的執(zhí)行的計算任務。例如,多線程程序的分開的線程可以由處理節(jié)點110和120的元件(例如處理元件112、122)分開執(zhí)行,以完成至少一部分計算任務。如以下更詳細描述的,為了執(zhí)行多線程程序的一個或多個線程,處理節(jié)點(例如,處理節(jié)點110)的第一處理元件(例如,處理元件112)可以實現(xiàn)條件加載指令。在一些示例中,條件加載指令可以與用于執(zhí)行多線程程序的至少一個線程的同步原語相關聯(lián)。在一些示例中,第一處理元件的高速緩存存儲器(例如,高速緩存存儲器114)可以包括,或者可以不包括使用用于同步原語的變量(例如,鎖定變量)的值。如果高速緩存存儲器不包括變量的值,則處理節(jié)點的一致性管理器(例如,一致性管理器116)可以阻止條件加載指令,然后(例如,經(jīng)由通信通道130)轉發(fā)一致性請求??梢韵虻诙幚碓?例如,處理元件122)轉發(fā)該請求,第二處理元件可以具有第二處理器元件的高速緩存存儲器(例如,高速緩存存儲器124)中包括的變量的當前值。在一些示例中,條件加載指令可以采用各種格式。在一個示例中,條件加載指令可以采用一個存儲器操作數(shù)和一個目的地寄存器,隱含期望針對該操作數(shù)的預定值,或者隱含期望從存儲器加載的值必須與目的地寄存器中保持的值匹配。備選地,在其他示例中,條件加載指令可以采用一個存儲器操作數(shù)、包含期望值的一個寄存器操作數(shù)、以及目的地寄存器。在一些示例中,第二處理元件可以通過提供變量的當前值來響應一致性請求。處理節(jié)點110的一致性管理器可以接收變量的當前值。在一些示例中,一致性管理器可以將變量的當前值與期望值相比較。例如,期望值可以是與正使用的同步原語的類型有關的值。例如,對于鎖定同步,期望值可以指示處理元件是否對數(shù)據(jù)具有鎖定,第一處理元件可能需要等待所述數(shù)據(jù)直到鎖定變?yōu)榭捎脼橹埂H绻容^結果指示變量的期望值和當前值不匹配,則一致性管理器可以阻止第一處理元件執(zhí)行條件加載指令。例如,對條件加載指令的阻止包括扣留(Withhold)來自第一處理元件的變量的當前值。然后可以將第一處理元件置·于各種可能的能量節(jié)省模式和/或狀態(tài)下,直到去除了條件加載指令上的阻止為止。在一些示例中,如果在附加一致性請求或響應之后,變量的期望值和當前值匹配,則可以去除阻止。例如,當使用鎖定同步時,第二處理元件隨后釋放其對數(shù)據(jù)的鎖定。圖2示出了根據(jù)本公開的至少一些實施例的一致性管理器116的示例架構的框圖。如上所述,對于圖I中的多處理元件系統(tǒng)100,處理節(jié)點110包括一致性管理器116。在一些示例中,一致性管理器116包括配置或布置為便于處理節(jié)點110的處理元件112執(zhí)行多線程程序的一個或多個線程的特征和/或邏輯裝置。在一些示例中,處理節(jié)點120的一致性管理器126實質上可以具有與圖2中的一致性管理器116所示相同的示例架構。在這些示例中,一致性管理器126還可以包括配置或布置為便于處理節(jié)點120的處理元件122執(zhí)行多線程程序的一個或多個線程的特征和/或邏輯裝置。圖2的示例一致性管理器116包括一致性邏輯裝置210、控制邏輯裝置220、存儲器230、輸入/輸出(I/O)接口 240、以及可選地一個或多個應用程序250。如圖2所示,一致性邏輯裝置210耦合至控制邏輯裝置220、存儲器230和I/O接口 240。如圖2所示,可選應用程序250可以布置為與控制邏輯裝置220合作操作。一致性邏輯裝置210還可以包括值特征212、請求特征214、比較特征216和阻止特征218或其任何合理組合中的一個或多個。在一些備選示例中,一致性邏輯裝置210、控制邏輯裝置220、存儲器230、輸入/輸出(I/O)接口 240和一個或多個應用程序250中的一些或全部可以集成到高速緩存控制器中。在一些示例中,圖2的框圖中描繪的元件配置為支持如本公開所描述的一致性管理器116。給定一致性管理器116可以包括除了圖2中所示的那些元件以外的一些、所有或更多元件。例如,一致性邏輯裝置210和控制邏輯裝置220可以分開或共同表示用于實現(xiàn)一致性管理器116的特征的多種邏輯器件。示例邏輯器件可以包括微控制器、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)、通信控制器、高速緩存控制器或其組合中的一個或多個。如上所述,一致性邏輯裝置210可以包括值特征122、請求特征214、比較特征216或阻止特征218。一致性邏輯裝置210可以配置為使用這些特征中的一個或多個來執(zhí)行操作。如以下更詳細描述的,示例操作可以包括便于處理元件112執(zhí)行多線程程序的一個或多個線程。在一些示例中,控制邏輯裝置220可以配置為控制一致性管理器116的整體操作。如上所述,控制邏輯裝置220可以表示配置為結合可執(zhí)行內(nèi)容或指令來操作以實現(xiàn)一致性管理器116的控制的多種邏輯器件中的任一個。在一些備選示例中,可以在一致性管理器116內(nèi)實現(xiàn)控制邏輯裝置220的特征和功能。根據(jù)一些示例,存儲器230布置為存儲可執(zhí)行內(nèi)容或指令??刂七壿嬔b置220和/或一致性邏輯裝置210可以使用可執(zhí)行內(nèi)容或指令來實現(xiàn)或激活一致性管理器116的特征或元件。存儲器230還可以布置為臨時保持變量的期望值和當前值,可以響應于一致性管理器116的元件或特征的一致性請求來接收變量的期望值和當前值。在一些示例中,存儲器230可以包括寄存器或其他類型的存儲器結構,以至少臨時存儲變量的期望值和當前值。
存儲器230可以包括多種存儲器介質,包括但不限于易失性存儲器、非易失性存儲器、閃速存儲器、可編程變量或狀態(tài)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、或其他靜態(tài)或動態(tài)存儲介質中的一個或多個。在一些示例中,I/O接口 240可以經(jīng)由內(nèi)部通信介質或鏈路在一致性管理器116與駐留在處理節(jié)點110(例如,處理器元件112或高速緩存存儲器114)上或者與處理節(jié)點110在一起的元件之間提供接口。I/O接口 240還可以在一致性管理器116與耦合至處理節(jié)點110 (例如,處理節(jié)點120)之間提供接口。如上圖I所述,處理節(jié)點110可以經(jīng)由通信通道130耦合至這些元件。例如,I/O接口 240包括配置為根據(jù)各種通信協(xié)議操作的接口,以允許一致性管理器116和/或一致性管理器116的元件通過通信通道130 (例如,互聯(lián)集成電路(I2C)、系統(tǒng)管理總線(SMBus)、串行外圍接口總線(SPI)、超傳輸(HT)、快速路徑互連(QPI)等)通信。在一些示例中,一致性管理器116包括一個或多個應用程序250,以向控制邏輯裝置220和/或一致性邏輯裝置210提供指令。例如,指令可以包括針對一致性管理器116的指令,以實現(xiàn)或使用值特征212、請求特征214、比較特征216或阻止特征218。圖3-5示出了根據(jù)本公開至少一些實施例的處理元件用來執(zhí)行多線程程序的一個或多個線程的示例同步原語。圖3中示出的示例同步原語300可以是先前標識為鎖定同步類型的同步原語。在一些示例中,處理元件可以經(jīng)由對鎖定同步的使用來執(zhí)行多線程程序的一個或多個線程。鎖定同步的使用可以包括獲取與多線程程序的第一線程的執(zhí)行中所使用的數(shù)據(jù)相關聯(lián)的鎖定變量。至少基于獲取的鎖定變量,可以將鎖定置于執(zhí)行第一線程中使用的數(shù)據(jù)上。在執(zhí)行第一線程中的關鍵部分之后,同步原語300的一部分還可以用于釋放鎖定。同步原語300類似于表I中示出的同步原語。然而,前兩個指令“Id”和“bneqz”已經(jīng)由條件加載“CL”指令代替。例如,“CL”指令可以由處理元件來實現(xiàn)以獲取鎖定變量,并且可以至少基于鎖定變量的當前值與鎖定變量的期望值的比較來阻止和/或繼續(xù)阻止“CL”指令。在一些示例中,嘗試執(zhí)行多線程程序的第一線程的第一處理元件可以使用同步原語300。例如,為了開始獲取鎖定的過程,第一處理元件可以實現(xiàn)開始于標記為“LockCode”的指令行的同步原語300。作為同步原語300的使用的一部分,可以實現(xiàn)“CL”指令來獲取與尋求鎖定的數(shù)據(jù)相關聯(lián)的鎖定變量。例如,鎖定變量的當前值可以存儲在主存儲器中,或者存儲以同步原語300中的Lockvar標識的高速緩存存儲器位置處。如下進一步描述的,可以基于鎖定變量的當前值與鎖定變量的期望值的比較結果來阻止和/或繼續(xù)阻止“CL”指令。例如,阻止可以包括停止或阻止進一步實現(xiàn)同步原語300中包括的指令。在一些示例中,稍后可以響應于鎖定變量的更新的當前值與期望值的后續(xù)比較來去除阻止。去除阻止然后可以使得實現(xiàn)同步原語300的附加指令,附加指令可以引起第一處理元件獲取鎖定,然后通過最終實現(xiàn)標記為“ReleaseCode”的指令行處的同步原語300的其余指令來釋放鎖定。例如,一旦執(zhí)行第一線程,就可以釋放鎖定。圖4中示出的示例同步原語400可以是先前標識為障柵同步的類型的同步原語。在一些示例中,處理元件可以經(jīng)由對同步原語400的使用來執(zhí)行多線程程序的一個或多個線程。同步原語400的使用可以使得處理元件能夠將線程執(zhí)行工作與其他處理元件同步。例如,同步原語400的使用可以包括指示是否已經(jīng)完成障柵的當前值。直到障柵完成為止, 可以將障柵或保持放置在處理元件上,以停止執(zhí)行多線程程序的一個或多個線程,直到其他處理元件已經(jīng)完成其對多線程程序的一個或多個線程的執(zhí)行為止。在一些示例中,同步原語400的使用可以包括處理元件維護已經(jīng)執(zhí)行的線程數(shù)目的計數(shù)(例如,在處理器元件所維護的存儲器或寄存器中)。例如,如圖4所示,可以將num_arrived(例如,變量的當前值)初始化為值0,并且將barrier_complete初始化為假(FALSE)。當從一個或多個其他處理元件接收到對執(zhí)行的線程的指示時,處理元件可以以原子方式遞增num_arrived,以獲得計數(shù)值。然后可以將計數(shù)值與圖4中示為NUM_THREADS的線程執(zhí)行數(shù)目相比較。例如,NUM_THREADS可以指示要被執(zhí)行以完成障柵的線程數(shù)目,例如,變量的期望值。如果計數(shù)等于NUM_THREADS,則可以完成障柵(例如,將barrier_complete設置為真(TRUE))。由于障柵完成,因此可以去除障柵或保持,并且處理元件可以繼續(xù)執(zhí)行一個或多個線程。否則,如果計數(shù)不等于NUM_THREADS,則障柵沒有完成(例如,barrier,complete為假)。在一些示例中,基于barrier_complete ==假,處理元件可以實現(xiàn)“CL”指令?!癈L”指令可以阻止或禁止處理元件實現(xiàn)同步原語400的其他部分,直到barrier_complete變?yōu)檎鏋橹?。在一些示例中,稍后可以基于變量的更新的當前?遞增的計數(shù)值)與期望值(NUM_THREADS的值)的后續(xù)比較來去除阻止。去除阻止然后可以使得去除障柵,并且然后處理元件可以繼續(xù)執(zhí)行多線程程序的一個或多個線程。圖5中示出的示例同步原語500可以是先前標識為信號等待同步類型的同步原語。在一些示例中,處理元件可以經(jīng)由對同步原語500的使用來執(zhí)行多線程程序的一個或多個線程。同步原語500的使用可以使得執(zhí)行多線程程序的消費者線程的處理元件能夠實現(xiàn)“CL”指令,而同時該處理元件等待多線程程序的制造者線程已經(jīng)執(zhí)行的信號。在一些示例中,同步原語500的使用可以包括監(jiān)視標志的值的處理元件,標志可以指示是否已經(jīng)執(zhí)行了制造者線程。如圖5所示,對于同步原語500而言,針對標志的值1(例如,變量的期望值)可以指示制造者線程已經(jīng)執(zhí)行。例如,如果標志的當前值不為1,貝U可以實現(xiàn)“CL”指令。類似于針對同步原語300和400的“CL”指令,CL指令的實現(xiàn)可以阻止或禁止處理元件實現(xiàn)同步原語500的其他部分,直到標志的當前值為I為止。
在一些示例中,稍后可以基于變量的更新的當前值(標志的當前值)與期望值(標志的值I)的后續(xù)比較來去除阻止。去除阻止然后可以使處理元件執(zhí)行多線程程序的線程(例如,消費者線程)。圖6是根據(jù)本公開至少一些實施例的處理元件執(zhí)行多線程程序的一個或多個線程的方法的流程圖。在一些示例中,如圖I所示的多處理元件系統(tǒng)100可以用于示意與圖6中示出的流程圖有關的示例方法。如圖2所示具有一致性管理器116的多處理元件系統(tǒng)100的處理節(jié)點110還可以用于實現(xiàn)示例方法。同樣,多處理元件系統(tǒng)100的元件和/或一致性管理器116可以實現(xiàn)圖3-5中示出的示例同步原語300、400或500的至少一部分。但是所描述的方法不限于對如圖I所示多處理元件系統(tǒng)100、圖2中示出的一致性管理器116或者圖3-5中示出的示例同步原語300、400或500的實現(xiàn)。在塊605處開始(實現(xiàn)“CL”指令),處理節(jié)點110的處理元件112可以包括配置為實現(xiàn)與用于執(zhí)行多線程程序的一個或多個線程的同步原語相關聯(lián)的條件加載指令的邏輯裝置和/或特征。
在一些示例中,獲取與處理元件112用來執(zhí)行多線程程序的第一線程的數(shù)據(jù)相關聯(lián)的鎖定變量可以包括實現(xiàn)同步原語300的“CL”指令。在其他示例中,可以實現(xiàn)同步原語400的“CL”指令,以使得處理元件112能夠確定是否已經(jīng)完成障柵。在其他示例中,指示消費者線程尚未執(zhí)行的標志值可以使處理元件112實現(xiàn)同步原語500的“CL”指令。從塊605繼續(xù)到判定塊610 (不存在當前值?),一致性管理器116可以包括配置為確定(例如,經(jīng)由值特征212)在高速緩存存儲器114中是否存在或存儲變量的當前值的邏輯裝置和/或特征。在一些示例中,當前值可以至少臨時存儲或保持在高速緩存存儲器114中。如果存在變量的當前值,則處理移至判定塊630。否則,處理移至塊615。從判定塊610前進至塊615 (阻止“CL”指令),一致性管理器116可以包括配置為(例如,經(jīng)由阻止特征218)阻止處理元件112實現(xiàn)“CL”指令的邏輯裝置和/或特征。在一些示例中,阻止條件加載指令可以是一致性管理器116扣留變量的當前值造成的。例如,一致性管理器可以制止將變量的當前值從主存儲器加載到高速緩存存儲器114中(即,創(chuàng)建類似于高速緩存未中的情形),或者制止將變量的當前值從高速緩存存儲器114加載到處理元件112維護的寄存器(例如,標識為Rl的寄存器)中。在沒有變量的當前值的情況下,例如,處理元件112可以停止實現(xiàn)同步原語的指令,并且可能在某時間間隔過去之后進入空閑或省電模式。省電模式可以包括但不限于,降低提供給處理元件112的電壓、降低處理元件112的頻率、對處理元件112的功率閘控、或進入檢查點狀態(tài)。從塊615繼續(xù)到塊620 (轉發(fā)一致性請求),一致性管理器116可以包括配置為經(jīng)由通信通道130轉發(fā)一致性請求(例如,經(jīng)由請求特征214)的邏輯裝置和/或特征。在一些示例中,高速緩存存儲器114中不存在變量的當前值可以指示可以抑制多線程程序的一個或多個線程的執(zhí)行。例如,處理元件112可以等待獲取鎖定、障柵完成或制造者線程執(zhí)行的指示。從塊620繼續(xù)到塊625 (接收當前值),一致性管理器116可以包括配置為基于轉發(fā)的一致性請求,或基于從其他處理元件接收的可以指示變量的值的廣播一致性消息來(例如經(jīng)由請求特征214)接收變量的當前值的邏輯裝置和/或特征。從塊625繼續(xù)到塊630 (當前值與期望值匹配?),一致性管理器116可以包括配置為將變量的接收的當前值與期望值相比較(例如,經(jīng)由比較特征216)的邏輯裝置和/或特征。。在一些示例中,例如當使用同步原語300時,變量的期望值可以是值“O”。例如,值“0”可以指示數(shù)據(jù)未被鎖定,但是本公開不限于“0”值作為對數(shù)據(jù)正被鎖定的指示。對于包括同步原語300的使用的這些示例,如果當前值為“0”,則當前值與期望值“0”匹配,并且處理移至塊645。否則,如果當前值是“1”,則當前值與期望值不匹配,并且處理移至塊635。在一些示例中,一致性管理器116 (例如經(jīng)由比較特征216)可以在存儲器(例如,存儲器230)中維護表,以至少臨時存儲變量的地址、變量的期望值,或者還至少臨時存儲接收到的當前值。一致性管理器166可以使用該表用于兩個值的比較。從判定塊630前進到塊635 (阻止或繼續(xù)阻止“CL”指令),一致性管理器116可以阻止或繼續(xù)阻止由處理元件112實現(xiàn)的“CL”指令。如上關于塊615所述,處理元件112可以繼續(xù)禁止實現(xiàn)同步原語的指令,并且可以進入空閑或省電模式。備選地,如果存在當前值(參見判定塊610)并且當前值與期望值不匹配(參見判定塊630),處理元件112可以禁止實現(xiàn)同步原語的指令,并且如還可以進入空閑或省電模式。 從塊635繼續(xù)到判定塊640 (更新的當前值?),一致性管理器116可以確定(例如,經(jīng)由請求特征)是否已經(jīng)從處理元件122接收到了對變量當前值的任何更新。如果接收到了更新的當前值,則處理移回到判定塊630。否則,處理可以移回至塊635,并且可以保持對條件加載指令的阻止。如上在判定塊630處所述,如果當前值與鎖定變量的期望值匹配,則處理移至塊645。在塊645 (繼續(xù)“CL”指令),一致性管理器116可以向處理元件112提供變量的當前值(例如,將該值加載到處理元件112保持的寄存器)。處理元件112然后可以繼續(xù)實現(xiàn)同步原語的其他指令,并且處理結束。圖7示出了根據(jù)本公開至少一些實施例的示例計算機程序產(chǎn)品700的框圖。在一些示例中,如圖7所示,計算機程序產(chǎn)品700包括信號承載介質702,信號承載介質702也可以包括用于第一處理元件(例如,處理元件112)執(zhí)行多線程程序的一個或多個線程的指令704。指令704在由邏輯裝置(例如,一致性邏輯裝置210)執(zhí)行時可以使該邏輯裝置實現(xiàn)與第一處理元件用來執(zhí)行多線程程序的第一線程的同步原語相關聯(lián)的條件加載指令。指令704還可以使邏輯裝置確定使用同步原語的變量的當前值是否在第二處理元件的高速緩存存儲器中,并且至少基于高速緩存存儲器中不存在當前值來阻止條件加載指令。指令704還可以使邏輯裝置基于不存在當前值向第二處理元件轉發(fā)一致性請求。指令704還可以使邏輯裝置基于一致性請求從第二處理元件接收當前值并且將接收到的當前值與變量的期望值相比較。指令704然后可以使邏輯裝置基于接收到的當前值與期望值的比較結果阻止條件加載指令。同樣如圖7所示,在一些示例中,計算機產(chǎn)品700可以包括計算機可讀介質706、可記錄介質708和通信介質710中的一個或多個。這些元件周圍的虛線框示出了信號承載介質702內(nèi)包括(但不限于信號承載介質702)的不同類型介質。這些類型的介質可以分發(fā)要由邏輯裝置(例如,一致性邏輯裝置210)執(zhí)行的指令704。計算機可讀介質706和可記錄介質708可以包括但不限于柔性盤、硬盤驅動器(HDD)、壓縮盤(⑶)、數(shù)字通用盤(DVD)、數(shù)字磁帶、計算機存儲器等。通信介質710可以包括但不限于,數(shù)字和/或模擬通信介質(例如,光纜、波導、有線通信鏈路、無線通信鏈路等)。
圖8示出了根據(jù)本公開至少一些實施例的示例計算設備800。在一些示例中,圖I中示出的多處理元件系統(tǒng)100的至少一些元件可以在計算設備800上實現(xiàn)。在這些示例中,計算設備800的元件可以布置或配置為便于第一處理元件執(zhí)行多線程程序的一個或多個線程。在非常基本的配置801中,計算設備800典型地包括至少兩個處理器核810以及系統(tǒng)存儲器820。存儲器總線830可用于在處理器核810和系統(tǒng)存儲器820之間進行通信。根據(jù)所期望的配置,處理器核810可以是任意類型的,包括但不限于微處理器(U P)、微控制器C)、數(shù)字信號處理器(DSP)或其任意組合。處理器核810可以包括一級或多級高速緩存(例如,一級高速緩存810和二級高速緩存812)、原語處理元件813、以及寄存器814。處理元件813可以包括算術邏輯單元(ALU)、浮點單元(FPU)、數(shù)字信號處理核(DSP核)或其任意組合。存儲器控制器815也可以與處理器核810之中的處理器核一起使用。根據(jù)所期望的配置,系統(tǒng)存儲器820可以是任意類型的,包括但不限于易失性存儲器(如RAM)、非易失性存儲器(如ROM、閃存等)或其任意組合。系統(tǒng)存儲器820典型地包括操作系統(tǒng)821、一個或多個應用程序822和程序數(shù)據(jù)824。應用程序822包括指令·823,配置為執(zhí)行本文所述的功能,包括關于圖2中示出的一致性管理器116和架構描述的動作,或者包括關于圖4中示出的流程圖描述的動作。程序數(shù)據(jù)824包括可以用于實現(xiàn)在使用同步原語執(zhí)行多線程程序的線程時的指令823 (例如,條件加載指令,或條件加載指令的阻止)的同步原語數(shù)據(jù)825。在一些示例中,應用程序822布置為與操作系統(tǒng)821上的程序數(shù)據(jù)824 —同操作,使得如本文所述提供第一處理元件執(zhí)行多線程程序的一個或多個線程的實現(xiàn)方式。在圖8中該描述的基本配置由虛線801內(nèi)的那些組件來示意。計算設備800可以具有額外特征或功能以及額外接口,以有助于基本配置801與任意所需設備和接口之間進行通信。例如,總線/接口控制器840可以用于輔助基本配置801與一個或多個數(shù)據(jù)存儲設備850之間經(jīng)由存儲接口總線841進行通信。數(shù)據(jù)存儲設備850可以是可拆除存儲設備851、不可拆除存儲設備852或其組合??刹鸪鎯υO備和不可拆除存儲設備的示例包括磁盤設備(如軟盤驅動器和硬盤驅動器(HDD))、光盤驅動器(如壓縮盤(CD)驅動器或數(shù)字通用盤(DVD)驅動器)、固態(tài)驅動器(SSD)以及磁帶驅動器,這僅僅是極多例子中的一小部分。示例計算機存儲介質可以包括以任意信息存儲方法和技術實現(xiàn)的易失性或非易失性、可拆除和不可拆除介質,如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其他數(shù)據(jù)。系統(tǒng)存儲器820、可拆除存儲設備851和不可拆除存儲設備852均是計算機存儲介質的示例。計算機存儲介質包括但不限于RAM、ROM、EEPR0M、閃存或其他存儲器技術,CD-ROM、數(shù)字多功能盤(DVD)或其他光存儲設備,磁盒、磁帶、磁盤存儲設備或其他磁存儲設備,或可以用于存儲所需信息并可以由計算設備800訪問的任意其他介質。任何這種計算機存儲介質可以是設備800的一部分。計算設備800還可以包括接口總線842,以有助于各種接口設備(例如,輸出接口、外圍設備接口和通信接口)經(jīng)由總線/接口控制器840與基本配置801進行通信。示例輸出設備860包括圖形處理單元861和音頻處理單元862,其可被配置為經(jīng)由一個或多個A/V端口 863與多種外部設備(如顯示器或揚聲器)進行通信。示例外圍設備接口 860包括串行接口控制器871或并行接口控制器872,它們可被配置為經(jīng)由一個或多個I/O端口 873與外部設備(如輸入設備(例如,鍵盤、鼠標、筆、語音輸入設備、觸摸輸入設備等))或其他外圍設備(例如,打印機、掃描儀等)進行通信。示例通信設備880包括網(wǎng)絡控制器881,其可以被設置為經(jīng)由一個或多個通信端口 882與一個或多個其他計算設備890通過網(wǎng)絡通信進行通信。網(wǎng)絡通信連接是通信介質的一個示例。通信介質典型地可以由調(diào)制數(shù)據(jù)信號(如載波或其他傳輸機制)中的計算機可讀指令、數(shù)據(jù)結構、程序模塊或其他數(shù)據(jù)來體現(xiàn),并可以包括任意信息傳送介質?!罢{(diào)制數(shù)據(jù)信號”可以是通過設置或改變其一個或多個特性而在該信號中實現(xiàn)信息編碼的信號。例如,但并非限制性地,通信介質可以包括有線介質(如有線網(wǎng)絡或直接布線連接)、以及無線介質(例如聲、射頻(RF)、紅外(IR)和其他無線介質)。這里所使用的術語計算機可讀介質可以包括存儲介質和通信介質。計算設備800可以實現(xiàn)為小體積便攜式(或移動)電子設備的一部分,小體積便攜式(或移動)電子設備例如是蜂窩電話、智能電話、個人數(shù)據(jù)助理(PDA)、個人媒體播放設備、無線web瀏覽設備、個人耳機設備、專用設備或包括任意上述功能的混合設備。計算設備800也可以實現(xiàn)為個人計算機,包括膝上型計算機和非膝上型計算機配置,或在工作站或服務器配置中實現(xiàn)。 本公開中對術語“對...做出響應”或“響應于”的引用并不限于對特定特征和/或結構的響應。特征也可以響應于另一特征和/或結構,并且也可以置于該特征和/或結構內(nèi)。此外,當諸如“耦合”或“響應”或“響應于”或“與...通信”等術語或短語在本文中或所附權利要求中使用時,應當在廣義上解釋這些術語。例如,短語“耦合至”可以根據(jù)使用該短語的上下文指通信、電和/或操作耦合。本領域技術人員應認識到,本領域中慣常以上述方式描述設備和/或過程,此后使用工程實踐來將所描述的設備(例如,處理元件、處理核、計算平臺、計算設備等)和/或方法集成到數(shù)據(jù)處理系統(tǒng)中是本領域的常用手段。也即,這里所述的設備和/或方法的至少一部分可以通過合理數(shù)量的試驗而被集成到數(shù)據(jù)處理系統(tǒng)中。本領域技術人員將認識至IJ,典型的數(shù)據(jù)處理系統(tǒng)一般包括以下各項中的一項或多項系統(tǒng)單元外殼;視頻顯示設備;存儲器,如易失性和非易失性存儲器;處理器,如微處理器和數(shù)字信號處理器;計算實體,如操作系統(tǒng)、驅動器、圖形用戶接口、以及應用程序;一個或多個交互設備,如觸摸板或屏幕;和/或控制系統(tǒng),包括反饋環(huán)和控制電機(例如,用于感測位置和/或速度的反饋;用于移動和/或調(diào)節(jié)成分和/或數(shù)量的控制電機)。典型的數(shù)據(jù)處理系統(tǒng)可以利用任意合適的商用部件(如數(shù)據(jù)計算/通信和/或網(wǎng)絡計算/通信系統(tǒng)中常用的部件)予以實現(xiàn)。本公開所述的主題有時說明不同部件或元件包含在不同的其他部件或元件內(nèi)或者不同部件或元件與不同的其他部件或元件相連。應當理解,這樣描述的架構只是示例,事實上可以實現(xiàn)許多能夠實現(xiàn)相同功能的其他架構。在概念上,有效地“關聯(lián)”用以實現(xiàn)相同功能的部件的任意設置,從而實現(xiàn)所需功能。因此,這里組合以實現(xiàn)具體功能的任意兩個部件可以被視為彼此“關聯(lián)”從而實現(xiàn)所需功能,而無論架構或中間部件如何。同樣,任意兩個如此關聯(lián)的部件也可以看作是彼此“可操作地連接”或“可操作地耦合”以實現(xiàn)所需功能,且能夠如此關聯(lián)的任意兩個部件也可以被視為彼此“可操作地耦合”以實現(xiàn)所需功能。能可操作地耦合的具體示例包括但不限于物理上可配對和/或物理上交互的部件,和/或無線交互和/或可無線交互的部件,和/或邏輯交互和/或可邏輯交互的部件。至于本文中任何關于多數(shù)和/或單數(shù)術語的使用,本領域技術人員可以從多數(shù)形式轉換為單數(shù)形式,和/或從單數(shù)形式轉換為多數(shù)形式,以適合具體環(huán)境和應用。為清楚起見,在此明確聲明單數(shù)形式/多數(shù)形式可互換。本領域技術人員應當理解,一般而言,這里所使用的術語,特別是所附權利要求中(例如,在所附權利要求的主體部分中)使用的術語,一般地應理解為“開放”術語(例如,術語“包括”應解釋為“包括但不限于”,術語“具有”應解釋為“至少具有”等)。本領域技術人員還應理解,如果意在所引入的權利要求中標明具體數(shù)目,則這種意圖將在該權利要求中明確指出,而在沒有這種明確標明的情況下,則不存在這種意圖。例如,為幫助理解,所附權利要求可能使用了引導短語“至少一個”和“一個或多個”來引入權利要求中的特征。然而,這種短語的使用不應被解釋為暗示著由不定冠詞引入的權利要求特征將包含該特征的任意特定權利要求限制為僅包含一個該特征的實施例,即便是該權利要求既包括引導短語“一個或多個”或“至少一個”又包括不定冠詞(例如,不定冠詞應當被解釋為意指“至少一個”或“一個或多個”);在使用定冠詞來引入權利要求中的特征時,同樣如此。另外,即使明確指出了所引入權利要求特征的具體數(shù)目,本領域技術人員應認識到,這種列舉應解釋為意指至少是所列數(shù)目(例如,不存在其他修飾語的短語“兩個特征”意指至少兩個該特征,或者兩個或更多該特征)。另外,在使用類似于“A、B和C等中至少一個”這樣的表述的 情況下,一般來說應該按照本領域技術人員通常理解該表述的含義來予以解釋(例如,“具有A、B和C中至少一個的系統(tǒng)”應包括但不限于單獨具有A、單獨具有B、單獨具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系統(tǒng)等)。在使用類似于“A、B或C等中至少一個”這樣的表述的情況下,一般來說應該按照本領域技術人員通常理解該表述的含義來予以解釋(例如,“具有A、B或C中至少一個的系統(tǒng)”應包括但不限于單獨具有A、單獨具有B、單獨具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系統(tǒng)等)。本領域技術人員還應理解,實質上任意表示兩個或更多可選項目的轉折連詞和/或短語,無論是在說明書、權利要求書還是附圖中,都應被理解為給出了包括這些項目之一、這些項目任一方、或兩個項目的可能性。例如,短語“A或B”應當被理解為包括“A”或“B”、或“A和B”的可能性。盡管已經(jīng)在此公開了多個方案和實施例,但是本領域技術人員應當明白其他方案和實施例。這里所公開的多個方案和實施例是出于說明性的目的,而不是限制性的,本公開的真實范圍和精神由所附權利要求表征。
權利要求
1.一種第一處理元件執(zhí)行多線程程序的一個或多個線程的方法,該方法包括 實現(xiàn)與第一處理元件用來執(zhí)行多線程程序的一個或多個線程的同步原語相關聯(lián)的條件加載指令; 確定用于使用同步原語的變量的當前值是否在用于第一處理元件的高速緩存存儲器中; 至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載指令; 至少基于不存在所述當前值向第二處理元件轉發(fā)一致性請求; 至少基于一致性請求從第二處理元件接收所述當前值; 將接收到的所述當前值與所述變量的期望值相比較;以及 至少基于比較結果繼續(xù)阻止條件加載指令。
2.根據(jù)權利要求I所述的方法,其中,繼續(xù)阻止條件加載指令包括扣留來自第一處理元件的所述變量的所述當前值。
3.根據(jù)權利要求I所述的方法,其中,至少基于比較結果繼續(xù)阻止條件加載指令包括至少基于接收到的所述當前值與所述期望值不匹配來繼續(xù)阻止條件加載指令。
4.根據(jù)權利要求I所述的方法,還包括 將第一處理元件轉變到省電模式,其中,省電模式包括以下中的至少一個降低提供給第一處理元件的電壓、降低第一處理元件的頻率、對第一處理元件的時鐘閘控、對第一處理元件的功率閘控、或者進入檢查點狀態(tài)。
5.根據(jù)權利要求I所述的方法,還包括 接收所述變量的更新的當前值; 將接收到的所述更新的當前值與所述期望值相比較;以及 至少基于比較結果來去除對條件加載指令的阻止。
6.根據(jù)權利要求5所述的方法,其中,同步原語包括用于第一處理元件執(zhí)行多線程程序的所述一個或多個線程的第一線程的鎖定同步。
7.根據(jù)權利要求6所述的方法,其中,用于使用同步原語的所述變量包括與第一處理元件用來執(zhí)行第一線程的數(shù)據(jù)相關聯(lián)的鎖定變量,并且去除對條件加載指令的阻止包括將所述更新的當前值存儲在高速緩存存儲器中,以向第一處理元件提供所述更新的當前值,其中第一處理元件嘗試至少基于所述更新的當前值獲得對用來執(zhí)行多線程程序的第一線程的數(shù)據(jù)的鎖定。
8.根據(jù)權利要求5所述的方法,其中,同步原語包括用于第一處理元件執(zhí)行多線程程序的所述一個或多個線程的障柵同步。
9.根據(jù)權利要求8所述的方法,其中,用于使用同步原語的所述變量包括與障柵完成相關聯(lián)的用于執(zhí)行所述一個或多個線程的計數(shù)變量,并且去除對條件加載指令的阻止包括將所述更新的當前值存儲在高速緩存存儲器中,以向第一處理元件提供所述更新的當前值,其中第一處理元件至少基于所述更新的當前值執(zhí)行所述一個或多個線程。
10.根據(jù)權利要求5所述的方法,其中,同步原語包括用于第一處理元件執(zhí)行多線程程序的所述一個或多個線程的信號等待同步。
11.根據(jù)權利要求10所述的方法,其中,用于使用同步原語的所述變量包括與等待指示相關聯(lián)的用于執(zhí)行所述一個或多個線程的標志變量,并且去除對條件加載指令的阻止包括將所述更新的當前值存儲在高速緩存存儲器中,以向第一處理元件提供所述更新的當前值,其中第一處理元件至少基于所述更新的當前值執(zhí)行所述一個或多個線程。
12.根據(jù)權利要求5所述的方法,其中,至少基于比較結果去除對條件加載指令的阻止包括至少基于接收到的所述更新的當前值與期望值匹配來去除阻止。
13.根據(jù)權利要求I所述的方法,其中,轉發(fā)一致性請求包括經(jīng)由與第一處理元件相關聯(lián)的一致性管理器來轉發(fā)一致性請求。
14.根據(jù)權利要求13所述的方法,其中,將接收到的所述當前值與所述期望值相比較包括將所述當前值和所述期望值均記錄在一致性管理器能夠訪問的存儲器中保持的表中。
15.根據(jù)權利要求I所述的方法,其中,第一處理元件和第二處理元件是多核處理器的分開的核。
16.一種便于第一處理元件執(zhí)行多線程程序的一個或多個線程的裝置,第一處理元件實現(xiàn)與第一處理元件用來執(zhí)行第一線程的同步原語相關聯(lián)的條件加載指令,所述裝置包括 一致性管理器,具有邏輯裝置,所述邏輯裝置配置為 確定用于使用同步原語的變量的當前值是否在用于第一處理元件的高速緩存存儲器中; 至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載指令; 至少基于不存在所述當前值向第二處理元件轉發(fā)一致性請求; 至少基于一致性請求從第二處理元件接收所述當前值; 將接收到的所述當前值與所述變量的期望值相比較;以及 至少基于比較結果繼續(xù)阻止條件加載指令。
17.根據(jù)權利要求16所述的裝置,其中,阻止條件加載指令包括還配置為扣留來自第一處理元件的所述變量的所述當前值的邏輯裝置。
18.根據(jù)權利要求16所述的裝置,其中,至少基于比較結果繼續(xù)阻止條件加載指令包括還配置為至少基于接收到的所述當前值與所述期望值不匹配來繼續(xù)阻止條件加載指令的邏輯裝置。
19.根據(jù)權利要求16所述的裝置,其中,轉發(fā)一致性請求包括配置為經(jīng)由與第一處理元件相關聯(lián)的一致性控制器轉發(fā)一致性請求的邏輯裝置。
20.根據(jù)權利要求16所述的裝置,其中,第一處理元件和第二處理元件是多核處理器的分開的核。
21.根據(jù)權利要求16所述的裝置,還包括這樣的邏輯裝置,所述邏輯裝置配置為 接收所述變量的更新的當前值; 將接收到的所述更新的當前值與所述期望值相比較;以及 至少基于比較結果來去除對條件加載指令的阻止。
22.根據(jù)權利要求21所述的裝置,其中,同步原語包括用于第一處理元件執(zhí)行多線程程序的所述一個或多個線程的障柵同步。
23.根據(jù)權利要求22所述的裝置,其中,用于使用同步原語的所述變量包括與障柵完成相關聯(lián)的用于執(zhí)行所述一個或多個線程的計數(shù)變量,并且配置為去除對條件加載指令的阻止的邏輯裝置包括將所述更新的當前值存儲在高速緩存存儲器中以向第一處理元件提供所述更新的當前值的邏輯裝置,其中第一處理元件至少基于所述更新的當前值執(zhí)行所述一個或多個線程。
24.一種執(zhí)行多線程程序的一個或多個線程的系統(tǒng),該系統(tǒng)包括 執(zhí)行多線程程序的第一線程的第一處理元件;以及 執(zhí)行多線程程序的第二線程的第二處理元件,第二處理元件包括高速緩存存儲器和一致性管理器,第二處理元件實現(xiàn)與第二處理元件用來執(zhí)行第二線程的同步原語相關聯(lián)的條件加載指令,其中一致性管理器包括邏輯裝置,所述邏輯裝置配置為 確定用于使用同步原語的變量的當前值是否在第二處理元件的高速緩存存儲器中; 至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載指令; 至少基于不存在所述當前值向第一處理元件轉發(fā)一致性請求; 至少基于一致性請求從第一處理元件接收所述當前值; 將接收到的所述當前值與所述變量的期望值相比較;以及 至少基于比較結果繼續(xù)阻止條件加載指令。
25.根據(jù)權利要求24所述的系統(tǒng),其中,繼續(xù)阻止條件加載指令包括扣留來自第二處理元件的所述變量的所述當前值。
26.根據(jù)權利要求24所述的系統(tǒng),其中,至少基于比較結果阻止條件加載指令包括配置為至少基于接收到的所述當前值與所述期望值不匹配來阻止條件加載指令的邏輯裝置。
27.根據(jù)權利要求24所述的系統(tǒng),還包括這樣的邏輯裝置,該邏輯裝置配置為 將第二處理元件轉變到省電模式,其中,省電模式包括以下中的至少一個降低提供給第二處理元件的電壓、降低第二處理元件的頻率、對第二處理元件的時鐘閘控、對第二處理元件的功率閘控、或者進入檢查點狀態(tài)。
28.根據(jù)權利要求24所述的系統(tǒng),還包括這樣的邏輯裝置,該邏輯裝置配置為 從第一處理元件接收所述變量的所述更新的當前值; 將接收到的所述更新的當前值與所述期望值相比較;以及 至少基于比較結果來去除對條件加載指令的阻止。
29.根據(jù)權利要求28所述的方法,其中,同步原語包括用于第二處理元件執(zhí)行多線程程序的所述一個或多個線程的第一線程的鎖定同步。
30.根據(jù)權利要求29所述的方法,其中,用于使用同步原語的所述變量包括與第二處理元件用來執(zhí)行第一線程的數(shù)據(jù)相關聯(lián)的鎖定變量,并且配置為去除對條件加載指令的阻止的邏輯裝置包括將所述更新的當前值存儲在高速緩存存儲器中以向第二處理元件提供所述更新的當前值的邏輯裝置,其中第二處理元件嘗試至少基于所述更新的當前值獲得對用來執(zhí)行多線程程序的第二線程的數(shù)據(jù)的鎖定。
31.一種計算機程序產(chǎn)品,包括信號承載介質,具有用于處理元件執(zhí)行多線程程序的一個或多個線程的指令,所述指令在由邏輯裝置執(zhí)行時使邏輯裝置進行以下操作 實現(xiàn)與第一處理元件用來執(zhí)行多線程程序的第一線程的同步原語相關聯(lián)的條件加載指令; 確定用于使用同步原語的變量的當前值是否在用于第一處理元件的高速緩存存儲器中; 至少基于高速緩存存儲器中不存在所述當前值來阻止條件加載指令;至少基于不存在所述當前值向第二處理元件轉發(fā)一致性請求; 至少基于一致性請求從第二處理元件接收所述當前值; 將接收到的所述當前值與所述變量的期望值相比較;以及 至少基于比較結果繼續(xù)阻止條件加載指令。
32.根據(jù)權利要求31所述的計算機程序產(chǎn)品,其中,繼續(xù)阻止條件加載指令包括配置為扣留來自第一處理元件的所述變量的所述當前值的邏輯裝置。
33.根據(jù)權利要求31所述的計算機程序產(chǎn)品,其中,至少基于比較結果繼續(xù)阻止條件加載指令包括還配置為至少基于接收到的所述當前值與所述期望值不匹配來阻止條件加載指令的邏輯裝置。
34.根據(jù)權利要求31所述的計算機程序產(chǎn)品,還包括使邏輯裝置執(zhí)行以下操作的指令 接收所述變量的更新的當前值; 將接收到的所述更新的當前值與所述期望值相比較;以及 至少基于比較結果來去除對條件加載指令的阻止。
35.根據(jù)權利要求34所述的計算機程序產(chǎn)品,其中,同步原語包括用于第一處理元件執(zhí)行多線程程序的所述一個或多個線程的信號等待同步。
36.根據(jù)權利要求35所述的計算機程序產(chǎn)品,其中,用于使用同步原語的變量包括與等待指示相關聯(lián)的用于執(zhí)行所述一個或多個線程的標志變量,并且使邏輯裝置去除對條件加載指令的阻止的指令包括將所述更新的當前值存儲在高速緩存存儲器中以向第一處理元件提供所述更新的當前值的邏輯裝置,其中第一處理元件至少基于所述更新的當前值執(zhí)行一個或多個線程。
全文摘要
總體上公開了一個或多個處理元件低功率執(zhí)行多線程程序的一個或多個線程的技術。
文檔編號G06F9/46GK102971708SQ201080067726
公開日2013年3月13日 申請日期2010年10月19日 優(yōu)先權日2010年10月19日
發(fā)明者揚·索利希恩 申請人:英派爾科技開發(fā)有限公司