CN116701292A - 用于芯片间通信的处理系统和通信方法 - Google Patents
用于芯片间通信的处理系统和通信方法 Download PDFInfo
- Publication number
- CN116701292A CN116701292A CN202210173584.7A CN202210173584A CN116701292A CN 116701292 A CN116701292 A CN 116701292A CN 202210173584 A CN202210173584 A CN 202210173584A CN 116701292 A CN116701292 A CN 116701292A
- Authority
- CN
- China
- Prior art keywords
- parallel processing
- ppu
- communication
- processing units
- processing unit
- 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.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 192
- 230000006854 communication Effects 0.000 title claims abstract description 190
- 238000012545 processing Methods 0.000 title claims abstract description 188
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000015654 memory Effects 0.000 claims abstract description 49
- 230000003068 static effect Effects 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 23
- 238000013528 artificial neural network Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 235000008694 Humulus lupulus Nutrition 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 235000003642 hunger Nutrition 0.000 description 3
- 230000037351 starvation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种用于芯片间通信的处理系统和通信方法,该处理系统包括:多个并行处理单元,所述并行处理单元包括在第一芯片中,每个所述并行处理单元包括:多个处理核;多个存储器,所述多个存储器的第一存储器组与所述多个处理核的第一处理核组耦合;多个互连,位于芯片互连网络中,所述多个互连被配置为通信耦合所述多个并行处理单元,其中每个所述并行处理单元被配置为根据相应路由表通过所述芯片互连网络进行通信,所述相应路由表被存储和驻留在相应并行处理单元的寄存器中,并且所述相应路由表包括到任何其他给定并行处理单元的多个路径的信息。本公开实现了芯片间高效和有效的网络通信。
Description
技术领域
本公开涉及芯片互连网络中的信息处理和通信领域,尤其涉及用于芯片间通信的处理系统和通信方法。
背景技术
许多电子技术,例如,数字计算机、计算器、音频设备、视频设备和电话系统,有助于在商业、科学、教育和娱乐的大多数领域中提高对数据与信息进行分析与通信的生产率,降低成本。电子组件可用于许多重要应用(例如,医疗程序、车辆辅助操作、金融应用,等等),这些活动频繁地涉及处理和存储大量信息。为了应对大量的处理过程,系统可以包括许多互连的处理芯片。在许多应用中,系统快速且准确地处理信息是非常重要的。快速且准确地处理信息的能力通常取决于处理芯片之间的通信。在芯片互连网络中建立快速且可靠的信息通信可能存在问题和困难。
图1是示出可以用于加速神经网络的示例常规系统100的框图。通常,系统100包括多个服务器,并且每个服务器包括多个并行计算单元(parallel computing unit,PPU)。在图1的示例中,系统100包括服务器101和服务器102。服务器101包括连接到外围组件互连高速(Peripheral Component Interconnect Express,PCIe)总线111的多个并行处理单元PPU_0至PPU_n,并且服务器102包括连接到PCIe总线112的类似的PPU阵列。每个PPU包括诸如处理核和存储器(未示出)等的元件。在一个实施例中,PPU可以是神经网络处理单元(neural network processing unit,NPU)。在一个示例性的实施例中,多个NPU被布置为并行配置。系统100中的每个服务器包括主中央处理单元(CPU),并且如图1所示,系统100中的每个服务器经由相应的网络接口控制器或卡(network interface controller card,NIC)连接到网络130。
系统100包括统一存储器寻址空间,该统一存储器寻址空间例如采用分区全局地址空间(partitioned global address space,PGAS)编程模型。因此,在图1的示例中,服务器101的每个PPU可以从服务器101或服务器102的任何其他PPU上的存储器读取数据或向服务器101或服务器102的任何其他PPU上的存储器写入数据,反之亦然。例如,为了将数据从服务器101的PPU_0写入PPU_n,通过PCIe总线111将数据从PPU_0发送到PPU_n;以及为了将数据从服务器101的PPU_0写入服务器102的PPU_m上的存储器,通过PCIe总线111将数据从PPU_0发送到NIC 121,然后通过网络130将数据发送到NIC 122,然后通过PCIe总线112将数据发送到PPU_m。
系统100可以用于诸如但不限于图形分析和图形神经网络的应用,更具体地,系统100可以用于诸如但不限于在线购物引擎、社交网络、推荐引擎、映射引擎、故障分析、网络管理和搜索引擎的应用。这些应用执行大量存储器访问请求(例如,读和写请求),因此其还传送(例如,读和写)大量用于处理的数据。尽管PCIe的带宽和数据传输速率相当高,但其仍然限制这些应用。对于这些应用来说,PCIe通常被认为速度太慢且其带宽太窄。
发明内容
本公开实施例提供了上述问题的解决方案。本公开实施例可改善通用计算系统和诸如,但不限于,神经网络和人工智能(Artificial Intelligence,AI)工作负载的应用的功能。更具体地说,根据本公开实施例提供的方法、系统和编程模型,该方法、系统和编程模型通过提高系统元件之间发送和接收存储器访问请求(例如,读请求和写请求)以及完成结果数据传输的速度,提高诸如神经网络和AI工作负载等的应用的执行速度。本公开的系统、方法和编程模型允许系统中的处理单元在不使用经由相对窄且慢的外围组件互连高速(Peripheral Component Interconnect Express,PCIe)总线的传统网络(例如,以太网)的情况下进行通信。
在一些实施例中,系统包括允许系统中并行处理单元之间通信的高带宽芯片互连网络(inter-chip network,ICN)。例如,ICN允许PPU与同一计算节点或服务器上的其他PPU通信,也允许与其他计算节点或服务器上的PPU通信。在一些实施例中,通信可以在命令级(例如,在直接存储器访问级)和指令级(例如,更细粒度的加载/存储指令级)。ICN允许系统中的PPU在不使用PCIe总线的情况下进行通信,从而避免其带宽限制和相对速度不足。相应路由表包括到任何其他给定PPU的多个路径的信息。
根据方法实施例,可执行包括创建静态预定路由表的设置操作。通信数据包可从源并行处理单元被转发,其中通信数据包是根据静态预定路由表形成和转发的。通信数据包可在目标并行处理单元被接收。网络中的多个并行处理单元中的相应并行处理单元中包括源PPU和目标PPU。多个处理核的第一处理核组包括在第一芯片中,多个处理核的第二处理核组包括在第二芯片中,且多个处理单元通过多个互连进行并行通信,根据静态预定路由表配置相应的通信。
根据本公开的另一实施例,系统包括第一计算节点中的第一并行处理单元组。第一并行处理单元组中的相应并行处理单元包括在单独的相应芯片中。系统还包括第二计算节点中的第二并行处理单元组。第二并行处理单元组中的相应并行处理单元包括在单独的相应芯片中。系统还包括芯片互连网络(ICN)中的多个互连,多个互连被配置为通信耦合第一并行处理单元组和第二并行处理单元组。第一并行处理单元组和第二并行处理单元组中的并行处理单元通过多个互连进行通信,并且根据驻留在第一并行处理单元组和第二并行处理单元组的相应并行处理单元的存储特征中的路由表来配置相应的通信。多个互连被配置为通过至少两个路径将从第一计算节点中的第一并行处理单元到第二计算节点中的第二并行处理单元的并行通信耦合。
通过上述方案,可以在不使用PCIe总线的情况下实现系统中的神经网络处理单元之间的通信,从而避免其带宽限制和相对速度不足,从而提高芯片间通信的数据传输速率和传输带宽。并行处理单元根据相应路由表通过芯片互连网络进行通信,相应路由表包括到任何其他给定并行处理单元的多个路径的信息,从源并行处理单元可以并行和/或重叠地转发多个通信数据包中的至少两个通信数据包,从而进一步提高芯片间通信的数据传输速率和传输带宽。
本领域普通技术人员在阅读在各附图中示出的实施例的以下详细描述后,将认识到本公开的各种实施例的这些和其他目的和优点。
附图说明
包含在本说明书中且形成本说明书的一部分的附图示出了本公开的实施例,并且与详细描述一起用于解释本公开的原理,其中类似的编号描述了类似的元件。
图1示出了示例常规系统。
图2A示出了根据本公开实施例的示例系统的框图。
图2B示出了根据本公开实施例的示例ICN拓扑结构的框图。
图2C示出了根据本公开实施例的示例并行处理单元的框图。
图3示出了根据本公开实施例的示例统一存储器寻址空间的框图。
图4示出了根据本公开实施例的示例缩放层次结构的框图。
图5A、图5B、图5C和图5D示出了根据本公开实施例的通信网络的示例部分的框图。
图6示出了根据本公开实施例的通信网络的示例部分的框图。
图7示出了根据本公开实施例的通信网络的示例部分的框图。
图8示出了根据本公开实施例的基于不同数量的物理地址比特交织的示例不同工作负载均衡。
图9示出了根据本公开实施例的示例通信方法的流程图。
图10示出了根据本公开实施例的示例并行通信方法的流程图。
具体实施例
现在将详细参考本公开的各种实施例,其示例在附图中示出。尽管结合这些实施例进行描述,但将理解,它们并不旨在将本公开限制到这些实施例。相反,本公开旨在涵盖可包括在所附权利要求所定义的本公开的精神和范围内的替代、修改和等同物。此外,在本公开的以下详细描述中,为了提供对本公开的透彻理解,阐述了许多具体细节。然而,将理解,本公开可以在没有这些特定细节的情况下实施。在其他实例中,未详细描述公知的方法、过程、组件和电路,以便避免不必要地模糊本公开的方面。
以下详细描述的某些部分以过程、逻辑块、处理和对计算机存储器中的数据位的操作的其他符号表示的方式呈现。这些描述和表示是数据处理技术领域的技术人员使用的手段,以最有效地将其工作的实质传达给本领域的其他技术人员。在本公开中,过程、逻辑块、处理等被认为是导致期望结果的步骤或指令的自洽序列。这些步骤是那些利用物理量的物理操作的步骤。通常,尽管不是必须的,这些量采取电或磁信号的形式,能够在计算系统中存储、传输、组合、比较和以其他方式操纵。事实证明,主要是出于常见用法的原因,将这些信号称为事务、比特、值、元素、符号、字符、样本、像素等有时是方便的。
但是,应该记住,所有这些和类似术语都是与适当的物理量相关联的,且仅仅是应用于这些量的方便的标签。除非从下面的讨论中明确指出,否则可以理解,在整个本公开中,使用诸如“访问”、“分配”、“存储”、“接收”、“发送”、“写入”、“读取”、“发射”、“加载”、“推送”、“拉动”、“处理”、“缓存”、“路由”、“确定”、“选择”、“请求”、“同步”、“复制”、“映射”、“更新”、“转换”、“生成”、“分配”等术语的讨论指的是设备或计算系统(例如,图7、8、9和10的方法)或类似的电子计算设备、系统或网络(例如,图2A的系统及其组件和元件)的动作和过程。计算系统或类似电子计算设备操纵和变换在存储器、寄存器或其他此类信息存储、传输或显示设备中表示为物理(电子)量的数据。
这里描述的一些元件或实施例可以在驻留在某种形式的计算机可读存储介质(例如程序模块)上的由一个或多个计算机或其他设备执行的计算机可执行指令的一般上下文中讨论。作为示例而非限制,计算机可读存储介质可以包括非暂时性计算机存储介质和通信介质。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。在各种实施例中,可以根据需要组合或分配程序模块的功能。
“非暂时性计算机可读介质”的含义应解释为仅排除那些暂时性计算机可读介质的类型,根据35 U.S.C.§101in In re Nuijten,500F.3d 1346,1356-57(Fed.Cir.2007),这些暂时性计算机可读介质的类型被发现不属于可给予专利权的主题的范围。该术语的使用应被理解为仅从权利要求范围中移除传播暂时信号本身,并不放弃对所有不仅传播暂时信号本身的标准计算机可读介质的权利。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于处理器寄存器、双倍数据速率(double data rate,DDR)存储器、随机存取存储器(random access memory,RAM)、静态RAM(SRAM)或动态RAM(DRAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、闪存(例如,SSD)或其他存储器技术、小型光盘ROM(CD-ROM)、数字多功能光盘或其他光存储器、磁盒、磁带、磁盘存储器或其他磁存储设备、或可用于存储所需信息且可被访问以获取该信息的任何其他介质。
通信介质可以包含计算机可执行指令、数据结构和/或程序模块,还包括任何信息传递介质。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(RF)、红外和其他无线介质的无线介质。上述任一项的组合也可以包括在计算机可读介质的范围内。
本公开的系统和方法被配置为高效和有效地实现并行数据流路由方案。在一些实施例中,并行数据流路由方案在芯片互连网络(interconnected chip network,ICN)中实现。在一些实施例中,系统和方法提供均衡的工作负载、有保证的依赖性和有保证的访问顺序(例如,为了一致性,等等)。通过经由最小链路的多流以及与流ID、源并行处理单元(PPU)ID的交织,可以提供均衡的工作负载。通过使用与流ID交织并且在源并行处理单元(PPU)进行哈希算法(hashing)的物理地址(PA),可以提供有保证的依赖性。通过使用沿路由的流ID和可拆分的远程屏障(remote-fence),可以提供有保证的访问顺序。系统和方法还可以支持工作负载均衡。应能理解,可存在各种路由方案。路由方案可以包括路由表。路由方案可用以指向在源PPU、中继PPU等处的路由。在一个示例性实施例中,可以使用简化的多路径路由方案。
图2A示出了根据本公开实施例的示例系统200的框图。系统200可用于各种类型的工作负载(例如,通用处理、图形处理、神经网络数据处理等)。在一些实施例中,系统200可用于神经网络和人工智能(Artificial Intelligence,AI)工作负载。通常,系统200可用于任何并行计算,包括大量数据并行处理。
通常,系统200包括多个计算节点(例如,服务器等),并且每个计算节点或服务器包括多个并行计算单元或芯片(例如,PPU)。在图2A的示例中,系统200包括计算节点(例如,服务器等)201和计算节点202。虽然图2包括两个计算节点,但可以理解的是,计算节点的数量可以不同。
在图2A的一些实施例中,计算节点201包括主中央处理单元(CPU)205,并经由网络接口控制器或卡(NIC)206连接到网络240。计算节点201可以包括除了将要描述的那些元件和组件之外的元件和组件。计算节点201的并行计算单元包括网络处理单元(PPU)PPU_0a至PPU_na,网络处理单元PPU_0a至PPU_na连接到外围组件互连高速(PCIe)总线208,外围组件互连高速(PCIe)总线208继而连接到NIC206。
在一些实施例中,计算节点202包括与计算节点201的元件相似的元件(尽管'm'可以等于也可以不等于'n')。系统200中的其他计算节点可以类似地构造。在一个示例性实施例中,计算节点201和计算节点202可以具有相同的结构,至少达到本文所描述的程度。
计算节点201上的PPU可以通过总线208彼此通信(通信耦合)。计算节点201上的PPU可以经由总线208和总线209以及NIC 206和NIC 207通过网络240与计算节点202上的PPU通信。
图2A的系统200包括高带宽芯片互连网络(ICN)250,其允许系统200中的PPU之间的通信。即是说,系统200中的PPU经由ICN250彼此通信耦合。例如,ICN 250允许PPU_0a与计算节点201上的其他PPU通信,并且还允许PPU_0a与其他计算节点(例如,计算节点202)上的PPU通信。在图2A的示例中,ICN 250包括直接连接两个PPU且允许两个连接的PPU之间的双向通信的互连(例如,互连252和互连254)。互连可以是半双工链路,在其上一次只有一个PPU可以传输数据,或者互连可以是全双工链路,在其上可以同时在两个方向上传输数据。在一个实施例中,互连(例如,互连252和互连254)是基于或利用串行/解串器(SerDes)功能的线路或电缆。
在图2A的一个示例实施例中,互连252是将计算节点201上的PPU_0a直接连接到PPU_na的硬连线或电缆连接,互连254是将计算节点201上的PPU_na直接连接到计算节点202上的PPU_0b的硬连线或电缆连接。也即是说,例如,互连252的一端连接到计算节点201上的PPU_0a,而另一端连接到PPU_na。更具体地说,互连252的一端插入到交换机234(图2C)上的端口或耦合到交换机234的端口,互连252的另一端插入到PPU_na的交换机上的端口或耦合到PPU_na的交换机的端口。
可以理解的是,实际连接拓扑结构(各PPU分别连接到自身之外的哪个PPU)可以不同。图2B是示出了示例ICN拓扑结构的框图。在一些实施例中,每个计算节点有三个PPU。可以理解的是,每个计算节点的PPU数量可以不同。在一个示例性实施例中,计算节点291上的PPU_0c连接到计算节点291上的PPU_xc,计算节点291上的PPU_xc继而连接到计算节点291上的PPU_yc。计算节点291上的PPU_0c可以连接到另一计算节点(未示出)上的PPU。计算节点291上的PPU_yc连接到计算节点292上的PPU_0d。在一个实施例中,PPU可以连接到其在计算节点上的直接邻居(immediate neighbor)或其在相邻计算节点上的直接邻居。应当理解的是,PPU的连接可以不同。因此,在图2B的示例中,计算节点292上的PPU_0d连接到计算节点292上的PPU_yd,计算节点292上的PPU_yd继而连接到计算节点292上的PPU_xd。计算节点292上的PPU_xd可以连接到另一计算节点(未示出)上的PPU。连接相同计算节点上的PPU的互连可称为芯片内互连,连接不同计算节点上的PPU的互连可称为芯片间互连。
任何两个PPU(例如,两个PPU可以在相同的计算节点上或在不同的计算节点上,等等)之间的通信可以是直接的或间接的。在一些实施例中,通过两个PPU之间的单个链路进行直接通信,且当来自一个PPU的信息经由一个或多个中间PPU中继到另一个PPU时发生间接通信。例如,在图2A所例示的配置中,计算节点201上的PPU_0a可以经由互连252与计算节点201上的PPU_na直接通信,并且计算节点201上的PPU_0a可以经由到PPU_na的互连252以及计算节点202上的从PPU_na到PPU_0b的互连254与计算节点202上的PPU_0b间接通信。PPU之间的通信可以包括存储器访问请求(例如,读请求和写请求)的传输和响应于这些请求的数据传输。
PPU之间的通信可以在命令级(例如,DMA拷贝)和指令级(例如,直接加载或存储)。ICN250允许系统200中的计算节点和PPU在不使用PCIe总线208的情况下进行通信,从而避免其带宽限制和相对速度不足。
PPU还可以使用神经PPU来实现,或者可以称为神经PPU。PPU还可以被实现为或使用各种不同的包括通用处理单元、图形处理单元、神经网络数据处理等的处理单元。
在一些实施例中,计算节点201上的PPU除了经由ICN 250通信之外,还可以通过总线208彼此通信(通信耦合)。类似地,计算节点201上的PPU还可以经由总线208和总线209以及NIC 206和NIC 207通过网络240与计算节点202上的PPU通信。
系统200和PPU(例如,PPU_0a等)可以包括除了下面所示和所描述的元件或组件之外的元件或组件,并且元件或组件可以如图中所示或以不同的方式布置。示例系统200和PPU中的一些块可以根据其执行的功能来描述。系统的元件和组件被描述和示出为分开的块,本公开不限于此;也就是说,例如,块/功能的组合可以集成到执行多个功能的单个块中。系统200可以被扩展以包括附加PPU,并且系统200与包括分层缩放方案和扁平化缩放方案的不同缩放方案兼容。
通常,计算节点201上的每个PPU包括诸如处理核和存储器的元件。图2C是示出了根据本公开一个实施例的示例并行处理单元PPU_0a的框图。图2C所示的PPU_0a包括耦合到一个或多个计算元件或处理核(例如,核212a、核212b、核212c、核212d,等等)以及一个或多个高速缓存(例如,高速缓存214a、高速缓存214b、高速缓存214c、高速缓存214d,等等)的片上网络(network-on-a-chip,NoC)210。PPU_0a还包括例如耦合到NoC 210的一个或多个高带宽存储器(high bandwidth memory,HBM)(例如,HBM 216a、HBM 216b、HBM 216c、HBM216d,等等)。图2C的处理核、高速缓存和HBM在此也可分别统称为核212、高速缓存214和HBM216。在一个示例性实施例中,高速缓存214是HBM 216和NoC 210之间的最后一级高速缓存。计算节点201可以包括其它级别的高速缓存(例如,L1、L2等;未示出)。HBM 216中的存储器空间可以被声明或分配(例如,在运行时)作为缓冲器(例如,乒乓缓冲器(ping-pongbuffer),图2C中未示出)。
PPU_0a还可以包括其他功能块或组件(未示出),例如命令处理器、直接存储器访问(direct memory access,DMA)块和便于与PCIe总线208通信的PCIe块。PPU_0a可以包括这里描述的或图2C所示的那些元件和组件以外的元件和组件。
在一些实施例中,系统200包括例如使用分区全局地址空间(PGAS)编程模型的统一存储器寻址空间。因此,可以全局分配系统200中的存储器空间,使得例如PPU_0a上的HBM216可由该计算节点上的其他PPU以及由系统200中的其他计算节点上的PPU访问。类似地,PPU_0a可以访问系统中的其他PPU/计算节点上的HBM。因此,在图2A和图2B的示例中,一个PPU可以从系统200中的另一个PPU读取数据或向系统200中的另一个PPU写入数据,其中,两个PPU可以在相同的计算节点上或不同的计算节点上,并且读或写可以直接或间接地发生。
计算节点201通过ICN子系统230(如图2C所示)耦合到ICN 250,ICN子系统230与NoC 210耦合。在一些实施例中,ICN子系统230包括ICN通信控制块(通信控制器)232、交换机234和一个或多个互通信链路(inter-communication link,ICL)(例如,ICL236;统称为ICL 236)。ICL 236可以耦合到交换机234,或可以是交换机234的组件。ICL236构成或包括端口。在一个示例实施例中,有7个ICL。每个ICL 236连接到相应的互连(例如,互连252)。互连252的一端耦合或插入到PPU_0a上的ICL(端口)236中,并且互连的另一端耦合或插入到另一PPU上的另一ICL/端口中。
在图2C的一个配置中,例如,PPU_0a的存储器访问请求(例如,读请求或写请求)从NoC210发出到ICN通信控制块232。存储器访问请求包括标识哪个计算节点/PPU/HBM是存储器访问请求的目标的地址。ICN通信控制块232使用该地址来确定哪个ICN 236(直接或间接地)通信耦合到由该地址标识的计算节点/PPU/HBM。那么,由交换机234将存储器访问请求路由到选定的ICL 236,然后,通过ICN 250将存储器访问请求路由到由该地址标识的计算节点/PPU/HBM。在接收端,在目标PPU的ICL接收存储器访问请求,将存储器访问请求提供给ICN通信控制块且然后提供给该PPU的NoC,且最后将存储器访问请求提供给由存储器访问请求寻址的该PPU上的HBM。如果存储器访问请求是写请求,则数据被存储到目标PPU上的HBM中的地址。如果存储器访问请求是读请求,则将位于目标PPU上的HBM中地址的数据返回到PPU_0a。以这种方式,使用高带宽ICN250快速地完成芯片间通信,绕过PCIe总线208,从而避免其带宽限制和相对速度不足。
PPU可以包括耦合在核212和ICN子系统230之间的计算命令环。计算命令环可以实现为多个缓冲器。在核和计算命令环之间可以存在一对一的对应关系。来自在核上执行的进程的命令按照它们被发出或将要被执行的顺序被推送到相应计算命令环的报头中。
ICN子系统230还可以包括耦合到命令调度块和指令调度块的多个芯片到芯片(chip-to-chip,C2C)的DMA单元。DMA单元还经由C2C结构(fabric)和网络接口单元(network interface unit,NIU)耦合到NoC 210,并且DMA单元还耦合到交换机234,交换机234相应地耦合到与ICN250耦合的ICL 236。
在一个实施例中,存在16个通信命令环和7个DMA单元。在DMA单元和ICL之间可以存在一对一的对应关系。命令调度块将通信命令环映射到DMA单元,且因此映射到ICL 236。命令调度块、指令调度块和DMA单元可以各自包括诸如先进先出(FIFO)缓冲器(未示出)的缓冲器。
ICN通信控制块232将输出的存储器访问请求映射到基于该请求中的地址所选择的ICL236。ICN通信控制块232将存储器访问请求转发到与所选择的ICL 236相对应的DMA单元。然后由交换机234将该请求从DMA单元路由到所选择的ICL。
系统200和PPU是用于实现诸如本公开的那些方法(例如,图9中的方法等)的系统和处理单元的示例。
图3示出了根据本公开实施例的示例统一存储器寻址空间的框图。统一存储器寻址空间能够实现分区全局地址空间(PGAS)类型的编程模型。程序(program)之间的通信可以在不同的级别上流动。在命令级中,通信可以包括直接存储器访问(DMA)复制操作。在指令级中,通信可以包括直接加载/存储操作。在一些实施例中,可以在一个物理存储器中本地存储被认为是共享空间的部分的变量VAR。在一个示例性实施例中,可以将VAR的值写入第一PPU上的第一进程,且可以由第二PPU上的第二进程读取VAR的值。
图4示出了根据本公开实施例的示例系统400的框图。系统400是根据本公开一个实施例的示例缩放层次结构或拓扑方法。在一个示例性实施例中,多个PPU通过ICN连接(例如,401、402、403、404、405、409、411、412、421、422、423、441、442、443等)彼此通信耦合。
在一些实施例中,在一些拓扑结构中多个芯片通信地联网在一起,路由方案使系统能够针对每个请求将通信路由到合适的目标芯片。在一个示例性实施例中,芯片包括通信处理组件。通信处理组件可以被认为是并行处理单元(PPU)。在一些实施例中,路由表和一些路由规则指示硬件如何控制数据流。在一个示例性实施例中,可以在神经网络配置中实现路由方案。
可以理解的是,通信网络可以具有各种配置。一般而言,信息/数据通信从源流向目标。在一个实施例中,通信路由路径可以通过与通信相关联的源和目标的指示来标识。网络可以包括比PPU中包括的出口端口更多的目标组件,在这种情况下,每个PPU不能直接耦合到网络中的每个其他PPU。在一个实施例中,网络包括除源PPU和目标PPU之外的中间PPU,以帮助在源和目标之间路由数据。在一个示例性实施例中,中间PPU被认为是中继。可以用在源和目标之间(例如,在“网状”拓扑结构中,等等)的中间或中继组件配置网络。一般而言,源是路径中的起始/第一通信PPU,中继是中间PPU(例如,其从上行/先前PPU接收通信且将该通信转发到路径中的下行/下一个PPU,等等),且目标是路径中的最终/最后通信PPU。网络可以包括源和目标之间的多个路径或路由。
数据可以沿着经由通信组件(例如,PPU等)之间的通信“链路”形成的网络中的通信“路径”进行通信或沿着该通信“路径”流动。数据可以划分/分离成数据包。不同的数据包可以沿着相同的链路或不同的链路流动。在本详细说明书的其他部分中呈现通信路径和链路的附加描述。
当在网络中通信时,通常需要解决一些关键的考虑。一个考虑是,当存在从源到目标位置的多个网络路径时,如何处理通信。在多个路径网络中实现资源利用和工作负载分布的适当均衡可能是困难的,因为始终仅利用单个链路基本上会使其他可用资源闲置,但尝试始终充分利用所有链路可能会引入不切实际的协调复杂性。在许多应用中,精确度通常是非常重要的,且存储器访问操作的定时对于保持精确度通常是必不可少的。
在复杂的通信网络中,可能存在潜在地影响存储器访问操作(例如,读、写等)的定时的各种问题和条件。在一个示例性实施例中,可以存在与传送信息相关联的多个写操作(例如,不同的写可以涉及/传送数据的不同部分,等等),并且写操作的不同部分可以潜在地经由不同的网络路径通信。一条路径可以比另一条路径更快地传递信息。如果不能保证适当的写操作定时(例如,包括对通信持续时间等的考虑),则第二(例如,“后来的”、随后的,等等)写请求可以通过另一个更快的通信路径超越第一(例如,先前的、“早期的”等)写请求,并且第二写操作可以以违反适当操作定时的方式比第一写操作更早地发生。通常,定时或写操作可以与存储器/数据一致性相关联。应用可以要求将第一数据段和第二数据段写入相同的地址/位置或不同的地址/位置。在一个实施例中,如果这两个不同的数据段被写入相同的地址,则认为定时与数据依赖性有关,且如果这两个不同的数据段被写入不同的地址,则认为定时与访问顺序有关。
图5A示出了根据本公开实施例的通信网络的示例部分的框图。通信网络部分510包括源PPU501、中继PPU 502和目标PPU 503。源PPU 501经由通信链路511通信耦合到中继PPU 502,而中继PPU 502经由通信链路512和通信链路513通信耦合到目标PPU 503。在一个实施例中,带宽受到源和目标之间最窄路径/链路的约束。例如,虽然在PPU 502和PPU 503之间的网络段中有两个链路/路径(即通信链路512和通信链路513),但是在PPU 501和PPU502之间的网络段中只有一个链路/路径511。在一个示例性实施例中,即使存在链路512和链路513(对于第二PPU 502和第三PPU 503之间的总共两个路径宽度,等等),但是吞吐量由链路511确定。在一个示例性实施例中,一个链路(例如,链路511等)是对总吞吐量的限制,因此其是最小链路思想的基础。从包括PPU 501的芯片的角度来看,到达包括PPU503的目标芯片的路由具有最小链路(minimum link,Minlink#)1。
图5B示出了根据本公开实施例的通信网络的示例部分的框图。通信网络部分520包括源PPU 521、中继PPU 522和目标PPU 523。源PPU 521经由通信链路531和通信链路532通信耦合到中继PPU 522,中继PPU 522经由通信链路533通信耦合到目标PPU 523。通信网络部分520具有与通信网络部分510不同的配置,但仍然具有最小链路1。与通信部分510类似,在通信部分520中,带宽由源和目标之间的最窄路径/链路约束。例如,尽管在PPU 521和PPU 522之间的网络段中有两个链路/路径(即通信链路531和通信链路532),但在PPU 522和PPU 523之间的网络段中只有一个链路/路径533。在一个示例性实施例中,即使存在链路531和链路532(对于第一PPU 521和第二PPU 522之间的总共两个路径宽度,等等),但是吞吐量由链路533确定。在一个示例性实施例中,再次,一个链路(例如,链路533等)是对总吞吐量的限制,因此其是最小链路构思的基础。从包括PPU 521的芯片的角度来看,到达包括PPU 523的目标芯片的路由具有最小链路(Minlink#)1。
在多流系统中,中继芯片可以以对出口之间的流进行均衡的方式运行。从PPU 501到PPU 503,最小链路是1,因此在PPU 502和PPU 503之间的网络段中,利用链路512或链路513中的一个来从PPU 501到PPU 503传递信息。可以理解的是,如果将诸如链路512的链路之一用于从PPU 501到PPU 503的通信,则可以将诸如链路513的另一链路用于其他通信。在一个示例性实施例中,类似于PPU 501的另一个PPU(未示出)耦合到PPU 502,并且来自该另一个PPU的通信经由链路513从PPU 502转发到PPU 503。当两个PPU之间有多个链路时,通常希望均衡多个链路上的数据流。在这种情况下,本公开的系统和方法均衡通信通道/路径中的PPU工作负载。
图5C示出了根据本公开实施例的通信网络的示例部分的框图。通信网络部分540包括源PPU 541、中继PPU 542和目标PPU 543。源PPU 541经由通信链路551和通信链路552通信耦合到中继PPU 542,而中继PPU 542经由通信链路553和通信链路554通信耦合到目标PPU 543。链路551将数据571从PPU 541传递到PPU 542,且链路552将数据572从PPU 541传递到PPU 542。链路553将数据571和数据572从PPU 542传递到PPU 543。在一个示例性实施例中,工作负载通信网络部分540不是由中继PPU 542以最优方式均衡的。通信网络部分540在PPU 541和PPU 542之间的网络段中具有两个链路/路径(即通信链路551和通信链路552),通信网络部分540在PPU 542和PPU 543之间的网络段中具有两个链路/路径(即通信链路553和通信链路554)。因此,最小链路数(Minlink#)为2。源PPU541通过在链路551上发送数据571和在链路552上发送数据572来均衡数据传输量(data traffic)。不幸的是,链路553和链路554上从PPU 542到PPU 543的数据传输量是不均衡的(例如,中继PPU 542将数据571和数据572均在链路553上发送,留下链路554为空,等等)。
图5D示出了根据本公开实施例的通信网络的示例部分的框图。通信网络部分580包括源PPU 581、中继PPU 582和目标PPU 583。源PPU 581经由通信链路591和通信链路592通信耦合到中继PPU 582,中继PPU 582经由通信链路593和通信链路594通信耦合到目标PPU 583。链路591从PPU 581到PPU 582传递数据577,且链路592从PPU 581到PPU 582传递数据578。链路593从PPU 582到PPU 583传递数据578,链路594从PPU 582到PPU 583传递数据577。在一个示例性实施例中,图5D中的工作负载通信网络部分580比图5C中的通信网络部分540更优化均衡。通信网络部分580在PPU 581和PPU 582之间的网络段中具有两个链路/路径(即通信链路591和通信链路592),通信网络部分580在PPU 582和PPU 583之间的网络段中具有两个链路/路径(即通信链路593和通信链路594)。因此,最小链路数(Minlink#)为2。源PPU581通过在链路591上传递数据577和在链路592上传递数据578来均衡数据传输量。中继PPU582还通过在链路593上传递数据578和在链路594上传递数据577来均衡数据传输量。
在一个实施例中,基本路由方案是简单的并且在硬件中实现。在一个示例性实施例中,使用静态预定路由且在运行之前设置静态预定路由。在一个示例性实施例中,一旦设置了路由表,就不能在运行时由硬件改变它。可以在运行时间之前将路由信息编程/再编程到硬件寄存器中。硬件可以在下次重置路由时再配置路由,但一旦设置了路由,就不能在运行时更改它。在一个实施例中,系统使用基本XY路由方案加上一些简单规则来开发路由表。
在一个实施例中,PPU包括路由表。在一个实施例中,路由表可以具有以下配置:
表1
在一个实施例中,每个芯片/PPU具有7个端口,并且设置比特来指示端口是否可用/是否应该用于路由数据包。在一个实施例中,比特被设置为逻辑1以指示出口端口可用,比特被设置为逻辑0以指示出口端口不可用。在一个示例性实施例中,系统可以支持多达1024个芯片/PPU,并且路由表可以具有来自每个源PPU的相应数量的条目。这意味着从源PPU可以达到多达1023个目标芯片/PPU。每个条目对应于从相关联的源PPU到特定目标PPU的通信。对于上面的示例表,路由表指示7个出口端口中的哪个可用/应该用于与PPU 4和PPU 5通信。路由表可以包括用于与到所指示的目标PPU的通信相关联的最小链路指示的字段。在一个实施例中,尽管可以存在具有多跳的多个路径,但最小链路数是最窄路径。为了到达芯片/PPU编号4,存在最小链路2。在这种情况下,源和目标之间的整个路由/路径中的另一跳可以具有3个链路,但从搜索表相关联的PPU到PPU 4的这一跳是2个链路。
图6示出了根据本公开实施例的通信网络600的示例部分的框图。通信网络600包括经由链路631至链路693通信耦合的PPU 610至PPU 625。
在一个示例性实施例中,数据从PPU 610发送到PPU 615。在此示例中,PPU 610作为源PPU,PPU 615作为目标PPU。PPU 611和PPU 614可以作为中继PPU。链路631和链路632可用于将数据从PPU 610转发到PPU 611,链路671可用于将数据从PPU 611转发到PPU 615。链路661可用于将数据从PPU 610转发到PPU 614,链路633和链路634可用于将数据从PPU 614转发到PPU 615。虽然链路631、链路632、链路633、链路634、链路661和链路671通常可用于在一些PPU之间传递信息,但可以关闭或禁用一些链路。关闭或禁用PPU的附加说明在本详细说明书的其他部分中呈现。
在PPU 610是源PPU且PPU 615是目标PPU的这种场景下,当检查经由中继PPU 614的第一路径和经由中继PPU 611的第二路径时,确定最小链路数是1。例如,对于经由中继PPU 614的第一路径,即使PPU 614和PPU 615之间的路径可以具有两个链路(例如链路633和链路634),但PPU 610和PPU 614之间的路径仅具有一个链路(例如链路661)。因此,最小链路数是1(例如,对应于链路661等)。类似地,经由中继PPU 611的第二路径具有最小链路1(例如,对应于链路671)。在一些实施例中,驱动程序使用最小链路信息并禁用链路631或链路632。
在一个示例性实施例中,PPU 610不关心使用哪个中继PPU(例如,PPU 611,PPU614等),其只关心指示目标PPU 615以及通信将从哪个出口端口转发。在一个示例性实施例中,信息被发送到中继PPU 611,并且从源PPU 610到目标PPU 615的路径中的第一跳是通过PPU 610的出口端口1或出口端口2。如果使用PPU 610的出口端口1,那么出口端口2可以被禁用/关闭,反之亦然。由于PPU 614没有被使用,链路633和链路634可以保持启用/保持打开以处理其他通信(例如,服务于从PPU 618到PPU 615的通信,等等)。在一个示例性实施例中,虽然PPU 610不一定关心使用哪个中继PPU(例如PPU 611、PPU 614等),但是整个系统可以关心并且使用哪个中继PPU可能是重要的。路径/链路/PPU选择的考虑因素(例如,对工作负载均衡、数据一致性等的影响)的附加说明在本详细说明书的其他部分中呈现。
在一个示例性实施例中,数据从PPU 610发送到PPU 620。在此示例中,PPU 610作为源PPU,PPU 620作为目标PPU。PPU 611、PPU 612、PPU 614、PPU 615、PPU 616、PPU 618和PPU 619可以作为中继PPU。尽管从PPU 610到PPU 620的潜在路径比从PPU 610到PPU 615的路径更多,但就PPU 610而言,所关注的路由决策是相同的,因为在两种场景中PPU 610都将信息转发到PPU 611或PPU 614,并且PPU 610对从PPU 610到PPU 620的路径上进一步下游的路由决策没有任何控制。在一个示例性实施例中,PPU所关注的仅仅唯一的流是离开该PPU的下一跳,而不是路径或流中的其他跳。
在一个实施例中,在路由决策中使用流ID(Identifier,标识)。流ID可以对应于源和目标位置之间的唯一路径。如上所述,从PPU 610到目标PPU 615的数据流可以被分成两个数据流(例如,经由PPU 611和PPU 614)。在一个示例性实施例中,可以通过哈希(hashing)从目标PPU的物理地址中选择的比特来创建流ID。此外,流ID函数可以包括最小链路指示。在一个示例性实施例中,流ID确定操作可以表示为:
Flow_id=gen_flow_id(hashing(selected_bits(&PA)),#MinLink)
类似地,出口端口选择的指示可以表示为:
ePort_id=mapping(Flow_id%#MinLink)
如前所述,对于源PPU和目标PPU对(例如,srcPUU-dstPPU等),可以有多个路径。在一些实施例中,源PPU仅使用最小链路数(例如#MinLink等)。在一个示例性实施例中,每个程序流(例如,处理、流等)中,从本地PPU(或源PPU)流向目标PPU的数据沿着多个路径均匀分布。在一些实施例中,基于物理地址(PA)划分(split)路径。可以应用哈希函数来更好地均衡访问步幅(accesses with strides)。
图7示出了根据本公开实施例的通信网络700的示例部分的框图。通信网络700包括PPU 701、PPU 702、PPU 703、PPU 704、PPU 705和PPU 706。PPU 701经由链路711和链路712通信耦合到PPU 705。PPU 702经由链路713和链路714通信耦合到PPU 704。PPU 703经由链路717和链路719通信耦合到PPU 704。PPU 704经由路径721通信耦合到PPU 705。PPU 705经由链路731、链路732和链路733通信连线到PPU 706。链路711、链路712、链路713、链路714、链路717和链路719分别传送数据751、数据752、数据753、数据754、数据757和数据759。链路731传送数据751和数据759。链路732传送数据753和数据752。链路733传送数据757和数据754。
在一些实施例中,中继PPU 705从PPU 701、PPU 702、PPU 703和PPU 704接收RR入口数据,并将该数据转发给PPU 706。关于向PPU 706转发信息,PPU 705查找目标PPU 706的条目以确定哪些出口端口是可用的。在一些实施例中,路由表包括芯片或PPU之间的连接拓扑结构的信息。表2是由PPU 705用于到目标PPU 706的通信的路由表的示例部分的框图。
表2
路由表指示出口端口2、出口端口3和出口端口5可用于将信息转发到PPU 706。在确定可用的端口之后,PPU 705然后利用“智能”特征以确定哪个出口端口来发送前往目标PPU 706的数据。
在一些实施例中,存在包括目标信息ID(例如,PPU 706等)的唯一流ID。流ID用于确定在哪个可用出口端口上转发通信数据包。在一个示例性实施例中,流ID在本地是唯一的。在一个示例性实施例中,通过将源PPU的指示添加到流ID来建立全局唯一ID。在一些实施例中,第一源使用第一链接(linkage)和第三链接,第二源使用第二链接和第三链接,第三源使用第三链接和第一链接(例如,参见图7,链路731、链路732和链路733从第一源701、第二源702和第三源703传送信息,等等)。在一个示例性实施例中,六个传输流(trafficflow)总体均衡。
表3不是路由表,而仅仅是示出在中继路由算法为特定数据流选择出口端口之后数据流到出口端口的关联的示例性说明。
表3
再次参考图7,经由出口端口2在链路731上转发数据751和数据759,其中数据751与流ID“流-A”相关联,数据759与流ID“流-F”相关联。经由出口端口3在链路732上转发数据752和数据753,其中数据752与流ID“流-B”相关联,数据753与流ID“流-C”相关联。经由出口端口5在链路733上转发数据754和数据757,其中数据754与流ID“流-D”相关联,数据757与流ID“流-E”相关联。在一些实施例中,通过将源PPU ID相加,系统给流ID一些偏移(offset),使得不同的源流将从不同的链接开始。然而,工作负载可能没有得到很好的均衡。
在一个实施例中,使用更多PA比特进行交织可以改善工作负载分布和均衡。图8示出了根据一个实施例的基于不同数量的PA比特交织的不同工作负载均衡的示例。表810和表820示出了在三个通信链路(例如,A、B、C等)上的2比特交织和3比特交织之间的不同工作负载分布。在一些实施例中,被交织的比特是地址的最低有效位。底部表以不同的表格式显示相同的信息,其提供了三比特交织的与两比特交织相比较好的工作负载均衡的较直观的指示。表810中的交织模式重复(interleaving pattern repetition)由顶部表中的参考编号811A、812A和813A以及底部表中对应的参考编号811B、812B和813B指示。表820中的交织模式重复由顶部表中的参考编号821A和底部表中的对应参考编号821B指示。
在一些实施例中,路由方案利用路由表和目标物理地址交织。在源PPU处的路由方案可以包括基于将物理地址交织成最小链路数指示来分配流ID(例如,PA-inter intoMinLink=>flowid,等等)。中继PPU处的路由方案可以包括流ID和源ID的交织(例如,使用flowid=srcid交织,等等)。
在一些实施例中,PPU包括由PPU的ICN子系统(例如,230,等等)的两个不同模块共享的路由表。在一个示例性实施例中,当PPU作为源PPU时,ICN子系统通信控制块(例如,232,等等)利用路由表转发消息。在一个示例性实施例中,当PPU作为中继PPU时,ICN子系统交换机(例如,234,等等)利用路由表转发消息。在一个示例性实施例中,ICN子系统通信控制块(例如,232,等等)实现利用路由表转发消息的第一算法。在一个示例性实施例中,当PPU作为中继PPU时,ICN子系统交换机(例如,234,等等)实现利用路由表转发消息的第二算法。第一算法和第二算法可以不同。第一算法可以包括:
ePort_id=mapping(Flow_id%#MinLink)
且第二算法可以包括:
ePort=mapping[(src_PPU_ID+flow_ID)%num_possible_ePort]
在一个示例性实施例中,当PPU作为中继PPU时,中继的出口端口选择的指示可以表示为第二算法。
图9是根据一个实施例的示例通信方法900的流程图。
在框910中,执行包括创建路由表的设置操作。路由表可以包括静态预定路由表。在一个示例性实施例中,在设置期间,驱动程序遍历拓扑结构,收集包括在路由表中的信息。路由表可以包括到目标PPU的路径中的最小链路数的指示。在一些实施例中,路由链路中的一些链路被禁用,使得表中的每个目标PPU条目具有等于通信路径中最小链路数的可用出口端口数(例如,#ePort=#minLink,等等)。
在框920中,从源并行处理单元(PPU)转发通信数据包。在一些实施例中,根据静态预定路由表形成和转发通信数据包。
在一些实施例中,基于路由方案转发通信数据包。在一个示例性实施例中,通过以下步骤确定源PPU处的路由方案:创建与通过互连的唯一通信路径相关联的流ID,其中通过哈希物理地址中选定的多个比特来建立流ID;利用相应路由表来确定到目标的最小链路路径;以及基于流ID和最小链路路径建立路由选择。在一个示例性实施例中,中继PPU处的路由方案包括选择出口端口,其中选择出口端口包括:创建与通过互连的唯一通信路径相关联的流ID,其中通过哈希物理地址中选定的多个比特来建立流ID;映射源PPU ID和流ID;基于映射确定可用的多个可能出口端口;利用相应路由表来确定到目标的最小链路路径;以及基于流ID、多个可能出口端口和最小链路路径建立路由选择。
在方框930中,在目标并行处理单元(PPU)处接收通信数据包。在一些实施例中,源PPU和目标PPU包括在网络中的多个处理单元中的相应处理单元中,其中多个处理核的第一处理核组包括在第一芯片中,多个处理核的第二处理核组包括在第二芯片中,多个处理单元通过多个互连进行通信,并且根据静态预定路由表配置相应的通信。
在一些实施例中,示例通信方法900进一步包括均衡通信数据包的转发,均衡通信数据包的转发包括经由基于物理地址的交织分发通信数据包。
对上述并行数据流路由的改进可以包括在路由表中包括下一个PPU的信息。下一个PPU可以是优选的中间PPU,被选择用于经由一个或多个中间PPU路由到最终的目标PPU。
再次参考图6,存在从PPU 610到PPU 615的两个示例性路径。第一路径是从PPU610经由PPU 614到达PPU 615。第二路径是从PPU 610到达PPU 611再到PPU 615。通常,可以有多个路径。此外,在PPU 610和PPU 611之间存在多个可用的链路,例如链路631和632,以及在PPU 614和PPU 615之间存在多个可用的链路,例如链路633和634。在一些实施例中,PPU包括路由表,该路由表可以包括下一个PPU的附加信息。在一些实施例中,路由表可以具有以下配置:
表4
可以理解,PPU 610和PPU 615之间的最小链路是2。例如,从PPU 610到PPU 615有两个路径,例如,PPU 610到PPU 614再到PPU 615,以及PPU 610到PPU 611再到PPU 615。然而,如果链路631和632都被用于从PPU 610向PPU 615发送数据,则因为从PPU 611到PPU615的链路671是单个链路,并且不能携带两个链路631和632上的所有数据,整个数据流将在PPU 611堵塞。
因此,路由算法还应该具有从源到目标(例如,本示例中的PPU 610到PPU 615)有几个可用链路的信息。
在一些实施例中,每个芯片/PPU具有7个端口,并且设置比特来指示端口是否可用/端口是否应该用于路由数据包。在一些实施例中,比特被设置为逻辑1以指示出口端口可用,比特被设置为逻辑0以指示出口端口不可用。在一个示例性实施例中,系统可以支持多达1024个芯片/PPU,并且路由表可以具有来自每个源PPU的相应的多个条目。例如,源PPU可以实现多达1023个目标芯片/PPU。每个条目对应于从相关联的源PPU到特定目标PPU的通信。对于上面的示例表,路由表指示7个出口端口中的哪一个出口端口是可用的/哪一个出口端口应该用于与PPU 4和PPU 5通信。路由表可以包括与到所指示的目标PPU的通信相关联的最小链路指示字段。一些实施例中,尽管可以存在具有多跳的多个路径,但最小链路数是最窄路径。
例如,在上述示例路由表4中,对于目标PPU 5,端口1和3被启用,例如具有路由表条目“1”。由于不止一个端口可用于潜在地发送信息,因此将“BranchID”条目添加到路由表中。
此外,最小链路,例如条目“minlink”,被添加到路由表中,以标识源和目标对的最小链路。例如,从PPU 610到PPU 615的路径具有最小链路1。例如,从PPU 610经由PPU 611到PPU 615的路径必须通过宽度为1的链路617。类似地,从PPU 610经由PPU 614到PPU 615的路径必须通过宽度为1的链路661。
本公开的一些实施例中,可将链路(例如,链路632)指示为不可用/未启用。例如,由于用于从PPU 610经由PPU 611到PPU 615的传输的最小链路是1,所以链路632可以被认为是冗余的,并且其被指示为未启用。如前所述,因为链路671不能传送由链路621和632组合提供的数据量,因此使用链路631和632两者可能会产生阻塞。
根据本公开的实施例,在路由表中没有路径的链路被永久地指示为不可用。例如,链路631和632都可以被启用以用于从PPU 610经由PPU 611到PPU 615的数据传输。路由算法可以在给定数据包到PPU 615的途中为其动态选择链路631或链路632中的一个链路。由于PPU 610到PPU 615的最小链路,将只选择链路631或链路632中的一个链路。从PPU 610到PPU 615的第二数据包的传输可以再次选择链路631或链路632。
例如,通过链路631经由PPU 611,将第一数据包从PPU 610发送到PPU 615。通过链路632经由PPU611,将第二数据包从PPU 610发送到PPU 615。与指示链路不可用/未启用的实施例相比,可以并行和/或重叠地发送第一数据包和第二数据包,从而最大化链路631和632的可用带宽。这样的实施例可以使(例如,运行在PPU 610上的)多个进程能够占满链路631和632,而不是等待单个进程(例如,以小于链路631和632两者的可用带宽的速率)创建数据包。
下面是用于实现多分支(multi-branch)路由系统的示例性伪代码(pseudocode):
//0.Generates num_MinLink_Src2Dst flow_ids according to PA
num_MinLink_Src2Dst=sum(num_MinLink in each src dest branch);
Flow_id=gen_flow_id(PA_bits),num_MinLink_Src2Dst
//1.for each branch,select#minLink ePorts out of#ePorts_thisBranch;merge into a candidate_ePort list
//2.select an ePort from candicate_ePort_list
ePort_id_local=S rcPPU_id+flow_id)%size_candicate_ePort_list;;//AddSrcPPU_id iff not SrcPPU
ePort_id=the id of the"ePort_id_local th in thisBranch’s ePortList
图10示出了根据本公开实施例的示例性并行通信方法1000的流程图。
在方框1010中,执行包括创建路由表的设置操作。路由表可以包括静态预定路由表。在一个示例性实现中,在建立时,驱动程序遍历拓扑结构,以收集路由表中包括的信息。路由表可以包括到目标PPU的路径中的最小链路数的指示。在一些实施例中,没有路由链路被禁用。在一些实施例中,PPU包括路由表,该路由表包括(例如,在转发链中的)下一个PPU的附加信息。在一些实施例中,路由表包括从源到目标有多少个可用链路的信息。在一些实施例中,路由表包括从源PPU到目标PPU的多个路径的信息,该信息例如包括多个中间PPU,可以在路由表中将其中一个或多个中间PPU标识为“下一个PPU”。
在方框1020中,从源并行处理单元(PPU)转发多个通信数据包。根据本公开的实施例,从源PPU的不同端口转发多个通信数据包中的至少两个通信数据包。在一些实施例中,在到目标PPU的不同路径上转发多个通信数据包中的至少两个通信数据包。在一些实施例中,在多个通信数据包中的至少两个通信数据包到目标PPU的途中,由不同的中继PPU接收和转发该多个通信数据包中的至少两个通信数据包。在一个实施例中,根据静态预定路由表形成和转发多个通信数据包中的每个通信数据包。
在一个实施例中,基于路由方案转发多个通信数据包。在一个示例性实施例中,通过以下步骤确定源PPU处的路由方案:创建与通过互连的多个通信路径相关联的流ID。在一些实施例中,多个通信数据包中的一个或多个通信数据包从源PPU前进到中继PPU。
在一个示例性实施例中,中继PPU处的路由方案包括为多个通信数据包中的每个通信数据包选择出口端口,其中选择出口端口包括:创建与通过互连的唯一通信路径相关联的流ID,其中通过哈希物理地址中选定的多个比特来建立流ID;映射源PPU ID和流ID;基于映射确定可用的多个可能出口端口;利用相应路由表来确定到目标的最小链路路径;以及基于流ID、多个可能出口端口和最小链路路径建立路由选择。
在方框1030中,在目标并行处理单元(PPU)处接收多个通信数据包。在一个实施例中,源PPU和目标PPU包括在网络中的多个处理单元中的相应处理单元中,其中多个处理核的第一处理核组包括在第一芯片中,多个处理核的第二处理核组包括在第二芯片中,其中多个处理单元通过多个互连进行通信,并且根据静态预定路由表配置相应的通信。
在一些实施例中,多个通信数据包中的至少两个通信数据包通过从源PPU到目标PPU的不同路径。在一些实施例中,由不同的中继PPU接收多个通信数据包中的至少两个通信数据包,并由不同的中继PPU将多个通信数据包中的至少两个通信数据包转发到目标PPU。
总之,根据本公开的实施例提供了对常规计算系统和诸如在这样的计算系统上执行的例如神经网络和AI工作负载的应用的功能的改进。更具体地说,根据本公开的实施例提供了方法、编程模型和系统,通过提高系统元件之间的存储器访问请求(例如,读请求和写请求)的传输速度和结果数据传输的完成速度来提高诸如神经网络和AI工作负载之类的应用的操作速度。
尽管前述公开使用特定的框图、流程图和示例阐述了各种实施例,但本文描述和/或示出的每个框图组件、流程图步骤、操作和/或组件可以使用广泛的配置单独和/或共同地实现。此外,因为可以实现许多其他架构来实现相同的功能,所以任何包含在其他组件中的组件的公开都应该被视为示例。
尽管已经用特定于结构特征和/或方法行为的语言描述了主题,但应当理解,在本公开中定义的主题不一定限于上述特定特征或动作。相反,上面描述的特定特征和动作被公开作为实现本公开的示例形式。
这样描述了根据本公开的实施例。虽然在特定实施例中描述了本公开,但本公开不应被解释为受这些实施例的限制,而是根据上面的权利要求书来解释。
Claims (20)
1.一种用于芯片间通信的处理系统,包括:
多个并行处理单元,所述并行处理单元包括在第一芯片中,每个所述并行处理单元包括:
多个处理核;
多个存储器,所述多个存储器的第一存储器组与所述多个处理核的第一处理核组耦合;
多个互连,位于芯片互连网络中,所述多个互连被配置为通信耦合所述多个并行处理单元,其中每个所述并行处理单元被配置为根据相应路由表通过所述芯片互连网络进行通信,所述相应路由表被存储和驻留在相应并行处理单元的寄存器中,并且所述相应路由表包括到任何其他给定并行处理单元的多个路径的信息。
2.根据权利要求1所述的处理系统,其中,所述路由表被存储在与所述多个并行处理单元相关联的寄存器中。
3.根据权利要求2所述的处理系统,其中,所述路由表是可重新配置的。
4.根据权利要求1所述的处理系统,其中,所述路由表与基本X-Y路由方案兼容。
5.根据权利要求1所述的处理系统,其中,
所述相应路由表是静态的,且在执行所述芯片互连网络和所述多个并行处理单元的通信能力的配置和设置操作期间被预设;以及
所述相应路由表是作为所述芯片互连网络和所述多个并行处理单元的通信能力的芯片互连网络配置和设置操作的一部分且可被重新配置,所述设置操作包括在所述并行处理单元的芯片互连网络子系统的寄存器中加载和存储所述相应路由表。
6.根据权利要求5所述的处理系统,其中,所述相应路由表包括路由序列中的下一个并行处理单元的信息。
7.根据权利要求1所述的处理系统,其中,所述并行处理单元包括在所述多个并行处理单元的第一并行处理单元组中,所述第一并行处理单元组包括在第一计算节点中,所述多个并行处理单元的第二并行处理单元组包括在所述多个并行处理单元的第二计算节点中。
8.根据权利要求5所述的处理系统,其中,所述多个并行处理单元中的相应并行处理单元包括相应的路由表。
9.根据权利要求5所述的处理系统,其中,当通信是在多个并行处理单元中的相应并行处理单元发起时,所述多个并行处理单元中的相应并行处理单元被视为源并行处理单元;当通信是通过多个并行处理单元中的相应并行处理单元时,所述多个并行处理单元中的相应并行处理单元被视为中继并行处理单元;或当通信是在多个并行处理单元中的相应并行处理单元结束时,所述多个并行处理单元中的相应并行处理单元被视为目标并行处理单元。
10.根据权利要求9所述的处理系统,其中,所述多个互连中的相应互连被配置用于多流均衡,其中所述源并行处理单元支持多达所述源并行处理单元和所述目标并行处理单元之间的最大链路数的并行通信流。
11.根据权利要求9所述的处理系统,其中,所述多个互连中的相应互连被配置用于多流均衡,其中中继并行处理单元运行路由以均衡出口之间的流。
12.根据权利要求1所述的处理系统,其中,通信是根据路由方案来处理,所述路由方案提供均衡的工作负载、有保证的依赖性和有保证的访问顺序。
13.一种通信方法,包括:
执行包括创建静态预定路由表的设置操作;
从源并行处理单元转发通信数据包,其中所述通信数据包是根据所述静态预定路由表来形成和转发;
在目标并行处理单元接收所述通信数据包;
其中,所述源并行处理单元和所述目标并行处理单元包括在网络中的多个并行处理单元中的相应并行处理单元中,多个处理核的第一处理核组包括在第一芯片中,所述多个处理核的第二处理核组包括在第二芯片中,并且所述多个并行处理单元通过多个互连进行通信,且根据所述静态预定路由表配置相应的通信。
14.根据权利要求13所述的通信方法,其中,所述源并行处理单元处的路由方案由以下步骤确定:
创建与通过所述互连的唯一通信路径相关联的流标识,其中通过哈希物理地址中的选定的多个比特来建立所述流标识;
利用相应路由表来确定到目标的最小链路路径;以及
基于所述流标识和所述最小链路路径建立路由选择。
15.根据权利要求13所述的通信方法,其中,在中继并行处理单元处的路由方案包括选择出口端口,其中所述选择出口端口包括:
创建与通过所述互连的唯一通信路径相关联的流标识,其中所述流标识是通过哈希物理地址中的选定的多个比特来建立;
映射源并行处理单元标识和所述流标识;
基于所述映射确定可用的多个可能出口端口;
利用相应路由表来确定到目标的最小链路路径;以及
基于所述流标识、所述多个可能出口端口和多个路径建立多个路由选择。
16.根据权利要求13所述的通信方法,其中,所述通信方法还包括:
均衡所述通信数据包的转发,
所述均衡所述通信数据包的转发包括:
经由基于物理地址的交织来分发所述通信数据包。
17.一种用于芯片间通信的处理系统,包括:
第一并行处理单元组,所述第一并行处理单元组包括在第一计算节点中,所述第一并行处理单元组中的相应并行处理单元包括在单独的相应芯片中;
第二并行处理单元组,所述第二并行处理单元组包括在第二计算节点中,所述第二并行处理单元组中的相应并行处理单元包括在单独的相应芯片中;以及
多个互连,位于芯片互连网络中,所述多个互连被配置为通信耦合所述第一并行处理单元组和所述第二并行处理单元组,所述第一并行处理单元组和所述第二并行处理单元组中的并行处理单元通过所述多个互连进行通信,并且根据驻留在所述第一并行处理单元组和所述第二并行处理单元组的相应并行处理单元的存储特征中的路由表来配置相应的通信,其中所述多个互连被配置成通过至少两个路径将来自所述第一计算节点中的第一并行处理单元的并行通信耦合到所述第二计算节点中的第二并行处理单元。
18.根据权利要求17所述的处理系统,其中,所述第一并行处理单元组和所述第二并行处理单元组中的相应并行处理单元包括:
多个处理核,其中相应的处理核组包括在所述相应并行处理单元中;以及
多个存储器,其中相应的存储器组通信耦合到所述相应的处理核组且包括在所述相应并行处理单元中。
19.根据权利要求17所述的处理系统,其中,多个处理单元通过所述多个互连进行通信,并且根据路由表配置相应的通信,所述路由表是静态的和预定的,在运行正常处理操作之前,所述路由表作为所述多个处理器的设置的部分被加载在与所述多个处理单元相关联的寄存器中,所述路由表包括源和目标之间的多个链路的指示。
20.根据权利要求17所述的处理系统,其中,由通过最小链路的多流以及交织流ID和源并行处理单元ID来提供均衡工作负载。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210173584.7A CN116701292A (zh) | 2022-02-24 | 2022-02-24 | 用于芯片间通信的处理系统和通信方法 |
US17/866,345 US11960437B2 (en) | 2022-02-24 | 2022-07-15 | Systems and methods for multi-branch routing for interconnected chip networks |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210173584.7A CN116701292A (zh) | 2022-02-24 | 2022-02-24 | 用于芯片间通信的处理系统和通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701292A true CN116701292A (zh) | 2023-09-05 |
Family
ID=87574174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210173584.7A Pending CN116701292A (zh) | 2022-02-24 | 2022-02-24 | 用于芯片间通信的处理系统和通信方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11960437B2 (zh) |
CN (1) | CN116701292A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118069571B (zh) * | 2024-04-24 | 2024-06-18 | 北京数渡信息科技有限公司 | 具有集合通信在网计算功能的PCIe交换芯片及PCIe交换机 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020199017A1 (en) * | 2001-06-25 | 2002-12-26 | Russell Lance W. | Routing meta data for network file access |
US7840914B1 (en) * | 2005-05-13 | 2010-11-23 | Massachusetts Institute Of Technology | Distributing computations in a parallel processing environment |
US7864792B2 (en) * | 2007-04-20 | 2011-01-04 | Cray, Inc. | Load balancing for communications within a multiprocessor computer system |
US9077590B2 (en) * | 2009-06-22 | 2015-07-07 | Citrix Systems, Inc. | Systems and methods for providing link management in a multi-core system |
US9471537B2 (en) | 2013-03-14 | 2016-10-18 | Altera Corporation | Hybrid programmable many-core device with on-chip interconnect |
US20170286169A1 (en) | 2016-03-31 | 2017-10-05 | National Instruments Corporation | Automatically Mapping Program Functions to Distributed Heterogeneous Platforms Based on Hardware Attributes and Specified Constraints |
US10146535B2 (en) | 2016-10-20 | 2018-12-04 | Intel Corporatoin | Systems, apparatuses, and methods for chained fused multiply add |
US10318723B1 (en) * | 2016-11-29 | 2019-06-11 | Sprint Communications Company L.P. | Hardware-trusted network-on-chip (NOC) and system-on-chip (SOC) network function virtualization (NFV) data communications |
KR102520017B1 (ko) | 2016-12-31 | 2023-04-11 | 인텔 코포레이션 | 이종 컴퓨팅을 위한 시스템들, 방법들, 및 장치들 |
US10580190B2 (en) | 2017-10-20 | 2020-03-03 | Westghats Technologies Private Limited | Graph based heterogeneous parallel processing system |
US20190138890A1 (en) | 2017-11-08 | 2019-05-09 | Ping Liang | Expandable and real-time recofigurable hardware for neural networks and logic reasoning |
KR102623918B1 (ko) | 2017-12-25 | 2024-01-11 | 인텔 코포레이션 | 프리-메모리 초기화 멀티스레드 병렬 컴퓨팅 플랫폼 |
US10789194B2 (en) * | 2018-03-26 | 2020-09-29 | Nvidia Corporation | Techniques for efficiently synchronizing data transmissions on a network |
US11211334B2 (en) | 2018-11-18 | 2021-12-28 | iCometrue Company Ltd. | Logic drive based on chip scale package comprising standardized commodity programmable logic IC chip and memory IC chip |
US10915328B2 (en) | 2018-12-14 | 2021-02-09 | Intel Corporation | Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency |
US11668750B2 (en) * | 2021-09-17 | 2023-06-06 | Nvidia Corporation | Performing testing utilizing staggered clocks |
-
2022
- 2022-02-24 CN CN202210173584.7A patent/CN116701292A/zh active Pending
- 2022-07-15 US US17/866,345 patent/US11960437B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11960437B2 (en) | 2024-04-16 |
US20230267095A1 (en) | 2023-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9998574B2 (en) | Packet processing match and action unit with configurable bit allocation | |
US10979353B2 (en) | Packet processing match and action unit with configurable memory allocation | |
US10645032B2 (en) | Packet processing match and action unit with stateful actions | |
US9294403B2 (en) | Mechanism to control resource utilization with adaptive routing | |
US8594090B2 (en) | Multicasting using a multitiered distributed virtual bridge hierarchy | |
US20140092740A1 (en) | Adaptive packet deflection to achieve fair, low-cost, and/or energy-efficient quality of service in network on chip devices | |
JP5280135B2 (ja) | データ転送装置 | |
CN101841471B (zh) | 具有连接成多维矩阵的节点的系统及其控制方法以及设备 | |
CN107959643B (zh) | 一种通过交换芯片构建的交换系统及其路由算法 | |
US10614026B2 (en) | Switch with data and control path systolic array | |
US20240020261A1 (en) | Peer-to-peer route through in a reconfigurable computing system | |
US7716409B2 (en) | Globally unique transaction identifiers | |
CN109873771A (zh) | 一种片上网络系统及其通信方法 | |
US7643477B2 (en) | Buffering data packets according to multiple flow control schemes | |
US20080107106A1 (en) | System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels | |
US11934334B2 (en) | CCIX port management for PCI express traffic | |
CN116701292A (zh) | 用于芯片间通信的处理系统和通信方法 | |
US20230244626A1 (en) | Parallel dataflow routing scheme systems and methods | |
US8571016B2 (en) | Connection arrangement | |
CN116957902A (zh) | 用于GPU的NoC仲裁方法 | |
CN116263752A (zh) | 用于芯片间通信的处理单元、处理系统及方法 | |
CN118413478B (zh) | 数据传输方法、装置、设备、交换芯片及存储介质 | |
US9268600B2 (en) | Picoengine pool transactional memory architecture | |
US9164794B2 (en) | Hardware prefix reduction circuit | |
CN113285880B (zh) | 多播路由方法、互连设备、网状网络系统及其配置方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |