用于并行集成电路结构的消息排队系统和相关操作方法

文档序号:6462925阅读:173来源:国知局
专利名称:用于并行集成电路结构的消息排队系统和相关操作方法
技术领域
本发明的实施例大体上涉及用于执行岛度并行计算的电路和方法。更明确地说,本 发明的实施例涉及适于产生实时物理仿真的集成电路结构和相关方法。
背景技术
计算机游戏的近期发展己越来越需要非常复杂的实时物理仿真。相对简单的基于物 理的仿真己经在若干常规环境中存在许多年了。然而,前沿计算机游戏目前是发展复杂、 实时、基于物理的仿真的主要商业推动者。
根据一组规定的物理限制(不管此类限制是实际的还是想象的)进行交互的对象和 /或环境的任何视觉显示通常可视为"基于物理的"仿真。动画环境和对象通常指配有物 理特征(例如,质量、尺寸、位置、摩擦力、移动属性等),且此后允许根据所述组规 定的物理限制在视觉上进行交互。通过主机系统使用从所指配的物理特征和所述组规定 的物理限制导出的被周期性更新的数据主体来在视觉上显示所有动画对象。下文将此数 据主体总称为"物理数据"。
历史上,计算机游戏已经在游戏应用程序内并入了一些有限的基于物理的仿真能 力。此类仿真是基于软件的,且使用在主机系统的中央处理单元(CPU)(例如奔腾⑧ (Pentium ))上运行的专用物理中间件来实施。"主机系统"包含(例如)个人计算机 (PC)和控制台游戏系统。
遗憾的是,常规CPU的通用设计显著限制了常规物理仿真的规模和性能。倘若存 在各种各样的其它处理要求,那么常规CPU缺乏执行解决作为物理仿真基础的数学和 逻辑运算所需的复杂算法所需要的处理时间。也就是说,通过解决由物理数据引起的-一 组复杂的数学和逻辑问题来产生基于物理的仿真。倘若存在典型数量的物理数据和"物 理问题"中所涉及的数学和逻辑运算的复杂性和数H,那么有效的解决方案并不是一个 普通的问题。
形成常规CPU的通用电路中所固有的硬件限制加剧了可用CPU处理时间的普遍缺 乏。此类硬件限制包含数学/逻辑执行单元和数据寄存器的数目不足、缺乏用于数据/逻 辑运算的并行执行能力以及对外部存储器的带宽相对受限。简单地说,常规CPU的结构和运算能力不能很好地与复杂的基于物理的仿真的计算和数据传送要求相关。不管许 多常规CPU的速度和超标量性质如何,情况都是如此。常规CPU的多个逻辑电路和先 行能力不能克服由执行单元和数据寄存器的相对有限数口、并行性缺乏和存储器带宽不 足表征的结构的缺点。
与常规CPU形成对比,所谓的超级计算机(如由克雷@ (Cray )制造的那些超级 计算机)由高度并行性表征。另外,尽管程序通常使用单指令单数据(SISD)运算在常 规CPU上执行,但超级计算机通常包含许多执行单指令多数据(SIMD)运算的向量处 理器。然而,高度并行执行能力的优势是以超级计算情况内的巨大尺寸和成本为代价的。 实用商业考虑因素很大程度上排除了用于常规超级计算机的物现实施方案的途径。
因此,在"消费者可用的"主机系统上所运行的应用程序内并入非常复杂、实时且 基于物理的仿真的问题仍未得到解决。基于软件的对解决除了最简单物理问题之外的所 有物理问题的解决方案已经被证明是不够的。因此,对产生和并入实时且基于物理的仿 真的基于硬件的解决方案已经在若干相关和共同转让的第10/715,459号、第10/715,370 号和第10/715,440号美国专利申请案中提出,所有所述申请案均在2003年11月19日 申请。这些申请案的标的物以引用的方式并入本文中。
如.卜.文引用的中请案中描述,主机系统显示器的帧速率必定相对于可解决下伏于基 于物理的仿真下的物理问题的速度限制所述物理问题的大小和复杂性。因此,倘若帧速 率足以在视觉上实时描绘仿真,那么设计重点变成增加数据处理速度。数据处理速度由 数据传送能力和执行数学/逻辑运算的速度的组合来确定。可通过以较快速率循序执行所 述运算和/或通过将所述运算分成多个子集且此后并行执行选定子集来增加执行数学/逻 辑运算的速度。因此,数据带宽考虑因素和执行速度要求很大程度上界定了适于实时产 生基于物理的仿真的系统的结构。正被处理的物理数据的性质还有助于界定高效的系统 结构。
在2004年5月6日申请的相关且共同转让的第10/839,155号美国专利申请案中揭 示用以提供非常复杂的实时物理仿真所需的高数据带宽和高执行速度的若干示范性结 构途径,所述申请案的标的物以引用的方式并入本文中。这些途径中的一者在附图的图 1中以实例方式说明。明确地说,图1展示适于执行用于基于物理的仿真的大量并行计 算的物理处理单元(PPU) 100。
PPU IOO通常将棊于物理的计算作为耦合到在主机系统上并行运行的主应用程序的 次应用程序的一部分来执行。举例来说,主应用程序可包括定义视觉对象集合的"世界 状态"(例如,位置、限制等)的交互游戏程序。主应用程序协调游戏程序的用户输入/输出(1/0),并执行世界状态的不断更新。主应用程序还基于用户输入向次应用程序发 送数据,且次应用程序执行基于物理的计算以修改世界状态。当次应用程序修改世界状 态时,其周期性地且异步地向主应用程序发送经修改的世界状态。
通常通过从位于主机系统中或附近的.牛:存储器以及PPU结构中的各种存储器读取 数据和向其写入数据来实施次应用程序与主应用程序之间的各种交互。因此,恰当的存 储器管理是此用以产生基于物理的仿真的途径的重要方面。
通过在主应用程序与次应用程序之间划分工作负荷以使得次应用程序与主应用程 序并行且异步地运行,PPU以及所述两个应用程序的实施和编程得以显著简化。举例来 说,所述划分允许主应用程序在方便时核査对世界状态的更新,而不是强迫其与次应用 程序的时序一致。
从系统级观点来看,可以多种不同方式来实施PPU 100。举例来说,PPU IOO可实 施为连接到主机系统(例如常规CPU)的协处理器芯片。类似地,PPU100可实施为双
核处理器中的一个处理器核心的'部分。实际上,所属领域的技术人员将了解用以在硬
件中实施PPU 100的功能性的多种方式。此外,所属领域的技术人员还将了解硬件/软件
区别可相对任意,因为硬件能力通常可在软件中实施,且反之亦然。
图1中所说明的PPU包括高带宽外部存储器102、数据移动引擎(DME) 101、 PPU 控制引擎(PCE) 103和多个向量处理引擎(VPE) 105。 VPE 105中的每一者包括多 个向量处理单元(VPU)107,其每'者具有初级(L1)存储器;以及VPU控制宇.元(VCU) 106,其具有次级(L2)存储器。DME IOI提供外部存储器102 (和/或主机系统108) 与VPE 105之间的数据传送路径。PCE 103适于集中PPU的总体控制和/或PPU 100与 主机系统108之间的数据通信过程。PCE 103通常包括用于存储和执行PCE控制和通信 编程的可编程PPU控制单元(PCU) 104。举例来说,PCU 104可包括来自MIPS科技 公司(MIPS Technologies, Inc.)的MIPS64 5Kf处理器核心。
VPU 107中的每一者可总体视为"数据处理单元",其是数学/逻辑执行单元(例如 浮点处理器和/或标量处理器)的较低等级分组。每个VPU107的初级存储器LI通常用 来存储用于执行各种数学/逻辑运算的指令和数据。所述指令和数据通常在VCU 106中 的相应一者的控制下传送到每个VPU 107。每个VCU 106实施PPU的总体存储器控制 功能的-…个或一个以上功能方面。举例来说,每个VCU 106可向DME 101发布命令, 以针对各个VPU 107从PPU存储器102取出数据。
如第10/839,155号专利申请案中描述,图1中所说明的PPU可包含任何数目的VPE 105,且每个VPE 105可包含任何数目的VPU 107。然而,PPU 100的总体计算能力并非仅受VPE和VPU的数目限制。举例来说,不管VPE和VPU的数目如何,存储器总 线带宽和数据相依性仍可能限制每个VPE可进行的工作量。另外,随着每个VPE的VPU 数口增加,每个VPE内的VCU可能由于在VPU与外部存储器102禾卩/或PCU 104之间 其必须执行的大量存储器存取命令而变得负担过重。因此,VPU106可能停止,闲置地 等待来自其相应VCU的响应,因此浪费宝贵的计算资源。
总之,尽管增加PPU结构的复杂性可潜在地增加PPU的性能,但例如资源分配和 时序问题等其它因素可能同样损害较复杂结构中的性能。

