CN101667284B - 用于中央处理单元和图形处理单元之间通信的设备和方法 - Google Patents

用于中央处理单元和图形处理单元之间通信的设备和方法 Download PDF

Info

Publication number
CN101667284B
CN101667284B CN200910166643.2A CN200910166643A CN101667284B CN 101667284 B CN101667284 B CN 101667284B CN 200910166643 A CN200910166643 A CN 200910166643A CN 101667284 B CN101667284 B CN 101667284B
Authority
CN
China
Prior art keywords
processing unit
cpu
central processing
graphics
gpu
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
CN200910166643.2A
Other languages
English (en)
Other versions
CN101667284A (zh
Inventor
S·A·福德
S·T·艾利斯
E·C·普劳曼
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN101667284A publication Critical patent/CN101667284A/zh
Application granted granted Critical
Publication of CN101667284B publication Critical patent/CN101667284B/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Facsimiles In General (AREA)
  • Image Processing (AREA)

Abstract

本发明提供用来在数据处理设备的中央处理单元和图形处理单元之间进行通信的改良技术。提供可以被中央处理单元和图形处理单元访问的共用存储器,并且经由所述共用存储器,数据结构可以在中央处理单元和图形处理单元之间共用。还提供总线,中央处理单元、图形处理单元和共用存储器经由所述总线进行通信。根据控制图形处理单元的第一机构,中央处理单元经由该总线路由控制信号。然而,另外,在中央处理单元和图形处理单元之间提供接口,并且根据用来控制图形处理单元的附加机构,中央处理单元通过该接口提供控制信号。这使得GPU能够连续被用来处理大批量的与CPU执行的操作宽松耦合的图形处理操作,同时通过利用该附加机构,也能够在其中那些操作与CPU执行的操作紧密耦合的情形下采用GPU来代表CPU执行处理操作。

Description

用于中央处理单元和图形处理单元之间通信的设备和方法
技术领域
本发明涉及用于在中央处理单元和图形处理单元之间通信的设备和方法,并且尤其涉及能够使中央处理单元更有效地利用图形处理单元的资源的技术。
背景技术
图形处理单元单元(GPU)通常被设计成有助于快速且有效地执行公共图形处理操作,例如几何处理功能诸如对矢量输入的点(dot)、交叉(cross)和矩阵积计算。因为GPU通常被优选用于这样的操作,所以它们通常能够比中央处理单元(CPU)快得多地完成这些任务,即使这样的CPU包括SIMD(单指令多数据)硬件。
在典型的片上系统(SoC)环境中,CPU和GPU可以借助总线基础结构耦合在一起,并且共用存储器被用作CPU设置由GPU执行的分批操作的机构。在图1中示出这种公知的布置,其中CPU 10经由总线网30与GPU 20耦合,并且共用存储器40也被耦合到总线网30。要认识到的是,总线网30可以包括一个或多个分离总线,并且共用存储器40可以包括或不包括一级或多级高速缓存。
在图1中通过编号1到4的箭头示意性地示出CPU能够设置由GPU执行的一批操作的方式,步骤的顺序由图2的流程图更详细地说明。特别地,正如箭头1所指示和图2中步骤100所讨论的,CPU首先将一个或多个数据结构存储到共用存储器40。正如本领域技术人员将理解的,每个数据结构将具有被CPU和GPU二者理解的预定格式,并且在数据结构内提供的实际数据不仅可以识别GPU将要操作的数据值,而且可以识别限定被GPU执行的图形处理操作的指令。还将被理解的是,在指令和数据值可以在数据结构中被直接指定的同时,数据结构也可以包括一个或多个识别存储地址的指针(pointer),在所述存储地址处可以找到某些指令和/或数据值。
正如图1中箭头2所示以及图2中步骤105所说明的,CPU除了在共用存储器中存储一个或多个数据结构以外,通常也会将多个控制信息写入GPU 20中的一个或多个存储器映射控制寄存器25。由于控制寄存器25是存储器映射的,所以它们可以通过CPU发布的指定相关存储地址的访问请求由CPU通过总线网30直接访问。经由该路由,GPU的某些基本控制参数可以被设置成由CPU 10控制。通常,为了开始处理这批图形处理操作,控制寄存器25中的一个将具有存储在其中的值,所述值识别将被GPU访问的共用存储器中的至少一个数据结构。
一旦存储器映射控制寄存器已经被设置,并且相关的(一个或多个)数据结构已经存储在共用存储器40中,那么GPU将利用在存储器映射控制寄存器中的信息来开始它的操作,以便开始从共用存储器40检索所述相关的(一个或多个)数据结构。正如图1中箭头3所示以及图2中步骤110所说明的,这将使GPU执行由所述(一个或多个)数据结构限定的必需的图形处理操作,并且通常所述结果将被存储回到起始于预定地址的共用存储器40。
当GPU 20完成由所述(一个或多个)数据结构指定的该批操作的执行时,它将通过IRQ路径50发布到CPU的中断,正如图1中箭头4所示以及图2中步骤115所说明的。当接收到所述中断时,CPU 10通常将执行中断服务例程(ISR)以便从共用存储器40检索结果数据,此后该结果数据可以在CPU执行随后操作期间被CPU使用。
对于公共图形处理操作,与如果将那些操作改为在CPU 10上执行的情形比较,GPU 20通常能够达到更高的吞吐量,并且因此使用GPU能够大大提高总体系统的性能。然而,参考图1和2的以上描述,将被认识到的是,由于需要通过共用存储器中创建的数据结构的构造进行通信,还需要编写程序给必要的GPU 20的存储器映射控制寄存器25,所以存在相当大的设置时间,所述设置时间包含在设置将由GPU执行的操作中。对于包含被通过从CPU卸载该工作到GPU所获得的吞吐量性能利益补偿的长等待时间,对于可以形成足够大的批量的普通图形操作,该长等待时间一般不被认为是问题。
然而,目前存在由CPU执行的其它操作,所述操作有可能由GPU有效执行,但是其中在设置GPU以执行所述操作中包含的长等待时间使得GPU不实用。例如,在CPU上执行图形和博弈(gaming)代码期间相对小段的代码在程序代码的内循环部分被重复多次是普通的,所述程序代码实例是在基于物理学的动画制作中,用于在3D世界中寻找路径或用于为人工智能构造确定可见物体的人工智能代码。这种代码的执行通常是时间临界的(time critical)。当由这种代码限定的操作或操作组原则上能够通过利用GPU来加速时,它们趋向于包括相对小的代码段(根据一旦代码已经被映射到GPU时所需要的GPU操作的数目)并且包含相对小的数据量(例如一个或两个矩阵以及一些向量)。通常,难以布置将在足够大的批量中执行的这些操作来克服包含在将数据结构写出到共用存储器中的等待时间,使GPU执行发布中断后面的必要操作,以及然后使CPU响应于所述中断以便读取相关结果。
这样的因素趋向于阻止CPU利用GPU的对于以上类型操作的处理能力,尤其因为在这种情况下CPU经常不能补偿由使用GPU引入的长等待时间(在卸载操作之后的CPU代码或代码组通常会严重依赖于所述卸载操作的结果)。
然而,对于GPU传统用于的图形处理操作类型而言,可以说GPU的可用硬件资源并没有完全利用所有的时间,并且因此GPU可能具有多余的处理能力。
因此,期望提供用于CPU和GPU之间的通信的改良技术,其允许GPU连续执行现有的图形处理操作,也便于卸载其它较小可容忍等待时间的操作到GPU。
发明内容
从第一方面考虑,本发明提供一种数据处理设备,所述数据处理设备包括:用来执行指令流的中央处理单元;用来代表中央处理单元执行图形处理操作的图形处理单元;可以被中央处理单元和图形处理单元访问的共用存储器,经由所述共用存储器数据结构可以在中央处理单元和图形处理单元之间共用;总线,中央处理单元、图形处理单元和共用存储器可以经由所述总线进行通信,中央处理单元根据用来控制图形处理单元的第一机构通过该总线来路由控制信号;以及在中央处理单元和图形处理单元之间的接口,中央处理单元根据用来控制图形处理单元的附加机构通过该接口提供控制信号。
根据本发明,CPU被提供有两个用来控制GPU的分离机构。根据第一机构,控制信号可以经由互连的CPU、GPU和共用存储器的总线而被路由,允许GPU以标准方式受控。然而,另外,在CPU和GPU之间提供接口,并且可以根据用来控制图形处理单元的附加机构通过该接口直接提供控制信号。通过提供所述两个分离机构,就通过CPU对GPU进行控制而论提供了大大改善的灵活性。对于大批量工作而言,其中包含在设置阶段中的长等待时间不只是由使用GPU导致的改善的吞吐量补偿,可以使用第一机构,并且控制信号通过CPU和GPU之间的总线而被路由,以及所需的数据结构设置在共用存储器中。对于较小任务而言,其中涉及第一机构的使用的等待时间使第一机构的使用被禁止,和/或其中所述任务本身是不能容忍等待时间的(latencyintolerant)(例如当那些任务涉及在CPU上执行的在时间临界代码位内的操作时),则CPU和GPU之间的接口可以被用作提供控制信号给GPU的直接机构。
因此,通过利用本发明的附加机构,对于比常规卸载到GPU的那些操作有小很多的可容忍等待时间的操作的执行而言,这提供了一种使CPU以减少的等待时间和更高的效率利用GPU资源的技术。
在一个实施例中,第一机构被用来控制图形处理单元以执行与中央处理单元执行的操作宽松耦合的图形处理操作,并且附加机构被用来控制图形处理单元以执行与中央处理单元执行的操作紧密耦合的处理操作。宽松耦合的操作可以被认为是这样的操作,其中那些操作的结果的可用性的计时对CPU不是时间关键的,通常正如作为大批量操作的常规卸载到GPU的标准图形处理操作的情形。相反,紧密耦合是操作是这样的操作,其中所述结果的可用性的计时对CPU是关键的并且在那些结果的可用性中的任何明显的延迟将大大影响CPU的性能。
应当注意的是,利用本发明的附加机构的接口从CPU卸载到GPU的操作不必是图形处理操作,而可以是能够利用GPU的硬件资源被有效执行的任何操作。实例包括游戏物理(game physics)、路由查找、粒子模拟(例如烟、火等)、流体流动模拟、某些类型的音频效果或信号处理等。
有许多可以在采用本发明的附加机构时通过接口提供控制信号的方式。在一个实施例中,通过接口提供的控制信号实际包括将由图形处理单元执行的一个或多个指令。
在一个特定实施例中,以这种方式通过接口提供的指令实际包含在由CPU执行的指令流内,并且被CPU识别为将由图形处理单元处理的指令。GPU指令的指示经常也将通过CPU管线(pipeline),并且在GPU内GPU指令的执行期间一个或多个信号交换信号(handshakingsignal)经由接口在CPU和GPU之间传送。
在一个特定实施例中,被CPU识别的GPU指令可以被编码成CPU的指令集的未使用的角(corner),使得任何已知指令将会被识别为CPU指令或GPU指令,但不会被识别为这两者。然而,在替换实施例中,指令可以包含在指令流中以使CPU改变其操作模式,这允许相同的指令编码被重新使用,但是该指令编码对CPU和GPU而言意味着不同的东西。
例如,在一个实施例中,在通过所述接口提供所述一个或多个指令之前,中央处理单元执行切换指令(switch instruction)以从被中央处理单元使用的指令集切换到被图形处理单元使用的指令集,使得在所述流中的随后的指令被理解为将被图形处理单元处理的指令。因此,由CPU执行切换指令使CPU将后面的指令理解为GPU指令,并且由此通过接口将那些指令提供给GPU。切换指令经常会采取特定类型的分支指令形式,所述特定类型的分支指令形式会使特定序列的GPU指令随后被执行,此后操作模式将切换回普通CPU模式以使CPU能够继续执行CPU指令。
当采用附加机构时通过接口提供的指令可以采取多种形式。例如,在一个实施例中那些指令中的至少一个可以将指针提供给共用存储器中的一个或多个数据结构。因此,在这样的实施例中,指令可以通过接口直接从CPU输入(inject)到GPU,但是然后数据值起作用,并且可选地识别将被执行的操作,然后由共用存储器中的一个或多个数据结构提供。
然而,虽然在使用本发明的附加机构时仍然可以利用共用存储器,但是没有需要使用共用存储器。在一个实施例中,通过接口提供的指令中的至少一个在GPU上执行时可以使数据在CPU的寄存器文档和GPU的寄存器文档之间传送。因此,在该实施例中,CPU和GPU二者保持分离的寄存器文档,并且数据可以通过各自的寄存器文档之间的接口被路由。可替换地,正如稍后将详细讨论的,CPU和GPU可以被布置成共用寄存器文件,并且当代表CPU执行任何特定操作时CPU为GPU识别所述寄存器文件内的哪个寄存器将被GPU使用。
此外,在一个实施例中,在使用附加机构时通过接口提供的指令中的至少一个可以指定将被图形处理单元执行的数据处理操作。因此,在这样的实施例中,指令中的至少一些将识别将由GPU执行的实际操作,并且因此例如可以识别算术运算、控制流运算、逻辑运算、比较运算、屏蔽操作等。
作为通过接口路由指令的备选方案,在替换实施例中,当采用附加机构时,通过接口提供的控制信号可以由CPU执行的至少一个指令而产生。
在一个特定实施例中,以这种方式提供的控制信号可以将指针提供给所述共用存储器中的一个或多个数据结构,限定将由图形处理单元执行的处理操作。因此,在这样的实施例中,根据共用存储器中的一个或多个数据结构,执行CPU内的一个或多个指令可以使将经由接口直接提供给GPU的控制信号启动对GPU的操作。
在一个实施例中,中央处理单元和图形处理单元被布置成共用寄存器文档,并且当采用附加机构时通过接口提供的所述控制信号在执行由所述控制信号限定的处理操作时指定将被图形处理单元使用的共用寄存器文档中的一个或多个寄存器。这可以提供特别有效的机构用来在CPU和GPU之间共用数据。
在一个这样的实施例中,中央处理单元被布置成在记分板电路(scoreboard circuitry)中识别控制信号中被指定为图形处理单元使用的那些寄存器,以防止当图形处理单元执行由所述控制信号限定的处理操作时那些寄存器被中央处理单元使用。因此,通过这样的机构,特定的寄存器可以留给图形处理单元使用,并且由图形处理单元完成相关的处理操作,然后可以释放那些寄存器以供中央处理单元重新使用。
通过使用记分板电路,在等候GPU完成卸载操作时可以允许CPU继续操作。然而,在其中CPU停止等候来自GPU的结果的实施例中,可以不需要如上所述地使用记分板电路。
在一个实施例中,当图形处理单元执行由通过根据附加机构的接口而提供的所述控制信号限定的处理操作时,中央处理单元连续执行不依赖于由图形处理单元执行的所述处理操作的结果的指令。
然而,可以预想的是,在CPU取得任何重大的更进一步的进展之前通过利用附加机构的接口卸载到GPU的操作的类型往往是其中CPU将需要那些操作的结果的操作。因此,在一个实施例中,在通过根据附加机构的接口提供所述控制信号之后,中央处理单元停止执行其指令直到由图形处理单元响应于所述控制信号执行的处理操作的结果可以用于中央处理单元为止。
在一个实施例中,图形处理单元支持多线程执行,并且包括用来布置图形处理单元中的线程的调度程序。在一个这样的实施例中,一旦图形处理单元经由接口收到由中央处理单元提供的任何控制信号,调度程序就被布置成调度至少一个线程以用于处理与那些控制信号有关的操作。在本发明的一些实施例中,这可以经由单一执行线程提供用于控制从在CPU上执行应用代码到在GPU上执行该应用代码的转换的机构。
在一个实施例中,调度程序被布置成给予与经由接口接收的所述控制信号有关的任何线程比给予其它线程更高的优先级。在通过利用附加机构卸载到GPU的操作是与由CPU执行的操作紧密耦合的操作的的情况下,这提供了用来确保那些被卸载的操作在GPU内被执行得尽可能快的机构,由此使等待时间最小化。
在一个实施例中,调度程序被布置成以设法利用图形处理单元的任何空闲的计算能力的方式调度与经由接口接收的所述控制信号有关的任何线程。根据该实施例,目的是以不影响由GPU执行的大部分处理的方式经由附加机构容纳被卸载到GPU的操作,其仍然预期由第一机构启动。因此,GPU保留它执行宽松耦合的操作的能力,但是以设法利用GPU未使用的计算能力的方式加入经由附加机构路由的任何附加操作。在许多情况下,这仍然可以满足CPU所要求的计时,因为通过利用附加机构,将会避免在利用第一机构时,长等待时间包含在设置时间中,并且因此假定GPU的空闲计算能力频繁出现,该方法可以为经由附加机构卸载到GPU的操作提供足够快的周转时间。
当然,在一些实施例中,该方法可以结合其中某一更高优先级的形式被经由附加机构的接口给予到所路由的操作的方法。例如,这种方法能够使调度程序一开始就设法将与经由接口接收的控制信号有关的任何线程分配到GPU的空闲计算资源,但是如果在预定的时间段后那还没有可能,则该线程将被给予高的优先级以确保此后一有可能它就被调度。
在一个实施例中,当采用第一机构时,经由总线路由的控制信号使控制值被写入到图像处理器的存储器映射控制寄存器中以便控制图像处理器。因此,在这样的实施例中,与其中CPU和GPU之间的接口允许从CPU到GPU直接提供控制信号的本发明的附加机构对比,第一机构依靠基于地址的控制信号的路由。
从第二方面考虑,本发明提供一种数据处理设备,所述数据处理设备包括:用来执行指令流的中央处理装置;用来代表中央处理装置执行图形处理操作的图形处理装置;可以被中央处理装置和图形处理装置访问的共用存储器,用来在中央处理装置和图形处理装置之间共用数据结构;总线装置,用来在中央处理装置、图形处理装置和共用存储器装置之间进行通信,中央处理装置用于根据用来控制图形处理装置的第一机构经由该总线装置路由控制信号;在中央处理装置和图形处理单元装置之间的接口装置,中央处理装置根据用来控制图形处理装置的附加机构经由该接口装置提供控制信号。
从第三方面考虑,本发明提供一种操作数据处理设备的方法,所述数据处理设备包括:用来执行指令流的中央处理单元、以及用来代表中央处理单元执行图形处理操作的图形处理单元,所述方法包括下述步骤:采用可以被中央处理单元和图形处理单元访问的共用存储器,以便在中央处理单元和图形处理单元之间共用数据结构;提供总线,中央处理单元、图形处理单元和共用存储器经由所述总线进行通信;根据用来控制图形处理单元的第一机构经由总线来路由来自中央处理单元的控制信号;在中央处理单元和图形处理单元之间提供接口;以及根据用来控制图形处理单元的附加机构经由接口从中央处理单元提供控制信号。
附图说明
将参考附图中所示的实施例,仅借助实例来进一步描述本发明,其中:
图1是示意性示出根据已知布置的CPU和GPU的耦合的图;
图2是示出图1中示出的设备的操作的流程图;
图3A是示意性示出根据本发明的一个实施例的数据处理设备的图;
图3B是示意性示出根据本发明的替换实施例的数据处理设备的图;
图4是示出根据本发明的一个实施例的图3A或3B的在GPU的执行管线内提供的部件的框图;
图5A是示出根据本发明的一个实施例的图4的调度程序的操作的流程图;
图5B是示出根据本发明的替换实施例的图4的调度程序的操作的流程图;以及
图6到8示出可以用来经由本发明的实施例的CPU/GPU接口控制GPU的三个不同机构。
具体实施方式
图3A是示意性示出根据本发明的一个实施例的数据处理设备的框图。在一个特定实施例中,数据处理设备采取片上系统(SoC)的形式。以类似于图1的现有技术的方式,CPU 210和GPU 220耦合到总线网络230,并且共用存储器240也耦合到总线网络。总线网络230可以包括一个或多个分离的总线,并且共用存储器240可以包括或不包括一级或多级高速缓存。
根据控制GPU的第一机构,CPU 210可以在共用存储器240中存储一个或多个数据结构,并且经由总线230可以另外对GPU内的一个或多个存储器映射控制寄存器进行访问,以便将不同的控制值写入GPU中,从而启动GPU执行连续的图形处理操作。如同前面图1的现有技术实例一样,当使用这种机构时,GPU一完成必需的任务,中断就可以通过路径250从GPU发给CPU。
然而,根据图3A中所示的本发明的实施例,也在CPU 210和GPU220之间提供接口215以便提供用来控制GPU的替换的直接机构。当采用该替换的机构时,CPU 210通过接口内的控制路径215发出一个或多个控制信号,除了由于利用早先描述的第一机构而已经被调度的任何操作外,所述控制信号一被GPU收到就使GPU调度一个或多个在GPU内执行的处理操作。
通过提供用来控制GPU的这两个不同且分离的机构,提供了大大改善的灵活性。特别地,对于大批量工作而言,其中包含在设置阶段(对GPU的所需的控制寄存器进行编程并且将所需的数据结构存储到共用存储器)中的长等待时间不只是由使用GPU导致的改善的吞吐量补偿,使用传统的第一机构。然而,对于较小任务而言,其中涉及第一机构的使用的等待时间使该机构被禁止,和/或其中所述任务本身是不能容忍等待时间的,则CPU 210和GPU 220之间的接口215可以被用作提供控制信号给GPU的直接机构。
当使用本发明的实施例的接口215时,有许多可以在GPU执行所需要的操作期间被用来管理CPU和GPU之间的数据传送的技术。虽然在一些情况下,仍适合使用共用存储器240,特别是存储在共用存储器内的一个或多个数据结构,但为了在CPU和GPU之间传送数据,代替地可将被GPU处理的所需数据值经由接口215直接在CPU和GPU之间传送。在图3A中所示的实施例中,CPU 210和GPU 220都可以分别具有它们自己的寄存器文件212、222,并且可以响应于通过接口215的控制路径从CPU发送到GPU的控制信号,当在GPU 220上执行相关数据处理操作期间根据需要以及需要时,将数据通过路径217从CPU寄存器文件212移动到GPU寄存器文件222。类似地,由GPU产生的结果数据可以经由路径217从GPU寄存器文件222存储回CPU寄存器文件212,以用来随后被CPU 210参考。
图3B示意性示出本发明的替换实施例。所述实施例类似于早先参考图3A所讨论的实施例,但是在图3B的实施例中,在CPU 210内提供共用寄存器文件216,并且GPU 220没有它自己单独的寄存器文件。根据该实施例,当经由接口215执行由CPU启动的所需的操作时,通过接口215的控制路径从CPU 210发到GPU 220的控制信号可以被布置成指定将被GPU 220使用的共用寄存器文件216的一个或多个寄存器。然后GPU 220可以经由路径219对那些特定的寄存器进行访问,并且特别地,在执行所需的操作期间共用寄存器文件216对GPU 220的数据路径执行管线将是可访问的。
在一个实施例中,当CPU 210使用接口机构启动GPU 220上的特定任务时,那么CPU 210停止等候从GPU回来的结果。然而,在替换实施例中,CPU 210可以被布置成连续执行不依赖于由GPU产生的结果的任何指令。在那种情况下,可以提供可选的记分板电路218,并且所述记分板电路被用来识别那些已经指定被GPU使用的寄存器,以便防止当GPU在执行需要访问那些寄存器的操作的过程中时那些寄存器被CPU使用。然后当GPU表明它已经完成所需的操作时所述寄存器被释放以被CPU使用。
通常GPU包括一个或多个被优选用来执行特定图形处理操作的管线执行单元。在图4中示出了一个这样的执行单元。特别地,图4示出GPU 220的可以用来构成执行单元270的那些部件,用于由从共用存储器获得的三角形数据(triangle data)生成像素值。执行单元270将经由存储器接口280访问共用存储器240,并且在通过CPU210利用前述第一机构设置GPU 220之后,该执行单元270可以被布置成执行后面的操作序列。
首先,平铺列表(tile list)读取器300将被布置成经由存储器接口280对共用存储器240进行访问以便为每个屏幕平铺读取表示三角形数据的一个或多个数据结构。然后三角形设置引擎(trianglesetup engine)305将处理所述数据结构以便将那些数据结构转换成将被光栅化(rasterized)的三角形列表(即变成像素)。光栅化电路(rasterizer circuit)310然后确定需要被计算以形成每个三角形的所有像素。此后,那些需要被计算的像素被放置在调度队列315中(其在一个实施例中被布置成FIFO队列)。
调度程序电路320然后被用来控制渲染管线(shader pipeline)325,所述渲染管线325通常被布置成多线程管线。特别地,调度程序通过调度和重新调度像素渲染程序来控制渲染管线以便为调度程序队列中的每个像素执行必要的像素计算。当为从调度程序队列检索的特定像素调度像素渲染程序时,该像素渲染程序然后在渲染管线325内运行,并且在一个或多个通过渲染管线之后该程序然后将为相关像素计算像素颜色。
混合器(blender)电路330然后被用来混合被计算的像素和现有的像素,此后输出被传送给被用来收集为屏幕平铺计算的像素的平铺缓冲器(tile buffer)335。通常,GPU的以上操作将由CPU利用常规的第一机构进行设置,CPU通过一个或多个存储在共用存储器中的数据结构来提供大量用于处理的三角形数据。当执行上述操作时,将需要的数据结构存储在共用存储器中以及经由总线230写到GPU220的相关存储器映射控制寄存器所涉及的长设置时间不只是由通过GPU 220获得的高吞吐量补偿。
然而,根据本发明的实施例,已经实现的是,即使当执行这种大批量工作处理时,仍然会有GPU的一些硬件资源被利用的时间段,并且如果所述硬件资源能够被有效访问那么它们就能够被CPU有利地用于其它目的。例如,如果那些资源能够被CPU以最小等待时间进行访问则可以在渲染管线325内处理可以被CPU用来执行特定操作的资源。
根据本发明的实施例,CPU 210被布置成使用由接口215提供的附加控制机构以便使这样的操作能够被卸载到GPU 220。因此,考虑渲染管线325的实例,可以布置调度程序320接收经由接口215从CPU路由到GPU的控制信号,并且某些控制信号确实也可以与识别将被处理的数据的任何所需的数据信号一起被路由到渲染管线中。类似地,渲染管线可以通过接口215将数据和相关信号输出回CPU,如图4中所示。
图5A是示出一个方式的流程图,其中调度程序320可以被布置成如此操作以便考虑经由接口215接收的任何控制信号。每当调度程序不得不决定将被调度到渲染管线中的下一个工作时,图5A中所示的过程通常将会被执行,并且因此例如所述过程可以每个时钟周期被执行一次。在步骤400,调度程序确定渲染管线内是否有需要被重新调度的程序,例如如果为了使特定像素颜色被确定需要一个以上的程序通过渲染管线时可以是这种情形。如果这样的程序已经到达渲染管线的末端并且需要再次重新调度,则这将在步骤400被确定,并且在步骤420该程序将被重新调度。
然而,假定没有需要被重新调度的程序,则过程进行到步骤405,其中确定是否已经经由接口215从CPU收到任何控制信号。此后这样的控制信号将被认为是表示CPU请求。每个CPU请求可以识别将被GPU执行的一个或多个处理操作。在一个实施例中,正如之前所讨论的,这样的操作通常将与由CPU执行的操作紧密耦合,并且由于常规第一机构的长等待时间因此不能通过该机构而被卸载到GPU。根据图5A的过程,调度程序以高的优先级处理通过接口接收到的这样的CPU请求,并且因此在有任何这种CPU请求的情况下该过程形成分支到步骤410,其中程序被调度以服务于CPU请求。如果在步骤405没有检测到CPU请求,则过程进行到步骤415,其中调度程序320从调度程序队列315拉出(pull)下一个工作并且调度程序来服务于该工作。
虽然上述机构确保经由接口215接收的CPU请求被GPU迅速处理,但是在许多实施例中对这样的CPU请求没必要对GPU的普通操作进行这样侵入式地(invasively)处理,而当资源在渲染管线内可用时调度程序可以设法分配那些CPU请求。图5B示出可以被调度程序320执行来实施这样的计划的替换操作序列。如同图5A一样,每当调度程序需要调度程序到渲染管线时由图5B流程图示出的过程将被重复,并且因此在一个实施例中每一个时钟周期都可以被重复。
在步骤450,调度程序320确定是否有需要被重新调度的程序,并且如果有的话则该程序在步骤460被重新调度。因此,将被理解的是,步骤450和460类似于早先参考图5A讨论的步骤400和420。
如果程序不需要被重新调度,则过程进行到步骤455,其中下一个工作被从调度程序队列315拉出并且被调度到渲染管线325。此后,或者如果程序被重新调度的话在步骤460之后,调度程序320在步骤465确定是否已经从CPU接收任何控制信号,即是否有未决的CPU请求。如果没有,则不需要进一步的动作。然而,如果CPU请求未决,则过程进行到步骤470,其中调度程序确定在渲染管线内是否有可用来处理CPU请求的任何多余资源。如果有,则在步骤475那些资源被调度来服务于CPU请求,然而如果没有多余的资源可用则当时不采取行动。
将被理解的是,图5B的流程图允许经由接口接收的CPU请求在渲染管线的资源变得可用时被调度进入渲染管线的资源。假定在渲染管线内的资源在短的时间段内可能变得可用,则这种方法将允许经由接口215接收到的CPU请求迅速地并且以非常有效的方式被处理,因为对由GPU执行的主要批量工作仅有非常小的影响或没有影响。由于第一机构的长等待时间已经依靠经由接口将CPU请求直接输入GPU而被避免,很可能即使在依据图5B的流程而不是图5A的更加侵入式的方法时GPU也将能够迅速到足够满足CPU的计时要求来处理CPU请求。
图6到8示出经由本发明的实施例的接口控制GPU的三个替换机构。根据图6中示意性地示出的方法,CPU 210被布置成执行共用指令流500内提供的指令序列。除了出现在该指令流内并且被CPU 210执行的普通CPU指令外,将会有许多这样的GPU指令,它们的编码与CPU指令集不交叠,并且因此其在初始解码阶段期间能够被CPU认作GPU指令。一旦被认作GPU指令,那些指令通过接口215被传送到GPU220以被GPU执行。在执行GPU中的GPU指令期间,GPU指令的指示经常也将通过CPU管线,并且一个或多个信号交换信号经由接口215在CPU和GPU之间传送。
在图6的方法的一个特定实施例中,当CPU 210利用接口215控制GPU时,控制GPU的方式可以被认为类似于ARM处理器核控制ARM的Neon SIMD处理电路的方式,ARM的Neon SIMD处理电路的一般讨论在共同拥有的美国专利7,145,480中被描述,在此并入其全部内容作为参考。
图7示出替换方法,其中共用指令流510再次被CPU 210执行,但是CPU和GPU指令不具有完全唯一的编码。代替地,CPU 210可以被布置成执行切换指令以从CPU标准操作模式切换成GPU操作模式。在切换指令之后,考虑到GPU操作模式来解码随后的指令。在图7中所示的实例中,该切换指令被称作“BXL”指令,除了改变操作模式之外所述切换指令使分支出现在存在GPU指令序列的一部分代码流。虽然所述序列中的一个或多个指令仍然可能需要由CPU执行,但是可以设想的是,切换之后的大部分指令将打算给GPU执行,并且因此将经由接口215被路由到GPU 220以便执行。当所需要的GPU指令序列已经被执行时,过程将分支回BXL指令后面的CPU指令,在该点处将恢复正常的CPU模式,并且随后的指令将被解码并且作为CPU指令被执行。
有许多能够提供返回到正常CPU模式的方式。例如,在一个实施例中CPU指令中的一个可以使GPU将执行环境再次变回到CPU。这可以是明确的BX式样指令或引起到非GPU地址的返回的指令。可替换地,它可以是取消GPU线程并且允许CPU从初始BXL指令后面的下一个指令继续的特定指令。
不管是使用图6的方法还是图7的方法,通过接口被发送到GPU的指令可以采取多种形式。在一个实施例中,指令中的至少一个可以将指针提供给共用存储器中的一个或多个数据结构。因此,在这样的实施例中,指令可以通过接口从CPU被直接输入GPU,然后数据值起作用,并且可选地识别将被执行的操作,然后由共用存储器中的一个或多个数据结构提供。
然而,对所使用的共用存储器不存在要求,并且代替地,当在GPU上执行时通过接口提供的一个或多个指令可以使数据在CPU的寄存器文件和GPU的寄存器文件之间传送,正如例如早先参考图3A所讨论的。可替换地,正如早先参考图3B所讨论的,可以提供共用寄存器文件,并且当执行所需的操作时通过接口路由的一个或多个指令可以识别将被GPU使用的共用寄存器文件的寄存器。
另外,指令中的一个或多个可以指定将被图形处理单元执行的实际数据处理操作,例如算术运算、控制流运算、逻辑运算、比较运算、屏蔽操作等。
图8示出可以使用的替换机构,其中指令流520不被共用,并且代替地该替换机构仅包括由CPU 210执行的指令。然而,由CPU执行的指令中的至少一个可以使通过接口被发送到GPU 220的一个或多个控制信号启动对GPU的一个或多个操作。在图8的实例中,这种指令被称作BXGPU指令,其在被执行时使CPU生成一个或多个传给GPU 220的控制信号,此后CPU的执行停止。在一个实施例中所述控制信号将指针提供给共用存储器中的一个或多个数据结构,并且也可以为将要执行的操作提供配置GPU所必需的各种状态信息。一收到这些控制信号,GPU就调度必需的任务,例如利用早先描述的图5A或5B的机构,并且一完成就通过路径250发出中断信号。然后CPU将通过执行中断服务例程对所述中断做出响应以便从GPU检索结果数据(所述结果数据例如可以存储在共用存储器中,或可能已经经由接口直接存储在CPU寄存器文件中)。然后CPU将从紧接在BXGPU指令之后的指令开始恢复执行指令520的序列。
由本发明的实施例的以上描述,将会看到,通过利用这样的实施例的接口215,提供一种用来关闭片上系统环境中的CPU和GPU的耦合的技术,使得CPU中央(centric)代码可以在不遭受与更多卸载到GPU的常规操作有关的设置开销的情况下利用GPU硬件以用于特定任务。在一个实施例中CPU和GPU二者都可以执行来自由CPU管理的公共指令流,并且通信机构设法使任务切换或通信开销或损失最小化。
本发明的实施例提供了这样的能力:允许关键代码部分重定目标(其可以被加速并且容易从单个执行线程被吸收进潜在的GPU计算能力),增加GPU/CPU部件的总能力,超过通过共用存储器交互作用所能达到的总能力。
在本发明的一个实施例中,当使用接口机构时,可以避免或者至少大大减少使用用来在CPU和GPU之间进行通信的共用存储器。在一个实施例中,可以经由CPU的寄存器文件和GPU的寄存器文件之间的接口直接传送数据,或者可替换地可以使用共用寄存器文件。考虑一个其中使用共用寄存器库(bank)的特定实施例,于是如果CPU 210采用例如早先提及的美国专利7,145,480中描述的Neon体系结构,则提供用于Neon功能性的SIMD寄存器库可以被分配作为将与GPU共用的寄存器库,因为Neon寄存器库的数目、宽度和固有布置使得寄存器库将更可能包括GPU运行所需要的数据。例如,游戏机人工智能和物理代码以及数据表示导致它们本身对Neon很有利,并且具有使用本发明的接口机构卸载某些功能到GPU的能力,这可以对处理能力提供重大改善。在这样的实施例中,CPU侧的Neon寄存器可以用于最初输入和最终输出的寄存器,同时GPU内的工作寄存器可以用于中间结果和临时值。这种方法会有助于减小微体系结构复杂性。
尽管在这里已经描述了特定的实施例,但是将理解的是,本发明并不限于此,并且在本发明的范围内可以对其进行许多修改和添加。例如,在不脱离本发明的范围的情况下可以对后面从属权利要求的特征与独立权利要求的特征进行多种组合。

Claims (19)

1.一种数据处理设备,包括:
用来执行指令流的中央处理单元;
用来代表该中央处理单元执行图形处理操作的图形处理单元;
可被该中央处理单元和该图形处理单元访问的共用存储器,经由所述共用存储器,数据结构可在该中央处理单元和该图形处理单元之间共用;
总线,该中央处理单元、该图形处理单元和该共用存储器通过所述总线进行通信,该中央处理单元经由作为用来控制该图形处理单元的第一机构的该总线来路由控制信号;以及
在中央处理单元和图形处理单元之间的接口,该中央处理单元通过作为用来控制该图形处理单元的附加机构的该接口提供控制信号,
其中,所述中央处理单元被配置为利用所述第一机构控制图形处理单元以执行图形处理操作,所述图形处理操作与由该中央处理单元执行的操作宽松耦合;并且
其中,所述中央处理单元被配置为利用所述附加机构控制图形处理单元以执行与由该中央处理单元执行的操作紧密耦合的处理操作。
2.如权利要求1所述的数据处理设备,其中当采用该附加机构时通过该接口提供的控制信号包括将由该图形处理单元执行的一个或多个指令。
3.如权利要求2所述的数据处理设备,其中所述一个或多个指令被包含在所述指令流内并且被该中央处理单元识别为将被该图形处理单元处理的指令。
4.如权利要求2所述的数据处理设备,其中在通过所述接口提供所述一个或多个指令之前,该中央处理单元执行切换指令以从被该中央处理单元使用的指令集切换到被该图形处理单元使用的指令集,使得在所述流中的随后的指令被理解为将被该图形处理单元处理的指令。
5.如权利要求2所述的数据处理设备,其中所述一个或多个指令中的至少一个是将指针提供给所述共用存储器中的一个或多个数据结构的指令。
6.如权利要求2所述的数据处理设备,其中所述一个或多个指令中的至少一个是当被执行时使数据在中央处理单元的寄存器文件和图形处理单元的寄存器文件之间传送的指令。
7.如权利要求2所述的数据处理设备,其中所述一个或多个指令中的至少一个指定将由图形处理单元执行的数据处理操作。
8.如权利要求1所述的数据处理设备,其中当采用该附加机构时通过该接口提供的控制信号由所述中央处理单元执行至少一个指令而产生。
9.如权利要求8所述的数据处理设备,其中所述控制信号将指针提供给所述共用存储器中的一个或多个数据结构,以限定将由图形处理单元执行的处理操作。
10.如权利要求1所述的数据处理设备,其中中央处理单元和图形处理单元被布置成共用寄存器文件,并且当采用该附加机构时通过该接口提供的所述控制信号指定当执行由所述控制信号限定的处理操作时将被图形处理单元使用的共用寄存器文件中的一个或多个寄存器。
11.如权利要求10所述的数据处理设备,其中中央处理单元被布置成在记分板电路中识别控制信号中被指定为由图形处理单元使用的那些寄存器,以防止当图形处理单元执行由所述控制信号限定的处理操作时那些寄存器被中央处理单元使用。
12.如权利要求1所述的数据处理设备,其中当图形处理单元执行由根据该附加机构通过该接口提供的所述控制信号限定的处理操作时,中央处理单元连续执行不依赖于由图形处理单元执行的所述处理操作的结果的指令。
13.如权利要求1所述的数据处理设备,其中在根据该附加机构通过该接口提供所述控制信号之后,中央处理单元停止其指令执行直到由图形处理单元响应于所述控制信号执行的处理操作的结果被中央处理单元可用为止。
14.如权利要求1所述的数据处理设备,其中:
图形处理单元支持多线程执行,并且包括用来调度图形处理单元内的线程的调度程序;
图形处理单元一旦经由该接口接收到所述控制信号,该调度程序就被布置成调度用于与那些控制信号有关的处理操作的至少一个线程。
15.如权利要求14所述的数据处理设备,其中该调度程序被布置成给予与经由该接口接收的所述控制信号有关的任何线程比给予其它线程的优先级更高的优先级。
16.如权利要求14所述的数据处理设备,其中该调度程序被布置成以设法利用图形处理单元的任何空闲计算能力的方式调度与经由该接口接收的所述控制信号有关的任何线程。
17.如权利要求1所述的数据处理设备,其中当采用第一机构时,经由该总线路由的控制信号使控制值被写入到图形处理单元的存储器映射控制寄存器中以便控制该图形处理单元。
18.一种数据处理设备,包括:
用来执行指令流的中央处理装置;
用来代表该中央处理装置执行图形处理操作的图形处理装置;
可被该中央处理装置和该图形处理装置访问的共用存储器装置,用来在该中央处理装置和该图形处理装置之间共用数据结构;
总线装置,用来在中央处理装置、图形处理装置和共用存储器装置之间进行通信,该中央处理装置经由作为用来控制图形处理装置的第一机构的该总线装置来路由控制信号;
在中央处理装置和图形处理装置之间的接口装置,该中央处理装置通过作为用来控制图形处理装置的附加机构的该接口装置提供控制信号,
其中,所述中央处理装置被配置为利用所述第一机构控制图形处理装置以执行图形处理操作,所述图形处理操作与由该中央处理装置执行的操作宽松耦合;并且
其中,所述中央处理装置被配置为利用所述附加机构控制图形处理装置以执行与由该中央处理装置执行的操作紧密耦合的处理操作。
19.一种操作数据处理设备的方法,所述数据处理设备包括用来执行指令流的中央处理单元以及用来代表该中央处理单元执行图形处理操作的图形处理单元,所述方法包括以下步骤:
采用可被中央处理单元和图形处理单元访问的共用存储器,以便在中央处理单元和图形处理单元之间共用数据结构;
提供总线,中央处理单元、图形处理单元和共用存储器经由所述总线进行通信;
经由作为用来控制图形处理单元的第一机构的该总线从中央处理单元路由控制信号;
在中央处理单元和图形处理单元之间提供接口;以及
通过作为用来控制图形处理单元的附加机构的该接口从中央处理单元提供控制信号,
其中,所述中央处理单元利用所述第一机构控制图形处理单元以执行图形处理操作,所述图形处理操作与由该中央处理单元执行的操作宽松耦合;并且
其中,所述中央处理单元利用所述附加机构控制图形处理单元以执行与由该中央处理单元执行的操作紧密耦合的处理操作。
CN200910166643.2A 2008-08-22 2009-08-24 用于中央处理单元和图形处理单元之间通信的设备和方法 Expired - Fee Related CN101667284B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0815442.9 2008-08-22
GB0815442.9A GB2462860B (en) 2008-08-22 2008-08-22 Apparatus and method for communicating between a central processing unit and a graphics processing unit

Publications (2)

Publication Number Publication Date
CN101667284A CN101667284A (zh) 2010-03-10
CN101667284B true CN101667284B (zh) 2013-06-05

Family

ID=39846750

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910166643.2A Expired - Fee Related CN101667284B (zh) 2008-08-22 2009-08-24 用于中央处理单元和图形处理单元之间通信的设备和方法

Country Status (4)

Country Link
US (1) US8675006B2 (zh)
JP (1) JP2010050970A (zh)
CN (1) CN101667284B (zh)
GB (2) GB2462860B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220334765A1 (en) * 2021-04-16 2022-10-20 Western Digital Technologies, Inc. Command Queue Order Adjustment in a Data Storage Device

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
US20110134120A1 (en) * 2009-12-07 2011-06-09 Smart Technologies Ulc Method and computing device for capturing screen images and for identifying screen image changes using a gpu
US20110227934A1 (en) * 2010-03-19 2011-09-22 Microsoft Corporation Architecture for Volume Rendering
US8275805B2 (en) * 2010-03-26 2012-09-25 Intel Corporation Method of decreasing a total computation time for a visual simulation loop in a virtual world application
US20110242115A1 (en) * 2010-03-30 2011-10-06 You-Ming Tsao Method for performing image signal processing with aid of a graphics processing unit, and associated apparatus
US9229886B2 (en) 2010-04-30 2016-01-05 Hewlett Packard Enterprise Development Lp Management data transfer between processors
CN102298567A (zh) * 2010-06-28 2011-12-28 安凯(广州)微电子技术有限公司 一种集成中央运算和图形加速的移动处理器架构
CN101908035B (zh) * 2010-07-30 2012-09-05 北京华傲精创科技开发有限公司 视频编解码方法、gpu及其与cpu的交互方法及系统
US9645866B2 (en) 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
JP5805783B2 (ja) * 2010-12-15 2015-11-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated コンピュータシステムインタラプト処理
US8886699B2 (en) * 2011-01-21 2014-11-11 Cloudium Systems Limited Offloading the processing of signals
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10795722B2 (en) * 2011-11-09 2020-10-06 Nvidia Corporation Compute task state encapsulation
CN102521036A (zh) * 2011-12-05 2012-06-27 苏州希图视鼎微电子有限公司 指令驱动协处理器的任务中断方法及系统
US9170820B2 (en) * 2011-12-15 2015-10-27 Advanced Micro Devices, Inc. Syscall mechanism for processor to processor calls
CN102630006B (zh) * 2012-03-20 2017-03-08 中广传播集团有限公司 一种传输视频流的装置和方法
CN102890643B (zh) * 2012-07-26 2015-01-21 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
CN103164839B (zh) * 2013-03-07 2019-06-21 华为技术有限公司 一种绘图方法、装置及终端
US20140375658A1 (en) * 2013-06-25 2014-12-25 Ati Technologies Ulc Processor Core to Graphics Processor Task Scheduling and Execution
CN104253807B (zh) * 2013-06-28 2017-12-15 华为技术有限公司 一种媒体资源控制方法及装置
US10111099B2 (en) 2014-05-12 2018-10-23 Microsoft Technology Licensing, Llc Distributing content in managed wireless distribution networks
US9874914B2 (en) 2014-05-19 2018-01-23 Microsoft Technology Licensing, Llc Power management contracts for accessory devices
US10062188B2 (en) * 2014-06-05 2018-08-28 Microsoft Technology Licensing, Llc Customizable route planning using graphics processing unit
US9717006B2 (en) 2014-06-23 2017-07-25 Microsoft Technology Licensing, Llc Device quarantine in a wireless network
US9437172B2 (en) 2014-08-19 2016-09-06 Apple Inc. High-speed low-power access to register files
CN104539540A (zh) * 2015-01-15 2015-04-22 浪潮(北京)电子信息产业有限公司 一种基于图形处理单元gpu的路由方法和设备
FR3031819B1 (fr) * 2015-01-21 2018-01-26 Safran Electronics & Defense Procede de gestion d'une execution de taches et processeur pour mettre en œuvre ce procede
GB2536658B (en) * 2015-03-24 2017-03-22 Imagination Tech Ltd Controlling data flow between processors in a processing system
US9830676B2 (en) 2015-07-28 2017-11-28 Intel Corporation Packet processing on graphics processing units using continuous threads
CN110456900B (zh) * 2015-09-28 2021-06-29 华为终端有限公司 一种接口电路、显示驱动器、终端设备和显示控制方法
WO2017218009A1 (en) * 2016-06-17 2017-12-21 Hewlett-Packard Development Company, L.P. Shared machine-learning data structure
KR20190095489A (ko) 2016-12-28 2019-08-14 재단법인대구경북과학기술원 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
US10430189B2 (en) * 2017-09-19 2019-10-01 Intel Corporation GPU register allocation mechanism
CN110134370B (zh) * 2018-02-08 2023-09-12 龙芯中科技术股份有限公司 一种图形绘制的方法、装置、电子设备及存储介质
KR20190115811A (ko) * 2018-04-04 2019-10-14 에스케이하이닉스 주식회사 확장 메모리 카드를 포함하는 데이터 처리 시스템
WO2020056620A1 (en) * 2018-09-19 2020-03-26 Intel Corporation Hybrid virtual gpu co-scheduling
CN112673347A (zh) * 2018-10-19 2021-04-16 日本电信电话株式会社 数据处理系统、中央运算处理装置和数据处理方法
US11763507B2 (en) * 2018-12-05 2023-09-19 Sony Group Corporation Emulating hand-drawn lines in CG animation
US11003539B2 (en) * 2019-01-15 2021-05-11 EMC IP Holding Company LLC Offload processing using a storage slot
CN117290098A (zh) * 2023-09-22 2023-12-26 中国科学院自动化研究所 基于gpu内联直通的高速数据处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538296A (zh) * 2003-02-18 2004-10-20 图形处理单元的多线程内核
CN101105929A (zh) * 2006-07-14 2008-01-16 株式会社瑞萨科技 数据处理器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3683657B2 (ja) * 1996-09-30 2005-08-17 株式会社ルネサステクノロジ グラフィックス表示装置およびグラフィックスプロセッサ
US6182203B1 (en) * 1997-01-24 2001-01-30 Texas Instruments Incorporated Microprocessor
JPH10289120A (ja) 1997-04-14 1998-10-27 Hitachi Ltd 情報処理装置
WO2001073571A1 (en) 2000-03-27 2001-10-04 Infineon Technologies Ag Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (cliw)
US20030212735A1 (en) * 2002-05-13 2003-11-13 Nvidia Corporation Method and apparatus for providing an integrated network of processors
US7373642B2 (en) * 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
US6985152B2 (en) * 2004-04-23 2006-01-10 Nvidia Corporation Point-to-point bus bridging without a bridge controller
US7418576B1 (en) * 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US7697007B1 (en) * 2005-12-19 2010-04-13 Nvidia Corporation Predicated launching of compute thread arrays
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538296A (zh) * 2003-02-18 2004-10-20 图形处理单元的多线程内核
CN101105929A (zh) * 2006-07-14 2008-01-16 株式会社瑞萨科技 数据处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开平10-105154A 1998.04.24

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220334765A1 (en) * 2021-04-16 2022-10-20 Western Digital Technologies, Inc. Command Queue Order Adjustment in a Data Storage Device

Also Published As

Publication number Publication date
GB0818203D0 (en) 2008-11-12
GB0815442D0 (en) 2008-10-01
US8675006B2 (en) 2014-03-18
US20100045682A1 (en) 2010-02-25
GB2462860A (en) 2010-02-24
JP2010050970A (ja) 2010-03-04
GB2462860B (en) 2012-05-16
CN101667284A (zh) 2010-03-10

Similar Documents

Publication Publication Date Title
CN101667284B (zh) 用于中央处理单元和图形处理单元之间通信的设备和方法
JP5791608B2 (ja) 非同期タスクディスパッチを可能にする処理ユニット
JP6006230B2 (ja) 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
CN103262002B (zh) 优化系统调用请求通信
CN104094235B (zh) 多线程计算
US10242420B2 (en) Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta
JP2017182820A (ja) グラフィックス計算プロセススケジューリング
EP3680774B1 (en) Workload scheduling and distribution on a distributed graphics device
CN103109274A (zh) 多处理器计算平台中的处理器间通信技术
US20030177288A1 (en) Multiprocessor system
US20170069054A1 (en) Facilitating efficient scheduling of graphics workloads at computing devices
US10089264B2 (en) Callback interrupt handling for multi-threaded applications in computing environments
CN105027075B (zh) 具有共享前端单元的处理核
CN108604185B (zh) 用于将工作负荷有效地提交到高性能图形子系统的方法和装置
KR101900436B1 (ko) 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
CN106030515B (zh) 用于多处理器和多核平台的二进制翻译
CN108701053A (zh) 促进针对计算环境中的任务执行的执行感知混合抢占
US20200250525A1 (en) Lightweight, highspeed and energy efficient asynchronous and file system-based ai processing interface framework
JPWO2011148920A1 (ja) マルチプロセッサシステム、実行制御方法、実行制御プログラム
CN108352052A (zh) 用于在计算设备处高效处理图形数据的三重缓冲常量缓冲器
JP2009505301A (ja) ベクトル処理用の拡張可能な並列パイプライン浮動小数点数演算ユニット
US20120204014A1 (en) Systems and Methods for Improving Divergent Conditional Branches
CN103262039A (zh) 用于处理装置的同步操作的方法和系统
TW202107408A (zh) 波槽管理之方法及裝置
US20130135327A1 (en) Saving and Restoring Non-Shader State Using a Command Processor

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: 20130605

Termination date: 20170824