CN106055310B - 图形处理中管理活动线程依赖关系 - Google Patents

图形处理中管理活动线程依赖关系 Download PDF

Info

Publication number
CN106055310B
CN106055310B CN201610298554.3A CN201610298554A CN106055310B CN 106055310 B CN106055310 B CN 106055310B CN 201610298554 A CN201610298554 A CN 201610298554A CN 106055310 B CN106055310 B CN 106055310B
Authority
CN
China
Prior art keywords
thread
execution
dependencies
scoreboard
threads
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.)
Expired - Fee Related
Application number
CN201610298554.3A
Other languages
English (en)
Other versions
CN106055310A (zh
Inventor
H.姜
J.霍兰
P.叙尔蒂
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 CN106055310A publication Critical patent/CN106055310A/zh
Application granted granted Critical
Publication of CN106055310B publication Critical patent/CN106055310B/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
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • Television Systems (AREA)

Abstract

本申请涉及“图形处理中管理活动线程依赖关系”。本发明的名称为图形处理中管理活动线程依赖关系。视频处理器的记分牌可以仅跟踪尚未完成执行的已调度的线程。第一个线程可以自行监听必须在第一个线程的执行之前被执行的第二个线程的执行。可以对线程执行自由地重新排序,唯一要求的规则是,其执行依赖于第一个线程的执行的第二线程只能在第一个线程之后被执行。

Description

图形处理中管理活动线程依赖关系
本分案申请的母案申请日为2009年6月30日、申请号为200910159422.2、发明名称为“图形处理中管理活动线程依赖关系”。
技术领域
本发明一般涉及图形处理,并且确切地来说涉及图形处理过程中信息的解码。
背景技术
为了减少往基于处理器的系统和从基于处理器的系统传送数据的带宽,可以采用压缩信息的方式来对信息编码。当该信息到达接收基于处理器的系统时,必须将其解码或解压。
通常,在具有许多执行单元的系统中,可以利用软件来跟踪线程依赖关系(dependency)–其中一个线程的执行依赖于另一个线程的执行。线程依赖关系是重要的,因为当有大量线程,并且一些线程必须在另一些线程之前执行时,必须考虑这些依赖关系。但是当线程的数量很大,且依赖关系的数量很大时,维护所有线程和所有依赖关系的状态往往很麻烦。
发明内容
本发明提供了一种方法,包括:在寄存器中,通过仅跟踪所述寄存器接收的尚未完成执行的线程,管理线程和线程依赖关系,以便由多个执行单元来执行线程。
本发明还提供了一种设备,包括:视频前端;以及耦合到所述视频前端的寄存器,耦合到线程调度器的线程响应器,以及所述寄存器仅跟踪所述寄存器接收的尚未完成执行的线程。
本发明还提供了一种系统,包括:
图形处理器,包括:
视频前端;
耦合到所述视频前端的线程派生器,所述线程派生器包括记分牌,所述记分牌仅维护所述记分牌接收的尚未完成执行的线程;
耦合到所述线程派生器的线程调度器;
耦合到所述线程调度器的多个执行单元;以及
耦合到所述处理器的硬盘驱动器。
附图说明
图1是根据本发明的一个实施例的系统说明;
图2是本发明的一个实施例的示意图说明;
图3是示出根据一个实施例的图1的线程派生器(spawner)的框图;
图4是两个不同帧中的宏块的说明;以及
图5是根据本发明的一个实施例的图2的记分牌寄存器22的说明。
具体实施方式
图1所示的计算机系统130可以包括通过总线104耦合到芯片组核逻辑110的硬盘驱动器134和可移动媒体136。在一个实施例中,核逻辑可以耦合到图形处理器112(经由总线105)和主或宿主处理器100。还可以通过总线106将图形处理器112耦合到帧缓冲器114。可以通过总线107将帧缓冲器114耦合到显示屏118,然后显示屏118又通过总线108耦合到常规组件,例如键盘或鼠标120。
在软件实现的情况中,可以将相关代码存储在任何适合的半导体、磁或光存储器(包括主存储器132)中。因此,在一个实施例中,代码139可以存储在机器可读媒体(例如主存储器132)中,以便供处理器(例如处理器100或图形处理器112)执行。
参考图2,芯片组核逻辑110可以包括图形流水线。图形流水线可以包括命令流操作器(command streamer)10、视频前端12和耦合到线程调度器18的线程派生器14,此外还包括一些其他组件。
芯片组核逻辑110可以通过命令流操作器10从驱动程序或图形处理器112或主处理器100执行的其他软件来接收输入。通常,驱动程序提供必须由图形处理器112的多个执行单元EU 16来执行的工作。由线程调度器18来调度必须执行的任务。线程派生器14创建任务,然后由执行单元16来执行线程。
在一个实施例中,命令流操作器10可以是用于提取控制始发于宿主或主处理器100的线程生成的命令的直接存储器访问引擎。视频前端12包含视频处理功能。线程派生器14负责生成并仲裁始发于可能包括执行单元16的宿主和图形处理器112的线程。线程调度器18仲裁线程生成请求。
参考图3,线程派生器14包括根线程请求队列20,线程派生器14从视频前端12接收这些根线程请求。根线程是可以创建后续子线程的线程。这些线程请求被存储在根线程请求队列20中。任何由执行单元16中运行的另一个线程创建的线程称为子线程。子线程可以创建附加线程,全部均在经由视频前端12路径请求的根的树之下。
线程派生器14存储获取已经就绪可供调度的根线程所需的信息,并随后跟踪被调度的线程直到它们引退(retirement)为止。线程派生器14还在根和子线程之间执行仲裁。线程请求队列20馈送(feed)记分牌(scoreboard)22,记分牌22管理线程间的依赖关系以及根线程的调度(dispatch)。派生线程请求队列32负责请求从根线程派生的线程。
来自记分牌22的输出去到缓冲器24,而来自派生线程请求队列32的输出去到缓冲器34。将这两个缓冲器24和34同步,如缓冲器24与34之间的箭头A所示。缓冲器24的输出是根线程,而缓冲器34的输出是子线程。由同步乘法器26将这些线程同步以便传输到线程调度器18。
记分牌22考虑线程之间的空间依赖关系。图4可以用于说明两个不同帧Z和Z+A内和之间的空间依赖关系的示例。在帧Z中,所关心的宏块可具有相对于帧内所有其他宏块的坐标(X,Y),其中X和Y给出行和列坐标。假定图像的原点(0,0)在左上角,宏块(X,Y)正上方的宏块是(X,Y-1),而紧靠宏块(X,Y)左边的是(X-1,Y),并以此类推。为了将给定宏块解码,可能需要从其邻居(例如邻居(X-1,Y)、(X-1,y-1)、(X,Y-1)和(X+1,Y-1))解码信息。
可以通过记分牌22来跟踪这些依赖关系。在由线程派生器调度到执行单元的过程中,记分牌22基本上相对于所关心的宏块(在此情况中为宏块(X,Y))来考虑这些依赖关系。因此,如果宏块(X,Y)依赖于宏块(X,Y+1),则宏块(X,Y)与Y方向上+1的宏块依赖关系之间存在德尔塔(delta)。可以通过三坐标系统来指定它,其中X是第一坐标、Y是第二坐标以及Z是第三坐标。因此,对于宏块(X,Y)而言,通过(0,1,0)的德尔塔来指定这种依赖关系。对于任何宏块来说可能有许多依赖关系,因此许多德尔塔被检查。
Z方向包含两个不同帧之间的依赖关系。例如,如果帧Z中的宏块(X,Y)依赖于帧Z+A中的宏块(X,Y),则在Z方向上存在依赖关系。此依赖关系还可以指定为(0,0,A)的德尔塔。
Z还可以用于表示相同帧上彼此不依赖的不同逻辑进程。如果那些进程是A和B,则对所有A操作可以将Z设为等于零,以及对所有B操作可以将Z设为等于1。这允许一个物理记分牌通过将所有Z德尔塔值保持为零来管理许多逻辑记分牌。因此,可以使用Z来管理(1)具有依赖关系的宏块,(2)没有依赖关系的宏块,(3)不同帧上的宏块,或(4)涉及相同帧的不同操作的宏块。
因此,参考图5,其中示出记分牌22的更详细操作,由框50处理来自视频前端12的线程请求,其获取当前线程的唯一线程标识符(TDID)并标记记分牌寄存器68。记分牌寄存器68包括对应于每个坐标X、Y和Z的列以及对应于每个编号的线程或每个线程标识符的行。每个活动线程接收线程标识符(具有标识符1至N)以构成记分牌寄存器68的行。
简单地标记记分牌意味着无论何时,只要调度线程,则必须通知记分牌寄存器68:一个线程在运行中。优先级编码器74通过查看寄存器66中有效位来确定下一个可用线程标识符是什么。寄存器66实际上告知记分牌寄存器68中哪些位是有效的。因此,将下一个有效位指定给下一个线程,然后在框50处将该线程视为“已标记”。作为被标记的结果,在记分牌寄存器68中建立对应于该线程标识符的项(entry),将该项置于适合的行中,其中这些行编号为从1至N。标记的线程提供其X、Y和Z坐标,而作为回报,为该线程提供也可以视为行号的线程标识符。当在执行单元16中通过完成执行将线程引退时,该线程交还(surrender)其线程标识符。
一般来说,虽然为所有线程提供线程标识符,但是对于没有依赖关系的独立线程在记分牌中需要的处理更少。那些线程可以从框50向上传递,并上至仲裁器56的上方端口。
在先进先出(FIFO)缓冲器52中收集依赖线程。依赖线程的执行依赖于另一个潜在活动(潜在未执行)的线程的执行。这允许移动通过框50的多个依赖线程离开(get themout of the way),使得确保在未决的依赖关系使依赖线程FIFO缓冲器52停滞时可以快速地处理独立线程并将其传送到仲裁器56。仲裁器56在依赖线程停滞时查看独立线程。
然后依次从先进先出缓冲器52处理依赖线程。在框72中标识它们的依赖关系,并在一些情况中可以利用那些依赖关系来标记线程依赖关系寄存器30。框54将依赖关系和那些依赖关系的X、Y和Z坐标提供到框72。在一个实施例中,如果两种类型的线程都已就绪可供调度,则可以对依赖线程赋予较高的优先级。如上所述,框72从线程的坐标以及其中存在依赖关系的宏块或帧的相对坐标来确定(develop)德尔塔。
在记分牌22的一个操作模式(称为“停滞模式”)中,记分牌22在生成下一个X、Y和Z坐标或德尔塔,或清除当前线程以用于调度之前等待匹配。因此,在停滞模式中,直到某线程依赖的所有线程都被引退(即被执行且不再处于活动,即引退)之后,才启动该线程。因此,当遇到停滞模式且缓冲器52变满时,线程FIFO缓冲器52还通知视频前端12,如框52下方箭头所指示的。
仲裁器56选择要由执行单元16执行的独立或依赖线程,以便通过线程有效负荷传递它。已经由执行单元16执行的线程回到框60,这将从记分牌寄存器68以及任何匹配线程寄存器30中清除线程标识符。比较器62帮助发现匹配线程寄存器30。
因此,一旦执行了线程,则需要通知其执行依赖于该线程的执行的任何线程。尤其在停滞模式中,线程在它依赖的所有线程被执行之前无法被调度。比较器62可以用于重设线程依赖关系寄存器30以移除在检查线程依赖关系期间引退的任何线程的依赖关系。
然后,内容可寻址存储器或CAM 70确定寄存器68中是否有希望进行调度的线程依赖于之的任何线程。如果在记分牌寄存器68的任何行中均没有项,则可以推断当前在执行中没有此类依赖线程,并且可以将该线程作为就绪可调度来释放,并可以从框54将其传递到仲裁器56中。如果在停滞模式中有依赖关系,则可以强制该线程等待那些依赖关系清除。
根据记分牌22的另一个操作模式(称为广播模式),该模式比停滞模式更鲁棒(robust),确定要调度的给定线程的依赖关系,获取那些依赖关系的线程标识符,并将其置于线程依赖关系寄存器30中,然后即使那些依赖关系仍存在或未决(outstanding),仍调度该线程。
实际上,将该线程调度到执行单元16,并指令(call upon)该线程管理它自己的依赖关系。该线程通过监听广播到每个执行单元16和记分牌的引退线程TDID(框60)来执行此目的。一旦线程确定它所依赖的所有线程均已被清除,则在执行单元16中处于空闲状态的该线程可以接着在该执行单元16中执行。
在一个实施例中,每个线程使用8个位来指示最多8个依赖关系(各由德尔塔所指示)中哪个是重要的。这8个德尔塔按预定义的次序加载到连续的线程依赖关系寄存器30中。随后,该线程基于其8个位获知它必须检查哪个依赖关系寄存器来确定涉及的这些依赖关系是否已引退。
与停滞模式的差异在于,在广播模式中,线程基本由记分牌来启动,然后线程实际通过观察引退线程信息来自己控制它何时开始执行。在广播模式中,从仲裁器56调度当前线程,其具有未决依赖关系和线程依赖关系寄存器30的附加有效负荷,该附加有效负荷包含所有未决依赖线程的线程标识符。
当给定线程通过执行单元16执行而引退时,除了通知记分牌22外,它还将其线程标识符广播到所有执行单元16。一旦调度的线程接收到与它一起调度的所有线程依赖关系寄存器的线程标识符,则调度的线程开始执行。
在又一种操作模式(称为依序模式)中,记分牌22标记依赖于紧接当前线程之前调度的线程的线程标识符的每个线程。
根据本发明的一些实施例,记分牌22可以采用硬件来实现,这可以提高性能和速度。在一些实施例中,硬件记分牌22可以更有效率地以无序方式调度线程,从而允许对工作量重新排序以实现性能提高。在一些实施例中,记分牌22要求的唯一规则是,其执行依赖于线程B的执行的线程A必须在线程B到达记分牌22之后到达记分牌22。如果线程A在线程B之前到达,则记分牌将注意不到线程B而假定线程B已引退,因此不正确地清除线程A。但是,可执行任何其他重新排序,例如为了提高性能。一般,在一些实施例中,驱动程序确保该规则始终被遵守。
在一些实施例中,必须执行的线程的数量远超过记分牌22中的活动线程的数量。在一些实施例中,通过使记分牌22能够仅跟踪活动线程(即,尚未引退的线程),可以大大地提高记分牌的大小和效率。
图1、2、3和5中指示的框可以构成硬件和软件组件。在软件组件的情况中,附图可以指示可存储在计算机可读媒体(诸如半导体集成电路存储器、光存储装置或磁存储装置等)中的指令序列。在此类情况中,指令可由计算机或基于处理器的系统来执行,计算机或基于处理器的系统从存储装置中检索指令并执行它们。在一些情况中,指令可以是可存储在适合的存储媒体中的固件。
本文描述的图形处理技术可以在各种硬件体系结构中实现。例如,可以将图形功能性集成到芯片组内。或者,可以使用离散的图形处理器。作为又一个实施例,可以由通用处理器(包括多核处理器)来实现图形功能。
虽然本发明是参考有限数量的实施例来描述的,但是本领域技术人员将认识到许多修改和变化。所附权利要求意在涵盖落在本发明的真正精神和范围内的所有此类修改和变化。

Claims (30)

1.一种方法,包括:
在寄存器中,通过仅跟踪所述寄存器接收的尚未完成执行的线程,管理线程和线程依赖关系,以便由多个执行单元来执行线程;以及
只要如下情况成立,则使线程执行的次序能够更改成任何次序:依赖于另一个线程的完成的一个线程必须在所述另一个线程到达所述寄存器之后到达以记分牌形式的所述寄存器,
其中,所述记分牌使用三坐标系统(X, Y, Z)来指定线程和线程依赖关系,其中X和Y指示单个帧中不同宏块的依赖关系,并且Z指示不同帧间的依赖关系以及相同帧上彼此不依赖的不同逻辑进程。
2.如权利要求1所述的方法,包括在线程的所有依赖关系完成了执行之前启动所述线程来执行。
3.如权利要求2所述的方法,包括使线程能够管理它自己的依赖关系。
4.如权利要求3所述的方法,包括将一个执行单元中线程执行的完成向其他执行单元广播。
5.如权利要求1所述的方法,包括确定空间依赖关系,包括确定一个宏块的线程对相邻宏块的线程的执行的依赖关系,以及确定一个线程对不同帧中的线程的依赖关系。
6.如权利要求5所述的方法,包括使用坐标来指示相同帧上的空间依赖关系和不同逻辑进程。
7.如权利要求1所述的方法,包括通过指示相同帧内的宏块和不同帧中的宏块的坐标之间的改变量来指示两个线程之间的依赖关系。
8.一种设备,包括:
视频前端;以及
耦合到所述视频前端的寄存器,耦合到线程调度器的线程响应器,以及所述寄存器仅跟踪所述寄存器接收的尚未完成执行的线程,
其中所述寄存器是包括记分牌寄存器的记分牌,并且其中只要如下情况成立,则所述记分牌能够进行任何重新排序:其执行依赖于另一个线程的一个线程在所述另一个线程到达所述记分牌之后到达所述记分牌,并且
其中,所述记分牌使用三坐标系统(X, Y, Z)来指定线程和线程依赖关系,其中X和Y指示单个帧中不同宏块的依赖关系,并且Z指示不同帧间的依赖关系以及相同帧上彼此不依赖的不同逻辑进程。
9.如权利要求8所述的设备,包括耦合到所述寄存器的执行单元,所述寄存器是记分牌。
10.如权利要求8所述的设备,其中所述记分牌寄存器通过线程标识符列出线程,并且对于每个线程提供关联的宏块的坐标。
11.如权利要求10所述的设备,所述记分牌包括存储未决线程依赖关系的寄存器。
12.如权利要求11所述的设备,所述记分牌使线程能够在依赖关系已清除之前启动。
13.如权利要求10所述的设备,所述记分牌接收执行的线程的线程标识符,使执行的线程的线程标识符引退,以及使等待依赖关系的执行的线程能够监听执行的线程的线程标识符。
14.如权利要求8所述的设备,其中所述设备使线程执行能够重新排序。
15.如权利要求8所述的设备,所述寄存器在处理依赖于其他线程的线程之前处理不依赖于其他线程的线程。
16.如权利要求15所述的设备,所述寄存器包括线程依赖关系寄存器,所述线程依赖关系寄存器通过存储所述依赖关系来指示线程的所述依赖关系。
17.如权利要求8所述的设备,所述寄存器管理多个逻辑记分牌。
18.一种系统,包括:
图形处理器,包括:
视频前端;
耦合到所述视频前端的线程派生器,所述线程派生器包括记分牌,所述记分牌仅维护所述记分牌接收的尚未完成执行的线程;
耦合到所述线程派生器的线程调度器;
耦合到所述线程调度器的多个执行单元;以及
耦合到所述处理器的硬盘驱动器,
其中只要如下情况成立,则所述记分牌能够进行任何重新排序:其执行依赖于另一个线程的一个线程在所述另一个线程到达所述记分牌之后到达所述记分牌,并且
其中,所述记分牌使用三坐标系统(X, Y, Z)来指定线程和线程依赖关系,其中X和Y指示单个帧中不同宏块的依赖关系,并且Z指示不同帧间的依赖关系以及相同帧上彼此不依赖的不同逻辑进程。
19.如权利要求18所述的系统,其中所述记分牌包括记分牌寄存器,所述记分牌寄存器通过线程标识符列出线程,并且对于每个线程提供关联的宏块的坐标。
20.如权利要求19所述的系统,所述记分牌包括存储线程依赖关系的寄存器。
21.如权利要求20所述的系统,所述记分牌向多个其他执行单元广播一个执行单元对线程执行的完成。
22.如权利要求21所述的系统,所述记分牌接收执行的线程的线程标识符,使执行的线程的线程标识符引退,以及使等待依赖关系的执行的线程能够监听执行的线程的线程标识符。
23.一种设备,包括:
用于在寄存器中,通过仅跟踪所述寄存器接收的尚未完成执行的线程,管理线程和线程依赖关系,以便由多个执行单元来执行线程的装置;以及
用于只要如下情况成立,则使线程执行的次序能够更改成任何次序的装置:依赖于另一个线程的完成的一个线程必须在所述另一个线程到达所述寄存器之后到达以记分牌形式的所述寄存器,
其中,所述记分牌使用三坐标系统(X, Y, Z)来指定线程和线程依赖关系,其中X和Y指示单个帧中不同宏块的依赖关系,并且Z指示不同帧间的依赖关系以及相同帧上彼此不依赖的不同逻辑进程。
24.如权利要求23所述的设备,包括用于在线程的所有依赖关系完成了执行之前启动所述线程来执行的装置。
25.如权利要求24所述的设备,包括用于使线程能够管理它自己的依赖关系的装置。
26.如权利要求25所述的设备,包括用于将一个执行单元中线程执行的完成向其他执行单元广播的装置。
27.如权利要求23所述的设备,包括用于确定空间依赖关系的装置,所述确定包括确定一个宏块的线程对相邻宏块的线程的执行的依赖关系以及确定一个线程对不同帧中的线程的依赖关系。
28.如权利要求27所述的设备,包括用于使用坐标来指示相同帧上的空间依赖关系和不同逻辑进程的装置。
29.如权利要求23所述的设备,包括用于通过指示相同帧内的宏块和不同帧中的宏块的坐标之间的改变量来指示两个线程之间的依赖关系的装置。
30.一种已在其上存储有指令的计算机可读介质,所述指令在被执行时引起处理器执行如权利要求1-7中任一项所述的方法。
CN201610298554.3A 2008-06-30 2009-06-30 图形处理中管理活动线程依赖关系 Expired - Fee Related CN106055310B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/215,850 US8933953B2 (en) 2008-06-30 2008-06-30 Managing active thread dependencies in graphics processing
US12/215850 2008-06-30
CN200910159422A CN101620527A (zh) 2008-06-30 2009-06-30 图形处理中管理活动线程依赖关系

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200910159422A Division CN101620527A (zh) 2008-06-30 2009-06-30 图形处理中管理活动线程依赖关系

Publications (2)

Publication Number Publication Date
CN106055310A CN106055310A (zh) 2016-10-26
CN106055310B true CN106055310B (zh) 2020-04-28

Family

ID=41002930

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200910159422A Pending CN101620527A (zh) 2008-06-30 2009-06-30 图形处理中管理活动线程依赖关系
CN201610298554.3A Expired - Fee Related CN106055310B (zh) 2008-06-30 2009-06-30 图形处理中管理活动线程依赖关系

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN200910159422A Pending CN101620527A (zh) 2008-06-30 2009-06-30 图形处理中管理活动线程依赖关系

Country Status (4)

Country Link
US (1) US8933953B2 (zh)
EP (1) EP2141586B1 (zh)
KR (1) KR101079001B1 (zh)
CN (2) CN101620527A (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635621B2 (en) * 2008-08-22 2014-01-21 International Business Machines Corporation Method and apparatus to implement software to hardware thread priority
US8203984B2 (en) 2008-12-19 2012-06-19 Intel Corporation Power management for wireless networks
EP2534643A4 (en) * 2010-02-11 2016-01-06 Nokia Technologies Oy METHOD AND APPARATUS FOR PROVIDING MULTIFIL VIDEO DECODING
US10241799B2 (en) 2010-07-16 2019-03-26 Qualcomm Incorporated Out-of-order command execution with sliding windows to maintain completion statuses
US9633407B2 (en) * 2011-07-29 2017-04-25 Intel Corporation CPU/GPU synchronization mechanism
US9984430B2 (en) * 2013-04-15 2018-05-29 Intel Corporation Ordering threads as groups in a multi-threaded, multi-core graphics compute system
GB2514618B (en) 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US9589311B2 (en) * 2013-12-18 2017-03-07 Intel Corporation Independent thread saturation of graphics processing units
US9996386B2 (en) * 2014-07-23 2018-06-12 Intel Corporation Mid-thread pre-emption with software assisted context switch
US9519944B2 (en) 2014-09-02 2016-12-13 Apple Inc. Pipeline dependency resolution
US9824414B2 (en) * 2014-12-09 2017-11-21 Intel Corporation Thread dispatching for graphics processors
US9952901B2 (en) * 2014-12-09 2018-04-24 Intel Corporation Power efficient hybrid scoreboard method
US9916178B2 (en) * 2015-09-25 2018-03-13 Intel Corporation Technologies for integrated thread scheduling
US10339295B2 (en) 2016-07-28 2019-07-02 Microsoft Technology Licensing, Llc Tracking work between system entities
US11360808B2 (en) * 2017-04-09 2022-06-14 Intel Corporation Efficient thread group scheduling
GB2567436B (en) * 2017-10-10 2019-10-02 Imagination Tech Ltd Geometry to tiling arbiter for tile-based rendering system
US11132233B2 (en) * 2018-05-07 2021-09-28 Micron Technology, Inc. Thread priority management in a multi-threaded, self-scheduling processor
CN109308218A (zh) * 2018-08-22 2019-02-05 安徽慧视金瞳科技有限公司 一种多点同时绘制的匹配算法
US11119820B2 (en) * 2019-03-15 2021-09-14 Intel Corporation Local memory sharing between kernels
CN110162387A (zh) * 2019-04-09 2019-08-23 口口相传(北京)网络技术有限公司 线程调度方法、装置、计算机设备及计算机可读存储介质
US20220414816A1 (en) * 2021-06-24 2022-12-29 Intel Corporation Dynamic dependency scoreboard for overlapping pixels of primitives

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1938685A (zh) * 2004-02-06 2007-03-28 英特尔公司 用于缩减使用同时多线程处理器的带缓冲的应用的能耗的方法
CN101133391A (zh) * 2005-02-04 2008-02-27 美普思科技有限公司 多线程微处理器中的二分化线程调度器
CN101176089A (zh) * 2005-05-16 2008-05-07 英特尔公司 使用多线程单指令多数据处理并行执行媒体编码

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182210B1 (en) 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
JP3796124B2 (ja) * 2001-03-07 2006-07-12 株式会社ルネサステクノロジ スレッド間優先度可変プロセッサ
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
US20070030280A1 (en) * 2005-08-08 2007-02-08 Via Technologies, Inc. Global spreader and method for a parallel graphics processor
US7434032B1 (en) * 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
WO2008007038A1 (en) 2006-07-11 2008-01-17 Arm Limited Data dependency scoreboarding
US8291431B2 (en) 2006-08-29 2012-10-16 Qualcomm Incorporated Dependent instruction thread scheduling

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1938685A (zh) * 2004-02-06 2007-03-28 英特尔公司 用于缩减使用同时多线程处理器的带缓冲的应用的能耗的方法
CN101133391A (zh) * 2005-02-04 2008-02-27 美普思科技有限公司 多线程微处理器中的二分化线程调度器
CN101176089A (zh) * 2005-05-16 2008-05-07 英特尔公司 使用多线程单指令多数据处理并行执行媒体编码

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"A Chip-Multiprocessor Architecture with Speculative Multithreading";Venkata Krishnan,Josep Torrellas;《IEEE TRANSACTIONS ON COMPUTERS》;19990930;第48卷(第9期);第3部分第2段,第4部分第1段,第4.1部分第1-3段,第4.1.1部分第1段 *
Venkata Krishnan,Josep Torrellas."A Chip-Multiprocessor Architecture with Speculative Multithreading".《IEEE TRANSACTIONS ON COMPUTERS》.1999,第48卷(第9期),866-880. *

Also Published As

Publication number Publication date
KR101079001B1 (ko) 2011-11-01
US8933953B2 (en) 2015-01-13
CN106055310A (zh) 2016-10-26
KR20100003238A (ko) 2010-01-07
CN101620527A (zh) 2010-01-06
US20090327662A1 (en) 2009-12-31
EP2141586A1 (en) 2010-01-06
EP2141586B1 (en) 2013-08-28

Similar Documents

Publication Publication Date Title
CN106055310B (zh) 图形处理中管理活动线程依赖关系
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
US8407454B2 (en) Processing long-latency instructions in a pipelined processor
KR102074961B1 (ko) 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치
TWI294573B (en) Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions
US6877086B1 (en) Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
US20070030280A1 (en) Global spreader and method for a parallel graphics processor
US9495170B2 (en) Determining each stall reason for each stalled instruction within a group of instructions during a pipeline stall
US10861125B2 (en) Preparing and executing command streams in data processing systems
JP2007200288A (ja) 実行スレッドをグループ化するためのシステム及び方法
CN1680917A (zh) 用于跟踪完成表中更大量未完成指令的方法和处理器
CN115576610B (zh) 一种适用于通用顺序发射处理器的指令分发处理方法及装置
US20140173611A1 (en) System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same
WO2020132841A1 (zh) 一种基于多线程的指令处理方法及装置
US7293162B2 (en) Split data-flow scheduling mechanism
US20170068306A1 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
CN116635829A (zh) 用于高吞吐量和低开销内核启动的压缩命令分组
US20180046463A1 (en) System and method for load and store queue allocations at address generation time
US10503541B2 (en) System and method for handling dependencies in dynamic thread spawning for a multi-threading processor
US20040128476A1 (en) Scheme to simplify instruction buffer logic supporting multiple strands
CN117806708A (zh) 一种信息反馈方法、系统及介质
CN108255587B (zh) 一种同步多线程处理器
CN116737374A (zh) 基于多线程的基准码识别方法、装置、计算机设备及介质
CN115080121A (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
GR01 Patent grant
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: 20200428

Termination date: 20210630