CN103198512B - 用于多处理器系统中的输出的多级采集器 - Google Patents
用于多处理器系统中的输出的多级采集器 Download PDFInfo
- Publication number
- CN103198512B CN103198512B CN201210350398.2A CN201210350398A CN103198512B CN 103198512 B CN103198512 B CN 103198512B CN 201210350398 A CN201210350398 A CN 201210350398A CN 103198512 B CN103198512 B CN 103198512B
- Authority
- CN
- China
- Prior art keywords
- collector
- output
- data
- index
- calculating
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及用于多处理器系统中的输出的多级采集器。处理元件可以(每一个或整体上)包括多个群集,具有一个或多个ALU,可根据用于配置ALU的指令流对数据矢量执行SIMD操作并产生输出。多级采集器可包括替代组件,每一个具有至少一个输入队列、存储器、封装单元以及输出队列;这些组件可被调整尺寸以处理给定尺寸的输入元素的群组,并且可以具有多个输入队列和单个输出队列。某些组件耦合以接收来自ALU的输出,而其他接收来自其他组件的输出。最终,多级采集器可以输出输入元素的群组。每个元素群组(例如,在输入队列处,或被存储于组件的存储器)可以基于索引元素的匹配而被形成。
Description
相关申请的交叉引用
本申请是于2011年9月16日提交的美国临时专利申请号61/535,487、名为“Multistage Collector for Outputs in Multiprocessor Systems”的非临时性申请,在此通过引用并入该申请本文以用于各种目的。
技术领域
本发明涉及用于多处理器系统中的输出的多级采集器。
背景技术
通过光线跟踪从3D场景描述中生成具有照片真实感的2D图像,是计算机图形领域中一项公知的技术。已知光线跟踪可产生照片真实感的图像,包括真实的阴影和光照效果,因为光线跟踪可以对光线与场景元素交互的物理行为进行建模。光线跟踪通常涉及获取由几何形状构成的场景描述,其描述场景中结构的表面,并且可称为基元(primitive)。三角形就是一个常见的基元形状。物体可由一个或多个这些基元组成,它们也可以包括数千甚至数百万个基元。场景一般含有许多物体。因此,显示器和将要在其上显示的媒体的分辨率也需要相应增加。光线跟踪需要以不同的数据多次重复某些计算(如,相交测试),并对标识的射线交点执行专用代码(“描影”)。
光线跟踪计算可以在被绘制的帧的像素级别被相对较易地并行化,因为这些计算许多都彼此独立,或者具有被良好表征的依存性。但是,计算的其他部分并不那么容易被并行化。更广义地说,光线跟踪是受益于处理吞吐量实际增长的各种工作负载中的一个示例工作负载。因此,提供不同的计算架构及其组件一直是是促成这些目标的研发活动的活跃领域。
发明内容
在某些方面,系统、组件和方法解决在计算期间具有输入的并行计算架构的馈送,在该计算中输入取决于先前计算的输出。在某些方面,并行计算架构可以包括一个或多个计算单元,每个都包括一个或多个SIMD处理单元。在SIMD处理单元内,数据元素的矢量被并行处理。在SIMD单元之间以及在计算单元之间,控制线程可以是不同的。在某些方面,在任何给定时刻在特定SIMD单元内执行的操作(例如,指令)可以从多个候选控制线程中选择。在某些实施中,控制线程的改变可以在逐个时钟的基础上进行。在某些方面,特定SIMD单元处理的数据元素可以作为一个群组被取回,其他的数据元素由其他SIMD单元处理。在某些示例中,多个SIMD单元可以利用特定的控制线程并且在不同的执行阶段(如各自执行提供给它们的多个数据元素)被加载,使得来自计算单元的计算结果随着时间进展是可获得的,并且所公开的方面允许采集和形成可以在计算元素中的进一步计算期间使用的数据元素的进一步群组(或群组的标识)。
附图说明
图1是与多个计算单元耦合的多级输出采集器的示意图;
图2描绘根据这些公开的多级输出采集的其他方面;
图3是在根据图1-图2的架构中采用的采集器元件(“采集器”)的示例框图;
图4描绘采集器的示例操作;
图5描绘一个这样的示例,在该示例中开关可以将一个输出与选择的输入耦合,并且可以在这里的某些示例中的多个采集器之间切换;
图6描绘一个示例,在该示例中采集器可具有多对一的输入输出比,其中输入实质上可以是硬接线的,并且输入能够生成停顿(stall)条件以便对去往输入的写进行仲裁;
图7描绘可由采集器执行的示例过程流;
图8描绘是根据此公开的采集器的另一示例性视图;
图9和图10描绘在本公开的实现中可由采集器执行的其他示例过程;
图11描绘可以使用根据此公开、可使用多级采集的示例系统架构;以及
图12和图13描绘采集器的其他示例以及它们彼此之间的潜在相关性。
具体实施方式
随着半导体继续缩放到更低级别的几何体,理论时钟速度和晶体管计数继续增加。但是已经发现,尝试利用乱序执行指令的能力将整个晶体管预算用于单个处理器内核(例如,精细粒度流水线处理器)不能保持在合理的功率预算内,而且会导致设计和制造方面的许多其他挑战。因此,计算架构已寻求通过增加并行性提高计算能力。现存多种并行计算方法,包括单指令多数据(SIMD)和多指令多数据(MIMD)计算机及其组合。
始终获得关注的一个领域是如何细分给定的计算任务以利用并行计算资源。在某些方面,以下内容涉及允许对计算任务实现较精细粒度细分的计算的方法、组件和系统,从而支持对这种计算任务的更为有效的执行,这例如是通过改进较精细粒度任务的调度能力以及允许更宽的计算架构处于饱和来实现的。但是,较精细粒度的并行性可能产生数据管理问题,因为可能需要高效地管理数据的多个离散部分。因此,在某些方面,这些公开内容提供了可以在用于为较精细粒度并行性的这种数据管理中使用的示例。
单指令多数据(SIMD)计算可以提供一种方法,用于提高处理器内的计算并行性,而不会复制处理器的所有部分。例如,多个ALU可共享单个指令解码器和调度器、一个指令缓存和存储器接口。多指令多数据(MIMD)可提供方法在单个芯片上安装多个冗余内核。MIMD计算机可配备SIMD组件。不论给定的晶体管预算或给定的计算机架构如何组织,计算组件最终需要完成任务和安排新任务。其他考虑包括实施给定设计所需的互连数目以及所需的全局同步数目。
以下内容描述能够提供实用方法实现计算任务的更大处理批量和较细粒度并行性的组件、方法和系统示例。在某些实施中,可将编程工作负荷分割为更细的分立部分(每个部分可给定最少两个元件),实现更细的粒状并行性。在某些实施中,第一个元件可指示要执行的配置或程序和在该等执行中使用的第一个数据集,另一个元件可指示用于该等计算的第二个数据元素。就光线跟踪而言,数据元素可指示要测试的与光线相交有关的形状。此外,通过给定形状,可以隐含方式标识要操作的程序。例如,对于包围体,需要针对所用类型包围体的相交测试程序。
在某些实施中,公开的结构和方法可允许多个计算单元执行一个或多个控制线程,每个控制线程可产生一个或多个输出。在某些情况下,每个控制线程均可在由多个元素组成的数据矢量上操作。在某些情况下,控制线程可竞争一个矢量的某些数据元素(但不竞争其他数据元素),并通过计算单元的输出提供结果。多级采集器可将这些结果采集到集合中,这些集合最终用于定位或产生计算单元的输入(如,数据元素的新矢量)。在计算单元之间,还希望计算单元能够以与其他计算单元异步的方式产生或输出计算结果(例如,下述的组件可与计算单元异步,计算单元无须在单个控制线程内执行相同的指令,不同的计算单元可在一个数据窗口内操作,以便不同的计算单元能够以相同的控制程序处理不同的数据元素,或者计算单元能够以不同的控制线程操作)。不同的实施可能具有不同程度或特征的异步行为,本文所述的采集架构示例和实施能够提供可扩展的方法增加数据并行性。
图1描绘包括多个计算单元(例如单元21、22和23)的示意性系统架构10的示意图。每个计算单元21-23可以以与其他计算单元异步的方式产生各自的输出25。这些输出可在程序执行期间由计算单元产生。某些类别的输出示例将在下文更详细描述。
来自每个计算单元的异步输出25分别由采集器25、26和27采集(每个计算单元对应的采集器通过示例描述,但这并非限制,因为一个采集器可同时为多个计算单元服务,或者多个独立的采集器只为一个特定的计算单元服务)。计算单元与采集器单元之间耦合的一种考虑是:每个采集器单元将耦合以接收来自至少一个计算单元的输出。例如,输出可通过采集器与计算单元之间的点到点连接获得。为简化起见,本公开内容假定采集器与计算单元之间保持1∶1的对应关系。
来自计算单元的输出的每个实例可由接收此类输出实例的采集器独立地采集。这样,当输出分别由各自耦合的计算单元提供时,采集器25、26和27可分别接收这些输出。在一个特定示例中,每个输出实例可包括一个索引元素以及一个或多个关联数据元素。为便利起见,一个索引元素以及一个或多个关联数据元素的群组在本文中称为包。因此,一个包包括索引元素以及与该索引元素关联的一个或多个关联数据元素的组合。
如下文详述,每个采集器所执行的一个任务是在其一个或多个输入上监视新包;当有新的输入时,采集器将提取索引元素,标识索引元素是否存在于该采集器所控制的缓冲中;若是,它会将来自包的数据元素附加到存储于缓冲中且与索引元素关联的数据元素上。
作为示例,采集器25包括多个现有集合,其中两个集合分别与键31和键32关联,类似地,采集器26具有与键33和34关联的集合,采集器27具有与键35和36关联的集合。垂直的虚线(如,线28)表示可能存在其他计算单元,采集器可分别为这些计算单元提供服务。如下文所述,采集器之间的互操作和数据交换将产生逐渐变大的数据元素集合,每个集合都与特定索引元素关联。
在一个示例中,每个采集器可操作给定尺寸或者最大尺寸的数据量。例如,采集器25-27每个可操作以接受来自计算单元的数据,该数据包括宽度最多为此类计算单元中的SIMD矢量的宽度的数据矢量。在一个示例中,这些输出可只包含一对索引元素和关联数据矢量,而在其他示例中,这些输出可包括多个由索引元素和关联数据矢量组成的配对。
一般而言,每个采集器都能够执行标识将要输出到下游采集器的索引元素和关联数据元素群组的任务。每个采集器能够通过一组启发式算法来执行该任务,诸如跟踪每个集合中的多个数据元素、监视缓冲的充满度以及接收来自上游和下游采集器的指示。在索引元素与数据元素之间的已存储关联从缓冲被排出后,为便利起见,将其称为包(packet),即使它很可能包含相同的数据。如下文所述,采集器可与队列互连,或者它们可以具有少量或者没有对采集器之间通信进行调制的临时存储。例如,在采集器之间,队列可存储单个包,或者在某些实施中存储多个包。
返回到图1,图1描绘架构10,其包括多层采集器,每个采集器都从一个或多个上游采集器采集输出。每个采集器操作的包尺寸在下游可增大。例如,采集器25可采集与键31关联的特定集合中的最多16个数据元素,这些数据元素能够达到来自计算单元21的16个离散输出,这些输出与计算单元21的其他输出在时间上是交错的。响应于检测到与键31关联的集合中出现该数目的数据元素,采集器25可以将代表键31的数据和那16个数据元素输出。
根据图1,该架构的特点可以这样来解释:参考与键31关联的集合中的包元素38,并且同与键51关联的集合中的包元素39进行比较。特别地,包元素38和包元素39可分别代表其所在的采集器的离散化输入,并且可以具有不同尺寸或代表不同数目的数据元素。
在图1的示例架构中,每个计算单元都与其相应的采集器耦合,并且这些采集器通过一个或多个中间采集器将来自计算单元的输出漏斗式传输(funnel)渐大的集合58,最终达到输出包队列60。因此,输出包队列60将包含来自系统中的所有计算单元且根据那些离散化输出初始提供的各个索引元素组合成包的离散化输出。
响应于可以包括确定特定集合的充满度、来自下游采集器的回压(backpressure)信息以及可能提供的其他调谐参数的各种输入,每个采集器可独立操作以确定何时应将集合从各自的本地缓冲中排出。在其他实施中,可提供控制器50向采集器指示何时应排出集合。取决于实施,控制器50还可(例如)向特定采集器指示应为之排出集合的优选索引元素。
每个采集器都可以由各自的时钟信号来提供时钟。在某些实施中,所有采集器可由单个参考时钟提供时钟,而在其他实施中,可调整参考时钟,为不同的采集器提供输入。例如,靠近计算单元的采集器的时钟频率可以高于较下游的采集器。用作多个垂直有别的输入端口的输入可在更少的物理连接元件上作为多工数据传输实施,可包括(例如)可供采集器的同一输入端口接收的来自不同计算单元的各个输出的分时多工。
图2描绘图1介绍的采集器架构的其他方面。在图2,计算单元21-23向以虚线框标识的采集器提供输出,每个采集器都具有数据元素及其相关索引元素集合。给定的索引元素可同时存在于多个采集器,如键160所示。图2显示,接收来自计算单元的输出的采集器继而产生被下游采集器采集的输出。例如,与多个采集器中的键160关联的独立数据元素被级联在集合中。
图2还描绘了给定的输出块尺寸可以是输入块尺寸的倍数。但是,即使采集器能够处理给定的输入或输出块尺寸,并不要求输入和输出必须采用这样的尺寸设置。图2显示,包含给定索引元素和关联采集数据元素的包可反馈会计算单元21-23。在一个示例中,索引元素可用作标识要执行的程序的基础,数据元素可包含要在计算单元中执行该程序时使用的数据(或数据值)参考。程序可以是任何序列的指令或对控制计算单元21-23有用的其他配置信息。
图3描述了图1和图2介绍的采集器的示例构造。示例采集器包括输入队列210、与存储器216连接的封装器214、输出队列218和集合管理逻辑212。输入队列210耦合至一个或多个计算单元的输出或者其他采集器的一个或多个输出队列中的输出。输入队列210中的数据存在处理会触发封装器214对该等数据进行获取,该封装器可标识数据中的索引元素并将索引元素与存储器216中与该索引元素关联的潜在集合匹配。图3的示例构造在采集器之间设有一些缓冲。该等缓冲可作为队列(如FIFO)实施。
图4描述图1-3中介绍的采集器的示例操作,在操作过程中,封装器214将基础集合234从采集器的存储器获取出来,并将它与通过一个或多个输入队列或输入事务处理接收的数据元素236和238组合起来。在本公开内容的上下文中,图4描述了这样一种情况:与数据元素236和238一起提供的索引元素被发现与获取的基础集合234的关联键匹配。封装器214输出结果集合240,该集合可再次保存在存储器216。接收的数据元素组内包含的多个数据元素可不同。例如,接收的数据元素236显示为包含两个数据元素,而数据元素238显示为包含一组数据元素。获取的基础集合234与接收的数据元素236和238组合起来,形成结果集合240,该集合保存到存储器216。
图5描述一个架构实施选择,其中给定采集器输出275可由开关274在两个不同的下游采集器的输入276和277间分割(未完全描述)。该开关可由中央控制逻辑50控制,控制位279也可由输出275传递以便允许对该开关的控制。该开关元件可用于将具有特定索引元素的包指向特定采集器。该开关元件还可用于节省布线(如,通过对连接不同采集器的数据路径提供多工)。
图6描绘了采集器能够以相对较低的复杂性实施。在示例实施中,输入可包括寄存器,用于接收来自D个不同接线输入的任何一个的P宽度位矢量。一组反馈线281可从输入282被输出,指示输入282当前正忙。例如,上游采集器可检查反馈线,若反馈线未被断言(可是时钟边沿检查的),它可以断言进程线中的事务处理(这可使用反馈线通过适当的驱动器电路实施)。然后,采集器可向输入282输出其P宽度数据矢量。封装器283会判定该数据。封装器283可(例如)为下游采集器生成P*D宽度输出。在某些实施中,该P*D输出可通过在多个时钟跃迁中发送部分数据,减少发送所需的物理线路(在需要的情况下)。但是,该方法会增加所需电路的复杂性以及电路设计和调谐的谨慎度,和/或降低其鲁棒性。
图7描述根据本公开内容可由采集器实施的示例过程。所述的流程包括在输入队列(402)接收输入、将从该输入标识的索引元素与存储器(410)中的集合的关联键相匹配。能够从输入队列接收数据元素的集合被由此标识,并且接收的数据元素被添加(404)到该集合。由于添加和已存储的数据元素共享相同的索引元素,索引元素无须再次被独立地存储在缓冲存储器中。此外,每个采集器可标识它的存储器中准备好输出到输出队列218的(406)集合。去往此类标识的输出可以包括集合充满度信息和决策结果以及其他启发式算法信息(412),如下所述。标识的集合可放置到输出队列218中。
图8是根据本公开内容设计的采集器的示例方框图。如同所述一般,采集器可具有多个输入端口或队列602、604、606,并可生成特定于某个队列或者应用到所有端口的停顿信号(例如,如果所有端口共享只能在特定时段接收单组输入的输入缓冲,停顿信号可供该输入缓冲的所有馈送器共用(例如,可被共享))。输入队列/端口的状态可由监视器605监视,该监视器可与封装器614通信,该封装器则可维护存储在缓冲616中的数据。还可提供缓冲616的状态监视器,该监视器可生成有关缓冲数据存储状态的统计或其他信息。缓冲状态监视器610可将该信息传送给回压生成器612,该生成器可为向给定采集器输入端口602、604和606馈送的采集器提供信令信息。该回压可提供阻尼功能,控制在一段时间内采集器输入的生成速度。采集器601可接收来自下游采集器的回压(601通过输出队列624向该下游采集器输出信息)。输出队列624还可接收来自下游采集器的停顿输入。排出器620确定要排出存储在缓冲616中的哪个集合(若有)。排出器620在做出排出决策时可使用配置信息622。
还可提供上游状态接收器626,该接收器可用于确定是否更改排出器620的排出政策。例如,在某些实施中,有关上游生成的输出量趋势的信息可允许更改排出率。关于光线跟踪,该等上游信息可包括(例如)有关光线相交测试进展的信息,这可允许确定是否应排出成员数目较少的集合。其他配置622的信息例如可以包括:靠近计算单元的偏置采集器可比远离计算单元的采集器更快排出集合。其他启发式算法可包括:偏置排出政策可支持或反对具有特定索引值范围的集合。例如,在一个实施中,索引与正用于光线跟踪绘制流程的一类形状关联。在某些情况下,涉及特定类型形状的计算可适当加速。例如,在某些情况下,可通过加速层级的特定部分加速穿越光线的完成。这可通过标识与该部分层级关联的一系列键完成,排出政策将相应更改。该等配置信息可从中央源读取或由中央源提供。
图9和图10描述了一个示例,其中可以执行多个并发流程,以便在采集器的流中保持分布式缓冲存储。图9显示,采集器可监视输入队列,并且可以响应于在队列处接收(504)输入而获取(506)输入数据。在获取过程中,采集器可生成(507)停顿条件或向上游采集器指示该采集器正忙的其他信号。当每个采集器串行接纳输入且并无缓冲能力用以暂时存储多个等待接纳的输入时,可采用该方法。即使提供了输入缓冲,当缓冲已满或接近充满时,仍可提供停顿信号。接收的输入中的索引元素将予以标识(508),并确定该索引元素是否与缓冲集合的任何现有的键匹配。若并无集合存在,可创建集合/缓冲位置(512)。若有集合,将标识该现有集合的位置(514),与索引元素关联的数据元素将附加到该集合。
该过程通过图9中的并发过程来阐释,涉及标识要从缓冲排出的集合,以为要创建的新集合留出空间。创建(512)步骤触发排出的可能性可纳入一般排出管理过程,其中缺少自由缓冲空间可以触发可具有多个输入的排出过程。
图9描绘了可以监视(520)集合的充满度及其他条件(充满度是一个明显的例子)。若集合已满或接近充满,该集合可被排出到输出队列(526)。若并无集合满足充满条件,仍可根据其他启发式算法(522)排出集合。输出队列可监视(528)来自下游采集器的停顿线,若停顿线不活跃,输入队列可传输(530)包。可更改(534)集合被视为已满或接近充满的规则。该等更改可考虑从下游采集器接收的回压(536)以及从上游采集器接收的上游信息(538)(若可用)。
图11描述在示例计算架构70上下文中的一组采集器,其中此类采集器可用于重新组织由所执行计算得到的输出。架构70包括多个群集(群集80和90被标识),每个都包含多个ALU(如,群集80的ALU 85、86和群集90的ALU 93-94)。每个群集还可包含一个输入缓冲81-91和一个采集器82-92(再一次,示例结构已标识)。这些群集通常具有与主存储器层级(该结构可存储能够用于在群集执行的计算的数据)相连的接口(如,接口101)。每个ALU还可拥有本地缓存资源。在某些情况下,每个ALU的功能都与图形处理器单元ALU相似,后者具有执行线程设置,使用本地存储器作为线程的寄存器文件。本地存储器可提前在一组给定的在群集上执行的线程之间划分。
分配器75为缓冲81-91提供输入。在某些实施中,分配器可基于存储在特定群集中的其他数据值的存在,为该特定群集提供给定数据元素,该群集将用于使用该给定数据元素进行的计算。如上所述,每个群集都可输出包,每个包都包含一个索引元素和一个或多个数据元素。在适用于光线跟踪的特定示例中,索引元素可为形状参考,数据元素可为光线参考,定义每条光线的数据存储在群集的本地存储器中(或群集中的ALU的本地存储器中,这取决于芯片组织)。在某些实施中,形状参考可映射到存储该形状的定义信息的主存储器中的特定位置。在某些实施中,参考的存储器范围可标识要测试的形状类型(例如,基元与包围体或包围元素)。因此,在这样的实施中,可以基于索引元素的值推定选择将响应于光线和形状的组合而在群集中被执行的程序。
在一个示例中,每个群集都将计算结果输出到参考计数器和关闭功能102。关闭功能102可在某些情况下作为群集本身操作的代码执行,而在其他情况下,该功能的若干部分可在硬件中实施。可由硬件实施的一个功能是跟踪为群集存储器中的给定数据元素提供的多个参考。例如,每次索引元素和数据元素配对从群集输出时,参考计数和关闭102可操作以调整计数。若该数据元素无更多参考存在,可执行特殊的关闭程序。
如上所述,这些索引元素和数据元素的包可以通过多级采集器105组成更大的集合,该采集器具有示例组成元素110-119,这些元件每个都可以根据上述示例操作。
最终采集器(此处为119)可将包输出到就绪栈122。最终采集器119可接收通过分配器75提供的关于包的信息,从而释放位置以便重新使用及在空栈124中予以标识。
如上所述,采集器可至少部分基于耦合至该采集器的输出数据的计算单元的不同数目确定输入宽度(给定输出块中的数据元素数目)。例如,宽度尺寸可基于可在那些计算单元执行的不同指令流的数目以及计算单元中的SIMD矢量的宽度确定。在需要的情况下,可将该等尺寸按一定系数降额。例如,如果采集器耦合至两个不同的计算单元,每个可对8位宽的数据值矢量执行指令,那些计算单元的最大理论输出宽度将为16个数据值。但是,若输出包含与数据元素关联的索引元素,且索引元素与执行流中的代码模块的标识符关联,不同的原始数据值可彼此偏离。这样,这些数据值会具有不同的关联索引元素,可通过不同的包输出。因此,连接宽度将基于该情况的预测减少;但是,全满的包将需要通过两个事务处理传输。这样,考虑到特定类型的工作负荷状况,这些类型的实施细节可交由具有普通技能的人员选择。
图12介绍了不同的实施中可以采用的其他变体。图12显示,第一组650计算群集(例如,每个群集都配备C个ALU,每个ALU都具有宽度为D的SIMD)和第二组652计算群集可具有P个ALU,每个ALU都具有宽度为Q的SIMD,且P和Q至少其中一个分别大于C和D。更进一步的替代方案是不同的群集可按不同的时钟速率记时。因此,可以预期,组650具有与组652不同的总吞吐量。考虑到该设计细节,采集器660、662和664的尺寸可与采集器654、656和658不同。可以相应地调整耦合至这些初始采集器以接收输出的其他采集器的尺寸。
图13描述了采用图12的示例群集布局的另一个实施变体。在图13,区别在于采集器可以类似于存储器阵列的规则布局组织,而在某些实施中,每个群集可在该群集与输出队列之间具有相同数目的采集器。例如,采集器可以平铺方式布置,如同面积不断增加的区块一般。但是,在其他实施中,某些群集可在该路径上具有更少或更大的采集器,因为单个较大的区块可占据多个较小区块的空间。更为具体地,采集器666-670代表基线尺寸的采集器,采集器680和768代表该基线尺寸的下游采集器。采集器672、674和676代表不同尺寸采集器的示例。采集器682和684表示,在某些实施中,即使采集器可具有不同的中间尺寸,他们最终仍将输入到尺寸类似的采集器。在某些实施中,不同尺寸的采集器可输入到不同的输出队列中。这些输出队列可返回到它们各自群集的输入(如图11中单个输出队列示例所示)。
对于每个采集器存储器的总尺寸,还可考虑从特定计算群集输出的数据类型。例如,一个群集可采用单精密FP操作,而另一个则可采用DPFP。给定包输出的尺寸还可取决于群集定址的内存量。在给定实施中,可输出标志位和状态位。这样,不同的实施可具有不同尺寸的互连。
总之,在某些方面,采集器接收来自一个或多个计算单元的输出,而计算单元本身可包含一个或多个ALU群集。在某些方面,计算单元可输出多个离散化输出,这些输出可由一个或多个采集器接收。在某些实施中,采集器可分层级布置,在输入和输出队列之间存在有规律的比例。
时钟信号可提供参考边沿(或多个边沿),在该参考边沿上,每个采集器均检查停顿信号。采集器之间的数据移动可以与时钟信号异步的方式启动,这样,数据移动事务处理无须根据特定的时钟周期触发或完成。在本文的某些示例中,“端口”一词用于描述两个功能组件之间的通信路径。
在上述某些示例中,“队列”一词用于描述在根据本公开内容实施的方案中用于在采集器处接收输入和存储输出包的结构。在某些情况下,这些输入和输出功能可使用FIFO缓冲实施。但是,在其他实施中,可使用其他临时存储方法,如,环形缓冲、共享存储空间或两者组合。这些临时存储一般可用作FIFO,但也可在必要时按非FIFO模式操作。在其中一个方案中,需要设置一个能够短时缓冲接收的数据元素的简单的小型存储器,使采集器元件(如,所述封装器的实施)能够读取和处理数据,从而实现某些异步操作,但该存储器并不用于这些数据的长时间存储。
如上所述,来自处理单元的输出可产生与索引元素关联的输出。在某些工作负荷中,索引元素可具有正在工作负荷中使用的数据集的含义。例如,在光线跟踪工作负荷示例中,索引元素可为正在系统中处理的光线,该光线可充当索引。在某些情况下,系统中正在处理的光线标识符(如,光线参考)可充当索引。可提供索引基础的其他示例数据包括特定程序或程序部分的索引以及存储器中特定存储位置的参考。多种索引可在任意给定时间内操作。在一个实施中,给定索引是否与任何特定类别的数据或程序关联(或被系统理解)可对封装器透明。因而系统编程只须简单地设置索引值,该索引值随后将由封装器使用。所采集的与任何给定索引相关的数据值群组的进一步处理可由调度实体基于索引进行。
某些方面从采集输出的角度描述。但是,该描述为说明性质,并无限制,根据所述方面的不同实施采集的数据元素可以不同。此外,即使特定可采集的数据元素已经输出,它们最终也可能成为输入,因此,本文所用的术语旨在帮助具有普通技能的人员理解如何应用所述的各个方面,而不是对所述方面在系统中的部署方式或位置,或者它们采集的数据元素类型实施结构限制,除非在所附的权利主张中另行明确实施限制。
如上所述,多级采集器(或封装器)的每个组件可包含用于存储接收的与索引关联的数据元素的存储器元件。这些存储器元件可通过随机存取存储器(RAM)技术实施,如静态RAM(SRAM)和动态RAM(DRAM)。如果使用DRAM,DRAM可作为嵌入式DRAM实施,这可通过给定处理技术提供。基于给定多级采集器的目标特征,可确定各个存储器元件的特征。这些存储器元件的实施可基于这些特征、在含有多级采集器的芯片内为多级采集器分配的位置类型特征、制作芯片的目标流程以及其他考虑(这些是基于本公开内容做出的设计实施选择)确定。
总之,本文所述的任何功能、特色或其他逻辑可在具有本文公开的示例和实施中所述特征的各种计算资源中实施,或与这些计算资源共同实施。这些计算资源可处于不同的抽象级别,可包括一个SIMD单元、一组SIMD单元、一个包含一个或多个SIMD单元或群集的内核,该内核可具有某些固定的功能处理元件,(例如)可与其他内核部署在同一个芯片内,作为对称多处理器使用。在其他示例中,可包括图形处理器单元(这可包括本文所述的组件)以及互操作组。具有艺术技能的人员可理解其他示例和实施。此外,并非文本描述重点的其他功能也可作为流程、线程或任务提供或实施,它们能够定位到一个计算资源或在多个计算资源间分配(如,多个线程在多个物理计算资源间分配)。
上述示例仅为说明目的而提供,不得解释为限制。本公开内容可从相关方面进行修改和理解。此外,所述系统的功能组件的各个独立方框或图示性分离并不表示这些功能的物理分离,即使具有艺术技能的人员认为物理分离这些组件并与其他组件组合有利。有关在软件和硬件中实施什么的实施确定可随时间更改,也可能是基于本公开内容下述方案的实施确定。这些实施确定本身属于示例,具有普通技能的人员可做出关于根据本公开内容进行实施的其他确定。
Claims (21)
1.一种分布式多处理的机器实施方法,包括:
异步接收来自多个计算单元的输出,所述输出中的每一个包括与各自索引元素相关联的一个或多个组成元素,所述索引元素描述将要针对所述一个或多个组成元素而执行的相应计算任务;以及
将接收的所述输出中包括的所述组成元素封装为渐大的包,所述封装包括:
通过对多个接收的输出中的其相应索引元素进行比较并且将与匹配索引元素相关联的那些组成元素分组在一起来将至少一些组成元素分组到包中;
将组成元素的至少一些包分组成较大的个体包并且将与匹配索引元素相关联的那些包分组在一起。
2.根据权利要求1所述的分布式多处理的机器实施方法,其中所述封装包括:缓冲在第一时间接收的包的组成元素,并且将所缓冲的组成元素与来自在第二时间接收的、具有与在所述第一时间接收的所述包的所述索引元素相匹配的索引元素的包的组成元素进行组合。
3.根据权利要求1所述的分布式多处理的机器实施方法,其中所述多个步骤由采集器单元执行,所述采集器单元被布置在互连的串中,并且每个所述采集器单元操作以响应于集合排出过程而标识要从其存储器中排出的集合。
4.根据权利要求2所述的分布式多处理的机器实施方法,其中采集器单元的串被布置在反向层级中,所述反向层级开始于一层接收较小包的采集器单元,并且结束于输出一个或多个较大包的一个或多个采集器,每个所述较大包包含多个所述较小包的组成数据元素。
5.根据权利要求4所述的分布式多处理的机器实施方法,进一步包括:在所述反向层级的不同层中的采集器单元之间应用回压,以调节包通过所述多个采集器的进程。
6.根据权利要求1所述的方法,其中对将要执行的计算任务的所述描述中的一个或多个描述包括标识形状的信息,并且所述组成元素包括用于将要与形状进行相交测试的光线的标识符。
7.根据权利要求1所述的方法,进一步包括:选择来自多个预定义类型的计算任务的计算任务的每个描述,所述计算任务包括测试光线与由所述组成元素来标识的一个或多个形状的相交。
8.根据权利要求1所述的方法,其中对将要执行的计算的每个描述包括对存储器位置的参考。
9.根据权利要求1所述的方法,其中对将要执行的计算的每个描述包括对存储器的一个区域中的存储器位置的参考,所述区域被预留以存储已定义类型的形状数据,所述形状数据在使用所述形状数据定义的场景的图形化绘制期间被使用。
10.根据权利要求9所述的方法,其中所述已定义类型的形状数据选自加速形状数据和基元形状数据。
11.一种计算系统,包括:
多个计算群集,每个计算群集用于输出执行计算任务的离散化结果,每个离散化结果都包括描述将要执行的各计算任务的集合索引以及在由所述集合索引描述的所述计算任务的执行期间使用的数据元素;以及
多个采集器,所述采集器中的一些采集器耦合以接收从所述多个计算群集中的各计算群集输出的离散化输出,所述采集器互操作以将来自多个离散化输出的数据元素收集为渐大的集合,每个采集器包括:索引匹配器,用于匹配两个或更多集合索引以标识公共集合索引的索引匹配器;以及分组器,配置为将与相同集合索引相关的数据元素分组在一起以便作为群组与该集合索引相结合地输出。
12.根据权利要求11所述的计算系统,其中所述多个采集器中的采集器操作以激活停顿线,所述停顿线用于阻止一个或多个采集器输出离散化输出的集合。
13.根据权利要求12所述的计算系统,其中所述多个采集器中的采集器操作以通过采集来自多个离散化输出的非冗余信息来压缩来自所述离散化输出的信息,并且基于监视所述停顿线而将压缩的信息集合输出到符合条件的输出上。
14.根据权利要求11所述的计算系统,其中每个计算群集包括:被配置为执行SIMD操作的ALU,用于从存储器子系统读取和向所述存储器子系统写入的端口,以及输出端口。
15.根据权利要求11所述的计算系统,其中每个采集器接纳最多第一尺寸的离散化结果,并且产生大于所述第一尺寸的输出。
16.根据权利要求11所述的计算系统,其中所述多个采集器被布置在反向层级中,包括:
第一采集器层,每个采集器耦合至来自所述多个计算群集中的计算群集的相应输出端口,具有包括存储器和封装单元,所述封装单元操作以从耦合的输出端口接收离散化输出,并且根据与所述离散化输出关联的索引将每个离散化输出采集到集合中;以及
一个或多个后续采集器层,每个采集器耦合以接收所述离散化输出的渐大集合,其中
每个所述采集器操作以响应于集合排出过程而标识要从其存储器排出的集合。
17.根据权利要求16所述的系统,进一步包括分配器,耦合至所述反向层级的最后一个采集器,并且操作以根据所述计算群集中哪个计算群集要执行涉及每个数据元素的进一步计算而在多个计算群集间分配将来自接收的数据元素群组的数据元素。
18.根据权利要求16所述的计算系统,其中所述集合排出过程包括:每个采集器单元独立地排出其存储器中的已满集合。
19.根据权利要求11所述的计算系统,其中每个离散输出包括结果矢量,所述结果矢量的数目最多为输出该离散输出的计算群集的SIMD矢量宽度。
20.一种并行化计算的方法,包括:
在分布式多处理器系统中,执行多个程序以确定将要在所述多处理器系统中后续执行的数据元素和代码模块的相应配对,并且从多个端口输出所述配对;
如下采集所述配对中参考相同代码模块的数据元素:从其原始配对中提取每个数据元素,并且将参考所述相同代码模块的所提取数据元素分组到较大的群组中,每个群组保持与其相应代码模块的关联;
基于启发式算法终止针对特定群组的数据元素采集;以及
向所述分布式多处理器系统提交数据元素的所述特定群组,以便在与该数据元素的特定群组关联的所述代码模块的执行期间使用。
21.根据权利要求20所述的方法,其中保持群组与相应代码模块之间的关联包括:包含标识将要针对该群组的数据元素而执行的指令的开端的指令指针。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161535487P | 2011-09-16 | 2011-09-16 | |
US61/535,487 | 2011-09-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198512A CN103198512A (zh) | 2013-07-10 |
CN103198512B true CN103198512B (zh) | 2018-01-05 |
Family
ID=46982462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210350398.2A Active CN103198512B (zh) | 2011-09-16 | 2012-09-17 | 用于多处理器系统中的输出的多级采集器 |
Country Status (3)
Country | Link |
---|---|
US (6) | US9595074B2 (zh) |
EP (2) | EP3671655A1 (zh) |
CN (1) | CN103198512B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150067273A1 (en) * | 2013-08-30 | 2015-03-05 | Microsoft Corporation | Computation hardware with high-bandwidth memory interface |
GB2533444B (en) * | 2015-06-05 | 2017-08-16 | Imagination Tech Ltd | Tessellation method |
KR20180030878A (ko) | 2015-07-17 | 2018-03-26 | 에이비엘 아이피 홀딩, 엘엘씨 | 소프트웨어 구성가능한 라이팅 디바이스 |
US11409692B2 (en) * | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
WO2019166967A1 (en) * | 2018-02-27 | 2019-09-06 | Zetane Systems Inc. | Scalable transform processing unit for heterogeneous data |
US10699465B1 (en) | 2018-12-28 | 2020-06-30 | Intel Corporation | Cluster of scalar engines to accelerate intersection in leaf node |
BR112021024408A2 (pt) * | 2019-06-10 | 2022-01-18 | Greeneden Us Holdings Ii Llc | Método e sistema para adicionar conteúdo a interações recebidas em um ambiente de central de contatos |
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1494688A (zh) * | 2001-02-24 | 2004-05-05 | �Ҵ���˾ | 新颖的大规模并行超级计算机 |
CN1957376A (zh) * | 2004-04-12 | 2007-05-02 | 辉达公司 | 可缩放着色器结构 |
CN101124613A (zh) * | 2004-09-13 | 2008-02-13 | 辉达公司 | 片段着色管线中增加的按比例缩放性 |
CN102037497A (zh) * | 2008-03-21 | 2011-04-27 | 柯斯提克绘图有限公司 | 用于光线追踪渲染的并行相交测试及着色的架构 |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2226471A (en) * | 1988-12-23 | 1990-06-27 | Philips Electronic Associated | Displaying a stored image in expanded format |
WO2001063561A1 (en) * | 2000-02-25 | 2001-08-30 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
WO2004021176A2 (de) * | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
JP4467267B2 (ja) * | 2002-09-06 | 2010-05-26 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理方法、画像処理装置、および画像処理システム |
US7447873B1 (en) * | 2005-11-29 | 2008-11-04 | Nvidia Corporation | Multithreaded SIMD parallel processor with loading of groups of threads |
US8018457B2 (en) * | 2006-09-19 | 2011-09-13 | Caustic Graphics, Inc. | Ray tracing system architectures and methods |
US7830379B2 (en) * | 2006-09-19 | 2010-11-09 | Caustic Graphics, Inc. | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
US9478062B2 (en) * | 2006-09-19 | 2016-10-25 | Imagination Technologies Limited | Memory allocation in distributed memories for multiprocessing |
US8072460B2 (en) * | 2007-10-17 | 2011-12-06 | Nvidia Corporation | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture |
US8237711B2 (en) * | 2007-11-19 | 2012-08-07 | Caustic Graphics, Inc. | Tracing of shader-generated ray groups using coupled intersection testing |
US8773422B1 (en) * | 2007-12-04 | 2014-07-08 | Nvidia Corporation | System, method, and computer program product for grouping linearly ordered primitives |
US8130239B1 (en) * | 2008-03-31 | 2012-03-06 | The Mathworks, Inc. | Update traversal of object trees for multiprocessor systems |
US8593458B2 (en) * | 2008-09-22 | 2013-11-26 | Caustic Graphics, Inc. | Systems and methods of multidimensional query resolution and computation organization |
US8810592B2 (en) * | 2009-10-09 | 2014-08-19 | Nvidia Corporation | Vertex attribute buffer for inline immediate attributes and constants |
US8495656B2 (en) * | 2010-10-15 | 2013-07-23 | Attivio, Inc. | Ordered processing of groups of messages |
US8773446B2 (en) * | 2011-02-09 | 2014-07-08 | Xerox Corporation | Synchronous parallel pixel processing for scalable color reproduction systems |
US20130033507A1 (en) * | 2011-08-04 | 2013-02-07 | Nvidia Corporation | System, method, and computer program product for constructing an acceleration structure |
-
2012
- 2012-09-12 US US13/611,325 patent/US9595074B2/en active Active
- 2012-09-13 EP EP19218875.3A patent/EP3671655A1/en active Pending
- 2012-09-13 EP EP12184265.2A patent/EP2570995B1/en active Active
- 2012-09-17 CN CN201210350398.2A patent/CN103198512B/zh active Active
-
2017
- 2017-03-01 US US15/446,227 patent/US10242426B2/en active Active
-
2019
- 2019-02-04 US US16/267,161 patent/US10783605B2/en active Active
-
2020
- 2020-09-04 US US17/012,712 patent/US11227362B2/en active Active
-
2021
- 2021-12-10 US US17/548,222 patent/US11699210B2/en active Active
-
2023
- 2023-07-10 US US18/219,873 patent/US20230351546A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1494688A (zh) * | 2001-02-24 | 2004-05-05 | �Ҵ���˾ | 新颖的大规模并行超级计算机 |
CN1957376A (zh) * | 2004-04-12 | 2007-05-02 | 辉达公司 | 可缩放着色器结构 |
CN101124613A (zh) * | 2004-09-13 | 2008-02-13 | 辉达公司 | 片段着色管线中增加的按比例缩放性 |
CN102037497A (zh) * | 2008-03-21 | 2011-04-27 | 柯斯提克绘图有限公司 | 用于光线追踪渲染的并行相交测试及着色的架构 |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
Also Published As
Publication number | Publication date |
---|---|
EP3671655A1 (en) | 2020-06-24 |
US20130069960A1 (en) | 2013-03-21 |
US10783605B2 (en) | 2020-09-22 |
US20230351546A1 (en) | 2023-11-02 |
US20190172176A1 (en) | 2019-06-06 |
US9595074B2 (en) | 2017-03-14 |
US11227362B2 (en) | 2022-01-18 |
US20170178282A1 (en) | 2017-06-22 |
CN103198512A (zh) | 2013-07-10 |
US11699210B2 (en) | 2023-07-11 |
US10242426B2 (en) | 2019-03-26 |
EP2570995A2 (en) | 2013-03-20 |
EP2570995A3 (en) | 2015-09-16 |
US20200402199A1 (en) | 2020-12-24 |
EP2570995B1 (en) | 2020-01-15 |
US20220101485A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103198512B (zh) | 用于多处理器系统中的输出的多级采集器 | |
US20210160177A1 (en) | Fpga-efficient directional two-dimensional router | |
US10062422B2 (en) | Various methods and apparatus for configurable mapping of address regions onto one or more aggregate targets | |
Pellauer et al. | Buffets: An efficient and composable storage idiom for explicit decoupled data orchestration | |
EP3298740B1 (en) | Directional two-dimensional router and interconnection network for field programmable gate arrays | |
TWI794008B (zh) | 可重組態處理器的儀器分析 | |
CN101194245B (zh) | 具有宽寄存器组体系结构的分组处理器 | |
CN104508593B (zh) | 在处理器中执行跨域热控制 | |
KR20190044568A (ko) | 복수-타일 복수-칩 프로세싱 구성에서의 동기화 | |
KR20190044565A (ko) | 호스트 프로세서와의 동기화 | |
CN104516831B (zh) | 原子存储器更新单元和方法 | |
CN101320360A (zh) | 用于并行集成电路结构的消息排队系统和相关操作方法 | |
TW200901032A (en) | Element controller for a resilient integrated circuit architecture | |
US10564929B2 (en) | Communication between dataflow processing units and memories | |
US8180998B1 (en) | System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations | |
US20230115494A1 (en) | Deterministic near-compute memory for deterministic processor and enhanced data movement between memory units and processing units | |
CN103207810A (zh) | 计算任务状态封装 | |
TWI845762B (zh) | 用於分割異質系統的電腦應用的自動學習科技的系統、半導體設備、方法及儲存媒體 | |
Sterling et al. | The “MIND” scalable PIM architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: ENVISION TECHNOLOGIES GMBH Free format text: FORMER OWNER: CAUSTIC GRAPHICS INC. Effective date: 20150430 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150430 Address after: Hertfordshire Applicant after: Imagination Technologies Limited Address before: American California Applicant before: Caustic Graphics Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |