CN101147126A - 使用多线程架构的视觉和图形数据处理 - Google Patents

使用多线程架构的视觉和图形数据处理 Download PDF

Info

Publication number
CN101147126A
CN101147126A CNA2004800348584A CN200480034858A CN101147126A CN 101147126 A CN101147126 A CN 101147126A CN A2004800348584 A CNA2004800348584 A CN A2004800348584A CN 200480034858 A CN200480034858 A CN 200480034858A CN 101147126 A CN101147126 A CN 101147126A
Authority
CN
China
Prior art keywords
thread
beacon
instruction
primitive
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2004800348584A
Other languages
English (en)
Other versions
CN101147126B (zh
Inventor
江宏
T·A·皮亚扎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101147126A publication Critical patent/CN101147126A/zh
Application granted granted Critical
Publication of CN101147126B publication Critical patent/CN101147126B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Image Generation (AREA)
  • Executing Machine-Instructions (AREA)
  • Digital Computer Display Output (AREA)

Abstract

可将活动和/或主动信标机制和线程同步技术应用于各种视觉和图形处理技术。

Description

使用多线程架构的视觉和图形数据处理
技术领域
本发明涉及视觉和图形数据处理。本发明尤其涉及使用活动信标机制来执行视觉和图形数据处理操作。
背景技术
“信标”(也称作“临界段”或“互斥(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时,接收处理核心复位由线程标识符字段所标识的线程的等待-信标状态变量。如果线程处于不活动状态,则将线程状态变成活动状态
信标指令
获得信标(ACS)指令使得ACQ_MSG消息被发送给信标实体,其中该信标实体带有请求信标的信标标识符、请求线程的线程标识符并带有复位的自动释放字段。将线程放入不活动状态,其中等待信标状态字段被设定。ACS指令与跟在后面的释放信标(RLS)指令(以下描述)成对。ACS_RLS指令对可用于临界段应用。
具有自动释放(ASR)指令的获得信标使得ACQ_MSG被发送给信标实体,其中该信标实体带有请求信标的信标标识符、请求线程的线程标识符并带有设定的自动释放字段。将线程置于不活动状态,其中等待信标状态字段被设定。在一个实施例中,ASR指令不能与RLS指令成对。在一个实施例中,ASR指令被用于仅具有首部从属关系的线程。
等待信标(WTS)指令使得等待信标线程状态被检查。如果该状态被设定,则将线程置于不活动状态。如果该状态未设定,则线程保持于活动状态。响应于WTS指令,不向信标实体发送消息。WTS指令的使用意味着线程分配器先前使用ACQ_MSG为线程在线程分配时间获得信标。如果确认-抑制字段在先前由线程分配器发出的ACQ_MSG中被设定,则不使用WTS指令。
释放信标(RLS)指令使得REL_MSG被发送给信标实体,它具有用于被释放的信标的信标标识符以及用于释放线程的线程标识符。释放线程保持于活动状态。如果ACS指令先前已被发给释放线程,则发出仅一个RLS指令。如果ASR指令先前以发给释放线程,则不发出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,激活相应的线程。当被激活时,线程中指令的处理重新开始且可以访问与信标相对应的共享资源。当线程完成了对共享资源的访问时,释放信标,这将在以下更详细地描述。
活动信标的示例性释放
在一个实施例中,当执行释放信标(RLS)指令时释放信标。RLS指令可由执行请求信标的指令的线程的处理器执行。作为RLS指令执行的一部分或响应于其执行,将释放信标消息(REL_MSG)发送给信标实体。以上描述了用于REL_MSG的一种格式。也可以使用其它格式。
响应于REL_MSG,信标实体将REL_MSG的线程标识符字段与信标链接列表匹配。如果相应的信标条目在链接列表的首部,信标实体就从链接列表的首部中去除线程条目。链接列表中后续的条目变成首部条目。随后,可以将该信标授予与新首部条目相对应的线程。如果相应的信标条目不在链接列表的首部,则信标实体设定信标条目的释放状态字段。
行为模型
基于所使用的链接列表的形式,信标可分类为关联信标或有序信标。基于来自信标实体的ACK_MSG的发送,信标可分类为活动信标或主动信标。因此,可以支持四种类型的信标。
关联信标的一个实施例的概述
关联信标允许并发线程按任何顺序访问信标。在一个实施例中,在与NULL链接列表(或用于指示一空链接列表的单个位)的会话开始时,信标由线程分配器初始化。不从线程分配器将其它消息发送给信标实体。执行多指令线程的执行电路在运行过程中建立信标链接列表。
在一个实施例中,一线程通过执行ACS或ASR指令来请求关联的信标。线程通过执行RLS指令来释放一关联信标。在一个实施例中,新ACQ_MSG将导致与请求线程相对应的条目放置在信标链接列表的尾部。这提供了先来先服务(FCFS)的信标模型。
有序信标的一个实施例的概述
有序信标允许并发线程按预定顺序访问信标。该顺序在分配时由线程分配器预先确定。该顺序可以是取决于应用程序的。当线程分配实际上是串行的时,线程分配器可为每个分配的线程发送一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是从属关系的概念示图,其中信标可用于同步线程执行。图2a示出了1∶1∶1(一对一)从属关系。图2a的从属关系可以是强串行顺序从属关系或关联从属关系。对于强连续顺序从属关系,可以使用单个主动的有序信标。在一个实施例中,在从线程分配器发送给信标实体以请求信标的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个依赖(depending)线程和一个从属(dependent)线程两者发送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个从属线程两者发送ACQ_MSG。在一个实施例中,对于M个从属线程,在用于请求信标的ACQ_MSG中,确认-抑制字段被设定且自动释放自动被复位。对于N个依赖线程,在用于请求信标的ACQ_MSG中,确认-抑制字段被复位且自动释放自动被设定。指令的M个从属线程仅包括一RLS指令以释放信标。指令的N个依赖线程包括WTS-RLS指令对以获得并释放信标。
图2a-2d的从属关系可用于支持更复杂的从属关系。例如,对于N∶1∶N从属关系,使用两个主动的有序信标。如以上参考图2c所述地处理N∶1从属关系并如以上参考图2b所述地处理1∶N从属关系。
如以下更详细地描述的,上述信标机制和线程同步技术可应用于计算机或类似电子系统中执行的许多操作。在以下给出的示例中,可利用这里所述的信标结构执行各种图形处理技术。虽然图形处理技术提供了使用活动和主动信标的有用示例,但这些信标机制的使用不限于图形数据处理。
信标和光线跟踪
光线跟踪是用于渲染三维图形的技术,并可以支持复杂的光相互作用,诸如反射镜、透明表面、阴影等。一般,光线跟踪基于通过递归地跟随(跟踪)光线通过一场景的光线反射所采用的路径的模型化的反射和折射。两次反射之间(或屏幕位置和第一次反射之间或者屏幕位置或反射与光源之间)的光线轨迹被称作光线段。当光线从观测透视(例如照相机)被跟踪到光源时,为每个像素确定颜色。本领域已知多种用于光线跟踪的技术。例如,参见Cook,R.L.和Torrance,K.E.,“AReflectance 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从属关系如上所述地被处理。
当解析了从属关系时,540,用于给定基元或基元段的线程执行Z测试并在成功的Z测试时更新用于投影像素的Z值和颜色值,550。最终的渲染图像在渲染了基元之后生成,560。随后,可以显示、打印或另外地显现最终的渲染图像用于观察。
使用活动信标的视频解码
在一些视频编码标准中,例如MPEG-2,图片(视觉对象平面或VOP)内的一个或多个段(诸如宏模块)的组可通过指令的独立线程被解码。在一些视频编码标准中,例如MPEG-4,诸如宏模块的图片段的解码具有其它图片段解码的从属关系。因此,可通过多线程架构上指令的多个线程解码一图片。这些线程之间的从属关系可利用上述信标机制解析。
例如,在2000年10月出版的ISO/IEC 13818“Generic coding of moving picturesand associated audio information”以及有关标准中描述了MPEG-2。例如,在2002年3月出版的ISO/IEC 14496“Coding of audio-visual objects”以及有关标准中描述了MPEG-4。
图6是使用活动和/或主动信标的视频解码的一个实施例的流程图。该流程图描绘了视频序列的一个图片的解码过程。可以重复相同的过程以解码视频序列的多个图片。确定要解码的图片的段,610。这些段例如可以是块、块组、宏模块或宏模块组,或者任何要解码的帧的任何其它段。
在一个实施例中,在通过指令的不同线程对这些段执行解码操作前,640,确定段间从属关系。如果一段具有首部从属关系一段的解码取决于其它段的解码结果,620,—为处理该段的指令线程配置具有首部从属关系的一个或多个信标,625。如果段具有尾部从属关系一后续段的解码取决于该段的解码结果,630,一为处理该段的指令线程配置具有尾部从属关系的一个或多个信标,635。
通过指令的多个线程对这些段进行解码操作,640。这些线程可以由一个或多个处理器执行并可使用上述信标机制中的一种或多种解析从属关系。例如,对于具有对N个段的首部从属关系的一个段,可以使用按N∶1从属关系模式配置的信标解析这些段的从属关系。用具有尾部从属关系的信标配置N个从属段的线程以及用具有首部从属关系的信标配置那一个依赖段。如上所述地处理该N∶1从属关系。
当解析了段的从属关系时,630,生成解码段的结果,650。从合计的段结果中生成最终图片,660。随后,最终解码图片可被显示、打印或另外地显现用于观察。
结论
说明书中对“一个实施例”或“一实施例”的引用意味着联系该实施例描述的特殊特点、结构或特征包含于本发明的至少一个实施例中。说明书中各处短语“在一个实施例中”的出现不必都涉及同一实施例。
在前述说明书中,已参考其特定实施例描述了本发明。但显然,可以对其进行各种修改和变化而不背离本发明的较宽精神和范围。因此,说明书和附图被认为是说明性而非限制性的。

Claims (34)

1.一种方法,包括:
执行指令的第一线程以处理要显示的图像的第一图形元素;
执行指令的第二线程以处理要显示的图像的第二图形元素;
响应于与第一图形元素和第二图形元素之间的关系有关的一组预定条件中至少一个的检测,将指令的第一线程置于不活动状态;
将指令的第一线程保持于不活动状态直到从信标实体接收到一消息;以及
响应于从信标实体接收到所述消息重新开始指令的所述第一线程的执行。
2.如权利要求1所述的方法,其特征在于,所述一组预定条件包括未解析的从属关系。
3.如权利要求1所述的方法,其特征在于,所述一组预定条件包括缺少来自指示与该信标相对应的资源不可用的所述信标的响应。
4.如权利要求1所述的方法,其特征在于,还包括维持用于指令的第一线程和用于指令的第二线程的状态指示。
5.如权利要求4所述的方法,其特征在于,每个线程的状态指示包括与相关联线程的从属关系(如果有)相对应的状态变量。
6.如权利要求1所述的方法,其特征在于,所述第一线程包括第一组光线跟踪指令,且所述第一图形元素包括第一光线段,其中所述第二线程包括第二组光线跟踪指令,且所述第二图形元素包括第二光线段。
7.如权利要求1所述的方法,其特征在于,所述第一线程包括第一组视频解码指令且所述第一图形元素包括第一图片段,且所述第二线程包括第二组视频解码指令且所述第二图形元素包括第二图片段。
8.如权利要求7所述的方法,其特征在于,所述第一图片段包括第一宏模块且所述第二图片段包括第二宏模块。
9.如权利要求1所述的方法,其特征在于,所述第一线程包括第一组三维渲染指令且第一图形元素包括第一渲染基元,且所述第二线程包括第二组三维渲染指令且第二图形元素包括第二渲染基元。
10.如权利要求9所述的方法,其特征在于,所述第一渲染基元包括第一点、第一线、第一三角形和第一三角带之一,且所述第二渲染基元包括第二点、第二线、第二三角形和第二三角带之一。
11.如权利要求9所述的方法,其特征在于,还包括:
确定用于所述第一渲染基元的距离值;
确定用于所述第二渲染基元的距离值;
比较用于所述第一渲染基元和所述第二渲染基元的距离值以确定所述第一渲染基元和所述第二渲染基元之间的关系;以及
基于所述第一渲染基元和第二渲染基元之间的关系显示所述第一渲染基元和所述第二渲染基元中的选定一个。
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.如权利要求26所述的系统,其特征在于,所述执行电路包括:
第一执行电路,用于执行所述指令的第一线程;以及
第二执行电路,用于执行所述指令的第二线程。
28.如权利要求26所述的系统,其特征在于,所述第一线程包括第一组光线跟踪指令且所述第一图形元素包括第一光线段,以及所述第二线程包括第二组光线跟踪指令且所述第二图形元素包括第二光线段。
29.如权利要求26所述的系统,其特征在于,所述第一线程包括第一组视频解码指令且所述第一图形元素包括第一宏模块,以及所述第二线程包括第二组视频解码指令且所述第二图形元素包括第二宏模块。
30.如权利要求29所述的系统,其特征在于,所述第一图片段包括第一宏模块且所述第二图片段包括第二宏模块。
31.如权利要求26所述的系统,其特征在于,所述第一线程包括第一组三维渲染指令且所述第一图形元素包括第一部分渲染基元,以及所述第二线程包括第二组三维渲染指令且所述第二图形元素包括第二渲染基元。
32.如权利要求3 1所述的系统,其特征在于,所述第一渲染基元包括第一点、第一线、第一三角形和第一三角带之一,且所述第二渲染基元包括第二点、第二线、第二三角形和第二三角带之一。
33.如权利要求26所述的系统,其特征在于,还包括与所述存储器控制器耦合的存储器,用于存储所述指令的第一线程和所述指令的第二线程。
34.如权利要求26所述的系统,其特征在于,当所述指令的第一线程处于不活动状态时,指令的执行停止且执行电路不轮询所述信标实体以确定信标请求消息的状态。
CN2004800348584A 2003-12-31 2004-12-22 使用多线程架构的视觉和图形数据处理 Expired - Fee Related CN101147126B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/750,589 US8271986B2 (en) 2003-12-31 2003-12-31 Visual and graphical data processing using a multi-threaded architecture
US10/750,589 2003-12-31
PCT/US2004/043320 WO2005066778A2 (en) 2003-12-31 2004-12-22 Visual and graphical data processing using a multi-threaded architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN2011101059282A Division CN102200927B (zh) 2003-12-31 2004-12-22 使用多线程架构的视觉和图形数据处理

Publications (2)

Publication Number Publication Date
CN101147126A true CN101147126A (zh) 2008-03-19
CN101147126B CN101147126B (zh) 2011-06-08

Family

ID=34749337

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2004800348584A Expired - Fee Related CN101147126B (zh) 2003-12-31 2004-12-22 使用多线程架构的视觉和图形数据处理
CN2011101059282A Expired - Fee Related CN102200927B (zh) 2003-12-31 2004-12-22 使用多线程架构的视觉和图形数据处理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2011101059282A Expired - Fee Related CN102200927B (zh) 2003-12-31 2004-12-22 使用多线程架构的视觉和图形数据处理

Country Status (7)

Country Link
US (1) US8271986B2 (zh)
EP (1) EP1700212A2 (zh)
JP (1) JP4575925B2 (zh)
KR (1) KR20060108741A (zh)
CN (2) CN101147126B (zh)
TW (1) TWI285851B (zh)
WO (1) WO2005066778A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103942825A (zh) * 2008-09-10 2014-07-23 柯斯提克绘图公司 光线跟踪系统架构和方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163547A (ja) * 2004-12-03 2006-06-22 Canon Inc 立体画像生成プログラム、立体画像生成システム及び立体画像生成装置。
US7439973B2 (en) * 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
US20070052704A1 (en) * 2005-09-08 2007-03-08 Arm Limited 3D graphics image formation
US7965898B2 (en) * 2005-10-28 2011-06-21 Nvidia Corporation Accelerating video decoding using multiple processors
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US8121196B2 (en) * 2006-11-02 2012-02-21 Corel Corporation Method and apparatus for multi-threaded video decoding
US8072454B1 (en) * 2007-12-13 2011-12-06 Nvidia Corporation Parallel processing system, method, and computer program product for selecting a ray tracing entity from a group of ray tracing entities for processing
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
KR101155689B1 (ko) * 2011-04-12 2012-06-12 고려대학교 산학협력단 프리미티브 트리에 기반한 거리장 계산장치 및 방법
CN103366386A (zh) * 2013-07-14 2013-10-23 西安电子科技大学 基于多进程和多线程的并行图像解压缩系统
CN103455356B (zh) * 2013-09-05 2017-02-08 中国计量学院 多核移动设备上3d模型的并发加载及渲染方法
US10977092B2 (en) * 2015-10-16 2021-04-13 Qualcomm Incorporated Method for efficient task scheduling in the presence of conflicts
US10318348B2 (en) * 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
GB2554392B (en) * 2016-09-23 2019-10-30 Imagination Tech Ltd Task scheduling in a GPU
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10255717B2 (en) * 2016-11-01 2019-04-09 Nvidia Corporation Geometry shadow maps with per-fragment atomics
US10614613B2 (en) 2017-07-28 2020-04-07 Nvidia Corporation Reducing noise during rendering by performing parallel path space filtering utilizing hashing
US10871991B2 (en) * 2019-01-18 2020-12-22 EMC IP Holding Company LLC Multi-core processor in storage system executing dedicated polling thread for increased core availability
CN114816803B (zh) * 2022-06-28 2022-09-23 航天宏图信息技术股份有限公司 一种分布式仿真通信消息处理方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03164964A (ja) * 1989-11-24 1991-07-16 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置における排他制御処理装置
US6018785A (en) * 1993-12-30 2000-01-25 Cypress Semiconductor Corp. Interrupt-generating hardware semaphore
US5715459A (en) 1994-12-15 1998-02-03 International Business Machines Corporation Advanced graphics driver architecture
US5951672A (en) 1997-07-02 1999-09-14 International Business Machines Corporation Synchronization method for work distribution in a multiprocessor system
JP3900621B2 (ja) * 1997-10-16 2007-04-04 ソニー株式会社 情報処理方法及び記録媒体
US6088044A (en) 1998-05-29 2000-07-11 International Business Machines Corporation Method for parallelizing software graphics geometry pipeline rendering
US6502097B1 (en) 1999-12-23 2002-12-31 Microsoft Corporation Data structure for efficient access to variable-size data objects
CA2373707A1 (en) 2001-02-28 2002-08-28 Paul Besl Method and system for processing, compressing, streaming and interactive rendering of 3d color image data
JP3798726B2 (ja) * 2002-04-26 2006-07-19 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセス順序付け及びロック管理の方法、装置、プログラム及び記録媒体
CN1212569C (zh) * 2002-11-01 2005-07-27 英业达股份有限公司 多线程自动测试方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103942825A (zh) * 2008-09-10 2014-07-23 柯斯提克绘图公司 光线跟踪系统架构和方法
CN103942825B (zh) * 2008-09-10 2017-10-10 想象技术有限公司 光线跟踪系统架构和方法

Also Published As

Publication number Publication date
EP1700212A2 (en) 2006-09-13
KR20060108741A (ko) 2006-10-18
WO2005066778A3 (en) 2006-09-28
CN101147126B (zh) 2011-06-08
CN102200927A (zh) 2011-09-28
JP2007517326A (ja) 2007-06-28
WO2005066778A2 (en) 2005-07-21
TWI285851B (en) 2007-08-21
TW200527325A (en) 2005-08-16
US8271986B2 (en) 2012-09-18
US20050198644A1 (en) 2005-09-08
JP4575925B2 (ja) 2010-11-04
CN102200927B (zh) 2013-11-20

Similar Documents

Publication Publication Date Title
CN101147126B (zh) 使用多线程架构的视觉和图形数据处理
US10741143B2 (en) Dynamic jitter and latency-tolerant rendering
TWI423161B (zh) 繪圖處理單元、元命令處理系統以及元命令執行方法
EP2593862B1 (en) Out-of-order command execution in a multimedia processor
CN110796588A (zh) 同时计算和图形调度
US5325493A (en) System for distributing command/data packets tagged by their unit identifier for parallel processing by a ready processing unit and recombination
CN109643461B (zh) 用于在光线追踪架构内对多个连续光线-表面相交点进行正确排序和枚举的方法和设备
TWI428852B (zh) 著色器處理系統與方法
US20140282566A1 (en) System and method for hardware scheduling of indexed barriers
CN1520579A (zh) 利用具有时间分配器的图形渲染引擎的装置、方法和系统
US11810223B2 (en) Controlling multi-GPU execution of kernels by kernel portion and resource region based dependencies
CN114880259B (zh) 数据处理方法、装置、系统、电子设备及存储介质
CN110245024B (zh) 静态存储块的动态分配系统及其方法
CN116302549A (zh) Ai视频加速器的硬件资源获取方法、装置、设备及介质
CN110245027A (zh) 一种进程间通信的方法和设备
KR101752362B1 (ko) 비동기식 멀티 스레딩 기반의 고화질 다시점 영상 실시간 통합 장치 및 방법
US10705886B2 (en) Synchronization of hardware units in data processing systems
CN114359020A (zh) 图像处理方法、装置、存储介质及电子设备
US11770215B2 (en) Transceiver system with end-to-end reliability and ordering protocols
EP0884682A2 (en) Cache memory management method for real time operating system
US12056787B2 (en) Inline suspension of an accelerated processing unit
CN109983435A (zh) 图形处理方法及相关装置和设备
CN109743521A (zh) 视频数据传输方法、装置、电子设备和存储介质
CN113018844A (zh) 多线程的执行方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110608

Termination date: 20171222