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