首页 / 专利库 / 人工智能 / 人工神经网络 / 数据通信方法、计算系统和存储介质

数据通信方法、计算系统和存储介质

阅读:689发布:2020-05-11

专利汇可以提供数据通信方法、计算系统和存储介质专利检索,专利查询,专利分析的服务。并且本 申请 涉及一种数据通信方法、计算系统和存储介质,所述方法包括获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。上述数据通信方法、装置和相关产品,通过计算装置的计算得到计算结果,将计算结果根据实际需要对计算结果进行变换,再将变换后的计算结果发送至对应的转移地址,实现了神经网络芯片之间或 人工智能 计算装置之间的数据通信。,下面是数据通信方法、计算系统和存储介质专利的具体信息内容。

1.一种数据通信方法,其特征在于,所述方法包括:
控制器单元获取输入数据以及计算指令;
控制器单元解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给处理电路
所述运算单元根据所述多个运算指令对所述输入数据进行计算,得到计算结果;
计算结果变换单元判断是否对所述计算结果进行变换操作;若是,则对所述计算结果进行变换操作,得到变换后的计算结果;
计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储。
2.根据权利要求1所述的方法,其特征在于,所述运算单元包括主处理电路和多个从处理电路;所述运算单元根据所述多个运算指令,对所述输入数据进行计算,得到计算结果的步骤还包括:
所述主处理电路获取所述多个运算指令以及所述输入数据;
所述主处理电路对所述输入数据执行前序处理以及与多个从处理电路之间传输数据以及运算指令;
所述多个从处理电路依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
所述主处理电路对所述多个中间结果执行后续处理得到所述计算结果。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:若计算结果变换单元判断所述计算结果不进行变换操作,则计算结果转移单元直接获取所述数据转移地址,将所述计算结果发送至所述数据转移地址进行存储。
4.根据权利要求1所述的方法,其特征在于,所述计算结果变换单元判断是否对所述计算结果进行变换操作的步骤之前还包括:计算结果读取单元获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。
5.根据权利要求4所述的方法,其特征在于,所述计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储的步骤还包括:
计算结果获取单元判断所述计算结果的数据存储地址是否为连续的地址空间;
若所述计算结果的数据存储地址为连续的地址空间,则计算结果转移单元将所述数据转移地址也设置为连续的地址空间。
6.根据权利要求4所述的方法,其特征在于,所述计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储的步骤还包括:
计算结果获取单元判断所述计算结果的数据存储地址是否为连续的地址空间;若所述计算结果的数据存储地址为非连续的地址空间,则获取所述非连续的地址空间中每段地址空间的大小以及所述非连续的地址空间之间的地址偏移量;
计算结果转移单元根据所述每段地址空间的大小以及所述地址偏移量,确定所述数据转移地址。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:点对点通信模式和集合通信模式。
8.根据权利要求7所述的方法,其特征在于,所述集合通信包括多对一通信模式、一对多通信模式以及多对多通信模式中的一种或几种。
9.根据权利要求8所述的方法,其特征在于,所述多对一通信模式的实现方式包括通过Gather函数或Reduce函数。
10.根据权利要求8所述的方法,其特征在于,所述一对多通信模式的实现方式包括通过Broadcast函数或Scatter函数。
11.根据权利要求8所述的方法,其特征在于,所述多对多通信模式的实现方式包括通过Allgather函数或Allreduce函数。
12.根据权利要求8所述的方法,其特征在于,在所述集合通信模式中,所述计算结果获取单元获取集合通信的参数;所述计算结果变换单元根据所述集合通信的参数对所述集合通信内的通信任务进行调度执行,得到经调度执行后的计算结果;
所述计算结果转移单元获取数据转移地址,将所述经调度执行后的计算结果发送至所述数据转移地址进行存储。
13.根据权利要求8所述的方法,其特征在于,在所述集合通信模式中,多个数据通信任务并行执行。
14.根据权利要求6所述的方法,其特征在于,所述变换操作包括:格式变换操作、计算操作、以及拆分组合操作中的一种或几种。
15.根据权利要求1所述的方法,其特征在于,所述计算指令包括人工神经网络运算指令、标量运算指令和向量运算指令中的一种或几种,所述输入数据包括:输入神经元数据和权值数据;所述计算结果为输出神经元数据。
16.一种计算系统,其特征在于,所述计算系统包括计算装置和通信装置,所述计算装置和所述通信装置相连;所述计算装置包括运算单元以及控制器单元;所述通信装置包括计算结果变换单元和计算结果转移单元;
所述控制器单元获取输入数据以及计算指令;
所述控制器单元解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给处理电路;
所述运算单元根据所述多个运算指令对所述输入数据进行计算,得到计算结果;
所述计算结果变换单元判断是否对所述计算结果进行变换操作;若是,则对所述计算结果进行变换操作,得到变换后的计算结果;
所述计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储。
17.根据权利要求16所述的计算系统,其特征在于,所述运算单元包括:一个主处理电路和多个从处理电路;
所述主处理电路,用于获取所述多个运算指令以及所述输入数据;所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;所述主处理电路,还用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
18.根据权利要求16所述的计算系统,其特征在于,所述控制器单元包括:指令存储单元、指令存储单元和存储队列单元;
所述指令存储单元存储所述人工神经网络运算关联的计算指令;
所述指令处理单元对所述计算指令解析得到多个运算指令;
所述存储队列单元存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
19.根据权利要求16所述的计算系统,其特征在于,所述计算结果转移单元还用于若计算结果变换单元判断所述计算结果不进行变换操作,则直接获取所述数据转移地址,将所述计算结果发送至所述数据转移地址进行存储。
20.根据权利要求17所述的计算系统,其特征在于,所述通信装置还包括计算结果获取单元,用于获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。
21.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-15中任意一项所述方法的步骤。

