CN116263752A - 用于芯片间通信的处理单元、处理***及方法 - Google Patents

用于芯片间通信的处理单元、处理***及方法 Download PDF

Info

Publication number
CN116263752A
CN116263752A CN202111561477.3A CN202111561477A CN116263752A CN 116263752 A CN116263752 A CN 116263752A CN 202111561477 A CN202111561477 A CN 202111561477A CN 116263752 A CN116263752 A CN 116263752A
Authority
CN
China
Prior art keywords
processing unit
processing
data
memory
npu
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
Application number
CN202111561477.3A
Other languages
English (en)
Inventor
韩亮
吴政原
朱国瑜
钟嵘
焦阳
陆叶
吴炜
邹云晓
尹莉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pingtouge Shanghai Semiconductor Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202111561477.3A priority Critical patent/CN116263752A/zh
Priority to US17/824,814 priority patent/US20230185749A1/en
Publication of CN116263752A publication Critical patent/CN116263752A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)

Abstract

本公开提供了一种用于芯片间通信的处理单元、处理***及方法。该处理单元包括:多个处理核;多个存储器,与处理核耦合;多个互连,被配置为将处理单元通信耦合到包括第二处理单元的多个其他处理单元,其中,多个互连包括在一端连接到处理单元的端口且在另一端连接到第二处理单元的端口的互连;以及通信控制器,通信控制器耦合到处理核,且通信控制器基于存储器访问请求中的地址,将输出的存储器访问请求映射到多个互连中的选定互连。本公开通过高带宽芯片间网络,在不使用常规网络(例如,以太网)的情况下实现***中的神经网络处理单元之间的通信,从而避免常规网络的带宽限制和相对速度不足,从而提高芯片间通信的数据传输速率和传输带宽。

Description

