使用多线程架构的视觉和图形数据处理的制作方法

文档序号:6423132阅读:123来源:国知局
专利名称:使用多线程架构的视觉和图形数据处理的制作方法
技术领域
本发明涉及视觉和图形数据处理。本发明尤其涉及使用活动信标机制来执行视觉和图形数据处理操作。
背景技术
“信标”(也称作“临界段”或“互斥(mutex) ”)是硬件和软件结构,它允许其中多进程争夺共享资源(例如,存储器、文件)的操作的协调或同步。一般,信标是存储在操作系统存储器中的指定位置中的值,该值可由进程检查和改变。基于信标的值,进程可访问共享资源或等待一段时间并再次检查该信标。常规计算机系统中的信标通常实现为使用原子“测试和设定”或类似类型的指令 (例如,锁定、位测试、位测试和置位、位测试和复位)的硬件支持的软件例程。使用该信标实现,可通过共享(例如,全局)数据和一个或多个信标建立生产者-消费者通信关系。信标允许共享数据由尝试修改该数据的多个进程中的选定一个进行修改,信标提供了数据的
一致性。该信标结构是“消极的”,因为线程必须执行轮询操作以获取一信标。该轮询需要消耗了可另外地用于其它用途的处理器和系统资源。因此,常规的信标会导致效率低下。