说明书全文

数据通信方法、计算系统和存储介质

技术领域

[0001] 本申请涉及信息处理技术领域,具体涉及一种数据通信方法、计算系统和存储介质。

背景技术

[0002] 随着人工智能的普及,通用处理器已不能满足现有算法的计算需求,专用神经网络芯片营运而生。实践证明,机器学习计算任务相对于通用处理任务或图像处理任务而言,具有独特的数据结构、存储方式、计算模式等,因而可以设计专用集成电路为机器学习计算任务重新分配芯片计算资源,实现低功耗、低延迟、高吞吐率的计算。神经网络计算装置是一种专用集成电路,可以实现神经网络计算任务,其具有低功耗、高效能的特点。
[0003] 根据摩尔定律和登纳德缩放比例定律,单核高效能处理器的计算能会因为物理因素的限制达到瓶颈。为了提高计算并行性,神经网络芯片设计逐渐向多核高效率处理器的设计转变。不仅如此,随着高性能计算机和数据中心的发展,越来越多的计算资源被集中起来,多芯片协同处理已是常态。为了实现人工智能计算装置的高处理性能和高可扩展的人工智能处理系统,神经网络芯片间需要支持高效数据通信。
[0004] 目前,还没有一种能够实现神经网络芯片之间或人工智能计算装置之间的数据通信方法、装置和相关产品。发明内容
[0005] 基于此,有必要提供一种能够实现神经网络芯片之间或人工智能计算装置之间的数据通信方法、计算系统和存储介质。
[0006] 一种数据通信方法,所述方法包括:
[0007] 控制器单元获取输入数据以及计算指令;
[0008] 控制器单元解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给处理电路;
[0009] 所述运算单元根据所述多个运算指令对所述输入数据进行计算,得到计算结果;
[0010] 计算结果变换单元判断是否对所述计算结果进行变换操作;若是,则对所述计算结果进行变换操作,得到变换后的计算结果;
[0011] 计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储。
[0012] 在其中一个实施例中,所述处理电路包括主处理电路和多个从处理电路;所述运算单元根据所述多个运算指令对所述输入数据进行计算,得到计算结果的步骤还包括:
[0013] 所述主处理电路获取所述多个运算指令以及所述输入数据;
[0014] 所述主处理电路对所述输入数据执行前序处理以及与多个从处理电路之间传输数据以及运算指令;
[0015] 所述多个从处理电路依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
[0016] 所述主处理电路对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
[0017] 在其中一个实施例中,所述方法还包括所述计算结果变换单元判断是否对所述计算结果进行变换操作的步骤之前还包括:计算结果读取单元获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。
[0018] 在其中一个实施例中,所述计算结果变换单元判断是否对所述计算结果进行变换操作的步骤之前还包括:计算结果读取单元,获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。
[0019] 在其中一个实施例中,所述计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储的步骤还包括:
[0020] 计算结果获取单元判断所述计算结果的数据存储地址是否为连续的地址空间;
[0021] 若所述计算结果的数据存储地址为连续的地址空间,则计算结果转移单元将所述数据转移地址也设置为连续的地址空间。
[0022] 在其中一个实施例中,所述计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储的步骤还包括:
[0023] 计算结果获取单元判断所述计算结果的数据存储地址是否为连续的地址空间;若所述计算结果的数据存储地址为非连续的地址空间,则获取所述非连续的地址空间中每段地址空间的大小以及所述非连续的地址空间之间的地址偏移量;
[0024] 计算结果转移单元根据所述每段地址空间的大小以及所述地址偏移量,确定所述数据转移地址。
[0025] 在其中一个实施例中,所述方法还包括:点对点通信模式和集合通信模式。
[0026] 在其中一个实施例中,所述集合通信包括多对一通信模式、一对多通信模式以及多对多通信模式中的一种或几种。
[0027] 在其中一个实施例中,所述变换操作包括:格式变换操作、计算操作、以及拆分组合操作中的一种或几种。
[0028] 在其中一个实施例中,所述计算指令包括人工神经网络运算指令、标量运算指令和向量运算指令,所述输入数据包括:输入神经元数据和权值数据;所述计算结果为输出神经元数据。
[0029] 在其中一个实施例中,所述计算装置还包括:存储单元和直接内存访问单元[0030] 所述存储单元包括:寄存器、缓存中任意组合;
[0031] 所述缓存存储所述输入数据;
[0032] 所述寄存器存储所述输入数据中的标量或向量;所述缓存包括高速暂存缓存。
[0033] 在其中一个实施例中,所述控制器单元包括:指令存储单元、指令存储单元和存储队列单元;
[0034] 所述指令存储单元存储所述人工神经网络运算关联的计算指令;
[0035] 所述指令处理单元对所述计算指令解析得到多个运算指令;
[0036] 所述存储队列单元存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
[0037] 在其中一个实施例中,所述主处理电路将多个处理电路发送的中间结果进行组合排序得到该计算指令的结果;
[0038] 或所述主处理电路将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
[0039] 在其中一个实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
[0040] 所述转换处理电路对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
[0041] 所述激活处理电路执行所述后续处理,具体为执行主处理电路内数据的激活运算;
[0042] 所述加法处理电路执行所述后续处理,具体为执行加法运算或累加运算。
[0043] 一种计算系统,所述计算系统包括计算装置和通信装置,所述计算装置和所述通信装置相连;所述计算装置包括运算单元以及控制器单元;所述通信装置包括计算结果变换单元和计算结果转移单元;
[0044] 所述控制器单元获取输入数据以及计算指令;
[0045] 所述控制器单元解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给处理电路;
[0046] 所述运算单元根据所述多个运算指令对所述输入数据进行计算,得到计算结果;
[0047] 所述计算结果变换单元判断是否对所述计算结果进行变换操作;若是,则对所述计算结果进行变换操作,得到变换后的计算结果;
[0048] 所述计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储。
[0049] 在其中一个实施例中,所述运算单元包括:一个主处理电路和多个从处理电路;
[0050] 所述主处理电路,用于获取所述多个运算指令以及所述输入数据;所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
[0051] 所述多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;所述主处理电路,还用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
[0052] 在其中一个实施例中,所述计算结果转移单元还用于若计算结果变换单元判断所述计算结果不进行变换操作,则直接获取所述数据转移地址,将所述计算结果发送至所述数据转移地址进行存储。
[0053] 在其中一个实施例中,所述通信装置还包括计算结果获取单元,用于获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。
[0054] 一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以上任一实施例所述方法的步骤。
[0055] 上述数据通信方法、计算系统和存储介质,通过计算装置的计算得到计算结果,将计算结果根据实际需要对计算结果进行变换,再将变换后的计算结果发送至对应的转移地址,实现了神经网络芯片之间和/或人工智能计算装置之间的数据通信。附图说明
[0056] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0057] 图1A’是本申请实施例提供的一种计算系统的结构示意图;
[0058] 图1A是本申请另一实施例提供的一种计算系统的结构示意图;
[0059] 图1B是本申请一个实施例提供的计算装置的结构图;
[0060] 图1C是本申请另一个实施例提供的计算装置的结构图;
[0061] 图1D是本申请实施例提供的主处理电路的结构图;
[0062] 图1E是本申请实施例提供的另一种计算装置的结构图;
[0063] 图1F是本申请实施例提供的树型模的结构示意图;
[0064] 图1G是本申请实施例提供的又一种计算装置的结构图;
[0065] 图1H是本申请实施例提供的还一种计算装置的结构图;
[0066] 图1J’是本申请实施例提供的一种数据通信方法的流程图
[0067] 图1J是本申请另一实施例提供的一种数据通信方法的流程图;
[0068] 图2A是本申请实施例提供的一种数据通信方法中不进行变换操作的示意图;
[0069] 图2B是本申请实施例提供的另一种数据通信方法中进行变换操作的示意图;
[0070] 图2C是本申请实施例提供的一种数据通信方法的数据转移地址的示意图;
[0071] 图3A是本申请实施例提供的一种多对一通信过程示意图;
[0072] 图3B是本申请实施例提供的另一种多对一通信过程示意图;
[0073] 图3C是本申请实施例提供的一种一对多通信过程示意图;
[0074] 图3D是本申请实施例提供的另一种一对多通信过程示意图;
[0075] 图3E是本申请实施例提供的一种多对多通信过程示意图;
[0076] 图3F是本申请实施例提供的另一种多对多通信过程示意图。

