用于使用gpu控制器来预加载缓存的机制的制作方法

文档序号:6497649阅读:209来源:国知局
用于使用gpu控制器来预加载缓存的机制的制作方法
【专利摘要】本发明提供了一种方法和系统,其中图形处理单元具有用于在所述图形处理单元上预加载缓存的专用控制器。所述方法包括接收命令消息,所述命令消息包括与存储器的部分相关的数据。所述方法也包括:解释所述命令消息,识别所述缓存的策略信息,识别存储器的所述部分的位置和大小,并且创建包括与所述部分的内容相关的数据的提取消息,其中所述提取消息使所述缓存预加载存储器的所述部分中的数据。
【专利说明】用于使用GPU控制器来预加载缓存的机制
[0001]发明背景发明领域
[0002]本发明总体涉及计算系统中执行的计算操作。更具体来说,本发明涉及计算系统中执行的图形处理任务。
【背景技术】
[0003]图形处理单元(GPU)是专门设计用于执行图形处理任务的复杂集成电路。例如,GTO可以执行终端用户应用(诸如视频游戏应用)所要求的图形处理任务。GPU的计算能力已以超过对应中央处理单元(CPU)平台的计算能力的速度增长。结合移动计算市场(例如,笔记本电脑、移动智能手机、平板电脑等等)和其必需支持服务器/企业系统的开发,已经利用这种增长来提供指定的期望用户体验质量。
[0004]然而,GPU传统上在受约束的编程环境中操作,主要可供用于图形加速。这些约束起因于GPU不具有与CPU —样丰富的编程生态系统这一事实。因此,它们的用途一直大多局限于二维(2D)和三维(3D)图形以及已习惯于处理图形和视频应用编程接口(API)的少量前沿多媒体应用。
[0005]随着多供应商支持的OpenCL?和DirectCompute?、标准API和支持工具出
现,GPU的应用已经不再局限于诸如传统图形等传统应用。虽然OpenCL和DirectCompute是有前景的起点,但创造一种允许对于大多数编程任务CPU和GPU的组合使用起来与CPU一样流畅的环境和生态系统仍存在许多障碍。
[0006]一般来说,终端用户应用与GPU之间存在若干层的软件。终端用户应用与应用编程接口(API)通信。API允许终端用户应用以标准格式而非依赖于GPU的格式输出图形数据和命令。API与驱动器通信。驱动器将从API接收到的标准代码翻译成GPU理解的本机格式指令。通常,驱动器由GPU的制造商编写。GPU随后执行来自驱动器的指令。
[0007]标准GPU在被称为渲染的过程中从其部件的更高级描述创建构成图像的像素。GPU通常利用连续渲染的概念通过使用管线来处理像素、纹理以及几何形状数据。这些管线通常称为固定功能专用管线(如光栅器、设置引擎、色彩混合器、纹理映射以及可在着色器管或着色器管线中完成的编程阶段)集合。“着色器”是计算机图形中的术语,是指图形资源主要用来执行渲染效果的软件指令集合。另外,GPU还可采用并行处理设计中的多个可编程管线以便获得更高的吞吐量。多个着色器管线还可以称作着色器管阵列。
[0008]另外,GPU还支持称为纹理映射的概念。纹理映射是用于通过使用纹理附近像素或纹素的色彩来确定纹理映射像素的纹理色彩的过程。所述过程还被称为纹理平滑或者纹理插值(texture interpolation)。然而,高图像质量纹理映射要求高度的计算复杂性。此夕卜,配备单个(统一)着色器的GPU还同时支持许多类型的着色器处理。因此提高了对更高性能的广义存储器存取能力的需求。
[0009]着色器引擎依赖于针对纹理、着色器代码以及其它类型数据对本地缓存存储器的高速访问。用数据预加载缓存减少了 GPU操作的执行时间,因为不再需要访问视频或主系统存储器来获得数据(这可能是费时的)。这使得在GPU每次开始执行、访问存储器的相同或类似部分时GPU性能提高。目前,GPU不具有提供用数据预加载缓存的功能性的专用可编程控制器。
[0010]考虑到新软件应用的复杂性持续增加,对GPU提供高效且高质量的渲染、纹理过滤以及误差校正的需求也正在提高。
[0011]实施方案概述
[0012]因此,需要减轻前述缺陷的系统和/或方法。具体地说,需要一种用于管理用要执行的存储器的相关部分对选定APD缓存的显式和隐式预加载的专用控制器。
[0013]虽然GPU、加速处理单元(APU)以及通用图形处理单元(GPGPU)是本领域中的常用术语,但是术语“加速处理设备(APD) ”被认为是一种更广泛的表述。例如,Aro是指以加速的方式执行与加速图形处理任务、数据并行任务或嵌套数据并行任务相关联的那些功能和计算的任何协同操作的硬件和/或软件集合。
[0014]在某些环境中,本发明的实施方案包括一种用于预加载缓存的方法和系统。所述系统包括电耦接至缓存的APD,所述系统包括:主机处理器,所述主机处理器被配置成输出包括与存储器的部分相关的数据的命令消息;以及控制器,所述控制器被配置成解释所述命令消息,以便⑴识别与所述缓存相关的策略信息,(?)识别所述部分的位置和大小,并且(iii)创建包括与所述部分的内容相关的数据的提取消息,其中所述控制器被配置成将所述提取消息输出到所述缓存。
[0015]本发明的另外实施方案包括一种包括电耦接至缓存的APD的系统,所述系统包括:控制器,所述控制器被配置成:(i)接收命令消息,所述命令消息包括显式请求缓存预加载存储器的部分的数据;(ii)识别与所述缓存相关的策略信息;(iii)识别所述部分的位置和大小;以及(iv)创建包括与所述部分的内容相关的数据的提取消息,其中所述控制器被配置成将所述提取消息输出到所述缓存。
[0016]本发明的另外特征和优点以及本发明的各种实施方案的结构和操作在下文中参照附图详细描述。应当注意,本发明不限于本文所描述的这些特定实施方案。本文呈现此类实施方案仅用于说明目的。基于本文所包含的教导内容,另外的实施方案对于相关领域的技术人员而言将是显而易见的。
[0017]附图简述
[0018]附图并入本文并且构成本说明书的一部分,图解了本发明并且与说明书一起进一步用来解释本发明的原理并使相关领域的技术人员能够实践和使用本发明。本发明的各实施方案参照附图在下文中进行描述,其中在全文中,类似参考标号用于指代类似元素。
[0019]图1A是根据本发明的实施方案的一种处理系统的说明性框图。
[0020]图1B是图1A所示APD的说明性框图图示。
[0021]图2是根据一个实施方案的用存储器的一部分预加载缓存的APD的说明性流程图。
[0022]图3是根据一个实施方案的用存储器的一部分预加载缓存的APD的另一说明性流程图。
[0023]本发明将参照附图进行描述。一般来说,元件首次出现在其中的附图通常是由对应参考编号中的最左侧的数字指示。
[0024]详述
[0025]在以下详细描述中,提及一个“实施方案”、“实施方案”、“示例实施方案”等等表明所描述的实施方案可包括某一特定特征、结构或特性,但是每个实施方案可能不一定包括该特定特征、结构或特性。此外,此类措词不一定是指同一实施方案。此外,当结合一个实施方案来描述某一特定特征、结构或特性时,应当认为,无论是否明确描述,使得此类特征、结构或者特性结合其它实施方案起作用是在本领域的技术人员知识范围内的。
[0026]术语“本发明的实施方案”并不要求本发明的所有实施方案都包括所论述的特征、优点或操作模式。在不背离本发明的范围的情况下可设想出替代实施方案,并且本发明的众所周知的元素可能并未详细描述或者可能被省略,以免混淆本发明的相关细节。另外,本文所使用的术语仅用于描述特定实施方案的目的,而并不意在限制本发明。例如,如在本文所使用的,单数形式“一个”和“所述”意在还包括复数形式,除非上下文另外清楚表明。还应当理解,当在本文中使用时,术语“包括(comprises) ”、“包括(comprising) ”、“包括(includes) ”和/或“包括(including) ”指明存在所述特征、整数、步骤、操作、元件和/或部件,但并不排除存在或者增添一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组合。
[0027]图1A是包括两 个处理器、即CPU102和APD104的统一计算系统100的示例性图示。CPU102可以包括一个或多个单核或多核CPU。在本发明的一个实施方案中,系统100形成在单个硅裸片或硅封装上,从而组合CPU102与APD104以提供统一的编程和执行环境。这种环境使得APD104能够与CPU102 —样流畅或近似流畅地用于一些编程任务。然而,本发明不绝对要求CPU102和APD104形成在单个硅裸片上。一些实施方案中,它们可能单独形成并且安装在相同或不同的基片上。
[0028]在一个实施例中,系统100还包括系统存储器106、操作系统108以及通信基础设施109。操作系统108和通信基础设施109在下文中更详细地论述。
[0029]系统100还包括了内核模式驱动器(KMD) 110、软件调度器(SWS) 112,以及存储器管理单元116,如输入/输出存储器管理单元(IOMMU)。系统100的部件可以实现为硬件、固件、软件或它们的任何组合。本领域的普通技术人员应当了解,系统100可以包括除了图1A所示实施方案中所示部件之外或不同于所示部件的一个或多个软件、硬件以及固件部件。
[0030]在一个实施例中,驱动器(如KMD110)通常通过硬件连接到其上的计算机总线或通信子系统与设备进行通信。当调用程序调用驱动器中例程时,驱动器向设备发布命令。一旦设备向驱动器发送回数据,驱动器可调用原始调用程序中的例程。在一个实施例中,驱动器是依赖于硬件的并且是操作系统特定的。它们通常提供任何必需异步的时间依赖硬件接口所要求的中断处理。
[0031]设备驱动器、尤其在现代Microsoft Windows?'平台上可以内核模式(第O级)或以用户模式(第3级)运行。以用户模式运行驱动器的主要益处是稳定性提高,因为编写拙劣的用户模式设备驱动器不可能通过重写内核存储器使系统崩溃。另一方面,用户/内核模式翻译通常强加相当大的性能开销,从而抑制用户模式驱动器的低等待时间和高吞吐量要求。用户模块仅可通过使用系统调用来访问内核空间。像UNIX shell或其它基于⑶I的应用等终端用户程序是用户空间的一部分。这些应用通过内核支持的功能与硬件交互。[0032]CPU102可以包括(未示出)控制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)中的一个或多个。CPU102例如执行控制计算系统100的操作的控制逻辑,包括操作系统108、KMDl 10, SffSl 12以及应用111。在此说明性实施方案中,根据一个实施方案,CPU102发起并且控制应用111的执行,例如,通过在CPU102和诸如APD104等其它处理资源上分发与这个应用相关联的处理。
[0033]除了其它之外,APD104执行用于选定功能(如图形操作和可能(例如)尤其适于并行处理的其它操作)的命令和程序。通常,APD104常常可以用于执行图形管线操作,如像素操作、几何计算以及将图像渲染至显示器上。在本发明的各实施方案中,APD104还可以基于从CPU102接收到的命令或指令执行计算处理操作(例如,那些与图形无关的操作,例如像视频操作、物理模拟、计算流体动力学等)。
[0034]例如,命令可以被认为是通常不限定在指令集体系结构(ISA)中的特殊指令。命令可以由特殊处理器(如分派处理器、命令处理器或网络控制器)来执行。另一方面,指令可以被认为是例如在计算机体系结构内的处理器的单个操作。在一个实施例中,当使用两组ISA时,一些指令被用于执行x86程序,并且一些指令被用于执行APD计算单元上的内核。
[0035]在一个说明性实施方案中,CPU102向APD104发送选定命令。这些选定命令可以包括图形命令和适于并行执行的其它命令。这些选定命令(还可包括计算处理命令)可以基本独立于CPU102执行。
[0036]APD104可以包括其自己的计算单元(未示出),诸如但不限于一个或多个SMD处理核心。如本文中提及,SIMD是管线或编程模型,其中内核在多个处理元件上并发执行,每个处理元件具有其自己的数据和共享程序计数器。所有处理元件执行相同指令集。使用预测使工作项能够参与或不参与每个所发布的命令。
[0037]在一个实施例中,每个APD104计算单元可以包括一个或多个标量和/或矢量浮点单元和/或算术逻辑单元(ALU)。APD计算单元还可以包括专用处理单元(未示出),如平方根倒数单元和正弦/余弦单元。在一个实施例中,Aro计算单元在本文中统称着色器核心 122。
[0038]通常,具有一个或多个SMD使得APD104理想适于执行数据并行任务,如在图形处理中常见的那些任务。
[0039]诸如像素处理等一些图形管线操作以及其它并行计算操作可能要求对输入数据元素流或集合执行同一命令流或计算内核。同一计算内核的相应实例化可以在着色器核心122中的多个计算单元上并发执行,以便并行处理这些数据元素。如本文中提及,例如,计算内核是包含程序中声明并且在Aro计算单元上执行的指令的函数。这个函数也被称为内核、着色器、着色器程序或程序。
[0040]在一个说明性实施方案中,每个计算单元(例如,SIMD处理核心)可以执行特定工作项的相应实例化以便处理输入数据。工作项是由命令在设备上调用的并行内核执行集合中的一个。工作项可以作为在计算单元上执行的工作组的一部分由一个或多个处理元件执行。
[0041]在一个实施例中,工作项是由命令在设备上调用的内核的并行执行集合中的一个。工作项是作为在计算单元上执行的工作组的一部分由一个或多个处理元件执行。[0042]工作项在全局ID和本地ID方面与集合内的其它执行不同。在一个实施例中,工作组中同时一起在SMD上执行的工作项子集可被称为波前136。波前宽度是计算单元(例如,SMD处理核心)的硬件的特性。如本文中提及,工作组是在单个计算单元上执行的相关工作项的集合。组中的工作项执行同一内核并且共享本地存储器和工作组隔离。
[0043]在所述示例性实施方案中,来自工作组的所有波前均在同一 SMD处理核心上进行处理。波前中的指令一次发布一个,并且当所有工作项都遵循相同控制流程时,每个工作项均执行同一程序。波前也可称为线程束(warp)、矢量或线程。
[0044]执行掩码和工作项预测用于在波前内实现发散控制流程,其中每个单独工作项实际可以占有通过核心的唯一代码路径。当工作项的全集在波前开始时间时不可用时,可以处理部分已填充的波前。例如,着色器核心122可以同时执行预定数量波前136,每个波前136包括多个工作项。
[0045]在系统100内,APD104包括其自己的存储器,如图形存储器130 (虽然存储器130并不限于仅图形用途)。图形存储器130提供用于在APD104中的计算过程中使用的本地存储器。着色器核心122内的单独计算单元(未示出)可以具有它们自己的本地数据存储器(未示出)。在一个实施方案中,APD104包括对本地图形存储器130的存取以及对存储器106的存取。在另一实施方案中,APD104可以包括对动态随机存取存储器(DRAM)或直接附接到APD104上并且与存储器106分开的其它此类存储器(未示出)的存取。 [0046]在所示实施例中,APD104还包括一个或“η”个命令处理器(CP) 124。CP124控制APD104内的处理。CP124还从存储器106中的命令缓冲器125检索有待执行的命令并且协调这些命令在APD104上的执行。
[0047]在一个实施例中,CPU102将基于应用111的命令输入到合适命令缓冲器125中。如本文中提及,应用是将在CPU和APD内的计算单元上执行的程序部分的组合。
[0048]对于被调度用于在APD104上执行的每个进程,可以维护多个命令缓冲器125。
[0049]CP124可以在硬件、固件、软件或它们的组合中实现。在一个实施方案中,CP124被实现为具有微代码的精简指令集计算机(RISC)引擎以实现包括调度逻辑的逻辑。
[0050]APD104还包括一个或“η”个分派控制器(DC) 126。在本申请中,术语分派是指由分派控制器执行的命令,所述分派控制器使用上下文状态来发起用于一组计算单元上的一组工作组的内核的执行的开始。DC126包括用于发起着色器核心122中的工作组的逻辑。在一些实施方案中,DC126可以实现为CP124的一部分。
[0051]系统100还包括用于从运行列表150选择进程以供在APD104上执行的硬件调度器(HWS) 128。HWS128可以使用循环方法、优先级或基于其它调度策略从运行列表150选择进程。例如,优先级可以动态地确定。HWS128还可以包括管理运行列表150的功能性,例如,通过添加新的进程并且通过从运行列表150删除现有进程。HWS128的运行列表管理逻辑有时称为运行列表控制器(RLC)。
[0052]在本发明的各实施方案中,当HWS128发起对来自运行列表150的进程的执行时,CP124开始检索并且执行来自对应命令缓冲器125的命令。在一些情况下,CP124可以生成有待在APD104内执行的一个或多个命令,所述命令与从CPU102接收到的命令对应。在一个实施方案中,CP124与其它部件一起以提高或最大化APD104资源和/或系统100的利用率的方式来实现APD104上的命令的优先级排序和调度。[0053]APD104可以访问或者可以包括中断发生器146。中断发生器146可以由APD104配置成当APD104遇到诸如页面错误之类的中断事件时中断操作系统108。例如,APD104可以依赖于10MMU116内的中断发生逻辑来形成上述页面错误中断。
[0054]APD104还可以包括抢占和上下文切换逻辑120,以便抢占当前正在着色器核心122内运行的进程。例如,上下文切换逻辑120包括停止进程并保存其当前状态(例如,着色器核心122状态和CP124状态)的功能性。
[0055]如本文中提及,术语状态可以包括初始状态、中间状态和/或最终状态。初始状态是机器根据编程次序处理输入数据集合以形成输出数据集合的起始点。存在一种中间状态,例如,需要在若干点处对这种中间状态进行存储以使得处理向前进展。有时存储这种中间状态是为了允许当被某一其它进程中断时在稍后时间继续执行。还存在一种最终状态,可以记录这种最终状态作为输出数据集合的一部分。
[0056]抢占和上下文切换逻辑120还可以包括将另一进程上下文切换到APD104中的逻辑。将另一进程上下文切换成在APD104上运行的功能性可以包括例如通过CP124和DC126将进程实例化以在APD104上运行,恢复用于此进程的任何先前所保存的状态,并且开始它的执行。
[0057]存储器106可以包括非永久性存储器,如DRAM(未示出)。存储器106可以在应用或其它处理逻辑的部分的执行过程中存储(例如)处理逻辑指令、常量值以及变量值。例如,在一个实施方案中,用于在CPU102上执行一个或多个操作的控制逻辑的部分在所述操作的各自部分由CPU102执行的过程中可以驻存在存储器106内。
[0058]在执行过程中,相应应用、操作系统功能、处理逻辑命令以及系统软件可以驻存在存储器106中。对操作系统108重要的控制逻辑命令在执行过程中通常将会驻存在存储器106中。在系统100执行过程中,包括例如内核模式驱动器110和软件调度器112的其它软件命令也可以驻存在存储器106中。
[0059]在此实施例中,存储器106包括被CPU102用来向APD104发送命令的命令缓冲器125。存储器106还包含进程列表和处理信息(例如,活动列表152和进程控制块154)。这些列表以及信息由在CPU102上执行的调度软件用来向APD104和/或相关调度硬件传递调度信息。对存储器106的存取可以由联接到存储器106上的存储器控制器140管理。例如,来自CPU102或来自其它设备的对从存储器106读出或对写入存储器106的请求由存储器控制器140管理。
[0060]返回系统100的其它方面,IOMMUl 16是多上下文存储器管理单元。
[0061]如本文中所用,上下文可被认为是内核在其中执行的环境以及其中限定同步和存储器管理的域。上下文包括一组设备、这些设备可存取的存储器、对应存储器性质以及用于调度内核或操作在存储器对象上的执行的一个或多个命令队列。
[0062]返回参考图1A所示的实施方案,10MMU116包括用于执行虚拟地址到物理地址翻译以用于包括APD104的设备对存储器页面的存取的逻辑。IOMMUl 16还可以包括用于例如当设备(如APD104)所进行的页面存取导致页面错误时生成中断的逻辑。10MMU116还可以包括或者有权存取翻译后备缓冲器(TLB) 118。例如,TLB118可以实现在内容可寻址存储器(CAM)中以针对APD104对存储器106中的数据所作出的请求来加速逻辑(即,虚拟)存储器地址到物理存储器地址的翻译。[0063]在所示实施例中,通信基础设施109根据需要互连系统100的部件。通信基础设施109可以包括(未示出)外围部件互连(PCI)总线、扩展PCI (PC1-E)总线、高级微控制器总线体系结构(AMBA)总线、高级图形端口(AGP)或其它此类通信基础设施中的一种或多种。通信基础设施109还可以包括以太网或类似网络,或满足应用的数据传输速率要求的任何合适物理通信基础设施。通信基础设施109包括互连包括计算系统100的部件等各部件的功能性。
[0064]在此实施例中,操作系统108包括用于管理系统100的硬件部件并且提供常见服务的功能性。在各实施方案中,操作系统108可以在CPU102上执行并且提供常见服务。这些常见服务可以包括例如用于在CPU102内执行的调度应用、故障管理、中断服务以及处理其它应用的输入和输出。
[0065]在一些实施方案中,基于中断控制器(如中断控制器148)所生成的中断,操作系统108调用适当的中断处理例程。例如,一旦检测到页面错误中断,操作系统108就可以调用中断处理器来发起将相关页面加载到存储器106中并且更新对应页表。
[0066]操作系统108还可以包括通过确保对硬件部件的访问通过操作系统管理的内核功能性作为中介从而保护系统100的功能性。实际上,操作系统108确保应用(如应用111)在用户空间中在CPU102上运行。操作系统108还确保应用111调用操作系统提供的内核功能性来访问硬件和/或输入/输出功能性。
[0067]例如,应用111包括各种程序或命令以执行还在CPU102上执行的用户计算。CPU102可以无缝发送用于在APD104上处理的选定命令。
[0068]在一个实施例中,KMDl 10实现应用程序接口(API),CPU102或在CPU102上执行的应用或其它逻辑可以通过所述应用程序接口调用APD104功能性。例如,KMDllO可使来自CPU102的命令入队到命令缓冲器125中,APD104随后将从命令缓冲器125检索命令。另夕卜,KMDllO可以与SWS112 —起执行对有待在APD104上执行的进程的调度。SWS112例如可以包括用于维护有待在APD上执行的进程的优先列表的逻辑。
[0069]在本发明的其它实施方案中,在CPU102上执行的应用在使命令入队时可以完全绕过 KMDl 10。
[0070]在一些实施方案中,SWSl 12在存储器106中维护有待在APD104上执行的进程的活动列表152。SWS112还选择活动列表152中有待由硬件中的HWS128管理的进程子集。在一个说明性实施方案中,进程的此两级运行列表提高了进程管理的灵活性,并且使得硬件能够快速响应处理环境中的改变。在另一实施例中,与在APD104上运行每个进程相关的信息通过进程控制块(PCB) 154从CPU102传递到APD104。
[0071]用于应用、操作系统以及系统软件的处理逻辑可以包括在诸如C之类的编程语言和/或者在诸如Verilog、RTL或网表之类的硬件描述语言中指定的命令,以使得能够通过生成掩模作品/光掩模来最终配置制造过程,从而产生体现本文所述发明的各方面的硬件设备。
[0072]在阅读本说明书时,本领域的技术人员将会理解,计算系统100可以包括比图1A中所示更多或更少的部件。例如,计算系统100可以包括一个或多个输入接口、非易失性存储装置、一个或多个输出接口、网络接口以及一个或多个显示器或显示接口。
[0073]图1B是示出图1A所示APD104的更详细的图示的实施方案。在图1B中,CP124可以包括CP管线124a、124b以及124c。CP124可以配置成处理被提供作为来自图1A所示命令缓冲器125的输入的命令列表。在图1B的示例性操作中,CP输入0(124a)负责将命令驱动到图形管线162中。CP输入I和2(124b和124c)将命令转发给计算管线160。还提供了用于控制HWS128的操作的控制器机制166。
[0074]在图1B中,图形管线162可以包括一组框,在本文中称作有序管线164。例如,有序管线164包括顶点组翻译器(VGT) 164a、原语汇编程序(PA) 164b、扫描转换器(SC) 164c以及着色器输出、渲染支持单元(SX/RB)176。有序管线164内的每个框可以表示图形管线162内的不同图形处理阶段。有序管线164可为固定功能硬件管线。可以使用其它实现方式,这些实现方式也在本发明的精神和范围内。
[0075]虽然只有少量数据可以提供作为到图形管线162的输入,但是当将这种数据提供作为来自图形管线162的输出时,数据将被放大。图形管线162还包括用于通过对CP管线124a接收到的工作项组内的范围进行计数的DC166。通过DC166提交的计算工作是与图形管线162半同步的。
[0076]计算管线160包括着色器DC168和170。DC168和170均被配置成对从CP管线124b和124c接收到的工作组内的计算范围进行计数。
[0077]图1B所示DC166、168以及170接收输入工作组,将所述工作组划分成波前,并且随后将波前转发给着色器核心122。
[0078]由于图形管线162通常是固定功能管线,因此难以保存和恢复它的状态,并且因此,图形管线162难以进行上下文切换。因此,在大多数情况下,如本文中论述,上下文切换不涉及图形进程中的上下文切换。着色器核心122中的图形工作则是例外,它能被上下文切换。
[0079]在图形管线162内的工作处理完成后,所完成的工作通过渲染支持单元176进行处理,渲染支持单元176进行深度和色彩计算并且随后将其最终结果写入存储器130。
[0080]着色器核心122可以由图形管线162和计算管线160共享。着色器核心122可以是被配置成运行波前的通用处理器。在一个实施例中,计算管线160内的所有工作都在着色器核心122内处理。着色器核心122运行可编程软件代码并且包括诸如状态数据等各种形式的数据。着色器核心122联接至RW L2缓存174上。
[0081]图2是描绘根据本发明的一个实施方案的示例性方法200的流程图。方法200可以在图1A和图1B的系统100上操作,图2的整个描述都参照了这个系统。在一个实施例中,方法200可以用于预加载APD缓存,如APD104的RW L2缓存174。方法200可以或可以不按照所示次序进行,或者可以或可以不要求所有操作。
[0082]方法200在操作202处开始并继续至操作204,在所述操作中,控制器接收到命令消息。根据一个实施方案,主机处理器被配置成输出包括与存储器的一部分相关的数据的命令消息。例如,主机处理器可为CPU102。命令消息可以包括与存储器(如图形存储器130)的一部分相关的数据。根据一个实施方案,命令消息包括有待由Aro处理,与像素操作、几何形状计算以及将图像渲染至显示器上的指令。一般来说,控制器可以接收命令消息流。控制器可以是例如但不限于APD104的CP124。本领域的技术人员应当理解,除了 CP124夕卜,专用控制器可以被配置成接收命令消息。
[0083]在操作206中,例如通过命令处理器124对命令消息进行解释。如上论述,命令消息可以包括与APD所执行的一系列操作或计算相关的数据。命令消息可以包括指令列表,每个指令包括与有待在APD104处理指令期间访问的存储器的一部分相关的数据。例如,命令消息可以包括指向图形存储器130的一部分的引用指针,该部分可以包含可能在处理以将图像渲染至显示器上期间使用的像素数据或常量。
[0084]根据一个实施方案,解释命令消息包括确定将存储器的哪一部分预加载到缓存中。在一个实施方案中,有待预加载的存储器的部分基于引用局部性信息确定。这种局部性基于以下原理=APD并非以相等概率一次访问其数据的全部。引用局部性信息可以基于存储器的一部分的时间局部性。
[0085]例如,如果命令消息包括引用存储器的特定部分的指令,那么存储器的同一部分不久将再次被引用的可能性很高。引用局部性信息例如可以基于空间局部性。例如,如果命令消息包括引用存储器的特定部分的指令,那么驻存在存储器的附近部分中的数据不久也将被引用的可能性很高。
[0086]在操作208中,确定是否需要进行预加载。在图2的实施例中,预加载确定由CP124执行。根据一个实施方案,控制器(例如,CP124)可以被配置成跟踪缓存的访问历史。在命令消息的处理期间,指令可以访问存储器位置(如存储器130内的位置)。当指令访问存储器位置时,APD首先检查存储器位置是否已被复制在缓存中。确切地说,将与存储器访问相关联的地址与缓存中的所有标记进行比较。如果在缓存中找到期望的存储器位置,那么发生缓存命中。APD104立即读出或者写入信息,如识别出的缓存线路中的数据或指令。如果在缓存内未找到期望的存储器位置,那么这种情况就被认为是缓存未命中,这导致从另一来源(如图形存储器130)检索数据。
[0087]根据一个实施方案,当接收并且解释命令消息时,CP124被配置成基于缓存访问历史确定预加载是否是必要的。导致缓存命中或缓存未命中的数据被视为是很有可能被再次访问的数据。与此数据和其在图形存储器130的一部分中的位置相关的信息由CP124记录并存储在数据库中。一旦接收到命令消息,CP124被配置成将命令消息的指令与存储在数据库中的缓存访问历史进行比较。当与存储器位置相关的命令消息数据类似于缓存访问历史数据库内的任何数据时,预加载是必要的。一旦确定预加载是必要的,方法200可进行至操作210。如果预加载是不必要的,那么方法200在操作214处结束。
[0088]在操作210中,确定有待预加载的存储器的部分。例如,有待预加载的存储器的部分由CP124确定。根据一个实施方案,有待预加载的存储器的部分是基于引用局部性信息。如前文论述,有待预加载的存储器的部分可以基于存储器的所述部分的时间或空间局部性。一旦CP124识别出命令消息指令中所引用的存储器的部分,存储器的同一部分以及驻存在相邻或附近存储器块中的存储器可以被识别为有待预加载的存储器的部分。
[0089]根据另一实施方案,有待预加载的存储器的部分是基于缓存的策略信息。缓存的策略信息可以确定何时对缓存块进行写入。例如,如果与缓存块相关联的策略信息是“仅在读出时分配”的,那么缓存块将不在写入操作期间进行修改。如果与缓存块相关联的策略信息是“在读出和写入时分配”的,那么缓存块可在写入和读出操作两者期间进行更新。另夕卜,当系统包括多个缓存时,策略信息可以确定使用哪个缓存存储某些信息。缓存的策略信息确定有待预加载的识别出的存储器的部分将如何存储在缓存中。
[0090]在操作212中,输出提取消息。例如,提取消息由CP124输出到特定缓存(如RWL2缓存174)。一旦识别出有待预加载的存储器的部分,就由CP124生成包括与策略信息相关的数据的提取消息。根据一个实施方案,提取消息使缓存基于策略信息从存储器的部分加载数据。方法200随后在操作214处结束。
[0091]图3是描绘根据本发明的一个实施方案的示例性方法300的流程图。方法300可以在图1A和图1B的系统100上操作,图3的整个描述都参照了这个系统。在一个实施例中,方法300可以用于预加载APD的缓存,如APD104的RW L2缓存174。方法300可以或可以不按照所示次序进行,或者可以或可以不要求所有操作。
[0092]方法300在操作302处开始并且继续至操作304,控制器接收到命令消息。根据一个实施方案,主机处理器被配置成输出包括预提取指令的命令消息。例如,主机处理器可为CPU102。根据一个实施方案,命令消息包括显式识别有待预加载到缓存中的存储器的一部分的预加载指令。例如,预加载指令可以包括有待预加载到APD104的RW L2缓存174中的存储器的部分的物理地址。或者,预加载指令可以包括有待预加载到RW L2缓存174中的存储器的部分的虚拟地址。虚拟地址是存储器的部分在虚拟存储器中的位置。虚拟地址可映射到许多不同物理地址。在一个实施方案中,CP124被配置成调用存储器管理单元(MMU)(如10MMU116),以将虚拟地址翻译成存储器的部分的物理地址。
[0093]在操作306中,例如通过CP124确定有待预加载的存储器的部分。根据一个实施方案,有待预加载的存储器的部分是基于包括在命令消息中的物理地址。物理地址显式识别有待预加载到缓存中的存储器的部分的位置。有待预加载的存储器的部分是基于包括在命令消息中的虚拟地址。在将包括在命令消息中的虚拟地址翻译成物理地址后,将识别出有待预加载的存储器的部分的准确位置。
[0094]在一个实施方案中,有待预加载的存储器的部分还可基于存储器的所述部分的时间或空间局部性。一旦CP124确定由物理地址或虚拟地址识别出的存储器的部分的位置,可以将存储器的同一部分以及驻存在相邻或附近存储器块中的存储器识别为有待预加载的存储器的部分。在一个实施方案中,关于缓存的策略信息可以用于确定何时以及将多少识别出的存储器的部分预加载到缓存中。
[0095]在操作308中,提取消息例如由CP124输出到RW L2缓存174的缓存控制器。一旦识别出有待预加载的存储器的部分,CP124就生成包括与此信息相关的数据的提取消息。根据一个实施方案,提取消息使缓存从存储器的部分加载数据。方法300随后在操作310处结束。
[0096]本发明可体现在硬件、软件、固件或它们的任意组合中。本发明的实施方案或其部分可以许多编程语言编程,所述编程语言诸如硬件描述语言(HDL)、汇编语言、C语言以及网表等等。例如,HDL(例如,Verilog)可以用于合成、模拟以及制造实现本发明的一个或多个实施方案的方面的设备(例如,处理器、专用集成电路(ASIC)和/或其它硬件元件)。Verilog代码可用于建模、设计、检验和/或实现可以使用内容感知线裁剪(seam carving)来缩放帧的处理器。
[0097]例如,Verilog可以用于生成可用来执行指令的逻辑的寄存器传输级(RTL)描述,以便使得可使用内容感知线裁剪来缩放帧。逻辑的RTL描述随后可以用来生成用以制造期望逻辑或设备的数据,例如,图形设计系统(⑶S)或⑶S II数据。Verilog代码、RTL描述和/或⑶SII数据可以存储在计算机可读介质上。通过逻辑执行以执行本发明的方面的指令可以多种编程语言(诸如C和C++)编码,并且编译成可由逻辑或其它设备执行的对象代码。
[0098]本发明的方面可以全部或部分地存储在计算机可读介质上。存储在计算机可读介质上的指令可以适配处理器以全部或部分地执行本发明,或者被适配用于产生专门适配用于全部或部分地执行本发明的设备(例如,处理器、ASIC、其它硬件)。这些指令还可用于通过生成掩模作品/光掩模来最终配置制造过程,从而产生体现本文所述发明的各方面的硬件设备。
[0099]应当了解,意在详述部分而非概述以及摘要部分用于对权利要求书进行解释。概述以及摘要部分可以阐明如发明人所构想的本发明的一个或多个但非所有的示例性实施方案,并且因此,并不意图通过任何方式对本发明和所附权利要求书进行限制。
[0100]本发明已在上文中借助示出特定功能和其关系的实现的功能构建块来描述。为了方便描述,本文已对这些功能构建块的边界进行任意界定。只要合适执行特定功能和其关系,就可界定替代边界。
[0101]特定实施方案的前述描述将会完全地揭示本发明的一般性质,以使他人可以在不背离本发明的一般概念的情况下通过应用本领域的技术范围内的知识来容易地修改和/或改编此类特定实施方案以用于各种应用。因此,基于本文所呈现的教导内容以及指导内容,此类改编以及修改意图在所公开的实施方案的等同物的范围内。应当理解,本文的措词或术语目的在于说明而非限制,因此技术人员将会根据教导内容以及指导内容来对本说明书的术语或措词进行解释。
[0102]本发明的宽度以及范围不应限于上述示例性实施方案,而应仅仅根据所附权利要求和它们的等同物来界定。
【权利要求】
1.一种包括电耦接至缓存的加速处理设备的系统,所述系统包括: 控制器,所述控制器被配置成解释命令消息,以便α)识别与所述缓存相关的策略信息,(ii)确定部分的位置和大小,并且(iii)创建包括与所述部分的内容相关的数据的提取消息, 其中所述控制器被配置成将所述提取消息输出到所述缓存。
2.如权利要求1所述的系统,其还包括: 主机处理器,所述主机处理器被配置成输出包括与存储器的部分相关的数据的所述命令消息。
3.如权利要求1所述的系统,其中所述提取消息使所述缓存基于所述策略信息从存储器的所述部分加载数据。
4.如权利要求1所述的系统,其中所述控制器还被配置成识别用于存储器的所述部分的引用局部性信息,其中所述引用局部性信息确定存储器的所述部分将何时被加载到所述缓存中。
5.如权利要求4所述的系统,其中所述命令消息包括所述引用局部性信息。
6.如权利要求4所述的系统,其中所述引用局部性信息是基于存储器的所述部分的时间局部性。
7.如权利要求4所述的系统,其中所述引用局部性信息是基于存储器的所述部分的空间局部性。
8.一种用于预加载缓存的计算机实现方法,所述方法包括: 接收命令消息,所述命令消息包括与存储器的部分相关的数据; 解释所述命令消息; 识别所述缓存的策略信息; 识别存储器的所述部分的位置和大小;以及 创建包括与所述部分的内容相关的数据的提取消息。
9.如权利要求8所述的方法,其还包括将所述提取消息发送到缓存,其中所述提取消息使所述缓存从存储器的所述部分加载数据。
10.如权利要求8所述的方法,其还包括: 识别用于存储器的所述部分的引用局部性信息,其中所述引用局部性信息确定存储器的所述部分将何时被加载。
11.如权利要求10所述的方法,其中所述命令消息包括所述引用局部性信息。
12.如权利要求9所述的方法,其中所述引用局部性信息是基于存储器的所述部分的时间局部性。
13.如权利要求10所述的方法,其中所述引用局部性信息是基于存储器的所述部分的空间局部性。
14.一种包括电耦接至缓存的加速处理设备的系统,所述系统包括: 控制器,所述控制器被配置成:(i)接收命令消息,所述命令消息包括显式请求将存储器的部分预加载到所述缓存中的数据;(ii)识别用于所述缓存的策略信息;(iii)识别存储器的所述部分的位置和大小;以及(iii)创建包括与所述部分的内容相关的数据的提取消息。
15.如权利要求14所述的系统,其中所述命令消息包括用于存储器的每个部分的物理地址。
16.如权利要求14所述的系统,其中所述命令消息包括用于存储器的所述部分的虚拟地址。
17.如权利要求14所述的系统,其中所述控制器还被配置成将所述虚拟地址翻译成用于存储器的所述部分的物理地址。
18.如权利要求14所述的系统,其中所述控制器还被配置成识别用于存储器的所述部分的引用局部性信息,其中所述引用局部性信息确定存储器的所述部分将何时被加载到所述缓存中。
19.如权利要求18所述的系统,其中所述命令消息包括所述引用局部性信息。
20.如权利要求18所述的系统,其中所述引用局部性信息是基于存储器的所述部分的时间局部性。
21.如权利要求18所述的系统,其中所述引用局部性信息是基于存储器的所述部分的空间局部性。
22.一种用于预加载缓存的计算机实现方法,所述方法包括: 接收命令消息,所述命令消息包括显式请求将存储器的部分预加载到所述缓存中的数据; 识别用于所述缓存的策略信息; 识别存储器的所述部分的位置和大小;以及 创建包括与所述部分的内容相关的数据的提取消息。
23.如权利要求22所述的方法,其中所述命令消息包括用于存储器的一个或多个部分中的每个的虚拟地址。
24.如权利要求22所述的方法,其还包括: 将所述虚拟地址翻译成用于存储器的所述一个或多个部分中的每个的物理地址。
25.如权利要求22所述的方法,其中所述命令消息包括用于存储器的所述一个或多个部分中的每个的物理地址。
26.如权利要求22所述的方法,其还包括将所述提取消息发送到所述缓存,其中所述提取消息使所述缓存从存储器的所述部分加载数据。
27.如权利要求22所述的方法,其还包括: 识别用于存储器的所述部分的引用局部性信息,其中所述引用局部性信息确定存储器的所述部分将何时被加载。
28.如权利要求27所述的方法,其中所述命令消息包括所述引用局部性信息。
29.如权利要求27所述的方法,其中所述引用局部性信息是基于存储器的所述部分的时间局部性。
30.如权利要求27所述的方法,其中所述引用局部性信息是基于存储器的所述部分的空间局部性。
【文档编号】G06F12/02GK104025185SQ201280061641
【公开日】2014年9月3日 申请日期:2012年12月12日 优先权日:2011年12月13日
【发明者】盖纳迪·里盖, 于里·利希马诺 申请人:Ati科技无限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1