CN104025185B - 用于使用gpu控制器来预加载缓存的机制 - Google Patents

用于使用gpu控制器来预加载缓存的机制 Download PDF

Info

Publication number
CN104025185B
CN104025185B CN201280061641.7A CN201280061641A CN104025185B CN 104025185 B CN104025185 B CN 104025185B CN 201280061641 A CN201280061641 A CN 201280061641A CN 104025185 B CN104025185 B CN 104025185B
Authority
CN
China
Prior art keywords
memory
caching
command messages
preloaded
instruction
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.)
Active
Application number
CN201280061641.7A
Other languages
English (en)
Other versions
CN104025185A (zh
Inventor
盖纳迪·里盖
于里·利希马诺
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.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of CN104025185A publication Critical patent/CN104025185A/zh
Application granted granted Critical
Publication of CN104025185B publication Critical patent/CN104025185B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)

Abstract

本发明提供了一种方法和***,其中图形处理单元具有用于在所述图形处理单元上预加载缓存的专用控制器。所述方法包括接收命令消息,所述命令消息包括与存储器的部分相关的数据。所述方法也包括:解释所述命令消息,识别所述缓存的策略信息,识别存储器的所述部分的位置和大小,并且创建包括与所述部分的内容相关的数据的提取消息,其中所述提取消息使所述缓存预加载存储器的所述部分中的数据。

Description

