CN101320360B - 用于并行集成电路结构的消息排队系统和相关操作方法 - Google Patents
用于并行集成电路结构的消息排队系统和相关操作方法 Download PDFInfo
- Publication number
- CN101320360B CN101320360B CN2008100993042A CN200810099304A CN101320360B CN 101320360 B CN101320360 B CN 101320360B CN 2008100993042 A CN2008100993042 A CN 2008100993042A CN 200810099304 A CN200810099304 A CN 200810099304A CN 101320360 B CN101320360 B CN 101320360B
- Authority
- CN
- China
- Prior art keywords
- dma
- vpu
- message
- vpe
- vcu
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
Abstract
本发明提供一种集成电路,其包括外部存储器、多个并联向量处理引擎(VPE)和外部存储器单元(EMU),所述EMU在所述VPE与所述外部存储器之间提供数据传送路径。每个VPE含有多个数据处理单元和一消息排队系统,所述消息排队系统适于在所述数据处理单元与所述集成电路的其它组件之间传送消息。
Description
技术领域
本发明的实施例大体上涉及用于执行高度并行计算的电路和方法。更明确地说,本发明的实施例涉及适于产生实时物理仿真的集成电路结构和相关方法。
背景技术
计算机游戏的近期发展已越来越需要非常复杂的实时物理仿真。相对简单的基于物理的仿真已经在若干常规环境中存在许多年了。然而,前沿计算机游戏目前是发展复杂、实时、基于物理的仿真的主要商业推动者。
根据一组规定的物理限制(不管此类限制是实际的还是想象的)进行交互的对象和/或环境的任何视觉显示通常可视为“基于物理的”仿真。动画环境和对象通常指配有物理特征(例如,质量、尺寸、位置、摩擦力、移动属性等),且此后允许根据所述组规定的物理限制在视觉上进行交互。通过主机系统使用从所指配的物理特征和所述组规定的物理限制导出的被周期性更新的数据主体来在视觉上显示所有动画对象。下文将此数据主体总称为“物理数据”。
历史上,计算机游戏已经在游戏应用程序内并入了一些有限的基于物理的仿真能力。此类仿真是基于软件的,且使用在主机系统的中央处理单元(CPU)(例如奔腾(Pentium))上运行的专用物理中间件来实施。“主机系统”包含(例如)个人计算机(PC)和控制台游戏系统。
遗憾的是,常规CPU的通用设计显著限制了常规物理仿真的规模和性能。倘若存在各种各样的其它处理要求,那么常规CPU缺乏执行解决作为物理仿真基础的数学和逻辑运算所需的复杂算法所需要的处理时间。也就是说,通过解决由物理数据引起的一组复杂的数学和逻辑问题来产生基于物理的仿真。倘若存在典型数量的物理数据和“物理问题”中所涉及的数学和逻辑运算的复杂性和数目,那么有效的解决方案并不是一个普通的问题。
形成常规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 100通常将基于物理的计算作为耦合到在主机系统上并行运行的主应用程序的次应用程序的一部分来执行。举例来说,主应用程序可包括定义视觉对象集合的“世界状态”(例如,位置、限制等)的交互游戏程序。主应用程序协调游戏程序的用户输入/输出(I/O),并执行世界状态的不断更新。主应用程序还基于用户输入向次应用程序发送数据,且次应用程序执行基于物理的计算以修改世界状态。当次应用程序修改世界状态时,其周期性地且异步地向主应用程序发送经修改的世界状态。
通常通过从位于主机系统中或附近的主存储器以及PPU结构中的各种存储器读取数据和向其写入数据来实施次应用程序与主应用程序之间的各种交互。因此,恰当的存储器管理是此用以产生基于物理的仿真的途径的重要方面。
通过在主应用程序与次应用程序之间划分工作负荷以使得次应用程序与主应用程序并行且异步地运行,PPU以及所述两个应用程序的实施和编程得以显著简化。举例来说,所述划分允许主应用程序在方便时核查对世界状态的更新,而不是强迫其与次应用程序的时序一致。
从系统级观点来看,可以多种不同方式来实施PPU 100。举例来说,PPU 100可实施为连接到主机系统(例如常规CPU)的协处理器芯片。类似地,PPU 100可实施为双核处理器中的一个处理器核心的一部分。实际上,所属领域的技术人员将了解用以在硬件中实施PPU 100的功能性的多种方式。此外,所属领域的技术人员还将了解硬件/软件区别可相对任意,因为硬件能力通常可在软件中实施,且反之亦然。
图1中所说明的PPU包括高带宽外部存储器102、数据移动引擎(DME)101、PPU控制引擎(PCE)103和多个向量处理引擎(VPE)105。VPE 105中的每一者包括:多个向量处理单元(VPU)107,其每一者具有初级(L1)存储器;以及VPU控制单元(VCU)106,其具有次级(L2)存储器。DME 101提供外部存储器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中的每一者可总体视为“数据处理单元”,其是数学/逻辑执行单元(例如浮点处理器和/或标量处理器)的较低等级分组。每个VPU 107的初级存储器L1通常用来存储用于执行各种数学/逻辑运算的指令和数据。所述指令和数据通常在VCU 106中的相应一者的控制下传送到每个VPU 107。每个VCU 106实施PPU的总体存储器控制功能的一个或一个以上功能方面。举例来说,每个VCU 106可向DME 101发布命令,以针对各个VPU 107从PPU存储器102取出数据。
如第10/839,155号专利申请案中描述,图1中所说明的PPU可包含任何数目的VPE105,且每个VPE 105可包含任何数目的VPU 107。然而,PPU 100的总体计算能力并非仅受VPE和VPU的数目限制。举例来说,不管VPE和VPU的数目如何,存储器总线带宽和数据相依性仍可能限制每个VPE可进行的工作量。另外,随着每个VPE的VPU数目增加,每个VPE内的VCU可能由于在VPU与外部存储器102和/或PCU 104之间其必须执行的大量存储器存取命令而变得负担过重。因此,VPU 106可能停止,闲置地等待来自其相应VCU的响应,因此浪费宝贵的计算资源。
总之,尽管增加PPU结构的复杂性可潜在地增加PPU的性能,但例如资源分配和时序问题等其它因素可能同样损害较复杂结构中的性能。
发明内容
根据本发明的一个实施例,一种集成电路包括外部存储器、控制处理器和多个并联VPE。所述VPE中的每一者优选包括多个VPU、多个VCU、DMA控制器和VPE消息传递单元(VMU),所述VMU在多个VPU、多个VCU、DMA控制器和控制处理器之间提供数据传送路径。所述集成电路进一步包括外部存储器单元(EMU),其在外部存储器、控制处理器和多个VPE之间提供数据传送路径。
根据本发明的另一实施例,一种PPU包括至少存储物理数据的外部存储器、包括可编程PCU的PCE以及多个并联VPE。所述VPE中的每一者包括:多个VPU,其每一者包括适于对用于物理仿真的物理数据执行计算的数学/逻辑单元分组;多个VCU;DMA子系统,其包括DMA控制器;以及VMU,其适于在多个VPU、多个VCU、DMA子系统和PCE之间传送消息。所述PPU进一步包括EMU,其在外部存储器、PCE和多个VPE之间提供数据传送路径。
根据本发明的又一实施例,提供一种操作集成电路的方法。所述集成电路包括:外部存储器;多个并联VPE,其每一者包括多个VPU、多个VCU和VMU;以及EMU,其在外部存储器与多个VPE之间提供数据传送路径。所述方法包括将通信消息从所述多个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中执行DMA操作的方法的流程图。
具体实施方式
下文参看相应图式来描述本发明的示范性实施例。呈现这些实施例是为了教示实例。本发明的实际范围由所附权利要求书界定。
一般来说,本发明的实施例经设计以解决在并行计算情况中出现的问题。举例来说,本发明的若干实施例提供用于管理并行操作的数据处理单元集合与外部存储器之间的大量并发存储器交易的机制。本发明的其它实施例提供在数据处理单元之间进行通信的有效方式。
本发明的实施例认识到需要平衡高度专业化硬件平台中的各种设计、实施方案、性能和编程折衷。举例来说,随着所述平台中的并联组件(例如,向量处理单元)的数目增加,协调所述组件的操作和所述组件之间的数据传送所需的联网程度也增加。此联网要求增加了编程复杂性。另外,超长指令字(VLIW)、多线程数据传送和多线程执行的使用也可能增加编程复杂性。此外,随着组件数目增加,所添加的组件可能造成资源(例如,总线)争用。即使额外组件增加了硬件平台的总处理量,它们也可能减小各个组件的响应时间(例如,存储器等待时间)。因此,本发明的实施例适于在这些各种折衷之间找到平衡。
下文在适于执行用于实时物理仿真的数学/逻辑运算的专业化硬件平台的情况下描述本发明。然而,所描述的发明性概念适用于多种其它情况。举例来说,所描述的各种数据传送、调度和通信机制适用于其它并行计算情况,例如图形处理和图像处理(仅举几例)。
图2是根据本发明一个示范性实施例的适于运行基于物理的仿真的PPU 200的方框级图。PPU 200包括外部存储器单元(EMU)201、PCE 203和多个VPE 205。VPE 205中的每一者包括多个VCU 206、多个VPU 207和VPE消息传递单元(VMU)209。PCE203包括PCU 204。出于说明目的,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而不是PCE203或主机系统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中的每一者包含适于促进去往和来自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和/或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传送到VCU206。类似地,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可具有其自身的队列和调度器,或甚至许多队列和调度器。此外,可将来自一个以上队列的消息输入到每个调度器。
图5展示图3所示的调度器506的示范性实施例。图5所示的实施例优选在硬件中实施,以加速将消息从VCU转发到VPU。然而,其还可在软件中实施。
参看图5,调度器506包括逻辑电路702和对应于VPU 207的多个队列703。调度器506接收来自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将来自队列902的消息发送到两个VPU 904,且VPU 904又通过队列905和调度器906将消息发送到其它VPU和VCU。图7B展示VCU 911与多个队列912和调度器913之间存在一对多对应关系的配置。在图7B中,每个调度器913向多个VPU 914中的一者发送消息,且VPU 914中的每一者通过各自队列915和调度器916将消息发送回到VCU911。
图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包括用于将通信消息排队的第一存储器1001和用于将DMA请求消息排队的第二存储器1002。第一和第二存储器都是256×128位存储器,其每一者具有一个读取端口和一个写入端口。第一和第二存储器中的每一者被细分成16个虚拟队列。第一存储器1001中的虚拟队列称为通信消息虚拟队列,且第二存储器1002中的虚拟队列称为DMA请求虚拟队列。
虚拟队列的配置和使用是用户定义的。然而,VMU 209优选保证每个虚拟队列均独立于每一其它虚拟队列而起作用。如果任一虚拟队列的使用或内容从不导致另一虚拟队列停止向前进程,那么两个虚拟队列独立于彼此而起作用。
第一和第二存储器1001和1002中的每个虚拟队列均配置有容量和开始地址。所述容量和开始地址通常以128位(即,一个消息的大小)为单位来指定。举例来说,容量为二(2)的虚拟队列可存储两个消息或256个位。在将虚拟队列的容量设置为零的情况下,那么所述队列被视为无效。然而,所有有效队列通常都具有在2与256之间的容量。
每个虚拟队列还配置有“高水位”占用率阈值,其可在一(1)与所述虚拟队列的容量减去一之间的范围内。在虚拟队列中所存储的数据量超过所述高水位占用率阈值的情况下,虚拟队列可产生信号以指示虚拟队列的行为变化。举例来说,虚拟队列可向PCE203发送中断信号,以指示其将不再接受数据,直到其占用率降到高水位占用率阈值以下为止。
每个虚拟队列还可经配置以在“正常模式”或“环形缓冲模式”下操作。在环形缓冲模式下,忽略高水位占用率阈值,且新数据总是可入队到虚拟队列中,即使新数据覆写在存储于虚拟队列中的旧数据上方。在虚拟队列中的旧数据被新数据覆写的情况下,虚拟队列中的读取指针和写入指针通常发生移动,使得读取指针指向虚拟队列中的最旧数据,且写入指针指向将写入数据的下一个地址。
每个通信消息虚拟队列均配置有一组目的地。举例来说,在图8所示的VPE中,对于总共十一(11)个目的地,可能的目的地包含八(8)个VPU 207、两(2)个VCU 205和PCE 203。所述十一个目的地通常被编码为十一(11)位位串,使得每个虚拟队列可经配置以向所述十一个目的地的任一子集发送消息。
一种用以配置虚拟队列的各种特性的方式是通过将所述虚拟队列的每一者的配置信息存储在存储器映射的配置寄存器中。所述存储器映射的配置寄存器通常被映射到PCE 203的存储器地址空间和VCU 206的存储器地址空间上。VCU 206可存取存储在其中的配置信息,但虚拟队列优选仅由PCE 203配置。
VPU 207和VCU 206每一者包括用于接收来自VMU 209的消息的两(2)个先进先出队列(FIFO)。所述两个FIFO被共同称为“接收FIFO”,且它们包含通信消息接收FIFO和DMA完成通知接收FIFO。每个通信消息接收FIFO优选包括8条目乘以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独立于彼此而起作用。换句话说,一个接收FIFO的使用或内容将不会停止另一接收FIFO的向前进程。
同样类似于VMU 209中的虚拟队列,通信消息接收FIFO具有可配置的高水位占用率阈值。当通信消息接收FIFO的占用率达到高水位占用率阈值时,通信消息接收FIFO产生反压力指示,以防止更多消息被发送到所述FIFO。通信消息接收FIFO的高水位占用率阈值通常在1与5之间,其中默认值为5。
在被配置为特定通信消息虚拟队列的目的地的所有通信消息接收FIFO都达到其各自高水位占用率阈值的情况下,通信消息虚拟队列被阻止向那些目的地发送任何通信消息。因此,通信消息虚拟队列可能填满,从而导致随后将数据入队到所述虚拟队列的试图失败。
通信消息虚拟队列内的所有通信消息都适合以FIFO次序传送到相应的通信消息接收FIFO。然而,VMU 209每时钟周期只能将一个通信消息传送到接收FIFO。因此,VMU209中包含调度器1003,以提供通信消息虚拟队列之间的公平性。
调度器1003通常使用循环调度技术来调度通信消息虚拟队列与通信消息接收FIFO之间的数据传送。根据此技术,调度器以循环次序检查每个通信消息虚拟队列。在所检查的虚拟队列不为空,且所述虚拟队列中的下一个通信消息具有不高于其高水位占用率阈值的目的地通信消息接收FIFO的情况下,调度器向目的地通信消息接收FIFO发送通信消息。为了促进通信消息虚拟队列的有效检查,调度器1003针对每个通信消息虚拟队列中的下一个消息维持目的地通信消息接收FIFO的指示。这允许调度器1003有效地核查目的地通信消息接收FIFO是否高于其各自高水位占用率阈值。
在所有通信消息虚拟队列都为空或所有其相应目的地通信消息接收FIFO都高于其各自高水位占用率阈值的情况下,通信消息虚拟队列与通信消息接收FIFO之间不传送数据。否则,调度器1003所选择的通信消息从通信消息虚拟队列中的一者的头部移动到通信消息接收FIFO中的一者的尾部。
第二存储器1002中的DMA请求消息虚拟队列接收来自VPU 207和VCU 206的DMA请求消息。每个DMA请求消息通常包括128位的信息,以及可选的32位DMA完成通知。DMA请求消息通过DMA请求消息虚拟队列传送到一组DMA请求FIFO1007。从DMA请求消息虚拟队列传送消息的次序由调度器1004确定。
DMA请求FIFO 1007中的DMA请求消息被传送到DMA控制器1008,所述DMA控制器1008基于所述DMA请求消息而执行DMA交易。典型的DMA交易包括(例如)将数据移动到和/或移动出与VPU 207和/或VCU 206相关联的各个存储器。在完成DMA交易后,便将与已起始DMA交易的DMA请求消息相关联的任何DMA完成通知从DMA控制器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请求消息。
除非满足以下条件中的一者或一者以上,否则就在当前时钟周期期间将下一个DMA请求消息传送到DMA请求FIFO:DMA请求FIFO 1007全部已满;下一个DMA请求消息具有以已满或高于其高水位占用率阈值的DMA完成通知接收FIFO为目的地的DMA完成通知;或者,DMA请求消息具有相关联的ECN消息,且所述ECN消息的目的地通信消息FIFO已满。
为了提供虚拟队列之间的真实独立性,VMU 209必须防止DMA完成通知FIFO 1009阻止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交易将数据从ISM1011广播到若干或所有VPU 207的指令存储器。
可由DMA请求消息起始的另一类型的DMA交易是原子EMU DMA交易。在原子EMU DMA交易中,DMA控制器1008使用“加载锁定”和“条件存储”语义学来在ISM1011与EMU存储器1012之间移动数据。更具体地说,当将数据从EMU存储器1012传送到ISM 1011时可使用加载锁定语义学,且当将数据从ISM 1011传送到EMU存储器1012时使用条件存储语义学。
加载锁定语义学和条件存储语义学两者均依赖于借以通过使EMU存储器1012中的地址与VPE 205的一者内的特定虚拟队列的识别符相关联来“锁定”所述地址的机制。识别符与所述地址相关联的虚拟队列被说成对所述地址具有“锁定”。而且,当虚拟队列对地址具有锁定时,所述地址被说成“被锁定”。如果另一识别符变成与所述地址相关联,那么所述虚拟队列被说成“丧失”或“释放”锁定。
当来自虚拟队列的DMA请求消息指令DMA控制器1008执行从EMU存储器1012到ISM 1011的读取操作时,虚拟队列通常获得对EMU存储器1012中的地址的锁定。涉及获得对地址的锁定的读取操作被称为“加载锁定”操作。一旦虚拟队列具有锁定,EMU存储器1012中的EMU控制器(未图示)便可启动计时器。所述计时器通常经配置以具有有限的持续时间。如果将所述持续时间设置为零,那么将不使用所述计时器。当计时器正在运行时,任何随后的对EMU存储器1012中的地址的读取操作都不会解锁或锁定任何地址。使用计时器减小了由来自一个VPE的DMA交易锁定的地址将被来自另一VPE的DMA交易存取的可能性。
当计时器不在运行时,随后的对所述地址的读取操作将释放旧的锁定,并创建新的锁定。换句话说,另一虚拟队列识别符将变得与所述地址相关联。
“条件存储”操作是从EMU存储器1012到ISM 1011的写入操作,其只有在源自对写入操作的目的地地址具有锁定的虚拟队列时才成功。
如同其它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中,调度器核查所述通信消息的目的地接收FIFO的占用率。最后,在步骤1103中,如果所述目的地接收FIFO的占用率低于预定高水位占用率阈值,那么将所述通信消息传送到所述目的地接收FIFO。
参看图10,所述在VPE中执行DMA操作的方法包括以下步骤。首先,在步骤1201中,VPU或VCU将DMA请求消息写入到多个DMA请求消息队列中的一者。接下来,在步骤1202中,将所述DMA请求消息从DMA请求消息队列传送到DMA请求FIFO。接着,在步骤1203中,将所述DMA请求消息传送到DMA控制器,且DMA控制器基于所述DMA请求消息而执行DMA操作。最后,在步骤1204中,将与所述DMA请求消息相关联的DMA完成通知发送到所述VPE内的一个或一个以上VPU和/或VCU中的DMA完成通知接收FIFO。
前述优选实施例是教示实例。所属领域的技术人员将了解,可在不脱离如由所附权利要求书界定的本发明范围的情况下对示范性实施例作出形式和细节上的各种改变。
Claims (12)
1.一种集成电路,其包括:
外部存储器;
控制处理器;
多个并联向量处理引擎VPE,其中所述VPE中的每一者包括多个向量处理单元VPU、多个VPU控制单元VCU、一个直接存储器存取DMA控制器和一个VPE消息传递单元VMU,所述VMU在所述多个VPU、所述多个VCU和所述DMA控制器之间耦合,并且通过外部存储单元EMU与所述控制处理器耦合,其中所述VMU包括第一调度器和第二调度器,所述第一调度器被配置以调度在所述多个VPU和所述多个VCU之间的消息传送,所述第二调度器被配置以调度从所述多个VPU和所述多个VCU接收的DMA请求传送到所述DMA控制器,以防止DMA完成通知阻止所述DMA请求;以及
外部存储器单元EMU,其在所述外部存储器、所述控制处理器和所述多个VPE之间耦合。
2.根据权利要求1所述的集成电路,其中每个VPE内的所述VMU包括:
第一存储器,其适于存储从所述多个VPU和所述多个VCU接收的消息,其中所述第一调度器适于使消息从所述第一存储器出队,并确定用于将所述出队的消息发送到所述多个VPU和所述多个VCU的次序;以及
第二存储器,其与存储传入消息的所述多个VPU和所述多个VCU的每个接收VPU或VCU相关联。
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子系统之间传送消息,并且适于经由外部存储器单元EMU传送消息给所述PCE,其中所述VMU包括第一调度器和第二调度器,所述第一调度器被配置以调度在所述多个VPU和所述多个VCU之间的消息传送,所述第二调度器被配置以调度从所述多个VPU和所述多个VCU接收的DMA请求传送到所述DMA控制器,以防止DMA完成通知阻止所述DMA请求;以及
PPU外部存储器单元EMU,其在所述外部存储器、所述PCE和所述多个VPE之间耦合。
6.根据权利要求5所述的PPU,其中每个VPE内的所述VMU包括:
第一存储器,其具有读取端口和写入端口且被分成多个通信消息虚拟队列,其中所述第一调度器适于确定用于使消息从所述多个通信消息虚拟队列中出队的次序以调度在所述多个VPU和所述多个VCU之间的所述消息传送;以及
第二存储器,其具有读取端口和写入端口且被分成多个DMA请求消息虚拟队列,其中所述第二调度器适于确定用于使消息从所述多个DMA请求消息虚拟队列出队的次序以调度从所述多个VPU和所述多个VCU接收的DMA请求传送到所述DMA控制器。
7.根据权利要求6所述的PPU,其中每个消息包括表示一个或一个以上指令、指针、地址或计算的运算数或结果的数据单元。
8.根据权利要求7所述的PPU,其中所述DMA子系统进一步包括:
多个DMA请求先进先出队列,其适于接收来自所述DMA请求消息虚拟队列的DMA请求消息,并将所述DMA请求消息传送到所述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.根据权利要求10所述的方法,其进一步包括:
将与所述DMA请求消息相关联的DMA完成通知传送到DMA完成通知先进先出队列;以及
将所述DMA完成通知从所述DMA完成通知先进先出队列传送到位于所述第一VPE中的VPU或VCU。
12.根据权利要求9所述的方法,其进一步包括:
在将所述通信消息从所述通信消息虚拟队列传送到所述目的地通信消息接收先进先出队列之前,使用针对所述下一个通信消息的所述目的地通信消息接收先进先出队列的所述占用率等级的指示核查所述目的地通信消息接收先进先出队列的占用率等级。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/798,119 US7627744B2 (en) | 2007-05-10 | 2007-05-10 | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
US11/798,119 | 2007-05-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101320360A CN101320360A (zh) | 2008-12-10 |
CN101320360B true CN101320360B (zh) | 2012-03-21 |
Family
ID=39537379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100993042A Active CN101320360B (zh) | 2007-05-10 | 2008-05-09 | 用于并行集成电路结构的消息排队系统和相关操作方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7627744B2 (zh) |
JP (1) | JP4428485B2 (zh) |
KR (1) | KR100932038B1 (zh) |
CN (1) | CN101320360B (zh) |
DE (1) | DE102008022080B4 (zh) |
GB (1) | GB2449168B (zh) |
TW (1) | TWI416405B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8082289B2 (en) | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
US20080240324A1 (en) * | 2007-03-27 | 2008-10-02 | Microsoft Corporation | Independent Dispatch of Multiple Streaming Queues Via Reserved Time Slots |
US20100161914A1 (en) * | 2008-12-23 | 2010-06-24 | Eilert Sean S | Autonomous memory subsystems in computing platforms |
US8493979B2 (en) | 2008-12-30 | 2013-07-23 | Intel Corporation | Single instruction processing of network packets |
US20100268743A1 (en) * | 2009-04-15 | 2010-10-21 | Hallyal Basavaraj G | Apparatus and methods for tree management assist circuit in a storage system |
US20100268904A1 (en) * | 2009-04-15 | 2010-10-21 | Sheffield Robert L | Apparatus and methods for region lock management assist circuit in a storage system |
US8131889B2 (en) | 2009-11-10 | 2012-03-06 | Apple Inc. | Command queue for peripheral component |
CN101847093B (zh) * | 2010-04-28 | 2013-09-04 | 中国科学院自动化研究所 | 具有可重构低功耗数据交织网络的数字信号处理器 |
CN101833441B (zh) * | 2010-04-28 | 2013-02-13 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
US8407389B2 (en) * | 2010-07-20 | 2013-03-26 | International Business Machines Corporation | Atomic operations with page migration in PCIe |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US9021146B2 (en) | 2011-08-30 | 2015-04-28 | Apple Inc. | High priority command queue for peripheral component |
SE537552C2 (sv) * | 2011-12-21 | 2015-06-09 | Mediatek Sweden Ab | Digital signalprocessor |
CN102609245B (zh) * | 2011-12-22 | 2014-09-17 | 中国科学院自动化研究所 | 一种两级运算架构的异构多核处理器 |
US9135081B2 (en) * | 2012-10-26 | 2015-09-15 | Nvidia Corporation | Work-queue-based graphics processing unit work creation |
US9268695B2 (en) | 2012-12-12 | 2016-02-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Methods and structure for using region locks to divert I/O requests in a storage controller having multiple processing stacks |
US9401857B2 (en) | 2013-03-15 | 2016-07-26 | International Business Machines Corporation | Coherent load monitoring of physical and virtual networks with synchronous status acquisition |
US9253096B2 (en) * | 2013-03-15 | 2016-02-02 | International Business Machines Corporation | Bypassing congestion points in a converged enhanced ethernet fabric |
US9219689B2 (en) | 2013-03-15 | 2015-12-22 | International Business Machines Corporation | Source-driven switch probing with feedback request |
US9954781B2 (en) | 2013-03-15 | 2018-04-24 | International Business Machines Corporation | Adaptive setting of the quantized congestion notification equilibrium setpoint in converged enhanced Ethernet networks |
IN2013MU03528A (zh) * | 2013-11-08 | 2015-07-31 | Tata Consultancy Services Ltd | |
IN2013MU03527A (zh) * | 2013-11-08 | 2015-07-31 | Tata Consultancy Services Ltd | |
US10754818B2 (en) | 2014-08-12 | 2020-08-25 | ArchiTek Corporation | Multiprocessor device for executing vector processing commands |
US9830275B2 (en) * | 2015-05-18 | 2017-11-28 | Imagination Technologies Limited | Translation lookaside buffer |
US11416422B2 (en) | 2019-09-17 | 2022-08-16 | Micron Technology, Inc. | Memory chip having an integrated data mover |
US11163490B2 (en) * | 2019-09-17 | 2021-11-02 | Micron Technology, Inc. | Programmable engine for data movement |
US11397694B2 (en) | 2019-09-17 | 2022-07-26 | Micron Technology, Inc. | Memory chip connecting a system on a chip and an accelerator chip |
JP7161517B2 (ja) * | 2020-11-18 | 2022-10-26 | 財團法人工業技術研究院 | マルチスレッド追跡方法、オペレーティングシステムのマルチスレッド追跡システム、およびそれを使用した電子装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149875B2 (en) * | 2003-03-27 | 2006-12-12 | Micron Technology, Inc. | Data reordering processor and method for use in an active memory device |
CN1916877A (zh) * | 2005-08-19 | 2007-02-21 | 国际商业机器公司 | 在处理器与存储器流控制器间传送命令参数的系统和方法 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5010477A (en) * | 1986-10-17 | 1991-04-23 | Hitachi, Ltd. | Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations |
US5123095A (en) * | 1989-01-17 | 1992-06-16 | Ergo Computing, Inc. | Integrated scalar and vector processors with vector addressing by the scalar processor |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
JPH07504054A (ja) * | 1992-02-18 | 1995-04-27 | アプル・コンピュータ・インコーポレーテッド | コンピュータシステムにおけるコプロセッサのプログラミングモデル |
US5664162A (en) * | 1994-05-23 | 1997-09-02 | Cirrus Logic, Inc. | Graphics accelerator with dual memory controllers |
US5666497A (en) * | 1995-03-08 | 1997-09-09 | Texas Instruments Incorporated | Bus quieting circuits, systems and methods |
US5796400A (en) * | 1995-08-07 | 1998-08-18 | Silicon Graphics, Incorporated | Volume-based free form deformation weighting |
US5818452A (en) * | 1995-08-07 | 1998-10-06 | Silicon Graphics Incorporated | System and method for deforming objects using delta free-form deformation |
US5765022A (en) * | 1995-09-29 | 1998-06-09 | International Business Machines Corporation | System for transferring data from a source device to a target device in which the address of data movement engine is determined |
US6331856B1 (en) * | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
JPH09161095A (ja) * | 1995-12-07 | 1997-06-20 | Sega Enterp Ltd | 画像処理装置 |
US6317819B1 (en) * | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
KR100269106B1 (ko) * | 1996-03-21 | 2000-11-01 | 윤종용 | 멀티프로세서 그래픽스 시스템 |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US5812147A (en) * | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
US5892691A (en) * | 1996-10-28 | 1999-04-06 | Reel/Frame 8218/0138 Pacific Data Images, Inc. | Method, apparatus, and software product for generating weighted deformations for geometric models |
JP3681026B2 (ja) * | 1997-03-27 | 2005-08-10 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および方法 |
US6324623B1 (en) * | 1997-05-30 | 2001-11-27 | Oracle Corporation | Computing system for implementing a shared cache |
JPH1165989A (ja) * | 1997-08-22 | 1999-03-09 | Sony Computer Entertainment:Kk | 情報処理装置 |
US6223198B1 (en) * | 1998-08-14 | 2001-04-24 | Advanced Micro Devices, Inc. | Method and apparatus for multi-function arithmetic |
JP3597360B2 (ja) * | 1997-11-17 | 2004-12-08 | 株式会社リコー | モデリング方法および記録媒体 |
US6317820B1 (en) * | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
JP3017986B1 (ja) * | 1998-11-26 | 2000-03-13 | コナミ株式会社 | ゲームシステムおよびコンピュータ読み取り可能な記憶媒体 |
JP2000222590A (ja) * | 1999-01-27 | 2000-08-11 | Nec Corp | 画像処理方法及び装置 |
KR100356919B1 (ko) * | 1999-07-19 | 2002-10-19 | 한국전자통신연구원 | 메시지큐와 공유메모리를 결합 이용한 프로세스 간의 통신 방법 |
US6341318B1 (en) * | 1999-08-10 | 2002-01-22 | Chameleon Systems, Inc. | DMA data streaming |
GB0005750D0 (en) * | 2000-03-10 | 2000-05-03 | Mathengine Plc | Image display apparatus and method |
US6608631B1 (en) * | 2000-05-02 | 2003-08-19 | Pixar Amination Studios | Method, apparatus, and computer program product for geometric warps and deformations |
US7058750B1 (en) * | 2000-05-10 | 2006-06-06 | Intel Corporation | Scalable distributed memory and I/O multiprocessor system |
US6967658B2 (en) * | 2000-06-22 | 2005-11-22 | Auckland Uniservices Limited | Non-linear morphing of faces and their dynamics |
US6829697B1 (en) * | 2000-09-06 | 2004-12-07 | International Business Machines Corporation | Multiple logical interfaces to a shared coprocessor resource |
US6867770B2 (en) * | 2000-12-14 | 2005-03-15 | Sensable Technologies, Inc. | Systems and methods for voxel warping |
US6779049B2 (en) * | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
DE10106023A1 (de) * | 2001-02-09 | 2002-08-29 | Fraunhofer Ges Forschung | Verfahren und Vorrichtung zur Kollisionserkennung von Objekten |
US7231500B2 (en) | 2001-03-22 | 2007-06-12 | Sony Computer Entertainment Inc. | External data interface in a computer architecture for broadband networks |
US7093104B2 (en) * | 2001-03-22 | 2006-08-15 | Sony Computer Entertainment Inc. | Processing modules for computer architecture for broadband networks |
US6966837B1 (en) * | 2001-05-10 | 2005-11-22 | Best Robert M | Linked portable and video game systems |
US7120653B2 (en) * | 2002-05-13 | 2006-10-10 | Nvidia Corporation | Method and apparatus for providing an integrated file system |
US20040075623A1 (en) * | 2002-10-17 | 2004-04-22 | Microsoft Corporation | Method and system for displaying images on multiple monitors |
US7200840B2 (en) * | 2002-10-24 | 2007-04-03 | International Business Machines Corporation | Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture |
US20040193754A1 (en) * | 2003-03-27 | 2004-09-30 | International Business Machines Corporation | DMA prefetch |
US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
TW200513959A (en) * | 2003-10-02 | 2005-04-16 | Ageia Technologies Inc | Method for providing physics simulation data |
US20050086040A1 (en) * | 2003-10-02 | 2005-04-21 | Curtis Davis | System incorporating physics processing unit |
US7421303B2 (en) * | 2004-01-22 | 2008-09-02 | Nvidia Corporation | Parallel LCP solver and system incorporating same |
WO2005074425A2 (en) | 2004-01-22 | 2005-08-18 | Ageia Technologies, Inc. | Parallel lcp solver and system incorporating same |
US7236170B2 (en) * | 2004-01-29 | 2007-06-26 | Dreamworks Llc | Wrap deformation using subdivision surfaces |
US20050251644A1 (en) * | 2004-05-06 | 2005-11-10 | Monier Maher | Physics processing unit instruction set architecture |
TWI257790B (en) * | 2004-10-29 | 2006-07-01 | Ind Tech Res Inst | System for protocol processing engine |
US7630388B2 (en) * | 2005-05-04 | 2009-12-08 | Arm Limited | Software defined FIFO memory for storing a set of data from a stream of source data |
US8149854B2 (en) * | 2005-06-30 | 2012-04-03 | Intel Corporation | Multi-threaded transmit transport engine for storage devices |
JP2007293533A (ja) * | 2006-04-24 | 2007-11-08 | Toshiba Corp | プロセッサシステム及びデータ転送方法 |
-
2007
- 2007-05-10 US US11/798,119 patent/US7627744B2/en active Active
-
2008
- 2008-05-05 DE DE102008022080A patent/DE102008022080B4/de active Active
- 2008-05-07 GB GB0808251A patent/GB2449168B/en active Active
- 2008-05-09 TW TW097117334A patent/TWI416405B/zh active
- 2008-05-09 KR KR1020080043541A patent/KR100932038B1/ko active IP Right Grant
- 2008-05-09 CN CN2008100993042A patent/CN101320360B/zh active Active
- 2008-05-12 JP JP2008124877A patent/JP4428485B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149875B2 (en) * | 2003-03-27 | 2006-12-12 | Micron Technology, Inc. | Data reordering processor and method for use in an active memory device |
CN1916877A (zh) * | 2005-08-19 | 2007-02-21 | 国际商业机器公司 | 在处理器与存储器流控制器间传送命令参数的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
DE102008022080A1 (de) | 2008-12-11 |
CN101320360A (zh) | 2008-12-10 |
TW200901028A (en) | 2009-01-01 |
JP2009037593A (ja) | 2009-02-19 |
GB0808251D0 (en) | 2008-06-11 |
US20080282058A1 (en) | 2008-11-13 |
TWI416405B (zh) | 2013-11-21 |
JP4428485B2 (ja) | 2010-03-10 |
GB2449168A (en) | 2008-11-12 |
US7627744B2 (en) | 2009-12-01 |
KR20080099823A (ko) | 2008-11-13 |
DE102008022080B4 (de) | 2011-05-05 |
KR100932038B1 (ko) | 2009-12-15 |
GB2449168B (en) | 2009-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101320360B (zh) | 用于并行集成电路结构的消息排队系统和相关操作方法 | |
KR102228501B1 (ko) | 컴파일러 방법 | |
EP2480979B1 (en) | Unanimous branch instructions in a parallel thread processor | |
US10002031B2 (en) | Low overhead thread synchronization using hardware-accelerated bounded circular queues | |
TW202115575A (zh) | 靜止可重組態的資料處理器 | |
CN104094235B (zh) | 多线程计算 | |
CN103221936A (zh) | 一种用于处理集群的共享功能存储器电路 | |
US9921873B2 (en) | Controlling work distribution for processing tasks | |
CN103999051A (zh) | 用于着色器核心中着色器资源分配的策略 | |
US20130198760A1 (en) | Automatic dependent task launch | |
US20130145124A1 (en) | System and method for performing shaped memory access operations | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
CN107092573A (zh) | 异构计算系统中的工作窃取 | |
JP5309703B2 (ja) | 共有メモリの制御回路、制御方法及び制御プログラム | |
WO2008036852A1 (en) | Graphics processors with parallel scheduling and execution of threads | |
CN104050033A (zh) | 用于有索引的屏障的硬件调度的系统和方法 | |
CN101183304A (zh) | 并发非阻塞无锁队列及其实施方法和装置 | |
CN100489770C (zh) | 处理指令的系统和方法 | |
CN103207810A (zh) | 计算任务状态封装 | |
CN100489830C (zh) | 面向科学计算的64位流处理器芯片 | |
US20130185725A1 (en) | Scheduling and execution of compute tasks | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
TWI489289B (zh) | 分散作業的預先排程重播 | |
TW202109286A (zh) | 純函數語言神經網路加速器系統及結構 | |
US9946665B2 (en) | Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |