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

多線程程序的低功率執(zhí)行的制作方法

文檔序號(hào):6352305閱讀:175來源:國知局
專利名稱:多線程程序的低功率執(zhí)行的制作方法
多線程程序的低功率執(zhí)行
背景技術(shù)
除非本文另外指出,否則本節(jié)中描述的手段不是本申請(qǐng)權(quán)利要求的現(xiàn)有技術(shù),并且不應(yīng)因包括在本節(jié)中而承認(rèn)是現(xiàn)有技術(shù)。因?yàn)閷?duì)電池或其他類型便攜式電源的依賴,諸如普適計(jì)算(ubicomp)等一些計(jì)算環(huán)境可以包括需要低能量利用的設(shè)備。在一些實(shí)現(xiàn)方式中,與單核架構(gòu)相比,多核架構(gòu)已經(jīng)顯示出了提供節(jié)約功率和能量的平臺(tái)的能力,并且可以非常適合于ubicomp設(shè)備或其他類型的低功率計(jì)算設(shè)備。此外,ubicomp設(shè)備或其他類型的低功率計(jì)算設(shè)備可以合并執(zhí)行并行或多線程程序的多核架構(gòu),來完成計(jì)算任務(wù)。因此,由于計(jì)算設(shè)備可能依賴于電池或其他類型的便攜式電源,因此允許使用盡可能少的能量來執(zhí)行并行或多線程程序的機(jī)制是重要 的。

發(fā)明內(nèi)容
本公開總體上描述了一種第一處理元件執(zhí)行多線程程序的一個(gè)或多個(gè)線程的實(shí)現(xiàn)方法。根據(jù)至少一些方法,可以實(shí)現(xiàn)條件加載(conditioanl load)。條件加載可以與第一處理元件用來執(zhí)行多線程程序的一個(gè)或多個(gè)線程的同步原語相關(guān)聯(lián)。在一些示例中,可以確定用于使用同步原語的變量的當(dāng)前值是否在用于第一處理元件的高速緩存存儲(chǔ)器中,并且可以至少基于高速緩存存儲(chǔ)器中不存在所述當(dāng)前值來阻止條件加載。此外,可以至少基于不存在所述當(dāng)前值向第二處理元件轉(zhuǎn)發(fā)一致性請(qǐng)求(coherence request)。然后可以至少基于一致性請(qǐng)求從第二處理元件接收所述當(dāng)前值。然后可以將接收到的所述當(dāng)前值與變量的期望值相比較,并且可以至少基于比較結(jié)果繼續(xù)阻止條件加載指令。本公開還總體上描述了便于第一處理元件執(zhí)行多線程程序的一個(gè)或多個(gè)線程的示例設(shè)備。第一處理元件可以實(shí)現(xiàn)與第一處理元件用來執(zhí)行第一線程的同步原語相關(guān)聯(lián)的條件加載指令。示例設(shè)備可以包括具有邏輯裝置的一致性管理器。在一些示例中,該邏輯裝置可以配置為確定用于使用同步原語的變量的當(dāng)前值是否在用于第一處理元件的高速緩存存儲(chǔ)器中,并且可以至少基于高速緩存存儲(chǔ)器中不存在所述當(dāng)前值來阻止條件加載。同樣,邏輯裝置可以被配置為至少基于不存在所述當(dāng)前值向第二處理元件轉(zhuǎn)發(fā)一致性請(qǐng)求。然后可以至少基于一致性請(qǐng)求從第二處理元件接收所述當(dāng)前值。然后可以將接收到的所述變量的膳食當(dāng)前值與所述變量的期望值相比較,并且可以至少基于比較結(jié)果繼續(xù)阻止條件加載指令。本公開還總體上描述了執(zhí)行多線程程序的一個(gè)或多個(gè)線程的示例系統(tǒng)。示例系統(tǒng)可以包括執(zhí)行多線程程序的第一線程的第一處理元件。示例系統(tǒng)還可以包括執(zhí)行多線程程序的第二線程的第二處理元件。第二處理元件可以實(shí)現(xiàn)與第二處理元件用來執(zhí)行第二線程的同步原語相關(guān)聯(lián)的條件加載指令。在一些示例中,第二處理元件可以包括一致性管理器。一致性管理器可以具有邏輯裝置,該邏輯裝置配置為確定用于使用同步原語的變量的當(dāng)前值是否在第二處理元件的高速緩存存儲(chǔ)器中,并且可以至少基于高速緩存存儲(chǔ)器中不存在所述當(dāng)前值來阻止條件加載。此外,邏輯裝置可以被配置為至少基于不存在所述當(dāng)前值向第一處理元件轉(zhuǎn)發(fā)一致性請(qǐng)求。邏輯裝置還可以配置為至少基于一致性請(qǐng)求從第一處理元件接收所述當(dāng)前值,然后將接收到的所述當(dāng)前值與所述變量的期望值相比較。邏輯裝置還可以配置為能夠至少基于比較結(jié)果繼續(xù)阻止條件加載指令。本公開還總體上描述了示例計(jì)算機(jī)程序產(chǎn)品。在一些示例中,計(jì)算機(jī)程序產(chǎn)品可以包括信號(hào)承載介質(zhì),具有用于處理元件執(zhí)行多線程程序的一個(gè)或多個(gè)線程的指令。指令在由邏輯裝置執(zhí)行時(shí)使邏輯裝置實(shí)現(xiàn)與用于執(zhí)行多線程程序的第一線程的同步原語相關(guān)聯(lián)的條件加載指令。指令還可以使邏輯裝置確定用于使用同步原語的變量的當(dāng)前值是否在用于第一處理元件的高速緩存存儲(chǔ)器中,并且可以至少基于高速緩存存儲(chǔ)器中不存在所述當(dāng)前值來阻止條件加載。同樣,指令可以使邏輯裝置至少基于不存在所述當(dāng)前值向第二處理元件轉(zhuǎn)發(fā)一致性請(qǐng)求??梢灾辽倩谝恢滦哉?qǐng)求從第二處理元件接收鎖定變量的當(dāng)前值。指令還可以使邏輯裝置將接收到的所述變量的所述當(dāng)前值與所述變量的期望值相比較,并且可以至少基于比較結(jié)果繼續(xù)阻止條件加載指令。
·
以上發(fā)明內(nèi)容僅僅是說明性的,而絕不是限制性的。除了上述示例性的各方案、各實(shí)施例和各特征之外,參照附圖和以下詳細(xì)說明,將清楚其他方案、其他實(shí)施例和其他特征。


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