CN114827054A - 加速单元、相关装置和路径选择方法 - Google Patents

加速单元、相关装置和路径选择方法 Download PDF

Info

Publication number
CN114827054A
CN114827054A CN202110125216.0A CN202110125216A CN114827054A CN 114827054 A CN114827054 A CN 114827054A CN 202110125216 A CN202110125216 A CN 202110125216A CN 114827054 A CN114827054 A CN 114827054A
Authority
CN
China
Prior art keywords
data
unit
acceleration unit
acceleration
hop
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
CN202110125216.0A
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 Group Holding 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 Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202110125216.0A priority Critical patent/CN114827054A/zh
Publication of CN114827054A publication Critical patent/CN114827054A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供了一种加速单元、相关装置和路径选择方法。该加速单元包括:加速处理单元,用于确定待发送到目标加速单元的数据;交换模块,用于:获取所述数据所属的有序组,其中,同一有序组中的数据需要按照发送的顺序接收;基于所述有序组,为数据分配流标识,其中,为同一有序组中的数据分配同一个流标识;并且按照所分配的流标识确定该数据到下一跳加速单元的路径。本公开实施例能在保证有顺序限制的数据不会被乱序执行的同时,减小面积的浪费,降低功耗,减少时延。

Description

加速单元、相关装置和路径选择方法
技术领域
本公开涉及芯片领域,更具体而言,涉及一种加速单元、相关装置和路径选择方法。
背景技术
目前,人工智能中的大量运算普遍采用芯片来处理。传统的处理单元(如CPU等)的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在人工智能计算等需要大规模并行计算的领域则效率不够。因此,开发出了专用于人工智能计算的加速单元(如GPU、NPU等等,以提高人工智能计算的效率。加速单元的一个重要的特点是,当需要处理的计算超过本身的处理能力或效率时,可以将一部分数据交换到其它加速单元进行协同计算,以在人工智能计算中实现大规模并行处理,和提高计算的可延展性。
当加速单元需要将一部分数据交换到其它加速单元以协助处理时,其要确定到该其它加速单元的路由。路由是从当前加速单元经过其它中间加速单元到该其它加速单元的一条通路。在当前加速单元和该路由中当前加速单元的下一跳加速单元之间可能有多条路径,例如当前加速单元的A端口和下一跳加速单元的A端口之间存在着一条路径,当前加速单元的B端口和下一跳加速单元的B端口之间存在着另一条路径。因此,当前加速单元发到下一跳加速单元的数据要在多条路径中进行选择。这些数据中有一些有顺序限制,另一些没有顺序限制。有顺序限制的数据例如是同一个电影中的前后两帧数据,或者游戏中的前后的数据,它们必须按照发送的数据接收。没有顺序限制的数据没有这种要求。如何保证在当前加速单元向下一跳加速单元发送数据时有顺序限制的数据能在接收后恢复原来的顺序,成为一个问题。
现有技术中解决这个问题的方法是,给每个要发送的数据加一个序号,下一跳加速单元设置一个很大的重排序静态随机存取存储器(SRAM)将接收到的每个有序组(如一个电影、一个游戏)中的数据按照序号重新排序,以与发送端发送的顺序保持一致。该方法需要一个很大的重排序SRAM,造成了面积的浪费和功耗的增加。重排序SRAM增加传输的延迟。
发明内容
有鉴于此,本公开旨在提出一种加速节点之间传输数据时的路径选择方案,它能在保证有顺序限制的数据不会被乱序执行的同时,减小面积的浪费,降低功耗,并减小时延。
根据本公开的一方面,提供了一种加速单元,包括:
加速处理单元,用于确定待发送到目标加速单元的数据;
交换模块,用于:获取所述数据所属的有序组,其中,同一有序组中的数据需要按照发送的顺序接收;基于所述有序组,为数据分配流标识,其中,为同一有序组中的数据分配同一个流标识;并且按照所分配的流标识确定该数据到下一跳加速单元的路径。
可选地,所述交换模块为不同有序组中的数据分配不同流标识。
可选地,所述交换模块包括:
流标识分配单元,用于为数据分配流标识;
路径确定单元,用于确定所述加速单元到所述目标加速单元的路由,在所述路由中确定所述加速单元的下一跳加速单元,确定所述加速单元到所述下一跳加速单元的多条路径,并在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径。
可选地,所述按照分配的流标识确定该数据到下一跳加速单元的路径,包括:按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径。
可选地,所述加速单元到下一跳加速单元的数据的流标识按自然数由小到大命名;所述按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径,包括:用所述数据的流标识除以所述多条路径的总数的余数,作为索引,选择该数据到下一跳加速单元的路径。
可选地,所述交换模块还包括:读取单元,用于从所述加速处理单元读取待发送到目标加速单元的数据,并按照最大允许长度要求切分,其中,所述流标识分配单元为切分后的数据分配流标识。
可选地,流标识分配单元将分配的流标识添加到切分后的数据。
可选地,所述加速处理单元基于待发送到目标加速单元的数据,产生包含数据在所述加速单元的存储地址、和数据所属的有序组的数据转移指令;所述读取单元基于所述数据转移指令中的所述存储地址,读取所述数据;所述加速处理单元基于所述数据转移指令中的所述有序组,分配流标识。
可选地,所述交换模块还包括:交换结构,具有多个端口和开关网络,所述开关网络用于选择性地将所述多个端口中的一个端口与其它加速单元的一个端口相接,形成到所述其它加速单元的一条路径。
根据本公开的一方面,提供了一种计算装置,包括:
如上所述的加速单元;
目标加速单元;
处理单元,用于分配待处理加速指令到所述加速单元,以便所述加速单元在执行所述待处理加速指令的过程中,确定待发送到所述目标加速单元用于协同处理的数据。
根据本公开的一方面,提供了一种片上系统,包括如上所述的加速单元。
根据本公开的一方面,提供了一种数据中心,包括如上所述的计算装置。
根据本公开的一方面,提供了一种路径选择方法,包括:
确定待发送到目标加速单元的数据;
获取所述数据所属的有序组,其中,同一有序组中的数据需要按照发送的顺序接收;
基于所述有序组,为数据分配流标识,其中,为同一有序组中的数据分配同一个流标识;以及
按照分配的流标识确定该数据到下一跳加速单元的路径。
可选地,所述基于所述有序组,为数据分配流标识,包括:为不同有序组中的数据分配不同流标识。
可选地,所述按照分配的流标识确定该数据到下一跳加速单元的路径,包括:
确定所述加速单元到所述目标加速单元的路由;
在所述路由中确定所述加速单元的下一跳加速单元;
确定所述加速单元到所述下一跳加速单元的多条路径;
在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径。
可选地,所述在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径,包括:按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径。
可选地,所述加速单元到下一跳加速单元的数据的流标识按自然数由小到大命名;所述按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径,包括:用所述数据的流标识除以所述多条路径的总数的余数,作为索引,选择该数据到下一跳加速单元的路径。
可选地,在确定待发送到目标加速单元的数据之后,所述方法还包括:将所述数据按照最大允许长度要求切分。
可选地,所述基于所述有序组,为数据分配流标识,包括:基于切分后数据所属的有序组,为所述切分后数据分配流标识,以添加到切分后数据。
本公开实施例中,为要发送到下一跳加速单元的数据确定所属的有序组(例如,同一电影中的数据属于同一有序组,同一游戏中的数据属于同一有序组),给同一有序组的数据分配同一个流标识,不同有序组的数据分配不同的流标识,再按照流标识确定到下一跳加速单元的路径。这样,同一有序组中的数据具有同一流标识,自然分配到同一路径,从而接收到的顺序就是发送的顺序,保证了有顺序限制的数据接收后顺序能还原。同时,它没有采用设置重排序SRAM的做法,减小了面积的浪费,降低了功耗,且减少了重排序引起的时延。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本公开一个实施例所应用的数据中心的结构图;
图2是本公开一个实施例的数据中心中一个服务器的内部结构图;
图3是根据本公开一个实施例服务器内部的处理单元和加速单元的内部结构图;
图4是根据本公开一个实施例的加速处理单元的内部结构图;
图5是根据本公开一个实施例的核的内部结构图;
图6是根据本公开一个实施例的交换模块的内部结构图;
图7是根据本公开一个实施例的根据流标识为数据分配路径的示意图;
图8是根据本公开一个实施例的路径选择方法的流程图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
加速单元:针对传统处理单元在一些专门用途的领域(例如,进行人工智能运算等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元。加速单元包括中央处理器(CPU)、图形处理器(GPU)、通用图形处理器(GPGPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以及专用智能加速硬件(例如,神经网络处理器NPU)。
处理单元:在数据中心的服务器中进行传统处理(非用于上述加速单元负责的处理)的单元。处理单元除了进行这些传统处理之外,还承担着对加速单元的调度职能,向加速单元分配加速单元需要承担的任务。处理单元可以采用处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
目标加速单元:数据发送到的加速单元。加速单元执行数据计算时,如果需要处理的计算超过本身的处理能力或效率时,可以将一部分数据交换到其它加速单元进行协同计算,该其它加速单元就是目标加速单元。
数据所属的有序组:数据处于一个特定的上下文中,该上下文中数据有顺序要求,必须按照该顺序要求对数据进行处理,该上下文为数据所属的有序组。例如,一个电影是一个有序组,电影中前面的数据要先于后面的数据被处理,呈现给观众观看,因此该有序组中的数据有顺序要求。再例如,一个游戏也是一个有序组,游戏中前面的数据要先于后面的数据被处理,因此该有序组中的数据也有顺序要求。同一个有序组中的数据被期望按发送的顺序接收并处理。不同有序组的数据之间没有接收和执行的顺序要求。
流标识:区分数据流的字符。不同数据流有不同的流标识,同一数据流中的数据享有同一流标识。例如,电影中前面的数据和后面的数据在同一有序组中,作为一个数据流,分配同样的流标识。
路由:从当前加速单元经过其它中间加速单元到数据要发送到的目标加速单元的一条通路。
下一跳加速单元:路由中当前加速单元的下一个加速单元。
路径:路由上两个相邻加速单元的端口之间的通路。加速单元可能具有多个端口,每个端口都可能连接到路由上相邻加速单元的一个端口,该端口和该相邻加速单元的被连接端口之间的通路是一条路径。
片上系统(SoC:System-on-a-chip):在单个芯片上集成的一个完整的系统,其对所有或部分必要的电子电路进行包分组。所谓完整的系统一般包括处理单元或加速单元、存储器、以及外围电路等。
本公开的应用环境
本公开实施例提出了一种路由选择方案,它用于当加速单元需要将一部分数据路由到其它加速单元以协助处理时,在所述加速单元和路由中的下一跳加速单元之间选择路径。整个路由选择方案相对较为通用,可以用于多个加速单元之间协同进行处理,因而需要数据交换的任何情形,例如,数据中心、单机内包含处理单元和若干协同处理的加速单元的普通终端设备、物联网设备和嵌入式设备等。该方案与最终部署到的硬件无关。但为了示例性描述,下文中将主要以数据中心为应用环境进行描述。本领域技术人员应当理解,本公开实施例还可以适用于其它的应用环境。
数据中心
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,人工智能等越来越多地应用到数据中心。
在传统的大型数据中心,网络结构通常如图1所示,即互连网络模型(hierarchical inter-networking model)。这个模型包含了以下部分:
服务器140:各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。
接入交换机130:接入交换机130是用来让服务器140接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(Top of Rack)交换机,它们物理连接服务器。
汇聚交换机120:每台汇聚交换机120连接多台接入交换机130,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
核心交换机110:核心交换机110为进出数据中心的包提供高速的转发,为汇聚交换机120提供连接性。整个数据中心的网络分为L3层路由网络和L2层路由网络,核心交换机110为通常为整个数据中心的网络提供一个弹性的L3层路由网络。
通常情况下,汇聚交换机120是L2和L3层路由网络的分界点,汇聚交换机120以下的是L2网络,以上是L3网络。每组汇聚交换机管理一个传送点(POD,Point Of Delivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。
汇聚交换机120和接入交换机130之间通常使用生成树协议(STP,Spanning TreeProtocol)。STP使得对于一个VLAN网络只有一个汇聚层交换机120可用,其他的汇聚交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚交换机120的层面,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
服务器
服务器140是数据中心真实的处理设备。图2示出了一个服务器140内部的结构框图。服务器140包括有总线连接的存储器210、处理单元集群270和加速单元集群280。处理单元集群270包括多个处理单元220。加速单元集群280包括多个加速单元230。加速单元230即为了提高在专门用途领域中的数据处理速度而设计的处理单元,本公开实施例中主要用于加速人工智能运算处理。加速单元可包括中央处理器(CPU)、图形处理器(GPU)、通用图形处理器(GPGPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以及专用智能加速硬件(例如,神经网络处理器NPU)。处理单元是对加速单元进行调度、向各加速单元分配要执行的待执行指令序列的单元,它可以采用处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
传统的处理单元的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。因此,开发出了各种专门的加速单元,用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理。本公开提出的加速单元是专用于加速人工智能运算的处理速度的单元,它是采用数据驱动并行计算的架构,用于处理人工智能运算中的大量并行运算(例如卷积、池化等)的处理单元。由于人工智能运算中的大量处理(例如卷积、池化等)中的数据和中间结果在整个运算过程中紧密联系,会被经常用到,用现有的处理单元构架,由于处理单元的核内的内存容量很小,因此要大量频繁访问核外存储器,造成处理的低效。采用这种专用于加速人工智能运算的处理速度的加速单元,由于其每个核中具有适于人工智能运算用到的存储容量的片上内存,避免频繁访问核外部的存储器,就能大大提高处理效率,提高计算性能。
加速单元230要接受处理单元220的调度。如图2所示,存储器210中存储有人工智能运算中需要的各种数据,例如人工智能运算中深度学习模型的节点的权重数据等。这些人工智能运算(例如深度学习模型)当需要时被图2中的一个处理单元220部署到一个加速单元230。即,处理单元220可以通过指令的形式向加速单元230发送人工智能运算中的参数(如各节点的权重)在存储器210中的地址。加速单元230在实际执行人工智能运算时,就会根据这些参数在存储器210中的地址,直接在存储器210中寻址这些参数,将其暂存在其片上内存中。在实际进行人工智能运算时,处理单元220还会将实际的数据输入(例如深度学习模型的真实输入)通过指令的形式发送给加速单元230,暂存在加速单元230的片上内存中。这样,加速单元230就可以根据这些输入和已放入片上内存的参数(例如权重)进行人工智能运算。本公开实施例主要着眼于加速单元230接受处理单元220指示的数据处理任务后,由于自身处理能力和容量等有限,将一部分数据转交其它加速单元230协同处理时数据到下一跳加速单元230的路径选择。后文将对这一过程详细描述。
处理单元和加速单元的内部结构
下面结合图3的处理单元220与加速单元230的内部结构图,描述处理单元220和加速单元230的作用关系。
如图3所示,处理单元220内包含多个处理器核222和被多个处理器核222共享的高速缓存221。每个处理器核222包括取指令单元203、指令译码单元224、指令发射单元225、指令执行单元226。
取指令单元223用于将要执行的指令从存储器210中搬运到指令寄存器(可以是图3示出的寄存器堆229中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,处理单元220进入指令译码阶段,指令译码单元224按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元225的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元225位于指令译码单元224与指令执行单元226之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元226,使得多个指令的并行操作成为可能。
指令发射单元225将指令发射到指令执行单元226后,指令执行单元226开始执行指令。但如果该指令执行单元226判断该指令应该是加速单元执行的,则将其转发到相应的加速单元执行。例如,如果该指令是一条人工智能运算的指令,指令执行单元226不再执行该指令,而是将该指令通过总线发送到加速单元230,由加速单元230执行。
图3示出的加速单元30可以是GPGPU、NPU等。GPGPU即通用图形处理器,是一种通过图形任务的处理来计算原本由中央处理器处理的通用计算任务的图形处理器。这些通用计算常常与图形处理并没有任何关系。其可以是人工智能运算中的计算任务。由于现代图形处理器强大的并行处理能力和可编程流水线,令流处理器可以处理非图形数据。特别在面对单指令流多数据流(SIMD),且数据处理的运算量远大于数据调度和传输的需要时,通用图形处理器在性能上大大超越了传统的中央处理器应用程序,因此能够起到加速的作用。另外,加速单元30还可以包括CPU、GPU、FPGA、ASIC等。
在一个服务器140可以有多个加速单元230。当指令执行单元226把人工智能运算指令作为待处理加速指令发送给其中一个加速单元230后,当需要处理的计算超过该加速单元230本身的处理能力或效率时,可以将一部分数据交换到其它加速单元230进行协同计算,以实现大规模并行处理,提高计算的可延展性。
加速单元230包括加速处理单元238和交换模块239。
加速处理单元238执行待处理加速指令,并在需要处理的计算超过该加速单元230本身的处理能力或效率时,作出转发到其它加速单元230处理的决策。具体地,其需要确定待发送的数据、和转发到的目标加速单元。
交换模块239负责为需要转发到确定的目标加速单元230的数据确定交换路由,并从加速处理单元238取出待发送的数据,将该数据发送到路由中的下一跳加速单元230。为了保证有顺序限制的数据在接收后处理时不发生乱序,例如,同一电影中的数据中,必须先发送的数据先处理,交换模块239为要发送到下一跳加速单元的数据确定所属的有序组(例如,同一电影中的数据属于同一有序组,同一游戏中的数据属于同一有序组),在同一有序组中的数据需要按照发送的顺序接收,因为处理时有顺序限制。然后,基于所述有序组,为数据分配流标识。给同一有序组的数据分配同一个流标识,不同有序组的数据分配不同的流标识。这样,同一流标识的数据属于同一有序组,先发送的需要先接收。然后,按照流标识确定到下一跳加速单元的路径。这样,同一有序组中的数据具有同一流标识,自然分配到同一路径,在同一路径上先发送的数据会先接收并处理,保证了为顺序限制的数据处理时不会乱序。同时,不同有序组中的数据没有执行顺序限制,其可以携带不同流标识,因而不用在同一路径发送,其接收顺序也不作要求。达到了针对有顺序限制的数据和没有顺序限制的数据的不同处理。由于它没有采用设置重排序SRAM的做法,减小了面积的浪费,降低了功耗,且减少了重排序引起的时延。
在下文中,将结合交换模块239的具体结构,详细描述上述的具体实现过程。
加速处理单元结构
加速处理单元238的通用结构如图4所示,其内部包括多个核236(图4中示出了4个核,但本领域技术人员应当理解,加速单元230中也可以包含其它数目的核236)、命令处理器237、直接存储访问机制235、和总线通道231。
总线通道231是指令从总线进出加速单元230的通道。
直接内存访问(DMA,Direct Memory Access)机制235是一些计算机总线架构提供的功能,它能使数据从附加设备直接写入计算机主板的存储器上。这种方式相比于设备之间所有的数据传输都要通过处理单元的方式,大大提高了数据访问的效率。正是因为有这样的机制,加速单元230的核可以直接访问存储器210,读取深度学习模型中的参数(例如各节点的权重)等,大大提高了数据访问效率。
命令处理器237将由处理单元220发送至加速单元230的指令分配给核236执行。指令执行单元226将需要加速单元230执行的待执行加速指令发送给加速单元230后,该待执行指令序列从总线通道231进入后,缓存在命令处理器237,由命令处理器237选择核236,将指令序列分配给其执行。另外,命令处理器237还负责核236之间的同步操作。另外,命令处理器237在所有的核236的处理能力加在一起不足以处理待处理加速指令时,作出将一部分数据转移到其它加速单元230进行协同处理的决策,向交换模块239发出数据转移指令。该数据转移指令可以包括数据要转移到的目标加速单元230的标识、数据在本加速单元230中的存储地址、和数据所属的有序组(如某个电影、某个游戏)。交换模块239根据这些信息,取出要转移处理的数据,确定到目标加速单元230的路由,并在到路由中下一跳目标加速单元230的多条路径中选择路径。这些将在后文详细描述。
下面将详细描述命令处理器237是如何确定数据要转移到的目标加速单元230、数据在加速单元230中的存储地址、和数据所属的有序组。
命令处理器237接收到处理单元220发送的待处理加速指令,根据该待处理加速指令中的任务计算出该任务所需的存储容量和核计算能力,获取各核236当前的剩余存储容量和剩余计算能力。如果各核236当前的剩余存储容量相加,仍然小于该任务所需的存储容量,或者各核236当前的剩余计算能力相加,仍然小于该任务所需的计算能力,则需要将一部分数据协调到其它(目标)加速单元230去处理。确定目标处理单元220可以采取向其余加速单元230分别查询其剩余存储容量和计算能力的方式。可以将其余加速单元230中剩余存储容量最大或剩余计算能力最大的加速单元230,作为目标加速单元230。
命令处理器237确定出各核236当前的剩余存储容量相加,仍然小于该任务所需的存储容量,或者各核236当前的剩余计算能力相加,仍然小于该任务所需的计算能力后,可以根据该任务所需的存储容量与各核236当前的剩余存储容量相加的和的差占该任务所需的存储容量的比,或者该任务所需的计算能力与各核236当前的剩余计算能力相加的和的差占该任务所需的计算能力的比,来确定要转移的数据。例如,如果各核236当前的剩余存储容量相加的和为800MB,该任务所需的存储容量为1000MB,则不足部分占整个任务所需的存储容量的比为20%。可以将20%的数据协调到目标加速单元230协同处理。在确定需要转移的数据后,命令处理器237就能确定出数据在加速单元230中的核236的片上内存360中的存储地址。
命令处理器237可以根据待处理加速指令中的任务,确定数据所属的有序组。在该任务中明确规定该任务是用于电影、游戏等等。因此,从该任务中可以直接确定数据所属的有序组。
核结构
图5是根据本公开一个实施例的图4中的核236的内部结构图。
在一个实施例中,如图5所示,核236包括张量引擎310、池化引擎320、存储器拷贝引擎330、定序器350、指令缓存器340、片上内存360、常数缓冲器370。
命令处理器237分配给核236的指令序列首先进入指令缓存器340缓存。然后,定序器350从指令缓存器340中按照先进先出的顺序取指令,根据指令的性质分配给张量引擎310或池化引擎320执行。张量引擎310负责处理人工智能运算中的卷积和矩阵乘法等相关操作。池化引擎320负责处理人工智能运算中的池化操作。存储器拷贝引擎330是专门处理数据拷贝的单元,这里的数据拷贝包括由于片上内存360可能会溢出而将一些数据由片上内存360拷贝到各核236共享的存储器,或者其它核236的片上内存360。定序器350根据取出的指令是卷积、矩阵乘法、池化、还是数据拷贝等操作性质,决定将指令分配给张量引擎310、池化引擎320、或者存储器拷贝引擎330。
片上内存360是存储人工智能运算中的参数、人工智能运算中的输入变量和各种中间结果的核内存储器。常数缓冲器370是存储人工智能运算中除权重参数之外的其它常量参数(例如,神经网络模型中的超参)的缓冲器。在处理单元220将人工智能运算中的模型参数预先配置在加速单元230的过程中,处理单元220通过指令的形式向加速单元230发送模型参数在存储器210中的地址。这些参数包括深度学习模型中节点的权重和其它参数(例如超参)。对于权重,加速单元230在实际的人工智能运算时,将它从存储器210相应的位置取出,放在片上内存360中。对于其它参数,加速单元230在实际的人工智能运算时,从存储器210相应的位置取出,放在常数缓冲器370中。实际开始推理(inference)的指令由命令处理器237分配给核236执行。指令中的输入变量也存储在片上内存360。另外,当张量引擎310和池化引擎320进行卷积或池化运算后,得到的各种中间结果也存放在片上内存360中。
交换模块239的结构
如图6所示,根据本公开一个实施例的交换模块239包括读取单元2391、流标识分配单元2392、路径确定单元2393、交换结构2394。
如上所述,加速处理单元238需要将一部分数据转移到目标加速单元230协同处理时,向交换模块239发出数据转移指令。该数据转移指令可以包括要转移的数据在加速处理单元238中的存储地址(片上内存360上的存储地址)。读取单元2391接收到该数据转移指令,按照其中的存储地址从所述加速处理单元238读取所述数据,并按照最大允许长度要求切分。最大允许长度是指加速单元230之间的数据通信中运行的消息最大长度。用转移的数据总长度除以最大允许长度后向上取整,就得到切分成的数据消息数。例如,要转移的数据共有47KB,最大允许长度为10KB,47KB/10KB=4.7,向上取整后为5,因此可以分成5个数据消息,前四个数据消息可以是10KB,第五个数据消息可以是7KB。
接着,流标识分配单元2392为切分后的数据分配流标识。切分后的数据是指切分后的数据消息,例如上例中的前四个10KB的数据消息,或第五个7KB的数据消息。由于数据转移指令包括数据所属的有序组,流标识分配单元2392可以直接从数据转移指令获取有序组。如果数据处于一个特定的上下文中,该上下文中数据有顺序要求,必须按照该顺序要求对数据进行处理,该上下文为数据所属的有序组。例如,一个电影是一个有序组,电影中前面的数据要先于后面的数据被处理,呈现给观众观看,因此该有序组中的数据有顺序要求。同一个有序组中的数据被期望按发送的顺序接收并处理。不同有序组的数据之间没有接收和执行的顺序要求。流标识分配单元2392获得该有序组后,基于所述有序组,为数据分配流标识。流标识是区分数据流的字符。数据流是指同一有序组下的先后发送的数据形成的流。同一数据流中的数据属于同一有序组,有唯一的流标识。不同数据流中的数据的流标识不同。例如,电影中前面的数据和后面的数据在同一有序组中,作为一个数据流,分配同样的流标识。在一个实施例中,流标识分配单元2392将分配的流标识作为一个字段添加到切分后的数据。
路径确定单元2393确定当前加速单元230到目标加速单元230的路由。路由是从当前加速单元230经过其它中间加速单元230到数据要发送到的目标加速单元230的一条通路。例如,路由A-B-C-D-E中,数据从当前加速单元A,顺序经过加速单元B、C、D,最后到目标加速单元E。路径确定单元2393可以通过查找路由表的方式确定路由。接着,路径确定单元2393在所述路由中确定当前加速单元230的下一跳加速单元230。例如,上例中加速单元A的下一跳加速单元是B。路径是路由上两个相邻加速单元230的端口之间的通路。加速单元230可能具有多个端口,每个端口都可能连接到路由上相邻加速单元230的一个端口,形成一条路径。例如,当前加速单元230的A端口与下一跳加速单元230的A端口之间连接成为一条路径,当前加速单元230的B端口与下一跳加速单元230的B端口之间连接成为另一条路径。这样,所述加速单元230到下一跳加速单元230之间可能形成多条路径。路径确定单元2393确定该多条路径,并在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径。也就是说,同一流标识的数据送入同一路径中,这样在同一路径中可以满足先发送数据被先接收,达到有顺序要求的数据不会被乱序处理的效果。
虽然同一流标识的数据送入同一路径,不同流标识的数据不一定送入不同路径,因为流标识数可能远远大于路径数。考虑到均衡负载的原则,在一个实施例中,按照所述加速单元230到所述下一跳加速单元230的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径。例如,加速单元230到下一跳加速单元230共有7个流标识的数据,即7个有序组下的数据,但加速单元230到下一跳加速单元230之间的路径只有3条,7/3=2.33。因此,可以在第一条路径上分配3个流标识的数据,在第二条路径上分配2个流标识的数据,在第三条路径上分配2个流标识的数据。
在一个实施例中,所述加速单元230到下一跳加速单元230的数据的流标识可以按自然数由小到大命名,即1、2、3……所述加速单元230到下一跳加速单元230的路径也按照自然数由小到大编制索引,即1、2、3……这样,可以用所述数据的流标识除以所述多条路径的总数的余数,作为索引,选择该数据到下一跳加速单元的路径。例如,加速单元230到下一跳加速单元230共有7个流标识1、2、……7的数据,有3条路径1-3,对于流标识5的数据,5除以3的余数为2,因此将路径2作为选择的路径。如图7所示,加速单元A和加速单元B之间有3条路径,因此,流标识1-7的数据中,流标识1、4、7的数据分到路径1中,流标识2、5的数据分到路径2中,流标识3、6的数据分到路径3中。加速单元B和加速单元C之间有2条路径,因此,流标识1-7的数据中,流标识1、3、5、7的数据分到路径1中,流标识2、4、6的数据分到路径2中。
交换结构2394具有多个端口和开关网络(未示)。所述开关网络用于选择性地将所述多个端口中的一个端口与其它加速单元230的一个端口相接,形成到所述其它加速单元230的一条路径。开关网络通过开关的接续,使得图3的一个加速单元230中的一个端口能连到某一其它加速单元230的某一端口。如图3所示,位于左上角的加速单元230的交换结构2394具有5个端口,其中,2个端口分别连接到右上角的加速单元230的端口,形成2条路径;1个端口连接到右下角的加速单元230的端口,形成1条路径;2个端口分别连接到左下角的加速单元230的端口,形成2条路径。这样,加速单元230的端口间就能接续,形成路径。但不一定每两个加速单元230间都有路径相连,因此,有时数据需要路由经过中间加速单元230到达目标加速单元230。
根据本公开实施例的路径选择方法
如图8所示,本公开实施例还提供了一种路径选择方法,其由加速单元230执行,包括:
步骤410、确定待发送到目标加速单元的数据;
步骤420、获取所述数据所属的有序组,其中,同一有序组中的数据需要按照发送的顺序接收;
步骤430、基于所述有序组,为数据分配流标识,其中,为同一有序组中的数据分配同一个流标识;以及
步骤440、按照所分配的流标识确定该数据到下一跳加速单元的路径。
可选地,步骤430包括:为不同有序组中的数据分配不同流标识。
可选地,步骤440包括:
确定所述加速单元到所述目标加速单元的路由;
在所述路由中确定所述加速单元的下一跳加速单元;
确定所述加速单元到所述下一跳加速单元的多条路径;
在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径。
可选地,所述在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径,包括:按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径。
可选地,所述加速单元到下一跳加速单元的数据的流标识按自然数由小到大命名。所述按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径,包括:用所述数据的流标识除以所述多条路径的总数的余数,作为索引,选择该数据到下一跳加速单元的路径。
可选地,在确定待发送到目标加速单元的数据之后,所述方法还包括:将所述数据按照最大允许长度要求切分。
可选地,步骤430包括:基于切分后数据所属的有序组,为所述切分后数据分配流标识,以添加到切分后数据。
由于该方法的具体实现过程已经在前面的装置实施例的描述中涉及,为节约篇幅,故不赘述。
本公开实施例的商业价值
本公开实施例为同一有序组中的数据分配同一流标识,分配到同一路径,从而保证对于有顺序限制的数据(同一有序组中的数据),不会被乱序执行。同时,它没有采用设置重排序SRAM的做法,使得芯片的面积减少20%以上,功耗降低10%以上,处理时延大大减少,市场前景良好,具有极大的商业价值。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述得比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。

Claims (19)

1.一种加速单元,包括:
加速处理单元,用于确定待发送到目标加速单元的数据;
交换模块,用于:获取所述数据所属的有序组,其中,同一有序组中的数据需要按照发送的顺序接收;基于所述有序组,为数据分配流标识,其中,为同一有序组中的数据分配同一个流标识;并且按照所分配的流标识确定该数据到下一跳加速单元的路径。
2.根据权利要求1所述的加速单元,其中,所述交换模块为不同有序组中的数据分配不同流标识。
3.根据权利要求1所述的加速单元,其中,所述交换模块包括:
流标识分配单元,用于为数据分配流标识;
路径确定单元,用于确定所述加速单元到所述目标加速单元的路由,在所述路由中确定所述加速单元的下一跳加速单元,确定所述加速单元到所述下一跳加速单元的多条路径,并在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径。
4.根据权利要求3所述的加速单元,其中,所述按照分配的流标识确定该数据到下一跳加速单元的路径,包括:
按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径。
5.根据权利要求4所述的加速单元,其中,所述加速单元到下一跳加速单元的数据的流标识按自然数由小到大命名,
所述按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径,包括:
用所述数据的流标识除以所述多条路径的总数的余数,作为索引,选择该数据到下一跳加速单元的路径。
6.根据权利要求3所述的加速单元,其中,所述交换模块还包括:
读取单元,用于从所述加速处理单元读取待发送到目标加速单元的数据,并按照最大允许长度要求切分,其中,所述流标识分配单元为切分后的数据分配流标识。
7.根据权利要求6所述的加速单元,其中,流标识分配单元将分配的流标识添加到切分后的数据。
8.根据权利要求6所述的加速单元,其中,所述加速处理单元基于待发送到目标加速单元的数据,产生包含数据在所述加速单元的存储地址、和数据所属的有序组的数据转移指令;
所述读取单元基于所述数据转移指令中的所述存储地址,读取所述数据;
所述加速处理单元基于所述数据转移指令中的所述有序组,分配流标识。
9.根据权利要求3所述的加速单元,其中,所述交换模块还包括:
交换结构,具有多个端口和开关网络,所述开关网络用于选择性地将所述多个端口中的一个端口与其它加速单元的一个端口相接,形成到所述其它加速单元的一条路径。
10.一种计算装置,包括:
根据权利要求1-9中任一个所述的加速单元;
目标加速单元;
处理单元,用于分配待处理加速指令到所述加速单元,以便所述加速单元在执行所述待处理加速指令的过程中,确定待发送到所述目标加速单元用于协同处理的数据。
11.一种片上系统,包括根据权利要求1-9中任一个所述的加速单元。
12.一种数据中心,包括根据权利要求10所述的计算装置。
13.一种路径选择方法,包括:
确定待发送到目标加速单元的数据;
获取所述数据所属的有序组,其中,同一有序组中的数据需要按照发送的顺序接收;
基于所述有序组,为数据分配流标识,其中,位同一有序组中的数据分配同一个流标识;以及
按照所分配的流标识确定该数据到下一跳加速单元的路径。
14.根据权利要求13所述的方法,其中,所述基于所述有序组,为数据分配流标识,包括:为不同有序组中的数据分配不同流标识。
15.根据权利要求13所述的方法,其中,所述按照分配的流标识确定该数据到下一跳加速单元的路径,包括:
确定所述加速单元到所述目标加速单元的路由;
在所述路由中确定所述加速单元的下一跳加速单元;
确定所述加速单元到所述下一跳加速单元的多条路径;
在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径。
16.根据权利要求15所述的方法,其中,所述在所述多条路径中,按照分配的流标识确定该数据到下一跳加速单元的路径,包括:
按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径。
17.根据权利要求16所述的方法,其中,所述加速单元到下一跳加速单元的数据的流标识按自然数由小到大命名,
所述按照所述加速单元到所述下一跳加速单元的数据的流标识在所述多条路径之间均衡分配的原则,确定该流标识的数据到下一跳加速单元的路径,包括:
用所述数据的流标识除以所述多条路径的总数的余数,作为索引,选择该数据到下一跳加速单元的路径。
18.根据权利要求13所述的方法,其中,在确定待发送到目标加速单元的数据之后,所述方法还包括:
将所述数据按照最大允许长度要求切分。
19.根据权利要求18所述的方法,其中,所述基于所述有序组,为数据分配流标识,包括:基于切分后数据所属的有序组,为所述切分后数据分配流标识,以添加到切分后数据。
CN202110125216.0A 2021-01-29 2021-01-29 加速单元、相关装置和路径选择方法 Pending CN114827054A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110125216.0A CN114827054A (zh) 2021-01-29 2021-01-29 加速单元、相关装置和路径选择方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110125216.0A CN114827054A (zh) 2021-01-29 2021-01-29 加速单元、相关装置和路径选择方法

Publications (1)

Publication Number Publication Date
CN114827054A true CN114827054A (zh) 2022-07-29

Family

ID=82525417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110125216.0A Pending CN114827054A (zh) 2021-01-29 2021-01-29 加速单元、相关装置和路径选择方法

Country Status (1)

Country Link
CN (1) CN114827054A (zh)

Similar Documents

Publication Publication Date Title
US10887238B2 (en) High performance, scalable multi chip interconnect
US10282338B1 (en) Configuring routing in mesh networks
US7287255B2 (en) System and method for dynamic ordering in a network processor
US8737392B1 (en) Configuring routing in mesh networks
JP4263147B2 (ja) コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置
US8526422B2 (en) Network on chip with partitions
US8151088B1 (en) Configuring routing in mesh networks
CN111160549A (zh) 互连电路的数据处理装置以及方法
US20090282211A1 (en) Network On Chip With Partitions
GB2374443A (en) Distributing data packets according to processing bandwidth
CN103649932B (zh) 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
CN104468401A (zh) 一种报文处理方法和装置
CN111630505A (zh) 深度学习加速器系统及其方法
CN114429214A (zh) 运算单元、相关装置和方法
US20210173656A1 (en) Hardware accelerator having reconfigurable instruction set and reconfigurable decoder
CN114827054A (zh) 加速单元、相关装置和路径选择方法
CN114079634B (zh) 一种报文转发方法、装置及计算机可读存储介质
US10997277B1 (en) Multinomial distribution on an integrated circuit
CN114281558A (zh) 多核处理器、用于多核处理器的方法及相应产品
CN113254070B (zh) 加速单元、片上系统、服务器、数据中心和相关方法
US10990408B1 (en) Place and route aware data pipelining
CN114168524B (zh) 行缓存单元、加速单元、片上系统和行缓存配置方法
CN113285880B (zh) 多播路由方法、互连设备、网状网络系统及其配置方法
CN115643205A (zh) 数据生产和消费主体的通信控制单元、及相关装置和方法
CN115720211A (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: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, Pudong New Area Free Trade Pilot Zone, Shanghai

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

Country or region after: China

Address before: 847, 4 / F, capital tower 1, Grand Cayman, British Cayman Islands

Applicant before: ALIBABA GROUP HOLDING Ltd.

Country or region before: United Kingdom

TA01 Transfer of patent application right