專利名稱:使用多線程架構(gòu)的視覺(jué)和圖形數(shù)據(jù)處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視覺(jué)和圖形數(shù)據(jù)處理。本發(fā)明尤其涉及使用活動(dòng)信標(biāo)機(jī)制來(lái)執(zhí)行視覺(jué)和圖形數(shù)據(jù)處理操作。
背景技術(shù):
“信標(biāo)”(也稱作“臨界段”或“互斥(mutex) ”)是硬件和軟件結(jié)構(gòu),它允許其中多進(jìn)程爭(zhēng)奪共享資源(例如,存儲(chǔ)器、文件)的操作的協(xié)調(diào)或同步。一般,信標(biāo)是存儲(chǔ)在操作系統(tǒng)存儲(chǔ)器中的指定位置中的值,該值可由進(jìn)程檢查和改變。基于信標(biāo)的值,進(jìn)程可訪問(wèn)共享資源或等待一段時(shí)間并再次檢查該信標(biāo)。常規(guī)計(jì)算機(jī)系統(tǒng)中的信標(biāo)通常實(shí)現(xiàn)為使用原子“測(cè)試和設(shè)定”或類似類型的指令 (例如,鎖定、位測(cè)試、位測(cè)試和置位、位測(cè)試和復(fù)位)的硬件支持的軟件例程。使用該信標(biāo)實(shí)現(xiàn),可通過(guò)共享(例如,全局)數(shù)據(jù)和一個(gè)或多個(gè)信標(biāo)建立生產(chǎn)者-消費(fèi)者通信關(guān)系。信標(biāo)允許共享數(shù)據(jù)由嘗試修改該數(shù)據(jù)的多個(gè)進(jìn)程中的選定一個(gè)進(jìn)行修改,信標(biāo)提供了數(shù)據(jù)的
一致性。該信標(biāo)結(jié)構(gòu)是“消極的”,因?yàn)榫€程必須執(zhí)行輪詢操作以獲取一信標(biāo)。該輪詢需要消耗了可另外地用于其它用途的處理器和系統(tǒng)資源。因此,常規(guī)的信標(biāo)會(huì)導(dǎo)致效率低下。
附圖中,作為示例而非限制地示出本發(fā)明,其中相同的標(biāo)號(hào)表示相似的元件。圖1是大量多線程處理器架構(gòu)的一個(gè)實(shí)施例的框圖。圖2a_2d是其中信標(biāo)可用于同步線程執(zhí)行的從屬關(guān)系的概念性示圖。圖3是其中光線從光源跟蹤到觀察者的簡(jiǎn)單示例場(chǎng)景。圖4是使用活動(dòng)信標(biāo)的光線跟蹤的一個(gè)實(shí)施例的流程圖。圖5是使用主動(dòng)有序信標(biāo)的基于Z緩沖的三維圖形渲染的一個(gè)實(shí)施例的流程圖。圖6是使用活動(dòng)和/或主動(dòng)信標(biāo)的視頻解碼的一個(gè)實(shí)施例的流程圖。
具體實(shí)施例方式描述了用于使用活動(dòng)信標(biāo)的視覺(jué)和/或圖形數(shù)據(jù)處理的方法和裝置。在以下的描述中,出于說(shuō)明的目的,列出了大量特定細(xì)節(jié)以提供本發(fā)明的透徹理解。但本領(lǐng)域熟練技術(shù)人員顯見(jiàn)的是,本發(fā)明可以在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)施。在其它實(shí)例中,按框圖形式示出結(jié)構(gòu)和裝置以清晰表達(dá)本發(fā)明?;顒?dòng)信標(biāo)的示例件使用的概述這里所述的是一種架構(gòu)和有關(guān)方法,其中指令的多個(gè)并行被動(dòng)線程(以下稱作“線程”)利用“活動(dòng)”信標(biāo)協(xié)調(diào)對(duì)共享資源的訪問(wèn)。信標(biāo)被稱作活動(dòng)的,因?yàn)樾艠?biāo)實(shí)體發(fā)送消息給執(zhí)行和/或控制電路以引起線程狀態(tài)改變。例如,線程調(diào)度器可以響應(yīng)于未解決的從屬關(guān)系將一線程置于休眠(或不活動(dòng))模式,這可以由信標(biāo)指示。與從屬關(guān)系相對(duì)應(yīng)的線程狀態(tài)變量被用于指示該線程處于休眠模式。當(dāng)解決從屬關(guān)系時(shí),將消息傳遞給控制電路(例如,線程調(diào)度器),它使得從屬關(guān)系變量被清除。響應(yīng)于該被清除的從屬關(guān)系變量,該線程被置于活動(dòng)(或喚醒)狀態(tài)。在活動(dòng)狀態(tài)中,執(zhí)行可以在線程上進(jìn)行。繼續(xù)以上示例,如果一線程嘗試獲得信標(biāo)而不能得到,則該線程被置于不活動(dòng)狀態(tài)。因?yàn)樵摼€程是不活動(dòng)的,所以它不能輪詢信標(biāo)以確定信標(biāo)所指示的從屬關(guān)系何時(shí)被解決,如現(xiàn)有技術(shù)中所要求的。該線程保持于不活動(dòng)狀態(tài),直到接收到指示從屬關(guān)系已被消解的消息(例如從信標(biāo)實(shí)體)。響應(yīng)于該消息,將該線程置于允許執(zhí)行進(jìn)行的活動(dòng)狀態(tài)。圖1是大量多線程處理器架構(gòu)的一個(gè)實(shí)施例的框圖。如這里所使用的,標(biāo)簽“大量多線程”架構(gòu)表示包括可以支持多線程執(zhí)行的多個(gè)處理器的架構(gòu)。在一個(gè)實(shí)施例中,每個(gè)處理器都可以支持一個(gè)或多個(gè)線程。通過(guò)允許活動(dòng)線程被執(zhí)行同時(shí)其它線程處于不活動(dòng)狀態(tài),單個(gè)處理器上的多線程實(shí)現(xiàn)了高執(zhí)行效率。信標(biāo)上未決的不活動(dòng)狀態(tài)中的線程不消耗/ 浪費(fèi)處理器資源。盡管描述相對(duì)于大量多線程架構(gòu),信標(biāo)結(jié)構(gòu)和有關(guān)方法可應(yīng)用于任何多線程架構(gòu)而不管所支持的線程的數(shù)量。大量多線程系統(tǒng)100包括存儲(chǔ)器分層結(jié)構(gòu)110,它存儲(chǔ)在一個(gè)或多個(gè)處理核心執(zhí)行期間要使用的數(shù)據(jù)和指令。存儲(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選擇具有用于執(zhí)行該未決線程的資源的一個(gè)處理核心并將該線程分配到選定的處理核心。在一個(gè)處理核心上現(xiàn)有線程完成時(shí),通知線程分配器120,從而使得該處理核心上的線程資源可用于將來(lái)的未決線程。系統(tǒng)100被示為具有多個(gè)處理器核心(130、131、139、150、151和159),它們每一個(gè)都包括具有相關(guān)控制電路的執(zhí)行電路。諸處理器核心可以是相同的或者各處理器核心可具有不同的功能。任何數(shù)量的處理器核心都可包含在系統(tǒng)100中。在一個(gè)實(shí)施例中,處理器核心按行配置,每行都有一行控制器。例如,行控制器140可經(jīng)由行控制總線145與處理器核心130、131和139耦合。類似地,行控制器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)資源。為了獲得對(duì)共享系統(tǒng)資源的控制,一線程通過(guò)響應(yīng)的執(zhí)行核心必須獲得對(duì)與要訪問(wèn)的共享系統(tǒng)資源相對(duì)應(yīng)的信標(biāo)的控制。在一個(gè)實(shí)施例中,為了獲得對(duì)信標(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確定是否將對(duì)信標(biāo)的控制授予請(qǐng)求線程。當(dāng)授予該信標(biāo)時(shí),信標(biāo)實(shí)體170將一信標(biāo)確認(rèn)消息發(fā)送給請(qǐng)求線程。響應(yīng)于信標(biāo)確認(rèn)消息,請(qǐng)求線程被恢復(fù)到活動(dòng)狀態(tài),其中使用被請(qǐng)求資源的執(zhí)行繼續(xù)。當(dāng)線程完成了對(duì)共享資源的使用后,線程將一釋放信標(biāo)消息發(fā)送給信標(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)指令)以及例如通過(guò)消息總線125上在處理核心和信標(biāo)實(shí)體之間傳遞的消息(信標(biāo)消息)支持。在可選實(shí)施例中,可支持不同的和/或附加的消息或指令?;阪溄恿斜淼男艠?biāo)實(shí)體在一個(gè)實(shí)施例中,用緩沖池取代常規(guī)的經(jīng)信標(biāo)隊(duì)列,所述緩沖池具有用于形成每個(gè)信標(biāo)的鏈接列表的條目。因此,每個(gè)信標(biāo)都可以是指向由緩沖池中的條目形成的鏈接列表的首部指針。該鏈接列表可以是雙向鏈接的列表或者是單向鏈接的列表。在一個(gè)實(shí)施例中,信標(biāo)表包括用于所支持的每個(gè)信標(biāo)的指針。在一個(gè)實(shí)施例中,信標(biāo)表中的指針是首部指針,它指示要用于相應(yīng)信標(biāo)的鏈接列表的首部。空閑池指針指示緩沖池的首部且不使用的信標(biāo)條目包括NULL指針。在一個(gè)實(shí)施例中,每個(gè)信標(biāo)條目都包括釋放狀態(tài)字段、確認(rèn)抑制字段、線程標(biāo)識(shí)符字段、前一個(gè)指針和下一個(gè)指針。在可選實(shí)施例中,可以使用其它的和/或不同的字段,例如可省去前一個(gè)指針。在一個(gè)實(shí)施例中,每個(gè)信標(biāo)還可包括單個(gè)位(或其它指示符)來(lái)指示對(duì)應(yīng)于信標(biāo)的鏈接列表是否是空的。信標(biāo)消息獲得信標(biāo)消息(ACQ_MSG)用于一線程,或?yàn)橐痪€程的線程分配器,以向信標(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)的其它控制電路發(fā)出。在一個(gè)實(shí)施例中,在接收到ACQ_MSG時(shí),通過(guò)從空閑池列表中去除首部條目并將它添加到選定信標(biāo)的尾部,信標(biāo)實(shí)體將用于請(qǐng)求線程的信標(biāo)條目排隊(duì)到目標(biāo)信標(biāo)的鏈接列表。信標(biāo)條目的字段基于ACQ_MSG中的信息被更新;線程標(biāo)識(shí)符字段、釋放狀態(tài)字段和確認(rèn)-抑制字段由ACQ_MSG中的請(qǐng)求者的線程標(biāo)識(shí)符、自動(dòng)釋放字段和確認(rèn)-抑制字段取代。 如果信標(biāo)鏈接列表在ACQ_MSG前不空,則信標(biāo)實(shí)體不發(fā)送消息。否則,如果在接收到ACQ_ MSG前信標(biāo)鏈接列表為空,則采取以下動(dòng)作之一。如果確認(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)鏈接列表中保持剛排隊(duì)的信標(biāo)條目。如果自動(dòng)釋放字段被設(shè)定,則從信標(biāo)鏈接列表中去除該剛排隊(duì)的信標(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時(shí),信標(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,則它將被檢查。如果該鏈接列表的新首部將釋放狀態(tài)字段設(shè)定,則它將再次從信標(biāo)鏈接列表的首部中被去除。在一個(gè)實(shí)施例中,該遞歸進(jìn)程繼續(xù)直到鏈接列表的首部為NULL(信標(biāo)隊(duì)列空)或者鏈接列表的首部將釋放狀態(tài)字段復(fù)位(等待信標(biāo)從與條目相對(duì)應(yīng)的線程中釋放)。如果鏈接列表的首部不是NULL且確認(rèn)-抑制字段未被設(shè)定,則ACK_MSG由信標(biāo)實(shí)體發(fā)送到條目的線程標(biāo)識(shí)符字段所標(biāo)識(shí)的線程。如果鏈接列表的首部不是NULL且確認(rèn)-抑制字段被設(shè)定,則不發(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時(shí),接收處理核心復(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)(ACQ指令使得ACQ_MSG消息被發(fā)送給信標(biāo)實(shí)體,其中該信標(biāo)實(shí)體帶有請(qǐng)求信標(biāo)的信標(biāo)標(biāo)識(shí)符、請(qǐng)求線程的線程標(biāo)識(shí)符并帶有復(fù)位的自動(dòng)釋放字段。將線程放入不活動(dòng)狀態(tài),其中等待信標(biāo)狀態(tài)字段被設(shè)定。ACS指令與(跟在后面的)釋放信標(biāo)(RLS)指令(以下描述)成對(duì)。ACS_RLS指令對(duì)可用于臨界段應(yīng)用。具有自動(dòng)釋放(ASR)指令的獲得信標(biāo)使得ACQ_MSG被發(fā)送給信標(biāo)實(shí)體,其中該信標(biāo)實(shí)體帶有請(qǐng)求信標(biāo)的信標(biāo)標(biāo)識(shí)符、請(qǐng)求線程的線程標(biāo)識(shí)符并帶有設(shè)定的自動(dòng)釋放字段。 將線程置于不活動(dòng)狀態(tài),其中等待信標(biāo)狀態(tài)字段被設(shè)定。在一個(gè)實(shí)施例中,ASR指令不能與 RLS指令成對(duì)。在一個(gè)實(shí)施例中,ASR指令被用于僅具有首部從屬關(guān)系的線程。等待信標(biāo)(WTQ指令使得等待信標(biāo)線程狀態(tài)被檢查。如果該狀態(tài)被設(shè)定,則將線程置于不活動(dòng)狀態(tài)。如果該狀態(tài)未設(shè)定,則線程保持于活動(dòng)狀態(tài)。響應(yīng)于WTS指令,不向信標(biāo)實(shí)體發(fā)送消息。WTS指令的使用意味著線程分配器先前使用ACQ_MSG為線程在線程分配時(shí)間獲得信標(biāo)。如果確認(rèn)-抑制字段在先前由線程分配器發(fā)出的ACQ_MSG中被設(shè)定,則不使用WTS指令。釋放信標(biāo)(RLQ指令使得REL_MSG被發(fā)送給信標(biāo)實(shí)體,它具有用于被釋放的信標(biāo)的信標(biāo)標(biāo)識(shí)符以及用于釋放線程的線程標(biāo)識(shí)符。釋放線程保持于活動(dòng)狀態(tài)。如果ACS指令先前已被發(fā)給釋放線程,則發(fā)出僅一個(gè)RLS指令。如果ASR指令先前已發(fā)給釋放線程,則不
9發(fā)出RLS指令。如果WTS指令已發(fā)給釋放線程,則WTS指令根據(jù)線程分配器發(fā)送的ACQ_MSG 的自動(dòng)釋放字段可以后面跟著或不跟著RLS指令。如果自動(dòng)釋放字段被復(fù)位,則不發(fā)出RLS 指令。如果自動(dòng)釋放字段被設(shè)定,則RLS指令跟隨WTS指令?;顒?dòng)信標(biāo)的示例件獲得當(dāng)指令的線程由處理器執(zhí)行時(shí),在資源可用時(shí)執(zhí)行指令。當(dāng)需要具有信標(biāo)的資源時(shí),例如共享的存儲(chǔ)器位置,會(huì)需要信標(biāo)的所有權(quán)來(lái)訪問(wèn)該資源。因此,在需要信標(biāo)之前,指令線程的執(zhí)行按本領(lǐng)域已知的任何方式進(jìn)行。在一個(gè)實(shí)施例中,當(dāng)需要信標(biāo)時(shí),執(zhí)行獲得信標(biāo)(ACS)指令。ACS指令可以由執(zhí)行請(qǐng)求該信標(biāo)的指令的線程的處理器執(zhí)行。作為ACS指令的執(zhí)行的一部分或者響應(yīng)于其執(zhí)行,執(zhí)行該線程的處理核心在消息總線上將獲得信標(biāo)消息(ACQ_MSG)發(fā)送給信標(biāo)實(shí)體。以上描述了 ACQ_MSG的一種格式。也可以使用其它格式。作為ACS指令執(zhí)行的一部分或者響應(yīng)于其執(zhí)行,將請(qǐng)求信標(biāo)的線程置于不活動(dòng)狀態(tài),其中等待信標(biāo)狀態(tài)字段被設(shè)定。通過(guò)將線程置于不活動(dòng)狀態(tài),不執(zhí)行線程中的指令,它在初始信標(biāo)請(qǐng)求被拒絕時(shí)包括請(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)的鏈接列表。如果該信標(biāo)不由另一線程所有或控制,則該信標(biāo)條目被置于信標(biāo)鏈接列表的首部,因?yàn)闆](méi)有其它的條目。如果該信標(biāo)由另一線程所有或控制,則將該信標(biāo)條目置于信標(biāo)鏈接列表的尾部。在一個(gè)實(shí)施例中,通過(guò)從首部條目到尾部條目地遍歷緩沖池中的鏈接列表?xiàng)l目來(lái)標(biāo)識(shí)鏈接列表的尾部且新的條目變成新的尾部條目。在另一實(shí)施例中,鏈接列表的尾部直接由信標(biāo)表中存儲(chǔ)的鏈接列表的尾部指針標(biāo)識(shí)。當(dāng)線程完成對(duì)與信標(biāo)相對(duì)應(yīng)的資源的使用時(shí),具有該信標(biāo)的線程釋放對(duì)信標(biāo)的控制,這將在以下更詳細(xì)地描述。當(dāng)釋放一個(gè)信標(biāo)時(shí),信標(biāo)鏈接列表的首部處的相應(yīng)信標(biāo)條目被去除且鏈接列表中的后續(xù)信標(biāo)條目變成該鏈接列表的首部。當(dāng)一個(gè)信標(biāo)條目變成信標(biāo)鏈接列表的首部時(shí),信標(biāo)實(shí)體檢查其狀態(tài)字段。如果確認(rèn)-抑制字段未設(shè)定,則確認(rèn)消息(ACK_MSG)從信標(biāo)實(shí)體發(fā)送到與信標(biāo)條目相關(guān)聯(lián)的線程。 以上描述了 ACK_MSG的一種格式。也可以使用其它格式。ACK_MSG向接收實(shí)體表示該接收實(shí)體已被授予對(duì)相應(yīng)信標(biāo)的控制。響應(yīng)于ACK_MSG,激活相應(yīng)的線程。當(dāng)被激活時(shí),線程中指令的處理重新開(kāi)始且可以訪問(wèn)與信標(biāo)相對(duì)應(yīng)的共享資源。當(dāng)線程完成了對(duì)共享資源的訪問(wèn)時(shí),釋放信標(biāo),這將在以下更詳細(xì)地描述。活動(dòng)信標(biāo)的示例性釋放在一個(gè)實(shí)施例中,當(dāng)執(zhí)行釋放信標(biāo)(RLQ指令時(shí)釋放信標(biāo)。RLS指令可由執(zhí)行請(qǐng)求信標(biāo)的指令的線程的處理器執(zhí)行。作為RLS指令執(zhí)行的一部分或響應(yīng)于其執(zhí)行,將釋放信標(biāo)消息(REL_MSG)發(fā)送給信標(biāo)實(shí)體。以上描述了用于REL_MSG的一種格式。也可以使用其它格式。響應(yīng)于REL_MSG,信標(biāo)實(shí)體將REL_MSG的線程標(biāo)識(shí)符字段與信標(biāo)鏈接列表匹配。如果相應(yīng)的信標(biāo)條目在鏈接列表的首部,信標(biāo)實(shí)體就從鏈接列表的首部中去除線程條目。鏈接列表中后續(xù)的條目變成首部條目。隨后,可以將該信標(biāo)授予與新首部條目相對(duì)應(yīng)的線程。 如果相應(yīng)的信標(biāo)條目不在鏈接列表的首部,則信標(biāo)實(shí)體設(shè)定信標(biāo)條目的釋放狀態(tài)字段。行為樽型基于所使用的鏈接列表的形式,信標(biāo)可分類為關(guān)聯(lián)信標(biāo)或有序信標(biāo)?;趤?lái)自信標(biāo)實(shí)體的ACK_MSG的發(fā)送,信標(biāo)可分類為活動(dòng)信標(biāo)或主動(dòng)信標(biāo)。因此,可以支持四種類型的信標(biāo)。關(guān)聯(lián)信標(biāo)的一個(gè)實(shí)施例的概述關(guān)聯(lián)信標(biāo)允許并發(fā)線程按任何順序訪問(wèn)信標(biāo)。在一個(gè)實(shí)施例中,在與NULL鏈接列表(或用于指示一空鏈接列表的單個(gè)位)的會(huì)話開(kāi)始時(shí),信標(biāo)由線程分配器初始化。不從線程分配器將其它消息發(fā)送給信標(biāo)實(shí)體。執(zhí)行多指令線程的執(zhí)行電路在運(yùn)行過(guò)程中建立信標(biāo)鏈接列表。在一個(gè)實(shí)施例中,一線程通過(guò)執(zhí)行ACS或ASR指令來(lái)請(qǐng)求關(guān)聯(lián)的信標(biāo)。線程通過(guò)執(zhí)行RLS指令來(lái)釋放一關(guān)聯(lián)信標(biāo)。在一個(gè)實(shí)施例中,新ACQ_MSG將導(dǎo)致與請(qǐng)求線程相對(duì)應(yīng)的條目放置在信標(biāo)鏈接列表的尾部。這提供了先來(lái)先服務(wù)(FCre)的信標(biāo)模型。有序信標(biāo)的一個(gè)實(shí)施例的概述有序信標(biāo)允許并發(fā)線程按預(yù)定順序訪問(wèn)信標(biāo)。該順序在分配時(shí)由線程分配器預(yù)先確定。該順序可以是取決于應(yīng)用程序的。當(dāng)線程分配實(shí)際上是串行的時(shí),線程分配器可為每個(gè)分配的線程發(fā)送一 ACQ_MSG到信標(biāo)實(shí)體,以根據(jù)該順序構(gòu)建信標(biāo)鏈接列表。進(jìn)入臨界段的線程可使用WTS指令以等待信標(biāo)的所有權(quán)。由于線程已置于信標(biāo)鏈接列表中,不使用ACS和ARS指令。在一個(gè)實(shí)施例中,信標(biāo)實(shí)體可僅根據(jù)鏈接列表順序提供對(duì)信標(biāo)的控制。信標(biāo)上等待的線程將按鏈接列表的順序接收ACQ_MSG?;顒?dòng)信標(biāo)的一個(gè)實(shí)施例的概述如上所述,采用活動(dòng)信標(biāo),ACQ_MSG被用于使得一線程從不活動(dòng)狀態(tài)變成活動(dòng)狀態(tài)。信標(biāo)實(shí)體從執(zhí)行線程的執(zhí)行電路接收一個(gè)或多個(gè)ACQ_MSG。信標(biāo)實(shí)體僅發(fā)送一個(gè)ACK_ MSG到與信標(biāo)鏈接列表的首部處的線程相對(duì)應(yīng)的執(zhí)行電路。在去除信標(biāo)鏈接列表的首部時(shí), 信標(biāo)實(shí)體檢查鏈接列表的新首部的狀態(tài),并可以將后續(xù)ACK_MSG發(fā)送給與信標(biāo)鏈接列表的新首部的線程相對(duì)應(yīng)的執(zhí)行電路。活動(dòng)信標(biāo)也可以是關(guān)聯(lián)信標(biāo)。主動(dòng)信標(biāo)的一個(gè)實(shí)施例的概述主動(dòng)信標(biāo)發(fā)送一個(gè)且僅一個(gè)ACK_MSG給信標(biāo)鏈接列表的首部處的線程,無(wú)論該線程是否處于不活動(dòng)狀態(tài)。這使用具有先前由線程分配器發(fā)送的ACQ_MSG的排序的信標(biāo)應(yīng)用于線程,使得僅一個(gè)ACK_MSG被發(fā)送給一線程。使用排序的信標(biāo)的線程可包含WTS和/或 RLS指令。對(duì)于主動(dòng)信標(biāo),ACK_MSG由信標(biāo)實(shí)體自動(dòng)發(fā)送到信標(biāo)鏈接列表首部處的線程。在一個(gè)實(shí)施例中,存在“危險(xiǎn)條件”的可能性,如果來(lái)自線程的條目的計(jì)時(shí)在信標(biāo)鏈接列表中由線程分配器排隊(duì)的情況下并且在線程對(duì)于執(zhí)行電路可見(jiàn)的時(shí)候可能存在此情況。因?yàn)檫@兩個(gè)動(dòng)作由線程分配器啟動(dòng)但經(jīng)過(guò)不同的數(shù)據(jù)路徑發(fā)生,所以必須考慮這些事件的計(jì)時(shí)。如果線程執(zhí)行在信標(biāo)配置前開(kāi)始,如果線程中有WTS指令,則將沒(méi)有危險(xiǎn)條件。因?yàn)榈却艠?biāo)線程狀態(tài)變量由線程分配器設(shè)定,即使線程的WTS指令在線程被排隊(duì)到信標(biāo)鏈接列表之前達(dá)到,也不出現(xiàn)危險(xiǎn)條件。WTS指令使得線程進(jìn)入不活動(dòng)狀態(tài)而不發(fā)送消息到信標(biāo)實(shí)體。當(dāng)信標(biāo)實(shí)體發(fā)送ACK_MSG到線程時(shí),執(zhí)行電路再次使得線程活動(dòng)。如果信標(biāo)由線程分配器配置,其中確認(rèn)-抑制字段被設(shè)定,則會(huì)導(dǎo)致危險(xiǎn)條件。在這種情況中,線程將不被置于不活動(dòng)狀態(tài)。相反,如果在為線程配置信標(biāo)前線程到達(dá)RLS指令并將REL_MSG發(fā)送給信標(biāo)實(shí)體,則信標(biāo)實(shí)體會(huì)不處于處理REL_MSG的條件。為避免這種危險(xiǎn)條件,線程執(zhí)行和信標(biāo)實(shí)體可確保REL_MSG不傳送由線程分配器發(fā)出的ACQ_MSG。因此,在一個(gè)實(shí)施例中,為避免危險(xiǎn)條件,如果確認(rèn)-抑制未被設(shè)定,則線程分配器在信標(biāo)配置完成前完成線程配置。如果確認(rèn)-抑制字段被設(shè)定,則線程分配器在完成線程配置前完成信標(biāo)配置。因?yàn)榫€程分配器串行地分配準(zhǔn)備好的線程,串行操作可確保必要的排序。當(dāng)線程配置在信標(biāo)配置前完成時(shí),在發(fā)送消息引起信標(biāo)配置前,線程分配器可分配一線程并等待指示線程配置完成的信號(hào)。當(dāng)信標(biāo)配置在線程配置前完成時(shí),線程分配器可發(fā)送消息以啟動(dòng)信標(biāo)的配置并等待指示在分配線程前信標(biāo)配置完成的信號(hào)。因?yàn)榇信渲脮?huì)不必要地限制來(lái)自分配器的吞吐量,可使配置操作流水線化。線稈同步圖2a_2d是從屬關(guān)系的概念示圖,其中信標(biāo)可用于同步線程執(zhí)行。圖加示出了 1:1:1( 一對(duì)一)從屬關(guān)系。圖加的從屬關(guān)系可以是強(qiáng)串行順序從屬關(guān)系或關(guān)聯(lián)從屬關(guān)系。 對(duì)于強(qiáng)連續(xù)順序從屬關(guān)系,可以使用單個(gè)主動(dòng)的有序信標(biāo)。在一個(gè)實(shí)施例中,在從線程分配器發(fā)送給信標(biāo)實(shí)體以請(qǐng)求信標(biāo)的ACQ_MSG中,確認(rèn)-抑制字段和自動(dòng)釋放字段都被復(fù)位。指令的線程包括WTS-RLS指令對(duì),以獲得和釋放信標(biāo)。對(duì)于關(guān)聯(lián)從屬關(guān)系,可以使用單個(gè)活動(dòng)的關(guān)聯(lián)信標(biāo)。在一個(gè)實(shí)施例中,在從執(zhí)行線程的執(zhí)行電路發(fā)送到信標(biāo)實(shí)體以請(qǐng)求信標(biāo)的ACQ_MSG中,確認(rèn)-抑制字段和自動(dòng)釋放字段都被復(fù)位。指令的線程包括ACS-RLS指令對(duì)以獲得和釋放信標(biāo)。圖2b示出了 1:N(1對(duì)多)從屬關(guān)系,其中一個(gè)線程對(duì)N個(gè)其它線程具有首部從屬關(guān)系,其中N個(gè)其它線程不相互從屬。這里,N是可以是一或大于一的正整數(shù)。對(duì)于1:N 從屬關(guān)系,可使用單個(gè)主動(dòng)的有序信標(biāo)。在一個(gè)實(shí)施例中,對(duì)于N個(gè)獨(dú)立線程,ACQ_MSG由線程分配器為N個(gè)線程發(fā)送。在從線程分配器發(fā)送給信標(biāo)實(shí)體以請(qǐng)求信標(biāo)的ACQ_MSG中, 確認(rèn)-抑制字段被設(shè)定且自動(dòng)釋放字段被復(fù)位。對(duì)于對(duì)其它N個(gè)線程有首部從屬關(guān)系的單個(gè)線程,ACQ_MSG也由線程分配器發(fā)送。在請(qǐng)求信標(biāo)的ACQ_MSG中,確認(rèn)-抑制字段被復(fù)位且自動(dòng)釋放字段被設(shè)定。N個(gè)指令線程僅包括RLS指令來(lái)釋放信標(biāo)。單個(gè)指令線程包括 WTS-RLS指令對(duì)以獲得和釋放信標(biāo)。圖2c示出了 N: 1 (多對(duì)一)從屬關(guān)系,其中N個(gè)線程具有對(duì)單個(gè)線程的首部從屬關(guān)系但這N個(gè)線程不相互從屬。對(duì)于N: 1從屬關(guān)系,可以使用單個(gè)主動(dòng)的有序信標(biāo)。在一個(gè)實(shí)施例中,線程分配器負(fù)責(zé)為N個(gè)依賴(copending)線程和一個(gè)從屬(d印endent)線程兩者發(fā)送ACQ_MSG。在一個(gè)實(shí)施例中,對(duì)于單個(gè)從屬線程,在請(qǐng)求信標(biāo)的ACQ_MSG中,確認(rèn)-抑制字段被設(shè)定且自動(dòng)釋放字段被復(fù)位。對(duì)于N個(gè)依賴線程,在請(qǐng)求信標(biāo)的ACQ_MSG中,確認(rèn)-抑制字段被復(fù)位且自動(dòng)釋放字段被設(shè)定。指令的單個(gè)從屬線程僅包括RLS指令以釋放信標(biāo)。指令的N個(gè)依賴線程包括WTS-RLS指令對(duì)以獲得并釋放信標(biāo)。圖2d示出了 N:M(多對(duì)多)從屬關(guān)系,其中N個(gè)依賴線程具有對(duì)M個(gè)從屬線程的首部從屬關(guān)系。在這種情況中,N個(gè)依賴線程不相互從屬,且M個(gè)從屬線程不相互從屬。與
12上述1 1 1,1 :N和N: 1的情況相比,N:M依賴性情況是更一般的情況。對(duì)于N:M從屬關(guān)系, 可以使用單個(gè)主動(dòng)的有序信標(biāo)。在一個(gè)實(shí)施例中,線程分配器負(fù)責(zé)為N個(gè)依賴線程和M個(gè)從屬線程兩者發(fā)送ACQ_MSG。在一個(gè)實(shí)施例中,對(duì)于M個(gè)從屬線程,在用于請(qǐng)求信標(biāo)的ACQ_ MSG中,確認(rèn)-抑制字段被設(shè)定且自動(dòng)釋放自動(dòng)被復(fù)位。對(duì)于N個(gè)依賴線程,在用于請(qǐng)求信標(biāo)的ACQ_MSG中,確認(rèn)-抑制字段被復(fù)位且自動(dòng)釋放自動(dòng)被設(shè)定。指令的M個(gè)從屬線程僅包括一 RLS指令以釋放信標(biāo)。指令的N個(gè)依賴線程包括WTS-RLS指令對(duì)以獲得并釋放信標(biāo)。圖加_2(1的從屬關(guān)系可用于支持更復(fù)雜的從屬關(guān)系。例如,對(duì)于N: 1:N從屬關(guān)系, 使用兩個(gè)主動(dòng)的有序信標(biāo)。如以上參考圖2c所述地處理N: 1從屬關(guān)系并如以上參考圖2b 所述地處理1:N從屬關(guān)系。如以下更詳細(xì)地描述的,上述信標(biāo)機(jī)制和線程同步技術(shù)可應(yīng)用于計(jì)算機(jī)或類似電子系統(tǒng)中執(zhí)行的許多操作。在以下給出的示例中,可利用這里所述的信標(biāo)結(jié)構(gòu)執(zhí)行各種圖形處理技術(shù)。雖然圖形處理技術(shù)提供了使用活動(dòng)和主動(dòng)信標(biāo)的有用示例,但這些信標(biāo)機(jī)制的使用不限于圖形數(shù)據(jù)處理。信標(biāo)和光線跟蹤光線跟蹤是用于渲染三維圖形的技術(shù),并可以支持復(fù)雜的光相互作用,諸如反射鏡、透明表面、陰影等。一般,光線跟蹤基于通過(guò)遞歸地跟隨(跟蹤)光線通過(guò)一場(chǎng)景的光線反射所采用的路徑的模型化的反射和折射。兩次反射之間(或屏幕位置和第一次反射之間或者屏幕位置或反射與光源之間)的光線軌跡被稱作光線段。當(dāng)光線從觀測(cè)透視 (例如照相機(jī))被跟蹤到光源時(shí),為每個(gè)像素確定顏色。本領(lǐng)域已知多種用于光線跟蹤的技術(shù)。例如,參見(jiàn) Cook,R. L.禾口 Torrance,K. Ε·,“A Reflectance Model for Computer Graphics, "ACM Trans, on Graphics 1,1(1982 年 1 月)以及 Glassner,A. (ed),"An Introduction to Ray Tracing, "Academic Press, New York,1989。在使用光線跟蹤技術(shù)渲染圖像時(shí),可通過(guò)使視線(eye ray)開(kāi)始于每個(gè)屏幕位置來(lái)渲染圖像屏幕。屏幕位置也稱作目的地像素。每個(gè)視線將橫穿三維場(chǎng)景空間,并由于與場(chǎng)景中對(duì)象的反射和折射相互作用而生成一個(gè)或許多光線段。與不同目的地像素相關(guān)聯(lián)的光線段彼此獨(dú)立。與不同目的地像素相關(guān)聯(lián)的光線段的處理可并行計(jì)算而不修改共享資源并因此不使用信標(biāo)機(jī)制。當(dāng)圖像屏幕上存在許多目的地像素時(shí),光線跟蹤問(wèn)題可良好地用于大量多線程的計(jì)算架構(gòu)。對(duì)于單個(gè)目的地像素,可以有多個(gè)光線段。在累加多個(gè)光線段對(duì)單個(gè)像素的貢獻(xiàn)時(shí),最終顏色可確定為與該像素相關(guān)聯(lián)的每個(gè)光線段的加權(quán)和。例如,當(dāng)在大量多線程計(jì)算架構(gòu)上用不同線程處理到單個(gè)像素的光線段時(shí),作為與同一像素相關(guān)聯(lián)的線程的共享資源的像素最終顏色的更新需要使用信標(biāo)機(jī)制。例如,上述N: 1從屬關(guān)系機(jī)制可用于光線跟蹤。使用活動(dòng)和/或主動(dòng)信標(biāo),用于跟蹤光線段(包括與共用像素相關(guān)聯(lián)的光線段) 的操作可并行執(zhí)行。在一個(gè)實(shí)施例中,可通過(guò)散列目的地像素地址來(lái)確定信標(biāo)標(biāo)識(shí)符。如果可用信標(biāo)少于獨(dú)立像素,一些像素可共享一信標(biāo)。這是性能問(wèn)題而非功能問(wèn)題。在該實(shí)施例中,可動(dòng)態(tài)使用信標(biāo)而沒(méi)有全局同步。在不使用信標(biāo)的情況下,順序地執(zhí)行用于跟蹤與像素相關(guān)聯(lián)的光線段的操作。因此,使用具有光線跟蹤技術(shù)的信標(biāo)允許較大的并行處理。圖3是其中光線從光源跟蹤到觀察者的簡(jiǎn)單示例場(chǎng)景。大量光線在光源300和觀察者300之間行進(jìn);但出于簡(jiǎn)化描述的原因,圖3中僅示出較少數(shù)量的光線。光線340直接從光源300行進(jìn)到觀察者330。因?yàn)楣饩€340不被反射或折射,所以與光線340相對(duì)應(yīng)的像素由光源300所提供的光的顏色表示。由于光由對(duì)象310反射,所以用于與光線段350和355相對(duì)應(yīng)的光的光線跟蹤計(jì)算更加復(fù)雜。如上所述,用于段350和355的光線跟蹤操作可以并行執(zhí)行。因此,段350和355 的光線跟蹤操作可作為兩個(gè)線程執(zhí)行,將其結(jié)果組合以提供從多個(gè)光線跟蹤操作獲得的像素顏色。如上所述,可以用活動(dòng)信標(biāo)完成兩個(gè)線程的協(xié)調(diào)。圖4是使用活動(dòng)信標(biāo)的光線跟蹤的一個(gè)實(shí)施例的流程圖。410中,確定光線路徑。 光線路徑的確定可按本領(lǐng)域已知的任何方式完成。420中,光線跟蹤操作中所使用的組件 (例如,硬件組件、軟件組件等)確定多個(gè)光線段是否影響單個(gè)像素。如果在420中單個(gè)光線段影響單個(gè)像素,則在425中跟蹤光線路徑。對(duì)于該單個(gè)光線段,可以使用本領(lǐng)域已知的任何光線跟蹤技術(shù)。475中,基于光線跟蹤操作的結(jié)果,確定像素顏色。隨后,該像素可以被顯示、打印或另外渲染用于觀看。如果在420中多個(gè)光線段影響單個(gè)像素,則可并行跟蹤這多個(gè)光線段中的一個(gè)或多個(gè)。并行光線跟蹤多個(gè)光線段可以形成N:1的從屬關(guān)系,其中像素結(jié)果依賴于用于N個(gè)光線段的光線跟蹤操作的結(jié)果。如上所述地處理該N: 1從屬關(guān)系。當(dāng)在440中從屬關(guān)系被解析時(shí),在450中可累加多個(gè)光線跟蹤操作的結(jié)果。在475 中根據(jù)累加的光線跟蹤操作的結(jié)果確定像素顏色。隨后,該像素可以被顯示、打印或另外渲染用于觀看。使用活動(dòng)信標(biāo)的基于Z緩沖的三維涫染在基于Z緩沖的三維圖形渲染中,所渲染的對(duì)象被分成渲染基元(primitive),諸如點(diǎn)、線、三角、三角帶等。將渲染基元投影到觀察屏上。被投影到不同屏像素上的渲染基元可獨(dú)立渲染。當(dāng)多個(gè)不透明基元被投影到同一屏像素上時(shí),僅其它基元前的基元(具有離目的地像素的更小距離度量,所謂的Z值)更新屏像素顏色。Z緩沖是屏幕大小緩沖,它逐像素地存儲(chǔ)對(duì)屏像素的最近更新的Z值。使用Z-測(cè)試來(lái)解決昏暗。對(duì)于在屏幕像素上投影的任何基元,將基元的Z值與用于屏幕像素的Z緩沖中存儲(chǔ)的Z值進(jìn)行比較。如果基元的Z值小于Z緩沖值,則用來(lái)自基元的渲染顏色更新目的地像素顏色,也更新Z緩沖值。如果基元的Z值等于或大于Z緩沖值,則不改變目的地像素顏色以及相應(yīng)的Z緩沖值。為了生成一致的屏幕圖像,投影到同一屏幕像素上的基元必須按嚴(yán)格的次序渲染??梢允褂迷诖罅烤€程化架構(gòu)上多線程處理實(shí)現(xiàn)基于Z緩沖的三維渲染。例如,獨(dú)立基元可通過(guò)獨(dú)立線程渲染?;g的從屬關(guān)系,例如通過(guò)多個(gè)基元對(duì)共同像素的Z緩沖測(cè)試和更新,可以利用上述信標(biāo)機(jī)制解析。圖5是使用主動(dòng)有序信標(biāo)的基于Z緩沖的三維圖形渲染的一個(gè)實(shí)施例的流程圖。 在510中,要渲染的對(duì)象可基于對(duì)觀察屏幕的投影被分段成多個(gè)基元和多個(gè)基元部分。在 520中,基于投影的屏幕像素位置為這些基元或基元部分配置信標(biāo)。在530中,通過(guò)指令的多個(gè)線程對(duì)這些基元或基元部分執(zhí)行渲染操作。線程可由一個(gè)或多個(gè)處理器執(zhí)行并可使用一個(gè)或多個(gè)上述信標(biāo)機(jī)制解析從屬關(guān)系。例如,被投影于同一屏幕像素上的通過(guò)不同線程進(jìn)行的多個(gè)基元的三維渲染可形成1:1:1從屬關(guān)系,其中每個(gè)線程的Z測(cè)試和目的地顏色更新取決于在該線程前的更新同一屏幕像素的一個(gè)或多個(gè)線程的結(jié)果。該1:1:1從屬關(guān)系如上所述地被處理。當(dāng)在MO中解析了從屬關(guān)系時(shí),在550中用于給定基元或基元段的線程執(zhí)行Z測(cè)試并在Z測(cè)試成功時(shí)更新用于投影像素的Z值和顏色值。在560中最終的渲染圖像在渲染了基元之后生成。隨后,可以顯示、打印或另外地顯現(xiàn)最終的渲染圖像用于觀察。使用活動(dòng)信標(biāo)的視頻解碼在一些視頻編碼標(biāo)準(zhǔn)中,例如MPEG-2,圖片(視覺(jué)對(duì)象平面或V0P)內(nèi)的一個(gè)或多個(gè)段(諸如宏模塊)的組可通過(guò)指令的獨(dú)立線程被解碼。在一些視頻編碼標(biāo)準(zhǔn)中,例如 MPEG-4,諸如宏模塊的圖片段的解碼具有其它圖片段解碼的從屬關(guān)系。因此,可通過(guò)多線程架構(gòu)上指令的多個(gè)線程解碼一圖片。這些線程之間的從屬關(guān)系可利用上述信標(biāo)機(jī)制解析。例如,在2000 年 10 月出版的 IS0/IEC 13818 "Generic coding of moving pictures and associated audio information”以及有關(guān)標(biāo)準(zhǔn)中描述了 MPEG—2。例如,在 2002 年 3 月出版的 IS0/IEC 14496 "Coding of audio-visual objects” 以及有關(guān)標(biāo)準(zhǔn)中描述了 MPEG-4。圖6是使用活動(dòng)和/或主動(dòng)信標(biāo)的視頻解碼的一個(gè)實(shí)施例的流程圖。該流程圖描繪了視頻序列的一個(gè)圖片的解碼過(guò)程??梢灾貜?fù)相同的過(guò)程以解碼視頻序列的多個(gè)圖片。 在610中確定要解碼的圖片的段。這些段例如可以是塊、塊組、宏模塊或宏模塊組,或者要解碼的幀的任何其它段。在一個(gè)實(shí)施例中,在通過(guò)指令的不同線程對(duì)這些段執(zhí)行解碼操作640前,確定段間從屬關(guān)系。如果在620中一段具有首部從屬關(guān)系-段的解碼取決于其它段的解碼結(jié)果, 一在625中為處理該段的指令線程配置具有首部從屬關(guān)系的一個(gè)或多個(gè)信標(biāo)。如果在630 中段具有尾部從屬關(guān)系-后續(xù)段的解碼取決于該段的解碼結(jié)果,-在635中為處理該段的指令線程配置具有尾部從屬關(guān)系的一個(gè)或多個(gè)信標(biāo)。在640中通過(guò)指令的多個(gè)線程對(duì)這些段進(jìn)行解碼操作。這些線程可以由一個(gè)或多個(gè)處理器執(zhí)行并可使用上述信標(biāo)機(jī)制中的一種或多種解析從屬關(guān)系。例如,對(duì)于具有對(duì)N 個(gè)段的首部從屬關(guān)系的一個(gè)段,可以使用按N: 1從屬關(guān)系模式配置的信標(biāo)解析這些段的從屬關(guān)系。用具有尾部從屬關(guān)系的信標(biāo)配置N個(gè)從屬段的線程以及用具有首部從屬關(guān)系的信標(biāo)配置那一個(gè)依賴段。如上所述地處理該N: 1從屬關(guān)系。當(dāng)在640中解析了段的從屬關(guān)系時(shí),在660中生成解碼段的結(jié)果。在670中從合計(jì)的段結(jié)果中生成最終圖片。隨后,最終解碼圖片可被顯示、打印或另外地顯現(xiàn)用于觀察。Mrk說(shuō)明書中對(duì)“一個(gè)實(shí)施例”或“一實(shí)施例”的引用意味著聯(lián)系該實(shí)施例描述的特殊特點(diǎn)、結(jié)構(gòu)或特征包含于本發(fā)明的至少一個(gè)實(shí)施例中。說(shuō)明書中各處短語(yǔ)“在一個(gè)實(shí)施例中”的出現(xiàn)不必都涉及同一實(shí)施例。在前述說(shuō)明書中,已參考其特定實(shí)施例描述了本發(fā)明。但顯然,可以對(duì)其進(jìn)行各種修改和變化而不背離本發(fā)明的較寬精神和范圍。因此,說(shuō)明書和附圖被認(rèn)為是說(shuō)明性而非限制性的。
權(quán)利要求
1.一種方法,包括由存儲(chǔ)器維持用于指令的第一線程的狀態(tài)指示; 由執(zhí)行電路執(zhí)行指令的第一線程以處理要顯示的圖像的第一圖形元素; 由所述執(zhí)行電路執(zhí)行指令的第二線程以處理要顯示的圖像的第二圖形元素; 如果所述用于指令的第一線程的狀態(tài)指示被設(shè)定,則由所述執(zhí)行電路響應(yīng)于與第一圖形元素和第二圖形元素之間的關(guān)系有關(guān)的一組預(yù)定條件中至少一個(gè)的檢測(cè),將指令的第一線程置于不活動(dòng)狀態(tài);由所述執(zhí)行電路將指令的第一線程保持于不活動(dòng)狀態(tài)直到從信標(biāo)實(shí)體接收到一消息;由所述信標(biāo)實(shí)體將消息發(fā)送到所述執(zhí)行電路,所述消息用于重新開(kāi)始指令的所述第一線程的執(zhí)行;以及由所述執(zhí)行電路響應(yīng)于從信標(biāo)實(shí)體接收到所述消息重新開(kāi)始指令的所述第一線程的執(zhí)行并且復(fù)位所述指令的第一線程的狀態(tài)指示,其中當(dāng)分配所述指令的第一線程時(shí)設(shè)定所述狀態(tài)指示。
2.如權(quán)利要求1所述的方法,其特征在于,所述一組預(yù)定條件包括未解析的從屬關(guān)系。
3.如權(quán)利要求1所述的方法,其特征在于,所述一組預(yù)定條件包括缺少來(lái)自指示與該信標(biāo)相對(duì)應(yīng)的資源不可用的所述信標(biāo)的響應(yīng)。
4.如權(quán)利要求1所述的方法,其特征在于,所述存儲(chǔ)器還維持用于指令的第二線程的狀態(tài)指示。
5.如權(quán)利要求4所述的方法,其特征在于,指令的每個(gè)線程的狀態(tài)指示包括與指令的相關(guān)聯(lián)線程的從屬關(guān)系(若有)相對(duì)應(yīng)的狀態(tài)變量。
6.如權(quán)利要求1所述的方法,其特征在于,所述指令的第一線程包括第一組光線跟蹤指令,且所述第一圖形元素包括第一光線段,其中所述指令的第二線程包括第二組光線跟蹤指令,且所述第二圖形元素包括第二光線段。
7.如權(quán)利要求1所述的方法,其特征在于,所述指令的第一線程包括第一組視頻解碼指令且所述第一圖形元素包括第一圖片段,且所述指令的第二線程包括第二組視頻解碼指令且所述第二圖形元素包括第二圖片段。
8.如權(quán)利要求7所述的方法,其特征在于,所述第一圖片段包括第一宏模塊且所述第二圖片段包括第二宏模塊。
9.如權(quán)利要求1所述的方法,其特征在于,所述指令的第一線程包括第一組三維渲染指令且第一圖形元素包括第一渲染基元,且所述指令的第二線程包括第二組三維渲染指令且第二圖形元素包括第二渲染基元。
10.如權(quán)利要求9所述的方法,其特征在于,所述第一渲染基元包括第一點(diǎn)、第一線、 第一三角形和第一三角帶之一,且所述第二渲染基元包括第二點(diǎn)、第二線、第二三角形和第二三角帶之一。
11.如權(quán)利要求9所述的方法,其特征在于,還包括由執(zhí)行電路執(zhí)行指令的線程確定用于所述第一渲染基元的Z值; 由所述執(zhí)行電路執(zhí)行指令的線程確定用于所述第二渲染基元的Z值; 由所述執(zhí)行電路執(zhí)行指令的線程比較用于所述第一渲染基元和所述第二渲染基元的Z值以確定所述第一渲染基元和所述第二渲染基元之間的關(guān)系;以及由所述執(zhí)行電路執(zhí)行指令的線程基于所述第一渲染基元和第二渲染基元之間的關(guān)系顯示所述第一渲染基元和所述第二渲染基元中的選定一個(gè)。
12.一種裝置,包括耦合于執(zhí)行電路的存儲(chǔ)器,用于存儲(chǔ)指令的第一線程,所述存儲(chǔ)器維持用于指令的第一線程的狀態(tài)指示;所述執(zhí)行電路,用于接收并執(zhí)行與圖像的第一圖形元素相對(duì)應(yīng)的所述指令的第一線程以及與圖像的第二圖形元素相對(duì)應(yīng)的指令的第二線程,其中如果所述用于指令的第一線程的狀態(tài)指示被設(shè)定,則所述執(zhí)行電路發(fā)送一信標(biāo)請(qǐng)求消息并響應(yīng)于需要具有相關(guān)信標(biāo)的資源的所述指令的第一線程將所述指令的第一線程置于不活動(dòng)狀態(tài);以及與所述執(zhí)行電路耦合的信標(biāo)實(shí)體,用于從所述執(zhí)行電路接收信標(biāo)請(qǐng)求消息并用于對(duì)于所述指令的第一線程,響應(yīng)于所述信標(biāo)請(qǐng)求消息通過(guò)向所述執(zhí)行電路發(fā)送信標(biāo)確認(rèn)消息來(lái)選擇性地授予信標(biāo)的控制,其中所述執(zhí)行電路響應(yīng)于接收到所述信標(biāo)確認(rèn)消息,將所述指令的第一線程從不活動(dòng)狀態(tài)中去除并且復(fù)位所述用于指令的第一線程的狀態(tài)指示,其中當(dāng)分配所述指令的第一線程時(shí)設(shè)定所述狀態(tài)指示。
13.如權(quán)利要求12所述的裝置,其特征在于,所述執(zhí)行電路包括第一執(zhí)行電路,用于執(zhí)行所述指令的第一線程;以及第二執(zhí)行電路,用于執(zhí)行所述指令的第二線程。
14.如權(quán)利要求12所述的裝置,其特征在于,所述指令的第一線程包括第一組光線跟蹤指令且所述第一圖形元素包括第一光線段,以及所述指令的第二線程包括第二組光線跟蹤指令且所述第二圖形元素包括第二光線段。
15.如權(quán)利要求12所述的裝置,其特征在于,所述指令的第一線程包括第一組視頻解碼指令且所述第一圖形元素包括第一圖片段,以及所述指令的第二線程包括第二組視頻解碼指令且所述第二圖形元素包括第二圖片段。
16.如權(quán)利要求15所述的裝置,其特征在于,所述第一圖片段包括第一宏模塊且所述第二圖片段包括第二宏模塊。
17.如權(quán)利要求12所述的裝置,其特征在于,所述指令的第一線程包括第一組三維渲染指令且所述第一圖形元素包括第一渲染基元,以及所述指令的第二線程包括第二組三維渲染指令且所述第二圖形元素包括第二渲染基元。
18.如權(quán)利要求17所述的裝置,其特征在于,所述第一渲染基元包括第一點(diǎn)、第一線、 第一三角形和第一三角帶之一,且所述第二渲染基元包括第二點(diǎn)、第二線、第二三角形和第二三角帶之一。
19.如權(quán)利要求12所述的裝置,其特征在于,所述存儲(chǔ)器還存儲(chǔ)所述指令的第二線程。
20.如權(quán)利要求12所述的裝置,其特征在于,還包括至少一個(gè)附加執(zhí)行電路,用于執(zhí)行指令的線程;以及與所述執(zhí)行電路和至少一個(gè)附加執(zhí)行電路耦合的線程分配器,用于分配用于執(zhí)行的指令的線程。
21.如權(quán)利要求12所述的裝置,其特征在于,當(dāng)所述指令的第一線程處于不活動(dòng)狀態(tài)時(shí),指令的執(zhí)行停止且執(zhí)行電路不輪詢所述信標(biāo)實(shí)體以確定信標(biāo)請(qǐng)求消息的狀態(tài)。
22.—種設(shè)備,包括用于維持用于指令的第一線程的狀態(tài)指示的裝置; 用于執(zhí)行指令的第一線程以處理要顯示的圖像的第一圖形元素的裝置; 用于執(zhí)行指令的第二線程以處理要顯示的圖像的第二圖形元素的裝置; 用于在所述用于指令的第一線程的狀態(tài)指示的情況下,響應(yīng)于與第一圖形元素和第二圖形元素之間的關(guān)系有關(guān)的一組預(yù)定條件中至少一個(gè)的檢測(cè),將指令的第一線程置于不活動(dòng)狀態(tài)的裝置;用于將指令的第一線程保持于不活動(dòng)狀態(tài)直到從信標(biāo)實(shí)體接收到一消息的裝置; 用于由信標(biāo)實(shí)體發(fā)送用于重新開(kāi)始指令的所述第一線程的執(zhí)行的消息的裝置;以及用于響應(yīng)于從信標(biāo)實(shí)體接收到所述消息重新開(kāi)始指令的所述第一線程的執(zhí)行并且復(fù)位所述指令的第一線程的狀態(tài)指示的裝置,其中當(dāng)分配所述指令的第一線程時(shí)設(shè)定所述狀態(tài)指示。
23.如權(quán)利要求22所述的裝置,其特征在于,所述指令的第一線程包括第一組光線跟蹤指令且所述第一圖形元素包括第一光線段,以及所述指令的第二線程包括第二組光線跟蹤指令且所述第二圖形元素包括第二光線段。
24.如權(quán)利要求22所述的裝置,其特征在于,所述指令的第一線程包括第一組視頻解碼指令且所述第一圖形元素包括第一宏模塊,以及所述指令的第二線程包括第二組視頻解碼指令且所述第二圖形元素包括第二宏模塊。
25.如權(quán)利要求22所述的裝置,其特征在于,所述指令的第一線程包括第一組三維渲染指令且所述第一圖形元素包括第一渲染基元,以及所述指令的第二線程包括第二組三維渲染指令且所述第二圖形元素包括第二渲染基元。
26.一種系統(tǒng),包括 存儲(chǔ)器控制器;與所述存儲(chǔ)器控制器耦合的執(zhí)行電路,用于接收和執(zhí)行與圖像的第一圖形元素相對(duì)應(yīng)的指令的第一線程和與圖像的第二圖形元素相對(duì)應(yīng)的指令的第二線程,其中如果用于指令的第一線程的狀態(tài)指示被設(shè)定,所述執(zhí)行電路發(fā)送一信標(biāo)請(qǐng)求消息并響應(yī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)選擇性地授予所述信標(biāo)的控制,其中所述執(zhí)行電路響應(yīng)于接收到所述信標(biāo)確認(rèn)消息,將所述指令的第一線程從不活動(dòng)狀態(tài)中去除并且復(fù)位所述用于指令的第一線程的狀態(tài)指示;以及耦合于所述存儲(chǔ)器控制器的存儲(chǔ)器,用于存儲(chǔ)指令的第一線程,所述存儲(chǔ)器維持所述用于指令的第一線程的狀態(tài)指示,其中當(dāng)分配所述指令的第一線程時(shí)設(shè)定所述狀態(tài)指示。
27.如權(quán)利要求沈所述的系統(tǒng),其特征在于,所述執(zhí)行電路包括 第一執(zhí)行電路,用于執(zhí)行所述指令的第一線程;以及第二執(zhí)行電路,用于執(zhí)行所述指令的第二線程。
28.如權(quán)利要求沈所述的系統(tǒng),其特征在于,所述指令的第一線程包括第一組光線跟蹤指令且所述第一圖形元素包括第一光線段,以及所述指令的第二線程包括第二組光線跟蹤指令且所述第二圖形元素包括第二光線段。
29.如權(quán)利要求沈所述的系統(tǒng),其特征在于,所述指令的第一線程包括第一組視頻解碼指令且所述第一圖形元素包括第一宏模塊,以及所述指令的第二線程包括第二組視頻解碼指令且所述第二圖形元素包括第二宏模塊。
30.如權(quán)利要求四所述的系統(tǒng),其特征在于,所述第一圖片段包括第一宏模塊且所述第二圖片段包括第二宏模塊。
31.如權(quán)利要求沈所述的系統(tǒng),其特征在于,所述指令的第一線程包括第一組三維渲染指令且所述第一圖形元素包括第一部分渲染基元,以及所述指令的第二線程包括第二組三維渲染指令且所述第二圖形元素包括第二渲染基元。
32.如權(quán)利要求31所述的系統(tǒng),其特征在于,所述第一渲染基元包括第一點(diǎn)、第一線、 第一三角形和第一三角帶之一,且所述第二渲染基元包括第二點(diǎn)、第二線、第二三角形和第二三角帶之一。
33.如權(quán)利要求沈所述的系統(tǒng),其特征在于,還包括與所述存儲(chǔ)器控制器耦合的存儲(chǔ)器,用于存儲(chǔ)所述指令的第一線程和所述指令的第二線程。
34.如權(quán)利要求沈所述的系統(tǒng),其特征在于,當(dāng)所述指令的第一線程處于不活動(dòng)狀態(tài)時(shí),指令的執(zhí)行停止且執(zhí)行電路不輪詢所述信標(biāo)實(shí)體以確定信標(biāo)請(qǐng)求消息的狀態(tài)。
35.如權(quán)利要求1所述的方法,還包括由存儲(chǔ)器存儲(chǔ)信標(biāo),所述信標(biāo)(i)與目的地像素相關(guān)聯(lián)使得至少一個(gè)光線段與相同的目的地像素相關(guān)聯(lián),并且(ii)包括信標(biāo)條目的鏈接列表,其中的每個(gè)信標(biāo)條目與指令的多個(gè)線程中與所述至少一個(gè)光線段相關(guān)聯(lián)的指令的線程相關(guān)聯(lián);由所述執(zhí)行電路執(zhí)行所述指令的多個(gè)線程以并行計(jì)算所述至少一個(gè)光線段; 由所述執(zhí)行電路執(zhí)行信標(biāo)實(shí)體的指令以從所述連接列表的頭部去除與指令的線程相對(duì)應(yīng)的信標(biāo)條目;以及由所述信標(biāo)實(shí)體響應(yīng)于所述指令從所述連接列表的頭部去除所述信標(biāo)條目, 其中在各自與關(guān)聯(lián)于所述至少一個(gè)光線段的指令的線程相關(guān)聯(lián)的信標(biāo)條目后合計(jì)所述指令的線程的結(jié)果。
36.如權(quán)利要求1所述的方法,還包括由存儲(chǔ)器存儲(chǔ)信標(biāo),所述信標(biāo)(i)與圖像相關(guān)聯(lián)使得至少一個(gè)片段與相同的圖像相關(guān)聯(lián),并且(ii)包括信標(biāo)條目的鏈接列表,其中的每個(gè)信標(biāo)條目與指令的多個(gè)線程中與所述至少一個(gè)片段相關(guān)聯(lián)的指令的線程相關(guān)聯(lián);由所述執(zhí)行電路執(zhí)行所述指令的多個(gè)線程以并行計(jì)算所述至少一個(gè)片段; 由所述執(zhí)行電路執(zhí)行信標(biāo)實(shí)體的指令以從所述連接列表的頭部去除與指令的線程相對(duì)應(yīng)的信標(biāo)條目;以及由所述信標(biāo)實(shí)體響應(yīng)于所述指令從所述連接列表的頭部去除所述信標(biāo)條目, 其中在各自與關(guān)聯(lián)于所述至少一個(gè)片段的指令的線程相關(guān)聯(lián)的信標(biāo)條目后合計(jì)所述指令的線程的結(jié)果。
全文摘要
本發(fā)明涉及使用多線程架構(gòu)的視覺(jué)和圖形數(shù)據(jù)處理??蓪⒒顒?dòng)和/或主動(dòng)信標(biāo)機(jī)制和線程同步技術(shù)應(yīng)用于各種視覺(jué)和圖形處理技術(shù)。
文檔編號(hào)G06F9/30GK102200927SQ201110105928
公開(kāi)日2011年9月28日 申請(qǐng)日期2004年12月22日 優(yōu)先權(quán)日2003年12月31日
發(fā)明者T·A·皮亞扎, 江宏 申請(qǐng)人:英特爾公司