用于使用GPU控制器来预加载缓存的机制
技术领域
本发明总体涉及计算***中执行的计算操作。更具体来说,本发明涉及计算***中执行的图形处理任务。
背景技术
图形处理单元(GPU)是专门设计用于执行图形处理任务的复杂集成电路。例如,GPU可以执行终端用户应用(诸如视频游戏应用)所要求的图形处理任务。GPU的计算能力已以超过对应中央处理单元(CPU)平台的计算能力的速度增长。结合移动计算市场(例如,笔记本电脑、移动智能手机、平板电脑等等)和其必需支持服务器/企业***的开发,已经利用这种增长来提供指定的期望用户体验质量。
然而,GPU传统上在受约束的编程环境中操作,主要可供用于图形加速。这些约束起因于GPU不具有与CPU一样丰富的编程生态***这一事实。因此,它们的用途一直大多局限于二维(2D)和三维(3D)图形以及已习惯于处理图形和视频应用编程接口(API)的少量前沿多媒体应用。
随着多供应商支持的标准API和支持工具出现,GPU的应用已经不再局限于诸如传统图形等传统应用。虽然OpenCL和DirectCompute是有前景的起点,但创造一种允许对于大多数编程任务CPU和GPU的组合使用起来与CPU一样流畅的环境和生态***仍存在许多障碍。
一般来说,终端用户应用与GPU之间存在若干层的软件。终端用户应用与应用编程接口(API)通信。API允许终端用户应用以标准格式而非依赖于GPU的格式输出图形数据和命令。API与驱动器通信。驱动器将从API接收到的标准代码翻译成GPU理解的本机格式指令。通常,驱动器由GPU的制造商编写。GPU随后执行来自驱动器的指令。
标准GPU在被称为渲染的过程中从其部件的更高级描述创建构成图像的像素。GPU通常利用连续渲染的概念通过使用管线来处理像素、纹理以及几何形状数据。这些管线通常称为固定功能专用管线(如光栅器、设置引擎、色彩混合器、纹理映射以及可在着色器管或着色器管线中完成的编程阶段)集合。“着色器”是计算机图形中的术语,是指图形资源主要用来执行渲染效果的软件指令集合。另外,GPU还可采用并行处理设计中的多个可编程管线以便获得更高的吞吐量。多个着色器管线还可以称作着色器管阵列。
另外,GPU还支持称为纹理映射的概念。纹理映射是用于通过使用纹理附近像素或纹素的色彩来确定纹理映射像素的纹理色彩的过程。所述过程还被称为纹理平滑或者纹理插值(texture interpolation)。然而,高图像质量纹理映射要求高度的计算复杂性。此外,配备单个(统一)着色器的GPU还同时支持许多类型的着色器处理。因此提高了对更高性能的广义存储器存取能力的需求。
着色器引擎依赖于针对纹理、着色器代码以及其它类型数据对本地缓存存储器的高速访问。用数据预加载缓存减少了GPU操作的执行时间,因为不再需要访问视频或主***存储器来获得数据(这可能是费时的)。这使得在GPU每次开始执行、访问存储器的相同或类似部分时GPU性能提高。目前,GPU不具有提供用数据预加载缓存的功能性的专用可编程控制器。
考虑到新软件应用的复杂性持续增加,对GPU提供高效且高质量的渲染、纹理过滤以及误差校正的需求也正在提高。
发明内容
因此,需要减轻前述缺陷的***和/或方法。具体地说,需要一种用于管理用要执行的存储器的相关部分对选定APD缓存的显式和隐式预加载的专用控制器。
虽然GPU、加速处理单元(APU)以及通用图形处理单元(GPGPU)是本领域中的常用术语,但是术语“加速处理设备(APD)”被认为是一种更广泛的表述。例如,APD是指以加速的方式执行与加速图形处理任务、数据并行任务或嵌套数据并行任务相关联的那些功能和计算的任何协同操作的硬件和/或软件集合。
在某些环境中,本发明的实施方案包括一种用于预加载缓存的方法和***。所述***包括电耦接至缓存的APD,所述***包括:主机处理器,所述主机处理器被配置成输出包括与存储器的部分相关的数据的命令消息;以及控制器,所述控制器被配置成解释所述命令消息,以便(i)识别与所述缓存相关的策略信息,(ii)识别所述部分的位置和大小,并且(iii)创建包括与所述部分的内容相关的数据的提取消息,其中所述控制器被配置成将所述提取消息输出到所述缓存。
本发明的另外实施方案包括一种包括电耦接至缓存的APD的***,所述***包括:控制器,所述控制器被配置成:(i)接收命令消息,所述命令消息包括显式请求缓存预加载存储器的部分的数据;(ii)识别与所述缓存相关的策略信息;(iii)识别所述部分的位置和大小;以及(iv)创建包括与所述部分的内容相关的数据的提取消息,其中所述控制器被配置成将所述提取消息输出到所述缓存。
本发明的另外特征和优点以及本发明的各种实施方案的结构和操作在下文中参照附图详细描述。应当注意,本发明不限于本文所描述的这些特定实施方案。本文呈现此类实施方案仅用于说明目的。基于本文所包含的教导内容,另外的实施方案对于相关领域的技术人员而言将是显而易见的。
附图说明
附图并入本文并且构成本说明书的一部分,图解了本发明并且与说明书一起进一步用来解释本发明的原理并使相关领域的技术人员能够实践和使用本发明。本发明的各实施方案参照附图在下文中进行描述,其中在全文中,类似参考标号用于指代类似元素。
图1A是根据本发明的实施方案的一种处理***的说明性框图。
图1B是图1A所示APD的说明性框图图示。
图2是根据一个实施方案的用存储器的一部分预加载缓存的APD的说明性流程图。
图3是根据一个实施方案的用存储器的一部分预加载缓存的APD的另一说明性流程图。
本发明将参照附图进行描述。一般来说,元件首次出现在其中的附图通常是由对应参考编号中的最左侧的数字指示。
具体实施方式
在以下详细描述中,提及一个“实施方案”、“实施方案”、“示例实施方案”等等表明所描述的实施方案可包括某一特定特征、结构或特性,但是每个实施方案可能不一定包括该特定特征、结构或特性。此外,此类措词不一定是指同一实施方案。此外,当结合一个实施方案来描述某一特定特征、结构或特性时,应当认为,无论是否明确描述,使得此类特征、结构或者特性结合其它实施方案起作用是在本领域的技术人员知识范围内的。
术语“本发明的实施方案”并不要求本发明的所有实施方案都包括所论述的特征、优点或操作模式。在不背离本发明的范围的情况下可设想出替代实施方案,并且本发明的众所周知的元素可能并未详细描述或者可能被省略,以免混淆本发明的相关细节。另外,本文所使用的术语仅用于描述特定实施方案的目的,而并不意在限制本发明。例如,如在本文所使用的,单数形式“一个”和“所述”意在还包括复数形式,除非上下文另外清楚表明。还应当理解,当在本文中使用时,术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”和/或“包括(including)”指明存在所述特征、整数、步骤、操作、元件和/或部件,但并不排除存在或者增添一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组合。
图1A是包括两个处理器、即CPU 102和APD 104的统一计算***100的示例性图示。CPU 102可以包括一个或多个单核或多核CPU。在本发明的一个实施方案中,***100形成在单个硅裸片或硅封装上,从而组合CPU 102与APD 104以提供统一的编程和执行环境。这种环境使得APD 104能够与CPU 102一样流畅或近似流畅地用于一些编程任务。然而,本发明不绝对要求CPU 102和APD 104形成在单个硅裸片上。一些实施方案中,它们可能单独形成并且安装在相同或不同的基片上。
在一个实施例中,***100还包括***存储器106、操作***108以及通信基础设施109。操作***108和通信基础设施109在下文中更详细地论述。
***100还包括了内核模式驱动器(KMD)110、软件调度器(SWS)112,以及存储器管理单元116,如输入/输出存储器管理单元(IOMMU)。***100的部件可以实现为硬件、固件、软件或它们的任何组合。本领域的普通技术人员应当了解,***100可以包括除了图1A所示实施方案中所示部件之外或不同于所示部件的一个或多个软件、硬件以及固件部件。
在一个实施例中,驱动器(如KMD 110)通常通过硬件连接到其上的计算机总线或通信子***与设备进行通信。当调用程序调用驱动器中例程时,驱动器向设备发布命令。一旦设备向驱动器发送回数据,驱动器可调用原始调用程序中的例程。在一个实施例中,驱动器是依赖于硬件的并且是操作***特定的。它们通常提供任何必需异步的时间依赖硬件接口所要求的中断处理。
设备驱动器、尤其在现代Microsoft平台上可以内核模式(第0级)或以用户模式(第3级)运行。以用户模式运行驱动器的主要益处是稳定性提高,因为编写拙劣的用户模式设备驱动器不可能通过重写内核存储器使***崩溃。另一方面,用户/内核模式翻译通常强加相当大的性能开销,从而抑制用户模式驱动器的低等待时间和高吞吐量要求。用户模块仅可通过使用***调用来访问内核空间。像UNIX shell或其它基于GUI的应用等终端用户程序是用户空间的一部分。这些应用通过内核支持的功能与硬件交互。
CPU 102可以包括(未示出)控制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)中的一个或多个。CPU 102例如执行控制计算***100的操作的控制逻辑,包括操作***108、KMD 110、SWS 112以及应用111。在此说明性实施方案中,根据一个实施方案,CPU 102发起并且控制应用111的执行,例如,通过在CPU 102和诸如APD104等其它处理资源上分发与这个应用相关联的处理。
除了其它之外,APD 104执行用于选定功能(如图形操作和可能(例如)尤其适于并行处理的其它操作)的命令和程序。通常,APD 104常常可以用于执行图形管线操作,如像素操作、几何计算以及将图像渲染至显示器上。在本发明的各实施方案中,APD 104还可以基于从CPU 102接收到的命令或指令执行计算处理操作(例如,那些与图形无关的操作,例如像视频操作、物理模拟、计算流体动力学等)。
例如,命令可以被认为是通常不限定在指令集体系结构(ISA)中的特殊指令。命令可以由特殊处理器(如分派处理器、命令处理器或网络控制器)来执行。另一方面,指令可以被认为是例如在计算机体系结构内的处理器的单个操作。在一个实施例中,当使用两组ISA时,一些指令被用于执行x86程序,并且一些指令被用于执行APD计算单元上的内核。
在一个说明性实施方案中,CPU 102向APD 104发送选定命令。这些选定命令可以包括图形命令和适于并行执行的其它命令。这些选定命令(还可包括计算处理命令)可以基本独立于CPU 102执行。
APD 104可以包括其自己的计算单元(未示出),诸如但不限于一个或多个SIMD处理核心。如本文中提及,SIMD是管线或编程模型,其中内核在多个处理元件上并发执行,每个处理元件具有其自己的数据和共享程序计数器。所有处理元件执行相同指令集。使用预测使工作项能够参与或不参与每个所发布的命令。
在一个实施例中,每个APD 104计算单元可以包括一个或多个标量和/或矢量浮点单元和/或算术逻辑单元(ALU)。APD计算单元还可以包括专用处理单元(未示出),如平方根倒数单元和正弦/余弦单元。在一个实施例中,APD计算单元在本文中统称着色器核心122。
通常,具有一个或多个SIMD使得APD 104理想适于执行数据并行任务,如在图形处理中常见的那些任务。
诸如像素处理等一些图形管线操作以及其它并行计算操作可能要求对输入数据元素流或集合执行同一命令流或计算内核。同一计算内核的相应实例化可以在着色器核心122中的多个计算单元上并发执行,以便并行处理这些数据元素。如本文中提及,例如,计算内核是包含程序中声明并且在APD计算单元上执行的指令的函数。这个函数也被称为内核、着色器、着色器程序或程序。
在一个说明性实施方案中,每个计算单元(例如,SIMD处理核心)可以执行特定工作项的相应实例化以便处理输入数据。工作项是由命令在设备上调用的并行内核执行集合中的一个。工作项可以作为在计算单元上执行的工作组的一部分由一个或多个处理元件执行。
在一个实施例中,工作项是由命令在设备上调用的内核的并行执行集合中的一个。工作项是作为在计算单元上执行的工作组的一部分由一个或多个处理元件执行。
工作项在全局ID和本地ID方面与集合内的其它执行不同。在一个实施例中,工作组中同时一起在SIMD上执行的工作项子集可被称为波前136。波前宽度是计算单元(例如,SIMD处理核心)的硬件的特性。如本文中提及,工作组是在单个计算单元上执行的相关工作项的集合。组中的工作项执行同一内核并且共享本地存储器和工作组隔离。
在所述示例性实施方案中,来自工作组的所有波前均在同一SIMD处理核心上进行处理。波前中的指令一次发布一个,并且当所有工作项都遵循相同控制流程时,每个工作项均执行同一程序。波前也可称为线程束(warp)、矢量或线程。
执行掩码和工作项预测用于在波前内实现发散控制流程,其中每个单独工作项实际可以占有通过核心的唯一代码路径。当工作项的全集在波前开始时间时不可用时,可以处理部分已填充的波前。例如,着色器核心122可以同时执行预定数量波前136,每个波前136包括多个工作项。
在***100内,APD 104包括其自己的存储器,如图形存储器130(虽然存储器130并不限于仅图形用途)。图形存储器130提供用于在APD 104中的计算过程中使用的本地存储器。着色器核心122内的单独计算单元(未示出)可以具有它们自己的本地数据存储器(未示出)。在一个实施方案中,APD 104包括对本地图形存储器130的存取以及对存储器106的存取。在另一实施方案中,APD 104可以包括对动态随机存取存储器(DRAM)或直接附接到APD104上并且与存储器106分开的其它此类存储器(未示出)的存取。
在所示实施例中,APD 104还包括一个或“n”个命令处理器(CP)124。CP 124控制APD 104内的处理。CP 124还从存储器106中的命令缓冲器125检索有待执行的命令并且协调这些命令在APD 104上的执行。
在一个实施例中,CPU 102将基于应用111的命令输入到合适命令缓冲器125中。如本文中提及,应用是将在CPU和APD内的计算单元上执行的程序部分的组合。
对于被调度用于在APD 104上执行的每个进程,可以维护多个命令缓冲器125。
CP 124可以在硬件、固件、软件或它们的组合中实现。在一个实施方案中,CP 124被实现为具有微代码的精简指令集计算机(RISC)引擎以实现包括调度逻辑的逻辑。
APD 104还包括一个或“n”个分派控制器(DC)126。在本申请中,术语分派是指由分派控制器执行的命令,所述分派控制器使用上下文状态来发起用于一组计算单元上的一组工作组的内核的执行的开始。DC 126包括用于发起着色器核心122中的工作组的逻辑。在一些实施方案中,DC 126可以实现为CP 124的一部分。
***100还包括用于从运行列表150选择进程以供在APD 104上执行的硬件调度器(HWS)128。HWS 128可以使用循环方法、优先级或基于其它调度策略从运行列表150选择进程。例如,优先级可以动态地确定。HWS 128还可以包括管理运行列表150的功能性,例如,通过添加新的进程并且通过从运行列表150删除现有进程。HWS128的运行列表管理逻辑有时称为运行列表控制器(RLC)。
在本发明的各实施方案中,当HWS 128发起对来自运行列表150的进程的执行时,CP 124开始检索并且执行来自对应命令缓冲器125的命令。在一些情况下,CP 124可以生成有待在APD 104内执行的一个或多个命令,所述命令与从CPU 102接收到的命令对应。在一个实施方案中,CP 124与其它部件一起以提高或最大化APD 104资源和/或***100的利用率的方式来实现APD 104上的命令的优先级排序和调度。
APD 104可以访问或者可以包括中断发生器146。中断发生器146可以由APD 104配置成当APD 104遇到诸如页面错误之类的中断事件时中断操作***108。例如,APD 104可以依赖于IOMMU 116内的中断发生逻辑来形成上述页面错误中断。
APD 104还可以包括抢占和上下文切换逻辑120,以便抢占当前正在着色器核心122内运行的进程。例如,上下文切换逻辑120包括停止进程并保存其当前状态(例如,着色器核心122状态和CP 124状态)的功能性。
如本文中提及,术语状态可以包括初始状态、中间状态和/或最终状态。初始状态是机器根据编程次序处理输入数据集合以形成输出数据集合的起始点。存在一种中间状态,例如,需要在若干点处对这种中间状态进行存储以使得处理向前进展。有时存储这种中间状态是为了允许当被某一其它进程中断时在稍后时间继续执行。还存在一种最终状态,可以记录这种最终状态作为输出数据集合的一部分。
抢占和上下文切换逻辑120还可以包括将另一进程上下文切换到APD 104中的逻辑。将另一进程上下文切换成在APD 104上运行的功能性可以包括例如通过CP 124和DC126将进程实例化以在APD 104上运行,恢复用于此进程的任何先前所保存的状态,并且开始它的执行。
存储器106可以包括非永久性存储器,如DRAM(未示出)。存储器106可以在应用或其它处理逻辑的部分的执行过程中存储(例如)处理逻辑指令、常量值以及变量值。例如,在一个实施方案中,用于在CPU 102上执行一个或多个操作的控制逻辑的部分在所述操作的各自部分由CPU 102执行的过程中可以驻存在存储器106内。
在执行过程中,相应应用、操作***功能、处理逻辑命令以及***软件可以驻存在存储器106中。对操作***108重要的控制逻辑命令在执行过程中通常将会驻存在存储器106中。在***100执行过程中,包括例如内核模式驱动器110和软件调度器112的其它软件命令也可以驻存在存储器106中。
在此实施例中,存储器106包括被CPU 102用来向APD 104发送命令的命令缓冲器125。存储器106还包含进程列表和处理信息(例如,活动列表152和进程控制块154)。这些列表以及信息由在CPU 102上执行的调度软件用来向APD 104和/或相关调度硬件传递调度信息。对存储器106的存取可以由联接到存储器106上的存储器控制器140管理。例如,来自CPU102或来自其它设备的对从存储器106读出或对写入存储器106的请求由存储器控制器140管理。
返回***100的其它方面,IOMMU 116是多上下文存储器管理单元。
如本文中所用,上下文可被认为是内核在其中执行的环境以及其中限定同步和存储器管理的域。上下文包括一组设备、这些设备可存取的存储器、对应存储器性质以及用于调度内核或操作在存储器对象上的执行的一个或多个命令队列。
返回参考图1A所示的实施方案,IOMMU 116包括用于执行虚拟地址到物理地址翻译以用于包括APD 104的设备对存储器页面的存取的逻辑。IOMMU 116还可以包括用于例如当设备(如APD 104)所进行的页面存取导致页面错误时生成中断的逻辑。IOMMU 116还可以包括或者有权存取翻译后备缓冲器(TLB)118。例如,TLB 118可以实现在内容可寻址存储器(CAM)中以针对APD 104对存储器106中的数据所作出的请求来加速逻辑(即,虚拟)存储器地址到物理存储器地址的翻译。
在所示实施例中,通信基础设施109根据需要互连***100的部件。通信基础设施109可以包括(未示出)***部件互连(PCI)总线、扩展PCI(PCI-E)总线、高级微控制器总线体系结构(AMBA)总线、高级图形端口(AGP)或其它此类通信基础设施中的一种或多种。通信基础设施109还可以包括以太网或类似网络,或满足应用的数据传输速率要求的任何合适物理通信基础设施。通信基础设施109包括互连包括计算***100的部件等各部件的功能性。
在此实施例中,操作***108包括用于管理***100的硬件部件并且提供常见服务的功能性。在各实施方案中,操作***108可以在CPU 102上执行并且提供常见服务。这些常见服务可以包括例如用于在CPU 102内执行的调度应用、故障管理、中断服务以及处理其它应用的输入和输出。
在一些实施方案中,基于中断控制器(如中断控制器148)所生成的中断,操作***108调用适当的中断处理例程。例如,一旦检测到页面错误中断,操作***108就可以调用中断处理器来发起将相关页面加载到存储器106中并且更新对应页表。
操作***108还可以包括通过确保对硬件部件的访问通过操作***管理的内核功能性作为中介从而保护***100的功能性。实际上,操作***108确保应用(如应用111)在用户空间中在CPU 102上运行。操作***108还确保应用111调用操作***提供的内核功能性来访问硬件和/或输入/输出功能性。
例如,应用111包括各种程序或命令以执行还在CPU 102上执行的用户计算。CPU102可以无缝发送用于在APD 104上处理的选定命令。
在一个实施例中,KMD 110实现应用程序接口(API),CPU 102或在CPU 102上执行的应用或其它逻辑可以通过所述应用程序接口调用APD 104功能性。例如,KMD 110可使来自CPU 102的命令入队到命令缓冲器125中,APD 104随后将从命令缓冲器125检索命令。另外,KMD 110可以与SWS 112一起执行对有待在APD 104上执行的进程的调度。SWS 112例如可以包括用于维护有待在APD上执行的进程的优先列表的逻辑。
在本发明的其它实施方案中,在CPU 102上执行的应用在使命令入队时可以完全绕过KMD 110。
在一些实施方案中,SWS 112在存储器106中维护有待在APD104上执行的进程的活动列表152。SWS 112还选择活动列表152中有待由硬件中的HWS 128管理的进程子集。在一个说明性实施方案中,进程的此两级运行列表提高了进程管理的灵活性,并且使得硬件能够快速响应处理环境中的改变。在另一实施例中,与在APD 104上运行每个进程相关的信息通过进程控制块(PCB)154从CPU 102传递到APD 104。
用于应用、操作***以及***软件的处理逻辑可以包括在诸如C之类的编程语言和/或者在诸如Verilog、RTL或网表之类的硬件描述语言中指定的命令,以使得能够通过生成掩模作品/光掩模来最终配置制造过程,从而产生体现本文所述发明的各方面的硬件设备。
在阅读本说明书时,本领域的技术人员将会理解,计算***100可以包括比图1A中所示更多或更少的部件。例如,计算***100可以包括一个或多个输入接口、非易失性存储装置、一个或多个输出接口、网络接口以及一个或多个显示器或显示接口。
图1B是示出图1A所示APD 104的更详细的图示的实施方案。在图1B中,CP 124可以包括CP管线124a、124b以及124c。CP 124可以配置成处理被提供作为来自图1A所示命令缓冲器125的输入的命令列表。在图1B的示例性操作中,CP输入0(124a)负责将命令驱动到图形管线162中。CP输入1和2(124b和124c)将命令转发给计算管线160。还提供了用于控制HWS128的操作的控制器机制166。
在图1B中,图形管线162可以包括一组框,在本文中称作有序管线164。例如,有序管线164包括顶点组翻译器(VGT)164a、原语汇编程序(PA)164b、扫描转换器(SC)164c以及着色器输出、渲染支持单元(SX/RB)176。有序管线164内的每个框可以表示图形管线162内的不同图形处理阶段。有序管线164可为固定功能硬件管线。可以使用其它实现方式,这些实现方式也在本发明的精神和范围内。
虽然只有少量数据可以提供作为到图形管线162的输入,但是当将这种数据提供作为来自图形管线162的输出时,数据将被放大。图形管线162还包括用于通过对CP管线124a接收到的工作项组内的范围进行计数的DC 166。通过DC 166提交的计算工作是与图形管线162半同步的。
计算管线160包括着色器DC 168和170。DC 168和170均被配置成对从CP管线124b和124c接收到的工作组内的计算范围进行计数。
图1B所示DC 166、168以及170接收输入工作组,将所述工作组划分成波前,并且随后将波前转发给着色器核心122。
由于图形管线162通常是固定功能管线,因此难以保存和恢复它的状态,并且因此,图形管线162难以进行上下文切换。因此,在大多数情况下,如本文中论述,上下文切换不涉及图形进程中的上下文切换。着色器核心122中的图形工作则是例外,它能被上下文切换。
在图形管线162内的工作处理完成后,所完成的工作通过渲染支持单元176进行处理,渲染支持单元176进行深度和色彩计算并且随后将其最终结果写入存储器130。
着色器核心122可以由图形管线162和计算管线160共享。着色器核心122可以是被配置成运行波前的通用处理器。在一个实施例中,计算管线160内的所有工作都在着色器核心122内处理。着色器核心122运行可编程软件代码并且包括诸如状态数据等各种形式的数据。着色器核心122联接至RW L2缓存174上。
图2是描绘根据本发明的一个实施方案的示例性方法200的流程图。方法200可以在图1A和图1B的***100上操作,图2的整个描述都参照了这个***。在一个实施例中,方法200可以用于预加载APD缓存,如APD 104的RW L2缓存174。方法200可以或可以不按照所示次序进行,或者可以或可以不要求所有操作。
方法200在操作202处开始并继续至操作204,在所述操作中,控制器接收到命令消息。根据一个实施方案,主机处理器被配置成输出包括与存储器的一部分相关的数据的命令消息。例如,主机处理器可为CPU 102。命令消息可以包括与存储器(如图形存储器130)的一部分相关的数据。根据一个实施方案,命令消息包括有待由APD处理,与像素操作、几何形状计算以及将图像渲染至显示器上的指令。一般来说,控制器可以接收命令消息流。控制器可以是例如但不限于APD 104的CP 124。本领域的技术人员应当理解,除了CP 124外,专用控制器可以被配置成接收命令消息。
在操作206中,例如通过命令处理器124对命令消息进行解释。如上论述,命令消息可以包括与APD所执行的一系列操作或计算相关的数据。命令消息可以包括指令列表,每个指令包括与有待在APD104处理指令期间访问的存储器的一部分相关的数据。例如,命令消息可以包括指向图形存储器130的一部分的引用指针,该部分可以包含可能在处理以将图像渲染至显示器上期间使用的像素数据或常量。
根据一个实施方案,解释命令消息包括确定将存储器的哪一部分预加载到缓存中。在一个实施方案中,有待预加载的存储器的部分基于引用局部性信息确定。这种局部性基于以下原理:APD并非以相等概率一次访问其数据的全部。引用局部性信息可以基于存储器的一部分的时间局部性。
例如,如果命令消息包括引用存储器的特定部分的指令,那么存储器的同一部分不久将再次被引用的可能性很高。引用局部性信息例如可以基于空间局部性。例如,如果命令消息包括引用存储器的特定部分的指令,那么驻存在存储器的附近部分中的数据不久也将被引用的可能性很高。
在操作208中,确定是否需要进行预加载。在图2的实施例中,预加载确定由CP 124执行。根据一个实施方案,控制器(例如,CP 124)可以被配置成跟踪缓存的访问历史。在命令消息的处理期间,指令可以访问存储器位置(如存储器130内的位置)。当指令访问存储器位置时,APD首先检查存储器位置是否已被复制在缓存中。确切地说,将与存储器访问相关联的地址与缓存中的所有标记进行比较。如果在缓存中找到期望的存储器位置,那么发生缓存命中。APD 104立即读出或者写入信息,如识别出的缓存线路中的数据或指令。如果在缓存内未找到期望的存储器位置,那么这种情况就被认为是缓存未命中,这导致从另一来源(如图形存储器130)检索数据。
根据一个实施方案,当接收并且解释命令消息时,CP 124被配置成基于缓存访问历史确定预加载是否是必要的。导致缓存命中或缓存未命中的数据被视为是很有可能被再次访问的数据。与此数据和其在图形存储器130的一部分中的位置相关的信息由CP 124记录并存储在数据库中。一旦接收到命令消息,CP 124被配置成将命令消息的指令与存储在数据库中的缓存访问历史进行比较。当与存储器位置相关的命令消息数据类似于缓存访问历史数据库内的任何数据时,预加载是必要的。一旦确定预加载是必要的,方法200可进行至操作210。如果预加载是不必要的,那么方法200在操作214处结束。
在操作210中,确定有待预加载的存储器的部分。例如,有待预加载的存储器的部分由CP 124确定。根据一个实施方案,有待预加载的存储器的部分是基于引用局部性信息。如前文论述,有待预加载的存储器的部分可以基于存储器的所述部分的时间或空间局部性。一旦CP 124识别出命令消息指令中所引用的存储器的部分,存储器的同一部分以及驻存在相邻或附近存储器块中的存储器可以被识别为有待预加载的存储器的部分。
根据另一实施方案,有待预加载的存储器的部分是基于缓存的策略信息。缓存的策略信息可以确定何时对缓存块进行写入。例如,如果与缓存块相关联的策略信息是“仅在读出时分配”的,那么缓存块将不在写入操作期间进行修改。如果与缓存块相关联的策略信息是“在读出和写入时分配”的,那么缓存块可在写入和读出操作两者期间进行更新。另外,当***包括多个缓存时,策略信息可以确定使用哪个缓存存储某些信息。缓存的策略信息确定有待预加载的识别出的存储器的部分将如何存储在缓存中。
在操作212中,输出提取消息。例如,提取消息由CP 124输出到特定缓存(如RW L2缓存174)。一旦识别出有待预加载的存储器的部分,就由CP 124生成包括与策略信息相关的数据的提取消息。根据一个实施方案,提取消息使缓存基于策略信息从存储器的部分加载数据。方法200随后在操作214处结束。
图3是描绘根据本发明的一个实施方案的示例性方法300的流程图。方法300可以在图1A和图1B的***100上操作,图3的整个描述都参照了这个***。在一个实施例中,方法300可以用于预加载APD的缓存,如APD 104的RW L2缓存174。方法300可以或可以不按照所示次序进行,或者可以或可以不要求所有操作。
方法300在操作302处开始并且继续至操作304,控制器接收到命令消息。根据一个实施方案,主机处理器被配置成输出包括预提取指令的命令消息。例如,主机处理器可为CPU 102。根据一个实施方案,命令消息包括显式识别有待预加载到缓存中的存储器的一部分的预加载指令。例如,预加载指令可以包括有待预加载到APD 104的RW L2缓存174中的存储器的部分的物理地址。或者,预加载指令可以包括有待预加载到RW L2缓存174中的存储器的部分的虚拟地址。虚拟地址是存储器的部分在虚拟存储器中的位置。虚拟地址可映射到许多不同物理地址。在一个实施方案中,CP 124被配置成调用存储器管理单元(MMU)(如IOMMU 116),以将虚拟地址翻译成存储器的部分的物理地址。
在操作306中,例如通过CP 124确定有待预加载的存储器的部分。根据一个实施方案,有待预加载的存储器的部分是基于包括在命令消息中的物理地址。物理地址显式识别有待预加载到缓存中的存储器的部分的位置。有待预加载的存储器的部分是基于包括在命令消息中的虚拟地址。在将包括在命令消息中的虚拟地址翻译成物理地址后,将识别出有待预加载的存储器的部分的准确位置。
在一个实施方案中,有待预加载的存储器的部分还可基于存储器的所述部分的时间或空间局部性。一旦CP 124确定由物理地址或虚拟地址识别出的存储器的部分的位置,可以将存储器的同一部分以及驻存在相邻或附近存储器块中的存储器识别为有待预加载的存储器的部分。在一个实施方案中,关于缓存的策略信息可以用于确定何时以及将多少识别出的存储器的部分预加载到缓存中。
在操作308中,提取消息例如由CP 124输出到RW L2缓存174的缓存控制器。一旦识别出有待预加载的存储器的部分,CP 124就生成包括与此信息相关的数据的提取消息。根据一个实施方案,提取消息使缓存从存储器的部分加载数据。方法300随后在操作310处结束。
本发明可体现在硬件、软件、固件或它们的任意组合中。本发明的实施方案或其部分可以许多编程语言编程,所述编程语言诸如硬件描述语言(HDL)、汇编语言、C语言以及网表等等。例如,HDL(例如,Verilog)可以用于合成、模拟以及制造实现本发明的一个或多个实施方案的方面的设备(例如,处理器、专用集成电路(ASIC)和/或其它硬件元件)。Verilog代码可用于建模、设计、检验和/或实现可以使用内容感知线裁剪(seam carving)来缩放帧的处理器。
例如,Verilog可以用于生成可用来执行指令的逻辑的寄存器传输级(RTL)描述,以便使得可使用内容感知线裁剪来缩放帧。逻辑的RTL描述随后可以用来生成用以制造期望逻辑或设备的数据,例如,图形设计***(GDS)或GDS II数据。Verilog代码、RTL描述和/或GDS II数据可以存储在计算机可读介质上。通过逻辑执行以执行本发明的方面的指令可以多种编程语言(诸如C和C++)编码,并且编译成可由逻辑或其它设备执行的对象代码。
本发明的方面可以全部或部分地存储在计算机可读介质上。存储在计算机可读介质上的指令可以适配处理器以全部或部分地执行本发明,或者被适配用于产生专门适配用于全部或部分地执行本发明的设备(例如,处理器、ASIC、其它硬件)。这些指令还可用于通过生成掩模作品/光掩模来最终配置制造过程,从而产生体现本文所述发明的各方面的硬件设备。
应当了解,意在详述部分而非概述以及摘要部分用于对权利要求书进行解释。概述以及摘要部分可以阐明如发明人所构想的本发明的一个或多个但非所有的示例性实施方案,并且因此,并不意图通过任何方式对本发明和所附权利要求书进行限制。
本发明已在上文中借助示出特定功能和其关系的实现的功能构建块来描述。为了方便描述,本文已对这些功能构建块的边界进行任意界定。只要合适执行特定功能和其关系,就可界定替代边界。
特定实施方案的前述描述将会完全地揭示本发明的一般性质,以使他人可以在不背离本发明的一般概念的情况下通过应用本领域的技术范围内的知识来容易地修改和/或改编此类特定实施方案以用于各种应用。因此,基于本文所呈现的教导内容以及指导内容,此类改编以及修改意图在所公开的实施方案的等同物的范围内。应当理解,本文的措词或术语目的在于说明而非限制,因此技术人员将会根据教导内容以及指导内容来对本说明书的术语或措词进行解释。
本发明的宽度以及范围不应限于上述示例性实施方案,而应仅仅根据所附权利要求和它们的等同物来界定。

