專(zhuān)利名稱(chēng):具有被動(dòng)線程和活動(dòng)信標(biāo)的處理架構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于多線程處理的技術(shù)和架構(gòu),尤其涉及將被動(dòng)線程和活動(dòng)信標(biāo)用于多線程處理的技術(shù)和架構(gòu)。
背景技術(shù):
“信標(biāo)”(也稱(chēng)作“關(guān)鍵段”或“互斥體”)是硬件和軟件構(gòu)成,它允許其中多個(gè)進(jìn)程競(jìng)爭(zhēng)共享資源(例如,存儲(chǔ)器,文件)的操作的協(xié)調(diào)或同步。一般,信標(biāo)是存儲(chǔ)在進(jìn)程可以檢查和改變的操作系統(tǒng)存儲(chǔ)器的指定位置中的值。根據(jù)信標(biāo)的值,進(jìn)程可以訪問(wèn)共享資源或者等待一段時(shí)間并再次檢查該信標(biāo)。
常規(guī)計(jì)算機(jī)系統(tǒng)中的信標(biāo)通??捎迷印皽y(cè)試和設(shè)定”或類(lèi)似類(lèi)型的指令(例如,鎖定、位測(cè)試和設(shè)定、位測(cè)試和重設(shè))的硬件支持實(shí)現(xiàn)為軟件例程。使用該信標(biāo)實(shí)現(xiàn),可以通過(guò)共享(例如全局)數(shù)據(jù)和一個(gè)或多個(gè)信標(biāo)來(lái)建立制造者-消費(fèi)者通信關(guān)系。信標(biāo)允許正嘗試更改數(shù)據(jù)的多個(gè)進(jìn)程中的選定一個(gè)更改共享數(shù)據(jù),這提供了數(shù)據(jù)一致性。
該信標(biāo)構(gòu)成是“被動(dòng)的”,因?yàn)槎鄠€(gè)線程必須執(zhí)行輪詢操作以獲得一信標(biāo)。輪詢要求消耗否則可用于其它用途的處理器和系統(tǒng)資源。因此,傳統(tǒng)的信標(biāo)會(huì)導(dǎo)致無(wú)效率。
借助示例而非限制地說(shuō)明本發(fā)明,附圖中相同的標(biāo)號(hào)表示相似的元件。
圖1是整體多線程處理器架構(gòu)的一個(gè)實(shí)施例的框圖。
圖2是基于鏈接列表的信標(biāo)結(jié)構(gòu)的一個(gè)實(shí)施例的概念框圖。
圖3是用于獲得活動(dòng)信標(biāo)的一項(xiàng)技術(shù)的一個(gè)實(shí)施例的事件流程圖。
圖4是用于釋放活動(dòng)信標(biāo)的一項(xiàng)技術(shù)的一個(gè)實(shí)施例的流程圖。
具體實(shí)施例方式
將描述與被動(dòng)線程一起使用的活動(dòng)信標(biāo)。在以下描述中,為說(shuō)明目的,闡述了大量特定細(xì)節(jié)以提供本發(fā)明的透徹理解。但顯然,本領(lǐng)域的熟練技術(shù)人員可在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)施本發(fā)明。在其它實(shí)例中,按框圖形式示出結(jié)構(gòu)和裝置以避免模糊本發(fā)明。
活動(dòng)信標(biāo)的示例使用的概述這里描述的是其中指令的多個(gè)并行被動(dòng)線程(以下稱(chēng)作“線程”)用“活動(dòng)”信標(biāo)協(xié)調(diào)對(duì)共享資源的訪問(wèn)的一架構(gòu)和相關(guān)方法。將信標(biāo)稱(chēng)作是活動(dòng)的,是因?yàn)樾艠?biāo)實(shí)體發(fā)送消息給執(zhí)行和/或控制電路以引起線程狀態(tài)改變。例如,可響應(yīng)于可由信標(biāo)表示的未決相關(guān)性通過(guò)線程調(diào)度器將線程置于休眠(或不活動(dòng))模式。使用與該相關(guān)性相對(duì)應(yīng)的線程狀態(tài)變量來(lái)表示該線程處于休眠模式。
當(dāng)解決相關(guān)性時(shí),將一消息傳遞到控制電路(例如,線程調(diào)度器),使得該相關(guān)性變量被清除。響應(yīng)于被清除的相關(guān)性變量,將線程置于活動(dòng)(或喚醒)狀態(tài)。執(zhí)行可在活動(dòng)狀態(tài)中的線程上進(jìn)行。
繼續(xù)以上示例,如果線程嘗試獲得一信標(biāo)而不能,則將該線程置于不活動(dòng)狀態(tài)。因?yàn)榫€程是不活動(dòng)的,所以它不能輪詢信標(biāo)以確定信標(biāo)所指示的相關(guān)性何時(shí)被解決,如現(xiàn)有技術(shù)中所需要的那樣。在(例如從信標(biāo)實(shí)體)接收到指示已解決相關(guān)性的消息前該線程保持不活動(dòng)狀態(tài)。響應(yīng)于該消息,將線程置于活動(dòng)狀態(tài),這允許執(zhí)行繼續(xù)進(jìn)行。
圖1是整體多線程處理器架構(gòu)的一個(gè)實(shí)施例的框圖。如這里所使用的,標(biāo)簽“整體多線程”架構(gòu)表示包括可支持多線程執(zhí)行的多個(gè)處理器的架構(gòu)。在一個(gè)實(shí)施例中,每個(gè)處理器可以支持一個(gè)或多個(gè)線程。單個(gè)處理器上的多線程通過(guò)允許在其它線程處于不活動(dòng)狀態(tài)時(shí)執(zhí)行活動(dòng)線程而實(shí)現(xiàn)了較高的執(zhí)行效率。等待信標(biāo)的處于不活動(dòng)狀態(tài)中的線程不消耗/浪費(fèi)處理器資源。盡管是關(guān)于整體多線程架構(gòu)的描述,但信標(biāo)構(gòu)成和相關(guān)方法可應(yīng)用于任何多線程架構(gòu),而不管所支持的線程數(shù)。
整體多線程系統(tǒng)100包括存儲(chǔ)器分層結(jié)構(gòu)110,它存儲(chǔ)數(shù)據(jù)和指令以便在執(zhí)行期間由一個(gè)或多個(gè)處理核心使用。存儲(chǔ)器分層結(jié)構(gòu)110可以按任何本領(lǐng)域已知的方式包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、一級(jí)或多級(jí)指令高速緩存、一級(jí)或多級(jí)數(shù)據(jù)高速緩存、和/或一級(jí)或多級(jí)共享指令和數(shù)據(jù)高速緩存。線程分配器120與存儲(chǔ)器分層結(jié)構(gòu)110耦合,接收與新線程相關(guān)聯(lián)的信息,諸如指令指針和數(shù)據(jù)和/或數(shù)據(jù)指針。線程分配器120也經(jīng)由消息總線125與處理核心耦合。在一個(gè)實(shí)施例中,線程分配器120負(fù)責(zé)管理處理核心的線程資源。在接收到新的未決線程時(shí),線程分配器120選擇具有所述資源的一個(gè)處理核心來(lái)執(zhí)行該未決線程并將該線程分配到選定的處理核心上。在完成處理核心上的現(xiàn)有線程后,通知線程分配器120,從而使得處理核心上的線程資源可用于將來(lái)的未決線程。
系統(tǒng)100示出具有多個(gè)處理器核心(130、131、139、150、151和159),它們每一個(gè)都包括具有相關(guān)控制電路的執(zhí)行電路。處理器核心可以是一樣的,或者處理器核心可具有不同的功能性。任意數(shù)量的處理器核心可包含于系統(tǒng)100內(nèi)。在一個(gè)實(shí)施例中,處理器核心按行配置,每一行都具有一個(gè)行控制器。例如,行控制器140可經(jīng)由行控制總線145與處理器核心130、131和139耦合。類(lèi)似地,行控制器160可經(jīng)由行控制總線165與處理器核心150、151和159耦合。
處理器核心還經(jīng)由消息總線125與信標(biāo)實(shí)體170耦合。信標(biāo)實(shí)體170包括存儲(chǔ)器和控制邏輯以提供這里所述的信標(biāo)功能。在一個(gè)實(shí)施例中,信標(biāo)實(shí)體170通過(guò)發(fā)送和接收消息而與處理器核心交互,如以下更詳細(xì)地描述的。
線程分配器120也經(jīng)由消息總線125與信標(biāo)實(shí)體170耦合。在一個(gè)實(shí)施例中,線程分配器代表一線程通過(guò)發(fā)送和接收消息而與信標(biāo)實(shí)體170交互,如以下更詳細(xì)地描述的。
每個(gè)處理器核心中的控制電路可包含線程調(diào)度電路,用于管理同一處理核心上執(zhí)行的多個(gè)線程的狀態(tài),并且還可包含指令調(diào)度電路,用于執(zhí)行指令的活動(dòng)線程。在指令執(zhí)行期間,一個(gè)或多個(gè)處理核心將嘗試訪問(wèn)共享的系統(tǒng)資源。為獲得共享系統(tǒng)資源的控制,一線程必須通過(guò)相應(yīng)的執(zhí)行核心獲得與要訪問(wèn)的共享系統(tǒng)資源相對(duì)應(yīng)的信標(biāo)的控制。
在一個(gè)實(shí)施例中,為獲得信標(biāo)的控制,請(qǐng)求處理核心在消息總線125上將一信標(biāo)請(qǐng)求消息發(fā)送給信標(biāo)實(shí)體170。在發(fā)送該信標(biāo)請(qǐng)求消息后,將請(qǐng)求線程置于不活動(dòng)狀態(tài),其中執(zhí)行和相關(guān)操作(例如,信標(biāo)的輪詢)停止。
響應(yīng)于接收到信標(biāo)請(qǐng)求消息,信標(biāo)實(shí)體170確定是否將信標(biāo)的控制授予請(qǐng)求線程。當(dāng)授予信標(biāo)時(shí),信標(biāo)實(shí)體170發(fā)送一信標(biāo)確認(rèn)消息給請(qǐng)求線程。響應(yīng)于該信標(biāo)確認(rèn)消息,請(qǐng)求線程恢復(fù)到活動(dòng)狀態(tài),其中使用被請(qǐng)求資源的執(zhí)行可以繼續(xù)。當(dāng)線程完成了共享資源的使用時(shí),線程發(fā)送一釋放信標(biāo)消息給信標(biāo)實(shí)體170。響應(yīng)于該釋放信標(biāo)消息,信標(biāo)實(shí)體170釋放該信標(biāo)并允許其它線程獲得對(duì)該系統(tǒng)資源的訪問(wèn)。
在一個(gè)實(shí)施例中,信標(biāo)由處理器核心執(zhí)行的指令(信標(biāo)指令)以及在例如消息總線125上處理器核心和信標(biāo)實(shí)體之間傳遞的消息(信標(biāo)消息)支持。在可選實(shí)施例中,可以支持不同和/或附加的消息或指令。
基于鏈接列表的信標(biāo)實(shí)體圖2是基于鏈接列表的信標(biāo)結(jié)構(gòu)的一個(gè)實(shí)施例的概念框圖。在一個(gè)實(shí)施例中,傳統(tǒng)的按信標(biāo)隊(duì)列由緩沖池代替,該緩沖池具有用于為每個(gè)信標(biāo)形成鏈接列表的條目。因此,每個(gè)信標(biāo)可以是指向由緩沖池中的條目形成的鏈接列表的首部指針。該鏈接列表可以是雙向鏈接列表或單向鏈接列表。
在一個(gè)實(shí)施例中,信標(biāo)表200包括所支持的每個(gè)信標(biāo)(例如,信標(biāo)條目201和202)的指針。在一個(gè)實(shí)施例中,信標(biāo)表200中的指針是指示要用于相應(yīng)信標(biāo)的鏈接列表的首部的首部指針。在一個(gè)實(shí)施例中,空閑池指針220指示緩沖池210的首部,且未使用的信標(biāo)條目包括NULL指針。
在一個(gè)實(shí)施例中,每個(gè)信標(biāo)條目(例如,211、212、213、214、215、216)包括釋放狀態(tài)字段、確認(rèn)-抑制字段、線程標(biāo)識(shí)符字段、前一指針和下一指針。在可選實(shí)施例中,可以使用其它和/或不同的字段,例如可省去前一指針。在一個(gè)實(shí)施例中,每個(gè)信標(biāo)也可包括單個(gè)位(或其它指示符)以指示與該信標(biāo)相對(duì)應(yīng)的鏈接列表是否是空的。
在圖2的示例中,空閑池指針220指向緩沖池中空閑條目的首部,且每個(gè)空閑條目都包括指向后續(xù)空閑條目的指針,例如,首部空閑條目216包括指向空閑條目215的指針。信標(biāo)類(lèi)似地具有相關(guān)鏈接列表。例如,信標(biāo)表200中的條目201和202對(duì)應(yīng)于活動(dòng)信標(biāo)。條目201包括指向作為信標(biāo)鏈接列表中的首部條目的條目211的指針,并包括指向作為鏈接列表中的后續(xù)條目的條目212的指針。類(lèi)似地,條目202包括指向作為信標(biāo)鏈接列表中的首部條目的條目213的指針,并包括指向作為鏈接列表中的后續(xù)條目的條目214的指針。
信標(biāo)消息獲得信標(biāo)消息(ACQ_MSG)用于一線程,或者代表一線程的線程分配器,以向信標(biāo)實(shí)體請(qǐng)求一信標(biāo)的所有權(quán)。在一個(gè)實(shí)施例中,ACQ_MSG包含信標(biāo)標(biāo)識(shí)符字段、線程標(biāo)識(shí)符字段、“自動(dòng)釋放”字段和“確認(rèn)-抑制”(確認(rèn)-抑制)字段。自動(dòng)釋放字段用于僅具有首部相關(guān)性的線程。即,該線程取決于前一線程,但無(wú)后續(xù)線程取決于該線程。確認(rèn)-抑制字段用于僅具有尾部相關(guān)性的線程。即該線程不取決于任何先前的線程,但該線程具有取決于它的后續(xù)線程。ACQ_MSG可由線程分配器或與該線程相關(guān)聯(lián)的其它控制電路發(fā)出。
在一個(gè)實(shí)施例中,在接收到ACQ_MSG時(shí),通過(guò)將首部條目從空閑池列表中去除并將其添加到選定信標(biāo)的尾部,信標(biāo)實(shí)體將請(qǐng)求線程的信標(biāo)條目入隊(duì)到目標(biāo)信標(biāo)的鏈接列表(由信標(biāo)標(biāo)識(shí)符字段指定)中。根據(jù)ACQ_MSG中的信息更新信標(biāo)實(shí)體的字段線程標(biāo)識(shí)符字段、釋放狀態(tài)字段和確認(rèn)-抑制字段由ACQ_MSG中的請(qǐng)求者的線程標(biāo)識(shí)符、自動(dòng)釋放字段和確認(rèn)-抑制字段代替。如果ACQ_MSG之前信標(biāo)鏈接列表非空,則信標(biāo)實(shí)體不發(fā)送消息。否則,如果在接收到ACQ_MSG之前信標(biāo)鏈接列表是空的,則進(jìn)行以下步驟之一。
如果確認(rèn)-抑制字段未被設(shè)定,則具有線程標(biāo)識(shí)符的ACK_MSG在消息總線125上從信標(biāo)實(shí)體發(fā)送到請(qǐng)求線程。如果確認(rèn)-抑制字段被設(shè)定,則不從信標(biāo)實(shí)體發(fā)送ACK_MSG。如果自動(dòng)釋放字段未被設(shè)定,則在信標(biāo)鏈接列表中保留剛?cè)腙?duì)的信標(biāo)條目。因此,信標(biāo)鏈接列表非空且信標(biāo)當(dāng)前由線程所有。如果自動(dòng)釋放字段被設(shè)定,則從信標(biāo)鏈接列表中去除剛?cè)腙?duì)的信標(biāo)條目,因此信標(biāo)鏈接列表是空的。
釋放信標(biāo)消息(REL_MSG)用于一線程以向信標(biāo)實(shí)體請(qǐng)求釋放一信標(biāo)的所有權(quán)。在一個(gè)實(shí)施例中,REL_MSG包括信標(biāo)標(biāo)識(shí)符字段和線程標(biāo)識(shí)符字段。在一個(gè)實(shí)施例中,REL_MSG僅可由與擁有信標(biāo)所有權(quán)的線程相關(guān)聯(lián)的控制電路發(fā)出,即線程標(biāo)識(shí)符位于信標(biāo)鏈接列表的頂部。在接收到REL_MSG后,信標(biāo)實(shí)體從信標(biāo)鏈接列表的首部中去除該條目。
在另一實(shí)施例中,REL_MSG可由與共享該信標(biāo)的任何線程相關(guān)聯(lián)的控制電路發(fā)出。在接收到REL_MSG時(shí),信標(biāo)實(shí)體復(fù)位釋放狀態(tài)字段到信標(biāo)鏈接列表中的相應(yīng)條目,而不管鏈接列表中條目的位置。如果信標(biāo)條目位于鏈接列表的首部,則從信標(biāo)鏈接列表的首部中去除該條目。隨后,下一個(gè)條目變成鏈接列表的首部。如果下一個(gè)條目不是NULL,則它將被檢查。如果鏈接列表的新首部設(shè)置了釋放狀態(tài)字段,則再次將它從信標(biāo)鏈接列表的首部中去除。
在一個(gè)實(shí)施例中,在鏈接列表首部為NULL(信標(biāo)隊(duì)列是空的)或者鏈接列表的首部未設(shè)置釋放狀態(tài)字段(等待信標(biāo)從與條目相對(duì)應(yīng)的線程釋放)之前,繼續(xù)該遞歸過(guò)程。如果鏈接列表的首部不是NULL且未設(shè)置確認(rèn)-抑制字段,則信標(biāo)實(shí)體將ACK_MSG發(fā)送給由條目的線程標(biāo)識(shí)符字段所標(biāo)識(shí)的線程。如果鏈接列表的首部不是NULL并且設(shè)定了確認(rèn)-抑制字段,則不發(fā)送ACK_MSG。
信標(biāo)確認(rèn)消息(ACK_MSG)由信標(biāo)實(shí)體生成以通知線程所請(qǐng)求的信標(biāo)已獲得。在一個(gè)實(shí)施例中,ACK_MSG包括信標(biāo)標(biāo)識(shí)符字段和線程標(biāo)識(shí)符字段。ACK_MSG僅由信標(biāo)實(shí)體發(fā)出并由執(zhí)行線程標(biāo)識(shí)符字段所標(biāo)識(shí)的線程的處理核心接收。
在接收到ACK_MSG后,接收處理核心復(fù)位由線程標(biāo)識(shí)符字段所標(biāo)識(shí)的線程的等待-信標(biāo)狀態(tài)字段。如果該線程處于不活動(dòng)狀態(tài),則將線程狀態(tài)變成活動(dòng)狀態(tài)。
信標(biāo)指令獲得信標(biāo)(ACS)指令使得ACQ_MSG消息與所請(qǐng)求信標(biāo)的信標(biāo)標(biāo)識(shí)符、請(qǐng)求線程的線程標(biāo)識(shí)符一起被發(fā)送到信標(biāo)實(shí)體,其中自動(dòng)釋放字段未被設(shè)定。將線程置于不活動(dòng)狀態(tài),其中設(shè)定了等待-信標(biāo)狀態(tài)字段。ACS指令與釋放信標(biāo)(RLS)指令(以下描述)配對(duì)(RLS指令跟在后面)。例如,可使用用于關(guān)鍵段應(yīng)用的ACS-RLS指令對(duì)。
具有自動(dòng)釋放指令(ASR)的獲得信標(biāo)使得ACQ_MSG與所請(qǐng)求信標(biāo)的信標(biāo)標(biāo)識(shí)符、請(qǐng)求線程的線程標(biāo)識(shí)符一起被發(fā)送到信標(biāo)實(shí)體,其中設(shè)定了自動(dòng)釋放字段。將該線程置于不活動(dòng)狀態(tài),其中設(shè)定了等待-信標(biāo)狀態(tài)字段。在一個(gè)實(shí)施例中,ASR指令不能與RLS指令配對(duì)。在一個(gè)實(shí)施例中,ASR指令被用于僅具有首部相關(guān)性的線程。
等待信標(biāo)(WTS)指令使得等待-信標(biāo)線程狀態(tài)字段被檢查。如果狀態(tài)字段被設(shè)定,則將該線程置于不活動(dòng)狀態(tài)。如果狀態(tài)字段未被設(shè)定,則該線程保持于活動(dòng)狀態(tài)。不響應(yīng)于WTS指令將消息發(fā)送給信標(biāo)實(shí)體。WTS指令的使用意味著先前由線程分配器使用ACQ_MSG代表該線程在線程分批時(shí)間獲得信標(biāo)。如果在線程分配器先前發(fā)出的ACQ_MSG中設(shè)定了確認(rèn)-抑制字段,則不使用該WTS指令。
釋放信標(biāo)(RLS)指令使得REL_MSG與所釋放的信標(biāo)的信標(biāo)標(biāo)識(shí)符和釋放線程的線程標(biāo)識(shí)符一起被發(fā)送給信標(biāo)實(shí)體。釋放線程保持于活動(dòng)狀態(tài)。如果先前已發(fā)出用于釋放線程的ACS指令,則僅發(fā)出一個(gè)RLS指令。如果先前已發(fā)出用于釋放線程的ASR指令,則不發(fā)出RLS指令。如果已發(fā)出用于釋放線程的WTS指令,則根據(jù)由線程分配器發(fā)送的ACQ_MSG的自動(dòng)釋放字段,WTS指令之后可以緊接或不緊接RLS指令。如果未設(shè)定自動(dòng)釋放字段,則不應(yīng)發(fā)出RLS指令。如果設(shè)定了自動(dòng)釋放字段,則RLS指令應(yīng)緊接WTS指令。
活動(dòng)信標(biāo)的示例獲取圖3是用于獲取活動(dòng)信標(biāo)的技術(shù)的一個(gè)實(shí)施例的事件流程圖。圖3的示例具備對(duì)特定指令、消息、處理組件和數(shù)據(jù)結(jié)構(gòu)的引用。但是,獲取活動(dòng)信標(biāo)也可以用其它指令、消息、處理組件和/或數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。
當(dāng)指令的線程由一處理核心執(zhí)行時(shí),在資源可用時(shí)執(zhí)行這些指令。當(dāng)需要具有一信標(biāo)的一資源時(shí),例如共亨存儲(chǔ)器位置,會(huì)需要信標(biāo)的所有權(quán)來(lái)訪問(wèn)該資源。因此,在需要信標(biāo)(310)前,按任何本領(lǐng)域已知的方式實(shí)現(xiàn)指令線程的執(zhí)行。
在一個(gè)實(shí)施例中,當(dāng)需要信標(biāo)時(shí)(310),執(zhí)行獲取信標(biāo)(ACS)指令(320)。ACS指令可由執(zhí)行請(qǐng)求該信標(biāo)的指令線程的處理核心執(zhí)行。作為ACS指令執(zhí)行的一部分或響應(yīng)該執(zhí)行,獲取信標(biāo)消息(ACQ_MSG)由執(zhí)行該線程的處理核心通過(guò)消息總線發(fā)送給信標(biāo)實(shí)體(330)。以上描述了ACQ_MSG的一種格式。也可以使用其它格式。
作為ACS指令執(zhí)行的一部分或響應(yīng)該執(zhí)行,請(qǐng)求信標(biāo)的線程被置于不活動(dòng)狀態(tài),其中設(shè)定了等待-信標(biāo)狀態(tài)字段(340)。通過(guò)將該線程置于不活動(dòng)狀態(tài),不執(zhí)行線程中的指令,它包括在初始信標(biāo)請(qǐng)求被拒絕的情況下所請(qǐng)求信標(biāo)的輪詢。通過(guò)將線程置于不活動(dòng)狀態(tài),等待信標(biāo)的線程不消耗處理器資源和系統(tǒng)帶寬。對(duì)于支持多線程的處理核心,處理器資源和系統(tǒng)帶寬可由其它活動(dòng)線程使用。
信標(biāo)實(shí)體接收ACQ_MSG并將請(qǐng)求者信息條目置于目標(biāo)信標(biāo)的鏈接列表中(350)。如果該信標(biāo)不由另一線程所有或控制,則由于沒(méi)有其它的條目,該信標(biāo)條目被置于信標(biāo)鏈接列表的首部。如果該信標(biāo)由另一線程所有或控制,則將該信標(biāo)條目置于信標(biāo)鏈接列表的尾部。在一個(gè)實(shí)施例中,通過(guò)將緩沖池中的鏈接列表?xiàng)l目從首部條目移動(dòng)到尾部條目來(lái)標(biāo)識(shí)鏈接列表的尾部,并且新條目變成新的尾部條目。在另一實(shí)施例中,鏈接列表的尾部由信標(biāo)表中所存儲(chǔ)的鏈接列表的尾部指針直接標(biāo)識(shí)。
當(dāng)線程完成了與該信標(biāo)相對(duì)應(yīng)的資源的使用時(shí),擁有該信標(biāo)的線程釋放該信標(biāo)的控制,這將在以下更詳細(xì)地描述。在釋放信標(biāo)時(shí),信標(biāo)鏈接列表的首部處的相應(yīng)信標(biāo)條目被移除,且鏈接列表中的后續(xù)信標(biāo)條目變成鏈接列表的首部。
當(dāng)一信標(biāo)條目變成信標(biāo)鏈接列表的首部時(shí),其狀態(tài)字段由信標(biāo)實(shí)體檢查。如果確認(rèn)-抑制字段未被設(shè)定,則從該信標(biāo)實(shí)體向與該信標(biāo)條目相關(guān)聯(lián)的線程發(fā)送一確認(rèn)消息(ACK_MSG)(360)。以上描述了用于ACK_MSG的一種格式。也可以使用其它格式。ACK_MSG向接收實(shí)體(例如,一線程)指示接收實(shí)體已被準(zhǔn)許控制相應(yīng)信標(biāo)。
響應(yīng)于ACK_MSG,激活相應(yīng)的線程(370)。當(dāng)被激活時(shí),線程中指令的處理再繼續(xù)并可以訪問(wèn)與該信標(biāo)相對(duì)應(yīng)的共享資源(380)。當(dāng)該線程已完成對(duì)共享資源的訪問(wèn)時(shí),釋放該信標(biāo),這將在以下更詳細(xì)地描述。
活動(dòng)信標(biāo)的釋放示例圖4是用于釋放活動(dòng)信標(biāo)的技術(shù)的一個(gè)實(shí)施例的流程圖。如同圖3的示例,圖4的示例具備了對(duì)特定指令、消息、處理組件和數(shù)據(jù)結(jié)構(gòu)的引用。然而,活動(dòng)信標(biāo)的釋放也可以用其它指令、消息、處理組件和/或數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。
在一個(gè)實(shí)施例中,當(dāng)執(zhí)行釋放信標(biāo)(RLS)指令時(shí)釋放一信標(biāo)(410)。RLS指令可由執(zhí)行請(qǐng)求該信標(biāo)的指令線程的處理核心執(zhí)行。作為RLS指令的執(zhí)行的一部分或響應(yīng)于該執(zhí)行,將釋放信標(biāo)消息(REL_MSG)發(fā)送給信標(biāo)實(shí)體(420)。以上描述了REL_MSG的一種格式。也可以使用其它格式。
響應(yīng)于該REL_MSG,信標(biāo)實(shí)體使REL_MSG的線程標(biāo)識(shí)符字段與信標(biāo)鏈接列表相匹配。信標(biāo)實(shí)體檢查相應(yīng)的信標(biāo)條目是否處于鏈接列表的首部(422)。如果相應(yīng)的信標(biāo)條目位于鏈接列表的首部,則信標(biāo)實(shí)體從鏈接列表的首部中移除該線程條目(430)。鏈接列表中的后續(xù)條目變成首部條目(440)。隨后,該信標(biāo)可被授予與新首部條目相對(duì)應(yīng)的線程。如果相應(yīng)的信標(biāo)條目不在鏈接列表的首部,則信標(biāo)實(shí)體設(shè)定信標(biāo)條目的釋放狀態(tài)字段(424)。
結(jié)論說(shuō)明書(shū)中對(duì)“一個(gè)實(shí)施例”或“一實(shí)施例”的引用表示結(jié)合該實(shí)施例描述的特殊部件、結(jié)構(gòu)或特征包含在本發(fā)明的至少一個(gè)實(shí)施例中。說(shuō)明書(shū)中各處短語(yǔ)“在一個(gè)實(shí)施例中”的出現(xiàn)不必都涉及同一實(shí)施例。
在以上說(shuō)明書(shū)中,已參考其特定實(shí)施例描述了本發(fā)明,但顯然,可對(duì)其進(jìn)行各種修改和變化而不背離本發(fā)明的較寬精神和范圍。因此,說(shuō)明書(shū)和附圖被認(rèn)為是說(shuō)明性而非限制性的。
權(quán)利要求
1.一種方法,包括響應(yīng)于一組預(yù)定條件中的至少一個(gè)的檢測(cè),將指令的可執(zhí)行線程置于不活動(dòng)狀態(tài);從一信標(biāo)將一消息發(fā)送給控制電路以執(zhí)行所述指令的線程,以從所述不活動(dòng)狀態(tài)改變所述指令的線程的狀態(tài)。
2.如權(quán)利要求1所述的方法,其特征在于,從所述不活動(dòng)狀態(tài)改變所述指令的線程的狀態(tài)包括將所述指令的線程的狀態(tài)變成活動(dòng)狀態(tài)。
3.如權(quán)利要求2所述的方法,其特征在于,還包括當(dāng)處于活動(dòng)狀態(tài)時(shí)執(zhí)行所述指令的線程。
4.如權(quán)利要求1所述的方法,其特征在于,所述一組預(yù)定條件包括未決相關(guān)性。
5.如權(quán)利要求1所述的方法,其特征在于,所述一組預(yù)定條件包括來(lái)自所述信標(biāo)的響應(yīng),指示與所述信標(biāo)相對(duì)應(yīng)的資源是不可用的。
6.如權(quán)利要求1所述的方法,其特征在于,還包括維持指令的多個(gè)可執(zhí)行線程中每一個(gè)的狀態(tài)指示。
7.如權(quán)利要求6所述的方法,其特征在于,所述每個(gè)線程的狀態(tài)指示包括相關(guān)線程的與可能存在的相關(guān)性相對(duì)應(yīng)的狀態(tài)變量。
8.一種裝置,包括執(zhí)行裝置,用于響應(yīng)于一組預(yù)定條件中的至少一個(gè)的檢測(cè)將指令的可執(zhí)行線程置于不活動(dòng)狀態(tài);通信裝置,與所述執(zhí)行裝置通信耦合,用于從一信標(biāo)將一消息發(fā)送給控制電路以執(zhí)行所述指令的線程,以從所述不活動(dòng)狀態(tài)改變所述指令的線程的狀態(tài)。
9.如權(quán)利要求8所述的裝置,其特征在于,還包括用于維持指令的多個(gè)可執(zhí)行線程中每一個(gè)的狀態(tài)指示的裝置。
10.如權(quán)利要求9所述的裝置,其特征在于,每個(gè)線程的狀態(tài)的指示包括相關(guān)線程的與可能存在的相關(guān)性相對(duì)應(yīng)的狀態(tài)變量。
11.一種裝置,包括用于接收并執(zhí)行指令的線程的執(zhí)行電路,其中所述執(zhí)行電路發(fā)送信標(biāo)請(qǐng)求消息并響應(yīng)于請(qǐng)求具有相關(guān)信標(biāo)的資源的指令線程將所述線程置于不活動(dòng)狀態(tài);以及與所述執(zhí)行電路耦合的信標(biāo)實(shí)體,用以從所述執(zhí)行電路接收所述信標(biāo)請(qǐng)求消息,并響應(yīng)于所述信標(biāo)請(qǐng)求消息通過(guò)將一信標(biāo)確認(rèn)消息發(fā)送到所述執(zhí)行電路而選擇性地準(zhǔn)許所述信標(biāo)的控制,其中所述執(zhí)行電路響應(yīng)于接收所述信標(biāo)確認(rèn)消息從所述不活動(dòng)狀態(tài)中移除所述指令的線程。
12.如權(quán)利要求11所述的裝置,其特征在于,還包括執(zhí)行指令的線程的至少一個(gè)附加執(zhí)行電路;以及與所述執(zhí)行電路和至少一個(gè)附加執(zhí)行電路耦合的線程分配器,用以分配由選定執(zhí)行電路執(zhí)行的線程。
13.如權(quán)利要求11所述的裝置,其特征在于,所述執(zhí)行電路響應(yīng)于接收所述信標(biāo)確認(rèn)消息再繼續(xù)所述指令線程的執(zhí)行,包括訪問(wèn)與所述信標(biāo)相關(guān)聯(lián)的資源。
14.如權(quán)利要求11所述的裝置,其特征在于,當(dāng)所述指令線程處于不活動(dòng)狀態(tài)時(shí),所述指令的執(zhí)行停止且所述執(zhí)行電路不輪詢所述信標(biāo)實(shí)體以確定所述信標(biāo)請(qǐng)求消息的狀態(tài)。
15.一種系統(tǒng),包括存儲(chǔ)器控制器;與所述存儲(chǔ)器控制器耦合以接收并執(zhí)行指令線程的執(zhí)行電路,其中所述執(zhí)行電路發(fā)送一信標(biāo)請(qǐng)求消息并響應(yīng)于請(qǐng)求具有相關(guān)信標(biāo)的資源的指令線程將所述線程置于不活動(dòng)狀態(tài);與所述執(zhí)行電路耦合的信標(biāo)實(shí)體,用以從所述執(zhí)行電路接收信標(biāo)請(qǐng)求消息,并響應(yīng)于所述信標(biāo)請(qǐng)求消息通過(guò)向所述執(zhí)行電路發(fā)送一信標(biāo)確認(rèn)消息來(lái)選擇性地準(zhǔn)許所述信標(biāo)的控制,其中所述執(zhí)行電路響應(yīng)于接收所述信標(biāo)確認(rèn)消息從所述不活動(dòng)狀態(tài)中移除所述指令的線程。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,還包括執(zhí)行指令的線程的至少一個(gè)附加執(zhí)行電路;以及與所述執(zhí)行電路和至少一個(gè)附加執(zhí)行電路耦合的線程分配器,用于分配由選定的執(zhí)行電路執(zhí)行的線程。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述執(zhí)行電路響應(yīng)于接收所述信標(biāo)確認(rèn)消息再繼續(xù)所述指令線程的執(zhí)行,包括訪問(wèn)與所述信標(biāo)相關(guān)聯(lián)的資源。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,當(dāng)所述指令的線程處于不活動(dòng)狀態(tài)時(shí),所述指令的執(zhí)行停止且所述執(zhí)行電路不輪詢所述信標(biāo)實(shí)體以確定所述信標(biāo)請(qǐng)求消息的狀態(tài)。
全文摘要
指令的多個(gè)并行被動(dòng)線程利用“活動(dòng)”信標(biāo)協(xié)調(diào)對(duì)共享資源的訪問(wèn)。這些信標(biāo)被稱(chēng)為活動(dòng)的是因?yàn)檫@些信標(biāo)發(fā)送消息給執(zhí)行和/或控制電路以使得線程的狀態(tài)改變。一線程可由線程調(diào)度器響應(yīng)于未決相關(guān)性而被置于不活動(dòng)狀態(tài),該未決相關(guān)性可由一信標(biāo)指示。與該相關(guān)性相對(duì)應(yīng)的線程狀態(tài)變量被用于指示該線程處于不活動(dòng)模式。當(dāng)該相關(guān)性被解決時(shí),將一消息傳遞給控制電路,使得相關(guān)性變量被清除。響應(yīng)于被清除的相關(guān)性變量,將該線程置于活動(dòng)狀態(tài)。執(zhí)行可在處于活動(dòng)狀態(tài)的線程上進(jìn)行。
文檔編號(hào)G06F9/46GK1898647SQ200480039054
公開(kāi)日2007年1月17日 申請(qǐng)日期2004年12月23日 優(yōu)先權(quán)日2003年12月31日
發(fā)明者江宏, T·A·皮亞扎 申請(qǐng)人:英特爾公司