附图中,作为示例而非限制地示出本发明,其中相同的标号表示相似的元件。图1是大量多线程处理器架构的一个实施例的框图。图2a_2d是其中信标可用于同步线程执行的从属关系的概念性示图。图3是其中光线从光源跟踪到观察者的简单示例场景。图4是使用活动信标的光线跟踪的一个实施例的流程图。图5是使用主动有序信标的基于Z缓冲的三维图形渲染的一个实施例的流程图。图6是使用活动和/或主动信标的视频解码的一个实施例的流程图。
具体实施例方式描述了用于使用活动信标的视觉和/或图形数据处理的方法和装置。在以下的描述中,出于说明的目的,列出了大量特定细节以提供本发明的透彻理解。但本领域熟练技术人员显见的是,本发明可以在没有这些特定细节的情况下实施。在其它实例中,按框图形式示出结构和装置以清晰表达本发明。活动信标的示例件使用的概述这里所述的是一种架构和有关方法,其中指令的多个并行被动线程(以下称作“线程”)利用“活动”信标协调对共享资源的访问。信标被称作活动的,因为信标实体发送消息给执行和/或控制电路以引起线程状态改变。例如,线程调度器可以响应于未解决的从属关系将一线程置于休眠(或不活动)模式,这可以由信标指示。与从属关系相对应的线程状态变量被用于指示该线程处于休眠模式。当解决从属关系时,将消息传递给控制电路(例如,线程调度器),它使得从属关系变量被清除。响应于该被清除的从属关系变量,该线程被置于活动(或唤醒)状态。在活动状态中,执行可以在线程上进行。继续以上示例,如果一线程尝试获得信标而不能得到,则该线程被置于不活动状态。因为该线程是不活动的,所以它不能轮询信标以确定信标所指示的从属关系何时被解决,如现有技术中所要求的。该线程保持于不活动状态,直到接收到指示从属关系已被消解的消息(例如从信标实体)。响应于该消息,将该线程置于允许执行进行的活动状态。图1是大量多线程处理器架构的一个实施例的框图。如这里所使用的,标签“大量多线程”架构表示包括可以支持多线程执行的多个处理器的架构。在一个实施例中,每个处理器都可以支持一个或多个线程。通过允许活动线程被执行同时其它线程处于不活动状态,单个处理器上的多线程实现了高执行效率。信标上未决的不活动状态中的线程不消耗/ 浪费处理器资源。尽管描述相对于大量多线程架构,信标结构和有关方法可应用于任何多线程架构而不管所支持的线程的数量。大量多线程系统100包括存储器分层结构110,它存储在一个或多个处理核心执行期间要使用的数据和指令。存储器分层结构110可按本领域已知的任何方式包括动态随机存取存储器(DRAM),一级或多级的指令高速缓存,一级或多级数据高速缓存,和/或一级或多级共享指令和数据高速缓存。线程分配器120与存储器分层结构110耦合,接收诸如与新线程相关联的指令指针和数据和/或数据指针的信息。线程分配器120还经由消息总线125与处理核心耦合。在一个实施例中,线程分配器120负责管理处理核心的线程资源。 在接收到新的未决线程时,线程分配器120选择具有用于执行该未决线程的资源的一个处理核心并将该线程分配到选定的处理核心。在一个处理核心上现有线程完成时,通知线程分配器120,从而使得该处理核心上的线程资源可用于将来的未决线程。系统100被示为具有多个处理器核心(130、131、139、150、151和159),它们每一个都包括具有相关控制电路的执行电路。诸处理器核心可以是相同的或者各处理器核心可具有不同的功能。任何数量的处理器核心都可包含在系统100中。在一个实施例中,处理器核心按行配置,每行都有一行控制器。例如,行控制器140可经由行控制总线145与处理器核心130、131和139耦合。类似地,行控制器160可经由行控制总线165与处理器核心 150、151 和 159 耦合。处理器核心也经由消息总线125与信标实体170耦合。信标实体170包括存储器和控制逻辑以提供如这里所述的信标功能。在一个实施例中,信标实体170通过发送和接收消息与处理器核心交互,如以下更详细地描述的。线程分配器120也经由消息总线125与信标实体170耦合。在一个实施例中,线程分配器通过发送和接收消息使一线程与信标实体170交互,如以下更详细地描述的。每个处理核心中的控制电路可包含线程调度电路以管理在同一处理核心上执行的多个线程的状态,并也可以包含指令调度电路以执行指令的活动线程。在指令执行期间,一个或多个处理核心将尝试访问共享的系统资源。为了获得对共享系统资源的控制,一线程通过响应的执行核心必须获得对与要访问的共享系统资源相对应的信标的控制。在一个实施例中,为了获得对信标的控制,请求的处理核心在消息总线125上将一信标请求消息发送给信标实体170。在发送该信标请求消息后,将请求线程置于不活动状态,其中执行和相关操作(例如,信标的轮询)暂停。响应于接收信标请求消息,信标实体170确定是否将对信标的控制授予请求线程。当授予该信标时,信标实体170将一信标确认消息发送给请求线程。响应于信标确认消息,请求线程被恢复到活动状态,其中使用被请求资源的执行继续。当线程完成了对共享资源的使用后,线程将一释放信标消息发送给信标实体170。响应于该释放信标消息,信标实体170释放该信标并允许其它线程获得对系统资源的访问。在一个实施例中,信标由处理核心执行的指令(信标指令)以及例如通过消息总线125上在处理核心和信标实体之间传递的消息(信标消息)支持。在可选实施例中,可支持不同的和/或附加的消息或指令。基于链接列表的信标实体在一个实施例中,用缓冲池取代常规的经信标队列,所述缓冲池具有用于形成每个信标的链接列表的条目。因此,每个信标都可以是指向由缓冲池中的条目形成的链接列表的首部指针。该链接列表可以是双向链接的列表或者是单向链接的列表。在一个实施例中,信标表包括用于所支持的每个信标的指针。在一个实施例中,信标表中的指针是首部指针,它指示要用于相应信标的链接列表的首部。空闲池指针指示缓冲池的首部且不使用的信标条目包括NULL指针。在一个实施例中,每个信标条目都包括释放状态字段、确认抑制字段、线程标识符字段、前一个指针和下一个指针。在可选实施例中,可以使用其它的和/或不同的字段,例如可省去前一个指针。在一个实施例中,每个信标还可包括单个位(或其它指示符)来指示对应于信标的链接列表是否是空的。信标消息获得信标消息(ACQ_MSG)用于一线程,或为一线程的线程分配器,以向信标实体请求一信标的所有权。在一个实施例中,ACQ_MSG包含信标标识符字段、线程标识符字段、 “自动释放”字段和“确认-抑制”(确认-抑制)字段。自动释放字段用于仅具有首部从属关系的线程。即,该线程取决于先前的线程,但无后续线程取决于该线程。确认-抑制字段用于仅具有尾部从属关系的线程。即,该线程不取决于任何先前的线程,但该线程具有取决于它的后续线程。ACQ_MSG可由线程分配器或与该线程相关的其它控制电路发出。在一个实施例中,在接收到ACQ_MSG时,通过从空闲池列表中去除首部条目并将它添加到选定信标的尾部,信标实体将用于请求线程的信标条目排队到目标信标的链接列表。信标条目的字段基于ACQ_MSG中的信息被更新;线程标识符字段、释放状态字段和确认-抑制字段由ACQ_MSG中的请求者的线程标识符、自动释放字段和确认-抑制字段取代。 如果信标链接列表在ACQ_MSG前不空,则信标实体不发送消息。否则,如果在接收到ACQ_ MSG前信标链接列表为空,则采取以下动作之一。如果确认-抑制字段未被设定,具有线程标识符的ACK_MSG在消息总线125上从信标实体发送到请求线程。如果确认-抑制字段被设定,则不从信标实体发送ACK_MSG。如果自动释放字段未被设定,则在信标链接列表中保持刚排队的信标条目。如果自动释放字段被设定,则从信标链接列表中去除该刚排队的信标条目。释放信标消息(REL_MSG)被用于一线程以向信标实体请求释放信标的所有权。在一个实施例中,REL_MSG包括信标标识符字段和线程标识符字段。在一个实施例中,REL_MSG 仅可由与具有信标所有权的线程相关联的控制电路发出,即线程标识符位于信标链接列表的顶部。在接收到REL_MSG时,信标实体从信标链接列表的首部中去除条目。在另一实施例中,REL_MSG可由与任何共享信标的线程相关联的控制电路发出。在接收到REL_MSG时,信标实体复位释放状态字段到信标链接列表中的相应条目,而不管该条目在链接列表中的位置。如果信标条目位于链接列表的首部,则从信标链接列表的该首部中去除该条目。随后,下一个条目变成链接列表的首部。如果下一个条目不是NULL,则它将被检查。如果该链接列表的新首部将释放状态字段设定,则它将再次从信标链接列表的首部中被去除。在一个实施例中,该递归进程继续直到链接列表的首部为NULL(信标队列空)或者链接列表的首部将释放状态字段复位(等待信标从与条目相对应的线程中释放)。如果链接列表的首部不是NULL且确认-抑制字段未被设定,则ACK_MSG由信标实体发送到条目的线程标识符字段所标识的线程。如果链接列表的首部不是NULL且确认-抑制字段被设定,则不发送ACK_MSG。信标确认消息(ACK_MSG)由信标实体生成,以通知一线程已获得请求的信标。在一个实施例中,ACK_MSG包括信标标识符字段和线程标识符字段。ACK_MSG仅由信标实体发出并由执行在该线程标识符字段所标识的线程的处理核心接收。在接收到ACK_MSG时,接收处理核心复位由线程标识符字段所标识的线程的等待-信标状态变量。如果线程处于不活动状态,则将线程状态变成活动状态信标指令获得信标(ACQ指令使得ACQ_MSG消息被发送给信标实体,其中该信标实体带有请求信标的信标标识符、请求线程的线程标识符并带有复位的自动释放字段。将线程放入不活动状态,其中等待信标状态字段被设定。ACS指令与(跟在后面的)释放信标(RLS)指令(以下描述)成对。ACS_RLS指令对可用于临界段应用。具有自动释放(ASR)指令的获得信标使得ACQ_MSG被发送给信标实体,其中该信标实体带有请求信标的信标标识符、请求线程的线程标识符并带有设定的自动释放字段。 将线程置于不活动状态,其中等待信标状态字段被设定。在一个实施例中,ASR指令不能与 RLS指令成对。在一个实施例中,ASR指令被用于仅具有首部从属关系的线程。等待信标(WTQ指令使得等待信标线程状态被检查。如果该状态被设定,则将线程置于不活动状态。如果该状态未设定,则线程保持于活动状态。响应于WTS指令,不向信标实体发送消息。WTS指令的使用意味着线程分配器先前使用ACQ_MSG为线程在线程分配时间获得信标。如果确认-抑制字段在先前由线程分配器发出的ACQ_MSG中被设定,则不使用WTS指令。释放信标(RLQ指令使得REL_MSG被发送给信标实体,它具有用于被释放的信标的信标标识符以及用于释放线程的线程标识符。释放线程保持于活动状态。如果ACS指令先前已被发给释放线程,则发出仅一个RLS指令。如果ASR指令先前已发给释放线程,则不
9发出RLS指令。如果WTS指令已发给释放线程,则WTS指令根据线程分配器发送的ACQ_MSG 的自动释放字段可以后面跟着或不跟着RLS指令。如果自动释放字段被复位,则不发出RLS 指令。如果自动释放字段被设定,则RLS指令跟随WTS指令。活动信标的示例件获得当指令的线程由处理器执行时,在资源可用时执行指令。当需要具有信标的资源时,例如共享的存储器位置,会需要信标的所有权来访问该资源。因此,在需要信标之前,指令线程的执行按本领域已知的任何方式进行。在一个实施例中,当需要信标时,执行获得信标(ACS)指令。ACS指令可以由执行请求该信标的指令的线程的处理器执行。作为ACS指令的执行的一部分或者响应于其执行,执行该线程的处理核心在消息总线上将获得信标消息(ACQ_MSG)发送给信标实体。以上描述了 ACQ_MSG的一种格式。也可以使用其它格式。作为ACS指令执行的一部分或者响应于其执行,将请求信标的线程置于不活动状态,其中等待信标状态字段被设定。通过将线程置于不活动状态,不执行线程中的指令,它在初始信标请求被拒绝时包括请求的信标的轮询。通过将线程置于不活动状态,轮询信标的线程不消耗处理器资源和系统带宽。对于支持多线程的处理核心,处理器资源和系统带宽可由其它的活动线程使用。信标实体接收ACQ_MSG并将请求者信息条目置于目标信标的链接列表。如果该信标不由另一线程所有或控制,则该信标条目被置于信标链接列表的首部,因为没有其它的条目。如果该信标由另一线程所有或控制,则将该信标条目置于信标链接列表的尾部。在一个实施例中,通过从首部条目到尾部条目地遍历缓冲池中的链接列表条目来标识链接列表的尾部且新的条目变成新的尾部条目。在另一实施例中,链接列表的尾部直接由信标表中存储的链接列表的尾部指针标识。当线程完成对与信标相对应的资源的使用时,具有该信标的线程释放对信标的控制,这将在以下更详细地描述。当释放一个信标时,信标链接列表的首部处的相应信标条目被去除且链接列表中的后续信标条目变成该链接列表的首部。当一个信标条目变成信标链接列表的首部时,信标实体检查其状态字段。如果确认-抑制字段未设定,则确认消息(ACK_MSG)从信标实体发送到与信标条目相关联的线程。 以上描述了 ACK_MSG的一种格式。也可以使用其它格式。ACK_MSG向接收实体表示该接收实体已被授予对相应信标的控制。响应于ACK_MSG,激活相应的线程。当被激活时,线程中指令的处理重新开始且可以访问与信标相对应的共享资源。当线程完成了对共享资源的访问时,释放信标,这将在以下更详细地描述。活动信标的示例性释放在一个实施例中,当执行释放信标(RLQ指令时释放信标。RLS指令可由执行请求信标的指令的线程的处理器执行。作为RLS指令执行的一部分或响应于其执行,将释放信标消息(REL_MSG)发送给信标实体。以上描述了用于REL_MSG的一种格式。也可以使用其它格式。响应于REL_MSG,信标实体将REL_MSG的线程标识符字段与信标链接列表匹配。如果相应的信标条目在链接列表的首部,信标实体就从链接列表的首部中去除线程条目。链接列表中后续的条目变成首部条目。随后,可以将该信标授予与新首部条目相对应的线程。 如果相应的信标条目不在链接列表的首部,则信标实体设定信标条目的释放状态字段。行为樽型基于所使用的链接列表的形式,信标可分类为关联信标或有序信标。基于来自信标实体的ACK_MSG的发送,信标可分类为活动信标或主动信标。因此,可以支持四种类型的信标。关联信标的一个实施例的概述关联信标允许并发线程按任何顺序访问信标。在一个实施例中,在与NULL链接列表(或用于指示一空链接列表的单个位)的会话开始时,信标由线程分配器初始化。不从线程分配器将其它消息发送给信标实体。执行多指令线程的执行电路在运行过程中建立信标链接列表。在一个实施例中,一线程通过执行ACS或ASR指令来请求关联的信标。线程通过执行RLS指令来释放一关联信标。在一个实施例中,新ACQ_MSG将导致与请求线程相对应的条目放置在信标链接列表的尾部。这提供了先来先服务(FCre)的信标模型。有序信标的一个实施例的概述有序信标允许并发线程按预定顺序访问信标。该顺序在分配时由线程分配器预先确定。该顺序可以是取决于应用程序的。当线程分配实际上是串行的时,线程分配器可为每个分配的线程发送一 ACQ_MSG到信标实体,以根据该顺序构建信标链接列表。进入临界段的线程可使用WTS指令以等待信标的所有权。由于线程已置于信标链接列表中,不使用ACS和ARS指令。在一个实施例中,信标实体可仅根据链接列表顺序提供对信标的控制。信标上等待的线程将按链接列表的顺序接收ACQ_MSG。活动信标的一个实施例的概述如上所述,采用活动信标,ACQ_MSG被用于使得一线程从不活动状态变成活动状态。信标实体从执行线程的执行电路接收一个或多个ACQ_MSG。信标实体仅发送一个ACK_ MSG到与信标链接列表的首部处的线程相对应的执行电路。在去除信标链接列表的首部时, 信标实体检查链接列表的新首部的状态,并可以将后续ACK_MSG发送给与信标链接列表的新首部的线程相对应的执行电路。活动信标也可以是关联信标。主动信标的一个实施例的概述主动信标发送一个且仅一个ACK_MSG给信标链接列表的首部处的线程,无论该线程是否处于不活动状态。这使用具有先前由线程分配器发送的ACQ_MSG的排序的信标应用于线程,使得仅一个ACK_MSG被发送给一线程。使用排序的信标的线程可包含WTS和/或 RLS指令。对于主动信标,ACK_MSG由信标实体自动发送到信标链接列表首部处的线程。在一个实施例中,存在“危险条件”的可能性,如果来自线程的条目的计时在信标链接列表中由线程分配器排队的情况下并且在线程对于执行电路可见的时候可能存在此情况。因为这两个动作由线程分配器启动但经过不同的数据路径发生,所以必须考虑这些事件的计时。如果线程执行在信标配置前开始,如果线程中有WTS指令,则将没有危险条件。因为等待信标线程状态变量由线程分配器设定,即使线程的WTS指令在线程被排队到信标链接列表之前达到,也不出现危险条件。WTS指令使得线程进入不活动状态而不发送消息到信标实体。当信标实体发送ACK_MSG到线程时,执行电路再次使得线程活动。如果信标由线程分配器配置,其中确认-抑制字段被设定,则会导致危险条件。在这种情况中,线程将不被置于不活动状态。相反,如果在为线程配置信标前线程到达RLS指令并将REL_MSG发送给信标实体,则信标实体会不处于处理REL_MSG的条件。为避免这种危险条件,线程执行和信标实体可确保REL_MSG不传送由线程分配器发出的ACQ_MSG。因此,在一个实施例中,为避免危险条件,如果确认-抑制未被设定,则线程分配器在信标配置完成前完成线程配置。如果确认-抑制字段被设定,则线程分配器在完成线程配置前完成信标配置。因为线程分配器串行地分配准备好的线程,串行操作可确保必要的排序。当线程配置在信标配置前完成时,在发送消息引起信标配置前,线程分配器可分配一线程并等待指示线程配置完成的信号。当信标配置在线程配置前完成时,线程分配器可发送消息以启动信标的配置并等待指示在分配线程前信标配置完成的信号。因为串行配置会不必要地限制来自分配器的吞吐量,可使配置操作流水线化。线稈同步图2a_2d是从属关系的概念示图,其中信标可用于同步线程执行。图加示出了 1:1:1( 一对一)从属关系。图加的从属关系可以是强串行顺序从属关系或关联从属关系。 对于强连续顺序从属关系,可以使用单个主动的有序信标。在一个实施例中,在从线程分配器发送给信标实体以请求信标的ACQ_MSG中,确认-抑制字段和自动释放字段都被复位。指令的线程包括WTS-RLS指令对,以获得和释放信标。对于关联从属关系,可以使用单个活动的关联信标。在一个实施例中,在从执行线程的执行电路发送到信标实体以请求信标的ACQ_MSG中,确认-抑制字段和自动释放字段都被复位。指令的线程包括ACS-RLS指令对以获得和释放信标。图2b示出了 1:N(1对多)从属关系,其中一个线程对N个其它线程具有首部从属关系,其中N个其它线程不相互从属。这里,N是可以是一或大于一的正整数。对于1:N 从属关系,可使用单个主动的有序信标。在一个实施例中,对于N个独立线程,ACQ_MSG由线程分配器为N个线程发送。在从线程分配器发送给信标实体以请求信标的ACQ_MSG中, 确认-抑制字段被设定且自动释放字段被复位。对于对其它N个线程有首部从属关系的单个线程,ACQ_MSG也由线程分配器发送。在请求信标的ACQ_MSG中,确认-抑制字段被复位且自动释放字段被设定。N个指令线程仅包括RLS指令来释放信标。单个指令线程包括 WTS-RLS指令对以获得和释放信标。图2c示出了 N: 1 (多对一)从属关系,其中N个线程具有对单个线程的首部从属关系但这N个线程不相互从属。对于N: 1从属关系,可以使用单个主动的有序信标。在一个实施例中,线程分配器负责为N个依赖(copending)线程和一个从属(d印endent)线程两者发送ACQ_MSG。在一个实施例中,对于单个从属线程,在请求信标的ACQ_MSG中,确认-抑制字段被设定且自动释放字段被复位。对于N个依赖线程,在请求信标的ACQ_MSG中,确认-抑制字段被复位且自动释放字段被设定。指令的单个从属线程仅包括RLS指令以释放信标。指令的N个依赖线程包括WTS-RLS指令对以获得并释放信标。图2d示出了 N:M(多对多)从属关系,其中N个依赖线程具有对M个从属线程的首部从属关系。在这种情况中,N个依赖线程不相互从属,且M个从属线程不相互从属。与
12上述1 1 1,1 :N和N: 1的情况相比,N:M依赖性情况是更一般的情况。对于N:M从属关系, 可以使用单个主动的有序信标。在一个实施例中,线程分配器负责为N个依赖线程和M个从属线程两者发送ACQ_MSG。在一个实施例中,对于M个从属线程,在用于请求信标的ACQ_ MSG中,确认-抑制字段被设定且自动释放自动被复位。对于N个依赖线程,在用于请求信标的ACQ_MSG中,确认-抑制字段被复位且自动释放自动被设定。指令的M个从属线程仅包括一 RLS指令以释放信标。指令的N个依赖线程包括WTS-RLS指令对以获得并释放信标。图加_2(1的从属关系可用于支持更复杂的从属关系。例如,对于N: 1:N从属关系, 使用两个主动的有序信标。如以上参考图2c所述地处理N: 1从属关系并如以上参考图2b 所述地处理1: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。在使用光线跟踪技术渲染图像时,可通过使视线(eye ray)开始于每个屏幕位置来渲染图像屏幕。屏幕位置也称作目的地像素。每个视线将横穿三维场景空间,并由于与场景中对象的反射和折射相互作用而生成一个或许多光线段。与不同目的地像素相关联的光线段彼此独立。与不同目的地像素相关联的光线段的处理可并行计算而不修改共享资源并因此不使用信标机制。当图像屏幕上存在许多目的地像素时,光线跟踪问题可良好地用于大量多线程的计算架构。对于单个目的地像素,可以有多个光线段。在累加多个光线段对单个像素的贡献时,最终颜色可确定为与该像素相关联的每个光线段的加权和。例如,当在大量多线程计算架构上用不同线程处理到单个像素的光线段时,作为与同一像素相关联的线程的共享资源的像素最终颜色的更新需要使用信标机制。例如,上述N: 1从属关系机制可用于光线跟踪。使用活动和/或主动信标,用于跟踪光线段(包括与共用像素相关联的光线段) 的操作可并行执行。在一个实施例中,可通过散列目的地像素地址来确定信标标识符。如果可用信标少于独立像素,一些像素可共享一信标。这是性能问题而非功能问题。在该实施例中,可动态使用信标而没有全局同步。在不使用信标的情况下,顺序地执行用于跟踪与像素相关联的光线段的操作。因此,使用具有光线跟踪技术的信标允许较大的并行处理。图3是其中光线从光源跟踪到观察者的简单示例场景。大量光线在光源300和观察者300之间行进;但出于简化描述的原因,图3中仅示出较少数量的光线。光线340直接从光源300行进到观察者330。因为光线340不被反射或折射,所以与光线340相对应的像素由光源300所提供的光的颜色表示。由于光由对象310反射,所以用于与光线段350和355相对应的光的光线跟踪计算更加复杂。如上所述,用于段350和355的光线跟踪操作可以并行执行。因此,段350和355 的光线跟踪操作可作为两个线程执行,将其结果组合以提供从多个光线跟踪操作获得的像素颜色。如上所述,可以用活动信标完成两个线程的协调。图4是使用活动信标的光线跟踪的一个实施例的流程图。410中,确定光线路径。 光线路径的确定可按本领域已知的任何方式完成。420中,光线跟踪操作中所使用的组件 (例如,硬件组件、软件组件等)确定多个光线段是否影响单个像素。如果在420中单个光线段影响单个像素,则在425中跟踪光线路径。对于该单个光线段,可以使用本领域已知的任何光线跟踪技术。475中,基于光线跟踪操作的结果,确定像素颜色。随后,该像素可以被显示、打印或另外渲染用于观看。如果在420中多个光线段影响单个像素,则可并行跟踪这多个光线段中的一个或多个。并行光线跟踪多个光线段可以形成N:1的从属关系,其中像素结果依赖于用于N个光线段的光线跟踪操作的结果。如上所述地处理该N: 1从属关系。当在440中从属关系被解析时,在450中可累加多个光线跟踪操作的结果。在475 中根据累加的光线跟踪操作的结果确定像素颜色。随后,该像素可以被显示、打印或另外渲染用于观看。使用活动信标的基于Z缓冲的三维涫染在基于Z缓冲的三维图形渲染中,所渲染的对象被分成渲染基元(primitive),诸如点、线、三角、三角带等。将渲染基元投影到观察屏上。被投影到不同屏像素上的渲染基元可独立渲染。当多个不透明基元被投影到同一屏像素上时,仅其它基元前的基元(具有离目的地像素的更小距离度量,所谓的Z值)更新屏像素颜色。Z缓冲是屏幕大小缓冲,它逐像素地存储对屏像素的最近更新的Z值。使用Z-测试来解决昏暗。对于在屏幕像素上投影的任何基元,将基元的Z值与用于屏幕像素的Z缓冲中存储的Z值进行比较。如果基元的Z值小于Z缓冲值,则用来自基元的渲染颜色更新目的地像素颜色,也更新Z缓冲值。如果基元的Z值等于或大于Z缓冲值,则不改变目的地像素颜色以及相应的Z缓冲值。为了生成一致的屏幕图像,投影到同一屏幕像素上的基元必须按严格的次序渲染。可以使用在大量线程化架构上多线程处理实现基于Z缓冲的三维渲染。例如,独立基元可通过独立线程渲染。基元之间的从属关系,例如通过多个基元对共同像素的Z缓冲测试和更新,可以利用上述信标机制解析。图5是使用主动有序信标的基于Z缓冲的三维图形渲染的一个实施例的流程图。 在510中,要渲染的对象可基于对观察屏幕的投影被分段成多个基元和多个基元部分。在 520中,基于投影的屏幕像素位置为这些基元或基元部分配置信标。在530中,通过指令的多个线程对这些基元或基元部分执行渲染操作。线程可由一个或多个处理器执行并可使用一个或多个上述信标机制解析从属关系。例如,被投影于同一屏幕像素上的通过不同线程进行的多个基元的三维渲染可形成1:1:1从属关系,其中每个线程的Z测试和目的地颜色更新取决于在该线程前的更新同一屏幕像素的一个或多个线程的结果。该1:1:1从属关系如上所述地被处理。当在MO中解析了从属关系时,在550中用于给定基元或基元段的线程执行Z测试并在Z测试成功时更新用于投影像素的Z值和颜色值。在560中最终的渲染图像在渲染了基元之后生成。随后,可以显示、打印或另外地显现最终的渲染图像用于观察。使用活动信标的视频解码在一些视频编码标准中,例如MPEG-2,图片(视觉对象平面或V0P)内的一个或多个段(诸如宏模块)的组可通过指令的独立线程被解码。在一些视频编码标准中,例如 MPEG-4,诸如宏模块的图片段的解码具有其它图片段解码的从属关系。因此,可通过多线程架构上指令的多个线程解码一图片。这些线程之间的从属关系可利用上述信标机制解析。例如,在2000 年 10 月出版的 IS0/IEC 13818 "Generic coding of moving pictures and associated audio information”以及有关标准中描述了 MPEG—2。例如,在 2002 年 3 月出版的 IS0/IEC 14496 "Coding of audio-visual objects” 以及有关标准中描述了 MPEG-4。图6是使用活动和/或主动信标的视频解码的一个实施例的流程图。该流程图描绘了视频序列的一个图片的解码过程。可以重复相同的过程以解码视频序列的多个图片。 在610中确定要解码的图片的段。这些段例如可以是块、块组、宏模块或宏模块组,或者要解码的帧的任何其它段。在一个实施例中,在通过指令的不同线程对这些段执行解码操作640前,确定段间从属关系。如果在620中一段具有首部从属关系-段的解码取决于其它段的解码结果, 一在625中为处理该段的指令线程配置具有首部从属关系的一个或多个信标。如果在630 中段具有尾部从属关系-后续段的解码取决于该段的解码结果,-在635中为处理该段的指令线程配置具有尾部从属关系的一个或多个信标。在640中通过指令的多个线程对这些段进行解码操作。这些线程可以由一个或多个处理器执行并可使用上述信标机制中的一种或多种解析从属关系。例如,对于具有对N 个段的首部从属关系的一个段,可以使用按N: 1从属关系模式配置的信标解析这些段的从属关系。用具有尾部从属关系的信标配置N个从属段的线程以及用具有首部从属关系的信标配置那一个依赖段。如上所述地处理该N: 1从属关系。当在640中解析了段的从属关系时,在660中生成解码段的结果。在670中从合计的段结果中生成最终图片。随后,最终解码图片可被显示、打印或另外地显现用于观察。Mrk说明书中对“一个实施例”或“一实施例”的引用意味着联系该实施例描述的特殊特点、结构或特征包含于本发明的至少一个实施例中。说明书中各处短语“在一个实施例中”的出现不必都涉及同一实施例。在前述说明书中,已参考其特定实施例描述了本发明。但显然,可以对其进行各种修改和变化而不背离本发明的较宽精神和范围。因此,说明书和附图被认为是说明性而非限制性的。
权利要求
1.一种方法,包括由存储器维持用于指令的第一线程的状态指示; 由执行电路执行指令的第一线程以处理要显示的图像的第一图形元素; 由所述执行电路执行指令的第二线程以处理要显示的图像的第二图形元素; 如果所述用于指令的第一线程的状态指示被设定,则由所述执行电路响应于与第一图形元素和第二图形元素之间的关系有关的一组预定条件中至少一个的检测,将指令的第一线程置于不活动状态;由所述执行电路将指令的第一线程保持于不活动状态直到从信标实体接收到一消息;由所述信标实体将消息发送到所述执行电路,所述消息用于重新开始指令的所述第一线程的执行;以及由所述执行电路响应于从信标实体接收到所述消息重新开始指令的所述第一线程的执行并且复位所述指令的第一线程的状态指示,其中当分配所述指令的第一线程时设定所述状态指示。
2.如权利要求1所述的方法,其特征在于,所述一组预定条件包括未解析的从属关系。
3.如权利要求1所述的方法,其特征在于,所述一组预定条件包括缺少来自指示与该信标相对应的资源不可用的所述信标的响应。
4.如权利要求1所述的方法,其特征在于,所述存储器还维持用于指令的第二线程的状态指示。
5.如权利要求4所述的方法,其特征在于,指令的每个线程的状态指示包括与指令的相关联线程的从属关系(若有)相对应的状态变量。
6.如权利要求1所述的方法,其特征在于,所述指令的第一线程包括第一组光线跟踪指令,且所述第一图形元素包括第一光线段,其中所述指令的第二线程包括第二组光线跟踪指令,且所述第二图形元素包括第二光线段。
7.如权利要求1所述的方法,其特征在于,所述指令的第一线程包括第一组视频解码指令且所述第一图形元素包括第一图片段,且所述指令的第二线程包括第二组视频解码指令且所述第二图形元素包括第二图片段。
8.如权利要求7所述的方法,其特征在于,所述第一图片段包括第一宏模块且所述第二图片段包括第二宏模块。
9.如权利要求1所述的方法,其特征在于,所述指令的第一线程包括第一组三维渲染指令且第一图形元素包括第一渲染基元,且所述指令的第二线程包括第二组三维渲染指令且第二图形元素包括第二渲染基元。
10.如权利要求9所述的方法,其特征在于,所述第一渲染基元包括第一点、第一线、 第一三角形和第一三角带之一,且所述第二渲染基元包括第二点、第二线、第二三角形和第二三角带之一。
11.如权利要求9所述的方法,其特征在于,还包括由执行电路执行指令的线程确定用于所述第一渲染基元的Z值; 由所述执行电路执行指令的线程确定用于所述第二渲染基元的Z值; 由所述执行电路执行指令的线程比较用于所述第一渲染基元和所述第二渲染基元的Z值以确定所述第一渲染基元和所述第二渲染基元之间的关系;以及由所述执行电路执行指令的线程基于所述第一渲染基元和第二渲染基元之间的关系显示所述第一渲染基元和所述第二渲染基元中的选定一个。
12.一种装置,包括耦合于执行电路的存储器,用于存储指令的第一线程,所述存储器维持用于指令的第一线程的状态指示;所述执行电路,用于接收并执行与图像的第一图形元素相对应的所述指令的第一线程以及与图像的第二图形元素相对应的指令的第二线程,其中如果所述用于指令的第一线程的状态指示被设定,则所述执行电路发送一信标请求消息并响应于需要具有相关信标的资源的所述指令的第一线程将所述指令的第一线程置于不活动状态;以及与所述执行电路耦合的信标实体,用于从所述执行电路接收信标请求消息并用于对于所述指令的第一线程,响应于所述信标请求消息通过向所述执行电路发送信标确认消息来选择性地授予信标的控制,其中所述执行电路响应于接收到所述信标确认消息,将所述指令的第一线程从不活动状态中去除并且复位所述用于指令的第一线程的状态指示,其中当分配所述指令的第一线程时设定所述状态指示。
13.如权利要求12所述的装置,其特征在于,所述执行电路包括第一执行电路,用于执行所述指令的第一线程;以及第二执行电路,用于执行所述指令的第二线程。
14.如权利要求12所述的装置,其特征在于,所述指令的第一线程包括第一组光线跟踪指令且所述第一图形元素包括第一光线段,以及所述指令的第二线程包括第二组光线跟踪指令且所述第二图形元素包括第二光线段。
15.如权利要求12所述的装置,其特征在于,所述指令的第一线程包括第一组视频解码指令且所述第一图形元素包括第一图片段,以及所述指令的第二线程包括第二组视频解码指令且所述第二图形元素包括第二图片段。
16.如权利要求15所述的装置,其特征在于,所述第一图片段包括第一宏模块且所述第二图片段包括第二宏模块。
17.如权利要求12所述的装置,其特征在于,所述指令的第一线程包括第一组三维渲染指令且所述第一图形元素包括第一渲染基元,以及所述指令的第二线程包括第二组三维渲染指令且所述第二图形元素包括第二渲染基元。
18.如权利要求17所述的装置,其特征在于,所述第一渲染基元包括第一点、第一线、 第一三角形和第一三角带之一,且所述第二渲染基元包括第二点、第二线、第二三角形和第二三角带之一。
19.如权利要求12所述的装置,其特征在于,所述存储器还存储所述指令的第二线程。
20.如权利要求12所述的装置,其特征在于,还包括至少一个附加执行电路,用于执行指令的线程;以及与所述执行电路和至少一个附加执行电路耦合的线程分配器,用于分配用于执行的指令的线程。
21.如权利要求12所述的装置,其特征在于,当所述指令的第一线程处于不活动状态时,指令的执行停止且执行电路不轮询所述信标实体以确定信标请求消息的状态。
22.—种设备,包括用于维持用于指令的第一线程的状态指示的装置; 用于执行指令的第一线程以处理要显示的图像的第一图形元素的装置; 用于执行指令的第二线程以处理要显示的图像的第二图形元素的装置; 用于在所述用于指令的第一线程的状态指示的情况下,响应于与第一图形元素和第二图形元素之间的关系有关的一组预定条件中至少一个的检测,将指令的第一线程置于不活动状态的装置;用于将指令的第一线程保持于不活动状态直到从信标实体接收到一消息的装置; 用于由信标实体发送用于重新开始指令的所述第一线程的执行的消息的装置;以及用于响应于从信标实体接收到所述消息重新开始指令的所述第一线程的执行并且复位所述指令的第一线程的状态指示的装置,其中当分配所述指令的第一线程时设定所述状态指示。
23.如权利要求22所述的装置,其特征在于,所述指令的第一线程包括第一组光线跟踪指令且所述第一图形元素包括第一光线段,以及所述指令的第二线程包括第二组光线跟踪指令且所述第二图形元素包括第二光线段。
24.如权利要求22所述的装置,其特征在于,所述指令的第一线程包括第一组视频解码指令且所述第一图形元素包括第一宏模块,以及所述指令的第二线程包括第二组视频解码指令且所述第二图形元素包括第二宏模块。
25.如权利要求22所述的装置,其特征在于,所述指令的第一线程包括第一组三维渲染指令且所述第一图形元素包括第一渲染基元,以及所述指令的第二线程包括第二组三维渲染指令且所述第二图形元素包括第二渲染基元。
26.一种系统,包括 存储器控制器;与所述存储器控制器耦合的执行电路,用于接收和执行与图像的第一图形元素相对应的指令的第一线程和与图像的第二图形元素相对应的指令的第二线程,其中如果用于指令的第一线程的状态指示被设定,所述执行电路发送一信标请求消息并响应于需要具有相关信标的资源的所述指令的第一线程将所述指令的第一线程置于不活动状态;以及与所述执行电路耦合的信标实体,用于从所述执行电路接收信标请求消息并用于响应于所述信标请求消息通过向所述执行电路发送信标确认消息来选择性地授予所述信标的控制,其中所述执行电路响应于接收到所述信标确认消息,将所述指令的第一线程从不活动状态中去除并且复位所述用于指令的第一线程的状态指示;以及耦合于所述存储器控制器的存储器,用于存储指令的第一线程,所述存储器维持所述用于指令的第一线程的状态指示,其中当分配所述指令的第一线程时设定所述状态指示。
27.如权利要求沈所述的系统,其特征在于,所述执行电路包括 第一执行电路,用于执行所述指令的第一线程;以及第二执行电路,用于执行所述指令的第二线程。
28.如权利要求沈所述的系统,其特征在于,所述指令的第一线程包括第一组光线跟踪指令且所述第一图形元素包括第一光线段,以及所述指令的第二线程包括第二组光线跟踪指令且所述第二图形元素包括第二光线段。
29.如权利要求沈所述的系统,其特征在于,所述指令的第一线程包括第一组视频解码指令且所述第一图形元素包括第一宏模块,以及所述指令的第二线程包括第二组视频解码指令且所述第二图形元素包括第二宏模块。
30.如权利要求四所述的系统,其特征在于,所述第一图片段包括第一宏模块且所述第二图片段包括第二宏模块。
31.如权利要求沈所述的系统,其特征在于,所述指令的第一线程包括第一组三维渲染指令且所述第一图形元素包括第一部分渲染基元,以及所述指令的第二线程包括第二组三维渲染指令且所述第二图形元素包括第二渲染基元。
32.如权利要求31所述的系统,其特征在于,所述第一渲染基元包括第一点、第一线、 第一三角形和第一三角带之一,且所述第二渲染基元包括第二点、第二线、第二三角形和第二三角带之一。
33.如权利要求沈所述的系统,其特征在于,还包括与所述存储器控制器耦合的存储器,用于存储所述指令的第一线程和所述指令的第二线程。
34.如权利要求沈所述的系统,其特征在于,当所述指令的第一线程处于不活动状态时,指令的执行停止且执行电路不轮询所述信标实体以确定信标请求消息的状态。
35.如权利要求1所述的方法,还包括由存储器存储信标,所述信标(i)与目的地像素相关联使得至少一个光线段与相同的目的地像素相关联,并且(ii)包括信标条目的链接列表,其中的每个信标条目与指令的多个线程中与所述至少一个光线段相关联的指令的线程相关联;由所述执行电路执行所述指令的多个线程以并行计算所述至少一个光线段; 由所述执行电路执行信标实体的指令以从所述连接列表的头部去除与指令的线程相对应的信标条目;以及由所述信标实体响应于所述指令从所述连接列表的头部去除所述信标条目, 其中在各自与关联于所述至少一个光线段的指令的线程相关联的信标条目后合计所述指令的线程的结果。
36.如权利要求1所述的方法,还包括由存储器存储信标,所述信标(i)与图像相关联使得至少一个片段与相同的图像相关联,并且(ii)包括信标条目的链接列表,其中的每个信标条目与指令的多个线程中与所述至少一个片段相关联的指令的线程相关联;由所述执行电路执行所述指令的多个线程以并行计算所述至少一个片段; 由所述执行电路执行信标实体的指令以从所述连接列表的头部去除与指令的线程相对应的信标条目;以及由所述信标实体响应于所述指令从所述连接列表的头部去除所述信标条目, 其中在各自与关联于所述至少一个片段的指令的线程相关联的信标条目后合计所述指令的线程的结果。
全文摘要
本发明涉及使用多线程架构的视觉和图形数据处理。可将活动和/或主动信标机制和线程同步技术应用于各种视觉和图形处理技术。
文档编号G06F9/30GK102200927SQ201110105928
公开日2011年9月28日 申请日期2004年12月22日 优先权日2003年12月31日
发明者T·A·皮亚扎, 江宏 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1