Claims (17)

1.一种包括电耦接至缓存的加速处理设备的***,所述***包括:
控制器,所述控制器被配置成:
接收命令消息,所述命令消息包括加速处理设备在处理期间待访问的指令,该指令包括与存储器的多个部分的一部分相关的数据;
通过确定所述命令消息是否包括将待访问的所述存储器的一部分预加载到所述缓存的预加载指令来解释所述命令消息,以便:
在所述命令消息确定包括所述预加载指令的情况下,确定将所述存储器的至少一部分预加载到所述缓存;
在所述命令消息确定不包括所述预加载指令的情况下,将所述命令消息的指令与缓存访问历史进行比较并且基于所述命令消息与所述缓存访问历史的比较确定将所述存储器的至少一部分预加载到所述缓存;
基于以下的至少一个:(i)引用局部性信息和(ii)所述缓存的策略信息,确定所述存储器的多个部分的哪一个预加载到所述缓存;
创建包括与待预加载的所述存储器的一部分的内容相关的数据的提取消息;以及
将所述提取消息输出到所述缓存。
2.如权利要求1所述的***,其还包括:
主机处理器,所述主机处理器被配置成输出包括与待预加载的所述存储器的一部分相关的数据的所述命令消息。
3.如权利要求1所述的***,其中
所述策略信息确定了:
待预加载的所述存储器的一部分将如何被储存在所述缓存中;和
何时对所述缓存中的块进行写入,根据所述策略信息或者是(1)仅在读出时分配,或者是(2)在读出和写入时分配,和
所述提取消息使所述缓存基于所述策略信息加载与待预加载的所述存储器的一部分的内容相关的所述数据。
4.如权利要求1所述的***,其中所述命令消息包括所述引用局部性信息。
5.如权利要求1所述的***,其中所述引用局部性信息是基于待预加载的所述存储器的一部分的时间局部性。
6.如权利要求1所述的***,其中所述引用局部性信息是基于待预加载的所述存储器的一部分的空间局部性。
7.如权利要求1所述的***,其中所述控制器被进一步配置成通过确定所述命令消息是否包括具有用于所述存储器的每个部分的物理地址的预加载指令来解释所述命令消息。
8.如权利要求1所述的***,其中所述控制器被进一步配置成通过确定所述命令消息是否包括具有用于待预加载的所述存储器的一部分的虚拟地址的预加载指令来解释所述命令消息。
9.如权利要求8所述的***,其中所述控制器还被配置成将所述虚拟地址转换成用于待预加载的所述存储器的一部分的物理地址。
10.一种用于预加载缓存的计算机实现方法,所述方法包括:
接收命令消息,所述命令消息包括加速处理设备在处理期间待访问的指令,该指令包括与存储器的多个部分的一部分相关的数据;
通过确定所述命令消息是否包括将待访问的所述存储器的一部分预加载到所述缓存的预加载指令来解释所述命令消息;
在所述命令消息确定包括所述预加载指令的情况下,确定将所述存储器的至少一部分预加载到所述缓存;
在所述命令消息确定不包括所述预加载指令的情况下,将所述命令消息的指令与缓存访问历史进行比较并且基于所述命令消息与所述缓存访问历史的比较确定将所述存储器的至少一部分预加载到所述缓存;
基于以下的至少一个:(i)识别出的引用局部性信息和(ii)识别出的所述缓存的策略信息,确定所述存储器的多个部分的哪一个预加载到所述缓存;
创建包括与待预加载的所述存储器的一部分的内容相关的数据的提取消息;以及
将所述提取消息发送到所述缓存。
11.如权利要求10所述的方法,其中
所述策略信息确定了:
待预加载的所述存储器的一部分将如何被储存在所述缓存中;和
何时对所述缓存中的块进行写入,根据所述策略信息或者是(1)仅在读出时分配,或者是(2)在读出和写入时分配,和
所述提取消息使所述缓存基于所述策略信息加载与待预加载的所述存储器的一部分的内容相关的所述数据。
12.如权利要求10所述的方法,其中所述命令消息包括所述引用局部性信息。
13.如权利要求10所述的方法,其中所述引用局部性信息是基于待预加载的所述存储器的一部分的时间局部性。
14.如权利要求10所述的方法,其中所述引用局部性信息是基于待预加载的所述存储器的一部分的空间局部性。
15.如权利要求10所述的方法,其中解释所述命令消息还包括确定所述命令消息是否包括具有用于待预加载的所述存储器的一部分的虚拟地址的预加载指令。
16.如权利要求15所述的方法,其还包括:
将所述虚拟地址转换成用于待预加载的所述存储器的一部分的物理地址。
17.如权利要求10所述的方法,其中解释所述命令消息还包括确定所述命令消息是否包括具有用于待预加载的所述存储器的一部分的物理地址的预加载指令。
CN201280061641.7A 2011-12-13 2012-12-12 用于使用gpu控制器来预加载缓存的机制 Active CN104025185B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/324,432 US9239793B2 (en) 2011-12-13 2011-12-13 Mechanism for using a GPU controller for preloading caches
US13/324,432 2011-12-13
PCT/IB2012/002938 WO2013108070A1 (en) 2011-12-13 2012-12-12 Mechanism for using a gpu controller for preloading caches