发明内容
根据本发明的一个实施例,种集成电路包括外部存储器、控制处理器和多个并联 VPE。所述VPE中的每一者优选包括多个VPU、多个VCU、 DMA控制器和VPE消总 传递单元(VMU),所述VMU在多个VPU、多个VCU、 DMA控制器和控制处理器之 间提供数据传送路径。所述集成电路进一步包括外部存储器单元(EMU),其在外部存 储器、控制处理器和多个VPE之间提供数据传送路径。
根据本发明的另'实施例,'种PPU包括至少存储物理数据的外部存储器、包括可 编程PCU的PCE以及多个并联VPE。所述VPE中的每一者包括多个VPU,其每一 者包括适于对用于物理仿真的物理数据执行计算的数学/逻辑单元分组;多个VCU; DM A 了-系统,其包括DMA控制器;以及VMU,其适于在多个VPU、多个VCU、 DMA 了 系统和PCE之间传送消息。所述PPU进一步包括EMU,其在外部存储器、PCE和多个 VPE之间提供数据传送路径。
根据本发明的又一实施例,提供一种操作集成电路的方法。所述集成电路包括外 部存储器;多个并联VPE,其每一者包括多个VPU、多个VCU禾UVMU;以及EMU, 其在外部存储器与多个V P E之间提供数据传送路径。所述方法包括将通信消息从所述多 个VPE中的第一 VPE中的VPU传送到所述第一 VPE的VMU中的通信消息虚拟队列, 以及将所述通信消息从所述通信消息虚拟队列传送到位于第 VPE的VPU或VCU '卜 的目的地通信消息接收先进先出队列(FIFO)。


