基于数据流的数据缓存器、数据处理方法及人工智能芯片与流程
未命名
10-18
阅读:88
评论:0
1.本公开涉及人工智能技术领域,尤其是一种基于数据流的数据缓存器、数据处理方法及人工智能芯片。
背景技术:
2.随着人工智能技术的发展,各种人工智能算法已经被广泛地应用于各行各业。人工智能算法的一个显著特点是需要使用大量的计算资源对大量的输入数据进行海量的计算以得到最后的结果,然而,完成这些计算的前提是存储计算所需数据的存储器能够持续输出大量的数据给计算电路用于计算。
3.相关技术中,通常采用基于指令集的数据缓存器存储并输出执行计算所需的大量数据。
技术实现要素:
4.发明人注意到,相关技术中,数据处理的效率较低。
5.经分析,发明人发现,这种基于指令集的数据缓存器基于一条读取指令只能读取一份数据,因此,在执行一次计算任务所需要的数据是多份不同的数据的情况下,基于指令集的数据缓存器只有基于当前指令读取一份数据之后,才能基于下一条指令读取下一份数据。这种串行的数据读取方式导致数据处理的效率较低。
6.为了解决上述问题,本公开实施例提出了如下解决方案。
7.根据本公开实施例的一方面,提供一种基于数据流的数据缓存器,包括:多个存储体,不同存储体被配置为存储不同的数据;数据读取电路,被配置为接收计算任务对应的读控制信号和读地址,在所述读控制信号对应第一读取模式的情况下,基于所述读控制信号从所述多个存储体中确定n个存储体,并基于所述读地址从所述n个存储体中并行地读取执行所述计算任务所需的第一数据,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。
8.在一些实施例中,所述读地址包括寻址地址和片选地址,所述数据读取电路被配置为基于所述寻址地址读取所述第一数据。
9.在一些实施例中,所述数据读取电路还被配置为在所述读控制信号对应第二读取模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址从所述一个存储体中读取执行所述计算任务所需的第二数据。
10.在一些实施例中,在所述计算任务为卷积计算的情况下,所述读控制信号对应所述第一读取模式。
11.在一些实施例中,在所述计算任务为神经网络算法中的标准卷积计算的情况下,每份数据包括一个卷积核中的部分数据。
12.在一些实施例中,在所述计算任务为神经网络算法中的深度可分卷积计算的情况下,每份数据包括一个通道的特征图中的部分数据。
13.在一些实施例中,在所述计算任务为神经网络算法中的双线性插值计算的情况下,所述读控制信号对应所述第二读取模式。
14.在一些实施例中,所述数据缓存器还包括:数据写入电路,被配置为接收所述计算任务对应的写控制信号和写地址,在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号确定所述n个存储体,并基于所述写地址将所述第一数据并行地写入所述n个存储体。
15.根据本公开实施例的另一方面,提供另一种基于数据流的数据缓存器,包括:多个存储体,不同存储体被配置为存储不同的数据;数据写入电路,被配置为接收计算任务对应的写控制信号和写地址,在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号从所述多个存储体中确定n个存储体,并基于所述写地址将执行所述计算任务所需的第一数据并行地写入所述n个存储体,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。
16.在一些实施例中,所述写地址包括寻址地址和片选地址,所述数据写入电路被配置为基于所述寻址地址写入所述第一数据。
17.在一些实施例中,所述数据写入电路还被配置为在所述写控制信号对应第二写入模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址将执行所述计算任务所需的第二数据写入所述一个存储体。
18.在一些实施例中,在所述计算任务为卷积计算的情况下,所述写控制信号对应所述第一写入模式。
19.在一些实施例中,在所述计算任务为神经网络算法中的双线性插值计算的情况下,所述写控制信号对应所述第二写入模式。
20.根据本公开实施例的又一方面,提供一种人工智能芯片,包括:上述任意一个实施例所述的基于数据流的数据缓存器;地址生成单元,被配置为响应于所述计算任务对应的第一驱动信号,生成所述读地址,并将所述读地址发送至所述数据缓存器;以及控制寄存器,被配置为响应于所述计算任务对应的第一配置信号,向所述数据缓存器发送所述读控制信号,并向所述地址生成单元发送所述第一驱动信号。
21.在一些实施例中,所述人工智能芯片还包括:处理电路,被配置为响应于所述控制寄存器发送的所述计算任务对应的第二驱动信号,将所述n份数据中的多份数据发送至计算电路。
22.在一些实施例中,所述数据缓存器还包括数据写入电路,被配置为接收所述计算任务对应的写控制信号和写地址,在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号确定所述n个存储体,并基于所述写地址将所述第一数据并行地写入所述n个存储体;所述地址生成单元还被配置为响应于所述计算任务对应的第三驱动信号,生成所述写地址,并将所述写地址发送至所述数据缓存器;所述控制寄存器还被配置为响应于所述计算任务对应的第二配置信号,向所述数据缓存器发送所述写控制信号,并向所述地址生成单元发送所述第三驱动信号。
23.根据本公开实施例的再一方面,提供另一种人工智能芯片,包括:上述任意一个实施例所述的基于数据流的数据缓存器;地址生成单元,被配置为响应于所述计算任务对应的第三驱动信号,生成所述写地址,并将所述写地址发送至所述数据缓存器;以及控制寄存
器,被配置为响应于所述计算任务对应的第二配置信号,向所述数据缓存器发送所述写控制信号,并向所述地址生成单元发送所述第三驱动信号。
24.在一些实施例中,所述人工智能芯片还包括:直接存储器访问模块,被配置为响应于所述控制寄存器发送的所述计算任务对应的第四驱动信号,从片外存储器获取执行所述计算任务所需的数据;其中,所述数据写入电路被配置为从所述所需的数据中获取所述第一数据,并将所述第一数据并行地写入所述n个存储体。
25.根据本公开实施例的还一方面,提供一种基于数据流的数据处理方法,包括:接收计算任务对应的读控制信号和读地址;在所述读控制信号对应第一读取模式的情况下,基于所述读控制信号从多个存储体中确定n个存储体,并基于所述读地址从所述n个存储体中并行地读取执行所述计算任务所需的第一数据,所述多个存储体中的不同存储体中存储有不同的数据,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。
26.在一些实施例中,所述读地址包括寻址地址和片选地址,所述基于所述读地址从所述n个存储体中并行地读取执行所述计算任务所需的第一数据包括:基于所述寻址地址读取所述第一数据。
27.在一些实施例中,所述方法还包括:在所述读控制信号对应第二读取模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址从所述一个存储体中读取执行所述计算任务所需的第二数据。
28.在一些实施例中,所述方法还包括:接收所述计算任务对应的写控制信号和写地址;在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号确定所述n个存储体,并基于所述写地址将所述第一数据并行地写入所述n个存储体。
29.根据本公开实施例的还一方面,提供另一种基于数据流的数据处理方法,包括:接收计算任务对应的写控制信号和写地址;在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号从多个存储体中确定n个存储体,并基于所述写地址将执行所述计算任务所需的第一数据并行地写入所述n个存储体,所述多个存储体中的不同存储体中存储有不同的数据,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。
30.在一些实施例中,所述写地址包括寻址地址和片选地址,所述基于所述写地址将执行所述计算任务所需的第一数据并行地写入所述n个存储体包括:基于所述寻址地址写入所述第一数据。
31.在一些实施例中,所述方法还包括:在所述写控制信号对应第二写入模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址将执行所述计算任务所需的第二数据写入所述一个存储体。
32.根据本公开实施例的还一方面,提供一种加速器,包括上述任意一个实施例所述的人工智能芯片。
33.本公开实施例中,基于数据流的数据缓存器可以包括数据读取电路和多个存储体,数据读取电路可以根据接收的一个读地址从至少两个存储体中并行地读取执行计算任务所需的至少两份数据。如此,基于数据流的数据缓存器基于一个读地址便可以从多个存储体中并行地读取执行计算任务所需的多份不同的数据,提高了数据读取的效率,从而提高了数据处理的效率。
34.下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
35.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1是根据本公开一些实施例的基于数据流的数据缓存器的结构示意图;
37.图2是根据本公开另一些实施例的基于数据流的数据缓存器的结构示意图;
38.图3是根据本公开又一些实施例的基于数据流的数据缓存器的结构示意图;
39.图4a和图4b是根据本公开一些实施例的标准卷积计算的数据处理示意图;
40.图5是根据本公开一些实施例的深度可分卷积计算的数据处理示意图;
41.图6是根据本公开一些实施例的人工智能芯片的结构示意图;
42.图7是根据本公开一些实施例的基于数据流的数据处理方法的流程示意图;
43.图8是根据本公开另一些实施例的基于数据流的数据处理方法的流程示意图。
具体实施方式
44.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
45.除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
46.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
47.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
48.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
49.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
50.图1是根据本公开一些实施例的基于数据流的数据缓存器的结构示意图。
51.如图1所示,基于数据流的数据缓存器(data buffer,db)100可以包括多个存储体(bank)11和数据读取电路12。
52.多个存储体11中的不同存储体11可以被配置为存储不同的数据。
53.数据读取电路12可以被配置为接收计算任务对应的读控制信号和读地址,并且可以被配置为在读控制信号对应第一读取模式的情况下,基于读控制信号从多个存储体11中确定n个存储体11,并基于读地址从n个存储体11中并行地读取执行计算任务所需的第一数据。
54.这里,第一数据可以包括与n个存储体11一一对应的n份数据。n≥2,n为正整数。应理解,n份数据可以彼此不同。
55.还应理解,n小于或等于多个存储体11的数量。n的值可以根据执行计算任务所需的数据量灵活配置。
56.在一些实施例中,数据读取电路12接收的读地址可以包括寻址地址和片选地址。例如,片选地址可以是读地址的最高位,寻址地址可以由读地址中除最高位之外的其他位组成。
57.在读控制信号对应第一读取模式的情况下,数据读取电路12可以被配置为基于寻址地址从n个存储体11中并行地读取执行计算任务所需的第一数据。
58.例如,在读控制信号对应第一读取模式的情况下,数据读取电路12可以生成n个读使能信号并将n个读使能信号一一对应发送至所确定的n个存储体11。在这n个存储体11被读使能的情况下,数据读取电路12可以基于读地址中的寻址地址从这n个存储体11中并行地读取执行计算任务所需的第一数据。
59.应理解,一个寻址地址可以对应多个不同的存储体11。例如,多个不同的存储体11中的相同位置处的存储空间对应的寻址地址可以相同。
60.在某些情况下,数据读取电路12接收的读控制信号可以对应其他读取模式。在不同的读取模式下,数据读取电路12读取数据的方式可以不同。后文将对此进行具体介绍。
61.上述实施例中,基于数据流的数据缓存器可以包括数据读取电路和多个存储体,数据读取电路可以根据接收的一个读地址从至少两个存储体中并行地读取执行计算任务所需的至少两份数据。如此,基于数据流的数据缓存器基于一个读地址便可以从多个存储体中并行地读取执行计算任务所需的多份不同的数据,提高了数据读取的效率,从而提高了数据处理的效率。
62.在一些实施例中,数据读取电路12还可以被配置为在读控制信号对应第二读取模式的情况下,基于片选地址从多个存储体11中确定一个存储体11,并基于寻址地址从这一个存储体11中读取执行计算任务所需的第二数据。
63.例如,在读控制信号对应第二读取模式的情况下,数据读取电路12可以生成一个读使能信号并将这个读使能信号发送至所确定的存储体11。在这个存储体11被读使能的情况下,数据读取电路12可以基于读地址中的寻址地址读取执行计算任务所需的第二数据。
64.如此,基于数据流的数据缓存器不仅可以支持从多个存储体中并行地读取多份不同数据的读取模式,还可以支持仅从一个存储体中读取数据的读取模式,提高了基于数据流的数据缓存器的通用性。
65.图2是根据本公开另一些实施例的基于数据流的数据缓存器的结构示意图。
66.如图2所示,基于数据流的数据缓存器200可以包括多个存储体11和数据写入电路13。
67.多个存储体11中的不同存储体11可以被配置为存储不同的数据。
68.数据写入电路13可以被配置为接收计算任务对应的写控制信号和写地址,并且可以被配置为在写控制信号对应第一写入模式的情况下,基于写控制信号从多个存储体11中确定n个存储体11,并基于写地址将执行计算任务所需的第一数据并行地写入n个存储体11。
69.这里,第一数据可以包括与n个存储体11一一对应的n份数据。n≥2,n为正整数。应理解,n份数据可以彼此不同。
70.还应理解,n小于或等于多个存储体11的数量。n的值可以根据执行计算任务所需的数据量灵活配置。
71.在一些实施例中,数据写入电路13接收的写地址可以包括寻址地址和片选地址。例如,片选地址可以是写地址的最高位,寻址地址可以由写地址中除最高位之外的其他位组成。
72.在写控制信号对应第一写入模式的情况下,数据写入电路13可以被配置为基于寻址地址将执行计算任务所需的第一数据并行地写入n个存储体11,以便n个存储体11中每个存储体的寻址地址处均存储有对应的一份数据。
73.例如,在写控制信号对应第一写入模式的情况下,数据写入电路13可以生成n个写使能信号并将n个写使能信号一一对应发送至这n个存储体11,在这n个存储体11被写使能的情况下,数据写入电路13可以基于写地址中的寻址地址将执行计算任务所需的第一数据并行地写入这个n个存储体11。
74.在某些情况下,数据写入电路13接收的写控制信号可以对应其他写入模式。在不同的写入模式下,数据写入电路13写入数据的方式可以不同。后文将对此进行介绍。
75.上述实施例中,基于数据流的数据缓存器可以基于一个写地址将执行计算任务所需的多份不同的数据并行地写入多个存储体,提高了数据写入的效率,从而提高了数据处理的效率。
76.在一些实施例中,数据写入电路13还可以被配置为在写控制信号对应第二写入模式的情况下,基于片选地址从多个存储体11中确定一个存储体11,并基于寻址地址将执行计算任务所需的第二数据写入这一个存储体11。
77.例如,在写控制信号对应第二写入模式的情况下,数据写入电路13可以生成一个写使能信号并将这个写使能信号发送至这个存储体11。在这个存储体11被写使能的情况下,数据写入电路13可以基于写地址中的寻址地址将执行计算任务所需的第二数据写入这个存储体11。
78.如此,基于数据流的数据缓存器不仅可以支持将执行计算任务所需的多份不同的数据并行地写入多个存储体的写入模式,还可以支持仅将这多份不同的数据中的一份数据写入一个存储体的写入模式,进一步提高了基于数据流的数据缓存器的通用性。
79.图3是根据本公开又一些实施例的基于数据流的数据缓存器的结构示意图。
80.如图3所示,基于数据流的数据缓存器300可以包括多个存储体11、数据读取电路12和数据写入电路13。
81.多个存储体11、数据读取电路12和数据写入电路13的具体说明可以参见前述基于数据流的数据缓存器100/200的相关实施例,在此不再赘述。
82.在这种方式下,基于数据流的数据缓存器不仅可以基于一个写地址将执行计算任务所需的多份不同的数据并行地写入多个存储体,还可以基于一个读地址从多个存储体中并行地读取执行计算任务所需的多份不同的数据。如此,不仅提高了数据写入的效率,还提高了数据读取的效率,从而进一步提高了数据处理的效率。
83.在一些实施例中,基于数据流的数据缓存器不仅可以支持多种写入模式,还可以支持多种读取模式,更进一步提高了基于数据流的数据缓存器的通用性。
84.在一些实施例中,在计算任务为卷积计算的情况下,数据读取电路12接收的读控
制信号可以对应第一读取模式。如此,可以提高卷积计算的运算过程中的数据读取效率,从而提高卷积计算的运算过程中的数据处理效率。
85.在一些实施例中,在计算任务为卷积计算的情况下,数据写入电路13接收的写控制信号可以对应第一写入模式。如此,可以提高卷积计算的运算过程中的数据写入效率,从而提高卷积计算的运算过程中的数据处理效率。
86.在一些实施例中,计算任务可以是神经网络算法中的标准卷积计算、深度可分卷积计算或者双线性插值计算。下面结合一些实施例对计算任务是不同类型的计算的情况分别进行说明。
87.首先介绍计算任务为神经网络算法中的标准卷积计算的情况。
88.在一些实施例中,在计算任务为神经网络算法中的标准卷积计算的情况下,数据读取电路12接收的读控制信号可以对应第一读取模式。
89.在一些实施例中,在计算任务为神经网络算法中的标准卷积计算的情况下,数据写入电路13接收的写控制信号可以对应第一写入模式。
90.在一些实施例中,写入n个存储体11的n份数据中的每份数据(或者从n个存储体11中读取的n份数据中的每份数据)可以包括一个卷积核中的部分数据。例如,卷积核中的数据包括w(行)
×
h(列)
×
c(通道)的矩阵中的元素,每份数据(即卷积核中的部分数据)可以包括1(行)
×
1(列)
×
p(通道)的矩阵中的元素,p为寻址地址对应的存储空间中最多可以存储的元素的数量,w≥1,h≥1,p≥1,c≥1,w、h、p和c均为正整数。
91.为便于理解,下面结合图4所示的实施例对第一写入模式和第一读取模式进行说明。图4a和图4b是根据本公开一些实施例的标准卷积计算的数据处理示意图。
92.如图4a所示,图4a示意性地示出了3个卷积核和3个存储体11。每个卷积核为3
×3×
3的矩阵,即包括3个3
×
3矩阵。每个存储体11中相同位置的存储空间对应的寻址地址(如图4a中所示的addr1~addrk,k≥1)相同。
93.在第一写入模式下,数据写入电路13可以根据写控制信号确定3个存储体11,并根据写地址中的寻址地址将3个卷积核中的数据一一对应地写入这3个存储体11,以便这3个存储体11中一一对应地存储有这3个卷积核中的数据。
94.以将第一个卷积核中的数据写入第一个存储体11为例,如图4b所示,第一个卷积核中的数据包括3个3
×
3矩阵中的所有元素。为便于描述,用数字1-9表示每个3
×
3矩阵中的9个元素一一对应的9个位置。
95.作为一些实现方式,可以将第一个卷积核的3个3
×
3矩阵中相同位置对应的3个元素(即1
×1×
3的矩阵)作为一份数据,按照先逐行后逐列的顺序将第一个卷积核的所有元素全部写入对应的第一个存储体11中。
96.例如,数据写入电路13可以先将每个3
×
3矩阵中第1行第1列(即数字1位置)对应的3个元素作为一份数据写入第一个存储体11的寻址地址addr1对应的存储空间中;然后可以将每个3
×
3矩阵中第1行第2列(即数字2位置)对应的3个元素作为一份数据写入第一个存储体11的寻址地址addr2对应的存储空间中;接着可以将每个3
×
3矩阵中第1行第3列(即数字3位置)对应的3个元素作为一份数据写入第一个存储体11的寻址地址addr3对应的存储空间中。如此,便可以将每个3
×
3矩阵中第1行对应的所有元素均写入第一个存储体11中。
97.类似地,接下来可以将每个3
×
3矩阵中数字4位置对应的3个元素作为一份数据写入第一个存储体11的寻址地址addr4对应的存储空间中。按此次序类推,直至将3个3
×
3矩阵中的所有元素均写入第一个存储体11中。
98.由于p为寻址地址对应的存储空间中最多可以存储的元素的数量,如果p≤c且c为p的整数倍,那么每次可以写入一个位置对应的c个元素中的p个元素(即一份数据),直至该位置对应的c个元素全部写入后再写下一个位置对应的c个元素;如果p<c且c不为p的整数倍,当执行[c/p](即对c/p取整)次写入后,最后剩余元素的数量小于p,那么写入该剩余元素时多出的存储空间可以选择写入0进行填充或者空置;如果p>c,那么写入一个位置对应的c个元素后多出的存储空间也可以选择写入0进行填充或者空置。
[0099]
需要说明的是,考虑到卷积计算的过程中卷积核中数据的位置需要与特征图中数据的位置保持严格的对应,相对于在一个寻址地址对应的存储空间中多出的部分空间内继续存储另一位置的数据的方式,选择空置或者写入0的方式可以避免后续将数据输出给计算电路执行计算之前,还需要根据数据的位置对从一个寻址地址处读出的数据进行分离,减少了数据处理的复杂度。
[0100]
应理解,由于每个存储体11中相同位置的存储空间对应的寻址地址相同,在将第一个卷积核中的部分数据(即一份数据,例如第一个卷积核中每个3
×
3矩阵的数字1位置对应的3个元素)写入第一个存储体11的寻址地址(例如addr1)对应的存储空间中的过程中,数据写入电路13可以将第二个卷积核中的部分数据(即另一份数据,例如第二个卷积核中每个3
×
3矩阵的数字1位置对应的3个元素)并行地写入第二个存储体11的寻址地址(例如addr1)对应的存储空间中,从而在第一写入模式下,数据写入电路13只需接收一个写地址便可以将多份数据并行地写入一一对应的多个存储体11中。
[0101]
在第一读取模式下,数据读取电路12可以根据读控制信号确定存储有3个卷积核中的数据的3个存储体11,并根据读地址中的寻址地址从这3个存储体11中读取3个卷积核中的数据。例如,对于一次读取而言,数据读取电路12可以根据寻址地址addr1从3个存储体11中并行地读取3个卷积核中的3份数据,其中,每份数据可以包括一个卷积核中的部分数据(例如第一个卷积核的3个3
×
3矩阵中数字1位置对应的3个元素)。
[0102]
接下来介绍计算任务为神经网络算法中的深度可分卷积计算的情况。
[0103]
在一些实施例中,在计算任务为神经网络算法中的深度可分卷积计算的情况下,数据读取电路12接收的读控制信号可以对应第一读取模式。
[0104]
在一些实施例中,在计算任务为神经网络算法中的深度可分卷积计算的情况下,数据写入电路13接收的写控制信号可以对应第一写入模式。
[0105]
在一些实施例中,写入n个存储体11的n份数据中的每份数据(或者从n个存储体11中读取的n份数据中的每份数据)可以包括一个通道的特征图中的部分数据。例如,一个通道的特征图中的数据包括w(行)
×
h(列)矩阵中的元素,每份数据(即一个通道的特征图中的部分数据)可以包括1(行)
×
p(列)的矩阵或者p(行)
×
1(列)的矩阵中的元素。
[0106]
为便于理解,下面结合图5所示实施例对第一写入模式和第一读取模式进行说明。图5是根据本公开一些实施例的深度可分卷积计算的数据处理示意图。
[0107]
如图5所示,图5示意性地示出了3个通道的特征图和3个存储体11。每个通道的特征图为3
×
4矩阵,每个通道的特征图中的数据包括3
×
4矩阵中的所有元素。每个存储体11
中相同位置的存储空间对应的寻址地址(如图5中所示的addr1~addrk,k≥1)相同。
[0108]
在第一写入模式下,数据写入电路13可以根据写控制信号确定3个存储体11,并根据写地址中的寻址地址将3个通道的特征图中的数据一一对应地写入这3个存储体11,以便这3个存储体11中一一对应地存储有这3个通道的特征图中的数据。
[0109]
作为一些实现方式,针对每个通道的特征图(即每个3
×
4矩阵),可以按照先逐行后逐列的顺序将该通道的特征图中的数据(即3
×
4个元素)全部写入对应的一个存储体11中。这种方式下,每份数据可以包括1(行)
×
p(列)的矩阵中的元素。
[0110]
以将第一个通道的特征图中的数据写入第一个存储体11为例,数据写入电路13可以先将第一个3
×
4矩阵中第一行的4个元素作为一份数据写入第一个存储体11的寻址地址addr1对应的存储空间中;然后可以将该矩阵中第二行的4个元素作为一份数据写入第一个存储体11的寻址地址addr2对应的存储空间中;最后将该矩阵中第三行的4个元素作为一份数据写入第一个存储体11的寻址地址addr3对应的存储空间中。如此,即可以将第一个3
×
4矩阵中3
×
4个元素全部写入第一个存储体11中。
[0111]
类似地,由于p为寻址地址对应的存储空间中最多可以存储的元素的数量,这种方式下,如果p≤h且h为p的整数倍,那么每次可以写入一行对应的h个元素中的p个元素(即一份数据),直至该行对应的h个元素全部写入后再写下一行对应的h个元素;如果p<h且h不为p的整数倍,当执行[h/p](即对h/p取整)次写入后,最后剩余元素的数量小于p,那么写入该剩余元素时多出的存储空间可以选择写入0进行填充或者空置;如果p>h,那么写入一行对应的h个元素后多出的存储空间也可以选择写入0进行填充或者空置。
[0112]
应理解,由于每个存储体11中相同位置的存储空间对应的寻址地址相同,在第一个3
×
4矩阵中第一行的4个元素作为一份数据写入第一个存储体11的寻址地址addr1对应的存储空间中的过程中,数据写入电路13可以将第二个3
×
4矩阵中第一行的4个元素作为另一份数据并行地写入第二个存储体11的寻址地址addr1对应的存储空间中,从而在第一写入模式下,数据写入电路13只需接收一个写地址便可以将多份数据并行地写入一一对应的多个存储体11中。
[0113]
在第一读取模式下,数据读取电路12可以根据读控制信号确定存储有3个通道的特征图中的数据的3个存储体11,并根据读地址中的寻址地址从这3个存储体11中读取3个通道的特征图中的数据。例如,对于一次读取而言,数据读取电路12可以根据寻址地址addr1从3个存储体11中并行地读取3个通道的特征图中的3份数据,其中,每份数据可以包括每个通道的特征图中的部分数据(例如第一行的元素)。
[0114]
下面介绍计算任务为神经网络算法中的双线性插值计算的情况。
[0115]
在一些实施例中,在计算任务为神经网络算法中的双线性插值计算的情况下,数据读取电路12接收的读控制信号可以对应第二读取模式。
[0116]
在一些实施例中,在计算任务为神经网络算法中的双线性插值计算的情况下,数据写入电路13接收的写控制信号可以对应第二写入模式。例如,数据写入电路13根据接收的写地址中的片选地址确定的存储体11可以是第一个存储体11,数据写入电路13根据写地址中的寻址地址addr1可以将执行双线性插值计算所需的一份参数写入第一个存储体11的寻址地址addr1对应的存储空间中。
[0117]
图6是根据本公开一些实施例的人工智能芯片的结构示意图。
[0118]
如图6所示,人工智能芯片600可以包括上述任意一个实施例的基于数据流的数据缓存器(例如基于数据流的数据缓存器100/200/300)、地址生成单元(address generation unit,agu)61和控制寄存器(csr)62。
[0119]
在人工智能芯片600包括数据缓存器100/300的情况下,地址生成单元61可以被配置为响应于计算任务对应的第一驱动信号,生成读地址,并将读地址发送至数据缓存器100/300。控制寄存器62可以被配置为响应于计算任务对应的第一配置信号,向数据缓存器100/300发送读控制信号,并向地址生成单元61发送第一驱动信号。
[0120]
在一些实施例中,人工智能芯片600还可以包括处理电路63。处理电路63可以被配置为响应于控制寄存器62发送的计算任务对应的第二驱动信号,将n份数据中的多份数据发送至计算电路。例如,在计算电路执行计算任务仅需3份数据的情况下,处理电路63可以被配置为响应于控制寄存器62发送的计算任务对应的第二驱动信号,从数据缓存器100/200输出的6份数据中抽取3份数据发送至计算电路。
[0121]
在人工智能芯片600包括数据缓存器200/300的情况下,地址生成单元61可以被配置为响应于计算任务对应的第三驱动信号,生成写地址,并将写地址发送至数据缓存器200/300;控制寄存器62可以被配置为响应于计算任务对应的第二配置信号,向数据缓存器200/300发送写控制信号,并向地址生成单元61发送第三驱动信号。
[0122]
在一些实施例中,人工智能芯片600还可以包括直接存储器访问模块(direct memory access,dma)64。直接存储器访问模块64可以被配置为响应于控制寄存器62发送的计算任务对应的第四驱动信号,从片外存储器获取执行计算任务所需的数据。这种情况下,数据缓存器200/300中的数据写入电路可以被配置为从所需的数据中获取第一数据,并将第一数据并行地写入n个存储体。
[0123]
本公开实施例还提供一种加速器,包括上述任意一个实施例的人工智能芯片(例如人工智能芯片600)。
[0124]
下面结合图7至图8说明根据本公开一些实施例的基于数据流的数据处理方法。
[0125]
图7是根据本公开一些实施例的基于数据流的数据处理方法的流程示意图。
[0126]
在步骤702,接收计算任务对应的读控制信号和读地址。
[0127]
在步骤704,在读控制信号对应第一读取模式的情况下,基于读控制信号从多个存储体中确定n个存储体,并基于读地址从n个存储体中并行地读取执行计算任务所需的第一数据。
[0128]
这里,多个存储体中的不同存储体中可以存储有不同的数据,第一数据可以包括与n个存储体一一对应的n份数据,n≥2,n为正整数。
[0129]
在一些实施例中,读地址可以包括寻址地址和片选地址。这种情况下,可以基于读地址中的寻址地址从n个存储体中并行地读取执行计算任务所需的第一数据。
[0130]
在一些实施例中,图7所示的方法还可以包括如下步骤:在读控制信号对应第二读取模式的情况下,基于读地址中的片选地址从多个存储体中确定一个存储体,并基于读地址中的寻址地址从一个存储体中读取执行计算任务所需的第二数据。
[0131]
在一些实施例中,可以采用前述基于数据流的数据缓存器100/300执行图7所示方法中的步骤。
[0132]
图7所示方法的具体说明可以参见图1和图3所示基于数据流的数据缓存器的相关
实施例,在此不再赘述。
[0133]
图8是根据本公开另一些实施例的基于数据流的数据处理方法的流程示意图。
[0134]
在步骤802,接收计算任务对应的写控制信号和写地址。
[0135]
在步骤804,在写控制信号对应第一写入模式的情况下,基于写控制信号从多个存储体中确定n个存储体,并基于写地址将执行计算任务所需的第一数据并行地写入n个存储体。
[0136]
这里,多个存储体中的不同存储体中可以存储有不同的数据,第一数据可以包括与n个存储体一一对应的n份数据,n≥2,n为正整数。
[0137]
在一些实施例中,写地址可以包括寻址地址和片选地址。这种情况下,可以基于写地址中的寻址地址将执行计算任务所需的第一数据并行地写入n个存储体。
[0138]
在一些实施例中,图8所示的方法还可以包括如下步骤:在写控制信号对应第二写入模式的情况下,基于写地址中的片选地址从多个存储体中确定一个存储体,并基于写地址中的寻址地址将执行计算任务所需的第二数据写入一个存储体。
[0139]
在一些实施例中,可以采用前述基于数据流的数据缓存器200/300执行图8所示方法中的步骤。
[0140]
图7所示方法的具体说明可以参见图2和图3所示基于数据流的数据缓存器的相关实施例,在此不再赘述。
[0141]
在一些实施例中,数据处理方法可以包括图7所示的步骤702和步骤704、以及图8所示的步骤802和步骤804。
[0142]
至此,已经详细描述了本公开的各实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
[0143]
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
技术特征:
1.一种基于数据流的数据缓存器,包括:多个存储体,不同存储体被配置为存储不同的数据;数据读取电路,被配置为接收计算任务对应的读控制信号和读地址,在所述读控制信号对应第一读取模式的情况下,基于所述读控制信号从所述多个存储体中确定n个存储体,并基于所述读地址从所述n个存储体中并行地读取执行所述计算任务所需的第一数据,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。2.根据权利要求1所述的数据缓存器,其中,所述读地址包括寻址地址和片选地址,所述数据读取电路被配置为基于所述寻址地址读取所述第一数据。3.根据权利要求2所述的数据缓存器,其中,所述数据读取电路还被配置为在所述读控制信号对应第二读取模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址从所述一个存储体中读取执行所述计算任务所需的第二数据。4.根据权利要求1-3任意一项所述的数据缓存器,其中,在所述计算任务为卷积计算的情况下,所述读控制信号对应所述第一读取模式。5.根据权利要求4所述的数据缓存器,其中,在所述计算任务为神经网络算法中的标准卷积计算的情况下,每份数据包括一个卷积核中的部分数据。6.根据权利要求4所述的数据缓存器,其中,在所述计算任务为神经网络算法中的深度可分卷积计算的情况下,每份数据包括一个通道的特征图中的部分数据。7.根据权利要求3所述的数据缓存器,其中,在所述计算任务为神经网络算法中的双线性插值计算的情况下,所述读控制信号对应所述第二读取模式。8.根据权利要求1所述的数据缓存器,还包括:数据写入电路,被配置为接收所述计算任务对应的写控制信号和写地址,在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号确定所述n个存储体,并基于所述写地址将所述第一数据并行地写入所述n个存储体。9.一种基于数据流的数据缓存器,包括:多个存储体,不同存储体被配置为存储不同的数据;数据写入电路,被配置为接收计算任务对应的写控制信号和写地址,在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号从所述多个存储体中确定n个存储体,并基于所述写地址将执行所述计算任务所需的第一数据并行地写入所述n个存储体,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。10.根据权利要求8或9所述的数据缓存器,其中,所述写地址包括寻址地址和片选地址,所述数据写入电路被配置为基于所述寻址地址写入所述第一数据。11.根据权利要求10所述的数据缓存器,其中,所述数据写入电路还被配置为在所述写控制信号对应第二写入模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址将执行所述计算任务所需的第二数据写入所述一个存储体。12.根据权利要求8或9所述的数据缓存器,其中,在所述计算任务为卷积计算的情况下,所述写控制信号对应所述第一写入模式。13.根据权利要求11所述的数据缓存器,其中,在所述计算任务为神经网络算法中的双线性插值计算的情况下,所述写控制信号对应所述第二写入模式。14.一种人工智能芯片,包括:
权利要求1-7任意一项所述的基于数据流的数据缓存器;地址生成单元,被配置为响应于所述计算任务对应的第一驱动信号,生成所述读地址,并将所述读地址发送至所述数据缓存器;以及控制寄存器,被配置为响应于所述计算任务对应的第一配置信号,向所述数据缓存器发送所述读控制信号,并向所述地址生成单元发送所述第一驱动信号。15.根据权利要求14所述的人工智能芯片,还包括:处理电路,被配置为响应于所述控制寄存器发送的所述计算任务对应的第二驱动信号,将所述n份数据中的多份数据发送至计算电路。16.根据权利要求14所述的人工智能芯片,其中:所述数据缓存器还包括数据写入电路,被配置为接收所述计算任务对应的写控制信号和写地址,在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号确定所述n个存储体,并基于所述写地址将所述第一数据并行地写入所述n个存储体;所述地址生成单元还被配置为响应于所述计算任务对应的第三驱动信号,生成所述写地址,并将所述写地址发送至所述数据缓存器;所述控制寄存器还被配置为响应于所述计算任务对应的第二配置信号,向所述数据缓存器发送所述写控制信号,并向所述地址生成单元发送所述第三驱动信号。17.一种人工智能芯片,包括:权利要求9-13任意一项所述的基于数据流的数据缓存器;地址生成单元,被配置为响应于所述计算任务对应的第三驱动信号,生成所述写地址,并将所述写地址发送至所述数据缓存器;以及控制寄存器,被配置为响应于所述计算任务对应的第二配置信号,向所述数据缓存器发送所述写控制信号,并向所述地址生成单元发送所述第三驱动信号。18.根据权利要求16或17所述的人工智能芯片,还包括:直接存储器访问模块,被配置为响应于所述控制寄存器发送的所述计算任务对应的第四驱动信号,从片外存储器获取执行所述计算任务所需的数据;其中,所述数据写入电路被配置为从所述所需的数据中获取所述第一数据,并将所述第一数据并行地写入所述n个存储体。19.一种基于数据流的数据处理方法,包括:接收计算任务对应的读控制信号和读地址;在所述读控制信号对应第一读取模式的情况下,基于所述读控制信号从多个存储体中确定n个存储体,并基于所述读地址从所述n个存储体中并行地读取执行所述计算任务所需的第一数据,所述多个存储体中的不同存储体中存储有不同的数据,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。20.根据权利要求19所述的方法,其中,所述读地址包括寻址地址和片选地址,所述基于所述读地址从所述n个存储体中并行地读取执行所述计算任务所需的第一数据包括:基于所述寻址地址读取所述第一数据。21.根据权利要求20所述的方法,还包括:在所述读控制信号对应第二读取模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址从所述一个存储体中读取执行所述计算任务所需
的第二数据。22.根据权利要求19所述的方法,还包括:接收所述计算任务对应的写控制信号和写地址;在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号确定所述n个存储体,并基于所述写地址将所述第一数据并行地写入所述n个存储体。23.一种基于数据流的数据处理方法,包括:接收计算任务对应的写控制信号和写地址;在所述写控制信号对应第一写入模式的情况下,基于所述写控制信号从多个存储体中确定n个存储体,并基于所述写地址将执行所述计算任务所需的第一数据并行地写入所述n个存储体,所述多个存储体中的不同存储体中存储有不同的数据,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。24.根据权利要求22或23所述的方法,其中,所述写地址包括寻址地址和片选地址,所述基于所述写地址将执行所述计算任务所需的第一数据并行地写入所述n个存储体包括:基于所述寻址地址写入所述第一数据。25.根据权利要求24所述的方法,还包括:在所述写控制信号对应第二写入模式的情况下,基于所述片选地址从所述多个存储体中确定一个存储体,并基于所述寻址地址将执行所述计算任务所需的第二数据写入所述一个存储体。26.一种加速器,包括:权利要求14-18任意一项所述的人工智能芯片。
技术总结
本公开提供了一种基于数据流的数据缓存器、数据处理方法及人工智能芯片,涉及人工智能技术领域,所述基于数据流的数据缓存器包括:多个存储体,不同存储体被配置为存储不同的数据;数据读取电路,被配置为接收计算任务对应的读控制信号和读地址,在所述读控制信号对应第一读取模式的情况下,基于所述读控制信号从所述多个存储体中确定n个存储体,并基于所述读地址从所述n个存储体中并行地读取执行所述计算任务所需的第一数据,所述第一数据包括与所述n个存储体一一对应的n份数据,n≥2,n为正整数。为正整数。为正整数。
技术研发人员:曾成龙 蔡权雄 牛昕宇
受保护的技术使用者:深圳鲲云信息科技有限公司
技术研发日:2022.03.24
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
