CN115643205B - 数据生产和消费主体的通信控制单元、及相关装置和方法 - Google Patents

数据生产和消费主体的通信控制单元、及相关装置和方法 Download PDF

Info

Publication number
CN115643205B
CN115643205B CN202110812531.0A CN202110812531A CN115643205B CN 115643205 B CN115643205 B CN 115643205B CN 202110812531 A CN202110812531 A CN 202110812531A CN 115643205 B CN115643205 B CN 115643205B
Authority
CN
China
Prior art keywords
data
command
unit
routes
communication control
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
Application number
CN202110812531.0A
Other languages
English (en)
Other versions
CN115643205A (zh
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
Pingtouge Shanghai Semiconductor 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 Pingtouge Shanghai Semiconductor Co Ltd filed Critical Pingtouge Shanghai Semiconductor Co Ltd
Priority to CN202110812531.0A priority Critical patent/CN115643205B/zh
Publication of CN115643205A publication Critical patent/CN115643205A/zh
Application granted granted Critical
Publication of CN115643205B publication Critical patent/CN115643205B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供了一种数据生产和消费主体的通信控制单元、及相关装置和方法。该数据生产主体的通信控制单元包括:第一命令读取单元,用于读取一条或多条跨主体写命令和同步置位命令;路由单元,用于确定所述数据生产主体和所述数据消费主体之间的多条路由;第一命令执行单元,用于将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口,并在包分配到发送端口完毕后,将所述同步置位命令分别复制到所述多条路由对应的发送端口。本公开实施例能够在数据生产主体和数据消费主体之间存在多路由的情况下,保证数据消费主体对数据生产主体写入数据消费主体的数据的使用不发生错误。

Description

数据生产和消费主体的通信控制单元、及相关装置和方法
技术领域
本公开涉及芯片领域,具体而言,涉及一种数据生产和消费主体的通信控制单元、及相关装置和方法。
背景技术
在大数据时代,由于处理任务的大型化,通常要求处理单元(包括用于执行常规运算处理的CPU以及用于图形处理、深度神经网络中的复杂运算处理的GPU、NPU、张量处理器等)协同处理一件大型化任务。每个处理单元各自处理一部分任务,保存任务相关数据。由于这些处理单元处理的部分可能是互相关联的,因此,一个处理单元经常会在执行其本身的部分任务时发现需要调用其它处理单元产生并存储在本地的数据。传统技术中,需要借助于各主机(各计算装置)间的主机间传统通信网络,来调取需要的其它处理单元保存的数据。主机间传统通信网络的速度很慢,且数据在主机内部还要经由例如PCIe的内部总线传输,处理单元间数据调用速度低下。为了解决此问题,提出了片间互连网络(ICN)。片间互连网络直接在各主机(计算装置)的各处理单元建立互连。通过ICN可以快速实现处理单元之间的数据调用。
在处理单元通过ICN交互访问内存的过程中,存在一个同步的问题。尤其当源处理单元向目标处理单元的内存写数据的情况下,如果该数据是批量数据,必须等到该批量数据完全写入之后,该目标处理单元才能开始使用数据。如果在没有完全写入的时候,目标处理单元开始读取数据,有可能发生错误的读取。为了保证不发生错误的读取,设置同步原语。源处理单元端的同步原语设置在向目标处理单元批量写的语句之后。源处理单元在向目标处理单元发送完其要写入目标处理单元的数据后,才执行同步原语,置位标志位。目标处理单元端对应的同步原语设置在使用数据的语句之前。目标处理单元先执行同步原语,监测到标志位被置位后,才允许使用数据的语句执行。这样,就不会发生在批量数据没有完全写入的时候,目标处理单元开始读取数据的情况下。然而,源处理单元和目标处理单元之间经常不只有一条路由可达,而是有多条路由。为了提高跨处理单元语句的执行效率,不同的语句可以分配到不同路由上执行,批量数据的写语句也可以分散成许多包,分散在不同路由上向目标处理单元发送。而上述同步原语置位标志位的命令向目标处理单元发送的路由与各包向目标处理单元发送的路由也可能是不同路由,导致上述同步原语置位标志位的命令可能先到目标处理单元,而部分包可能由于所在的路由拥塞等原因还未到达目标处理单元。此时,目标处理单元监测出标志位被置位,认为已完成同步,可以执行后面的使用数据的语句,但实际上这样做是错误的,因为一部分实际上未到达目标处理单元,导致发生数据读取错误。
发明内容
有鉴于此,本公开的一个目的是在数据生产主体和数据消费主体之间存在多路由的情况下,仍然能够保证数据消费主体对数据生产主体写入数据消费主体的数据的使用不发生错误,使得数据生产主体对数据的写入和数据消费主体对数据的使用有序进行。
根据本公开的一方面,提供了一种数据生产主体的通信控制单元,包括:
第一命令读取单元,用于读取一条或多条跨主体写命令和同步置位命令,所述跨主体写命令用于所述数据生产主体向数据消费主体写入数据;
路由单元,用于确定所述数据生产主体和所述数据消费主体之间的多条路由;
第一命令执行单元,用于将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口,并在包分配到发送端口完毕后,将所述同步置位命令分别复制到所述多条路由对应的发送端口,以便所述数据消费主体在所述多条路由上都接收到所述同步置位命令、且确保在该同步置位命令之前该路由上接收到的包都完成写入后才能使用写入的数据。
可选地,所述数据生产主体是第一处理单元,所述数据消费主体是第二处理单元,所述第一处理单元和所述第二处理单元通过片间互连网络通信,所述跨主体写命令将所述第一处理单元的第一片上内存的数据通过所述片间互连网络写入所述第二处理单元的第二片上内存。
可选地,所述路由单元存储事先配置的路由表,用于记录所述数据生产主体到各其它主体之间的路由,所述路由单元根据所述一条或多条跨主体写命令对应的数据消费主体,确定所述数据生产主体和所述数据消费主体之间的多条路由。
可选地,所述第一处理单元是第一加速单元,用于执行第一调度单元分配的任务;所述第二处理单元是第二加速单元,用于执行第二调度单元分配的任务;所述路由表是所述第一调度单元事先写入的。
可选地,所述将分成的包分配到所述多条路由对应的发送端口,包括:
确定包的序号除以确定的路由的数目的余数;
将该包分配到该余数对应的路由的发送端口。
可选地,该通信控制单元还包括:多个命令存储环,用于按照执行的顺序存储命令,所述一条或多条跨主体写命令和同步置位命令是由所述第一命令读取单元从同一命令存储环中按序取出的。
根据本公开的一方面,提供了一种数据消费主体的通信控制单元,包括:
置位单元,用于在多条路由对应的数据消费主体接收端口接收到复制的同步置位命令后,判断相应路由上之前接收的包是否已写入数据消费主体,并在所述多条路由上之前接收的包都已写入数据消费主体后,使特定标志位置位成特定值,其中,所述同步置位命令是由数据生产主体在各路由上要向所述数据消费主体发送的包都发送完毕后,在各路由上分别复制发送的;
第二命令读取单元,用于读取置位等待命令和数据使用命令,所述数据使用命令用于使用所述数据生产主体向所述数据消费主体写入的数据,所述置位等待命令用于等待所述特定标志位变成特定值;
第二命令执行单元,用于执行所述读取置位等待命令,以在所述特定标志位变成特定值后,允许所述数据使用命令执行。
可选地,所述特定标志位初始值为0,所述置位单元在判断出单条路由上之前接收的包已写入数据消费主体后,在所述特定标志位上加1,所述特定值等于所述路由的数目。
可选地,所述数据生产主体是第一处理单元,所述数据消费主体是第二处理单元,所述第一处理单元和所述第二处理单元通过片间互连网络通信,所述复制的同步置位命令和之前的包从所述第一处理单元通过所述片间互连网络传送到所述第二处理单元。
可选地,所述判断相应路由上之前接收的包是否已写入数据消费主体,包括:如果路由对应的端口上的先进先出队列已清空,则确定相应路由上之前接收的包已写入数据消费主体。
根据本公开的一方面,提供了一种片上***,包括如上所述的数据生产主体的通信控制单元或如上所述的数据消费主体的通信控制单元。
根据本公开的一方面,提供了一种计算装置,包括如上所述的数据生产主体的通信控制单元或如上所述的数据消费主体的通信控制单元。
根据本公开的一方面,提供了一种数据生产主体的通信控制方法,包括:
读取一条或多条跨主体写命令和同步置位命令,所述跨主体写命令用于所述数据生产主体向数据消费主体写入数据;
确定所述数据生产主体和所述数据消费主体之间的多条路由;
将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口,并在包分配到发送端口完毕后,将所述同步置位命令分别复制到所述多条路由对应的发送端口,以便所述数据消费主体在所述多条路由上都接收到所述同步置位命令、且确保在该同步置位命令之前该路由上接收到的包都完成写入后才能使用写入的数据。
根据本公开的一方面,提供了一种数据消费主体的通信控制方法,包括:
在多条路由对应的数据消费主体接收端口接收到复制的同步置位命令后,判断相应路由上之前接收的包是否已写入数据消费主体,并在所述多条路由上之前接收的包都已写入数据消费主体后,使特定标志位置位成特定值,其中,所述同步置位命令是由数据生产主体在各路由上要向所述数据消费主体发送的包都发送完毕后,在各路由上分别复制发送的;
读取置位等待命令和数据使用命令,所述数据使用命令用于使用所述数据生产主体向所述数据消费主体写入的数据,所述置位等待命令用于等待所述特定标志位变成特定值;
执行所述读取置位等待命令,以在所述特定标志位变成特定值后,允许所述数据使用命令执行。
本公开实施例中,在数据生产主体侧,一条或多条跨主体写命令后紧跟一条同步置位命令。在数据生产主体和数据消费主体之间存在多路由的情况下,当执行一条或多条跨主体写命令时,将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口。这些所有包发送到对应的发送端口后,才能执行同步置位命令,这时将所述同步置位命令分别复制到所述多条路由对应的发送端口。这样,在每条路由上,都是一堆分成的包先到达数据消费主体,最后是同步置位命令。在数据消费主体侧,在多条路由对应的接收端口接收到复制的同步置位命令时,应该已经接收到了在该路由上之前的那些包。在数据消费主体侧,针对每个接收端口判断这些包是否已写入数据消费主体。如果所述多条路由上之前接收的包都已写入数据消费主体,说明所述一条或多条跨主体写命令对应的所有数据都已成功写入数据消费主体,可以在数据消费主体侧使用。这时,使特定标志位置位成特定值。在数据消费主体侧执行一个读取置位等待命令,在所述特定标志位变成特定值后,允许所述数据使用命令执行。这样,数据使用命令使用数据时,由于所述一条或多条跨主体写命令要写的所有数据都已经成功写入了数据消费主体,使用数据不会发生错误,数据生产主体对数据的写入和数据消费主体对数据的使用都能够有序进行。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本公开的一个实施例所应用的数据中心的结构图;
图2是根据本公开的一个实施例服务器内部的计算装置的内部结构图,所述计算装置具有调度单元和加速单元;
图3示出了在图2的加速单元作为本公开实施例的处理单元的情况下,处理单元的内部结构和外部通信图。
图4示出了根据本公开一个实施例的数据生产主体的通信控制单元、以及数据消费主体的通信控制单元的内部结构图。
图5是根据本公开一个实施例的路由表的一个示例。
图6示出了根据本公开一个实施例在数据生产主体侧和数据消费主体侧要执行的命令的一个示例。
图7示出了根据本公开一个实施例的数据生产主体的通信控制方法的流程图。
图8示出了根据本公开一个实施例的数据消费主体的通信控制方法的流程图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
数据生产主体:计算数据的产生方/发送方。具体地说,它将自身存储的数据写入其它主体(数据消费主体),从而供其它主体使用。该主体可以是实际的物理单元,也可以是抽象的软件模块,即软件主体。在主体是物理单元的情况下,这里的主体可以是芯片中的处理单元,例如普通的中央处理器,或者进行专门用途的计算的加速单元(如NPU、GPU、张量处理器等)。但是,该主体也可以是更小的单元或更大的单元。更小的单元例如微控制单元(MCU),它相当于是CPU的精简版加上一些***电路,整合在单一芯片上。更大的单元例如整合多个处理单元的片上***,即将多个处理单元加上***电路整合在一块芯片上。再更大的单元还可以是整个的计算装置,甚至于一台通信终端。在通信终端的情况下,数据生产主体即发送终端,数据消费主体即接收终端。在主体是软件模块的情况下,其可以是硬件上运行的软件主体,也可以是软件主体中的功能部分。为了简化起见,下面主要以主体是处理单元中的加速单元进行举例。对于主体是其它主体的情形,本领域技术人员受益于本公开的教导,可以进行类推。
数据消费主体:计算数据的使用方/接收方。具体地说,它需要使用其它主体(数据生产主体)的数据,因而需要其它主体的数据写入。数据消费主体也可以采取上面与数据生产主体相同的多种形式。下面主要以主体是处理单元中的加速单元进行举例。对于其它主体的情形,本领域技术人员可以进行类推。
同步:本公开实施例中的同步是指在某一些数据整体作为一个块,需要在全部发送到数据消费主体并写入后才能由数据消费主体读取的情况下,在数据生产主体和数据消费主体采取一些机制,使得数据消费主体能够知晓该数据块已经全部接收到并写入自身,从而正确启动数据的读取。
同步置位命令:为了实现同步而在数据生产主体侧设置的用于对标志位进行置位的命令。
置位等待命令:为了实现同步而在数据消费主体侧设置的对标志位置位的结果进行判断的命令。在判断出标志位置位成某些特定的结果后,才能够进行后续处理。
路由:数据在两个节点之间可能经过不同的中间节点到达,在每两个相邻的节点上由于每个节点有多个端口也可能选择不同的发送端口和接收端口传输,因此,数据在两个节点间传输形成不同路径,每个路径为一条路由。
命令:本公开实施例的命令是指用于完成一个计算机任务的语句表示。在执行时,它可能细分成多个指令去执行。指令是任务运行的最小单元。
包:本公开实施例的包是指将数据分解发送的单元。数据分解出的每个包可以独立经一条路由传输。该包内的所有数据会在一条路由上到达目的地,而不同包内的数据可能经不同路由到达目的地。
片间互连网络:区别于区内互连网络,它是将不同处理单元进行互连的网络。连接其的一个处理单元可以通过其将数据直接传递给同一计算装置内的不同处理单元,或者不同计算装置内的处理单元。
计算装置:具有计算或处理能力的设备,它可以体现为终端的形式,如物联网设备、移动终端、桌上电脑、膝上电脑等,也可以体现为服务器或服务器组成集群。在数据中心的环境下,计算装置是数据中心中的服务器。
片上***:具有处理能力的单元和***电路封装成片,可以***计算装置或从计算装置中更换。
调度单元:在计算装置或片上***中进行传统处理(非用于图像处理和各种深度学习模型等复杂运算的处理)之外,还承担着对加速单元的调度职能的单元。其向加速单元分配加速单元需要承担的任务。调度单元可以采用中央处理器(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
加速单元:针对传统处理单元在一些专门用途的领域(例如,处理图像、处理深度学习模型的各种运算,等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元。加速单元也称为人工智能(AI)处理单元,包括中央处理器(CPU)、图形处理器(GPU)、通用图形处理器(GPGPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以及专用智能加速硬件(例如,神经网络处理器NPU)。
片上内存:位于处理单元内部的存储单元。与片外存储器相比,它用来在处理单元内部直接访问常用的数据,提高常用数据的访问效率。而片外存储器在处理单元外部,由各处理单元共享,但调用起来要经过外部总线,效率较低,一般用于存储不常用的数据。
命令存储环:环形的用于存储按顺序执行的命令的存储单元。在该环内,命令按执行的顺序沿顺时针或逆时针方向存储。
本公开的应用环境
本公开实施例提出了一种数据生产主体的通信控制方案。整个通信控制方案相对较为通用,可以用于各种场景。例如,数据中心中各服务器中的各处理单元之间的数据通信控制,微控制单元(MCU)体系构架中各MCU的数据通信控制,物联网终端中的各处理单元之间的数据通信控制,互联网中各节点之间的数据通信控制,同一硬件内不同软件模块之间的数据通信控制,同一软件模块中不同功能部分之间的数据通信控制等等。由于应用场景较多,下面的描述中,仅以数据中心为例进行描述,但本领域技术人员应当理解,该方案同样适用于其它应用场景,并可以受益于本公开实施例的在数据中心场景下的描述容易地构想出在其它场景中的实现细节。
数据中心
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,数据中心的数据安全越来越被重视。
在传统的大型数据中心,网络结构通常如图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需要处理大量的神经网络运算。神经网络运算需要大规模的并行运算。传统的中央处理单元的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。在这种情况下,采用具有大量加速单元230的服务器(计算装置)140。如图2所示,这种计算装置140包括由总线连接的存储器210、调度单元集群270和加速单元集群280。调度单元集群270包括多个调度单元220。加速单元集群280包括多个加速单元230。
如上所述,传统的中央处理单元在逻辑控制方面十分有效,在大规模并行计算方面则效率不够。加速单元230是用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理的单元。例如专用于加速神经网络模型的运算处理速度的处理单元(NPU)。它是采用数据驱动并行计算的架构,用于处理各神经网络节点的大量运算(例如卷积、池化等)的处理单元。由于各神经网络节点的大量运算(例如卷积、池化等)中的数据和中间结果在整个计算过程中紧密联系,会被经常用到,用现有的中央处理单元构架,由于中央处理单元的核内的内存容量很小,因此要大量频繁访问核外存储器,造成处理的低效。采用这种专用于加速神经网络模型的运算处理速度的加速单元,由于计算单元中具有适于神经网络计算用到的存储容量的片上内存,避免频繁访问核外部的存储器,就能大大提高处理效率,提高计算性能。本公开实施例中,加速单元230可以体现为专门为神经网络运算处理设计的处理单元(NPU)、图形处理单元(GPU)、专用集成电路(ASIC)和现场可编程门阵列(FPGA)等。
调度单元220是对加速单元230进行调度、向各加速单元230分配要执行的待执行指令序列的处理单元,它可以采用中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。调度单元220可以同时充当执行传统的逻辑控制方面的运算的中央处理单元。调度单元220从存储器210读取待执行指令。当发现该指令是逻辑控制指令,则由调度单元220自己执行该执行,完成相应逻辑控制运算。如果发现该指令是需要加速单元230处理的指令,则分配给加速单元230执行。加速单元230要接受调度单元220的调度。
以神经网络运算为例。存储器210中存储有各种神经网络模型,包括这些模型的节点和节点的权重数据等。这些神经网络模型当需要时被图2中的一个调度单元220部署到一个加速单元230。即,调度单元220可以通过指令的形式向加速单元230发送模型中的参数(如各节点的权重)在存储器210中的地址。加速单元230在实际使用该神经网络模型进行计算时,就会根据这些参数(例如权重)在存储器210中的地址,直接在存储器210中寻址这些参数,将其暂存在其片上内存中。加速单元230在实际使用该神经网络模型进行计算时,调度单元220还会将模型的输入参数通过指令的形式发送给加速单元230,暂存在加速单元230的片上内存中。这样,加速单元230就可以根据这些输入参数和模型中的参数(例如权重)进行推理计算。
加速单元
图3示出了根据本公开的一个实施例的加速单元230内部的结构和外部通信图。
如图3所示,加速单元230包括总线通道391、直接存储访问机制390、片上内存370、交换模块320、各端口310、核340、命令处理器360、片上高速缓存345、通信控制单元330、片上互连网络380。核340、命令处理器360、片上高速缓存345、通信控制单元330借助于片上互连网络380互连通信。
总线通道391是指令从总线进出加速单元230的通道。调度单元220分配给加速单元230执行的指令,从总线通道391进入。
直接内存访问(DMA,Direct Memory Access)机制390是一些计算机总线架构提供的功能,它能使数据从附加设备直接写入计算机主板的存储器上。这种方式相比于设备之间所有的数据传输都要通过调度单元的方式,大大提高了数据访问的效率。正是因为有这样的机制,加速单元230的核340可以直接访问存储器210,读取神经网络模型中的参数(例如各节点的权重)等,大大提高了数据访问效率。
命令处理器360是将由调度单元220发送至加速单元230的指令分配给核340执行的器件。调度单元220分配的待执行指令序列从总线通道391进入后,缓存在命令处理器360,由命令处理器360选择核340,将指令序列分配给其执行。命令处理器360可以按照例如负荷均衡算法,考虑各个核340的处理负荷,将指令分配到处理负荷较轻的核340。另外,命令处理器360还负责核340之间的同步操作。
核340是加速单元230内部处理指令的核心部件。它接受命令处理器360分配的指令并执行。
片上内存370是加速单元230内部的多个核340共享的存储器。命令处理器360将待执行指令序列分配给不同核340执行。不同核340执行不同执行时,由于各个指令相互关联,某一核340执行某条指令时可能需要用到其它核340执行其它指令的结果,因此,需要在加速单元230内部有一些共享的存储空间来存放多个核340共享的数据。片上内存370就是这样的共享存储空间。在图3中,一个加速单元230有4个片上内存370,其只是示例。本领域技术人员应当理解,也可以是其它数目的片上内存370。
片上高速缓存345是用于存储片上内存370中比较常用的数据的缓存。由于它离核340更近,通过片上互连网络380与核340通信,因此核340可以比片上内存370更快地访问片上高速缓存345。因此,可以将各核340之间更加可能会用到的一些数据从片上内存340拉到片上高速缓存345,以便实现核340的快速访问。
片上互连网络380是实现命令处理器360、核340、片上高速缓存345、通信控制单元330的高速通信的互连网络。通过它,命令处理器360向各核340分配执行更加快捷,各核340通过片上高速缓存345可以快速获得其需要的数据。
片间互连网络150是在加速单元230之间进行互连的网络。通过其,一个加速单元230可以通过其将数据直接传递给同一计算装置140内的其它加速单元230,或者不同计算装置230内的加速单元230。由于神经网络运算具有大规模的并行运算,各运算可能交给同一计算装置140的不同加速单元230执行,甚至不同计算装置140的加速单元230执行。由于指令之间通常具有关联性,一个加速单元230在执行一条指令的时候通常需要另一个加速单元230执行另一条指令的结果,因此需要在加速单元230之间交换数据。传统技术中,这种数据交换是通过计算装置140之间的传统计算装置间互连网络160来进行的。该网络只能在计算装置140之间传递数据,不能直接在各加速单元230之间传递数据。当一个计算装置140内部的一个加速单元230需要向另一个计算装置140内部的另一个加速单元230传递数据时,其先通过计算装置140内部的总线将要传递的数据发送到网卡290。网卡290是数据进出计算装置140的出入口。网卡290把要传递的数据发送到传统计算装置间互连网络160,由传统计算装置间互连网络160将该要传递的数据经另一计算装置140的网卡发送到或写入该另一计算装置140的另一加速单元230中。可见,该过程经历了传统计算装置间互连网络160的网络传输、在要发送数据的计算装置140内部的总线传输、在要接收数据的计算装置140内部的总线传输这些过程。该过程较为复杂,且传统计算装置间互连网络160的网络传输很慢,十分影响不同计算装置140之间的加速单元230之间数据传递的效率。为了提高该传递效率,采用了直接将各计算装置140的加速单元230直接互连的片间互连网络150。由于各计算装置140的加速单元230通过该网络直接互连,且该网络传输速度快,大大提高了在不同计算装置140之间的加速单元230之间数据传递的效率。
端口310是加速单元230与片间互连网络150交换数据的出入口。一个加速单元230可以有多个端口310。各端口310可以同时兼作发送数据到片间互连网络150的发送端口、和从片间互连网络150接收数据的接收端口,也可以其中一部分专作发送数据到片间互连网络150的发送端口,另一部分专作从片间互连网络150接收数据的接收端口。
通信控制单元330是控制数据和命令通过片间互连网络150向其它加速单元230发送、以及控制通过片间互连网络150从其它加速单元230接收数据和命令的单元。在控制数据和命令通过片间互连网络150向其它加速单元230发送时,其要确定数据和命令传输的路由,并根据确定的路由控制数据和命令的发送。在控制通过片间互连网络150从其它加速单元230接收数据和命令时,其要控制接收的数据正确写入当前加速单元230的存储空间,同时确保从不同端口310进入的有顺序要求的命令能够按照顺序要求执行。另外,在本公开实施例中,它还要解决确保当源加速单元230向目标加速单元230的存储空间批量写数据的情况下的同步问题。即,如果一个或多个写入命令向目标加速单元230写入的是批量数据,必须等到该批量数据完全写入之后,该目标加速单元230才能开始使用数据。如果在没有完全写入的时候,目标加速单元230开始读取数据,有可能发生错误的读取。然而,源加速单元230和目标处理单元230之间经常不只有一条路由可达,而是有多条路由。为了提高执行效率,批量数据可以分散成许多包,分散在不同路由上向目标加速单元230发送。本公开实施例的通信控制单元330能够在源加速单元230和目标加速单元230之间存在多条路由的情况下,保证批量数据中的所有包不管经哪条路由传递,最后都已写入目标加速单元230后,目标加速单元230才开始利用数据,从而保证不会出错。本公开实施例的通信控制方法主要是由通信控制单元330实现的。
交换模块320是将要通过各端口310发送到片间互连网络150的数据交换到相应端口310以便通过该端口310发出、并将各端口310接收的数据汇集到通信控制单元330的模块。交换模块320中设置路由表。交换模块320能够根据通信控制单元330为要发送的数据确定的路由,查找路由表,确定该路由对应的发送端口310,从而将相应数据通过发送端口310发出。
通信控制单元
图4示出了数据生产主体410中的通信控制单元330的内部结构、和数据消费主体420中的通信控制单元330的内部结构。
在本公开方案中,发明人定义了数据生产主体和数据消费主体。数据生产主体是计算数据的产生方/发送方,数据消费主体是计算数据的使用方/接收方。在实际计算中,数据生产主体将自身存储的数据通过数据通道写入数据消费主体,从而供数据消费主体使用。
在图3的实施例中,数据生产主体410具体是需要将自身数据写入其它加速单元230的加速单元230。但它也可以是需要将自身数据写入其它处理单元的执行普通逻辑运算和算术运算的处理单元,例如普通的中央处理器(CPU)。应当理解,其还可以是除上述以外的其它处理单元。另外,数据生产主体410也可以是更小的单元,例如微控制单元(MCU),它相当于是CPU的精简版加上一些***电路,整合在单一芯片上。该MCU需要将自身数据写入另一片MCU。另外,数据生产主体410也可以是更大的单元,例如整合多个处理单元的片上***,甚至可以是整个的计算装置或通信终端。该片上***需要将自身的数据写入另一个片上***。该计算装置或通信终端需要将自身的数据发送到另一个计算装置或通信终端。另外,它可以是硬件上的软件模块,其需要将软件模块执行时产生的数据传递给同一硬件上的另一软件模块;或者是软件模块中的功能部分,其需要将功能部分执行时产生的数据传递给同一软件模块上的另一功能部分。由于上述情形太多,无法一一列举,因此,下面仅会以图2-3所示的加速单元230为例来说明本公开实施例的通信控制的全过程。对于其它情形,本领域技术人员可以参考加速单元230的情形进行类推,故不赘述。
在图3的实施例中,数据消费主体420需要使用其它主体(数据生产主体410)的数据,因而需要数据生产主体410向其写入数据。同上所述,由于主体可以采取多种形式,为了简化,下面仅会以图2-3所示的加速单元230为例来说明本公开实施例的通信控制的全过程。对于其它情形,本领域技术人员可以参考加速单元230的情形进行类推,故不赘述。
如图4所示,根据本公开一个实施例的作为数据生产主体410的加速单元230的通信控制单元330包括多个命令存储环510、第一命令读取单元520、路由单元530、第一命令执行单元540。
命令存储环510是环形的用于存储按顺序执行的命令的存储单元。在该环内,命令按执行的顺序沿顺时针或逆时针方向存储。在一个通信控制单元330中可以有多个命令存储环510。如图3所示的命令处理器360将从调度单元220接收的命令序列按照命令的性质分配给核340和通信控制单元330。如果命令是一个具体运算指令(如神经网络中的运算),则可以按照均衡负载的原则分配给各核340。如果命令是一个向作为数据消费主体420的另一个加速单元230写入数据的命令,则发送给通信控制单元330,在通信控制单元330的命令存储环中排队。对于命令序列中的多个向其它加速单元230写数据的命令,命令处理器360分析它们执行的顺序要求。经要求顺序执行的多个向其它加速单元230写数据的命令作为一个必须顺序执行的组,放到一个命令存储环510中按执行顺序存储。一个命令存储环510可以存放多个这样的组。但组之间不能乱序,即命令存储环510只能按顺序存储完一个组内的有序命令后,在该组的后面存储下一个组。一个组中的命令不能和另一个组中的命令交叉排布。
跨主体写命令是指将一个主体内存储的数据写入另一个主体的命令。具体在图2-3的加速单元230的情形下,该命令就是指将源加速单元230中的片上内存370的数据通过片间互连网络150写入目标加速单元230中的片上内存370的命令。这里的数据可以不是一条数据,可以是批量数据。对于批量数据,经常要求该批量数据全部写入到目标加速单元230的片上内存370后,才能被目标加速单元230读取和使用。如果在没有完全写入的时候,目标加速单元230就开始读取和使用数据,有可能发生错误的读取。因此,在批量数据跨主体写命令(有可能是一条,也有可能是多条)之后,为了保证不发生错误的读取,设置同步置位命令。同步置位命令是为了实现同步而在数据生产主体410侧设置的用于对标志位进行置位的命令。标志位是作为某些指令已执行完或某些数据已发送完的标志的位。通常,源加速单元230端的同步置位命令设置在一条或多条批量数据跨主体写命令之后(下文会详细描述,只有这样才能保证目标加速单元230正确识别其前面的一条或多条批量数据跨主体写命令都被执行完,从而进行正确的读取)。也就是说,一条或多条批量数据跨主体写命令和同步置位命令是有执行顺序要求的,因此,它们会分配到同一个命令存储环510中按顺序排布。
接着,第一命令读取单元520从命令存储环510顺序读取存储的命令。由于命令存储环510按顺序存储的是该一条或多条跨主体写命令和同步置位命令,因此,第一命令读取单元520从命令存储环510中顺序读出该一条或多条跨主体写命令和同步置位命令。以图6为例,两条跨主体写命令分别是ICN_WRITES(PPU1::a1[]<=buff1)和ICN_WRITES(PPU1::a2[]<=buff2)。第一条跨主体写命令表示将第一加速单元PPU0上的片上内存上的buff1这样一个缓存块中存储的数据写入第二加速单元PPU1上的片上内存上的a1[]这样一个阵列。第二条跨主体写命令表示将第一加速单元PPU0上的片上内存上的buff2这样一个缓存块中存储的数据写入第二加速单元PPU1上的片上内存上的a2[]这样一个阵列。同步置位命令是ICN_FENCE(PPU1::COUNTER+1),它表示要在前面两条写命令完全执行完后,才能对这两条写命令写入的数据进行读取和使用。PPU1::COUNTER+1的含义是当第二加速单元PPU1接收到该命令后,要将COUNTER这个标志位加0。COUNTER的初始值可以设为0。
路由单元530确定作为数据生产主体410的加速单元230和作为数据消费主体420的加速单元230之间的多条路由。数据在两个加速单元230之间传递可能经过不同的中间加速单元230到达,在每两个相邻的加速单元230上由于每个加速单元230有多个端口310也可能选择不同的发送端口310和接收端口310传输,因此,数据在两个加速单元230间传输形成不同路径,每个路径为一条路由。路由单元530存储事先配置的路由表,用于记录作为数据生产主体410的加速单元230到各其它加速单元230之间的路由。由于上述一条或多条跨主体写命令中含有目标加速单元230(这里是数据消费主体420)的标识(如上例中的PPU1),路由单元530可以根据该标识,查找路由表,确定源加速单元230到目标加速单元230之间的多条路由。
图5示出了路由表的一个示例。该路由表中列出了目标加速单元230(这里作为数据消费主体420)的序号对应的路由数、以及这些路由对应的源加速单元230的端口号。完全的路由的表达需要包括路由中经过的每个加速单元230、以及从加速单元230的哪个端口流入、从哪个端口流出。但在路由的确定中,通常是一跳一跳地确定路由。即,在某个加速单元230,只需要确定从本加速单元230的哪个端口流出,流入了哪个下一跳的加速单元230。然后,下一跳的加速单元230会再确定从它的哪个端口流出,流入了哪个更下一跳的加速单元230。而且,由于加速单元230的一个端口往往固定连接某一其它加速单元230,因此,确定了从本加速单元230的哪个端口流出,自然就确定了下一跳的加速单元230。因此,在图5的路由表中,只列出了路由在本加速单元230的流出端口号,未列出其它路由信息。如图5所示,如果确定出数据要写入的加速单元230的序号是4,查表可知,本加速单元230到该加速单元230有2条路由,分别是从本加速单元230的端口0和1流出;如果确定出数据要写入的加速单元230的序号是5,查表可知,本加速单元230到该加速单元230有3条路由,分别是从本加速单元230的端口2-4流出。
假设源加速单元230是第一加速单元230,用于执行第一调度单元220分配的任务,而目标加速单元230是第二加速单元230,用于执行第二调度单元220分配的任务,这时,第一加速单元230中的通信控制单元330中的路由表是第一调度单元220事先写入的。该路由表同时存储于交换模块320中,用于交换模块320寻找路由对应的端口。
第一命令执行单元540将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口。分包的意义在于充分利用路由资源。在作为数据生产主体410的第一加速单元230和作为数据消费主体420的第二加速单元230之间有多条路由可达。如果把跨主体写命令要写的数据整体放到一个路由中,不利于通信资源的合理运用。将所述一条或多条跨主体写命令要写的数据分成包放到各个路由中传输,有利于平衡网络资源负荷。分包的方法有多种。在一种方式下,可以采用固定大小的包。将整个要写的数据的大小除以包的固定大小,就得到了要分成的包数目。在另一种方式中,可以采用按固定包数等分的方式。将整个要写的数据的大小除以固定包数,得到要分成的包大小。前两种方式都是均匀分包的方式。还有一种按照各路由的剩余负荷来分包的方式。例如,可以让各个路由上分得的包的比等于各个路由上还能容纳的包的数目的比。举例来说,路由1上还能容纳8个包,路由2上还能容纳12个包,路由3上还能容纳16个包,假设所述一条或多条跨主体写命令要写的数据为18k比特,按照8:12:16(2:3:4)在三个路由上分包,最终将4k比特分到第一包,在路由1上传输;将6k比特分到第二包,在路由2上传输;将8k比特分到第三包,在路由3上传输。
在不考虑每个路由上的真实负载的情况下,也可以在多个路由间均匀分包,让各个路由得到的包的数目接近于均衡。例如,包的序号按照自然数1、2、3……来设置。在该方式中,可以确定包的序号除以确定的路由的数目的余数。假设路由的序号按照0及自然数0、1、2、3……来设置,可以将该包分配到该余数对应的路由的发送端口310。举例来说,所述一条或多条跨主体写命令要写的数据分成了7个包。一共有3条路由,则由于1、4、7这三个数除以3的余数都为1,将其分配到路由1上;由于2、5这两个数除以3的余数都为2,将其分配到路由2上;由于3、6这两个数除以3的余数都为0,将其分配到路由0上。
查找要分配的多个路由对应的发送端口可以按照图5所示的路由表进行。如图5所示,对于序号为4的加速单元230来说,其有2条路由可选,分别对应于端口0和端口1,则端口0和端口1分别是这两条路由的起点。
第一命令执行单元540在将所述一条或多条跨主体写命令涉及的所有包都在对应的发送端口310发送出去之后,将同步置位命令分别复制到所述多条路由对应的发送端口310。同步置位命令例如图6所示的ICN_FENCE(PPU1::COUNTER+1)。分别复制到所述多条路由对应的发送端口310的意义在于,每个路由对侧的接收端口310会以该复制的同步置位命令作为标志,来确定该路由上之前分配的包已经到达。接下来,等待该路由上已经到达的包全部写入后,就可以标志位置位(在图6中具体是将COUNTER这个标志位加1)。等到标志位变到特定值(在图6中具体是变到等于路由数的数值),就意味着全部路由上的包都已经写入作为数据消费主体420的目标加速单元230了。如果作为数据消费主体420的目标加速单元230监测到标志位变成了特定值,就可以认为将所述一条或多条跨主体写命令涉及的所有数据都已写入,可以在目标加速单元230进行后续的读操作。这样,巧妙地通过在发送侧使每个路由上的写命令数据分成的所有包的最后面都以一个复制的同步置位命令结束,并在接收侧每个路由上一旦接收到一个复制的同步置位命令,就在前面接收的数据存储完毕后将标志位置位,直到标志位变成的值反映了所有路由都接收到了该路由上的所有包并完成了相应写入后,可以进行相应数据的读取,来实现通过简单监测标志位是否达到预定值,来判断是否所述一条或多条跨主体写命令涉及的所有数据都已成功写入的目的,从而在作为数据生产主体410的源加速单元230和作为数据消费主体420的目标加速单元230之间存在多路由的情况下,仍然能够保证目标加速单元230对源加速单元230写入目标加速单元230的数据的使用不发生错误,使得源加速单元230对数据的写入和目标加速单元230对数据的使用能够有序进行。现有技术中,由于不复制同步置位命令到各路由,因此,仅凭一条同步置位命令无法跟踪到所有路由上的数据都已成功写入,无法实现上述目的。本公开实施例通过发送侧复制同步置位命令的机制、以及接收侧根据接收的同步置位命令来置位标志位,并监测标志位是否随着不断置位达到特定值的机制,来追踪每个路由上的数据都已成功写入,从而使得后续的对数据的使用不会发生错误。
如图4所示,根据本公开一个实施例的作为数据消费主体420的目标加速单元230的通信控制单元330包括多个命令存储环510、置位单元550、第二命令读取单元560、第二命令执行单元570。
该命令存储环510与作为数据生产主体410的源加速单元230的通信控制单元330中的命令存储环510类似,按照执行的顺序存储命令。这些命令是由作为数据消费主体420的目标加速单元230中的命令处理器360写入的。作为数据消费主体420的目标加速单元230所在的计算装置140中的调度单元220向目标加速单元230写入命令序列。命令处理器360将从调度单元220接收的命令序列按照命令的性质分配给核340和通信控制单元330。如果命令是一个具体运算指令(如神经网络中的运算),则可以按照均衡负载的原则分配给各核340。如果命令是读取置位等待命令和使用源加速单元230向目标加速单元230写入的数据的数据使用命令,则分配到通信控制单元330排队。命令处理器360分析命令序列执行的顺序要求,将要求顺序执行的多个由通信控制单元330执行的命令(例如上述置位等待命令和数据使用命令)作为一个必须顺序执行的组,放到一个命令存储环510中按执行顺序存储。置位等待命令是等待特定标志位变成特定值的命令。它不断检查该特定标志位。一旦该特定标志位变成特定值,即此时来自源加速单元230的所述一条或多条跨主体写命令涉及的所有数据都已成功写入目标加速单元230的存储空间,后续数据读取不会出错,因而允许后续数据使用命令执行。数据使用命令即使用源加速单元230写入的数据的命令。
置位单元550在多条路由对应的接收端口310接收到复制的同步置位命令后,判断相应路由上之前接收的包是否已写入作为数据消费主体420的目标加速单元230。数据消费主体420的目标加速单元230的每个端口310各连接有一个先进先出队列,用于缓存该端口接收到的数据或命令。该先进先出队列中,最先接收的数据或命令排在最前面,最先被写入或执行。由于在每条路由上,都是所述一条或多条跨主体写命令分成的包先到达,复制的同步置位命令尾随在最后。因此,当接收到复制的同步置位命令后,该路由上的分成的包都进入了先进先出队列。因此,如果路由对应的端口310上的先进先出队列已清空,则可以确定相应路由上之前接收的包已写入目标加速单元230。这时,可以执行复制的同步置位命令,即将标志位置位(在图6中具体是将COUNTER这个标志位加1)。在所述多条路由上都执行完复制的同步置位命令后(说明在每条路由上先前接收到的包都从先进先出队列清空,写入了目标加速单元230的存储空间),特定标志位变成特定值。例如,当标志位初始置0时,每执行一次复制的同步置位命令,将该标志位加1。这时特定值等于路由数。即,标志位为1代表一条路由上的包已成功写入目标加速单元230的存储空间;标志位为2代表两条路由上的包已成功写入目标加速单元230的存储空间;一旦标志位达到路由数,则认为所有路由上的包已成功写入目标加速单元230的存储空间,可以开始后续的读取或使用操作。再例如,当标志位初始置a时,每执行一次复制的同步置位命令,将该标志位加b。这时特定值等于a+nb,其中n为路由数。即,标志位为a+b代表一条路由上的包已成功写入目标加速单元230的存储空间;标志位为a+2b代表两条路由上的包已成功写入目标加速单元230的存储空间;一旦标志位达到a+nb,则认为所有路由上的包已成功写入目标加速单元230的存储空间,可以开始后续的读取或使用操作。
然后,第二命令读取单元560从命令存储环510读取置位等待命令和数据使用命令。如图6的例子中,置位等待命令为WAIT(PPU1::COUNT=M),其中,M为路由数,COUNT的初始值为0。每当置位单元550在一个端口310接收到一个复制的同步置位命令后,COUNT被加1。WAIT(PPU1::COUNT=M)的含义是目标加速单元PPU1识别到COUNT变成M后,可以开始执行后续命令,即数据使用命令。图6中,有两条数据使用命令。第一条是//use PPU1::a1[],表示目标加速单元PPU1使用其存储的a1[]这个阵列;第二条是//use PPU1::a2[],表示目标加速单元PPU1使用其存储的a2[]这个阵列。
接着,第二命令执行单元570执行所述读取置位等待命令,以在所述特定标志位变成特定值后,允许所述数据使用命令执行。
数据生产主体的通信控制方法
如图7所示,根据本公开的一个实施例,提供了一种数据生产主体410的通信控制方法,它由数据生产主体410的通信控制单元330执行,其包括:
步骤710、读取一条或多条跨主体写命令和同步置位命令,所述跨主体写命令用于所述数据生产主体410向数据消费主体420写入数据;
步骤720、确定所述数据生产主体410和所述数据消费主体420之间的多条路由;
步骤730、将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口,并在包分配到发送端口完毕后,将所述同步置位命令分别复制到所述多条路由对应的发送端口,以便所述数据消费主体在所述多条路由上都接收到所述同步置位命令、且确保在该同步置位命令之前该路由上接收到的包都完成写入后才能使用写入的数据。
由于上述过程的实现细节已在前述数据生产主体410的通信控制单元330的装置实施例中详细描述,为了节约篇幅,故不赘述。
数据消费主体的通信控制方法
如图8所示,根据本公开的一个实施例,提供了一种数据消费主体420的通信控制方法,它由数据消费主体420的通信控制单元330执行,其包括:
步骤810、在多条路由对应的数据消费主体420接收端口310接收到复制的同步置位命令后,判断相应路由上之前接收的包是否已写入数据消费主体420,并在所述多条路由上之前接收的包都已写入数据消费主体420后,使特定标志位置位成特定值,其中,所述同步置位命令是由数据生产主体在各路由上要向所述数据消费主体发送的包都发送完毕后,在各路由上分别复制发送的;
步骤820、读取置位等待命令和数据使用命令,所述数据使用命令用于使用所述数据生产主体410向所述数据消费主体420写入的数据,所述置位等待命令用于等待所述特定标志位变成特定值;
步骤830、执行所述读取置位等待命令,以在所述特定标志位变成特定值后,允许所述数据使用命令执行。
由于上述过程的实现细节已在前述数据消费主体420的通信控制单元330的装置实施例中详细描述,为了节约篇幅,故不赘述。
本公开实施例的商业价值
本公开实施例在数据生产主体410和数据消费主体420之间存在多路由的情况下,仍然能够保证数据消费主体420对数据生产主体410写入数据消费主体420的数据的使用不发生错误,使得数据生产主体410对数据的写入和数据消费主体420对数据的使用有序进行。其可以应用于加速单元、处理单元、片上***、计算装置、通信终端等多种主体之间的多路由数据通信。实验证明,当其应用于加速单元之间的多路由数据通信时,能够大幅提高对写入数据的使用指令的执行准确率,具有广阔的市场前景。
本领域的技术人员能够理解,本公开可以实现为***、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的***、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令***、装置或器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAn)或广域网(WAn)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (14)

1.一种数据生产主体的通信控制单元,包括:
第一命令读取单元,用于读取一条或多条跨主体写命令和同步置位命令,所述跨主体写命令用于所述数据生产主体向数据消费主体写入数据;
路由单元,用于确定所述数据生产主体和所述数据消费主体之间的多条路由;
第一命令执行单元,用于将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口,并在包分配到发送端口完毕后,将所述同步置位命令分别复制到所述多条路由对应的发送端口,以便所述数据消费主体在所述多条路由上都接收到所述同步置位命令、且确保在该同步置位命令之前该路由上接收到的包都完成写入后才能使用写入的数据。
2.根据权利要求1所述的通信控制单元,其中,所述数据生产主体是第一处理单元,所述数据消费主体是第二处理单元,所述第一处理单元和所述第二处理单元通过片间互连网络通信,所述跨主体写命令将所述第一处理单元的第一片上内存的数据通过所述片间互连网络写入所述第二处理单元的第二片上内存。
3.根据权利要求2所述的通信控制单元,其中,所述路由单元存储事先配置的路由表,用于记录所述数据生产主体到各其它主体之间的路由,所述路由单元根据所述一条或多条跨主体写命令对应的数据消费主体,确定所述数据生产主体和所述数据消费主体之间的多条路由。
4.根据权利要求3所述的通信控制单元,其中,所述第一处理单元是第一加速单元,用于执行第一调度单元分配的任务;所述第二处理单元是第二加速单元,用于执行第二调度单元分配的任务;所述路由表是所述第一调度单元事先写入的。
5.根据权利要求1所述的通信控制单元,其中,所述将分成的包分配到所述多条路由对应的发送端口,包括:
确定包的序号除以确定的路由的数目的余数;
将该包分配到该余数对应的路由的发送端口。
6.根据权利要求1所述的通信控制单元,还包括:多个命令存储环,用于按照执行的顺序存储命令,所述一条或多条跨主体写命令和同步置位命令是由所述第一命令读取单元从同一命令存储环中按序取出的。
7.一种数据消费主体的通信控制单元,包括:
置位单元,用于在多条路由对应的数据消费主体接收端口接收到复制的同步置位命令后,判断相应路由上之前接收的包是否已写入数据消费主体,并在所述多条路由上之前接收的包都已写入数据消费主体后,使特定标志位置位成特定值,其中,所述同步置位命令是由数据生产主体在各路由上要向所述数据消费主体发送的包都发送完毕后,在各路由上分别复制发送的;
第二命令读取单元,用于读取置位等待命令和数据使用命令,所述数据使用命令用于使用所述数据生产主体向所述数据消费主体写入的数据,所述置位等待命令用于等待所述特定标志位变成特定值;
第二命令执行单元,用于执行所述读取置位等待命令,以在所述特定标志位变成特定值后,允许所述数据使用命令执行。
8.根据权利要求7所述的通信控制单元,其中,所述特定标志位初始值为0,所述置位单元在判断出单条路由上之前接收的包已写入数据消费主体后,在所述特定标志位上加1,所述特定值等于所述路由的数目。
9.根据权利要求7所述的通信控制单元,其中,所述数据生产主体是第一处理单元,所述数据消费主体是第二处理单元,所述第一处理单元和所述第二处理单元通过片间互连网络通信,所述复制的同步置位命令和之前的包从所述第一处理单元通过所述片间互连网络传送到所述第二处理单元。
10.根据权利要求7所述的通信控制单元,其中,所述判断相应路由上之前接收的包是否已写入数据消费主体,包括:如果路由对应的端口上的先进先出队列已清空,则确定相应路由上之前接收的包已写入数据消费主体。
11.一种片上***,包括根据权利要求1-6中任一个所述的数据生产主体的通信控制单元或根据权利要求7-10中任一个所述的数据消费主体的通信控制单元。
12.一种计算装置,包括根据权利要求1-6中任一个所述的数据生产主体的通信控制单元或根据权利要求7-10中任一个所述的数据消费主体的通信控制单元。
13.一种数据生产主体的通信控制方法,包括:
读取一条或多条跨主体写命令和同步置位命令,所述跨主体写命令用于所述数据生产主体向数据消费主体写入数据;
确定所述数据生产主体和所述数据消费主体之间的多条路由;
将所述一条或多条跨主体写命令要写的数据分成包,将分成的包分配到所述多条路由对应的发送端口,并在包分配到发送端口完毕后,将所述同步置位命令分别复制到所述多条路由对应的发送端口,以便所述数据消费主体在所述多条路由上都接收到所述同步置位命令、且确保在该同步置位命令之前该路由上接收到的包都完成写入后才能使用写入的数据。
14.一种数据消费主体的通信控制方法,包括:
在多条路由对应的数据消费主体接收端口接收到复制的同步置位命令后,判断相应路由上之前接收的包是否已写入数据消费主体,并在所述多条路由上之前接收的包都已写入数据消费主体后,使特定标志位置位成特定值,其中,所述同步置位命令是由数据生产主体在各路由上要向所述数据消费主体发送的包都发送完毕后,在各路由上分别复制发送的;
读取置位等待命令和数据使用命令,所述数据使用命令用于使用所述数据生产主体向所述数据消费主体写入的数据,所述置位等待命令用于等待所述特定标志位变成特定值;
执行所述读取置位等待命令,以在所述特定标志位变成特定值后,允许所述数据使用命令执行。
CN202110812531.0A 2021-07-19 2021-07-19 数据生产和消费主体的通信控制单元、及相关装置和方法 Active CN115643205B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110812531.0A CN115643205B (zh) 2021-07-19 2021-07-19 数据生产和消费主体的通信控制单元、及相关装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110812531.0A CN115643205B (zh) 2021-07-19 2021-07-19 数据生产和消费主体的通信控制单元、及相关装置和方法

Publications (2)

Publication Number Publication Date
CN115643205A CN115643205A (zh) 2023-01-24
CN115643205B true CN115643205B (zh) 2024-06-18

Family

ID=84939471

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110812531.0A Active CN115643205B (zh) 2021-07-19 2021-07-19 数据生产和消费主体的通信控制单元、及相关装置和方法

Country Status (1)

Country Link
CN (1) CN115643205B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1816009A (zh) * 2005-02-04 2006-08-09 华为技术有限公司 一种数据帧组播复制的方法及***
CN110392876A (zh) * 2017-03-10 2019-10-29 净睿存储股份有限公司 将数据集和其他受管理对象同步地复制到基于云的存储***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101430663B (zh) * 2007-11-09 2011-11-16 上海奇码数字信息有限公司 缓存管理单元和缓存管理方法
US20100110089A1 (en) * 2008-11-06 2010-05-06 Via Technologies, Inc. Multiple GPU Context Synchronization Using Barrier Type Primitives

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1816009A (zh) * 2005-02-04 2006-08-09 华为技术有限公司 一种数据帧组播复制的方法及***
CN110392876A (zh) * 2017-03-10 2019-10-29 净睿存储股份有限公司 将数据集和其他受管理对象同步地复制到基于云的存储***

Also Published As

Publication number Publication date
CN115643205A (zh) 2023-01-24

Similar Documents

Publication Publication Date Title
US6731631B1 (en) System, method and article of manufacture for updating a switching table in a switch fabric chipset system
US6804731B1 (en) System, method and article of manufacture for storing an incoming datagram in switch matrix in a switch fabric chipset system
US7940666B2 (en) Communication node architecture in a globally asynchronous network on chip system
EP0459758B1 (en) Network adapter having memories configured as logical FIFOs to transmit and receive packet data
US9280297B1 (en) Transactional memory that supports a put with low priority ring command
US7808999B2 (en) Method and apparatus for out-of-order processing of packets using linked lists
JP4068166B2 (ja) 高性能多層スイッチ要素用探索エンジン・アーキテクチャ
US7788334B2 (en) Multiple node remote messaging
US9678866B1 (en) Transactional memory that supports put and get ring commands
US8099521B2 (en) Network interface card for use in parallel computing systems
US20080240111A1 (en) Method and apparatus for writing network packets into computer memory
US8756270B2 (en) Collective acceleration unit tree structure
USRE43825E1 (en) System and method for data forwarding in a programmable multiple network processor environment
US7802025B2 (en) DMA engine for repeating communication patterns
EP3758311B1 (en) Techniques to facilitate a hardware based table lookup
JP2006020371A (ja) ネットワーク・スイッチ及びコンポーネント及び操作方法
WO2014113646A1 (en) Automatic deadlock detection and avoidance in a system interconnect by capturing internal dependencies of ip cores using high level specification
US6724759B1 (en) System, method and article of manufacture for transferring a packet from a port controller to a switch fabric in a switch fabric chipset system
US11704270B2 (en) Networked computer with multiple embedded rings
US20220019552A1 (en) Routing in a Network of Processors
US11467836B2 (en) Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core
US9342313B2 (en) Transactional memory that supports a get from one of a set of rings command
CN115643205B (zh) 数据生产和消费主体的通信控制单元、及相关装置和方法
CN106372013B (zh) 远程内存访问方法、装置和***
US11520726B2 (en) Host connected computer network

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
GR01 Patent grant
GR01 Patent grant