用于增加加速处理装置的带宽的并行数据传送

文档序号:1327716 发布日期:2020-07-14 浏览:4次 >En<

阅读说明:本技术 用于增加加速处理装置的带宽的并行数据传送 (Parallel data transfer for increasing bandwidth of accelerated processing device ) 是由 赛义德·艾尔沙德·拉赫曼 迈克尔·I·赫威兹多斯 里奥尼德·沙米斯 于 2018-09-27 设计创作,主要内容包括:本文描述了用于改善具有多个加速处理装置(“APD”)的系统中的数据传送的技术。在这种系统中,多个APD经由通用互连结构耦接到处理器(例如,中央处理单元(“CPU”)),并且经由高速互连件彼此耦接。本文中的技术通过经由所述互连结构的耦接到每个相应APD的部分向两个APD传输数据来增加用于所述CPU与所述APD之间的数据传送的有效带宽。然后,所述APD中的一个经由所述高速APD间互连件将数据传送到另一个APD或所述处理器。虽然通过所述助手APD“间接”传送数据要比直接传送花费略多的时间进行传送,但是由于所述高速APD间互连件,增加了到目标的总有效带宽。(Techniques for improving data transfer in a system having multiple accelerated processing devices (&#34;APDs&#34;) are described herein. In such systems, multiple APDs are coupled to a processor (e.g., a central processing unit (&#34;CPU&#34;)) via a common interconnect structure and to one another via a high-speed interconnect. The techniques herein increase the effective bandwidth for data transfer between the CPU and the APDs by transmitting data to both APDs via the portion of the interconnect structure coupled to each respective APD. One of the APDs then communicates data to the other APD or the processor via the high speed inter-APD interconnect. While it takes slightly more time to transmit data &#34;indirectly&#34; through the helper APDs than directly, the total effective bandwidth to the target is increased due to the high speed inter-APD interconnect.)

具体实施方式

本文描述了用于改善具有多个加速处理装置(“APD”)的系统中的数据传送的技术。在这种系统中,多个APD经由诸如高速外围部件互连(“PCIe”)等通用互连结构耦接到处理器(例如,中央处理单元(“CPU”))。每个APD用所述互连结构的特定部分(诸如,特定数量的PCIe通道)耦接到处理器。所述结构的每个部分具有其自身的数据特性,诸如最大带宽等(例如,耦接到所述APD中的一个的特定数量的PCIe通道将有特定的最大带宽)。另外,APD经由高速互连件(诸如AMD的芯片间全局存储器互连件(“XGMI”))彼此耦接。

特定APD上的工作可能会受到互连结构的指派部分(诸如,指派给该APD的PCIe连接)的速度的限制。更具体地,可以以比能够通过PCIe连接传送给APD的工作更快速地处理APD上的工作。本文的技术通过在多APD系统中的一个或多个其他APD的协作来增加从CPU到APD和/或从APD到CPU的数据传送的有效带宽。对于写入“目标”APD,所述技术涉及直接将数据传输到目标APD以及通过一个或多个其他APD(称为“助手”APD)间接将数据传输到目标APD。所述一个或多个助手APD然后通过高速APD间互连将数据传输到目标APD。虽然通过助手APD“间接”传送数据要比直接传送花费更多的时间才能传送到目标APD,但是由于高速APD间互连,增加了到目标APD的总有效带宽。对于从“源”APD进行的读取操作,技术是相似的,但是相反。更具体地,所述技术涉及直接以及通过一个或多个助手APD间接从源APD传输数据到处理器。“源”APD(也就是在从处理器102进行的读取操作中涉及的APD)在本文中有时也可称为“目标”APD。

图1是能够实现本公开的一个或多个特征的示例性装置100的框图。装置100可以是但不限于例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话、平板计算机或其他计算装置中的一个。所述装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。所述装置100还包括一个或多个输入驱动器112和一个或多个输出驱动器114。输入驱动器112中的任何一个体现为硬件、硬件和软件的组合或软件,并且用于控制输入装置112的目的(例如,控制操作,从输入驱动器112接收输入,以及向输入驱动器112提供数据)。类似地,输出驱动器114中的任何一个体现为硬件、硬件和软件的组合或软件,并且用于控制输出装置114的目的(例如,控制操作,从输出驱动器114接收输入,以及将数据提供给所述输出驱动器114)。应当理解,示出和描述的装置100是示例,并且可能包括图1中未示出的额外部件,或者可省略图1中示出的一个或多个部件。

在各种替代方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或一个或多个处理器核,其中每个处理器核可能是CPU或GPU。在各种替代方案中,存储器104与处理器102位于相同的管芯上,或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。

存储装置106包括固定的或可移除的存储装置,例如但不限于硬盘驱动器、固态驱动器、光盘或快闪驱动器。输入装置108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、传声器、加速计、陀螺仪、生物特征扫描仪或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。输出装置110包括但不限于显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。

输入驱动器112和输出驱动器114包括一个或多个硬件、软件和/或固件部件,所述一个或多个硬件、软件和/或固件部件被配置成分别与输入装置108和输出装置110介接并驱动所述输入装置108和输出装置110。输入驱动器112与处理器102和输入装置108通信,并且容许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且容许处理器102将输出发送到输出装置110。输出驱动器114包括加速处理装置(“APD”)116,所述加速处理装置116耦接到显示装置118,在一些示例中,所述显示装置118是使用远程显示协议来示出输出的物理显示装置或模拟装置。APD 116被配置成接受来自处理器102的计算命令和图形渲染命令,以处理这些计算和图形渲染命令,并将像素输出提供给显示装置118以进行显示,和/或产生其他输出(诸如存储到存储器的计算结果),和/或产生有关其他操作(诸如媒体编码和解码)的结果。虽然本文将某些类型的工作载荷描述为由APD 116执行,但是本领域技术人员应当理解,APD 116可以替代地或另外地执行其他类型的工作载荷。如下面进一步详细描述的,APD 116包括一个或多个并行处理单元,所述一个或多个并行处理单元被配置成根据单指令多数据(“SIMD”)范例执行计算。因此,虽然本文中将各种功能描述为由APD 116执行或结合APD 116来执行,但是在各种替代方案中,被描述为由APD 116执行的功能另外地或替代地由具有类似功能的其他计算装置执行,所述其他计算装置未被主机处理器(例如,处理器102)驱动并且未被配置成向显示装置118提供图形输出。例如,可以设想的是,根据SIMD范例执行处理任务的任何处理系统可被配置成执行本文所描述的功能。替代地,可以设想的是,不根据SIMD范例执行处理任务的计算系统执行本文所描述的功能。

图2示出了根据示例的装置100和APD 116的细节。处理器102(图1)执行操作系统120、驱动器122和应用126,并且还可替代地或另外地执行其他软件。操作系统120控制装置100的各种方面,诸如管理硬件资源、处理服务请求、调度和控制过程执行以及执行其他操作。APD驱动器122控制APD 116的操作,将诸如图形渲染任务或其他工作等任务发送给APD116以进行处理。APD驱动器122还包括即时编译器,所述即时编译器编译程序以由APD 116的处理部件(诸如,在下面进一步详细讨论的SIMD单元138)来执行。

APD 116执行有关选定功能的命令和程序,诸如可适合于进行并行处理的图形操作和非图形操作。APD 116能够用于基于从处理器102接收的命令执行图形流水线操作诸如像素操作、几何计算以及将图像渲染到显示装置118。APD 116还基于从处理器102接收的命令执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。

APD 116包括着色器引擎131,所述着色器引擎131中的每个包括计算单元132,所述计算单元132包括一个或多个SIMD单元138,所述一个或多个SIMD单元138被配置成根据SIMD范例以并行方式在处理器102(或另一单元)的请求下执行操作。SIMD范例是这样一种范例:多个处理元件共享单个程序控制流单元和程序计数器,并且因此执行相同的程序,但是能够用不同的数据执行该程序。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同的指令,但是能够用不同的数据执行该指令。如果不是所有的通道都需要执行给定的指令,则能够通过断言来关闭通道。断言也能够用于以不同控制流执行程序。更具体地,对于具有条件分支或其他指令的程序,其中控制流基于由单个通道执行的计算,与当前未执行的控制流路径相对应的通道的断言以及不同控制流路径的串行执行实现了任意控制流。

计算单元132中的基本执行单元是工作项。每个工作项代表将在特定通道中并行执行的程序的单个实例。能够在单个SIMD处理单元138上将工作项同时(或部分同时和部分顺序地)作为“波前”来执行。一个或多个波前包括在“工作组”中,所述工作组包括被指定来执行同一程序的工作项集合。能够通过执行构成工作组的波前中的每个来执行工作组。在替代方案中,在单个SIMD单元138上或在不同SIMD单元138上执行波前。波前能够被视为能够在单个SIMD单元138上同时(或伪同时)执行的最大工作项集合。在波前大于SIMD单元138中的通道数量的情况下,发生“伪同时”执行。在这种情况下,波前在多个周期内执行,而工作项的不同集合在不同周期内执行。APD调度器136被配置成执行与在计算单元132和SIMD单元138上调度各种工作组和波前有关的操作。

由计算单元132提供的并行性适合于与图形有关的操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,从处理器102接受图形处理命令的图形流水线134将计算任务提供给计算单元132以并行执行。

所述计算单元132还被用于执行不与图形相关的计算任务或不作为图形流水线134的“正常”操作(例如,所执行的自定义操作,用于补充为图形流水线134的操作执行的处理)的一部分执行。在处理器102上执行的应用126或其他软件将定义这种计算任务的程序传输给APD 116以执行。

图3是示出图2中示出的图形处理流水线134的额外细节的框图。图形处理流水线134包括阶段,每个执行图形处理流水线134的特定功能。每个阶段都部分或完全实现为在可编程计算单元132中执行的着色器程序,或者部分或完全实现为计算单元132外部的固定功能的非可编程硬件。

输入汇编器阶段302从用户填充的缓冲器(例如,在由处理器102执行的软件(诸如,应用126)的请求下填充的缓冲器)中读取图元数据,并且将数据组装成图元,以供流水线的剩余部分使用。输入汇编器阶段302能够基于包括在用户填充的缓冲器中的图元数据而生成不同类型的图元。输入汇编器阶段302使汇编后的图元格式化,以供流水线的其余部分使用。

顶点着色器阶段304处理由输入汇编器阶段302汇编的图元的顶点。顶点着色器阶段304执行各种每顶点操作,诸如变换、蒙皮、变形和每顶点照明。变换操作包括各种变换顶点坐标的操作。这些操作包括修改顶点坐标的建模变换、查看变换、投影变换、透视图划分和视口变换中的一个或多个,以及修改非坐标属性的其他操作。

顶点着色器阶段304被部分或完全实现为将在一个或多个计算单元132上执行的顶点着色器程序。顶点着色器程序由处理器102提供,并且基于由计算机程序员预先编写的程序。驱动器122对这种计算机程序进行编译,以生成具有适于在计算单元132内执行的格式的顶点着色器程序。

外壳着色器阶段306、镶嵌器阶段308和域着色器阶段310一起协作以实现镶嵌,所述镶嵌通过将图元细分来将简单的图元转换成更复杂的图元。外壳着色器阶段306基于输入图元而生成用于镶嵌的补丁。镶嵌器阶段308生成用于补丁的一组样本。域着色器阶段310计算各顶点的对应于补丁的样本的顶点位置。外壳着色器阶段306和域着色器阶段310能够被实现为将在计算单元132上执行的着色器程序,与顶点着色器阶段304一样,所述着色器程序由驱动器122进行编译。

几何着色器阶段312在逐个图元的基础上执行顶点操作。几何着色器阶段312能够执行多种不同类型的操作,包括操作诸如点精灵扩展、动态粒子系统操作、毛-翼片生成、阴影体积生成、单程渲染到立方体贴图、每图元材料交换和每图元材料设置。在一些实例中,由驱动器122编译并在计算单元132上执行的几何着色器程序执行有关几何着色器阶段312的操作。

光栅化器阶段314接受并光栅化从光栅化器阶段314上游生成的简单图元(三角形)。光栅化包括确定特定图元覆盖哪些屏幕像素(或子像素样本)。光栅化由固定功能硬件执行。

像素着色器阶段316基于上游生成的图元和光栅化的结果而计算屏幕像素的输出值。像素着色器阶段316可应用来自纹理存储器的纹理。像素着色器阶段316的操作由像素着色器程序执行,所述像素着色器程序由驱动器122编译并且在计算单元132上执行。

输出合并阶段318接受来自像素着色器阶段316的输出,并将这些输出合并到帧缓冲器中,从而执行诸如z测试和α混合等操作,以确定屏幕像素的最终颜色。

一些计算机系统100包括多个APD 116,所述多个APD 116可协作以渲染图像进行显示。协作的一部分包括在多个APD 116之间传输数据。专用链路(例如,AMD的芯片间全局存储器互连件(XGMI))在多个APD 116之间提供高速互通。

图4示出了根据示例的系统100的配置,所述系统100包括两个APD 116(即,APD116(1)和APD 116(2))以及APD互连件410。APD116(1)经由互连总线404(1)耦接到处理器102。APD 116(2)经由互连总线404(2)也耦接到处理器102。在一些示例中,互连总线是PCIe总线,其中APD 116(1)耦接到与APD 116(2)不同的PCIe通道。互连总线404(1)独立于互连总线404(2)传达数据,这意味着互连总线404(1)的带宽不会被通过互连总线404(2)的数据传送消耗,而互连总线404(2)的带宽不会被通过互连总线404(1)的数据传送消耗。

如本文其他地方所述,APD互连件410在APD 116之间提供数据传送链路。在各种示例中,APD互连件410用于传送数据以渲染图像或用于其他目的,诸如与三维图形渲染无关的目的。在APD互连件410上传送的数据包括数据,诸如像素数据、几何数据或用于渲染图像或执行其他工作(诸如与图形无关的工作)的其他数据。在一些示例中,APD互连件410具有比互连总线404更大的带宽,以允许这种数据的高速传送。

每个APD 116还包括存储器406和存储器控制器408。每个存储器406是“本地于”相应APD 116并且因此与相应的APD 116相关联的本地存储器。在一些实现方式中,与APD 116相关联的存储器406充当用于该APD 116的通用数据存储库,从而提供与未专门与该APD116相关联的存储器(诸如存储器104)相比是有利的访问时序特性。这种存储器406通常存储用于APD 116内的计算单元132、图形处理流水线134和/或其他元件的数据。每个APD 116还包括存储器控制器408。其中,存储器控制器408控制跨APD互连件410和互连总线404两者对存储器406以及APD 116内其他元件的存储器访问。

存储器控制器408控制的一种类型的事务是存储器访问,所述存储器访问指定映射到相关联的APD 116的本地存储器406的系统存储器地址。该系统地址被映射到本地存储器406意味着存储器控制器408将针对系统地址的事务路由到与本地存储器406相关联的装置。在示例中,存储器控制器408通过包括一组寄存器来控制这种存储器事务,所述一组寄存器指示系统存储器地址空间的映射到APD 116的“孔”或部分,以使得互连总线404“知道”将指定孔内的系统存储器地址的存储器事务路由到APD 116。存储器控制器408还包括内部映射,所述内部映射将系统存储器的地址映射到本地存储器406的本地存储器地址。

存储器控制器408能够指定系统存储器中被映射到APD 116(“第一”APD 116)的地址还被映射到不同APD 116(“第二”APD 116)的本地存储器406。例如,PCIe配置寄存器能够指定系统存储器的“属于”APD 116的孔,并且同时,存储器控制器408能够包括在该孔内的所述地址的至少一部分到第二APD 116的本地存储器406的映射。在该实例中,响应于第一APD 116(例如,APD 116(1))接收到指向映射到第二APD 116(例如,APD 116(2))的地址的数据,第一APD 116(例如,APD 116(1))将该数据转发到第二APD 116(例如,APD 116(2))。在一些实现方式中,该转发发生在APD互连件410上。

还能够对APD 116(例如,APD 116(1))的存储器控制器408进行编程,以通过APD互连件410将数据传送到另一APD 116(例如,APD 116(2))。更具体地,处理器102传输配置数据和/或计算机指令,从而使存储器控制器408(例如,存储器控制器408(1))被配置成在接收到针对特定存储器地址的数据时执行传送。当以这种方式配置时,响应于APD 116(例如,APD 116(1))接收到映射到与该APD 116(例如,APD 116(1))相关联的本地存储器406(例如,本地存储器406(1))中的这种特定存储器地址的数据,将该数据写入该本地存储器406(例如,本地存储器406(1))。与该APD 116(例如,APD 116(1))相关联的存储器控制器408(例如,存储器控制器408(1))经由APD互连件410将写入该本地存储器406(例如,本地存储器406(1))的数据复制到另一个APD 116(例如,APD 116(2))。该另一个APD 116(例如,APD116(2))将该数据写入与该另一个APD 116(例如,APD 116(2))相关联的本地存储器406(例如,本地存储器406(2))中。

以上操作也可反方向进行。换句话说,APD 116当然能够将数据传输到处理器102。例如,这种传送能响应于APD 116的请求数据传送到处理器102的写入请求或者响应于处理器102的请求数据传送到处理器102的读取请求而发生。另外,从APD 116到处理器102的传送能够使用一个或多个其他APD 116作为中介。APD能够被配置成以类似于在另一方向上的传送(由处理器102“写入”)的方式用作这种传送(由处理器102“读取”)的中介。更具体地,响应于读取,APD 116能够被配置成将用于写入的数据传送到中间APD 116的存储器,所述中间APD 116被配置成将这种数据转发到处理器102。替代地,APD 116被配置成写入映射到中间APD 116的存储器地址,并且这种中间APD 116被配置成将写入地址映射到处理器102的系统存储器。

如本文所述,APD 116从处理器102接收命令并处理这些命令。在一些示例中,这些命令中的一些包括将三维对象渲染到图像以在屏幕上显示的命令。处理器102还可将其他类型的命令发送到APD 116。在一些操作模式中,两个或更多个APD 116协作以渲染图像以显示在屏幕上。存在针对渲染图像划分工作的各种选项,包括拆分工作在不同的APD 116之间渲染各个图像,将不同的整个帧指派给不同的APD 116,或其他技术。在其他示例中,每个APD 116执行与另一APD 116执行的工作无关的至少一些工作,和/或一个或多个APD 116执行与3D图形无关(即,与渲染工作无关)的工作。

还可能的是,虽然计算机系统内存在两个或更多个APD 116,但是在计算机系统上执行的软件未被设计成利用多个APD 116。在示例中,编写应用以将渲染命令(和/或其他类型的命令,诸如用于执行计算着色器的命令)和用于处理的数据传送到单个APD 116。有时以这种方式编写应用,因为开发人员缺少资源或不希望花费资源来配置应用以利用多个APD 116。还可能的是,系统中存在的两个或更多个APD 116在相应的互连总线404上消耗不同的带宽量,甚至在APD 116被用于一定工作量时的情况下。例如,第一APD 116上的工作可能受到互连总线404的带宽的约束,而第二APD 116(和/或第三APD 116、第四APD 116等)上的工作不受互连总线404的带宽的约束,这意味着与第二APD 116相关联的互连总线404上存在多余带宽。

无论出于何种原因,耦接到一个APD 116的互连总线404的带宽有可能未被充分利用,而耦接到另一APD 116的互连总线404被更多地利用或充分利用。因此,图5A到图5C示出了用于利用一个APD 116来改善另一APD 116的功能的技术。具体地,图5B到图5C示出了“助手”APD 116协助利用高速APD互连件410以将数据传输到“目标”APD 116的技术。应当注意,虽然示出了单个“助手”APD 116,但是本文描述的技术可扩展到系统,其中使用多个助手APD 116来增加“目标”APD 116的有效带宽。出于说明性目的,并且为了简化解释的原因,图5A到图5C中示出的操作是这种操作:其中将一大组数据(数据传送1和数据传送2的累积)传送到目标APD以进行处理,并且其中APD处理仅能够在已经接收到所有所述数据后才开始处理。然而,应当理解,本文所述的用于增加处理器102与APD 116之间的有效带宽的技术不限于这种情况,并且能够在助手APD可用时(即,具有多余带宽)的任何时间使用。

图5A示出了时序图500,其中未使用助手APD 116来帮助目标APD 116。更具体地,时序图500示出了时序行510。时序行510示出了由第一APD 116执行的三个操作,所述第一APD 116在图5A中标记为APD 0(在图5A中未示出用于助手APD的时序行)。标记为数据传送1的第一操作对应于将第一组数据从处理器102传送到第一APD 116。该第一数据传送花费由互连总线404的数据传送特性(诸如带宽和数据量)规定的一定量的时间。还进行被标记为数据传送2的第二数据传送。数据传送2对应于从处理器102到第一APD 116的第二组数据的传送。因为在数据传送1期间消耗了基本上所有的数据传送资源(例如,带宽),所以数据传送2在开始之前等待直到数据传送1基本完成为止。在一个示例中,互连总线404包括PCIe连接的一个或多个通道,并且数据传送1在包括在互连总线404中的所有PCIe通道上发生,因此所述PCIe通道不可用于数据传送2。示出了APD处理在数据传送2的右边,这指示APD处理在数据传送2之后发生。换句话说,直到数据传送2完成之后才开始进行APD处理。当然也可能在此之前开始APD处理。然而,图5A示出了数据传送串行地发生,并且因此,数据传送1和数据传送2两者都需要最少的时间量来传送数据。

图5B示出了有关示例性技术的时序图530,其中数据被传送到两个APD 116中的每个,并且然后APD 116中的一个经由高速APD互连件410将接收到的数据传送到另一个APD116。APD 116中的一个被称为“目标APD”,图示为“APD0”,并且是由应用指定来执行工作(诸如涉及数据的渲染工作)的APD。另一个APD 116被称为“助手APD”,图示为“APD1”,并且是被指定来帮助将数据传送到目标APD以执行工作的APD。

在图5B的技术中,处理器102在重叠的时间段内将数据传输到APD0和APD1两者。更具体地,应用126向驱动器122提供命令和数据,以传输到目标APD以进行处理(例如,通过调用由驱动器122提供的应用编程接口的功能)。应用126未指定将使用一个以上APD 116来处理命令和数据。作为响应,驱动器122将数据传送到助手APD和目标APD两者,并且配置助手APD以将助手APD接收的数据传送到目标APD。更具体地,驱动器122将由应用126指定的数据和命令拆分成两个(或更多个,取决于参与的APD的数量)部分,将一个部分传输给目标APD,并将另一部分传输给助手APD(或将其他多个部分传输到多个助手APD(如果存在))。助手APD(或如果存在多个,则为多个APD)通过APD互连件410将该另一部分传输到目标APD。

在图5B中,所述技术包括将数据写入助手APD的本地存储器406,并且然后将数据从助手APD的本地存储器复制(例如,通过存储器控制器408)到目标APD。为了执行该复制,驱动器122配置所述助手APD,以使得响应于从处理器102接收到数据,助手APD将该数据复制到目标APD。在各种示例中,驱动器122通过在助手APD中设置配置寄存器、传输固件指令以这种方式或以任何其他技术上可行的方式配置助手APD。

如行540中所示,数据传送1在第一时间期间发生。数据传送1包括通过互连总线404将数据传送到APD0,即目标APD。另外,如行550中所示,数据传送2发生的时间段与发生数据传送1的第一时间重叠。与第一时间重叠的时间段意味着数据传送1的至少一些与数据传送2在相同时间发生。在一些示例中,数据传送1的大部分在时间上与数据传送2重叠。在一个示例中,驱动器122将指定要传送给目标APD的数据大致拆分成两半。在这种情况下,假设用于两个APD的互连总线404具有相似的传输特性(例如,相似的带宽等),则用于传输大致拆分成两半的数据的时间量大致相等。

应当注意,因为耦接到两根不同APD 116的互连总线404是独立的,所以在一根互连总线404上消耗的带宽不消耗另一互连总线404上的任何带宽的意义上,对于目标APD和助手APD两者,数据传送可独立地且同时地发生。换句话说,在处理器102将第二数据传输到助手APD的同时,处理器102将第一数据传输到目标APD。因此,图5A中示出的数据的串行传送不会发生。当然,传输给助手APD的数据仍必须传送到目标APD。然而,这通过APD互连件410发生。如果通过APD互连件410的数据传送速度高于通过互连总线404的数据传送速度,则在图5B的技术中传送到目标APD的数据和传送到助手APD的数据两者的传送所需的总时间比在图5A的技术中传送两种数据所需的总时间要短。

图5C示出了有关另一示例性技术的时序图5C,其中数据被传送到两个APD 116中的每个,并且然后APD 116中的一个将接收到的数据传送到另一个APD 116。与图5B一样,图5C的讨论涉及接收并处理来自处理器102的数据的APD 116作为“目标APD”,所述“目标APD”在图5C中指示为APD0。另外,图5C的讨论涉及帮助将数据传送到目标APD的APD 116作为“助手APD”,所述“助手APD”在图5C中示出为APD1。

与图5B的技术一样,在图5C的技术中,应用126向驱动器122提供命令和数据,以传输到目标APD进行处理(例如,通过调用由驱动器122提供的应用编程接口的功能)。应用126未指定将使用一个以上APD 116来处理命令和数据。作为响应,驱动器122将数据传送到助手APD和目标APD两者,并且配置助手APD 116以将助手APD接收的数据传送到目标APD。更具体地,驱动器122将由应用126指定的数据和命令拆分成两个(或更多个,取决于参与的APD的数量)部分,将一个部分传输给目标APD,并将另一部分传输给助手APD(或将其他多个部分传输到多个助手APD(如果存在))。助手APD(或如果存在多个,则为多个APD)通过APD互连件410将该另一部分传输到目标APD。

然而,与图5B的技术不同,在图5C的技术中,代替将数据写入助手APD的本地存储器406中,助手APD的存储器控制器408将从处理器102接收的数据转发到目标APD。为了执行该转发,驱动器122配置所述助手APD,以使得响应于从处理器102接收数据,助手APD将该数据转发到目标APD。更具体地说,驱动器122配置助手APD的存储器控制器408,以使得某些系统存储器地址映射到目标APD的本地存储器406内的存储器位置。由于该映射,当助手APD116接收到指向某些存储器地址的数据时,存储器控制器408将该数据转发到助手APD,以将该数据写入目标APD的本地存储器406中的映射了某些存储器地址的位置处。在各种示例中,驱动器122通过在助手APD中设置配置寄存器、传输固件指令以上述方式或以任何其他技术上可行的方式配置所述助手APD以转发数据。

如行570中所示,数据传送1在第一时间期间发生。数据传送1包括通过互连总线404将数据传送到APD 0,即目标APD。另外,如行580中所示,数据传送2发生的时间段与发生数据传送1的第一时间重叠。术语“重叠”具有与上述图5B的技术相似的含义。在示例中,驱动器122将数据大致拆分成两半,并且将每一半传输到助手APD和目标APD中的不同的一个,以使得这种数据在大约相同的时间被并行传输。行570还示出了在数据传送1和数据传送2发生的时间段之后,针对已传送的数据的APD处理开始。与图5B的技术一样,在图5C的技术中,不会发生数据1和数据2的串行传送,因为这两个数据块是在两根不同的互连总线404上以重叠的时间段传送的。

应当注意,在图5B中,“XGMI”区段(表示从APD1到APD0的数据副本)被示出为消耗了一定时间量,而在图5C中未示出对应的耗时操作。这种差异意在说明,通常而言,由于将地址映射到APD0的本地存储器406而将数据从APD1转发到APD0会消耗较少的时间,或甚至很少或没有时间开销,因为这种转发操作与图5B的复制操作相比时间开销要少得多。更具体地,图5B的复制操作与两个不同的存储器操作相关联,并且要求数据首先被存储在助手APD的本地存储器406中,并且随后将这种数据读取并传送到目标APD。图5C的转发操作不涉及在将该数据传输到目标APD之前将所传送的数据存储到助手APD的本地存储器406中。

还应当注意,虽然在图5A到图5C中示出了特定的时序,但是在实际操作中,该时序不一定看起来如图所示。具体地,数据可能以流水线方式“滚动”到APD中,这意味着APD处理和数据传送可能会在重叠的时间段内发生。另外,虽然示出数据在重叠的时间段内被传送到目标APD和助手APD,但是数据也可能不是在重叠的时间段内传送的。因此,图5A到图5C并不意图示出确切的时序。而是,这些附图意在说明与仅使用了一根互连总线404相比,能够使用多根互连总线404以更高的速率将数据传送到APD的“集群”或“集合”。此外,这些附图意在说明APD的“集群”或“集合”能够利用APD互连件410将接收到的数据传输到目标APD以进行处理。因为耦接到APD116的高速APD互连件410比互连总线404快,所以与不利用跨多根互连总线410的并行传送的情形相比,能够减少从处理器102到在数据上执行工作的目标APD的数据传送所需的总时间量。

对于图5B或图5C中的任何一个,在示例性实现方式中,互连总线404中的每一者是多个PCIe通道。如果通过这些PCIe通道将数据传送到仅一个APD而不使用另一APD,则用于传输该数据的时间将受到PCIe通道的带宽限制。通过将数据传输到两个APD,利用额外的PCIe带宽进行数据传送。虽然确实需要将传送到助手APD的数据传送到目标APD,但是这种传送是通过APD互连件410(同样可能是能够在APD 116之间传送数据的AMD的XGMI接口或任何其他接口类型)完成的,所述APD互连410比互连总线404快。因此,与不使用助手APD的配置相比,减少了将数据传送到目标APD所需的总时间量。

图6A是根据示例的用于使用助手APD将数据传输到目标APD以进行处理的方法600的流程图。虽然相对于关于图1到图5C描述的系统进行了描述,但是应当理解,被配置成以任何技术上可行的顺序执行方法600的步骤的任何系统都落入本公开的范围内。

如图所示,方法600在步骤602开始,其中处理器102(例如,在驱动器122的指导下)将数据传送到目标APD 116。如上所述,使用耦接在APD 116与处理器102之间的互连总线404进行该传送。在一些实现方式中,互连总线404包括一个或多个PCIe通道,并且具有指示能够通过互连总线404传送的每单位时间的数据容量的特征带宽。在一些实现方式中,通过将存储器地址指定为目标来执行向目标APD的数据传送,其中所述存储器地址被映射到目标APD的本地存储器406的存储器地址。然后,数据流通过互连总线404传输到本地存储器406。

在步骤604,处理器102(同样,例如在驱动器122的指导下)将数据传送到助手APD。如上所述,该传送可能与步骤602的传送部分或完全同时发生。另外,该传送也通过互连总线404发生。步骤604的传送致使数据被存储在助手APD的本地存储器406中。

在步骤606,助手APD通过高速APD互连件410将接收到的数据复制到目标APD。在步骤608,目标APD用经由助手APD直接和间接地从处理器102接收的数据执行工作。

图6B是根据另一示例的用于使用助手APD将数据传输到目标APD以进行处理的方法650的流程图。虽然相对于关于图1到图5C描述的系统进行了描述,但是应当理解,被配置成以任何技术上可行的顺序执行方法650的步骤的任何系统都落入本公开的范围内。

如图所示,方法650在步骤652开始,其中处理器102(例如,在驱动器122的指导下)将数据传送到目标APD 116。如上所述,使用耦接在APD 116与处理器102之间的互连总线404进行该传送。在一些实现方式中,互连总线404包括一个或多个PCIe通道,并且具有指示能够通过互连总线404传送的每单位时间的数据容量的特征带宽。在一些实现方式中,通过将存储器地址指定为目标来执行向目标APD的数据传送,其中所述存储器地址被映射到目标APD的本地存储器406的存储器地址。然后,数据流通过互连总线404传输到本地存储器406。

在步骤654,处理器102(同样,例如在驱动器122的指导下)将数据传送到助手APD。如上所述,该传送可能与步骤602的传送部分或完全同时发生。另外,该传送也通过互连总线404发生。步骤604的传送不会致使数据被存储在助手APD的本地存储器406中,因为由于存储器地址被写入以映射到目标APD的本地存储器406,助手APD被配置成将数据转发到目标APD。

在步骤656,助手APD通过高速APD互连件410将接收到的数据转发到目标APD。在步骤658,目标APD用经由助手APD直接和间接地从处理器102接收的数据执行工作。

在一些实现方式中,对于图5B和图5C(以及图6A和图6B)的技术中的任何一个或两者,驱动器122监测耦接到助手APD的互连总线404的带宽使用,并且基于所述监测机会性地使用助手APD来将数据传送到目标APD。例如,响应于检测到耦接到助手APD的互连总线404上有一些带宽可用,驱动器122将去往目标APD的一些数据传输到助手APD以便后续传输(无论是通过复制两次技术或转发技术)到目标APD。当无带宽可用时,驱动器122不执行该操作。当更多带宽变得可用时,驱动器122可将更多数据传输到助手APD以传输到目标APD,并且可响应于检测到较少的带宽可用而减少传输到助手APD的数据量。机会地使用助手APD的可用带宽来增加目标APD的有效带宽的技术可用于读取、写入或双向传送。另外,虽然有时在本文中描述为涉及两个APD 116(即,助手APD和目标APD),但是所述技术可与两个以上APD 116一起使用,其中多个APD 116充当单个目标APD的“助手”。另外,没有必要将任何特定的APD 116静态地指定为助手APD或目标APD。在示例中,驱动器122监测互连总线404上的带宽。在示例中,如果驱动器122检测到与特定APD 116的互连总线404上存在多余带宽,所述特定APD 116具有与目标/源APD的APD互连件410连接,有数据要写入所述目标/源APD或有要从所述目标/源APD读取的数据,驱动器122致使数据中的至少一些经由具有多余带宽的互连总线404和与该互连总线404相关联的助手APD被写入目标/源APD或从目标/源APD读取。驱动器122能够以这种方式使用具有多余带宽的多个助手APD来致使数据被传送。

在本文提供的公开中,进行各种参考来将数据从作为源的处理器(例如,处理器102)传送到作为目的地的“目标APD”。因此,本文描述的技术用于将数据从处理器写入APD116。本文描述的技术还可以用于从APD 116读取数据。对于读取,上述技术将被颠倒。更具体地,为了使用除APD 116与处理器102之间的直接连接之外的路径从APD 116读取数据,处理器102将向目标APD 116传输读取数据的请求。然后,目标APD 116将以与本文中其他地方所描述的技术一致的方式,通过助手APD 116将所请求的数据中的至少一些间接传输到处理器102。更具体地,助手APD 116可被配置成以类似于图6A中示出的技术的方式将从源APD116接收的数据复制到与处理器102相关联的存储器(例如,系统存储器104),或以类似于图6B中示出的技术的方式将从源AP 116接收的数据转发到与处理器相关联的存储器(例如,系统存储器104)。根据以上方法读取数据和写入数据可同时发生或不同时发生。

另外,虽然已经将本文提供的技术描述为使用本文描述的APD 116作为示例来执行,但是该技术也可扩展为由除APD 116以外的装置来执行。根据本文所述的技术,该技术可由能够传送数据的任何装置使用。

在本文描述的技术中的任何一个中,从处理器102传送到目标APD 116或从源APD116传送到处理器102的数据可源自单个缓冲器或源自多个缓冲器。在示例中,“单个缓冲器”是指存储器的单个连续部分,特定操作或相关操作集的结果置于所述单个连续部分中。因此,多个缓冲器是指存储器的多个不同部分,所述多个不同部分彼此可相邻或可以不相邻,并且存储由于多种类型的操作而生成的数据,或者存储由单个类型的操作所生成的不同类型的数据。在确定如何以并行方式将数据发送到不同的APD时,驱动器122可将数据从不同的缓冲器发送到不同的APD以传输到目标APD,或者可拆分各个缓冲器并经由不同的APD将拆分的缓冲器的不同部分发送到目标APD。虽然被描述为向APD的传输,但是以上数据划分技术也适用于读取操作。换句话说,驱动器122可控制源APD以将单个缓冲器划分为多个部分,以经由不同的路线(例如,直接通过互连总线404以及间接地通过一个或多个APD互连件410)传输到处理器102,和/或可致使源APD维持每个缓冲器而不是拆分缓冲器的完整性,但是是通过不同的路线(同样,例如直接通过互连总线404以及间接通过一个或多个APD互连件410)将数据从不同的缓冲器传输到处理器102。

关于使缓冲器解体,驱动器122可使用多种因素中的任何一个来确定是否将缓冲器解体,以及确定如何传输解体的缓冲器的不同部分。具体地,驱动器122可确定与拆分缓冲器相关联的开销对于要拆分的缓冲器而言太大,并且在这种情况下,不会致使缓冲器解体。同样,如上所述,驱动器122监测各种总线(例如,互连总线404和APD互连件410)上的多余带宽,以识别多余带宽从而用于增加APD与处理器之间的传送的有效带宽。

应当理解,基于本文的公开内容,许多变化是可能的。虽然上面以特定的组合描述了特征和要素,但是每个特征或要素能够单独使用而无需其他特征和要素,或者以具有或不具有其他特征和要素的各种组合使用。

所提供的方法能够在通用计算机、处理器或处理器核中实现。合适的处理器例如包括通用处理器、专用处理器、常见处理器、数字信号处理器(DSP)、多个微处理器、与DSP核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。能够通过以下方式制造这种处理器:使用处理后的硬件描述语言(HDL)指令的结果和其他中间数据(包括网表)(这种指令能够存储在计算机可读介质上)来配置制造过程。这种处理的结果可能是遮罩,所述遮罩然后被用于半导体制造过程中以制造实现本公开的特征的处理器。

本文提供的方法或流程图能够在并入非暂时性计算机可读存储介质的计算机程序、软件或固件中实现,以便由通用计算机或处理器执行。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质以及诸如CD-ROM盘和数字通用光盘(DVD)等光学介质。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于管理对输入栏的数据输入的电子设备和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!