Publications (2)

Publication Number Publication Date
CN104025185A CN104025185A (zh) 2014-09-03
CN104025185B true CN104025185B (zh) 2017-08-01

Family

ID=48573113

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280061641.7A Active CN104025185B (zh) 2011-12-13 2012-12-12 用于使用gpu控制器来预加载缓存的机制

Country Status (6)

Country Link
US (1) US9239793B2 (zh)
EP (1) EP2791933B1 (zh)
JP (1) JP5973590B2 (zh)
KR (1) KR101868997B1 (zh)
CN (1) CN104025185B (zh)
WO (1) WO2013108070A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8842122B2 (en) * 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US9342712B2 (en) * 2012-06-08 2016-05-17 Advanced Micro Devices, Inc. Method and system for accelerating cryptographic processing
US9092341B2 (en) 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
US10922851B2 (en) * 2014-09-25 2021-02-16 The Boeing Company Virtual reality environment color and contour processing system
CN112035382A (zh) * 2016-05-24 2020-12-04 北京忆芯科技有限公司 低延迟访问ftl的方法与装置
CN106127673B (zh) * 2016-07-19 2019-02-12 腾讯科技(深圳)有限公司 一种视频处理方法、装置及计算机设备
US20180336034A1 (en) * 2017-05-17 2018-11-22 Hewlett Packard Enterprise Development Lp Near memory computing architecture
GB2567466B (en) 2017-10-12 2020-01-22 Advanced Risc Mach Ltd Cache stashing in a data processing system
CN109634491A (zh) * 2018-12-14 2019-04-16 珠海市小源科技有限公司 一种双向分段加载数据并显示的方法、计算机装置及计算机可读存储介质
US10877896B2 (en) * 2019-03-07 2020-12-29 Micron Technology, Inc. Adaptive readahead cache manager based on detected active streams of read commands
US11232533B2 (en) * 2019-03-15 2022-01-25 Intel Corporation Memory prefetching in multiple GPU environment
CN110187835B (zh) * 2019-05-24 2023-02-03 北京百度网讯科技有限公司 用于管理访问请求的方法、装置、设备和存储介质
WO2021012079A1 (en) 2019-07-19 2021-01-28 Nokia Solutions And Networks Oy Mechanism for reducing logging entries based on content
CN111522771B (zh) * 2020-04-20 2023-08-15 北京百度网讯科技有限公司 眼底图像处理方法、终端设备及存储介质
US20230069890A1 (en) * 2021-09-03 2023-03-09 Advanced Micro Devices, Inc. Processing device and method of sharing storage between cache memory, local data storage and register files

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761720A (en) 1996-03-15 1998-06-02 Rendition, Inc. Pixel engine pipeline processor data caching mechanism
US6347369B1 (en) 1997-11-17 2002-02-12 Advanced Micro Devices, Inc. Method and circuit for single cycle multiple branch history table access
KR100291628B1 (ko) 1999-06-19 2001-05-15 윤덕용 3차원 그래픽 텍스쳐 맵핑용 캐쉬 메모리 및 그의 캐쉬 미스페널티 저감방법
US20050010726A1 (en) 2003-07-10 2005-01-13 Rai Barinder Singh Low overhead read buffer
US20050195200A1 (en) 2004-03-03 2005-09-08 Chuang Dan M. Embedded system with 3D graphics core and local pixel buffer
US7360027B2 (en) 2004-10-15 2008-04-15 Intel Corporation Method and apparatus for initiating CPU data prefetches by an external agent
US7502913B2 (en) 2006-06-16 2009-03-10 Microsoft Corporation Switch prefetch in a multicore computer chip
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
JP2009230374A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法
US20100123717A1 (en) 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US20100153934A1 (en) 2008-12-12 2010-06-17 Peter Lachner Prefetch for systems with heterogeneous architectures
US8171219B2 (en) * 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
US8140769B2 (en) * 2009-04-20 2012-03-20 Oracle America, Inc. Data prefetcher
US9582222B2 (en) 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US8219758B2 (en) * 2009-07-10 2012-07-10 Apple Inc. Block-based non-transparent cache
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8803897B2 (en) 2009-09-03 2014-08-12 Advanced Micro Devices, Inc. Internal, processing-unit memory for general-purpose use
US20110072218A1 (en) * 2009-09-24 2011-03-24 Srilatha Manne Prefetch promotion mechanism to reduce cache pollution
CN101866318B (zh) * 2010-06-13 2012-02-22 北京北大众志微***科技有限责任公司 一种高速缓存替换策略的管理***及方法
US9645866B2 (en) 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform

Also Published As

Publication number Publication date
JP2015505091A (ja) 2015-02-16
KR101868997B1 (ko) 2018-06-20
EP2791933B1 (en) 2018-09-05
WO2013108070A1 (en) 2013-07-25
CN104025185A (zh) 2014-09-03
US9239793B2 (en) 2016-01-19
KR20140102709A (ko) 2014-08-22
US20130151787A1 (en) 2013-06-13
EP2791933A1 (en) 2014-10-22
EP2791933A4 (en) 2015-08-05
JP5973590B2 (ja) 2016-08-23

Similar Documents

Publication Publication Date Title
CN104025185B (zh) 用于使用gpu控制器来预加载缓存的机制
CN103999051B (zh) 用于着色器核心中着色器资源分配的策略
CN109978751A (zh) 多gpu帧渲染
CN103777926B (zh) 多线程处理单元中的高效存储器虚拟化
JP6373586B2 (ja) 異種処理デバイスの動的ワークパーティション
US11741019B2 (en) Memory pools in a memory model for a unified computing system
KR101900436B1 (ko) 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
JP2019526128A (ja) 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング
CN103885902A (zh) 用于经由纹理硬件实施存储器访问操作的技术
US9009419B2 (en) Shared memory space in a unified memory model
US20120198458A1 (en) Methods and Systems for Synchronous Operation of a Processing Device
US8984511B2 (en) Visibility ordering in a memory model for a unified computing system
US9170820B2 (en) Syscall mechanism for processor to processor calls
US20130262814A1 (en) Mapping Memory Instructions into a Shared Memory Address Place

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