具体实施方式

[0077] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0078] 本申请的说明书权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0079] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0080] 首先介绍本申请使用的计算系统。参阅图1A’,提供了一种计算系统,该计算系统包括计算装置410和通信装置420,计算装置410与通信装置420相连。该计算装置410用于执行机器学习计算、标量运算指令或向量运算指令,该计算装置410包括:控制器单元11和运算单元12,其中,控制器单元11与运算单元12连接,通信装置420包括计算结果变换单元421和计算结果转移单元422。
[0081] 其中,所述控制器单元11获取输入数据以及计算指令;所述控制器单元11解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给处理电路;所述运算单元12根据所述多个运算指令对所述输入数据进行计算,得到计算结果;所述计算结果变换单元421判断是否对所述计算结果进行变换操作;若是,则对所述计算结果进行变换操作,得到变换后的计算结果;所述计算结果转移单元422获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储。
[0082] 在一种可选方案中,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
[0083] 上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
[0084] 在其中一个实施例中,计算结果变换单元421与计算结果转移单元422连接,计算结果变换单元421将变换后的计算结果发送至计算结果转移单元422进行转移。
[0085] 在一个实施例中,所述计算结果转移单元422还用于若计算结果变换单元422判断所述计算结果不进行变换操作,则直接获取所述数据转移地址,将所述计算结果发送至所述数据转移地址进行存储。
[0086] 在其中一个实施例中,所述数据通信装置还包括计算结果获取单元423,用于获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。在其中一个实施例中,计算结果获取单元423与直接内存访问单元50连接,用于通过直接内存访问单元50获取计算结果。
[0087] 在一个具体的实施例中,该运算单元12包括:一个主处理电路101和多个从处理电路102;
[0088] 主处理电路101获取所述多个运算指令以及所述输入数据;
[0089] 主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
[0090] 多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
[0091] 主处理电路101,还用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
[0092] 本实施例提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
[0093] 可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
[0094] 对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
[0095] 上述机器学习计算还可以包括矩阵运算、加法运算、减法运算、乘法运算、支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
[0096] 对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
[0097] 可选的,上述计算装置410还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量或向量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
[0098] 可选的,该控制器单元11包括:指令存储单元110、指令处理单元111和存储队列单元113;
[0099] 指令存储单元110,用于存储所述人工神经网络运算关联的计算指令;
[0100] 所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
[0101] 存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
[0102] 举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号
[0103] 在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
[0104] 上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
[0105] 可选的,该控制器单元还可以包括:
[0106] 所述依赖关系处理单元112,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
[0107] 所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
[0108] 依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
[0109] 在另一种可选实施例中,运算单元12如图1C所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图1C所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图1C所示的K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
[0110] K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
[0111] 可选的,如图1D所示,该主处理电路还可以包括:转换处理电路1011、激活处理电路1012、加法处理电路1013中的一种或任意组合;
[0112] 转换处理电路1011,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
[0113] 激活处理电路1012,用于执行主处理电路内数据的激活运算;
[0114] 加法处理电路1013,用于执行加法运算或累加运算。
[0115] 所述主处理电路101,还用于将所述输入神经元确定为广播数据,权值确定为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
[0116] 所述多个从处理电路102,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
[0117] 所述主处理电路101,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。所述从处理电路包括102:乘法处理电路;
[0118] 所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
[0119] 转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
[0120] 累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
[0121] 另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
[0122] 下面通过神经网络运算指令来说明如图1A所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
[0123] 在一种可选的实施方案中,如图1E所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
[0124] 上述树型模块具有收发功能,例如如图1E所示,该树型模块即为发送功能,如图2A所示,该树型模块即为接收功能。
[0125] 所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
[0126] 可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
[0127] 可选的,该树型模块可以为n叉树结构,例如,如图1F所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图1F所示的倒数第一层的节点。
[0128] 可选的,上述运算单元可以携带单独的缓存,如图1G所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。
[0129] 如图1H所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计算过程中需要的权值数据。
[0130] 在一种可选实施例中,运算单元12如图1B所示,可以包括分支处理电路103;其具体的连接结构如图1B所示,其中,
[0131] 主处理电路101与(一个或多个)分支处理电路103连接,每一个分支处理电路103与一个或多个从处理电路102连接;
[0132] 分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
[0133] 本申请中的数据通信方法应用于如图1A’-图1H中的硬件场景中,但是不局限于这几种应用环境。
[0134] 所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
[0135] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0136] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0137] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0138] 在一个实施例中,提供了一种数据通信方法,请一并参阅图1J,所述方法包括:
[0139] 步骤S301,所述控制器单元11获取输入数据以及计算指令;
[0140] 步骤S302,所述控制器单元11解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给主处理电路101;
[0141] 步骤S303,所述运算单元12对所述多个运算指令、所述输入数据进行计算,得到计算结果;
[0142] 步骤S304,计算结果变换单元421判断是否对所述计算结果进行变换操作;若是,则对所述计算结果进行变换操作,得到变换后的计算结果;
[0143] 步骤S305,计算结果转移单元422获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储。
[0144] 其中,变换操作是指在数据传输过程中对数据进行变化的操作,数据转移地址可以是神经网络芯片外部的地址。
[0145] 在一个实施例中,请一并参阅图2A,其中图2A中计算结果存储地址用Send表示,数据转移地址用Recv表示,所述数据通信方法还包括:若计算结果变换单元421判断所述计算结果不进行变换操作,则计算结果转移单元422直接获取所述数据转移地址Recv,将所述计算结果由计算结果存储地址Send发送至所述数据转移地址Recv进行存储。具体地,计算结果转移单元422遵照特定的通信协议,通过调用计算装置的接口和通信装置的接口,将所述计算结果发送至所述数据转移地址Recv中进行存储。其中,数据转移地址Recv可以是神经网络处理芯片的外部地址。
[0146] 在其中一个实施例中,请一并参阅图2B,计算结果变换单元422还用于接收变换指令,若数据传输过程中,没有接收到变换指令,则将计算结果直接发送至数据转移地址。若在一次数据传输过程中,计算结果变化单元422接收到变换指令,则先对计算结果进行变换操作(图2B中用OP表示),再将变换后的计算结果发送至数据转移地址。明显地,图2B中计算结果存储地址中的计算结果经过变换操作OP之后,转移到数据转移地址之后发生了变化,这种变化可以是格式变化,数据变化等。
[0147] 在一个实施例中,所述计算结果变换单元422判断是否对所述计算结果进行变换操作的步骤之前还包括:计算结果获取单元423获取所述计算结果的数据存储地址,根据所述计算结果的数据存储地址读取所述计算结果。可以理解地,在计算装置和数据通信装置运行过程中,计算装置可以将计算结果直接发送至数据通信装置,进行数据传输,还可以将计算结果进行存储,再将计算结果的存储地址发送至数据通信装置。
[0148] 在一个实施例中,所述计算结果转移单元402获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储的步骤还包括:计算结果获取单元423判断所述计算结果的数据存储地址是否为连续的地址空间;若所述计算结果的数据存储地址为连续的地址空间,则计算结果转移单元422将所述数据转移地址也设置为连续的地址空间。
[0149] 其中,连续的地址空间是指计算结果存储的地址之间没有间隔。可以理解地,若将数据通信过程看作是发送端向接收端发送数据,则数据在接收端的存储地址的属性由数据在发送端的原始存储状态的地址决定。
[0150] 在另一个实施例中,所述计算结果转移单元获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储的步骤还包括:计算结果获取单元423判断所述计算结果的数据存储地址是否为连续的地址空间;若所述计算结果的数据存储地址为非连续的地址空间,则获取所述非连续的地址空间中每段地址空间的大小以及所述非连续的地址空间之间的地址偏移量;计算结果转移单元422根据所述每段地址空间的大小以及所述地址偏移量,确定所述数据转移地址。
[0151] 在一个实施例中,请一并参阅图2C,数据转移地址的数量与计算结果存储空间的数量一致;数据转移地址之间的偏移量与计算结果存储空间的地址偏移量也一致。如图2C所示,计算结果存储地址Send有3段,并且第1段和第2段之间的偏移量为a1,第2段与第3段之间的偏移量为a2。在本实施例中,数据转移地址Recv也有3段,即第一段、第二段和第三段,其中,即第1段空间大小=第一段空间大小,第2段空间大小=第二段空间大小;第3段空间大小=第三段空间大小。进一步,数据转移地址Recv的第一段与第二段的偏移量为a1,第二段与第三段的偏移量为a2。
[0152] 在另一个实施例中,接收端Recv的数据转移存储地址之间的偏移量与发送端Send的地址空间之间偏移量上不完全一致。也就是说当发送端中第1段地址与第2段地址的偏移量为a1时,接收端中的第一段地址与第二段地址的偏移量可以不为a1。可以理解地,数据地址转移过程在不同应用场景中遵循不同的函数关系。可以理解地,数据转移地址的地址空间之间不能有重叠部分。
[0153] 在一个实施例中,所述数据通信方法还包括点对点通信和集合通信。其中,点对点通信是指两个芯片之间进行数据传输的通信模式。可以理解地,集合通信是指在两个以上的芯片之间进行数据传输的通信模式。在其中一个实施例中,集合通信包括多对一通信、一对多通信以及多对多通信中的一种或几种。
[0154] 在一个实施例中,在所述集合通信模式中,计算结果获取单元423获取集合通信的参数;所述计算结果变换单元421根据所述集合通信的参数对所述集合通信内的数据通信任务进行调度执行,得到经调度执行后的计算结果;计算结果转移单元422获取数据转移地址,将所述经调度执行后的计算结果发送至所述数据转移地址进行存储。其中,集合通信的参数包括多个数据通信任务的获取地址和转移地址。具体地,根据所述集合通信的参数对所述集合通信内的数据通信任务进行调度执行是指按照调度规则对多个数据通信任务进行调度,得到经调度执行后的计算结果;将所述经调度执行后的计算结果作为一个整体进行变换操作,得到变换后的计算结果。
[0155] 在另一个实施例中,在所述集合通信模式中,多个数据通信任务并行执行。具体地,多个数据通信任务同时分别执行,得到多个分别进行变换操作的计算结果。
[0156] 在一个实施例中,请一并参阅图3A,多对一通信模式可以通过Gather函数实现。例如,Send发送端有处理器0、处理器1、处理器2,其中处理器0中有计算结果A、处理器1中有计算结果B,处理器2中有计算结果C,经过Gather函数运算,Recv接收端处理器0接收计算结果A、计算结果B以及计算结果C原始组合结果。其中原始组合结果是指计算结果A、计算结果B以及计算结果C单纯的组合,没有经过变化操作的过程。
[0157] 在另一个实施例中,请一并参阅图3B,多对一通信模式还可以通过Reduce函数实现。例如,Send发送端有处理器0、处理器1、处理器2,其中处理器0中有计算结果A、处理器1中有计算结果B,处理器2中有计算结果C,经过Reduce函数运算,Recv接收端处理器0接收计算结果A、计算结果B以及计算结果C的经变换操作后的组合结果。其中,经变换后的组合结果是指,先得到计算结果A、计算结果B以及计算结果C的组合结果ABC,再对组合结果ABC进行变换得到经变换后的组合结果Reduce Function(ABC)。
[0158] 在其中一个实施例中,请一并参阅图3C,一对多通信模式可以通过Broadcast函数实现。例如,Send发送端的处理器0发送计算结果A。Recv接收端有处理器0、处理器1和处理器2。其中,处理器0接收计算结果A、处理器1接收计算结果A,处理器2接收计算结果A。也就是说接收端的多个处理器都分别接收发送端中的处理器中的1个计算结果。
[0159] 在另一个实施例中,请一并参阅图3D,一对多通信模式可以通过Scatter函数实现。例如,Send发送端的处理器0发送计算结果A、计算结果B以及计算结果C的组合。Recv接收端有处理器0、处理器1和处理器2。其中,处理器0接收计算结果A、处理器1接收计算结果B,处理器2接收计算结果C。
[0160] 在其中一个实施例中,请一并参阅图3E,多对多通信模式可以通过Allreduce函数实现。例如,Send发送端有处理器0、处理器1、处理器2,其中处理器0中有计算结果A、处理器1中有计算结果B,处理器2中有计算结果C,经过Allreduce函数运算,Recv接收端处理器0、处理器1和处理器2都接收计算结果A、计算结果B以及计算结果C变换操作后的组合结果。即Recv接收端的处理器0接收计算结果A、计算结果B以及计算结果C经变换操作后的组合结果;Recv接收端处理器1接收计算结果A、计算结果B以及计算结果C变换操作后的组合结果。
Recv接收端处理器2接收计算结果A、计算结果B以及计算结果C经变换操作后的组合结果。
[0161] 在其中一个实施例中,请一并参阅图3F,多对多通信模式可以通过Allgather函数实现。例如,Send发送端有处理器0、处理器1、处理器2,其中处理器0中有计算结果A、处理器1中有计算结果B,处理器2中有计算结果C,经过Allgather函数运算,Recv接收端中处理器
0、处理器1、处理器2都接收计算结果A、计算结果B以及计算结果C经的原始组合结果。可选的,多对多通信模式还可以通过AlltoAll函数或ReduceScatter函数实现。
[0162] 在一个实施例中,所述变换操作包括:格式变换操作、计算操作、以及拆分组合操作中的一种或几种。
[0163] 在一个具体的实施例中,提供了其中一种数据通信方法,请一并参阅图1J’,所述方法包括:
[0164] S401,所述控制器单元11获取输入数据以及计算指令;
[0165] S402,所述控制器单元11解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给主处理电路101;
[0166] S403,所述主处理电路101对所述输入数据执行前序处理以及与多个从处理电路102之间传输数据以及运算指令;
[0167] S404,所述多个从处理电路102依据从所述主处理电路101传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路101;
[0168] S405,所述主处理电路101对所述多个中间结果执行后续处理得到所述计算指令的计算结果;
[0169] S406,计算结果变换单元421判断是否对所述计算结果进行变换操作;若是,则对所述计算结果进行变换操作,得到变换后的计算结果;
[0170] S407,计算结果转移单元422获取数据转移地址,将所述变换后的计算结果发送至所述数据转移地址进行存储。
[0171] 本申请还提供了一种计算机可读存储介质,所述可读存储介质其上存储有计算机程序,其特征在于,在程序被处理器执行时实现以上任一实施例所述方法的步骤。
[0172] 本申请中所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0173] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
[0174] 以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