下文相对于附图中所说明的若干实施例来描述本发明。在图式中,相同参考数字始 终指示相同示范性元件、组件或步骤。
在图式中图1是说明常规物理处理单元(PPU)的方框图 图2是说明根据本发明一个实施例的PPU的方框图; 图3是根据本发明实施例的VPE的方框图; 图4是对图3所示的VPE中的消息的说明
图5是用于图3所示的VPE中的消息排队系统的调度器的方框图; 图6是说明图3所示的VPE 205在对通过外部存储器单元接收到的数据执行计算时 所执行的典型操作序列的流程图7A展示图3所示的VPE屮可使用的各种替代调度器和队列配置; 图7B展示图3所示的VPE中可使用的各种替代调度器和队列配置; 图8是根据本发明又一实施例的VPE的方框图9是说明根据本发明实施例的在图8所示的VPE中的VPU或VCU之间传送通 信消息的方法的流程图;以及
图10是说明根据本发明实施例的基于DMA请求消息而在VPE 'l'执行DMA操作 的方法的流程图。
具体实施例方式
下文参看相应图式来描述本发明的示范性实施例。呈现这些实施例是为了教示实 例。本发明的实际范围由所附权利要求书界定。
一般来说,本发明的实施例经设计以解决在并行计算情况中出现的问题。举例来说, 本发明的若干实施例提供用于管理并行操作的数据处理单元集合与外部存储器之间的 大量并发存储器交易的机制。本发明的其它实施例提供在数据处理单元之间进行通信的 有效方式。
本发明的实施例认识到需要平衡高度专业化硬件平台中的各种设计、实施方案、性 能和编程折衷。举例来说,随着所述平台中的并联组件(例如,向量处理单元)的数目 增加,协调所述组件的操作和所述组件之间的数据传送所需的联网程度也增加。此联网 要求增加了编程复杂性。另外,超长指令字(VLIW)、多线程数据传送和多线程执行的 使用也可能增加编程复杂性。此外,随着组件数目增加,所添加的组件可能造成资源(例 如,总线)争用。即使额外组件增加了硬件平台的总处理量,它们也可能减小各个组件 的响应时间(例如,存储器等待时间)。因此,本发明的实施例适于在这些各种折衷之 间找到平衡。
下文在适于执行用于实时物理仿真的数学/逻辑运算的专业化硬件平台的情况下描述本发明。然而,所描述的发明性概念适用于多种其它情况。举例来说,所描述的各种 数据传送、调度和通信机制适用于其它并行计算情况,例如图形处理和图像处理(仅举 几例)。
图2是根据本发明一个示范性实施例的适于运行S于物现的仿真的PPU 200的方框 级图。PPU 200包括外部存储器单元(EMU) 201、 PCE 203和多个VPE 205。 VPE 205 中的每一者包括多个VCU 206、多个VPU 207和VPE消息传递单元(VMU) 209。 PCE 203包括PCU204。出于说明目的,PPU 200包含八(8)个VPE 205,其每一者含有两 (2)个VCU 206和八(8)个VPU 207。
EMU 201连接在PCE 203、 VPE 205、主机系统208和外部存储器202之间。EMU 201 通常包括适于促进其所连接的各个组件之间的数据传送的切换器。举例来说,EMU 201 允许将数据从一个VPE传送到另一个VPE、在PCE 203与VPE 205之间传送和在外部 存储器202与VPE 205之间传送。
可用多种方式来实施EMU 201。举例来说,在'些实施例屮,EMU 201包括纵横 切换器。在其它实施例中,EMU 201包括多路复用器。在另外实施例中,EMU 201包 括由多个多路复用器实施的纵横切换器。在此书面描述中,通过EMU传送到VPE的任 何数据均称为EMU数据。另外,在此书面描述中,通过EMU连接到PPU的任何外部 存储器均称为EMU存储器。
术语"直接存储器存取(DMA)操作"或"DMA交易"表示涉及VPE而不是PCE 203或主机系统208中的处理器的任何数据存取操作。举例来说,外部存储器202与VPE 之间或两个VPE之间的读取或写入操作称为DMA操作。DMA操作通常由VCU 206、 VPU 207或主机系统208起始。为了起始DMA操作,起始器(例如,VCU或VPU)通 常经由队列序列向DMA控制器(未图示)发送DMA命令。DMA控制器接着基于所述 DMA命令而与VPE 205屮的各个存储器和外部存储器202或主机系统208通信,以控 制各个存储器之间的数据传送。VPE 205中的每一者通常包含其自身的DMA控制器, 且存储器传送通常发生在VPE内或通过EMU 201发生。
VPE 205中的每一者包含适于促进去往和来t) VCU 206和VPU 207的DMA传送的 VPE消息单元(VMU)。每个VMU通常包括多个DMA请求队列,其用于存储DMA 命令;以及调度器,其适于从DMA请求队列接收DMA命令,并将所述DMA命令发送 到VPE 205中的各个存储器和/或外部存储器202。每个VMU通常进一步包括多个通信 消息队列,其用于在VCU 206与VPU 207之间发送通信消息。
VPE 205中的每一者均在PPU 200中建立独立的"计算路线"。换句话说,可经由VPE 205中的每一者来进行独立的并行计算和数据传送。PPU 200具有总共八(8)个计
算路线。
通常通过与每个VPE相关联的-系列队列和其它硬件来管理经过VPE 205的存储 器请求和其它数据传送。举例来说,图3是展示包含用于管现存储器请求和其它数据传 送的多个队列和相关联硬件的不范性VPE 205的方框图。总起来说,可将所述队列和相 关联硬件视为VMU (例如图2中所示的那些VMU)的一个实施例。
在图3所示的实施例中,VPE 205包括VPU 207和VCU 206。每个VPU 207包括 指令存储器和数据存储器,共同表示为本机存储器501。优选地,将VPU 207组织成对 以共享同一指令存储器。VCU 207中的每一者也包括数据存储器和指令存储器,共同表 示为本机存储器502。
VPE 205进一步包括适于促进VPE 205中的存储器的任一者与外部存储器(例如外 部存储器202)之间的数据传送的DMA控制器503。 VPE 205进一步包括中间存储存储 器(ISM) 505,其适于与本机存储器501和502相比存储相对较大量的数据。在传统存 储器分级结构中,按照结构和功能,ISM 505可被视为"等级2"存储器,且本机存储 器501和502可被视为"等级1"存储器。DMA控制器201通常通过EMU 201取出人 量EMU数据,且将所述EMU数据存储在ISM 505中。接着将ISM 505中的EMU数据 传送到VPU 207禾B/或VCU 206以执行各种计算,且在将由VPU 207或VCU 206修改 的任何EMU数据通过EMU 201传送回到存储器(例如外部存储器202)之前,通常将 所述EMU数据复制回到ISM 505。
VPE 205还进一步包括VPU消息队列508、 VPU调度器509、 VCU消息队列507 和VCU调度器506。 VPU消息队列508通过调度器509将消息从VPU 207传送到VCU 206。类似地,VCU消息队列507经由调度器506将消息从VCU 206传送到VPU 207。 术语"消息"此处仅指代数据单元,优选具有128个字节。消息可包括(例如)指令、 指针、地址或某一计算的运算数或结果。
图4展示可从VCU发送到VPU的消息的简单实例。参看图4,图3的VCU消息 队列507中的消息包含数据类型、指向本机存储器501中的输出地址的指针、第一和第 二输入数据的各自大小以及指向ISM 505中的第一和第二输入数据的指针。当VPU接 收到消息时,VPU可使用消息数据来创建DMA命令以用于将第-和第二输入数据从 ISM 505传送到本机存储器501中的输出地址。
虽然图3所示的VPE 205包含用于VPU 207的一个队列和调度器以及用于VCU 206 的一个队列和调度器,但所述队列和调度器的数目和排列可有所改变。举例来说,每个VPU 207或VCU 206可具有其S身的队列和调度器,或甚至许多队列和调度器。此外, 可将来自一个以上队列的消息输入到每个调度器。
图5展示图3所示的调度器506的示范性实施例。图5所示的实施例优选在硬件屮 实施,以加速将消息从VCU转发到VPU。然而,其还可在软件中实施。
参看图5,调度器506包括逻辑电路702和对应于VPU 207的多个队列703。调度 器506接收来Q VCU消息队列507的消息,并基于逻辑电路702中所实施的逻辑将所 述消息插入队列703中。接着将队列703中的消息发送到VPU 207。
图6是说明图3所示的VPE 205在对通过EMU 201接收到的EMU数据执行计算吋 所执行的典型操作序列的流程图。图6所示的示范性方法步骤在下文中由圆括号(XXX) 表示,以将它们与示范性系统元件(例如图1到图5所示的那些元件)区分开。
参看图6, VCU 206中的-一者向DMA控制器503发送EMU数据请求命令,使得 DMA控制器503将把EMU数据复制到ISM 505 (801 )。 VCU 206接着将工作消息插入 其消息队列507屮。所述消息由调度器传递到VPU 507的入站队列。在接收到所述消息 后,指令VPU向DMA控制器503发送命令,以将来自ISM 505的EMU数据加载到本 机存储器501中(802)。接下来,VPU 207使用从ISM 205加载的数据来执行计算(803 )。 接着,VCU 206向DMA 503发送命令,以将所述计算的结果从木机存储器501移动回 到ISM 505 (804)。当所有工作消息均已经被处理时,VCU 206向DMA控制器503发 送命令,以将所述计算的结果从ISM 205移动到EMU 201 (805)。
图7展示可在图3所示的VPE 205中使用的替代调度器和队列配置。具体地说,图 7A展示VCU 901与队列902和调度器903之间存在一对一对应关系的配置。调度器903 将来G队列902的消息发送到两个VPU 904,且VPU 904又通过队列905和调度器906 将消息发送到其它VPU和VCU。图7B展示VCU 911与多个队列912和调度器913之 间存在对多对应关系的配置。在图7B屮,每个调度器913向多个VPU914'l'的.'者 发送消息,且VPU914中的每一者通过各自队列915和调度器916将消息发送回到VCU 911。
图7所示的队列和调度器通常用于通信和数据传送目的。然而,这些和其它队列和 调度器可用于其它目的,例如存储和检索调试消息。
图8展示根据本发明又一实施例的VPE。图8所示的VPU意在说明在VPE屮实施 消息队列系统的方式,且因此为了说明的简单性,省略了各种处理元件,例如用于执行 VPU中的计算的那些处理元件。
图8的VPE适于在其各个组件之间传递两种类型的消息。这两种类型的消息被称为"通信消息"和"DMA请求消息"。通信消息包括在所述VPE中在两个VPU之间或VPU 与VCU之间传递的用户定义数据单元。通信消息可包含(例如)指令、数据请求、指 针或任何类型的数据。另'方面,DMA请求消息包括由VPU或VCU用来请求由VPE 中的DMA控制器执行DMA交易的数据单元。出于说明目的,将假定相对于图8描述 的每个通信和DMA请求消息均包括128位数据。
图8的VPE包括多个VPU 207、多个VCU 206、 VMU 209禾卩DMA子系统1010。 消息通过VMU 209在VCU 206、 VPU 207和DMA子系统1010之间传递。
VMU 209包括ffl于将通信消息排队的第--存储器1001和用于将DMA请求消息排 队的第二存储器1002。第一和第二存储器都是256X128位存储器,其每 一者具有一个 读取端口和一个写入端口。第一和第二存储器中的毎一者被细分成16个虚拟队列。第 一存储器1001中的虚拟队列称为通信消息虚拟队列,且第二存储器1002中的虚拟队列 称为DMA请求虚拟队列。
虚拟队列的配置和使用是用户定义的。然而,VMU 209优选保证每个虚拟队列均独 立于每一其它虚拟队列而起作用。如果任一虚拟队列的使用或内容从不导致另一虚拟队 列停止向前进程,那么两个虚拟队列独立于彼此而起作用。
第一和第二存储器1001和1002中的每个虚拟队列均配置有容量和开始地址。所述 容量和开始地址通常以128位(即, 一个消息的大小)为单位来指定。举例来说,容量 为二 (2)的虚拟队列可存储两个消息或256个位。在将虛拟队列的容量设置为零的情 况下,那么所述队列被视为无效。然而,所有有效队列通常都具有在2勺256之间的容
每个虚拟队列还配置有"高水位"占用率阈值,其可在一 (1)与所述虚拟队列的 容量减去一之间的范围内。在虚拟队列中所存储的数据量超过所述高水位占用率阈值的 情况下,虚拟队列可产生信号以指示虚拟队列的行为变化。举例来说,虚拟队列可向PCE 203发送中断信号,以指示其将不再接受数据,直到其占用率降到高水位占用率阈值以 下为止。
每个虚拟队列还可经配置以在"正常模式"或"环形缓冲模式"下操作。在环形缓 冲模式下,忽略高水位占用率阈值,且新数据总是可入队到虚拟队列中,即使新数据覆 写在存储于虚拟队列中的旧数据上方。在虚拟队列中的旧数据被新数据覆写的情况下, 虚拟队列中的读取指针和写入指针通常发牛移动,使得读取指针指向虚拟队列中的最旧 数据,且写入指针指向将写入数据的下一个地址。
每个通信消息虚拟队列均配置有一组目的地。举例来说,在图8所示的VPE中,对于总共H^— (11)个目的地,可能的目的地包含八(8)个VPU 207、两(2)个VCU205 和PCE 203。所述十一个目的地通常被编码为十一 (11)位位串,使得每个虚拟队列可 经配置以向所述十个目的地的任 一子集发送消息。
一种用以配置虚拟队列的各种特性的方式是通过将所述虚拟队列的每一者的配置 信息存储在存储器映射的配置寄存器中。所述存储器映射的配置寄存器通常被映射到 PCE 203的存储器地址空间和VCU 206的存储器地址空间卜.。VCU 206可存取存储在其 中的配置信息,但虚拟队列优选仅由PCE 203配置。
VPU 207和VCU 206每-…者包括用于接收来自VMU 209的消息的两(2)个先进先 出队列(F1F0)。所述两个FIFO被共问称为"接收FIFO",且它们包含通信消息接收 FIFO和DMA完成通知接收FIFO。毎个通信消息接收FIFO优选包括8条M乘以128 位队列,且每个DMA完成通知接收FIFO优选包括32条目乘以32位队列。
VPE 207和VCU 206两者都使用存储指令STQ来向VMU 209发送消息,且使用加 载指令LDQ来从其各自接收FIFO读取消息。
如先前参考图3解释,VPU 207对可共享单个物理存储器。因此,用于每对VPU 207 的接收FIFO可在同一物理存储器中实施。在用于一对VPU 207的接收FIFO在同一物 理存储器中实施的情况下,在两者都试图向存储器发送加载和存储指令的VPU 207之间 可能存在存储器争用。用以解决这种类型的存储器争用的简单方式是给予所述对VPU 中的--个VPU相对于所述对屮的另 VPU的严格优先权。
类似于VMU 209中的虚拟队列,每个VPU中的接收FIFO独立于彼此而起作ffl。 换句话说, 一个接收FIFO的使用或内容将不会停止另一接收FIFO的向前进程。
同样类似于VMU 209中的虚拟队列,通信消息接收FIFO具有可配置的高水位占用 率阈值。当通信消息接收FIFO的占用率达到高水位占用率阈值时,通信消息接收FIFO 产生反压力指示,以防止更多消息被发送到所述FIFO。通信消息接收FIFO的高水位占 用率阈值通常在1与5之间,其中默认值为5。
在被配置为特定通信消息虚拟队列的目的地的所有通信消息接收FIFO都达到其各 自高水位占用率阈值的情况下,通信消息虚拟队列被阻止向那些目的地发送任何通信消 息。因此,通信消息虚拟队列可能填满,从而导致随后将数据入队到所述虚拟队列的试 图失败。
通信消息虚拟队列内的所有通信消息都适合以FIFO次序传送到相应的通信消息接 收FIFO。然而,VMU 209每时钟周期只能将一个通信消息传送到接收FIFO。因此,VMU 209中包含调度器1003,以提供通信消息虚拟队列之间的公平性。调度器1003通常使用循环调度技术来调度通信消息虚拟队列与通信消息接收FIFO 之间的数据传送。根据此技术,调度器以循环次序检查每个通信消息虚拟队列。在所检 査的虚拟队列不为空,且所述虚拟队列屮的下 一个通信消息具有不高于其高水位占用率 阈值的冃的地通信消息接收FIFO的情况下,调度器向目的地通信消息接收FIFO发送通 信消息。为了促进通信消息虚拟队列的有效检査,调度器1003针对毎个通信消息虚拟 队列中的下一个消息维持目的地通信消息接收FIFO的指示。这允许调度器1003有效地 核查目的地通信消息接收FIF O是否高于其各自高水位占用率阈值。
在所有通信消息虚拟队列都为空或所有其相应口的地通信消息接收FIFO都高于其 各自高水位占用率阏值的情况下,通信消息虚拟队列与通信消息接收FIFO之间不传送 数据。否则,调度器1003所选择的通信消息从通信消息虚拟队列中的一者的头部移动 到通信消息接收FIFO中的一者的尾部。
第二存储器1002中的DMA请求消息虚拟队列接收来自VPU 207和VCU 206的 DMA请求消息。每个DMA请求消息通常包括128位的信息,以及可选的32位DMA 完成通知。DMA请求消息通过DMA请求消息虚拟队列传送到一组DMA请求FIFO
1007。 从DMA请求消息虚拟队列传送消息的次序由调度器1004确定。
DMA请求FIFO 1007中的DMA请求消息被传送到DMA控制器1008,所述DMA 控制器1008基于所述DMA请求消息而执行DMA交易。典型的DMA交易包括(例如) 将数据移动到和/或移动出与VPU 207禾Q/或VCU 206相关联的各个存储器。在完成DMA 交易后,便将与已起始DM A交易的DM A请求消息相关联的任何DM A完成通知从DM A 控制器1008传送到DMA完成通知FIFO 1009。接着,将DMA完成通知传送到VPU 107 或VCU 206的一者中的DMA完成通知接收FIFO。
除了DMA请求消息之外,DMA请求消息虚拟队列还可包含扩展完成通知(ECN) 消息。ECN消息是DMA请求消息虚拟队列中插入在紧接DMA请求消息之后的128位 消息。通常使用ECN消息来代替32位完成通知。将ECN消息通过通信消息虚拟队列 中的一者发送到通信消息接收FIFO,以指示DMA请求消息己经被发送到DMA控制器
1008。 图8中用虚线箭头来展示示范性ECN消息。
依据DMA请求消息中的"栅栏"指示的值而定,可在将DMA请求消息发送到DMA 控制器1008后或在完成由DMA请求消息起始的DMA交易后向通信消息虚拟队列发送 ECN消息。如果栅栏指示被设置为第一值,那么在将DMA请求消息发送到DMA控制 器1008后向通信消息虚.拟队列发送ECN消息。否则,在完成DMA交易后向通信消息 虚拟队列发送ECN消息。调度器1004优选使用循环调度算法来确定将DMA请求消息从DMA请求消息虚拟 队列传送到DMA请求FIFO 1007的次序。在循环调度算法下,调度器1004在当前时钟 周期期间从非空DMA请求消息虚拟队列处读取下一个DMA请求消息。通过以循环次 序在连续时钟周期中循环经过非空DMA请求消息虚拟队列来选择下一个DMA请求消
息o
除非满足以下条件中的一者或一者以上,否则就在当前时钟周期期间将下一个 DMA请求消息传送到DMA请求FIFO: DMA请求FIFO 1007全部已满;下一个DMA 请求消息具有以已满或高于其高水位占用率阈值的DMA完成通知接收FIFO为口的地 的DMA完成通知;或者,DMA请求消息具有相关联的ECN消息,且所述ECN消息的 目的地通信消息FIFO已满。
为了提供虚拟队列之间的真实独立性,V MU 209必须防止DM A完成通知FIFO 1009 阻—l卜DMA控制器1008的进程。举例来说,如果VCU 206或VPU 207排空其各自DMA 完成通知接收FIFO的速度较慢,从而导致DMA完成通知填满,那么DMA完成通知 FIFO 1009可阻止DMA控制器1008。 VMU 209可用以防止DMA完成通知FIFO 1009 阻止DMA控制器1009的进程的一种方式是通过防止任何含有32位DMA完成通知的 DMA请求消息从其DMA请求虚拟队列中出队,除非作为DMA完成通知的目的地的 DMA完成通知接收FIFO低于其高水位占用率阈值。
DMA控制器1008可响应于不同DMA请求消息而执行各种不同类型的DMA交易。 举例来说, 一些DMA交易将数据从一个VPU的指令存储器移动到另一 VPU的指令存 储器。其它交易将数据从ISM 1011广播到若干或所有VPU 207 (例如,在图2和图8 中用后缀"A"标记的VPU)的数据存储器中的指定地址。另外DMA交易将数据从ISM 1011广播到若干或所有VPU 207的指令存储器。
可由DMA请求消息起始的另一类型的DMA交易是原子EMU DMA交易。在原子 EMU DMA交易中,DMA控制器1008使用"加载锁定"和"条件存储"语义学来在ISM 1011与EMU存储器1012之间移动数据。更具体地说,当将数据从EMU存储器1012 传送到ISM 1011时可使用加载锁定语义学,且当将数据从ISM 1011传送到EMU存储 器1012时使用条件存储语义学。
加载锁定语义学和条件存储语义学两者均依赖于借以通过使EMU存储器1012中的 地址与VPE 205的一者内的特定虚拟队列的识别符相关联来"锁定"所述地址的机制。 识别符与所述地址相关联的虚拟队列被说成对所述地址具有"锁定"。而且,当虚拟队 列对地址具有锁定时,所述地址被说成"被锁定"。如果另一识别符变成与所述地址相关联,那么所述虚拟队列被说成"丧失"或"释放"锁定。
当来自虚拟队列的DMA请求消息指令DMA控制器1008执行从EMU存储器1012 到ISM 1011的读取操作吋,虚拟队列通常获得对EMU存储器1012'l'的地址的锁定。 涉及获得对地址的锁定的读取操作被称为"加载锁定"操作。一H虚拟队列具有锁定, EMU存储器1012中的EMU控制器(未图不)便可启动计时器。所述计时器通常经配 置以具有有限的持续时间。如果将所述持续时间设置为零,那么将不使用所述计时器。 当计时器正在运行时,任何随后的对EMU存储器1012中的地址的读取操作都不会解锁 或锁定任何地址。使用计时器减小了由来自一个VPE的DMA交易锁定的地址将被来自 另一 VPE的DMA交易存取的可能性。
当计时器不在运行时,随后的对所述地址的读取操作将释放旧的锁定,并创建新的 锁定。换句话说,另一虚拟队列识别符将变得与所述地址相关联。
"条件存储"操作是从EMU存储器1012到ISM 1011的写入操作,其只有在源自对 写入操作的H的地地址具有锁定的虚拟队列吋才成功。
如同其它DMA交易一样,原子EMU DMA交易可由具有32位DMA完成通知的 DMA请求消息起始。然而,如果条件存储操作不成功,那么将相应DMA完成通知中的 位设置为向VPU 207或VCU 206的一者指示所述失败的预定值。
图9和图10是说明在电路(例如图8所示的VPE)中发送消息的方法的流程图。 明确地说,图9说明根据本发明 -个实施例的在VPE屮将通信消息从--个VPU或VCU 传送到另一 VPU或VCU的方法,且图10说明根据本发明实施例的基于DMA请求消息 在VPE中执行DMA操作的方法。
参看图9,所述在VPE中将通信消息从一个VPU或VCU传送到另一 VPU或VCU 的方法包括以下步骤。首先,在步骤1101中,VPU或VCU将通信消息写入到多个通信 消息队列中的一者。接下来,在步骤1102中,调度器核查所述通信消息的Q的地接收 FIFO的占用率。最后,在步骤1103中,如果所述目的地接收FIFO的占用率低于预定 高水位占用率阈值,那么将所述通信消息传送到所述目的地接收FIFO。
参看图10,所述在VPE中执行DMA操作的方法包括以下步骤。首先,在步骤1201 中,VPU或VCU将DMA请求消息写入到多个DMA请求消息队列中的一者。接下来, 在步骤1202中,将所述DM A请求消息从DMA请求消息队列传送到DM A请求FIFO 。 接着,在步骤203中,将所述DMA请求消息传送到DMA控制器,且DMA控制器基 于所述DMA请求消息而执行DMA操作。最后,在步骤1204中,将与所述DMA请求 消息相关联的DMA完成通知发送到所述VPE内的一个或一个以上VPU禾P/或VCU中的DMA完成通知接收FIFO。
前述优选实施例是教示实例。所属领域的技术人员将了解,可在不脱离如由所附权 利要求书界定的本发明范围的情况下对示范性实施例作出形式和细节上的各种改变。
权利要求
1.一种集成电路,其包括外部存储器;控制处理器;多个并联向量处理引擎(VPE),其中所述VPE中的每一者包括多个向量处理单元(VPU)、多个VPU控制单元(VCU)、直接存储器存取(DMA)控制器和VPE消息传递单元(VMU),所述VMU在所述多个VPU、所述多个VCU、所述DMA控制器和所述控制处理器之间提供数据传送路径;以及外部存储器单元(EMU),其在所述外部存储器、所述控制处理器和所述多个VPE之间提供数据传送路径。
2. 根据权利要求1所述的集成电路,其中每个VPE内的所述VMU包括第-一存储器,其适于存储来自多个消息发送器的消息;第--调度器,其适于使消息从所述第一存储器出队,并确定用于将所述出队的消 息发送到多个接收器的次序第二存储器,其与存储传入消息的每个接收器相关联。
3. 根据权利要求2所述的集成电路,其中所述第一存储器被分成适于从相应VPU接 收消息的第一多个虚拟队列;其中所述第一调度器适于确定用于使消息从所述第一多个虚拟队列出队的次序; 其中所述第二存储器被分成适于从相应VPU接收消息的第二多个虚拟队列;且 其中所述集成电路进一步包括第二调度器,其适于确定用于使消息从所述第二多 个虚拟队列出队的次序。
4. 根据权利要求3所述的集成电路,其中每个VPE内的所述VPU和VCU中的每一 者包括第一接收队列,其适于接收从所述第一多个虚拟队列出队的消息;以及 第二接收队列,其适于接收从所述第二多个虚拟队列出队的消息。
5. —种物理处理单元(PPU),其包括外部存储器,其至少存储物理数据;PPU控制引擎(PCE),其包括可编程的PPU控制单元(PCU); 多个并联向量处理引擎(VPE),其中所述VPE中的每一者包括 多个向量处理单元(VPU),其每一者包括适于对用于物理仿真的物理数据执行 计算的数学/逻辑单元分组; 多个VPU控制单元(VCU);直接存储器存取(DMA)子系统,其包括DMA控制器;以及VPE消息传递单兀(VMU),其适于在所述多个VPU、所述多个VCU、所述DMA子系统和所述PCE之问传送消息;以及外部存储器单元(EMU),其在所述外部存储器、所述PCE和所述多个VPE之间提供数据传送路径。
6. 根据权利要求5所述的PPU,其中每个VPE内的所述VMU包括第 一 存储器,其具有读取端口和写入端口且被分成多个通信消息虚拟队列 , 第一调度器,其适于确定用于使消息从所述多个通信消息虚拟队列中出队的次 序;第二存储器,其具有读取端Ul和写入端U且被分成多个D M A请求消息虚拟队列; 以及第二调度器,其适于确定lti于使消息从所述多个DMA请求消息虚拟队列出队的 次序。
7. 根据权利要求6所述的PPU,其中每个消息包括表示一个或一个以上指令、指针、 地址或计算的运算数或结果的数据单元。
8. 根据权利要求7所述的PPU,其中所述DMA子系统进一步包括多个DMA请求队列,其适于接收来自所述DMA请求消息虚拟队列的DMA请 求消息,并将所述DM A请求消息传送到所述DMA控制器以及DMA完成通知队列,其适于接收来自所述DMA控制器的DMA完成通知,并 将所述DMA完成通知传送到所述VCU和VPU。
9. 一种操作集成电路的方法,所述集成电路包括外部存储器、多个并联向量处现引擎(VPE)和一外部存储器单元(EMU),所述多个VPE的每一者包括多个向量处理 单元(VPU)、多个VPU控制单元(VCU)和一 VPE消息单元(VMU),且所述 EMU在所述外部存储器与所述多个VPE之间提供数据传送路径,所述方法包括将来自所述多个VPE的第一 VPE中的VPU的通信消息传送到所述第一 VPE的 VMU中的通信消息虚拟队列;以及将所述通信消息从所述通信消息虚拟队列传送到位于所述第一 VPE的VPU或 VCU中的目的地通信消息接收队列。
10. 根据权利要求9所述的方法,其进一步包括将直接存储器存取(DMA)请求消息从所述第一 VPE中的VPU传送到所述第 一 VPE的所述VMU中的DMA请求消息虚拟队列;将所述DMA请求消息从所述DMA请求消息虚拟队列传送到DMA请求队列; 将所述DMA请求消息从所述DMA请求队列传送到DMA控制器;以及 基于所述DMA请求消息而在所述DMA控制器的控制下执行DMA交易。
11. 根据权利要求IO所述的方法,其进一步包括将与所述DMA请求消息相关联的DMA完成通知传送到DMA完成通知队列; 以及将所述DMA完成通知从所述DMA完成通知队列传送到位于所述第 VPE 'I'的VPU或vcu。
12. 根据权利要求9所述的方法,其进一步包括-在将所述通信消息从所述通信消息虚拟队列传送到所述目的地通信消息接收队 列之前,核查所述通信消息接收队列的占用率等级。
全文摘要
本发明提供一种集成电路,其包括外部存储器、多个并联向量处理引擎(VPE)和外部存储器单元(EMU),所述EMU在所述VPE与所述外部存储器之间提供数据传送路径。每个VPE含有多个数据处理单元和一消息排队系统,所述消息排队系统适于在所述数据处理单元与所述集成电路的其它组件之间传送消息。
文档编号G06F15/163GK101320360SQ20081009930
公开日2008年12月10日 申请日期2008年5月9日 优先权日2007年5月10日
发明者克里斯托弗·兰姆, 桑贾伊·J·帕特尔, 莫尼尔·马厄, 让·皮埃尔·博尔德 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1