技术领域
[0001] 本
申请涉及信息处理技术领域,特别是涉及一种片上网络处理系统和片上网络数据处理 方法。
背景技术
[0002] 随着
半导体工艺技术的发展,在单一芯片中集成上亿晶体管已经成为现实。片上网络 (Network on Chip,NoC)能够在单芯片上集成大量的计算资源,并且实现片上通信。
[0003] 由于神经网络中需要进行大量的计算,其中有一些计算需要并行处理,例如正向运算、 反向运算、权值更新等。在晶体管数目众多的芯片体系结构中,芯片设计将面临访存开销大, 带宽阻塞多,数据读写效率低等问题。
发明内容
[0004] 基于此,有必要针对上述技术问题,提供一种能够减少运算开销,提高数据读写效率的 片上网络处理系统和片上网络数据处理方法。
[0005] 第一方面,提供一种片上网络处理系统,所述系统包括:存储装置和多个计算装置,所 述存储装置和多个所述计算装置设置于同一片上,其中,至少一个计算装置与所述存储装置 连接,并且至少两个计算装置之间相互连接。
[0006] 第二方面,本申请
实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个 或者多个上述片上网络处理系统中的计算装置。该神经网络运算装置用于从其他处理装置中 获取待运算数据和控制信息,并执行
指定的
机器学习运算,将执行结果通过I/O
接口传递给 其他处理装置;
[0007] 当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过 特定的结构进行链接并传输数据;
[0008] 其中,多个所述计算装置通过PCIE总线进行互联并传输数据,以支持更大规模的机器 学习的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装 置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
[0009] 第三方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第二方面所 述的机器学习处理装置、通用互联接口,和其他处理装置。该神经网络运算装置与上述其他 处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存 储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算 装置和所述其他处理装置的数据。
[0010] 第四方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述片上网络 处理系统中的计算装置、上述第二方面所述的神经网络运算装置或者上述第三方面所述的组 合处理装置。
[0011] 第五方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构 包括上述第四方面所述的神经网络芯片;
[0012] 第六方面,本申请实施例提供了一种板卡,该板卡包括上述第五方面所述的神经网络芯 片封装结构。
[0013] 第七方面,本申请实施例提供了一种
电子装置,该电子装置包括上述第五方面所述的神 经网络芯片或者上述第六方面所述的板卡。
[0014] 第八方面,本申请实施例还提供了一种片上网络数据处理方法,所述方法用于执行机器 学习计算,所述方法包括:
[0015] 通过第一计算装置
访问存储装置,获取第一运算数据;
[0016] 通过所述第一计算装置对所述第一运算数据进行运算,得到第一运算结果;
[0017] 将所述第一运算结果发送至第二计算装置。
[0018] 在一些实施例中,所述电子设备包括数据处理装置、
机器人、电脑、
打印机、
扫描仪、
平板电脑、智能终端、手机、
行车记录仪、导航仪、
传感器、摄像头、
服务器、
云端服务器、 相机、摄像机、投影仪、
手表、
耳机、移动存储、可穿戴设备、交通工具、
家用电器、和/或 医疗设备。
[0019] 在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空 调、
微波炉、
冰箱、电饭煲、
加湿器、
洗衣机、电灯、
燃气灶、油烟机;所述医疗设备包括
核磁共振仪、B超仪和/或
心电图仪。
[0020] 上述片上网络处理系统和片上网络数据处理方法,通过在设置于同一片上的多个计算装 置之间建立连接,使多个计算装置之间能够进行数据传输,并且在计算过程中,对输入数据 以及生成的中间计算结果进行分时和复用,从而降低了访存过程中的能耗开销,减少了存储 带宽阻塞,同时提高了数据的读写效率。
附图说明
[0021] 图1为一个实施例中片上网络处理系统1100的结构示意图;
[0022] 图2为一个实施例中片上网络处理系统1200的结构示意图;
[0023] 图3为一个实施例中片上网络处理系统1300的结构示意图;
[0024] 图4为一个实施例中片上网络处理系统1400的结构示意图;
[0025] 图5a一个实施例中片上网络处理系统1500的结构示意图;
[0026] 图5b一个实施例中片上网络处理系统15000的结构示意图;
[0027] 图6为一个实施例中片上网络处理系统1600的结构示意图;
[0028] 图7为一个实施例中片上网络处理系统1700的结构示意图;
[0029] 图8为一个实施例中片上网络处理系统1800的结构示意图;
[0030] 图9为一个实施例中片上网络处理系统1900的结构示意图;
[0031] 图10a为一个实施例中片上网络处理系统1910的结构示意图;
[0032] 图10b为一个实施例中片上网络处理系统19100的结构示意图;
[0033] 图11为一个实施例中片上网络处理系统1920的结构示意图;
[0034] 图12为一个实施例中片上网络处理系统1930的结构示意图;
[0035] 图13为一个实施例中计算装置的结构示意图;
[0036] 图14为另一个实施例中计算装置的结构示意图;
[0037] 图15为一个实施例中主处理
电路的结构示意图;
[0038] 图16为另一个实施例中计算装置的结构示意图;
[0039] 图17为另一个实施例中计算装置的结构示意图;
[0040] 图18为一个实施例中树型模
块的结构示意图;
[0041] 图19为另一个实施例中计算装置的结构示意图;
[0042] 图20为另一个实施例中计算装置的结构示意图;
[0043] 图21为另一个实施例中计算装置的结构示意图;
[0044] 图22为一个实施例中组合处理装置的结构示意图;
[0045] 图23为另一个实施例中组合处理装置的结构示意图;
[0046] 图24为一个实施例中板卡的结构示意图;
[0047] 图25为一个实施例中片上网络数据处理方法的流程示意图;
[0048] 图26为另一个实施例中片上网络数据处理方法的流程示意图;
[0049] 图27为另一个实施例中片上网络数据处理方法的流程示意图;
[0050] 图28为另一个实施例中片上网络数据处理方法的流程示意图;
[0051] 图29为另一个实施例中片上网络数据处理方法的流程示意图;
[0052] 图30为另一个实施例中片上网络数据处理方法的流程示意图。
具体实施方式
[0053] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描 述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的 实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属 于本申请保护的范围。
[0054] 本申请的
说明书和
权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四” 等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它 们任何
变形,意图在于
覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系 统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括没有列出的步骤或单元, 或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0055] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在 本申请的至少一个实施例中。在说明书中的各个
位置出现该短语并不一定均是指相同的实施 例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理 解的是,本文所描述的实施例可以与其它实施例相结合。
[0056] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:存储装置和多个计算装 置,所述存储装置和多个所述计算装置设置于同一片上,其中,至少一个计算装置与所述存 储装置连接,并且至少两个计算装置之间相互连接。
[0057] 其中,片上网络(Network on Chip,NoC)是指在单芯片上集成大量的计算资源以及连接 这些资源的片上通信网络。可选的,芯片中的各计算装置可以通过各自的接口接入该片上网 络,使用共享的网络资源和目的模块进行通信。具体地,所述存储装置和多个所述计算装置 设置于同一片上指的是,将存储装置和多个计算装置集成在同一芯片上。处理器核和片外存 储装置之间通过NoC相连,NoC还支持处理器多个核之间的通信。
[0058] 本申请实施例中的片上网络处理系统都是基于NoC来实现片上通信。另外,本申请实施 例中的片上网络处理系统既可以进行片内存储,也可以进行片外存储,也就是说,神经网络 处理器处理过程中的运算数据既可以存储在片内的存储装置,也可以存储在片外的存储装置; 由于片上网络处理系统的片内存储容量有限,因此,可以将运算数据以及运算过程中产生的 中间结果暂时存储在片外存储装置,需要时再从片外存储读取到NoC中。本申请实施例中, 片上网络处理系统中的存储装置均指代片内存储装置;片上网络处理系统中的计算装置包括 神经网络处理器。
[0059] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:存储装置和多个计算装 置,所述多个计算装置包括第一计算装置和多个第二计算装置,所述存储装置和多个所述计 算装置设置于同一片上,其中,所述第一计算装置与所述存储装置连接,所述多个第二计算 装置中的至少一个第二计算装置与所述第一计算装置连接。
[0060] 在一个实施例中,提供了一种神经网络芯片,该芯片包括:存储装置、多个计算装置、 第一互联装置以及第二互联装置,其中,至少一个计算装置与所述存储装置通过所述第一互 联装置连接,所述多个计算装置之间通过所述第二互联装置连接。进一步,计算装置可以通 过第一互联装置实现对存储装置的读写操作,多个计算装置之间还可以通过第二互联装置进 行数据传输。
[0061] 如图1所示,为其中一个实施例提供的一种片上网络处理系统1100,片上网络处理系统1100包括:存储装置1101、第一计算装置1102、第二计算装置1103以及第二计算装置1104, 且存储装置1101、第一计算装置1102、第二计算装置1103以及第二计算装置1104设置于片 上网络处理系统1100的同一片上,其中,第一计算装置1102与存储装置1101连接,第二计 算装置1103与第一计算装置1102连接,同时第二计算装置1103也与第二计算装置
1104连 接。只有第一计算装置1102能够访问存储装置1101,也就是说,只有第一计算装置
1102能 够从存储装置1101进行数据读写,第一计算装置1102、第二计算装置1103与第二计算装置 1104之间能相互进行数据传输。
[0062] 具体地,当第二计算装置1104需要读取数据时,由第一计算装置1102访问存储装置1101, 从存储装置1101中读取第二计算装置1104所需要的数据,由第一计算装置1102将该数据发 送至第二计算装置1103,再由第二计算装置1103将该数据发送至第二计算装置1104。可选 的,第一计算装置1102、第二计算装置1103和第二计算装置1104也可以均与存储装置1101 连接,只要保证第一计算装置1102、第二计算装置1103和第二计算装置1104中至少一个计 算装置与存储装置1101连接即可,在此不做具体限定。可选的,第二计算装置
1103既可以 与第二计算装置1104相互连接,也可以与第一计算装置1102相互连接,只要保证第一计算 装置1102、第二计算装置1103和第二计算装置1104中至少两个计算装置相互连接即可,在 此不做具体限定。
[0063] 如图2所示,为其中一个实施例提供的一种片上网络处理系统1200,片上网络处理系统 1200包括:存储装置1201、第一计算装置1202、第二计算装置1203以及第二计算装置1204, 且存储装置1201、第一计算装置1202、第二计算装置1203以及第二计算装置1204设置于片 上网络处理系统1200的同一片上,其中,第一计算装置1202与存储装置1201连接,第二 计算装置1203和第二计算装置1204与第一计算装置1202直接连接,即第二计算装置
1204 既与第二计算装置1203连接,又与第一计算装置1201连接,而不需通过第二计算装置
1203 与第一计算装置1201建立连接。只有第一计算装置1202能够访问存储装置1201,也就是说, 只有第一计算装置1202能够从存储装置1201进行数据读写,第一计算装置1202、第二计算 装置1203与第二计算装置1204之间能相互进行数据传输。
[0064] 具体地,当第二计算装置1204需要读取数据时,由第一计算装置1202访问存储装置1201, 从存储装置1201中读取第二计算装置1204所需要的数据,由第一计算装置1202将该数据直 接发送至第二计算装置1204,而无需经过第二计算装置1203进行转发。可选的,第一计算 装置1202、第二计算装置1203和第二计算装置1204也可以均与存储装置1201连接,只要 保证第一计算装置1202、第二计算装置1203和第二计算装置1204中至少一个计算装置与存 储装置1201连接即可,在此不做具体限定。可选的,第二计算装置1203既可以与第二计算 装置1204相互连接,也可以与第一计算装置1202相互连接,只要保证第一计算装置1202、 第二计算装置1203和第二计算装置1204中至少两个计算装置相互连接即可,在此不做具体 限定。
[0065] 上述片上网络处理系统中,通过在设置于同一片上的多个计算装置之间建立连接,能够 在多个计算装置之间进行数据传输,避免了多个计算装置都从存储装置中读取数据而导致连 接带宽开销过大,同时提高了数据读写效率。
[0066] 在其中一个实施例中,提供了一种片上网络处理系统,该系统包括:存储装置和多个计 算装置,所述存储装置和多个所述计算装置设置于同一片上,其中,所述多个计算装置中的 每一个计算装置均与所述存储装置连接,并且至少两个计算装置之间相互连接。
[0067] 如图3所示,为其中一个实施例提供的一种片上网络处理系统1300,片上网络处理系统 1300包括:存储装置1301、计算装置1302、计算装置1303以及计算装置1304,存储装置 1301、计算装置1302、计算装置1303以及计算装置1304设置于片上网络处理系统1300的 同一片上,其中,计算装置1302、计算装置1303和计算装置1304均与存储装置1301连接, 计算装置1302与计算装置1303相互连接,同时计算装置1303与计算装置1304相互连接。 计算装置1202、计算装置1203和计算装置1304均能够访问存储装置1201,计算装置1302 和计算装置1303之间能相互进行数据传输,同时计算装置1303和计算装置1304之间能相互 进行数据传输。
[0068] 具体地,当计算装置1304需要读取数据时,计算装置1304可以直接访问存储装置1301; 也可以由计算装置1303访问存储装置1301,从存储装置1301中读取计算装置1304所需要 的数据,由计算装置1303将该数据发送至计算装置1304;还可以由计算装置1302访问存储 装置1301,从存储装置1301中读取计算装置1304所需要的数据,由计算装置1302将该数 据发送至计算装置1303,再由计算装置1303将该数据发送至计算装置1304。可选的,计算 装置1302、计算装置1303和计算装置1304中只要保证至少一个计算装置与存储装置
1301 连接即可,在此不做具体限定。可选的,计算装置1302、计算装置1303和计算装置1304中 只要保证至少两个计算装置相互连接即可,在此不做具体限定。
[0069] 上述片上网络处理系统中,通过在设置于同一片上的多个计算装置之间建立连接,能够 使任一计算装置所需数据都能通过多个计算装置之间进行传输,该系统能够减少同时读取存 储装置接口的计算装置,减少带宽阻塞。
[0070] 如图4所示,为其中一个实施例提供的一种片上网络处理系统1400,片上网络处理系统 1400包括:存储装置1401、计算装置1402、计算装置1403以及计算装置1404,存储装置 1401、计算装置1402、计算装置1403以及计算装置1404设置于片上网络处理系统1400的 同一片上,其中,计算装置1402、计算装置1403和计算装置1404均与存储装置1401连接, 计算装置1402、计算装置1403和计算装置1404三个计算装置之间相互连接。计算装置1402、 计算装置1403和计算装置1404均能够访问存储装置1401,计算装置1402、计算装置1403 和计算装置1404三个计算装置之间能相互进行数据传输。
[0071] 具体地,当计算装置1404需要读取数据时,可以直接访问存储装置1401;也可以由计 算装置1403访问存储装置1401,从存储装置1401中读取计算装置1404所需要的数据,由 计算装置1403将该数据发送至计算装置1404;还可以由计算装置1402访问存储装置1401, 从存储装置1401中读取计算装置1404所需要的数据,由计算装置1402直接将该数据发送至 计算装置1404,而无需经过计算装置1403进行转发。可选的,计算装置1402、计算装置1403 和计算装置1404中只要保证至少一个计算装置与存储装置1401连接即可,在此不做具体限 定。可选的,计算装置1402、计算装置1403和计算装置1404中只要保证至少两个计算装置 相互连接即可,在此不做具体限定。
[0072] 上述片上网络处理系统中,通过在设置于同一片上的多个计算装置之间建立直接连接, 能够提高数据的读写效率。
[0073] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:存储装置和多个计算装 置组,所述存储装置和多个所述计算装置组设置于同一片上,每一计算装置组包括多个计算 装置,其中,所述多个计算装置组中至少一个计算装置组与所述存储装置连接,且至少两个 计算装置组相互连接。
[0074] 在一个实施例中,提供了一种神经网络芯片,该芯片包括:存储装置、多个计算装置组、 第一互联装置以及第二互联装置,其中,所述多个计算装置组中至少一个计算装置组与所述 存储装置通过所述第一互联装置连接,所述多个计算装置组之间通过所述第二互联装置连接。 进一步,计算装置组可以通过第一互联装置实现对存储装置的读写操作,多个计算装置组之 间还可以通过第二互联装置进行数据传输。
[0075] 如图5a所示,为其中一个实施例提供的一种片上网络处理系统1500,片上网络处理系 统1500包括:存储装置1501和六个计算装置(计算装置1502至计算装置1507),存储装置 1501和六个计算装置(计算装置1502至计算装置1507)设置于片上网络处理系统1500的同 一片上,将六个计算装置分为三组,计算装置1502和计算装置1503为第一计算装置组 (cluster1),计算装置1504和计算装置1505为第二计算装置组(cluster2),计算装置1506 和计算装置1507为第三计算装置组(cluster3),cluster1为主计算装置组,cluster2和cluster3 为子计算装置组。其中,只有cluster1与存储装置1501连接,cluster1、cluster2和cluster3之 间相互连接。cluster1中的计算装置1502与存储装置1501连接,cluster1中的计算装置1503 与cluster2中的计算装置1504相互连接,cluster2中的计算装置1505与cluster3中的计算装 置1507相互连接。
[0076] 具体地,当cluster3需要读取数据时,可以由cluster1访问存储装置1501,从存储装置 1501中读取cluster3所需要的数据,由cluster1将该数据发送至cluster2,再由cluster2将该 数据发送至cluster3。其中,多个计算装置可以分为多个组,且每组计算装置数目不做具体限 制,优选为一组包括四个计算装置。
[0077] 可选的,多个计算装置中不要求所有计算装置均与存储装置1501连接,只要两个计算装 置组中至少一个计算装置组与存储装置1501连接即可,在此不做具体限定。可选的,cluster1 既可以与cluster2相互连接,也可以与cluster3相互连接,只要保证三个计算装置组中至少两 个计算装置组相互连接即可,在此不做具体限定。可选的,每一所述计算装置组中包括至少 一个计算装置与其他所述计算装置组中的至少一个计算装置连接,也就是说,cluster1的每一 个计算装置均可以与第二装置组建立连接,只需保证cluster1中至少一个计算装置与cluster2 中的至少一个计算装置连接即可,在此不做具体限定。可选的,所述多个计算装置组之间通 过所述多个计算装置组内的任意一个计算装置相互连接,也就是说,cluster1中的任意一个计 算装置可以与cluster2中的任意一个计算装置相互连接,在此不做具体限定。
[0078] 如图5b所示,为其中一个实施例提供的一种片上网络处理系统15000,片上网络处理系 统15000包括:存储装置15010和六个计算装置(计算装置15020至计算装置15070),存储 装置15010和六个计算装置(计算装置15020至计算装置15070)设置于片上网络处理系统 15000的同一片上,将六个计算装置分为三组,计算装置15020和计算装置15030为第一计 算装置组(cluster1),计算装置15040和计算装置15050为第二计算装置组(cluster2),计算 装置15060和计算装置15070为第三计算装置组(cluster3),cluster1为主计算装置组,cluster2 和cluster3为子计算装置组。其中,只有cluster1与存储装置15010连接,cluster1、cluster2 和cluster3之间相互连接。cluster1中的计算装置15020与存储装置15010连接,cluster1中的 计算装置15030与cluster2中的计算装置15040相互连接,cluster2中的计算装置15050与 cluster3中的计算装置15070相互连接,cluster3中的计算装置15060与cluster1中的计算装置 15020相互连接。
[0079] 具体地,当cluster3需要读取数据时,可以由cluster1访问存储装置1501,从存储装置 1501中读取cluster3所需要的数据,由cluster1将该数据直接发送至cluster3。其中,多个计 算装置可以分为多个组,且每组计算装置数目不做具体限制,优选为一组包括四个计算装置。
[0080] 可选的,多个计算装置中不要求所有计算装置均与存储装置15010连接,只要两个计算 装置组中至少一个计算装置组与存储装置15010连接即可,在此不做具体限定。可选的, cluster1既可以与cluster2相互连接,也可以与cluster3相互连接,只要保证三个计算装置组 中至少两个计算装置组相互连接即可,在此不做具体限定。可选的,每一所述计算装置组中 包括至少一个计算装置与其他所述计算装置组中的至少一个计算装置连接,也就是说, cluster1的每一个计算装置均可以与第二装置组建立连接,只需保证cluster1中至少一个计算 装置与cluster2中的至少一个计算装置连接即可,在此不做具体限定。可选的,所述多个计 算装置组之间通过所述多个计算装置组内的任意一个计算装置相互连接,也就是说,cluster1 中的任意一个计算装置可以与cluster2中的任意一个计算装置相互连接,在此不做具体限定。
[0081] 上述片上网络处理系统中,通过在设置于同一片上的多个计算装置组之间建立连接,能 够使多个计算装置组实现组间通信,该系统能够通过组间数据传输减少同时读取存储装置接 口的计算装置,减少访存的能耗开销;同时,设置于同一片上的多个计算装置组之间采用多 种连接方式建立组间通信,通过在多个计算装置之间建立多条通信通道,根据当前网络拥堵 情况选择一条最优通道进行数据传输,从而实现节约能耗,提高数据处理效率的效果。
[0082] 在其中一个实施例中,提供了一种片上网络处理系统,该系统包括:存储装置和多个计 算装置组,所述存储装置和多个所述计算装置组设置于同一片上,每一计算装置组包括多个 计算装置,所述多个计算装置组中至少一个计算装置组与所述存储装置连接,所述多个计算 装置组之间相互连接。
[0083] 如图6所示,为其中一个实施例提供的一种片上网络处理系统1600,片上网络处理系统 1600包括:存储装置1601和六个计算装置(计算装置1602至计算装置1607),存储装置1601 和六个计算装置(计算装置1602至计算装置1607)设置于片上网络处理系统1600的同一片 上,将六个计算装置分为三组,计算装置1602和计算装置1603为第一计算装置组cluster1, 计算装置1604和计算装置1605为第二计算装置组cluster2,计算装置1606和计算装置1607 为第三计算装置组cluster3,其中,cluster1、cluster2和cluster3均与存储装置1601连接,cluster1 和cluster2之间相互连接,cluster2和cluster3之间相互连接。
计算装置1602至计算装置1607 均与存储装置1601连接,cluster1中的计算装置1603与cluster2中的计算装置1604相互连接, cluster2中的计算装置1604与cluster3中的计算装置1607相互连接。
[0084] 具体地,当cluster3需要读取数据时,可以由cluster2访问存储装置1601,从存储装置 1601中读取cluster3所需要的数据,由cluster2发送至cluster3;也可以由cluster1访问存储 装置1601,从存储装置1601中读取cluster3所需要的数据,由cluster1将该数据发送至cluster2, 再由cluster2将该数据发送至cluster3。其中,多个计算装置可以分为多个组,且每组计算装 置数目不做具体限制,优选为一组包括四个计算装置。
[0085] 可选的,多个计算装置中不要求所有计算装置均与存储装置1601连接,只要两个计算装 置组中至少一个计算装置组与存储装置1601连接即可,在此不做具体限定。可选的,cluster1 的每一个计算装置均可以与第二单元组和/或cluster3建立连接,只需保证cluster1中至少一个 计算装置与cluster2和/或cluster3中的至少一个计算装置连接即可,在此不做具体限定。可选 的,cluster1中的任意一个计算装置可以与cluster2和/或cluster3中的任意一个计算装置相互 连接,在此不做具体限定。
[0086] 上述片上网络处理系统中,通过在设置于同一片上的多个计算装置组之间建立连接,能 够使任一计算装置组所需数据都能通过多个计算装置组之间进行传输,该系统能够减少同时 读取存储装置接口的计算装置,减少带宽阻塞。
[0087] 在其中一个实施例中,提供了一种片上网络处理系统,该系统包括:存储装置和多个计 算装置组,所述存储装置和多个所述计算装置组设置于同一片上,每一计算装置组包括多个 计算装置,所述多个计算装置组中至少一个计算装置组与所述存储装置连接,所述多个计算 装置组中的任意两个计算装置组直接连接。
[0088] 如图7所示,为其中一个实施例提供的一种片上网络处理系统1700,片上网络处理系统 1700包括:存储装置1701和六个计算装置(计算装置1702至计算装置1707),存储装置1701 和六个计算装置(计算装置1702至计算装置1707)设置于片上网络处理系统1700的同一片 上,将六个计算装置分为三组,计算装置1702和计算装置1703为第一计算装置组cluster1, 计算装置1704和计算装置1705为第二计算装置组cluster2,计算装置1706和计算装置1707 为第三计算装置组cluster3,其中,cluster1、cluster2和cluster3均与存储装置1701连接,cluster1、 cluster2和cluster3三个计算装置组之间相互连接。计算装置
1702至计算装置1707均与存储 装置1701连接,cluster1中的计算装置1703与cluster2中的计算装置1704相互连接,cluster2 中的计算装置1704与cluster3中的计算装置1707相互连接,cluster1中的计算装置1702与 cluster3中的计算装置1706相互连接。
[0089] 具体地,当cluster3需要读取数据时,可以由cluster2访问存储装置1701,从存储装置 1701中读取cluster3所需要的数据,由cluster2发送至cluster3;也可以由cluster1访问存储 装置1701,从存储装置1701中读取cluster3所需要的数据,由cluster1将该数据直接发送至 cluster3。多个计算装置可以分为多个组,且每组计算装置数目不做具体限制,优选为一组包 括四个计算装置。
[0090] 可选的,多个计算装置中不要求所有计算装置均与存储装置1701连接,只要两个计算装 置组中至少一个计算装置组与存储装置1701连接即可,在此不做具体限定。可选的,cluster1 的每一个计算装置均可以与第二单元组和cluster3建立连接,只需保证cluster1中至少一个计 算装置与cluster2和cluster3中的至少一个计算装置连接即可,在此不做具体限定。可选的, cluster1中的任意一个计算装置可以与cluster2和cluster3中的任意一个计算装置相互连接, 在此不做具体限定。
[0091] 上述片上网络处理系统中,通过在设置于同一片上的多个计算装置组之间建立直接连接, 能够提高数据的读写效率。
[0092] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:存储装置和多个计算装 置组,所述存储装置和多个所述计算装置组设置于同一片上,每一计算装置组包括多个计算 装置,所述多个计算装置组中至少一个计算装置组与所述存储装置连接,且至少两个计算装 置组相互连接,每一所述计算装置组中的多个计算装置相互连接。
[0093] 如图8所示,为其中一个实施例提供的一种片上网络处理系统1800,片上网络处理系统 1800包括:存储装置1801和六个计算装置(计算装置1802至计算装置1807),存储装置1801 和六个计算装置(计算装置1802至计算装置1807)设置于片上网络处理系统1800的同一片 上,将六个计算装置分为两组,计算装置1802、计算装置1803和计算装置1804为第一计算 装置组cluster1,计算装置1805、计算装置1806和计算装置1807为第二计算装置组cluster2, 其中,cluster1和cluster2均与存储装置1801连接,cluster1和cluster2之间相互连接,且cluster1 中的三个计算装置之间相互连接,cluster2中的三个计算装置之间相互连接。计算装置1802 至计算装置1807均与存储装置1801连接,cluster1中的计算装置
1802与cluster2中的计算装 置1805相互连接,计算装置1803与计算装置1802和计算装置
1804相互连接,计算装置1806 与计算装置1805和计算装置1807相互连接。其中,每一计算装置组的多个计算装置之间的 连接方式可参见片上网络处理系统1100至片上网络处理系统1400的连接方式,在此不再赘 述。
[0094] 具体地,当cluster2需要读取数据时,可以直接访问存储装置1801;也可以由cluster1 访问存储装置1801,从存储装置1801中读取cluster2所需要的数据,由cluster1将该数据发 送至cluster2;同时第二计算装置也可以在组内进行数据传输。当cluster2需要读取数据时, cluster2中的计算装置1805、计算装置1806和计算装置1807可以同时访问存储装置1801, 其中,计算装置1805、计算装置1806和计算装置1807分别读取cluster2所需要的一部分数 据,这些数据可以在cluster2内进行传输。多个计算装置可以分为多个组,且每组计算装置 数目不做具体限制,优选为一组包括四个计算装置。
[0095] 可选的,多个计算装置中不要求所有计算装置均与存储装置1801连接,只要两个计算装 置组中至少一个计算装置组与存储装置1801连接即可,在此不做具体限定。可选的,cluster1 的每一个计算装置均可以与第二单元组建立连接,只需保证cluster1中至少一个计算装置与 cluster2中的至少一个计算装置连接即可,在此不做具体限定。可选的,cluster1中的任意一 个计算装置可以与cluster2中的任意一个计算装置相互连接,在此不做具体限定。
[0096] 上述片上网络处理系统中,通过在设置于同一片上的多个计算装置组之间建立连接,同 时每一计算装置组中多个计算装置之间建立连接,从而使多个计算装置之间既能够实现组内 通信,又能够实现组间通信,该系统能够减少访存的能耗开销,提高数据读取的效率。
[0097] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:多个片上网络处理模块 相互连接,所述多个片上网络处理模块设置于同一片上,每一片上网络处理模块包括:至少 一个存储装置和多个计算装置,其中,每一片上网络处理模块中,至少一个计算装置与所述 网络处理模块内部的至少一个存储装置连接,且所述多个计算装置中至少两个计算装置之间 相互连接。
[0098] 在一个实施例中,提供了一种神经网络芯片,该芯片包括多个片上网络处理模块相互连 接,每一片上网络处理模块包括:至少一个存储装置、多个计算装置、第一互联装置以及第 二互联装置,其中,每一片上网络处理模块中,至少一个计算装置与所述片上网络处理模块 内部的至少一个存储装置通过所述第一互联装置连接,所述多个计算装置之间通过所述第二 互联装置连接。进一步,计算装置可以通过第一互联装置实现对其所在片上网络处理模块内 部的存储装置的读写操作,多个计算装置之间还可以通过第二互联装置进行数据传输。
[0099] 如图9所示,为其中一个实施例提供的一种片上网络处理系统1900,片上网络处理系统 1900包括四个片上网络处理模块相互连接,所述四个片上网络处理模块设置于片上网络处理 系统1900的同一片上,每一片上网络处理模块包括:一个存储装置1901和四个计算装置(计 算装置1902至计算装置1905),其中,每一片上网络处理模块中,计算装置1902与其片上 网络处理模块内部的存储装置1901连接,且每一片上网络处理模块内部的四个计算装置之间 相互连接。
[0100] 具体地,每一片上网络处理模块所需要处理的数据都存放在该片上网络处理模块内部的 存储装置中,也就是说,每一片上网络处理模块中的多个计算装置只能访问所在片上网络处 理模块内部的存储装置,只能从所在片上网络处理模块内部的存储装置进行数据读写。
[0101] 可选的,每一片上网络处理模块中的存储装置数目不限于一个,可以是两个、三个或多 个,在此不做具体限定,优选为四个。可选的,每一片上网络处理模块中,所述多个计算装 置相互连接形成计算装置网络,每一片上网络处理模块中的多个计算装置之间的连接方式可 参见片上网络处理系统1100至片上网络处理系统1400的连接方式,在此不再赘述。可选的, 每一片上网络处理模块中的多个计算装置中不要求所有计算装置均与存储装置1901连接,只 要每一片上网络处理模块中至少一个计算装置与存储装置1901连接即可,在此不做具体限定。
[0102] 可选的,每一片上网络处理模块中的每一个计算装置均可以与另一片上网络处理模块建 立连接,只需保证每一片上网络处理模块中至少一个计算装置与另一片上网络处理模块中的 至少一个计算装置连接即可,在此不做具体限定。可选的,所述多个片上网络处理模块之间 通过每一片上网络处理模块中的任意一个计算装置相互连接,也就是说,每一片上网络处理 模块中的任意一个计算装置可以与另一片上网络处理模块中的任意一个计算装置相互连接, 在此不做具体限定。
[0103] 上述片上网络处理系统中,通过在设置于同一片上的多个片上网络处理模块之间建立连 接,同时每一片上网络处理模块中多个计算装置之间建立连接,从而使多个计算装置之间既 能够实现模块内通信,又能够实现模块间通信,该系统能够减少访存的能耗开销,提高数据 读取的效率;同时,设置于同一片上的多个片上网络处理模块之间采用多种连接方式建立模 块间通信,通过在多个计算装置之间建立多条通信通道,根据当前网络拥堵情况选择一条最 优通道进行数据传输,从而实现节约能耗,提高数据处理效率的效果。
[0104] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:多个片上网络处理模块 相互连接,所述多个片上网络处理模块设置于同一片上,每一片上网络处理模块包括多个存 储装置,且所述片上网络处理模块中,至少一个计算装置与所述片上网络处理模块内部的所 述多个存储装置连接,且所述多个计算装置中至少两个计算装置相互连接。
[0105] 如图10a所示,为其中一个实施例提供的一种片上网络处理系统1910,片上网络处理系 统1910包括四个片上网络处理模块相互连接,所述四个片上网络处理模块设置于片上网络处 理系统1910的同一片上,每一片上网络处理模块包括:存储装置1911、存储装置1916和四 个计算装置(计算装置1912至计算装置1915),其中,每一片上网络处理模块中,计算装置 1912与其片上网络处理模块内部的存储装置1911和存储装置1916连接,且每一片上网络处 理模块内部的四个计算装置之间相互连接。
[0106] 具体地,每一片上网络处理模块所需要处理的数据都存放在该片上网络处理模块内部的 存储装置中,也就是说,每一片上网络处理模块中的多个计算装置只能访问所在片上网络处 理模块内部的存储装置,只能从所在片上网络处理模块内部的存储装置进行数据读写。每一 片上网络处理模块中的至少一个计算装置与该片上网络处理模块中的所有存储装置建立连接, 也就是说,每一片上网络处理模块中的计算装置可以访问该片上网络处理模块中的所有存储 装置。其中,每一片上网络处理模块中的存储装置数目不限于两个,可以是三个、四个或多 个,在此不做具体限定,优选为四个。
[0107] 具体地,每一片上网络处理模块中的计算装置优先访问邻近的存储装置。其中,邻近的 存储装置指的是与计算装置相连的多个存储装置中通信距离最短的存储装置,也就是说,通 信距离最短的存储装置的访问优先级高于其他存储装置。
[0108] 可选的,每一片上网络处理模块中,所述多个计算装置相互连接形成计算装置网络,每 一片上网络处理模块中的多个计算装置之间的连接方式可参见片上网络处理系统1100至片 上网络处理系统1400的连接方式,在此不再赘述。可选的,每一片上网络处理模块中的多个 计算装置中不要求所有计算装置均与存储装置1911连接,只要每一片上网络处理模块中至少 一个计算装置与存储装置1911连接即可,在此不做具体限定。
[0109] 可选的,每一片上网络处理模块中的每一个计算装置均可以与另一片上网络处理模块建 立连接,只需保证每一片上网络处理模块中至少一个计算装置与另一片上网络处理模块中的 至少一个计算装置连接即可,在此不做具体限定。可选的,所述多个片上网络处理模块之间 通过每一片上网络处理模块中的任意一个计算装置相互连接,也就是说,每一片上网络处理 模块中的任意一个计算装置可以与另一片上网络处理模块中的任意一个计算装置相互连接, 在此不做具体限定。
[0110] 上述片上网络处理系统中,每一计算装置可以访问所在片上网络处理模块中的所有存储 装置,能够提供多条通信通道进行数据传输,从而提高数据的读写效率;该系统中每一计算 装置优先访问邻近的存储装置,能够在节省访存开销的同时保证一定的灵活性。
[0111] 在其中一个实施例中,如图10b所示的片上网络处理系统19100,其中,每一片上网络 处理模块所需要处理的数据都存放在该片上网络处理模块内部的存储装置中,也就是说,每 一片上网络处理模块中的多个计算装置只能访问所在片上网络处理模块内部的存储装置,只 能从所在片上网络处理模块内部的存储装置进行数据读写。每一片上网络处理模块中的至少 一个计算装置与该片上网络处理模块中的所有存储装置建立连接,也就是说,每一片上网络 处理模块中的计算装置可以访问该片上网络处理模块中的所有存储装置。其中,每一片上网 络处理模块中的存储装置数目不限于两个,可以是三个、四个或多个,在此不做具体限定, 优选为四个。
[0112] 具体地,每一片上网络处理模块中,每一计算装置与第一通信距离的存储装置连接,其 中,第一通信距离指的是,最短通信距离,也就是说,每一片上网络处理模块中的计算装置 只能访问邻近的存储装置,即每一片上网络处理模块中的计算装置只能访问与其通信距离最 短的存储装置。例如,计算装置19120只能访问邻近的存储装置19110,而无法访问存储装 置19160;计算装置19130只能访问邻近的存储装置19160,而无法访问存储装置19110,当 计算装置19120需要读取的数据存储在存储装置19160时,需先通过计算装置19130从存储 装置19160中读取该数据,再由计算装置19130将该数据传输至计算装置
19120。
[0113] 可选的,每一片上网络处理模块中,所述多个计算装置相互连接形成计算装置网络,每 一片上网络处理模块中的多个计算装置之间的连接方式可参见片上网络处理系统1100至片 上网络处理系统1400的连接方式,在此不再赘述。可选的,每一片上网络处理模块中的多个 计算装置中不要求所有计算装置均与存储装置19110连接,只要每一片上网络处理模块中至 少一个计算装置与存储装置19110连接即可,在此不做具体限定。
[0114] 可选的,每一片上网络处理模块中的每一个计算装置均可以与另一片上网络处理模块建 立连接,只需保证每一片上网络处理模块中至少一个计算装置与另一片上网络处理模块中的 至少一个计算装置连接即可,在此不做具体限定。可选的,所述多个片上网络处理模块之间 通过每一片上网络处理模块中的任意一个计算装置相互连接,也就是说,每一片上网络处理 模块中的任意一个计算装置可以与另一片上网络处理模块中的任意一个计算装置相互连接, 在此不做具体限定。
[0115] 上述片上网络处理系统中,每一计算装置可以访问所在片上网络处理模块中的所有存储 装置,能够提供多条通信通道进行数据传输,从而提高数据的读写效率;该系统中每一计算 装置仅能访问邻近的存储装置,能够最大化的节省访存开销。
[0116] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:任意两个片上网络处理 模块之间直接连接,任意两个网络处理模块设置于同一片上,每一片上网络处理模块包括: 至少一个存储装置和多个计算装置,其中,每一片上网络处理模块中,至少一个计算装置与 所述网络处理模块内部的至少一个存储装置连接,且所述多个计算装置中至少两个计算装置 相互连接。
[0117] 如图11所示,为其中一个实施例提供的一种片上网络处理系统1920,片上网络处理系 统1920包括四个片上网络处理模块相互连接,所述四个片上网络处理模块设置于片上网络处 理系统1920的同一片上,所述四个片上网络处理模块中的任意两个片上网络处理模块之间直 接连接,每一片上网络处理模块包括:一个存储装置1921和四个计算装置(计算装置1922 至计算装置1925),其中,每一片上网络处理模块中,计算装置1922与其片上网络处理模块 内部的存储装置1921连接,且每一片上网络处理模块内部的四个计算装置之间相互连接。
[0118] 具体地,每一片上网络处理模块所需要处理的数据都存放在该片上网络处理模块内部的 存储装置中,也就是说,每一片上网络处理模块中的多个计算装置只能访问所在片上网络处 理模块内部的存储装置,只能从所在片上网络处理模块内部的存储装置进行数据读写。
[0119] 可选的,每一片上网络处理模块中的存储装置数目不限于一个,可以是两个、三个或多 个,在此不做具体限定,优选为四个。可选的,每一片上网络处理模块中,所述多个计算装 置相互连接形成计算装置网络,每一片上网络处理模块中的多个计算装置之间的连接方式可 参见片上网络处理系统1100至片上网络处理系统1400的连接方式,在此不再赘述。可选的, 每一片上网络处理模块中的多个计算装置中不要求所有计算装置均与存储装置1921连接,只 要每一片上网络处理模块中至少一个计算装置与存储装置1921连接即可,在此不做具体限定。
[0120] 可选的,每一片上网络处理模块中的每一个计算装置均可以与另一片上网络处理模块建 立连接,只需保证每一片上网络处理模块中至少一个计算装置与另一片上网络处理模块中的 至少一个计算装置连接即可,在此不做具体限定。可选的,所述多个片上网络处理模块之间 通过每一片上网络处理模块中的任意一个计算装置相互连接,也就是说,每一片上网络处理 模块中的任意一个计算装置可以与另一片上网络处理模块中的任意一个计算装置相互连接, 在此不做具体限定。
[0121] 上述片上网络处理系统中,通过在设置于同一片上的多个片上网络处理模块之间建立连 接,同时每一片上网络处理模块中多个计算装置之间建立连接,从而使多个计算装置之间能 够实现模块内通信,同时使任意两个片上网络处理模块之间能够实现模块间直接通信,该系 统能够减少同时读取存储装置接口的计算装置,减少带宽阻塞,通过模块间的数据传输,提 高数据读写的效率。
[0122] 在一个实施例中,提供了一种片上网络处理系统,该系统包括:任意两个片上网络处理 模块之间直接连接,任意两个网络处理模块设置于同一片上,每一片上网络处理模块包括多 个存储装置,且所述片上网络处理模块中,至少一个计算装置与所述片上网络处理模块内部 的所述多个存储装置连接,且所述多个计算装置中至少两个计算装置相互连接。
[0123] 如图12所示,为其中一个实施例提供的一种片上网络处理系统1930,片上网络处理系 统1930包括四个片上网络处理模块相互连接,所述四个片上网络处理模块设置于片上网络处 理系统1920的同一片上,所述四个片上网络处理模块中的任意两个片上网络处理模块之间直 接连接,每一片上网络处理模块包括:存储装置1931、存储装置1936和四个计算装置(计 算装置1932至计算装置1935),其中,每一片上网络处理模块中,计算装置1932与其片上 网络处理模块内部的存储装置1931和存储装置1936连接,且每一片上网络处理模块内部的 四个计算装置之间相互连接。
[0124] 具体地,每一片上网络处理模块所需要处理的数据都存放在该片上网络处理模块内部的 存储装置中,也就是说,每一片上网络处理模块中的多个计算装置只能访问所在片上网络处 理模块内部的存储装置,只能从所在片上网络处理模块内部的存储装置进行数据读写。每一 片上网络处理模块中的计算装置优先访问邻近的存储装置。
[0125] 可选的,每一片上网络处理模块中的存储装置数目不限于两个个,可以是三个、四个或 多个,在此不做具体限定,优选为四个。具体地,每一片上网络处理模块中的至少一个计算 装置与该片上网络处理模块中的所有存储装置建立连接,也就是说,每一片上网络处理模块 中的计算装置可以访问该片上网络处理模块中的所有存储装置。
[0126] 可选的,每一片上网络处理模块中,所述多个计算装置相互连接形成计算装置网络,每 一片上网络处理模块中的多个计算装置之间的连接方式可参见片上网络处理系统1100至片 上网络处理系统1400的连接方式,在此不再赘述。可选的,每一片上网络处理模块中的多个 计算装置中不要求所有计算装置均与存储装置1931连接,只要每一片上网络处理模块中至少 一个计算装置与存储装置1931连接即可,在此不做具体限定。
[0127] 可选的,每一片上网络处理模块中的每一个计算装置均可以与另一片上网络处理模块建 立连接,只需保证每一片上网络处理模块中至少一个计算装置与另一片上网络处理模块中的 至少一个计算装置连接即可,在此不做具体限定。可选的,所述多个片上网络处理模块之间 通过每一片上网络处理模块中的任意一个计算装置相互连接,也就是说,每一片上网络处理 模块中的任意一个计算装置可以与另一片上网络处理模块中的任意一个计算装置相互连接, 在此不做具体限定。
[0128] 上述片上网络处理系统中,每一计算装置可以访问所在片上网络处理模块中的所有存储 装置,同时任意两个片上网络处理模块之间能够实现模块间直接通信,该系统能够提供多条 通信通道进行数据传输,从而提高数据的读写效率;该系统中每一计算装置优先访问邻近的 存储装置,能够在节省访存开销的同时保证一定的灵活性。
[0129] 在其中一个实施例中,如图13所示,片上网络处理系统的计算装置可以用于执行机器学 习计算,该计算装置包括:
控制器单元11和运算单元12,其中,控制单元11和运算单元12 连接,该运算单元11包括:一个主处理电路和多个从处理电路;
[0130] 控制器单元11,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输 入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为 一个或多个数据I/O接口或I/O引脚。
[0131] 上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令 等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
[0132] 控制器单元11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述 输入数据发送给所述主处理电路;
[0133] 主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传 输数据以及运算指令;
[0134] 多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中 间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
[0135] 主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
[0136] 本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其 可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量 较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
[0137] 可选的,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元 10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指 令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问 单元50用于从存储单元10读取或存储数据。
[0138] 可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;
[0139] 指令存储单元110,用于存储所述
人工神经网络运算关联的计算指令;
[0140] 所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;
[0141] 存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行 的多个运算指令和/或计算指令。
[0142] 举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该 控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方 案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理 单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通 过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制
信号。
[0143] 在一种可选方案中,该计算指令的结构可以如表1所示。
[0144] 表1
[0145]操作码 寄存器或立即数 寄存器/立即数 ...
[0146] 上表中的省略号表示可以包括多个寄存器或立即数。
[0147] 在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计 算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表2所示,其中,寄存器 号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器 号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
[0148] 表2
[0149]
[0150] 上述寄存器可以为片外
存储器,当然在实际应用中,也可以为片内存储器,用于存储数 据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向 量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
[0151] 可选的,该控制器单元还可以包括:
[0152] 所述依赖关系处理单元112,用于在具有多个运算指令时,确定第一运算指令与所述第 一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指 令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令 执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
[0153] 所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
[0154] 依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址 区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所 述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与 所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有 重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
[0155] 在另一种可选实施例中,运算单元12如图14所示,可以包括一个主处理电路101和多 个从处理电路102。在一个实施例里,如图14所示,多个从处理电路呈阵列分布;每个从处 理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理 电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第 1列的m个从处理电路,需要说明的是,如图14所示的K个从处理电路仅包括第1行的n 个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电 路为多个从处理电路中直接与主处理电路连接的从处理电路。
[0156] k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转 发。
[0157] 可选的,如图15所示,该主处理电路还可以包括:转换处理电路110、激活处理电路111、 加法处理电路112中的一种或任意组合;
[0158] 转换处理电路110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第 二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或 中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
[0159] 激活处理电路111,用于执行主处理电路内数据的激活运算;
[0160] 加法处理电路112,用于执行加法运算或累加运算。
[0161] 所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将分发数据 分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个 运算指令发送给所述从处理电路;
[0162] 所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果, 并将运算结果传输给所述主处理电路;
[0163] 所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结 果,将该计算指令的结果发送给所述控制器单元。
[0164] 所述从处理电路包括:乘法处理电路;
[0165] 所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
[0166] 转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
[0167] 累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
[0168] 另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指 令。
[0169] 下面通过神经网络运算指令来说明如图1所示的计算装置的具体计算方法。对于神经网 络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w 乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
[0170] 在一种可选的实施方案中,如图16所示,所述运算单元包括:树型模块40,所述树型 模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路, 所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
[0171] 上述树型模块具有收发功能,例如如图16所示,该树型模块即为发送功能,如图17所 示,该树型模块即为接收功能。
[0172] 所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以 及运算指令。
[0173] 可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层
节点,该节点为具 有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需 该树型模块。
[0174] 可选的,该树型模块可以为n叉树结构,例如,如图18所示的二叉树结构,当然也可以 为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体 取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点, 例如可以连接如图18所示的倒数第一层的节点。
[0175] 可选的,上述运算单元可以携带单独的缓存,如图19所示,可以包括:神经元缓存单元, 该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。
[0176] 如图20所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计 算过程中需要的权值数据。
[0177] 在一种可选实施例中,运算单元12如图21所示,可以包括分支处理电路103;其具体 的连接结构如图21所示,其中,
[0178] 主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或 多个从处理电路102连接;
[0179] 分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
[0180] 本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置, 用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通 过I/O接口传递给
外围设备。外围设备譬如摄像头,显示器,
鼠标,
键盘,网卡,wifi接口, 服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据, 譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可 以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个
加速器有 各自的内存。此外,其互联方式可以是任意互联拓扑。
[0181] 该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
[0182] 本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口, 和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。 图22为组合处理装置的示意图。
[0183] 其他处理装置,包括
中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用 处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处 理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络 运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成 运算任务。
[0184] 通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。 该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的 存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存; 也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
[0185] 可选的,该结构如图23所示,还可以包括存储装置,存储装置分别与所述神经网络运算 装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理 装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存 储中无法全部保存的数据。
[0186] 该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统, 有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置 的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网 卡,wifi接口。
[0187] 在一些实施例里,还申请了一种芯片,其包括了上述神经网络运算装置或组合处理装置。
[0188] 在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
[0189] 在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图24,图24提 供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套 部件包括但不限于:存储器件390、接口装置391和控制器件392;
[0190] 所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存 储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理 解,每一组所述存储单元可以是DDR SDRAM(Double Data Rate SDRAM,双倍速率同步动 态随机存储器)。
[0191] DDR不需要提高时钟
频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升 沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置 可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个 实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit 用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-31200 颗粒时,数据传输的理论带宽可达到251600MB/s。
[0192] 在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储 器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用 于对每个所述存储单元的数据传输与数据存储的控制。
[0193] 所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与 外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可 以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实 现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到116000MB/s。在 另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具 体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接 口装置传送回外部设备(例如服务器)。
[0194] 所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体 的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括
单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路, 可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述 控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调 控。
[0195] 在一些实施例里,申请了一种电子设备,其包括了上述板卡。
[0196] 电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、 手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影 仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0197] 所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、
空调、
微波炉、冰箱、 电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪 和/或心电图仪。
[0198] 在一个实施例中,如图25所示,提供了一种片上网络数据处理方法,该方法包括以下步 骤:
[0199] 步骤202,通过第一计算装置访问存储装置,获取第一运算数据。
[0200] 其中,第一计算装置包括:运算单元以及控制器单元;运算单元包括:一个主处理电路 和多个从处理电路。具体地,第一计算装置中的控制器单元从存储装置中获取第一运算数据 以及计算指令。
[0201] 步骤204,通过所述第一计算装置对所述第一运算数据进行运算,得到第一运算结果。
[0202] 其中,将从存储装置中读取的第一运算数据,根据相应的计算指令在第一计算装置中进 行运算,得到第一运算结果。
[0203] 步骤206,将所述第一运算结果发送至第二计算装置。
[0204] 其中,第一计算装置通过与第二计算装置之间建立的通信通道,通过第一计算装置中的 控制器单元将第一运算结果发送至第二计算装置。可选的,可以将第一运算结果发送至第二 计算装置,也可以将第一运算结果发送至存储装置。
[0205] 进一步,本实施例提供的片上网络数据处理方法,可以应用于如图1-5所示的任意一个 片上网络处理系统中。
[0206] 上述片上网络数据处理方法,通过将第一计算装置中的第一运算结果发送至第二计算装 置,能够实现多个计算装置之间的数据传输;同时,通过对运算数据的复用,能够避免计算 装置多次访问存储装置造成的带宽开销过大,该方法能够使运算数据以及中间运算结果得到 合理的利用,提高了数据处理的效率。
[0207] 在其中一个实施例中,如图26所示,提供了一种片上网络数据处理方法,该方法包括以 下步骤:
[0208] 步骤302,通过第一计算装置访问存储装置,获取第一运算数据。
[0209] 其中,计算装置包括:运算单元以及控制器单元;运算单元包括:一个主处理电路和多 个从处理电路。具体地,第一计算装置中的控制器单元从存储装置中获取第一运算数据以及 计算指令。
[0210] 步骤304,通过所述第一计算装置对所述第一运算数据进行运算,得到第一运算结果。
[0211] 其中,将从存储装置中读取的第一运算数据,根据相应的计算指令在第一计算装置中进 行运算,得到第一运算结果。
[0212] 步骤306,将所述第一运算结果发送至第二计算装置。
[0213] 其中,第一计算装置通过与第二计算装置之间建立的通信通道,通过第一计算装置中的 控制器单元将第一运算结果发送至第二计算装置。
[0214] 步骤308,通过所述第二计算装置访问所述存储装置,获取第二运算数据。
[0215] 其中,第二计算装置包括:运算单元以及控制器单元;运算单元包括:一个主处理电路 和多个从处理电路。具体地,第二计算装置中的控制器单元从存储装置中获取第二运算数据 以及计算指令。
[0216] 步骤310,通过所述第二计算装置将所述第二运算数据和所述第一运算结果进行运算, 得到第二运算结果。
[0217] 其中,将从存储装置中读取的第二运算数据和从第一计算装置中接收的第一运算结果, 根据相应的计算指令在第一计算装置中进行运算,得到第二运算结果。
[0218] 进一步,本实施例提供的片上网络数据处理方法,可以应用于如图1-5所示的任意一个 片上网络处理系统中。
[0219] 上述片上网络数据处理方法,通过将第一计算装置中的第一运算结果发送至第二计算装 置,第二计算装置利用该第一运算结果进行再次运算,能够实现运算数据的复用,该方法能 够使运算数据以及中间运算结果得到合理的利用,提高了数据处理的效率。
[0220] 在其中一个实施例中,将如图26所示的片上网络数据处理方法应用于如图9所示的片上 网络处理系统1900,其中,计算装置1902至计算装置1905均与其所在片上网络处理模块中 的存储装置1901连接,且计算装置1902至计算装置1905中任意两个计算装置之间直接连接。
[0221] 例如,计算一个矩阵乘法,矩阵 矩阵 计算矩阵
[0222] 其中,对于c00=a00*b00+a01*b10;
[0223] c01=a00*b01+a01*b11;
[0224] c10=a10*b00+a11*b10;
[0225] c11=a10*b01+a11*b11。
[0226] 首先,将时间进行划分,得到三个时间段。
[0227] 接着,在第一时间段,计算装置1902至计算装置1905同时访问其所在片上网络处理模 块中的存储装置1901。
[0228] 具体地,计算装置1902从存储装置1901中读取第一运算数据a00和b00;计算装置1903 从存储装置1901中读取第一运算数据a01和b11;计算装置1904从存储装置1901中读取第一 运算数据a11和b10;计算装置1905从存储装置1901中读取第一运算数据a10和b01。
[0229] 进一步,在计算装置1902中对读取到的第一运算数据a00和b00进行运算,得到第一运算 结果a00*b00;在计算装置1903中对读取到的第一运算数据a01和b11进行运算,得到第一运 算结果a01*b11;在计算装置1904中对读取到的第一运算数据a11和b10进行运算,得到第一 运算结果a11*b10;在计算装置1905中对读取到的第一运算数据a10和b01进行运算,得到第 一运算结果a10*b01。
[0230] 接着,在第二时间段,计算装置1902分别从计算装置1903中读取第一运算数据a01,和 计算装置1904中读取第一运算数据b10,通过运算得到第二运算结果a01*b10;计算装置1903 分别从计算装置1902中读取第一运算数据a00,和计算装置1905中读取第一运算数据b01, 通过运算得到第二运算结果a00*b01;计算装置1904分别从计算装置1905中读取第一运算 数据a10,和计算装置1902中读取第一运算数据b00,通过运算得到第二运算结果a10*b00; 计算装置1905分别从计算装置1904中读取第一运算数据a11,和计算装置1903中读取第一 运算数据b11,通过运算得到第二运算结果a11*b11。
[0231] 接着,在第三时间段,计算装置1902将第一运算结果a00*b00和第二运算结果a01*b10进 行运算,得到第三运算结果c00=a00*b00+a01*b10,并将第三运算结果c00发送至存储 装置1902;计算装置1903将第一运算结果a01*b11和第二运算结果a00*b01进行运算,得 到第三运算结果c01=a00*b01+a01*b11,并将第三运算结果c01发送至存储装置1902; 计算装置1904将第一运算结果a11*b10和第二运算结果a10*b00进行运算,得到第三运算结 果c10=a10*b00+a11*b10,并将第三运算结果c10发送至存储装置1902;计算装置1905 将第一运算结果a10*b01和第二运算结果a11*b11进行运算,得到第三运算结果c11=a10*b01+a11*b11,并将第三运算结果c11发送至存储装置1902。
[0232] 在其中一个实施例中,如图27所示,提供了一种片上网络数据处理方法,该方法包括以 下步骤:
[0233] 步骤402,通过第一计算装置组访问存储装置,获取第一运算数据,其中,所述第一计 算装置组包括多个第一计算装置。
[0234] 其中,第一计算装置组cluster1中的每一第一计算装置包括:运算单元以及控制器单元; 运算单元包括:一个主处理电路和多个从处理电路。具体地,cluster1中的控制器单元从存储 装置中获取第一运算数据以及计算指令。
[0235] 可选的,cluster1中的多个第一计算装置同时访问存储装置,每一第一计算装置从存储装 置中读取cluster1所需要的一部分数据,这些数据在cluster1内进行数据传输。可选的,指定 cluster1中的一个或多个第一计算装置可以访问存储装置,其余第一计算装置仅能进行组内通 信。
[0236] 步骤404,通过所述第一计算装置组对所述多个第一运算数据进行运算,得到第一运算 结果。
[0237] 其中,多个第一运算数据根据相应的计算指令在多个第一计算装置之间进行运算、转发, 得到第一运算结果。
[0238] 步骤406,将所述第一运算结果发送至第二计算装置组。
[0239] 其中,cluster1通过与第二计算装置组cluster2之间建立的通信通道,通过cluster1中的 控制器单元将第一运算结果发送至cluster2。
[0240] 可选的,可以将第一运算结果发送至cluster2,也可以将第一运算结果发送至存储装置。 可选的,通过cluster1中任意一个与cluster2之间建立的通信通道的第一计算装置,将第一运 算结果发送至cluster2。可选的,cluster1可以将第一运算结果发送至cluster2中任意一个与 cluster1之间建立通信通道的第二计算装置。
[0241] 进一步,本实施例提供的片上网络数据处理方法,可以应用于如图6-8所示的任意一个 片上网络处理系统中。
[0242] 上述片上网络数据处理方法,多个计算装置组之间既能实现组内通信,又能实现组间数 据传输,该方法能够使运算数据以及中间运算结果得到合理的利用,提高了数据处理的效率。
[0243] 在其中一个实施例中,如图28所示,提供了一种片上网络数据处理方法,该方法包括以 下步骤:
[0244] 步骤502,通过第一计算装置组访问存储装置,获取第一运算数据,其中,所述第一计 算装置组包括多个第一计算装置。
[0245] 其中,第一计算装置组cluster1中的每一第一计算装置包括:运算单元以及控制器单元; 运算单元包括:一个主处理电路和多个从处理电路。具体地,cluster1中的控制器单元从存储 装置中获取第一运算数据以及计算指令。
[0246] 可选的,cluster1中的多个第一计算装置同时访问存储装置,每一第一计算装置从存储装 置中读取cluster1所需要的一部分数据,这些数据在cluster1内进行数据传输。可选的,指定 cluster1中的一个或多个第一计算装置可以访问存储装置,其余第一计算装置仅能进行组内通 信。
[0247] 步骤504,通过所述第一计算装置组对所述多个第一运算数据进行运算,得到第一运算 结果。
[0248] 其中,多个第一运算数据根据相应的计算指令在多个第一计算装置之间进行运算、转发, 得到第一运算结果。
[0249] 步骤506,将所述第一运算结果发送至第二计算装置组。
[0250] 其中,cluster1通过与第二计算装置组cluster2之间建立的通信通道,通过cluster1中的 控制器单元将第一运算结果发送至cluster2。
[0251] 可选的,通过cluster1中任意一个与cluster2之间建立的通信通道的第一计算装置,将第 一运算结果发送至cluster2。可选的,cluster1可以将第一运算结果发送至cluster2中任意一个 与cluster1之间建立通信通道的第二计算装置。
[0252] 步骤508,通过所述第二计算装置组访问所述存储装置,获取第二运算数据,其中,所 述第二计算装置组包括多个第二计算装置。
[0253] 其中,cluster2中的每一第一计算装置包括:运算单元以及控制器单元;运算单元包括: 一个主处理电路和多个从处理电路。具体地,cluster2中的控制器单元从存储装置中获取第二 运算数据以及计算指令。
[0254] 可选的,cluster2中的多个第二计算装置同时访问存储装置,每一第二计算装置从存储装 置中读取cluster2所需要的一部分数据,这些数据在cluster2内进行数据传输。可选的,指定 cluster2中的一个或多个第二计算装置可以访问存储装置,其余第二计算装置仅能进行组内通 信。
[0255] 步骤510,通过所述第二计算装置组将所述第二运算数据和所述第一运算结果进行运算, 得到第二运算结果。
[0256] 其中,将从存储装置中读取的第二运算数据和从第一计算装置组中接收的第一运算结果, 根据相应的计算指令在多个第二计算装置之间进行运算、转发,得到第二运算结果。
[0257] 进一步,本实施例提供的片上网络数据处理方法,可以应用于如图6-8所示的任意一个 片上网络处理系统中。
[0258] 上述片上网络数据处理方法,通过将第一计算装置组中的第一运算结果发送至第二计算 装置组,第二计算装置组利用该第一运算结果进行再次运算,能够实现运算数据的复用,该 方法能够使运算数据以及中间运算结果得到合理的利用,提高了数据处理的效率。
[0259] 在其中一个实施例中,如图29所示,提供了一种片上网络数据处理方法,该方法包括以 下步骤:
[0260] 步骤602,通过第一片上网络处理模块获取第一运算数据,其中,所述第一片上网络处 理模块包括第一存储装置以及多个第一计算装置,所述第一运算数据存储于所述第一存储装 置中。
[0261] 其中,第一片上网络处理模块中的每一第一计算装置包括:运算单元以及控制器单元; 运算单元包括:一个主处理电路和多个从处理电路。具体地,第一片上网络处理模块中的控 制器单元从第一存储装置中获取第一运算数据以及计算指令。
[0262] 可选的,第一片上网络处理模块中的多个第一计算装置同时访问第一存储装置,每一第 一计算装置从第一存储装置中读取该第一片上网络处理模块所需要的一部分数据,这些数据 在第一片上网络处理模块内进行数据传输。
[0263] 可选的,指定第一片上网络处理模块中的一个或多个第一计算装置可以访问第一存储装 置,其余第一计算装置仅能进行组内通信。具体地,第一片上网络处理模块所需要处理的运 算数据均存储于第一存储装置中。
[0264] 步骤604,通过所述第一片上网络处理模块中的多个第一计算装置,对所述第一运算数 据进行运算,得到第一运算结果。
[0265] 其中,多个第一运算数据根据相应的计算指令在多个第一计算装置之间进行运算、转发, 得到第一运算结果。
[0266] 步骤606,将所述第一运算结果发送至第二片上网络处理模块。
[0267] 其中,第一片上网络处理模块通过与第二片上网络处理模块之间建立的通信通道,通过 第一片上网络处理模块中的控制器单元将第一运算结果发送至第二片上网络处理模块。
[0268] 可选的,可以将第一运算结果发送至第二片上网络处理模块,也可以将第一运算结果发 送至第一存储装置。可选的,通过第一片上网络处理模块中任意一个与第二片上网络处理模 块之间建立的通信通道的第一计算装置,将第一运算结果发送至第二片上网络处理模块。可 选的,第一片上网络处理模块可以将第一运算结果发送至第二片上网络处理模块中任意一个 与第一片上网络处理模块之间建立通信通道的第二计算装置。
[0269] 进一步,本实施例提供的片上网络数据处理方法,可以应用于如图9-12所示的任意一个 片上网络处理系统中。
[0270] 上述片上网络数据处理方法,多个片上网络处理模块之间既能实现模块内通信,又能实 现模块间数据传输,该方法能够使运算数据以及中间运算结果得到合理的利用,提高了数据 处理的效率。
[0271] 在其中一个实施例中,如图30所示,提供了一种片上网络数据处理方法,该方法包括以 下步骤:
[0272] 步骤702,通过第一片上网络处理模块获取第一运算数据,其中,所述第一片上网络处 理模块包括第一存储装置以及多个第一计算装置,所述第一运算数据存储于所述第一存储装 置中。
[0273] 其中,第一片上网络处理模块中的每一第一计算装置包括:运算单元以及控制器单元; 运算单元包括:一个主处理电路和多个从处理电路。具体地,第一片上网络处理模块中的控 制器单元从第一存储装置中获取第一运算数据以及计算指令。
[0274] 可选的,第一片上网络处理模块中的多个第一计算装置同时访问第一存储装置,每一第 一计算装置从第一存储装置中读取该第一片上网络处理模块所需要的一部分数据,这些数据 在第一片上网络处理模块内进行数据传输。
[0275] 可选的,指定第一片上网络处理模块中的一个或多个第一计算装置可以访问第一存储装 置,其余第一计算装置仅能进行组内通信。具体地,第一片上网络处理模块所需要处理的运 算数据均存储于第一存储装置中。
[0276] 步骤704,通过所述第一片上网络处理模块中的多个第一计算装置,对所述第一运算数 据进行运算,得到第一运算结果。
[0277] 其中,多个第一运算数据根据相应的计算指令在多个第一计算装置之间进行运算、转发, 得到第一运算结果。
[0278] 步骤706,将所述第一运算结果发送至第二片上网络处理模块。
[0279] 其中,第一片上网络处理模块通过与第二片上网络处理模块之间建立的通信通道,通过 第一片上网络处理模块中的控制器单元将第一运算结果发送至第二片上网络处理模块。
[0280] 可选的,通过第一片上网络处理模块中任意一个与第二片上网络处理模块之间建立的通 信通道的第一计算装置,将第一运算结果发送至第二片上网络处理模块。可选的,第一片上 网络处理模块可以将第一运算结果发送至第二片上网络处理模块中任意一个与第一片上网络 处理模块之间建立通信通道的第二计算装置。
[0281] 步骤708,通过所述第二片上网络处理模块获取第二运算数据,其中,所述第二片上网 络处理模块包括第二存储装置以及多个第二计算装置,所述第二运算数据存储于所述第二存 储装置中。
[0282] 其中,第二片上网络处理模块中的每一第二计算装置包括:运算单元以及控制器单元; 运算单元包括:一个主处理电路和多个从处理电路。具体地,第二片上网络处理模块中的控 制器单元从第二存储装置中获取第二运算数据以及计算指令。
[0283] 可选的,第二片上网络处理模块中的多个第二计算装置同时访问第二存储装置,每一第 二计算装置从第二存储装置中读取该第二片上网络处理模块所需要的一部分数据,这些数据 在第二片上网络处理模块内进行数据传输。
[0284] 可选的,指定第二片上网络处理模块中的一个或多个第二计算装置可以访问第二存储装 置,其余第二计算装置仅能进行组内通信。具体地,第二片上网络处理模块所需要处理的运 算数据均存储于第二存储装置中。
[0285] 步骤710,通过所述第二片上网络处理模块中的多个第二计算装置,对所述第二运算数 据和所述第一运算结果进行运算,得到第二运算结果。
[0286] 其中,步骤710具体包括以下步骤:
[0287] 步骤7102,将所述第二运算数据和所述第一运算结果在所述多个第二计算装置之间进行 运算,得到所述第二运算结果。
[0288] 具体地,每一第二计算装置可以根据相应的计算指令,将第二运算数据和第一运算结果 进行运算,得到多个中间结果,接着根据相应的计算指令对多个中间结果进行运算,得到第 二运算结果。
[0289] 步骤7104,将所述第二运算结果存储至所述第二存储装置。
[0290] 进一步,本实施例提供的片上网络数据处理方法,可以应用于如图9-12所示的任意一个 片上网络处理系统中。
[0291] 上述片上网络数据处理方法,通过将第一片上网络处理系统中的第一运算结果发送至第 二片上网络处理系统,第二片上网络处理系统利用该第一运算结果进行再次运算,能够实现 运算数据的复用,该方法能够使运算数据以及中间运算结果得到合理的利用,提高了数据处 理的效率。
[0292] 本申请实施例中的片上网络处理方法可用于机器学习计算,具体可用于人工神经网络运 算,其中,片上网络处理系统中的运算数据具体可以包括:输入神经元数据和权值数据,片 上网络处理系统中的运算结果具体可以为:人工神经网络运算的结果,即输出神经元数据。
[0293] 对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过 程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单 元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某 些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中, 当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输 入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些 操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
[0294] 上述机器学习计算还可以包括
支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means) 运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学 习计算的具体方案。
[0295] 对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经 元和输出神经元并非是指整个神经网络的
输入层中神经元和
输出层中神经元,而是对于网络 中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算 上层中的神经元即为输出神经元。以
卷积神经网络为例,设一个卷积神经网络有L层, K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为 所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外, 每一层都可以作为输入层,其下一层为对应的输出层。
[0296] 在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b), 其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid 函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电 路,其实现的方法可以为:
[0297] 控制器单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将 输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
[0298] 主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值 矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入 神经元矩阵x广播给8个从处理电路,
[0299] 从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中 间结果,将8个中间结果发送给主处理电路;
[0300] 主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b 的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元,控制器单元将该 最终结果y输出或存储至存储单元内。
[0301] 如图1所示的计算装置执行神经网络正向运算指令的方法具体可以为:
[0302] 控制器单元从指令存储单元内提取神经网络正向运算指令、神经网络运算指令对应的操 作域以及至少一个操作码,控制器单元将该操作域传输至数据访问单元,将该至少一个操作 码发送至运算单元。
[0303] 控制器单元从存储单元内提取该操作域对应的权值w和偏置b(当b为0时,不需要提 取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制器单元从存储单元内提取 输入数据Xi,将该输入数据Xi发送至主处理电路。
[0304] 主处理电路依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定 权值数据为分发数据,将权值w拆分成n个数据块;
[0305] 控制器单元的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令, 将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据 Xi以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具 有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘 法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至 主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算 得到累加结果,依据该偏置指令将该累加结果执行加偏置b得到最终结果,将该最终结果发 送至该控制器单元。
[0306] 另外,加法运算和乘法运算的顺序可以调换。
[0307] 本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算 以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及 提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
[0308] 应该理解的是,虽然图25-30的
流程图中的各个步骤按照箭头的指示依次显示,但是这 些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执 行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图25-30中的至少一部 分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行 完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行, 而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0309] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动 作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据 本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说 明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0310] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可 以参见其他实施例的相关描述。
[0311] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。 例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功 能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到 另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或 直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性 或其它的形式。
[0312] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部 件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元 上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0313] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个 单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以 采用
硬件的形式实现,也可以采用
软件程序模块的形式实现。
[0314] 所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以 存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现 有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计 算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算 机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的 存储器包括:U盘、
只读存储器(ROM,Read-Only Memory)、
随机存取存储器(RAM,Random Access Memory)、移动
硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0315] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程 序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括: 闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
[0316] 以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方 式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对 于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之 处,综上所述,本说明书内容不应理解为对本申请的限制。