专利名称:多处理器计算平台中的处理器间通信技术的制作方法
技术领域:
本发明涉及计算平台,且更特定来说,涉及包含多个处理器的计算平台。
背景技术:
包含多个处理器的计算平台用于提高具有高计算密集要求和/或高数据处理量要求的应用的性能。多处理器计算平台可包含可充当主机装置的通用中央处理单元(CPU)以及主机CPU可用来卸载计算密集型任务的性能的一个或一个以上计算装置,进而提高整个系统的性能。在一些情况下,所述一个或一个以上计算装置可经特别设计以比主机CPU更高效地处理某些类型的任务,其可提供对整个系统的进一步的性能改进。举例来说,所述一个或一个以上计算装置可经特别设计以比主机CPU更高效地执行平行算法。可用于多处理器计算系统中的一种类型的计算装置是图形处理单元(GPU)。传统上,GPU包含固定功能硬件,其经特别设计以用于向显示装置实时地再现三维(3D)图形,但是通常不可编程,即,不可将经编译的程序下载到GPU并在GPU上执行。然而,近来,随着可编程着色器单元的发展,大多数GPU架构已经转变为可编程架构,所述可编程架构包含许多并行的处理元件。所述可编程架构允许GPU促进不仅仅是图形操作的执行,而且促进以高度并行的方式执行通用计算任务。使用GPU来执行通用非图形专有计算任务可在本文中被称作图形处理单元上的通用计算(GPGPU),或者被称作GPU计算。在一些情况下,GPU可使并非图形专有的应用编程接口(API)可用,进而减轻对GPU的编程以用于执行通用计算任务。GPU计算任务可包含计算密集的任务和/或包含高度并行的任务,例如矩阵计算、信号处理计算、统计算法、分子模型化应用、财务应用、医疗成像、密码分析应用等。GPU是可用于多处理器计算平台中的仅一种类型的计算装置,且可使用其它类型的计算装置来补充或取代GPU。举例来说,可用于多处理器计算平台中的其它类型的计算装置包含(例如)额外的CPU、数字信号处理器(DSP)、小区宽带引擎(Cell/BE)处理器,或任何其它类型的处理单元。具有多个计算装置的多处理器计算平台可为同类平台或异类平台。在同类平台中,所有计算装置共享共同指令集架构(ISA)。相比而言,异类平台可包含具有不同ISA的两个或两个以上计算装置。一般来说,不同类型的计算装置可具有不同的ISA,且相同类型的不同品牌的计算装置也可具有不同的ISA。可通过利用多核计算装置和/或众核计算装置来进一步改进多处理器计算平台的性能。多核计算装置的一实例是上文所描述的GPU,其含有具有多个处理核心的可编程着色器单元。然而,CPU还可经设计以包含多个处理核心。一般来说,可将包含多个处理核心的任何芯片或裸片视为多核处理器。处理核心可指代能够对特定块数据执行指令的处理单元。举例来说,可将GPU内的单一算法逻辑单元(ALU)单元或向量处理器视为处理核心。众核处理器一般指代具有相对大量的核心的多核处理器,例如大于十个核心,且通常使用与用于设计具有少量核心的多核处理器的技术不同的技术来设计。多核处理器通过允许在单一芯片上在多个核心上并行地(例如,同时地)执行软件程序来提供性能改进。并行编程模型指代经设计以允许在多个处理核心上同时地执行程序的编程模型。所述程序可为多线程程序,在这种情况下,单一线程可操作于每一处理核心上。在一些实例中,单一计算装置可包含用于执行程序的所有处理核心。在其它实例中,用于执行程序的一些处理核心可位于相同类型或不同类型的不同计算装置上。可使用跨平台、跨供应商、异类计算平台、并行编程模型应用编程接口(API)开提供共同语言规范,以用于对包含由实施不同ISA的不同供应商可能制成的不同类型的计算装置的异类多核计算平台进行并行编程。开放计算语言(OpenCL )是跨平台、跨供应商、异类计算平台、并行编程API的一实例。此类API可经设计以允许GPU上的更一般化的数据处理。举例来说,除了经由计算语言暴露经扩展的着色器子系统能力之外,这些API可以非图形专有的方式将数据流和控制路径一般化到GPU中。然而,目前,由此类API提供的指令集是基于GPU的硬件架构,且因此受限于与现有GPU架构相容的功能性。
发明内容
本发明描述可用于多处理器计算平台内的通信技术。在一些实例中,所述技术可提供软件接口,所述软件接口可用于支持在使用命令队列起始任务的多处理器计算平台内的消息传递。在额外的实例中,所述技术可提供软件接口,所述软件接口可用于多处理器计算平台内的共享存储器处理器间通信。在进一步的实例中,所述技术可提供图形处理单元GPU,所述图形处理单元包含用于支持所述GPU与主机CPU之间的消息传递和/或共享存储器通信的硬件。 在一个实例中,本发明描述一种包含一个或一个以上处理器的主机装置。所述装置进一步包含命令队列接口,所述命令队列接口在一个或一个以上处理器上执行且经配置以响应于从在主机装置上执行的进程接收到一个或一个以上排队指令而将多个命令置于命令队列中。所述多个命令包含第一命令,所述第一命令指令所述主机装置在与所述主机装置相关联的第一存储器空间与和图形处理单元(GPU)相关联的第二存储器空间之间传送数据。所述多个命令进一步包含第二命令,所述第二命令指令所述主机装置起始GPU上的任务的执行。所述装置进一步包含消息传递接口,所述消息传递接口在一个或一个以上处理器上执行且经配置以在于GPU上执行的任务正在GPU上执行时且响应于从在主机装置上执行的进程接收到一个或一个以上消息传递指令而在于所述主机装置上执行的进程与所述任务之间传递一个或一个以上消息。在另一实例中,本发明描述一种方法,所述方法包含响应于从在主机装置上执行的进程接收到一个或一个以上排队指令而用在主机装置的一个或一个以上处理器上执行的命令队列接口将多个命令放置到命令队列中。所述多个命令包含第一命令,所述第一命令指令所述主机装置在与所述主机装置相关联的第一存储器空间与和图形处理单元(GPU)相关联的第二存储器空间之间传送数据。所述多个命令进一步包含第二命令,所述第二命令指令所述主机装置起始GPU上的任务的执行。所述方法进一步包含在于GPU上执行的任务正在GPU上执行时且响应于从在主机装置上执行的进程接收到一个或一个以上消息传递指令而用在主机装置的一个或一个以上处理器上执行的消息传递接口在于所述主机装置上执行的进程与所述任务之间传递一个或一个以上消息。
在另一实例中,本发明描述一种设备,所述设备包含用于响应于从在主机装置上执行的进程接收到一个或一个以上排队指令而将多个命令放置到命令队列中的装置。所述多个命令包含第一命令,所述第一命令指令所述主机装置在与所述主机装置相关联的第一存储器空间与和图形处理单元(GPU)相关联的第二存储器空间之间传送数据。所述多个命令进一步包含第二命令,所述第二命令指令所述主机装置起始GPU上的任务的执行。所述设备进一步包含在于GPU上执行的任务正在GPU上执行时且响应于从在主机装置上执行的进程接收到一个或一个以上消息传递指令而在于所述主机装置上执行的进程与所述任务之间传递一个或一个以上消息的装置。在另一实例中,本发明描述一种包含指令的计算机可读存储媒体,所述指令致使一个或一个以上处理器响应于从在主机装置上执行的进程接收到一个或一个以上排队指令而将多个命令放置到命令队列中。所述多个命令包含第一命令,所述第一命令指令所述主机装置在与所述主机装置相关联的第一存储器空间与和图形处理单元(GPU)相关联的第二存储器空间之间传送数据。所述多个命令进一步包含第二命令,所述第二命令指令所述主机装置起始GPU上的任务的执行。所述计算机可读存储媒体进一步包含致使所述一个或一个以上处理器在于GPU上执行的任务正在GPU上执行时且响应于从在主机装置上执行的进程接收到一个或一个以上消息传递指令而在于所述主机装置上执行的进程与所述任务之间传递一个或一个以上消息的指令。在另一实例中,本发明描述一种图形处理单元(GPU),其包含经配置以执行任务的一个或一个以上处理器。所述GPU进一步包含可由主机装置存取的一个或一个以上寄存器。所述GPU进一步包含消息传递模块,所述消息传递模块经配置以在于所述一个或一个以上处理器上执行的任务正在所述一个或一个以上处理器上执行时且响应于从在所述一个或一个以上处理器上执行的任务接收到一个或一个以上消息传递指令而经由所述一个或一个以上寄存器在所述任务与在主机装置上执行的进程之间传递一个或一个以上消息。在另一实例中,本发明描述一种方法,所述方法包含用图形处理单元(GPU)的消息传递模块从在所述GPU上执行的任务接收一个或一个以上消息传递指令。所述方法进一步包含经由可由主机装置存取的所述GPU内的一个或一个以上寄存器在于所述GPU上执行的任务正在所述GPU上执行时且响应于从在所述GPU上执行的任务接收到一个或一个以上消息传递指令而在所述任务与在所述主机装置上执行的进程之间传递一个或一个以上消肩、O在另一实例中,本发明描述一种设备,所述设备包含用于从在图形处理单元(GPU)上执行的任务接收一个或一个以上消息传递指令的装置。所述设备进一步包含用于经由可由主机装置存取的所述GPU内的一个或一个以上寄存器在于所述GPU上执行的任务正在所述GPU上执行时且响应于从在所述GPU上执行的任务接收到一个或一个以上消息传递指令而在所述任务与在所述主机装置上执行的进程之间传递一个或一个以上消息的装置。在另一实例中,本发明描述一种包括指令的计算机可读媒体,所述指令致使一个或一个以上处理器从在图形处理单元(GPU)上执行的任务接收一个或一个以上消息传递指令。所述计算机可读存储媒体进一步包含致使所述一个或一个以上处理器经由可由主机装置存取的所述GPU内的一个或一个以上寄存器在于所述GPU上执行的任务正在所述GPU上执行时且响应于从在所述GPU上执行的任务接收到一个或一个以上消息传递指令而在所述任务与在所述主机装置上执行的进程之间传递一个或一个以上消息的指令。在另一实例中,本发明描述一种方法,所述方法包含用在主机装置的一个或一个以上处理器上执行的存储器缓冲器接口来接收包含指定是否应针对可由主机装置以及由图形处理单元(GPU)存取的共享存储器空间来启用直接模式的信息的指令。所述方法进一步包含基于指定是否应启用所述直接模式的所述信息而用所述存储器缓冲器接口针对所述共享存储器空间选择性地启用所述直接模式。在另一实例中,本发明描述一种包含一个或一个以上处理器的主机装置。所述装置进一步包含存储器缓冲器接口,所述存储器缓冲器接口在所述一个或一个以上处理器上执行且经配置以接收包含指定是否应针对共享存储器空间来启用直接模式的信息的指令,且基于指定是否应启用所述直接模式的所述信息而针对所述共享存储器空间选择性地启用所述直接模式,所述共享存储器空间可由主机装置以及由图形处理单元(GPU)存取。在另一实例中,本发明描述一种设备,所述设备包含用于接收包含指定是否应针对可由主机装置以及由图形处理单元(GPU)存取的共享存储器空间来启用直接模式的信息的指令的装置。所述设备进一步包含用于基于指定是否应启用所述直接模式的所述信息而针对所述共享存储器空间选择性地启用所述直接模式的装置。在另一实例中,本发明描述一种包括指令的计算机可读媒体,所述指令致使一个或一个以上处理器接收包含指定是否应针对可由主机装置以及由图形处理单元(GPU)存取的共享存储器空间来启用直接模式的信息的指令。所述计算机可读存储器媒体进一步包含致使一个或一个以上处理器基于指定是否应启用所述直接模式的所述信息而针对所述共享存储器空间选择性地启用所述直接模式的指令。在另一实例中,本发明描述一种图形处理单元(GPU),其包含与存储器相关联的GI3U高速缓冲存储器。所述装置进一步包含一个或一个以上处理模块,所述一个或一个以上处理模块经配置以响应于接收到指定是否应使用高速缓存服务来用于相对于存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而选择性地使用GPU高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者。在另一实例中,本发明描述一种方法,所述方法包含响应于接收到指定是否应使用高速缓存服务来用于相对于存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而选择性地使用与存储器相关联的图形处理单元(GPU)高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者。在另一实例中,本发明描述一种设备,其包含与存储器相关联的GPU高速缓冲存储器。所述设备进一步包含用于响应于接收到指定是否应使用高速缓存服务来用于相对于存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而选择性地使用GPU高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者的装置。在另一实例中,本发明描述一种包括指令的计算机可读媒体,所述指令致使一个或一个以上处理器响应于接收到指定是否应使用高速缓存服务来用于相对于存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而选择性地使用与存储器相关联的图形处理单元(GPU)高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者。
图1是说明根据本发明的可用于执行消息传递技术的实例性计算系统的方框图。图2是说明根据本发明的可用于图1的计算系统中的实例性GPU的方框图。图3是说明根据本发明的用于多处理器平台环境中的消息传递的实例性技术的流程图。图4是说明根据本发明的用于执行由在主机装置上执行的进程发布的发送指令的实例性技术的流程图。图5和6是说明根据本发明的可用于实施图4中所说明的技术的若干部分的实例性技术的流程图。图7是说明根据本发明的用于处理例如GPU等计算装置中的所接收的消息的实例性技术的流程图。图8是说明根据本发明的用于执行由在例如GPU等计算装置上执行的任务发布的接收指令的实例性技术的流程图。图9和10是说明根据本发明的可用于实施图8中所说明的技术的若干部分的实例性技术的流程图。图11是说明根据本发明的用于执行由在例如GPU等计算装置上执行的进程发布的发送指令的实例性技术的流程图。图12和13是说明根据本发明的可用于实施图11中所说明的技术的若干部分的实例性技术的流程图。图14是说明根据本发明的用于执行由在主机装置上执行的进程发布的寄存回调例程指令的实例性技术的流程图。图15是说明根据本发明的用于处理从计算装置接收到的中断的实例性技术的流程图。图16和17是说明根据本发明的可用于实施图15中所说明的技术的若干部分的实例性技术的流程图。图18是说明根据本发明的用于执行由在主机装置上执行的进程发布的读取指令的实例性技术的流程图。图19是说明根据本发明的可用于实施图18中所说明的技术的若干部分的实例性技术的流程图。图20是说明根据本发明的可促进直接存储器对象的使用的实例性计算系统的方框图。图21是说明根据本发明的用于执行由在主机装置上执行的进程发布的存储器对象创建指令的实例性技术的流程图。图22是说明根据本发明的用于执行由在主机装置上执行的进程发布的存储器对象创建指令的另一实例性技术的流程图。图23到26是说明根据本发明的用于处理高速缓存模式指令和直接模式指令的实例性技术的流程图。图27是说明根据本发明的可用于图20的计算系统中的实例性GPU的方框图。
图28是说明根据本发明的用于处理高速缓存模式指令和直接模式指令的实例性技术的流程图。图29是说明根据本发明的用于执行由在主机装置上执行的进程发布的存储器对象创建指令的另一实例性技术的流程图。图30是说明根据本发明GPU可如何处理根据第一编译技术而编译的指令序列的流程图。图31是说明根据本发明的用于编译用于任务的源代码的实例性技术的流程图。图32是说明根据本发明的可由GPU用来选择性地使用高速缓存服务的实例性技术的流程图。
具体实施例方式本发明描述可用于多处理器计算平台内的通信技术。在一些实例中,所述技术可提供软件接口,所述软件接口可用于支持在使用命令队列起始任务的多处理器计算平台内的消息传递。在额外的实例中,所述技术可提供软件接口,所述软件接口可用于多处理器计算平台内的共享存储器处理器间通信。在进一步的实例中,所述技术可提供图形处理单元GPU,所述图形处理单元包含用于支持所述GPU与主机CPU之间的消息传递和/或共享存储器通信的硬件。近年来,最初经设计以用于处理实时3D图形的处理器(例如,图形处理单元(GPU))被一般化,从而执行通用计算任务(GPGPU)。已通过采用业界标准(例如,开放计算语言(OpenCL )标准)来部分地证明GPGPU的价值。OpenCL是可用于在多处理器计算平台上执行具有任务级并行度和/或数据级并行度的跨平台、跨供应商、异类计算平台、并行编程API的一实例。所述API经特别设计以通过以非图形专有的方式来使GPU的数据流和控制路径一般化而允许GPU上的更一般化的数据处理。此方法的一个限制是主机CPU与计算装置(例如,GPU)之间的数据通信的粗糙粒度。举例来说,OpenCL API提供支持主机装置与一个或一个以上计算装置之间的任务级粒度的通信的命令队列接口。每一命令队列一般保持将由特定计算装置执行的命令。在主机装置上执行的主机进程可通过将指令主机装置执行存储器传送的命令放置在命令队列中而在主机存储器空间与装置存储器空间之间传送数据。类似地,主机进程可通过将指令主机装置在计算装置上执行任务的命令放置在命令队列中而致使任务开始在计算装置上执行。所述命令队列接口可经配置以提供对命令的按序执行或对命令的无序执行。当命令队列接口经配置以提供对命令的按序执行时,命令队列接口保证将以将命令放置到命令队列中的次序来执行命令,且直到前一命令已完成执行之后才将开始对后续命令的执行。因此,当主机进程将命令放置在命令队列中来执行任务时,命令队列等待任务完成执行,之后执行可能被随后放置到命令队列中的任何额外的命令。在涉及主机CPU和GPU以及按序命令队列的简单环境中,主机CPU与GPU之间的通信方案可涉及以下操作:(I)主机CPU准备好数据且将所述数据放置到GPU可存取的存储器中;(2)主机CPU命令GPU执行任务;(3)主机CPU等待GPU完成对所述任务的执行;以及(4)主机CPU将数据从GPU可存取的存储器复制到主机存储器。在此类配置中,将在GPU上执行任务所需的所有数据传送到GPU可存取的存储器,之后开始对所述任务的执行,且由在GPU上执行的任务产生的数据不可用于主机CPU,直到在GPU上执行的任务完成执行之后方可。主机CPU与GPU之间的数据共享上的此粗糙度可阻止对用于基于并行的应用的许多有用操作的实施,例如,在于主机装置上执行的进程与在GPU上执行的任务之间传递进程间消息。此些消息(例如)对于允许在GPU上运行的任务具有在主机CPU上执行远程过程调用(RPC)的能力可为有用的。当命令队列接口经配置以提供对命令的无序执行时,在特定任务的执行期间,主机进程不能够控制何时将发生对特定命令的执行。因此,用于命令队列的无序执行模式实际上也不允许在于主机装置上执行的进程与在GPU上执行的任务之间实施进程间消息传递。关于用于OpenCL中的存储器模型,API界定所谓的全局CL缓冲器和全局CL图像,其可用于在主机CPU与GPU之间共享数据或用于在多个OpenCL计算装置之间共享数据。然而,CPU和GPU无法同时从缓冲器进行读取或写入到缓冲器。通常,CPU准备好含有源数据的一个或一个以上缓冲器,且将所述缓冲器传递到GPU以供处理。GPU修改这些缓冲器或将结果放置在还曾由在CPU上执行的软件先验分配的其它缓冲器中,以用于接收GPU数据修改。虽然OpenCL中的存储器对象当前允许将主机存储器空间的区用于存储由计算装置使用的缓冲器数据,但所述规范允许计算装置对此数据进行高速缓存以用于对任务的更高效的执行。主机装置一般不能直接使用于对缓冲器数据进行高速缓存的计算装置高速缓冲存储器无效。因此,即使主机装置将盖写存储于主机存储器空间中的某些存储器缓冲器数据,也不能保证计算装置中的高速缓冲存储器将得到更新以向计算装置提供对经修改数据的直接存取。另外,因为由计算装置执行的计算的结果可被存储在计算装置高速缓冲存储器中,所以在主机装置上执行的主机进程不能从缓冲器读取任何部分结果,因为此类数据可能归因于计算装置高速缓冲存储器中所存储的较新的数据而无效。因此,OpenCL中的存储器管理模型未容易地经由共享存储器实现运行中的数据共享。在一些实例中,可使用本发明中所描述的技术来克服OpenCL API的上文提及的限制中的一者或一者以上。举例来说,本发明的技术可提供软件接口,所述软件接口可用于支持在使用任务级粒度命令队列起始任务的多处理器计算平台内的进程间消息传递。作为另一实例,本发明的技术可提供软件接口,所述软件接口可用于支持经由多处理器计算平台内的共享存储器的运行中的数据共享。在一些实例中,本发明的技术可提供促进软件级消息传递的GPU硬件架构。举例来说,本发明的技术可提供经配置以支持对软件级消息传递指令的执行的GPU硬件架构。在进一步的实例中,本发明的技术可提供促进GPU与主机CPU之间的共享存储器通信的GPU硬件架构。举例来说,本发明的技术可提供经配置以针对共享存储器空间选择性地启用和停用高速缓存服务且/或针对共享存储器空间选择性地启用和停用高速缓冲存储器-相关性机制。根据本发明的第一方面,提供一种消息传递接口,所述消息传递接口促进在由计算装置执行任务期间在主机装置与一个或一个以上计算装置之间执行消息传递指令。消息传递可指代一种形式的进程间以及潜在地装置间的通信,其中正通信的进程各自执行互补组的操作以成功地传递消息。举例来说,根据消息传递协议进行通信的进程中的每一者可实施发送操作和接收操作。本发明中的消息传递技术可允许CPU和计算装置(例如,GPU)在于计算装置上执行任务期间在彼此之间传递消息。以此方式,实施任务级粒度命令队列通信方案的多处理器计算平台可以能够促进进程间和/或装置间通信。在一些实例中,本发明中所描述的消息传递技术可被称作“带外信令”技术,因为所述技术使用不同于命令队列接口的接口,命令队列接口通常用于OpenCL中以用于在主机装置与计算装置(例如,GPU)之间的通信。换句话说,本发明的技术可包含新的带外通信接口,其与OpenCL内所包含的带内命令队列接口在逻辑上分离。带外通信接口可不经受命令队列接口所经受的相同任务级粒度,进而提供对上文相对于命令队列的任务级粒度所描述的一个或一个以上限制的解决方案。根据本发明的技术在CPU与GPU之间传送的消息可为任何类型的消息。不同类型的消息的实例包含信号、存储器分配请求、存储器取消分配请求、通知消息、同步消息、远程过程调用消息(例如,作为远程过程调用(RPC)的部分的消息)、数据包、报告消息、断言机制消息,以及记录消息。在当前的OpenCL范例中,从主机CPU到GPU的所有请求均在OpenCL命令队列中排队等候,且随后被发送到GPU。具体来说,应用可能将大量内核执行和缓冲器操作排在命令队列中。同时,如果首先被排队的任务(例如,内核执行)需要(例如)向CPU请求额外的存储器分配,那么就出现问题。首先,GPU如何在运行内核中向CPU通知其需要进行存储器分配?其次,CPU如何向GPU通知存储器分配的完成以及新分配的存储器块的地址?然而,本发明的消息传递接口技术可能够通过允许含有上述通知和信息的一个或一个以上消息在CPU与GPU之间传递来解决这些问题。在一些实例中,可使用本发明的带外信令技术在主机CPU与一个或一个以上计算装置(例如,OpenCL计算装置)之间实施信令。带外信令可例如使用推拉机制来提供快速的带外通知。在一些实例中,带外信令技术可携载相对少量的数据。根据本发明的第二方面,提供能够将消息发送到在不同于GPU的处理器上执行的进程以及从所述进程接收消息的GPU。举例来说,GPU可包含经配置以实施用于发送和接收消息的一个或一个以上操作的硬件。在一些实例中,根据本发明而设计的GPU可包含一个或一个以上主机可存取的寄存器,所述寄存器经配置以存储与消息传递协议相关联的状态和数据信息。所述一个或一个以上寄存器可经配置以促进在GPU上执行的任务与在不同于GPU的装置上执行的进程之间的消息传递。在进一步的实例中,GPU的ALU处理块(例如,可编程着色器单元)可通信地耦合到主机可存取的寄存器以经由所述主机可存取的寄存器来发送和接收消息。GPU还可经设计以包含各种轮询和/或中断机制以实施同步和/或异步消息传递技术。根据本发明的第三方面,提供存储器缓冲器接口,其允许创建直接存储器对象。直接存储器对象可用于实施非可高速缓冲共享存储器空间和/或高速缓冲存储器相干共享存储器空间,以便在于计算装置上执行的任务正在计算装置上执行时在于主机装置上执行的进程与所述任务之间共享数据。所述共享存储器空间可为可由主机装置以及计算装置(例如,GPU)两者在计算装置执行任务期间存取的存储器空间。如本文中所使用的非可高速缓存的共享存储器空间可指代针对所述存储器空间而停用主机装置和计算装置中的一者或两者中的一个或一个以上对应高速缓冲存储器的共享存储器空间。如本文中所使用的高速缓冲存储器相干的共享存储器空间可指代其中使用共享存储器高速缓冲存储器相干技术来维持主机装置和计算装置中的一者或两者中的一个或一个以上对应高速缓冲存储器内的高速缓冲存储器相干的共享存储器空间。所述非可高速缓存共享存储器空间以及高速缓冲存储器相干性共享存储器空间可在任何时间允许数据共享。在一些实例中,可将直接存储器对象实施为非可高速缓存易失性共享存储器和/或实施为高速缓冲存储器相干的易失性共享存储器来用于主机装置和计算装置。在一些实例中,本发明的直接存储器对象可被集成在包含存储器对象存储器管理方案的跨平台、跨供应商、异类计算平台、并行编程API内。举例来说,可将直接存储器对象集成到OpenCL中以作为OpenCL存储器对象的额外属性,例如OpenCL缓冲器对象或OpenCL图像对象。在此些实例中,可通过修改存储器对象创建功能以包含一参数或旗标来创建直接存储器对象,所述参数或旗标指定由功能调用创建的所得的存储器对象是否应为标准模式存储器对象或直接模式存储器对象。以此方式,本发明的技术可允许实施包含若干存储器对象存储器管理方案(例如,OpenCL)以经由不经受高速缓冲存储器相干性问题的共享存储器空间来实施运行中的数据共享的API的多处理器计算平台。在进一步的实例中,本发明的直接存储器对象可用于主机CPU与OpenCL计算装置之间或者不同的OpenCL计算装置之间的运行中的数据共享。在额外的实例中,直接存储器对象可含有内部同步标记。在进一步的实例中,可与带外信号一起使用直接存储器对象以用于同步。根据本发明的第四方面,提供包含对应于共享存储器空间的高速缓冲存储器的GPU,所述共享存储器空间可针对特定存储器地址空间而被选择性地停用以便提供非可高速缓存共享存储器空间。举例来说,GPU可响应于接收到指定是否应使用高速缓存服务来相对于共享存储器空间执行读取操作和/或写入操作的信息而启用和停用由与共享存储器空间相关联的闻速缓冲存储器提供的闻速缓存服务。在一些实例中,指定是否应使用闻速缓存服务来相对于共享存储器空间执行读取操作和/或写入操作的信息可为高速缓存模式指令或直接模式指令,其指定是否应使用高速缓存模式或直接模式来执行特定指令。在进一步的实例中,指定是否应使用高速缓存服务来相对于共享存储器空间执行读取操作和/或写入操作的信息可为直接模式存储器对象属性,其指定是否针对存储器对象启用直接模式。在进一步的实例中,本发明的技术可提供包含高速缓冲存储器相干模式的GPU,所述高速缓冲存储器相干模式可被选择性地启用以提供高速缓冲存储器相干的共享存储器空间。在一些实例中,GPU可基于从主机装置接收到的一个或一个以上指令来选择性地启用高速缓冲存储器相干模式以用于对应于共享存储器空间的高速缓冲存储器的一部分。在主机装置基于由主机进程指定的直接模式参数而分配共享存储器空间之后,主机装置可即刻向GPU发布一个或一个以上指令以选择性地启用共享存储器空间高速缓冲存储器相干模式以用于对应于共享存储器空间的高速缓冲存储器的一部分。与可通过单独使用OpenCL命令队列接口而获得的主机CPU与GPU之间或两个OpenCL计算装置之间的任务耦合相比,本发明的带外信令和直接缓冲技术可提供更精细粒度的任务耦合。本发明的技术可允许多处理器计算平台执行多种操作以便辅助并行和/或多线程程序的高校执行。举例来说,本发明的技术可允许在GPU上执行的任务启动RPC。作为另一实例,本发明的技术可允许在GPU上执行的任务经由CPU来启动另一 GPU任务。作为进一步的实例,本发明的技术可允许在GPU上执行的任务向CPU和/或在CPU上执行的驱动器发布资源管理请求,例如存储器分配和/或存储器取消分配请求。作为又一实例,本发明的技术可允许在GPU上执行的任务执行状态检查和到CPU的一般消息传递,例如断言机制的实施、进展报告,和/或诊断记录。图1是说明根据本发明的实例性计算系统10的方框图。计算系统10经配置以在多个处理装置上处理一个或一个以上软件应用。在一些实例中,所述一个或一个以上软件应用可包含主机进程,且计算系统10可经配置以执行主机进程且分布由在计算系统10内的其它计算装置上的主机进程起始的一个或一个以上任务的执行。在进一步的实例中,可根据并行编程模型来编程由计算系统10执行的主机进程和/或任务。举例来说,所述应用可包含经设计以充分利用基础硬件系统的任务级并行度和/或数据级并行度的指令。计算系统10可为个人计算机、桌上型计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台、移动电话(例如,蜂窝式或卫星电话)、移动电话、陆线电话、因特网电话、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA))、数字媒体播放器(例如,个人音乐播放器)、视频播放器、显示装置,或电视、电视机顶盒、服务器、中间网络装置、大型计算机或处理信息的任何其它类型的装置。计算系统10包含主机装置12、图形处理单元(GPU) 14、存储器16和互连网络18。主机装置12经配置以提供用于执行用于多处理器计算平台API的主机进程和运行时模块的平台。通常,主机装置12是通用CPU,但主机装置12可为能够执行程序的任何类型的装置。主机装置12经由互连网络18通信地耦合到GPU14和存储器16。主机装置12包含主机进程20和运行时模块22,主机进程20和运行时模块22中的每一者可在一个或一个以上可编程处理器的任何组合上执行。主机进程20包含形成用于在计算系统10的计算系统平台上执行的软件程序的一组指令。所述软件程序可经设计以执行用于终端用户的一个或一个以上特定任务。在一些实例中,此些任务可涉及可利用由计算系统10提供的多个处理装置和并行架构的计算密
集算法。运行时模块22可为在主机装置12上执行的软件模块,其实施经配置以服务于主机进程20中所包含的指令中的一者或一者以上的一个或一个以上接口。由运行时模块22实施的接口包含命令队列接口 24和主机消息传递接口 26。在一些实例中,运行时模块22可实施除了本发明中所描述的接口之外的标准多处理器系统API内所包含的一个或一个以上接口。在一些实例中,所述标准API可为异类计算平台AP1、跨平台AP1、跨供应商AP1、并行编程AP1、任务级并行编程API和/或数据级并行编程API。在进一步的实例中,所述标准API可为OpenCL API。在此些实例中,可将运行时模块22设计成遵照OpenCL规范中的一者或一者以上。在额外的实例中,可将运行时模块22实施为驱动器程序(例如,GPU驱动器)的一部分或实施为驱动器程序。命令队列接口 24经配置以从主机进程20接收一个或一个以上排队指令,且执行由所接收的指令指定的功能。在一些实例中,可根据OpenCL规范来设计命令队列接口 24。举例来说,命令队列接口 24可实施OpenCL规徂中所指定的排队指令中的一者或一者以上以用于与命令队列交互。根据本发明,主机消息传递接口 26经配置以从主机进程20接收一个或一个以上消息传递指令,且执行由所接收的指令指定的功能。在一些实例中,可将主机消息传递接口26实施为对现有标准API (例如,OpenCL API)的扩展。在额外的实例中,可将主机消息传递接口 26集成到现有标准API (例如,OpenCL API)中。GPU14经配置以响应于从主机装置12接收到的指令来执行一个或一个以上任务。GPU14可为包含一个或一个以上可编程处理元件的任何类型的GPU。举例来说,GPU14可包含经配置以并行地执行任务的多个执行实例的一个或一个以上可编程着色器单元。可编程着色器单元可包含顶点着色器单元、片段着色器单元、几何着色器单元和/或统一着色器单元。GPU14经由互连网络18通信地耦合到主机装置12和存储器16。GPU14包含任务28和装置消息传递接口 30。任务28和装置消息传递接口 30可在一个或一个以上可编程处理元件的任何组合上执行。任务28包括形成用于在计算系统10中的计算装置上执行的任务的一组指令。在一些实例中,用于任务28的所述组指令可在主机进程20中界定,且在一些情况下,由在主机装置12上执行的主机进程20中所包含的指令编译。在进一步的实例中,任务28可为具有在GPU14上并行地执行的多个执行实例的内核程序。在此些实例中,主机进程20可界定用于内核的索引空间,其将内核执行实例映射到用于执行内核执行实例的相应处理元件,且GPU14可根据为内核界定的索引空间来执行用于任务28的多个内核执行实例。根据本发明,装置消息传递接口 30经配置以从主机进程20接收一个或一个以上消息传递指令,且执行由所接收的指令指定的功能。在一些实例中,可将装置消息传递接口 30实施为对现有标准API的扩展。举例来说,所述标准API可为标准计算装置API,例如OpenCL C API。在额外的实例中,可将装置消息传递指令30集成到现有标准API (例如,OpenCL C API)中。存储器16经配置以存储数据以供主机装置12和GPU14中的一者或两者使用。存储器16可包含一个或一个以上易失性或非易失性存储器或存储装置的任何组合,所述易失性或非易失性存储器或存储装置例如为随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据存储媒体或光学存储媒体。存储器16经由互连网络18通信地耦合到主机装置12和GPU14。存储器16包含命令队列32。命令队列32可为实施于存储器16中的数据结构,存储器16存储并检索从命令队列接口 24接收到的命令。在一些实例中,命令队列32可为以特定次序存储命令以用于执行的缓冲器。互连网络18经配置以促进主机装置12、GPU14与存储器16之间的通信。互连网络18可为此项技术中已知的任何类型的互连网络。在图1的实例性计算系统10中,互连网络18是总线。所述总线可包含多种总线结构中的任一者中的一者或一者以上,例如第三代总线(例如,超传输总线或不限带宽总线)、第二代总线(例如,高级图形端口总线、外围组件互连快递(PCIe)总线,或高级可扩展接口(AXI)总线),或任何其它类型的总线。互连网络18耦合到主机装置12、GPU14和存储器16。现在将进一步详细地描述计算系统10中的组件的结构和功能性。如上文所论述,主机进程20包含一组指令。所述组指令可包含(例如)一个或一个以上排队指令,以及一个或一个以上主机消息传递指令。在额外的实例中,所述组指令可包含指定将在GPU14上执行的任务或内核的指令、创建命令队列且使命令队列与特定装置相关联的指令、编译并捆绑程序的指令、设置内核自变量的指令、界定索引空间的指令、界定装置背景的指令,以及支持由主机进程20提供的功能性的其它指令。主机进程20可通过向命令队列接口 24发布指令命令队列接口 24将一个或一个以上命令放置到命令队列32中的一个或一个以上排队指令而与命令队列接口 24交互。所述一个或一个以上排队指令可包含指令命令队列接口 24将存储器传送命令排到命令队列32中的存储器传送排队指令。举例来说,所述一个或一个以上排队指令可包含将一命令排队的指令,所述命令指令主机装置12 (例如,在主机装置12上执行的运行时模块22)在与主机装置12相关联的存储器空间与和GPU14相关联的存储器空间之间传送数据。如果存储器空间在主机装置12执行主机进程20期间可由主机装置12存取,那么存储器空间可与主机装置12相关联。类似地,如果存储器空间在GPU14执行任务28期间可由GPU14存取,那么存储器空间可与GPU14相关联。与主机装置12相关联的存储器空间可在本文中被称作主机存储器空间,且与GPU14相关联的存储器空间可在本文中被称作装置存储器空间。在一些实例中,存储器16可包含主机存储器空间和装置存储器空间两者的部分。在进一步的实例中,主机存储器空间和装置存储器空间中的一者或两者的部分可位于图1的计算系统10中未展示的一个或一个以上其它存储器装置上。在一些实例中,指令主机装置12在与主机装置12相关联的存储器空间与和GPU14相关联的存储器空间之间传送数据的命令可为指令运行时模块22将存储于主机存储器空间的一部分中的数据传送到分配于装置存储器空间中的缓冲器对象的命令。由主机进程20发布以将此命令排队的指令可在本文中被称作写入缓冲器排队指令。在一些情况下,写入缓冲器排队指令可采取由OpenCL API规范指定的ClEnqueueWriteBuffer ()功能的形式。在额外的实例中,指令主机装置12在与主机装置12相关联的存储器空间与和GPU14相关联的存储器空间之间传送数据的命令可为指令运行时模块22将存储于分配于装置存储器空间中的缓冲器对象中的数据传送到主机存储器空间的一部分的命令。由主机进程20发布以将此命令排队的指令可在本文中被称作读取缓冲器排队指令。在一些情况下,读取缓冲器排队指令可采取由OpenCL API规范制定的ClEnqueueReadBuffer ()功能的形式。所述一个或一个以上排队指令还可包含指令命令队列接口 24将任务执行命令排队到命令队列32中的任务执行排队指令。举例来说,所述一个或一个以上排队指令可包含用以将一命令排队的指令,所述命令指令主机装置12 (例如,在主机装置12上执行的运行时模块22)在GPU14上执行任务。在一些实例中,用以执行任务的命令可为在GPU14的多个处理元件上并行地执行任务的多个执行实例的命令。举例来说,所述任务可为内核,主机进程20可界定用于内核的索引空间,其将内核执行实例映射到GPU14中的用于执行内核执行实例的相应处理元件。在此实例中,用以执行任务的命令可为用以根据为GPU14界定的索引空间在GPU14上执行内核的命令。在一些情况下,任务执行排队指令可采取由OpenCLAPI 指定的 ClEnqueueNDRangeKernel ()功能的形式。根据本发明,主机进程20还可通过向主机消息传递接口 26发布指令主机消息传递接口 26在于主机装置12上执行的主机进程20与在GPU14上执行的任务28之间传递一个或一个以上消息的一个或一个以上主机消息传递指令而与主机消息传递接口 26交互。所述主机消息传递指令可由主机装置12执行。在一些实例中,主机消息传递指令可包含指令主机装置12将指定数据发送到指定装置的发送指令。举例来说,所述发送指令可指令主机消息传递接口 26将消息从在主机装置12上执行的主机进程20发送到在GPU14上执行的任务28。在一些实例中,所述发送指令可包含指定应将消息发送到其的特定装置的第一输入参数,以及指定将发送的消息的内容的第二输入参数。所述发送指令可为封锁发送指令或非封锁发送指令。在一些实例中,所述发送指令可包含指定所述发送指令是封锁发送指令还是非封锁发送指令的第三输入参数。封锁发送指令可在完成发送操作之前一直进行等待,之后返回到调用进程,例如在主机装置12上执行的主机进程20。非封锁发送指令可返回到调用进程,而不在完成发送操作之前一直等待。举例来说,非封锁发送指令返回到特定发送操作的句柄,可由调用进程随后询问所述句柄以确定发送操作是否成功。非封锁发送操作可能失败,且在失败的情况下,调用进程可需要再次发布发送指令以重试发送操作。在一些实例中,用于发送指令的接口可采取以下形式:
权利要求
1.一种方法,其包括: 用在主机装置的一个或一个以上处理器上执行的存储器缓冲器接口来接收包含指定是否应针对可由所述主机装置以及由图形处理单元GPU存取的共享存储器空间来启用直接模式的信息的指令;以及 基于指定是否应启用所述直接模式的所述信息而用所述存储器缓冲器接口针对所述共享存储器空间选择性地启用所述直接模式。
2.根据权利要求1所述的方法,其中针对所述共享存储器空间选择性地启用所述直接模式包括: 当指定是否应启用所述直接模式的所述信息指定应启用所述直接模式时,针对所述共享存储器空间启用所述直接模式;以及 当指定是否应启用所述直接模式的所述信息指定不应启用所述直接模式时,针对所述共享存储器空间停用所述直接模式。
3.根据权利要求1所述的方法,其中针对所述共享存储器空间选择性地启用所述直接模式包括: 当指定是否应启用所述直接模式的所述信息指定应启用所述直接模式时,致使停用用于所述共享存储器空间的高速缓存服务;以及 当指定是否应启用所述直接模式的所述信息指定不应启用所述直接模式时,致使启用用于所述共享存储器空间的高速缓存服务。
4.根据权利要求3所述的方法, 其中致使启用用于所述共享存储`器空间的高速缓存服务包括将与所述共享存储器空间相关联的存储器对象的直接模式属性设定为第一值,且 其中致使停用用于所述共享存储器空间的高速缓存服务包括将与所述共享存储器空间相关联的所述存储器对象的所述直接模式属性设定为不同于所述第一值的第二值。
5.根据权利要求3所述的方法, 其中致使启用用于所述共享存储器空间的高速缓存服务包括将与所述共享存储器空间相关联的一个或一个以上基于硬件的旗标配置为第一值,且 其中致使停用用于所述共享存储器空间的高速缓存服务包括将与所述共享存储器空间相关联的所述一个或一个以上基于硬件的旗标配置为不同于所述第一值的第二值。
6.根据权利要求1所述的方法,其中针对所述共享存储器空间选择性地启用所述直接模式包括: 当指定是否应启用所述直接模式的所述信息指定应启用所述直接模式时,针对所述主机装置中的高速缓冲存储器和所述GPU中的高速缓冲存储器中的至少一者启用共享存储器高速缓冲存储器相干模式;以及 当指定是否应启用所述直接模式的所述信息指定不应启用所述直接模式时,针对所述主机装置中的所述高速缓冲存储器和所述GPU中的所述高速缓冲存储器中的所述至少一者停用所述共享存储器高速缓冲存储器相干模式。
7.—种主机装置,其包括: 一个或一个以上处理器;以及 存储器缓冲器接口,其在所述一个或一个以上处理器上执行且经配置以接收包含指定是否应针对共享存储器空间来启用直接模式的信息的指令,且基于指定是否应启用所述直接模式的所述信息而针对所述共享存储器空间选择性地启用所述直接模式,所述共享存储器空间可由所述主机装置以及由图形处理单元GPU存取。
8.根据权利要求7所述的装置,其中所述存储器缓冲器接口进一步经配置以当指定是否应启用所述直接模式的所述信息指定应启用所述直接模式时,针对所述共享存储器空间启用所述直接模式,以及当指定是否应启用所述直接模式的所述信息指定不应启用所述直接模式时,针对所述共享存储器空间停用所述直接模式。
9.根据权利要求7所述的装置,其中所述存储器缓冲器接口进一步经配置以当指定是否应启用所述直接模式的所述信息指定应启用所述直接模式时,致使停用用于所述共享存储器空间的高速缓存服务,且当指定是否应启用所述直接模式的所述信息指定不应启用所述直接模式时,致使启用用于所述共享存储器空间的高速缓存服务。
10.根据权利要求9所述的装置,其中所述存储器缓冲器接口进一步经配置以将与所述共享存储器空间相关联的存储器对象的直接模式属性设定为第一值,以致使启用用于所述共享存储器空间的高速缓存服务,且将与所述共享存储器空间相关联的所述存储器对象的所述直接模式属性设定为不同于所述第一值的第二值,以致使停用用于所述共享存储器空间的闻速缓存服务。
11.根据权利要求9所述的装置,其中所述存储器缓冲器接口进一步经配置以将与所述共享存储器空间相关联的一个或一个以上基于硬件的旗标配置为第一值,以致使启用用于所述共享存储器空间的高速缓存服务,且将与所述共享存储器空间相关联的所述一个或一个以上基于硬件的旗标配置为不同于所述第一值的第二值,以致使停用用于所述共享存储器空间的高速缓存服务。
12.根据权利要求7所述的装置,其中所述存储器缓冲器接口进一步经配置以当所述指定是否应启用所述直接模式的信息指定应启用所述直接模式时,针对所述主机装置中的高速缓冲存储器和所述GPU中的高速缓冲存储器中的至少一者启用共享存储器高速缓冲存储器相干模式,且当所述指定是`否应启用所述直接模式的信息指定不应启用所述直接模式时,针对所述主机装置中的所述高速缓冲存储器和所述GPU中的所述高速缓冲存储器中的所述至少一者停用所述共享存储器高速缓冲存储器相干模式。
13.—种设备,其包括: 用于接收包含指定是否应针对可由主机装置以及由图形处理单元GPU存取的共享存储器空间来启用直接模式的信息的指令的装置;以及 用于基于所述指定是否应启用所述直接模式的信息而针对所述共享存储器空间选择性地启用所述直接模式的装置。
14.根据权利要求13所述的设备,其中所述用于针对所述共享存储器空间选择性地启用所述直接模式的装置包括: 用于当所述指定是否应启用所述直接模式的信息指定应启用所述直接模式时致使停用用于所述共享存储器空间的高速缓存服务的装置;以及 用于当所述指定是否应启用所述直接模式的信息指定不应启用所述直接模式时致使启用用于所述共享存储器空间的高速缓存服务的装置。
15.根据权利要求13所述的设备,其中用于针对所述共享存储器空间选择性地启用所述直接模式的装置包括: 用于当所述指定是否应启用所述直接模式的信息指定应启用所述直接模式时针对所述主机装置中的高速缓冲存储器和所述GPU中的高速缓冲存储器中的至少一者启用共享存储器高速缓冲存储器相干模式的装置;以及 用于当所述指定是否应启用所述直接模式的信息指定不应启用所述直接模式时针对所述主机装置中的所述高速缓冲存储器和所述GPU中的所述高速缓冲存储器中的所述至少一者停用所述共享存储器高速缓冲存储器相干模式的装置。
16.一种计算机可读媒体,其包括致使一个或一个以上处理器进行以下操作的指令: 接收包含指定是否 应针对可由主机装置以及由图形处理单元GPU存取的共享存储器空间来启用直接模式的信息的指令;以及 基于所述指定是否应启用所述直接模式的信息而针对所述共享存储器空间选择性地启用所述直接模式。
17.根据权利要求16所述的计算机可读媒体,其中所述致使所述一个或一个以上处理器针对所述共享存储器空间选择性地启用所述直接模式的指令包括致使所述一个或一个以上处理器进行以下操作的指令: 当所述指定是否应启用所述直接模式的信息指定应启用所述直接模式时,致使停用用于所述共享存储器空间的高速缓存服务;以及 当所述指定是否应启用所述直接模式的信息指定不应启用所述直接模式时,致使启用用于所述共享存储器空间的高速缓存服务。
18.根据权利要求16所述的计算机可读媒体,其中所述致使所述一个或一个以上处理器针对所述共享存储器空间选择性地启用所述直接模式的指令包括致使所述一个或一个以上处理器进行以下操作的指令: 当所述指定是否应启用所述直接模式的信息指定应启用所述直接模式时,针对所述主机装置中的高速缓冲存储器和所述GPU中的高速缓冲存储器中的至少一者启用共享存储器高速缓冲存储器相干模式;以及 当所述指定是否应启用所述直接模式的信息指定不应启用所述直接模式时,针对所述主机装置中的所述高速缓冲存储器和所述GPU中的所述高速缓冲存储器中的所述至少一者停用所述共享存储器高速缓冲存储器相干模式。
19.一种图形处理单元GPU,其包括: GPU高速缓冲存储器,其与存储器相关联;以及 一个或一个以上处理模块,其经配置以响应于接收到指定是否应使用高速缓存服务来用于相对于所述存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而选择性地使用所述GPU高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者。
20.根据权利要求19所述的GPU,其中所述一个或一个以上处理模块经配置以响应于接收到指定应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中的所述至少一者的信息而使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者,且响应于接收到指定不应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中的所述至少一者的信息而不使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者。
21.根据权利要求19所述的GPU,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括指定是否针对读取指令和写入指令中的至少一者启用高速缓冲模式的所述读取指令和所述写入指令中的所述至少一者。
22.根据权利要求19所述的GPU,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括与所述存储器空间相关联的存储器对象的直接模式属性,所述直接模式属性指定是否针对所述存储器对象启用直接模式。
23.根据权利要求19所述的GPU,其中所述一个或一个以上处理模块包括GPU高速缓冲存储器控制模块。
24.根据权利要求19所述的GPU,其中所述一个或一个以上处理模块包括总线控制器。
25.根据权利要求19所述的GPU,其中所述GPU包括可编程着色器单元。
26.—种方法,其包括: 响应于接收到指定是否应使用高速缓存服务来用于相对于存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而用图形处理单元GPU的一个或一个以上处理模块选择性地使用与所述存储器相关联的GPU高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者。
27.根据权利要求26所述的方法,其中选择性地使用所述GPU高速缓冲存储器的所述高速缓存服务包括: 响应于接收到指定应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中的所述至少一者的信息而使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者;以及 响应于接收到指定不应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中的所述至少一者的信息而不使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者。
28.根据权利要求26所述的方法,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括指定是否针对读取指令和写入指令中的至少一者启用高速缓冲模式的所述读取指令和所述写入指令中的所述至少一者。
29.根据权利要求26所述的方法,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括与所述存储器空间相关联的存储器对象的直接模式属性,所述直接模式属性指定是否针对所述存储器对象启用直接模式。
30.根据权利要求26所述的方法,其中所述一个或一个以上处理模块包括GPU高速缓冲存储器控制模块。
31.根据权利要求26所述的方法,其中所述一个或一个以上处理模块包括总线控制器。
32.根据权利要求26所述的方法,其中所述GPU包括可编程着色器单元。
33.一种设备,其包括: GPU高速缓冲存储器,其与存储器相关联;以及 用于响应于接收到指定是否应使用高速缓存服务来用于相对于所述存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而选择性地使用所述GPU高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者的>J-U装直。
34.根据权利要求33所述的设备,其中所述用于选择性地使用所述GPU高速缓冲存储器的所述高速缓存服务的装置包括: 用于响应于接收到指定应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中的所述至少一者的信息而选择性地使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者的装置;以及 用于响应于接收到指定不应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中`的所述至少一者的信息而不使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者的装置。
35.根据权利要求33所述的设备,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括指定是否针对读取指令和写入指令中的至少一者启用高速缓冲模式的所述读取指令和所述写入指令中的所述至少一者。
36.根据权利要求33所述的设备,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括与所述存储器空间相关联的存储器对象的直接模式属性,所述直接模式属性指定是否针对所述存储器对象启用直接模式。
37.根据权利要求33所述的设备,其中所述用于选择性地使用高速缓存服务的装置包括GPU高速缓冲存储器控制模块。
38.根据权利要求33所述的设备,其中所述用于选择性地使用高速缓存服务的装置包括总线控制器。
39.根据权利要求33所述的设备,其进一步包括可编程着色器单元。
40.一种计算机可读媒体,其包括致使一个或一个以上处理器进行以下操作的指令: 响应于接收到指定是否应使用高速缓存服务来用于相对于存储器的存储器空间执行读取操作和写入操作中的至少一者的信息而选择性地使用与存储器相关联的图形处理单元GPU高速缓冲存储器的高速缓存服务来相对于所述存储器空间执行读取操作和写入操作中的至少一者。
41.根据权利要求40所述的计算机可读媒体,其中所述致使所述一个或一个以上处理器选择性地使用所述GPU高速缓冲存储器的所述高速缓存服务的指令包括致使所述一个或一个以上处理器进行以下操作的指令: 响应于接收到指定应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中的所述至少一者的信息而选择性地使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者;以及 响应于接收到指定不应使用高速缓存服务来用于相对于所述存储器的所述存储器空间执行读取操作和写入操作中的所述至少一者的信息而不使用所述GPU高速缓冲存储器的所述高速缓存服务来相对于所述存储器空间执行所述读取操作和所述写入操作中的所述至少一者。
42.根据权利要求40所述的计算机可读媒体,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括指定是否针对读取指令和写入指令中的至少一者启用高速缓冲模式的所述读取指令和所述写入指令中的所述至少一者。
43.根据权利要求40所述的计算机可读媒体,其中所述指定是否应使用高速缓存服务来用于相对于所述存储器空间执行读取操作和写入操作中的所述至少一者的信息包括与所述存储器空间相关联的存储器对象的直接模式属性,所述直接模式属性指定是否针对所述存储器对象启用直接模式。
44.根据权利要求40所 述的计算机可读媒体,其中所述GPU高速缓冲存储器包含于包括可编程着色器单元的GPU中。
全文摘要
本发明描述可用于多处理器计算平台内的通信技术。在一些实例中,所述技术可提供可用于在使用命令队列起始任务的多处理器计算平台内支持消息传递的软件接口。在额外的实例中,所述技术可提供可用于多处理器计算平台内的共享存储器处理器间通信的软件接口。在进一步的实例中,所述技术可提供图形处理单元GPU,所述图形处理单元包含用于支持所述GPU与主机CPU之间的消息传递和/或共享存储器通信的硬件。
文档编号H04L29/08GK103119912SQ201180044807
公开日2013年5月22日 申请日期2011年9月19日 优先权日2010年9月20日
发明者阿列克谢·V·布尔德, 科林·克里斯托弗·夏普, 戴维·里赫尔·加西亚·加西亚, 张弛红 申请人:高通股份有限公司