用于芯片间通信的处理单元、处理***及方法
技术领域
本公开涉及数据处理技术,尤其涉及用于芯片间通信的处理单元、处理***及方法。
背景技术
图1是说明用于加速神经网络的常规***100的框图。通常,***100包括多个服务器,并且每个服务器包括多个并行计算单元。在图1的示例中,***100包括服务器101和服务器102。服务器101包括连接到***组件互连高速(Peripheral Component InterconnectExpress,PCIe)总线111的神经网络处理单元(neural network processing unit,NPU),即NPU_0至NPU_n,且服务器102包括连接到PCIe总线112的类似的NPU阵列。每个NPU例如包括但不限于包括诸如处理核和存储器(未示出)之类的元件。如图1所示,***100中的每个服务器包括主机中央处理单元(CPU),且通过相应的网络接口控制器或网络接口卡(networkinterface card,NIC)连接到网络130。
***100包括例如使用分区全局地址空间(partitioned global address space,PGAS)编程模型的统一的存储器寻址空间。因此,在图1的示例中,服务器101的每个NPU可以从服务器101或服务器102的任何其他NPU上的存储器读取数据或向服务器101或服务器102的任何其他NPU上的存储器写入数据,反之亦然。例如,为了将数据从服务器101的NPU_0写入NPU_n,通过PCIe总线111将数据从NPU_0发送到NPU_n;且为了将数据从服务器101的NPU_0写入服务器102的NPU_m上的存储器,通过PCIe总线111将数据从NPU_0发送到NIC121,然后通过网络130将数据发送到NIC122,然后通过PCIe总线112将数据发送到NPU_m。
***100可用于诸如但不限于图分析和图神经网络的应用,更具体地,***100可以用于诸如但不限于在线购物引擎、社交网络、推荐引擎、映射引擎、故障分析、网络管理和搜索引擎的应用。这些应用执行大量的存储器访问请求(例如,读和写请求),且因此还传送(例如,读和写)大量的用于处理的数据。虽然PCIe带宽和数据传输速率相当可观,但它们对这些应用来说仍然是有限的。对于这些应用来说,PCIe确实太慢且其带宽太窄。
发明内容
根据本公开的实施例提供了上述问题的解决方案。概括而言,根据本公开的实施例提供了计算***和诸如但不限于神经网络和人工智能(AI)工作负载的应用的运行的改进。更具体地,根据本公开的实施例提供了方法、***和编程模型,通过提高发送和接收***元件之间的存储器访问请求(例如,读请求和写请求)以及完成结果数据传输的速度,来提高诸如神经网络和AI工作负载等应用的执行速度。本公开的***、方法和编程模型允许***中的处理单元在不使用常规网络(例如,以太网)的情况下通信,该常规网络使用相对窄且慢的***组件互连高速(PCIe)总线。
在一些实施例中,***包括高带宽芯片间网络(ICN),ICN允许***中神经网络处理单元之间通信。例如,ICN允许NPU与位于相同计算节点或服务器的其他NPU通信,也允许NPU与位于其他计算节点或服务器的NPU通信。在一些实施例中,可以在命令级(例如,在直接存储器访问级)和指令级(例如,在更细粒度的加载/存储指令级)通信。ICN允许***中的NPU在不使用PCIe总线的情况下进行通信,从而避免其带宽限制和相对的速度不足。
可以在推送模式(push mode)或拉取模式(pull mode)下在NPU之间传送数据。当在命令级推送模式下操作时,第一NPU将数据从第一NPU的存储器复制到第二NPU的存储器,然后在第二NPU设置标志,且第二NPU等待直到该标志被设置为使用从第一NPU推送的数据。当在命令级拉取模式下操作时,第一NPU分配第一NPU的存储器,然后在第二NPU设置标志以指示第一NPU的存储器已分配,且第二NPU等待直到该标志被设置为从第一NPU的分配的存储器中读取数据。当在指令级推送模式下操作时,由第一处理单元正在执行的处理任务相关联的操作数被存储在第一处理单元的缓冲器中,并且处理任务的结果被写入第二处理单元的缓冲器中。
通过上述方案,使得可以在不使用常规网络(例如,以太网)的情况下实现***中的神经网络处理单元之间的通信,从而避免其带宽限制和相对速度不足,从而提高芯片间通信的数据传输速率和传输带宽。
本领域普通技术人员在阅读在各附图中示出的实施例的以下详细描述后,将认识到本公开的各种实施例的这些和其他目的和优点。
附图说明
包含在本说明书中且形成本说明书的一部分的附图示出了本公开的实施例,并且与详细描述一起用于解释本公开的原理,其中类似的编号描述了类似的元件。
图1示出了示例常规***。
图2A示出了根据本公开实施例的示例***的框图。
图2B示出了根据本公开实施例的示例ICN拓扑结构的框图。
图2C示出了根据本公开实施例的示例神经网络处理单元(NPU)的框图。
图3A示出了根据本公开实施例的NPU的框图。
图3B示出了根据本公开实施例的NPU中交换机的元件。
图4示出了根据本公开实施例的在命令级数据推送模式下操作的NPU的元件。
图5示出了根据本公开实施例的在命令级数据拉取模式下操作的NPU的元件。
图6示出了根据本公开实施例的在指令级推送模式下操作的NPU的元件。
图7示出了根据本公开实施例的用于芯片间通信的示例方法的流程图。
图8示出了根据本公开实施例的用于命令级推送操作的示例方法的流程图。
图9示出了根据本公开实施例的用于命令级拉取操作的示例方法的流程图。
图10示出了根据本公开实施例的用于指令级推送操作的示例方法的流程图。
具体实施例
现在将详细参考本公开的各种实施例,其示例在附图中示出。尽管结合这些实施例进行描述,但将理解,它们并不旨在将本公开限制到这些实施例。相反,本公开旨在涵盖可包括在所附权利要求所定义的本公开的精神和范围内的替代、修改和等同物。此外,在本公开的以下详细描述中,为了提供对本公开的透彻理解,阐述了许多具体细节。然而,将理解,本公开可以在没有这些特定细节的情况下实施。在其他实例中,未详细描述公知的方法、过程、组件和电路,以便避免不必要地模糊本公开的方面。
以下详细描述的某些部分以过程、逻辑块、处理和对计算机存储器中的数据位的操作的其他符号表示的方式呈现。这些描述和表示是数据处理技术领域的技术人员使用的手段,以最有效地将其工作的实质传达给本领域的其他技术人员。在本公开中,过程、逻辑块、处理等被认为是导致期望结果的步骤或指令的自洽序列。这些步骤是那些利用物理量的物理操作的步骤。通常,尽管不是必须的,这些量采取电或磁信号的形式,能够在计算***中存储、传输、组合、比较和以其他方式操纵。事实证明,主要是出于常见用法的原因,将这些信号称为事务、比特、值、元素、符号、字符、样本、像素等有时是方便的。
但是,应该记住,所有这些和类似术语都是与适当的物理量相关联的,且仅仅是应用于这些量的方便的标签。除非从下面的讨论中明确指出,否则可以理解,在整个本公开中,使用诸如“访问”、“分配”、“存储”、“接收”、“发送”、“写入”、“读取”、“发射”、“加载”、“推送”、“拉动”、“处理”、“缓存”、“路由”、“确定”、“选择”、“请求”、“同步”、“复制”、“映射”、“更新”、“转换”、“生成”、“分配”等术语的讨论指的是设备或计算***(例如,图7、8、9和10的方法)或类似的电子计算设备、***或网络(例如,图2A的***及其组件和元件)的动作和过程。计算***或类似电子计算设备操纵和变换在存储器、寄存器或其他此类信息存储、传输或显示设备中表示为物理(电子)量的数据。
这里描述的一些元件或实施例可以在驻留在某种形式的计算机可读存储介质(例如程序模块)上的由一个或多个计算机或其他设备执行的计算机可执行指令的一般上下文中讨论。作为示例而非限制,计算机可读存储介质可以包括非暂时性计算机存储介质和通信介质。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。在各种实施例中,可以根据需要组合或分配程序模块的功能。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于双倍数据速率(double data rate,DDR)存储器、随机存取存储器(RAM)、静态RAM(SRAM)或动态RAM(DRAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、闪存(例如,SSD)或其他存储器技术、小型光盘ROM(CD-ROM)、数字多功能光盘或其他光存储器、磁盒、磁带、磁盘存储器或其他磁存储设备、或可用于存储所需信息且可被访问以获取该信息的任何其他介质。
通信介质可以包含计算机可执行指令、数据结构和程序模块,还包括任何信息传递介质。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(RF)、红外和其他无线介质的无线介质。上述任一项的组合也可以包括在计算机可读介质的范围内。
图2A示出了根据本公开实施例的示例***200的框图。***200可用于神经网络和人工智能(AI)工作负载,但不限于此。通常,***200可用于任何并行计算,包括大量数据并行处理。
图2C示出了根据本公开实施例的示例神经网络处理单元NPU_0的框图。***200和NPU_0是用于执行诸如本文公开的那些方法(例如,图7-10的方法)的示例***和处理单元。
***200和NPU_0可以包括除了下面所示和描述的元件或组件之外的元件或组件,并且元件或组件可以如图中所示或以不同的方式布置。示例***200和NPU_0中的一些块可以根据它们执行的功能来描述。***的元件和组件被描述和示出为分开的块,本公开不限于此;也就是说,例如,块/功能的组合可以集成到执行多个功能的单个块中。***200可以被扩展以包括附加NPU,并且***200与包括分层缩放方案和扁平化缩放方案的不同缩放方案兼容。
一般而言,***200包括多个计算节点或服务器,并且每个计算节点或服务器包括多个并行计算单元或芯片(例如,NPU)。在图2A的示例中,***200包括计算节点(服务器)201和202,以下简称为服务器。虽然仅示出和描述了两个服务器,但根据本公开的实施例不限于此。
在图2A的实施例中,服务器201包括主机中央处理单元(CPU)205,并且经由网络接口控制器或网络接口卡(NIC)206连接到网络240。服务器201可以包括除了将要描述的元件和组件之外的元件和组件。
在图2A的实施例中,服务器201的并行计算单元包括网络处理单元(NPU),即NPU_0至NPU_n,它们连接到***组件互连高速(PCIe)总线208,***组件互连高速总线208相应地连接到NIC 206。NPU还可以使用神经NPU来实现,或者可以称为神经NPU。NPU还可以实现为或使用通用图形处理单元、或并行处理单元、或可加速神经网络数据处理的任何其他处理单元。
服务器202包括类似于服务器201的元件的元件。也即是说,在一些实施例中,服务器201和202具有相同的结构(尽管'm'可以等于也可以不等于'n'),至少达到本文所描述的程度。***200中的其他服务器可以类似地构造。
服务器201上的NPU可以通过总线208彼此通信(通信耦合)。服务器201上的NPU可以通过网络240经由总线208和总线209以及NIC 206和NIC207与服务器202上的NPU通信。
一般而言,服务器201上的每个NPU包括诸如但不限于处理核和存储器的元件。具体而言,在图2C的实施例中,NPU_0包括耦合到一个或多个计算元件或处理核(例如,核212)以及一个或多个高速缓存(例如,高速缓存214)的片上网络(network-on-a-chip,NoC)210。NPU_0还包括耦合到NoC 210的一个或多个高带宽存储器,例如HBM 216。处理核、高速缓存和HBM在此也可分别统称为核212、高速缓存214和HBM216。在图2C的示例中,高速缓存214是HBM216和NoC210之间的最后一级高速缓存;服务器201可以包括其它级别的高速缓存(例如,L1、L2等;未示出)。HBM216中的存储器空间可以被声明或分配(例如,在运行时)作为缓冲器(例如,乒乓缓冲器(ping-pong buffer),图2C中未示出)。
NPU_0还可以包括其他功能块或组件(未示出),例如命令处理器、直接存储器访问(direct memory access,DMA)块和便于与PCIe总线208通信的PCIe块。NPU_0可以包括本文描述的或图2C中所示的元件和组件以外的元件和组件。
服务器201和202上的其他NPU包括与NPU_0的元件和组件类似的元件和组件。也即是说,在一些实施例中,服务器201和202上的NPU具有相同的结构,至少达到本文所描述的程度。
图2A的***200包括高带宽芯片间网络(ICN)250,其允许***200中的NPU之间通信。也即是说,***200中的NPU经由ICN250彼此通信耦合。例如,ICN250允许NPU_0与服务器201上的其他NPU通信,并且还允许NPU_0与其他服务器(例如,服务器202)上的NPU通信。在图2A的示例中,ICN250包括直接连接两个NPU并允许两个连接的NPU之间的双向通信的互连(例如,互连252和254)。互连可以是半双工链路,在其上一次只有一个NPU可以传送数据,或者互连可以是全双工链路,在其上可以同时在两个方向上传送数据。在一个实施例中,互连(例如,互连252和254)是基于或利用串行/解串行器(Serial/Deserializer,SerDes)功能的线路或电缆。
在图2A的示例中,互连252是将服务器201上的NPU_0直接连接到NPU_n的硬连线或电缆连接,而互连254是将服务器201上的NPU_n直接连接到服务器202上的NPU_0的硬连线或电缆连接。也即,例如,互连252的一端连接到服务器201上的NPU_0,另一端连接到NPU_n。更具体地,互连252的一端***到交换机234(如图2C所示)上的端口或耦合到交换机234上的端口,互连252的另一端***到NPU_n的交换机上的端口或耦合到NPU_n的交换机上的端口。
实际的连接拓扑结构(哪个NPU连接到其他哪个NPU)是设计或实施方式的选择。图2B示出了根据本公开实施例的示例ICN拓扑结构的框图。每个服务器仅示出三个NPU;然而,本公开并不限于此。在本示例中,服务器201上的NPU_0连接到服务器201上的NPU_1,服务器201上的NPU_1相应地连接到服务器201上的NPU_2。服务器201上的NPU_0可以连接到另一服务器(未示出)上的NPU。服务器201上的NPU_2连接到服务器202上的NPU_0。虽然NPU可以连接到其在服务器上的直接邻居(immediate neighbor)或其在相邻服务器上的直接邻居,但本公开并不限于此。因此,在图2B的示例中,服务器202上的NPU_0连接到服务器202上的NPU_2,服务器202上的NPU_2相应地连接到服务器202上的NPU_1。服务器202上的NPU_1可以连接到另一服务器(未示出)上的NPU。连接同一服务器上的NPU的互连可称为芯片内互连,而连接不同服务器上的NPU的互连可称为芯片间互连。
NPU之间的通信可以在命令级(例如,DMA拷贝)和在指令级(例如,直接加载或存储)。ICN250允许***200中的服务器和NPU在不使用PCIe总线208的情况下进行通信,从而避免其带宽限制和相对速度不足。
NPU之间的通信包括存储器访问请求(例如,读请求和写请求)的传输和响应于这些请求的数据传送。任意两个NPU之间的通信可以是直接的或间接的,其中,两个NPU可以在同一个服务器上,也可以在不同的服务器上。
通过两个NPU之间的单个链路进行直接通信,当来自一个NPU的信息通过一个或多个中间NPU中继到另一个NPU时发生间接通信。例如,在图2A所例示的配置中,服务器201上的NPU_0可以经由互连252与服务器201上的NPU_n直接通信,并且服务器201上的NPU_0可以经由到NPU_n的互连252以及从NPU_n到服务器202上的NPU_0的互连254与服务器202上的NPU_0间接通信。
在一些实施例中,***200包括例如使用分区全局地址空间(PGAS)编程模型的统一的存储器寻址空间。因此,可以全局分配***200中的存储器空间,使得例如NPU_0上的HBM216可由该服务器上的NPU以及由***200中的其他服务器上的NPU访问,并且NPU_0上的NPU可访问***中的其他NPU/服务器上的HBM。因此,在图2A的示例中,一个NPU可以从***200中的另一个NPU读取数据或向***200中的另一个NPU写入数据,其中,两个NPU可以在相同的服务器上或不同的服务器上,并且其中,读或写可以如上所述直接或间接地发生。
服务器201通过ICN子***230(如图2C所示)耦合到ICN 250,ICN子***230与NoC210耦合。在图2C所示的实施例中,ICN子***230包括ICN通信控制块(通信控制器)232、交换机234和一个或多个互通信链路(inter-communication link,ICL)(例如,ICL 236;统称为ICL 236)。ICL236可以耦合到交换机234,或可以是交换机234的组件。在一些实施例中,每个ICL236构成或包括端口。在一个实施例中,有7个ICL。每个ICL236连接到相应的互连(例如,互连252)。例如,在一些实施例中,互连252的一端***到NPU_0上的ICL(端口)236中,并且互连的另一端***到另一NPU上的另一ICL/端口中。下面结合图3A进一步描述ICN子***230。
在图2C的配置中,例如,NPU_0的存储器访问请求(例如,读请求或写请求)从NoC210发出到ICN通信控制块232。存储器访问请求包括标识哪个服务器/NPU/HBM是存储器访问请求的目的地的地址。ICN通信控制块232使用该地址来确定哪个ICN236(直接或间接地)连接到由该地址标识的服务器/NPU/HBM。那么,由交换机234将存储器访问请求路由到选定的ICL 236,然后,通过ICN 250将存储器访问请求路由到由该地址标识的服务器/NPU/HBM。在接收端,在目的NPU的ICL接收存储器访问请求,将存储器访问请求提供给ICN通信控制块且然后提供给该NPU的NoC,且最后将存储器访问请求提供给由存储器访问请求寻址的该NPU上的HBM。如果存储器访问请求是写请求,则请求相关联的数据被写入(加载或存储)到目的NPU上的HBM中的地址。如果存储器访问请求是读请求,则将位于目的NPU上的HBM中地址的数据返回到NPU_0。以这种方式,使用高带宽ICN250快速地完成芯片间通信,绕过PCIe总线208,从而避免其带宽限制和相对速度不足。
图3A示出了根据本公开实施例的NPU300的框图,NPU300包括ICN子***230。NPU300是上面结合图2A和2C讨论的示例NPU,即NPU_0至NPU_n。NPU300可以包括图3A中描述或示出的元件和组件以外的元件和组件。
在图3A中,NPU 300包括耦合在核212和ICN子***230之间的一个或多个计算命令环(例如,计算命令环302;统称为计算命令环302)。计算命令环302可以实现为多个缓冲器。在核212和计算命令环302之间可以存在一对一的对应关系。来自在核212上执行的进程的命令按照它们被发出或将要被执行的顺序被推送到相应计算命令环302的报头中。
ICN子***230包括耦合到计算命令环302的ICN通信命令环(例如,通信命令环312;统称为通信命令环312)。通信命令环312可以实现为多个缓冲器。在通信命令环312和计算命令环302之间可以存在一对一的对应关系。在一个实施例中,有16个计算命令环302和16个通信命令环312。
在图3A所示的实施例中,ICN通信控制块232包括命令调度块304和指令调度块306。命令调度块304和指令调度块306用于NPU300对另一个NPU寻址的存储器访问请求。命令调度块304用于涉及相对较大数据量(例如,两兆字节(megabyte)或多兆字节)的存储器访问请求。指令调度块306提供更精细的控制级别,并用于涉及较小数据量(例如,小于两兆字节;例如,128或512字节)的存储器访问请求。一般来说,在一些实施例中,命令调度块304处理ICN读和写,指令调度块306处理远程存储和远程加载,尽管本公开不限于此。来自通信命令环312的命令被发送到命令调度块304。来自NoC210的指令被发送到指令调度块306。指令调度块306可以包括远程加载/存储单元(未示出)。
更具体地,当计算命令被分解并分派到核212中的一个(或多个)时,操作***内核(kernel,例如,程序或处理器指令序列)将开始在该一个或多个核中运行。当存在存储器访问指令时,向存储器发出该指令:如果存储器地址被确定为本地存储器地址,则该指令经由NoC210到达本地HBM216;否则,如果存储器地址被确定为远程存储器地址,则该指令到达指令调度块306。
ICN子***230还包括耦合到命令调度块304和指令调度块306的多个芯片到芯片(chip-to-chip,C2C)的DMA单元(例如,DMA单元308;统称为DMA单元308)。DMA单元308还经由C2C结构(fabric)309和网络接口单元(network interface unit,NIU)310耦合到NoC210,并且DMA单元308还耦合到交换机234,交换机234相应地耦合到与ICN250耦合的ICL236。
在一个实施例中,存在16个通信命令环312和7个DMA单元308。在DMA单元308和ICL236之间可以存在一对一的对应关系。命令调度块304将通信命令环312映射到DMA单元308,且因此映射到ICL236。命令调度块304、指令调度块306和DMA单元308可以各自包括诸如先进先出(FIFO)缓冲器(未示出)的缓冲器。
ICN通信控制块232将输出的存储器访问请求映射到基于该请求中的地址所选择的ICL236。ICN通信控制块232将存储器访问请求转发到与所选择的ICL 236相对应的DMA单元308。然后由交换机234将该请求从DMA单元308路由到所选择的ICL。
由NPU 300在ICL 236接收输入的存储器访问请求,将存储器访问请求转发到与该ICL相对应的DMA单元308,然后经由NIU 310通过C2C结构309将存储器访问请求转发到NoC210。对于写请求,将数据写入到HBM216中对应于存储器访问请求中的地址的位置。对于读请求,从HBM216中对应于存储器访问请求中的地址的位置读取数据。
在一些实施例中,使用屏障命令(FENCE)和等待(WAIT)命令来实现计算命令环302和通信命令环312的同步。例如,NPU300的处理核212可以发出用于处理任务的数据读请求,其中读请求寻址NPU300以外的NPU。计算命令环302中的WAIT命令阻止核212完成任务,直到接收到所请求的数据。将读请求推送到计算命令环302,然后推送到通信命令环312。基于读请求中的地址选择ICL 236,并且命令调度块304或指令调度块306将读请求映射到与所选择的ICL 236相对应的DMA单元308。然后,当从另一个NPU获取所请求的数据且加载到NPU300的存储器(例如,HBM 216)中时,通信命令环312发出同步命令(FENCE命令),该同步命令通知核212所请求的数据可用于处理。更具体地,FENCE命令在计算命令环302中的WAIT命令中设置允许核212继续处理任务的标志。下面结合图4、5和6提供了进一步的讨论。
继续图3A的讨论,例如为了保持带宽,当要读取相对较大的数据量时,读请求可以被划分为多个较小的请求。在这种情况下,当所请求的数据的各个片段全部由NPU300接收时,由DMA单元308累积它们,然后将它们加载到NPU300的存储器(例如,HBM216),然后,如上所述,通信命令环312使用同步命令(FENCE命令)来通知核212所请求的数据可用于处理。
图3B示出了根据本公开实施例的交换机234的元件320(例如,端口)。来自DMA块308的存储器访问请求或数据传送经由出口路径322转发到ICL216和ICN250。来自对NPU_0寻址的另一NPU的存储器访问请求或数据传送经由入口路径324转发到DMA块308。来自对NPU_0以外的NPU寻址并将由NPU_0中继的另一NPU的存储器访问请求或数据传送从入口路径324转发到出口路径322。
图4示出了根据本公开实施例的在命令级数据推送模式下操作的NPU的元件。仅示出了两个NPU(即NPU401和NPU402)的选定元件。NPU401和NPU402是***200(图2A和2C)的NPU的实施例,并且可以包括图3的NPU300的元件以及附加元件。NPU401和NPU402可以在***200的相同服务器上或不同服务器上。
表1提供了在推送模式下命令级编程的示例,其中称为NPU0和生产者(producer)的NPU401正在将数据推送到称为NPU1和消费者(consumer)的NPU402。
表1–(推送模式下)命令级编程的示例
Figure BDA0003412749950000091
在表1的示例中,NPU0已经完成了处理任务,并要将结果数据推送到NPU1。因此,NPU0将数据从本地缓冲器(buff1)复制(写入)到NPU1上的地址a1(位于a1的存储器阵列),并且还将数据从另一本地缓冲器(buff2)复制(写入)到NPU1上的地址a2(位于a2的存储器阵列)。一旦通信命令环312中的写请求都完成,NPU0使用ICN_FENCE命令在NPU1上设置标志(e1)。在NPU1上,计算命令环302中的WAIT命令用于指示NPU1等待,直到标志被设置。当在WAIT命令中设置标志时,NPU1知道写操作都已完成且可以使用数据。
在图4中示出了表1的示例。NPU401的通信命令环312依次将第一写请求(rWrite1)和第二写请求(rWrite2)转发到命令调度块304中的FIFO。在一个实施例中,命令调度块304包括或耦合到转译后备缓冲器控制器(translation lookaside buffer controller,TLBC)412。如果写请求包括虚拟地址,则TLBC将虚拟地址转译为物理地址。
命令调度块304还包括路由表,如前所述,该路由表基于写请求中的地址来标识将使用哪个ICL 236来将写请求从NPU401路由到NPU402。一旦写请求完成(一旦将数据写入NPU402上的NBM216),如上所述,使用FENCE命令(rFENCE)设置WAIT命令中的标志。NPU402上的计算命令环302依次包括WAIT命令(Wait)、第一使用命令(use1)和第二使用命令(use2)。当在WAIT命令中设置标志时,计算命令环302中的使用命令可以被执行,且用于向NPU402上的合适的处理核指示HBM216中的数据被更新和可用。
图5示出了根据本公开实施例的在命令级数据拉取模式下的操作。仅示出了两个NPU(即NPU501和NPU502)的选定元件。NPU501和NPU502是***200(图2A和2C)的NPU的实施例,并且可以包括图3的NPU300的元件以及附加元件。NPU501和NPU502可以在***200的相同服务器上或不同服务器上。
表2提供了在拉取模式下命令级编程的示例,其中称为NPU1和消费者的NPU502正在从称为NPU0和生产者的NPU501拉取数据。
表2–(拉取模式下)命令级编程的示例
Figure BDA0003412749950000101
在表2的示例中,NPU0分配HBM 216中的本地缓冲器a1和a2。一旦两个缓冲器都被分配,NPU0使用计算命令环302中的FENCE命令来设置NPU1上标志(e1)。在NPU1上,通信命令环312中的WAIT命令用于指示NPU1等待直到标志被设置。当在WAIT命令中设置标志时,则向NPU1指示分配了两个缓冲器,并且可以执行读请求。
在图5中示出了表2的示例。NPU502的通信命令环312依次包括WAIT命令(rWait)、第一读取请求(rRead1)和第二读取请求(rRead2)。一旦如上所述分配了缓冲器,则如上所述使用FENCE命令设置通信命令环312中的WAIT命令中的标志。当在WAIT命令中设置标志时,可以执行通信命令环312中的第一读取请求和第二读取请求,并且可以读取HBM216中分配的缓冲器中的数据。
图6示出了根据本公开实施例的在指令级的操作。仅示出了两个NPU(即NPU601和NPU602)的选定元件。NPU601和NPU602是***200(图2A和2C)的NPU的实施例,并且可以包括图3的NPU300的元件以及附加元件。NPU601和NPU602可以在***200的相同服务器上或不同服务器上。
在下面的讨论中,术语“映射(warp)”被用来指代执行的基本单元:程序中可以独立运行的最小单元或段,尽管可以存在数据级并行。尽管该术语可以与特定类型的处理单元相关联,但根据本公开的实施例不限于此。
每个映射包括多个线程(thread)(例如,32个线程)的集合。多个线程中的每个线程执行指令的同一段,但有其自己的输入和输出数据。
参考图6,NPU 601上的HBM 216包括声明或分配(例如,在运行时)作为乒乓缓冲器610的存储器空间,乒乓缓冲器610包括乒缓冲器(ping buffer)610a和乓缓冲器(pongbuffer)610b。类似地,NPU 602上的HBM 216包括声明或分配(例如,在运行时)作为乒乓缓冲器612的存储器空间,乒乓缓冲器612包括乒缓冲器612a和乓缓冲器612b。
与NPU601正在执行的处理任务(例如,映射)相关联的操作数存储在乒乓缓冲器610中。例如,从乓缓冲器610b读取操作数,该操作数由任务使用以产生结果,并且该结果被(使用远程加载指令)写入到NPU602上的乒缓冲器612a。接下来,从乒缓冲器610a读取操作数,该操作数由任务使用来产生另一结果,并且该结果被(使用远程加载指令)写入到NPU602上的乓缓冲器612b。使用指令调度块306和C2CDMA单元308执行该写(远程加载)操作。
表3和表4提供了在推送模式下指令级编程的示例,其中称为NPU0和生产者的NPU601正在将数据推送到称为NPU1和消费者的NPU 602。
在图6和表3的示例中,NPU601上同时运行多个映射。多个映射可以协同工作,以更新数据并将数据加载到图6的NPU601上的数组(array)“Data”中(参见下面的表3和表4);多个映射中每个映射负责该数据的某些部分。因此,可能有必要同步来自那些映射的结果,以便不仅当所有映射已经完成执行时,而且当所有结果数据已经被加载到数组中时,可以通知NPU602。
为了完成这一点,选择在NPU601上运行的多个线程中的一个线程(例如,第一映射中的第一线程,warp-0;参见表3)作为包括映射的线程块的代表。所选线程与NPU602上的线程通信。具体地,一旦在NPU601上加载并准备好所有数据,所选线程使用子例程(subroutine)(在表3中称为threadfence_system subroutine)来确定这一点,然后在NPU602上设置标志(标记)以向NPU602指示所有写(远程加载)操作已经完成。
表3–NPU 601上(推送模式下)指令级编程的示例
Figure BDA0003412749950000121
表4–NPU 602上(推送模式下)指令级编程的示例
Figure BDA0003412749950000122
表3和表4的示例仅包括单个映射(warp-0);然而,正如所指出的,可以有多个映射并行操作,如这些表中所示,每个映射执行相同指令,但有不同的输入和输出。此外,虽然表3和4是推送模式的示例,但本公开并不限于此,并且可以针对拉取模式执行指令级编程。
图7示出了根据本公开实施例的用于芯片间通信的示例方法700的流程图。图8示出了根据本公开的实施例的示例命令级推送操作800的流程图。图9示出了根据本公开的实施例的示例命令级拉动操作900的流程图。图10示出了根据本公开的实施例的示例指令级推送操作1000的流程图。
由图7至图10的流程图中的块表示的所有或一些操作可以实现为驻留在某种形式的非暂时性计算机可读存储介质上的计算机可执行指令,并且由例如图2A的***200及其元件和组件执行。
在图7的块702中,***200中的第一服务器或节点或计算节点上的第一处理单元生成存储器访问请求,存储器访问请求包括标识***中作为存储器访问请求的目的地的第二处理单元的地址。第一处理单元包括互连,该互连被配置为将第一处理单元通信耦合到包括第二处理单元的其他处理单元。
在图7的块704中,第一处理单元使用该地址来选择连接第一处理单元和第二处理单元的互连。
在块706中,第一处理单元将存储器访问请求路由到所选择的互连,且因此路由到第二处理单元。当存储器访问请求是读请求时,第一处理单元通过互连从第二处理单元接收数据。
在图8的块802中,第一处理单元将数据从第一处理单元上的存储器复制到第二处理单元上的存储器。
在块804中,第一处理单元在第二处理单元上设置标志。当设置该标志时,该标志允许第二处理单元使用从第一处理单元推送的数据。
在图9的块902中,第一处理单元分配第一处理单元上存储器。
在块904中,第一处理单元在第二处理单元上设置标志,以指示第一处理单元上的存储器已分配。当设置该标志时,该标志允许第二处理单元从第一处理单元上的存储器中读取数据。
在图10的块1002中,第一处理单元在第一处理单元的缓冲器中存储与第一处理单元正在执行的处理任务相关联的操作数。
在块1004中,第一处理单元将处理任务的结果写入第二处理单元上的缓冲器。
在块1006中,第一处理单元选择处理任务的线程。
在块1008中,第一处理单元使用线程在第二处理单元上设置标志。该标志向第二处理单元指示与处理任务相关联的所有写操作已完成。
总之,概括而言,根据本公开的实施例提供了计算***和诸如神经网络和AI工作负载的应用的运行的改进。更具体地,根据本公开的实施例提供了方法、编程模型和***,通过提高发送***元件之间的存储器访问请求(例如,读请求和写请求)以及完成结果数据传输的速度,来提高诸如神经网络和AI工作负载等应用的执行速度。
尽管前述公开使用特定的框图、流程图和示例阐述了各种实施例,但本文描述和/或示出的每个框图组件、流程图步骤、操作和/或组件可以使用广泛的配置单独和/或共同地实现。此外,因为可以实现许多其他架构来实现相同的功能,所以任何包含在其他组件中的组件的公开都应该被视为示例。
尽管已经用特定于结构特征和/或方法行为的语言描述了主题,但应当理解,在本公开中定义的主题不一定限于上述特定特征或动作。相反,上面描述的特定特征和动作被公开作为实现本公开的示例形式。
这样描述了根据本公开的实施例。虽然在特定实施例中描述了本公开,但本公开不应被解释为受这些实施例的限制,而是根据上面的权利要求书来解释。

Claims (20)

1.一种处理单元,所述处理单元位于第一服务器,包括:
多个处理核;
多个存储器,与所述处理核耦合;
多个互连,被配置为将所述处理单元通信耦合到包括第二处理单元的多个其他处理单元,其中,所述多个互连包括在一端连接到所述处理单元的端口且在另一端连接到所述第二处理单元的端口的互连;以及
通信控制器,所述通信控制器耦合到所述处理核,且所述通信控制器基于所述存储器访问请求中的地址,将输出的存储器访问请求映射到所述多个互连中的选定互连。
2.根据权利要求1所述的处理单元,其中,所述第二处理单元位于所述第一服务器,且所述处理单元和所述第二处理单元还通过所述第一服务器上的总线彼此通信耦合。
3.根据权利要求1所述的处理单元,其中,所述第二处理单元位于第二服务器,所述处理单元和所述第二处理单元还通过以下方式彼此通信耦合:位于所述第一服务器的第一总线和第一网络接口卡、位于所述第二服务器的第二总线和第二网络接口卡、以及耦合到所述第一网络接口卡和所述第二网络接口卡的网络。
4.根据权利要求1所述的处理单元,还包括:
交换机,耦合到所述多个互连;
所述通信控制器包括:
第一功能块,用于第一数据量相关联的第一类型的存储器访问请求;以及
第二功能块,用于第二数据量相关联的第二类型的存储器访问请求,所述第二数据量小于所述第一数据量;
其中,所述第一类型的存储器访问请求由所述多个处理核中的处理核向耦合到所述第一功能块的缓冲器发出,并且所述第二类型的存储器访问请求由所述多个处理核中的处理核经由片上网络向所述第二功能块发出。
5.根据权利要求1所述的处理单元,其中,所述处理单元用于在推送模式下将数据推送到所述第二处理单元,其中,在推送模式下,所述处理单元将数据从所述处理单元上的存储器复制到所述第二处理单元上的存储器,然后在所述第二处理单元设置标志,以指示从所述处理单元推送的数据可用。
6.根据权利要求1所述的处理单元,其中,在拉取模式下由所述第二处理单元从所述处理单元拉取来自所述处理单元的数据,其中,在拉取模式下,所述处理单元分配所述处理单元上的存储器,然后在所述第二处理单元设置标志,以指示所述处理单元上的存储器已分配,并且来自所述处理单元上的存储器的数据可读取。
7.根据权利要求1所述的处理单元,其中,所述处理单元用于在推送模式下将数据推送到所述第二处理单元,其中,在推送模式下,将由所述处理单元正在执行的处理任务相关联的操作数存储在所述处理单元上的缓冲器中,并且将所述处理任务的结果写入所述第二处理单元上的缓冲器中;
所述处理任务包括多个线程,其中选择所述多个线程中的线程且选择的线程与运行在所述第二处理单元上的线程通信,以在所述第二处理单元上设置标志,以向所述第二处理单元指示所述第二处理单元上的缓冲器以及所述处理任务相关联的所有写操作已完成。
8.一种处理***,包括:
多个节点,其中所述多个节点中的每个节点包括多个处理单元,所述多个处理单元包括第一处理单元和第二处理单元,并且所述多个处理单元中的每个处理单元包括多个端口;以及
芯片间网络,耦合到所述多个节点,其中所述芯片间网络包括多个互连,所述多个互连被配置为通信耦合所述多个处理单元,并且通过所述多个互连中的互连将所述第一处理单元的所述多个端口中的端口和所述第二处理单元的多个端口中的端口连接,所述多个互连中的互连在一端连接到所述第一处理单元的端口且在另一端连接到所述第二处理单元的端口。
9.根据权利要求8所述的处理***,其中,所述第一处理单元和所述第二处理单元位于所述多个节点中的同一节点上,并且所述第一处理单元和所述第二处理单元还通过所述同一节点上的总线彼此通信耦合。
10.根据权利要求8所述的处理***,其中,所述第一处理单元位于所述多个节点中的第一节点上,所述第二处理单元位于所述多个节点中的第二节点上,且所述第一处理单元和所述第二处理单元还通过以下方式彼此通信耦合:位于所述第一节点的第一总线和第一网络接口卡、位于所述第二节点的第二总线和第二网络接口卡以及耦合到所述第一网络接口卡和所述第二网络接口卡的网络。
11.根据权利要求8所述的处理***,其中,当在推送模式下操作时,所述第一处理单元将数据推送到所述第二处理单元,其中,在推送模式下,所述第一处理单元将数据从所述第一处理单元上的存储器复制到所述第二处理单元上的存储器,然后在所述第二处理单元设置标志,且所述第二处理单元等待直到所述标志被设置为使用从所述第一处理单元推送的数据。
12.根据权利要求8所述的处理***,其中,当在拉取模式下操作时,所述第二处理单元从所述第一处理单元拉取数据,其中,在拉取模式下,所述第一处理单元分配所述第一处理单元上的存储器,然后在所述第二处理单元设置标志,以指示所述第一处理单元上的存储器已分配,且所述第二处理单元等待直到所述标志被设置为从所述第一处理单元上的存储器读取数据。
13.根据权利要求8所述的处理***,其中,当在推送模式下操作时,所述第一处理单元将数据推送到所述第二处理单元,其中,在推送模式下,将由所述第一处理单元正在执行的处理任务相关联的操作数存储在所述第一处理单元上的缓冲器中,并且将所述处理任务的结果写入所述第二处理单元上的缓冲器中;
所述处理任务包括多个线程,其中选择所述多个线程中的线程且选择的线程与运行在所述第二处理单元上的线程通信,以在所述第二处理单元上设置标志,以向所述第二处理单元指示所述第二处理单元上的缓冲器以及所述处理任务相关联的所有写操作已完成。
14.一种用于芯片间通信的计算机实现的方法,包括:
由位于第一节点的第一处理单元生成存储器访问请求,所述存储器访问请求包括标识第二处理单元的地址,其中所述第一处理单元包括多个互连,所述多个互连被配置为将所述第一处理单元通信耦合到包括所述第二处理单元的多个其他处理单元;
由所述第一处理单元使用所述地址选择所述多个互连中的互连连接所述第一处理单元和所述第二处理单元,其中所述多个互连中的互连在一端连接到所述第一处理单元的端口,且在另一端连接到所述第二处理单元的端口;
由所述第一处理单元将所述存储器访问请求路由到所述互连。
15.根据权利要求14所述的方法,还包括:
当所述存储器访问请求是读请求时,所述第一处理单元通过所述互连从所述第二处理单元接收数据。
16.根据权利要求14所述的方法,其中,所述第二处理单元位于所述第一节点,并且所述第一处理单元和所述第二处理单元还通过所述第一节点上的总线彼此通信耦合。
17.根据权利要求14所述的方法,其中,所述第二处理单元位于第二节点,所述第一处理单元和所述第二处理单元还通过以下方式彼此通信耦合:位于所述第一节点的第一总线和第一网络接口卡、位于所述第二节点的第二总线和第二网络接口卡、以及耦合到所述第一网络接口卡和所述第二网络接口卡的网络。
18.根据权利要求14所述的方法,其中,在推送模式操作期间,所述第一处理单元将数据推送到所述第二处理单元,所述方法还包括:
由所述第一处理单元将数据从所述第一处理单元上的存储器复制到所述第二处理单元上的存储器;以及
由所述第一处理单元在所述第二处理单元设置标志,其中,当设置所述标志时,所述标志允许所述第二处理单元使用从所述第一处理单元推送的数据。
19.根据权利要求14所述的方法,其中,在拉取模式操作期间,由所述第二处理单元从所述第一处理单元拉取数据,所述方法还包括:
由所述第一处理单元分配所述第一处理单元上的存储器;以及
由所述第一处理单元在所述第二处理单元设置标志,以指示所述第一处理单元上的存储器已分配,当设置所述标志时,所述标志允许所述第二处理单元从所述第一处理单元上的存储器读取数据。
20.根据权利要求14所述的方法,其中,所述第一处理单元正在执行的处理任务包括多个线程,在推送模式操作期间,所述第一处理单元将数据推送到所述第二处理单元,所述方法还包括:
由所述第一处理单元选择所述多个线程中的线程;
由所述第一处理单元将所述第一处理单元正在执行的处理任务相关联的操作数存储在所述第一处理单元上的缓冲器中;
由所述第一处理单元将所述处理任务的结果写入所述第二处理单元上的缓冲器;以及
由所述第一处理单元使用所述线程在所述第二处理单元上设置标志,以向所述第二处理单元指示所述第二处理单元上的缓冲器以及所述处理任务相关联的所有写操作已完成。
CN202111561477.3A 2021-12-15 2021-12-15 用于芯片间通信的处理单元、处理***及方法 Pending CN116263752A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111561477.3A CN116263752A (zh) 2021-12-15 2021-12-15 用于芯片间通信的处理单元、处理***及方法
US17/824,814 US20230185749A1 (en) 2021-12-15 2022-05-25 Systems and methods for parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111561477.3A CN116263752A (zh) 2021-12-15 2021-12-15 用于芯片间通信的处理单元、处理***及方法

Publications (1)

Publication Number Publication Date
CN116263752A true CN116263752A (zh) 2023-06-16

Family

ID=86694338

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111561477.3A Pending CN116263752A (zh) 2021-12-15 2021-12-15 用于芯片间通信的处理单元、处理***及方法

Country Status (2)

Country Link
US (1) US20230185749A1 (zh)
CN (1) CN116263752A (zh)

Also Published As

Publication number Publication date
US20230185749A1 (en) 2023-06-15

Similar Documents

Publication Publication Date Title
US11929927B2 (en) Network interface for data transport in heterogeneous computing environments
US6971098B2 (en) Method and apparatus for managing transaction requests in a multi-node architecture
CN106462524B (zh) 使用混合存储器立方体链路的互连***及方法
US20120215988A1 (en) Administering Non-Cacheable Memory Load Instructions
CN114860329B (zh) 动态一致性偏置配置引擎及方法
WO2015134098A1 (en) Inter-chip interconnect protocol for a multi-chip system
US20210334143A1 (en) System for cooperation of disaggregated computing resources interconnected through optical circuit, and method for cooperation of disaggregated resources
US10601723B2 (en) Bandwidth matched scheduler
CN107250995B (zh) 存储器管理设备
CN110908929B (zh) 用于高带宽缩放的一致数据高速缓存
US11029847B2 (en) Method and system for shared direct access storage
US11061676B2 (en) Scatter gather using key-value store
CN100547567C (zh) 具有被优化以处理数据流应用的高速缓存的数据处理***
US11157191B2 (en) Intra-device notational data movement system
US20230144038A1 (en) Memory pooling bandwidth multiplier using final level cache system
US11847049B2 (en) Processing system that increases the memory capacity of a GPGPU
US11960437B2 (en) Systems and methods for multi-branch routing for interconnected chip networks
US20230244626A1 (en) Parallel dataflow routing scheme systems and methods
CN116263752A (zh) 用于芯片间通信的处理单元、处理***及方法
CN106325377B (zh) 外部设备扩展卡及输入输出外部设备的数据处理方法
US10838868B2 (en) Programmable data delivery by load and store agents on a processing chip interfacing with on-chip memory components and directing data to external memory components
US20220350526A1 (en) Flexible memory extension systems and methods
US11281612B2 (en) Switch-based inter-device notational data movement system
CN113297111A (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
TA01 Transfer of patent application right

Effective date of registration: 20240221

Address after: 200120, 5th floor, No. 366 Shangke Road, Lane 55 Chuanhe Road, Pudong New Area Free Trade Pilot Zone, Shanghai

Applicant after: Pingtouge (Shanghai) semiconductor technology Co.,Ltd.

Country or region after: China

Address before: 310052 room 508, 5th floor, building 4, No. 699 Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: Alibaba (China) Co.,Ltd.

Country or region before: China

TA01 Transfer of patent application right