CN110554886A - 数据拆分结构、方法及其片上实现 - Google Patents
数据拆分结构、方法及其片上实现 Download PDFInfo
- Publication number
- CN110554886A CN110554886A CN201810539699.7A CN201810539699A CN110554886A CN 110554886 A CN110554886 A CN 110554886A CN 201810539699 A CN201810539699 A CN 201810539699A CN 110554886 A CN110554886 A CN 110554886A
- Authority
- CN
- China
- Prior art keywords
- data
- register
- bit wide
- bit
- cache
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提出了一种数据拆分结构、方法及其片上实现。所述数据拆分结构用于将输入的M位宽数据拆分成N位宽数据进行输出,其中N≤M,并且包括:两个宽为M的缓存寄存器,其中M位宽的数据从一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出;以及指针寄存器,用于存储指示当前要读取的N位宽数据的起点的指针,其中在所述指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器。由此,使得每一个时钟节拍都有一个新的N位宽数据被从所述两个缓存寄存器中读出,以确保最高效率的数据输出。本发明的数据拆分方案尤其适用于数据转换效率至关重要的高带宽系统,例如,神经网络计算平台。
Description
技术领域
本发明涉及硬件架构领域,尤其涉及一种数据拆分方案及使用该方案的结构和片上系统。
背景技术
数据拆分转换在硬件架构上是很常见的需求,转换效率直接关乎整个硬件系统的运行效率。特别是对于例如神经网络计算平台的高带宽系统,数据转换对效率的影响更加明显。现有的数据拆分方案多是基于输入数据的直接拆分,其通常无法很好地处理输入位宽和输出位宽之间的差异所带来的读取效率损失。
因此,仍然需要一种能够优化数据拆分操作的相关方案。
发明内容
为了解决上述至少一个问题,本发明提出了一种新的数据拆分方案,该方案通过合理配置寄存器数量和数据读入时机,能够高效利用每个时钟节拍输出数据,以实现对于高带宽系统(例如,神经网络计算平台)至关重要的数据高效转换。
根据本发明的一个方面,提出了一种数据拆分结构,用于将输入的M位宽数据拆分成N位宽数据进行输出,其中N≤M,该结构包括:两个宽为M的缓存寄存器,其中M位宽的数据从一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出;以及指针寄存器,用于存储指示当前要读取的N位宽数据的起点的指针,其中在所述指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器。由此,使得每一个时钟节拍都有一个新的N位宽数据被从所述两个缓存寄存器中读出,以确保最高效的N位宽输出。
优选地,两个缓存寄存器包括第零缓存寄存器和第一缓存寄存器,其中M位宽的数据从第一缓存寄存器送入,以N位宽从第零缓存寄存器的读出,并且在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器内的已有数据存入第零缓存寄存器,并将新的M位宽数据送入第一缓存寄存器。
优选地,两个缓存寄存器包括第零缓存寄存器和第一缓存寄存器,并且在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器和第零缓存寄存器进行身份互换,并将新的M位宽数据送入身份互换后的第一缓存寄存器。由此,可以在数据输入开始时直接从第一时钟节拍有M位宽数据送入的一个缓存寄存器读取N位宽的数据。
在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N;在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-M。在输出的N位宽数据存在复用且复用度为T的情况下,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N-T;在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-T-M。
进一步地,该数据拆分结构还可以包括两个状态寄存器,分别用于存储与其对应的一个缓存寄存器内的有效数据个数,并且基于一个缓存寄存器的所述有效数据个数,判断所述一个缓存寄存器在下一时钟节拍是否包括未读取数据,并相应地判断是否将新的M位宽数据送入一个缓存寄存器。
在一个状态寄存器中指示一个缓存寄存器内有效数据个数为0,且另一个状态寄存器中指示一个缓存寄存器内有效数据个数为a且a<N时,仅将读取的N位宽数据中的前a位的数据作为有效数据。
在M不是2的整数幂的情况,可以使得指针指示的范围,其中表示[log2M]向上取整。由此方便指针的循环计数。
根据本发明的另一个方面,提供了一种片上系统,包括经由总线连接的多个模块,其中在特定模块内部位宽小于或等于总线位宽的情况下,在所述特定模块和所述总线之间布置如上任一项所述的数据拆分结构。
所述特定模块包括用于神经网络计算推理的高并行度计算模块。该片上系统可由ASIC、FPGA或GPU实现。优选地,输出的N位宽数据包括更新步长小于卷积核长宽时复用的数据。
根据本发明的又一个方面,提出了一种数据拆分方法,用于将输入的M位宽数据拆分成N位宽数据进行输出,其中N≤M,包括:将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出;以及在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器,其中所述指针存储指示当前要读取的N位宽数据的起点。
优选地,将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出可以包括:每一个时钟节拍都有一个新的N位宽数据被从所述两个缓存寄存器中读出。
优选地,将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出可以包括:将M位宽的数据从第一缓存寄存器送入,以N位宽从第零缓存寄存器的读出,并且在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器可以包括:在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器内的已有数据存入第零缓存寄存器,并将新的M位宽数据送入第一缓存寄存器。
将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出可以包括:依次将M位宽的数据从第一和第零缓存寄存器送入,以N位宽从第零和第一缓存寄存器的读出,并且在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器可以包括:在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器和第零缓存寄存器进行身份互换,并将新的M位宽数据送入身份互换后的第一缓存寄存器。
在数据输入开始时可以直接从第一时钟节拍有M位宽数据送入的第一缓存寄存器读取N位宽的数据。
在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N;在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-M。而在输出的N位宽数据存在复用且复用度为T的情况下,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N-T;在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-T-M。
在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器包括:基于状态存储器中存储的一个缓存寄存器的所述有效数据个数,判断所述一个缓存寄存器在下一时钟节拍是否包括未读取数据,并相应地判断是否将新的M位宽数据送入一个缓存寄存器。
本发明的数据拆分方法还可以包括:在一个状态寄存器中指示一个缓存寄存器内有效数据个数为0,且另一个状态寄存器中指示一个缓存寄存器内有效数据个数为a且a<N时,仅将读取的N位宽数据中的前a位的数据作为有效数据。
优选地,所述指针可以指示的范围,其中表示[log2M]向上取整。
根据本发明的另一个方面,提供了一种片上系统操作方法,所述片上系统包括经由总线连接的多个模块,其中在特定模块内部位宽小于或等于总线位宽的情况下,所述片上系统在所述特定模块和所述总线之间执行如上所述的数据拆分方法。该方法还可以优选地包括在更新步长小于卷积核长宽时,以复用数据的方式读取N位宽的数据。
根据本发明的又一个方面,提出了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的数据拆分方法。
根据本发明的另一个方面,提出了一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的数据拆分方法。
使用根据本发明的数据拆分方案,能够高效利用每一个时钟节拍进行数据输出,以实现对于高带宽系统(例如,神经网络计算平台)至关重要的数据高效转换。该方案使用的硬件逻辑少,可以广泛适用于小型到大型的各种规模的系统,数据拆分效率高,基本能达到理论最大效率。另外,方案设计规整,可以参数化设计,易于匹配各种各样的系统需求。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了需要数据拆分转换的一个场景例。
图2示出了需要重新组织的数据传输流。
图3示出了根据本发明一个实施例的数据拆分结构的示意图。
图4示出了根据本发明另一个实施例的数据拆分结构的示意图。
图5示出了根据本发明的数据拆分方案进行数据拆分的例子。
图6示出了卷积操作的一个例子。
图7示出了根据本发明一个实施例的数据拆分方法的流程示意图。
图8示出了根据本发明一个实施例可用于实现上述拆分方法的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
数据拆分转换在硬件架构上是很常见的需求,转换效率直接关乎整个硬件系统的运行效率。特别是对于例如神经网络计算平台的高带宽系统,数据转换对效率的影响更加明显。
数据拆分转换的一个常见的应用场景是片上系统。典型的片上系统(SoC,Systemon Chip)设计由多个模块(例如,IP)组成,例如可以包如CPU、GPU、USB控制器、PCIE控制器、DDR控制器等。各个IP通过片上总线互联以实现相互通信。实际应用中有可能出现总线数据位宽与IP内部使用的数据位宽不一致问题。图1示出了需要数据拆分转换的一个场景例。如图1所示,总线数据位宽M,IP内部数据位宽N,且N≤M。当位宽为M的数据经由总线输入时,需要将其位宽更改为N以供IP内部进行后续处理。在此,数据位宽的计数单位可以基于任意规则确定,例如,可以以1比特、4比特或是1字节等为单位,本发明对此不做限制。
图2示出了需要重新组织的数据传输流。如图2所示,从总线输入的数据流由多个传输块组成。作为有效数据的传输块之间存在一定量的无效数据。本发明提出了一种高效率的数据位宽拆分结构,以便将有效数据切分成多个位宽为N的数据段。
图3示出了根据本发明一个实施例的数据拆分结构300的示意图。该结构可以用于高效率地将输入的M位宽数据拆分成N位宽数据进行输出,其中N≤M。数据拆分结构300可以包括两个位宽为M的缓存寄存器310和320以及用于存储指示当前要读取的N位宽数据的起点的指针(索引指针idx)的指针寄存器330(idx寄存器)。如图所示,M位宽的数据可以从一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出。其中的一个缓存寄存器(例如,320)可以与输入直连。索引指针idx可以在两个缓存寄存器的整个2M区间内移动,以指示后续需要输出的位宽N的起始位置。在所述指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器。如图1所示,当当前时钟节拍读取的N位宽数据包括缓存寄存器310剩余的全部数据(以及缓存寄存器320的部分数据)时,可以在下一时钟将新的M位宽数据送入不再存在有效数据的缓存寄存器310。
由此,通过两个缓存寄存器与指针的有效配合,能够确保在例如传输块的传输阶段,每一个时钟节拍都有N位宽的数据能够被从两个缓存寄存器中读出。
在一个实施例中,数据的送入和读取可以遵循一定的方向。两个缓存寄存器可以包括第零缓存寄存器和第一缓存寄存器。例如,可以图3中的缓存寄存器310可以对应于第零缓存寄存器,缓存寄存器320可以对应于第一缓存寄存器。此时,M位宽的数据可以从第一缓存寄存器320送入,以N位宽从第零缓存寄存器310的读出。在第零缓存寄存器的当前指针current_idx≥M-N时(例如,以寄存器310左端为起点0),在下一时钟节拍将第一缓存寄存器320内的已有数据存入第零缓存寄存器310,并将新的M位宽数据送入第一缓存寄存器320。换句话说,当第零缓存寄存器内的有效数据将要被读取完毕时,触发第一缓存寄存器320对新数据的读取并其内已有数据朝向第零缓存寄存器310的前移。在数据的送入和读取的方向一定的情况下,索引指针idx的移动范围可以限制在第零缓存寄存器310内。
在另一个实施例中,两个缓存寄存器的身份可以互换。例如,在初始情况下可以是图3中的缓存寄存器310可以对应于第零缓存寄存器,缓存寄存器320可以对应于第一缓存寄存器。而在例如第零缓存寄存器310的当前指针current_idx≥M-N时,在下一时钟节拍可以将两个寄存器的身份互换,即,缓存寄存器320对应于第零缓存寄存器,缓存寄存器310对应于第一缓存寄存器。这时,可以直接将新的M位宽数据送入有效数据耗尽的寄存器320,并且将寄存器310作为第零缓存寄存器进行数据读取。这时,索引指针idx的移动范围可以依旧限制在第零缓存寄存器内,但由于第零缓存寄存器随着新M位宽数据的读数而发生身份变化,因此索引指针idx是在整个2M的区间内移动。由于在此实施例中第一和第零缓存寄存器的身份可以互换,因此在数据输入开始时可以直接从第一时钟节拍有M位宽数据送入的一个缓存寄存器开始读取N位宽的数据。例如,在第一时钟节拍将M位宽数据送入缓存寄存器320时,可以在第二节拍直接从缓存寄存器320读取数据,同时再输入新的M位宽数据进入缓存寄存器310,并进行后续的输入和读取。由此,相比于在前实施例,能够在传输块传输开始时减少一个轮空读取的时钟周期。并且两寄存器身份的互换还避免了新数据读入的已有数据前移的需要。
在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N。在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-M。上述公式在缓存寄存器互换的实施例中依然成立,这是因为作为起始点的第零缓存寄存器的左端也会随着互换而移位的缘故。
在输出的N位宽数据存在复用且复用度为T的情况下,在没有新的M位宽数据送入时,下一指针的指示位置可以为next_idx=current_idx+N-T。在有新的M位宽数据送入时,下一指针的指示位置可以为next_idx=current_idx+N-T-M。后续将结合神经网络计算的应用场景对基于本发明数据拆分方案的数据复用进行进一步描述。
在一个实施例中,本发明的数据拆分结构还包括两个状态寄存器,分别用于存储与其对应的一个缓存寄存器内的有效数据个数。由此,可以基于一个缓存寄存器的所述有效数据个数,判断所述一个缓存寄存器在下一时钟节拍是否包括未读取数据,并相应地判断是否将新的M位宽数据送入一个缓存寄存器。图4示出了根据本发明另一个实施例的数据拆分结构的示意图。如图所示,除了两个缓存寄存器410和420以及指针寄存器430之外,还包括分别与缓存寄存器410和420相对应的两个状态寄存器411和421。状态寄存器411和421分别用于存储两个缓存寄存器410和420的状态数据。状态数据可以包括当前状态下缓存寄存器内有效数据的个数。由此,可以通过该有效数据个数,判断所述一个缓存寄存器在下一时钟节拍是否包括未读取数据,并相应地判断是否将新的M位宽数据送入一个缓存寄存器。在一个优选实施例中,状态数据还可以直接包括下一状态下缓存寄存器内有效数据的个数,由此可以直接判断该缓存寄存器在下一状态(即,下一时钟节拍)是否已不包括有效数据,从而直接做出是否要将新的M位宽数据送入其对应的缓存寄存器的判断。
上述状态寄存器可以在传输结束时,例如,一个传输块传输终了时筛选出无效数据。在一个状态寄存器中指示一个缓存寄存器内有效数据个数为0,且另一个状态寄存器中指示一个缓存寄存器内有效数据个数为a且a<N时,仅将读取的N位宽数据中的前a位的数据作为有效数据。例如,在传输结束阶段,当缓存寄存器420内有效数据个数为0,且缓存寄存器410内有效数据为3(小于N=4)时,可以仅将下一拍读取的4位数据中的前3位作为有效数据进行处理。
如图4所示,在M不等于2的整数幂的情况下,还可以将索引指针idx扩展至指示的范围,其中表示[log2M]向上取整。换句话说,索引指针idx可以再整个的区间内移动。例如,当N等于6时,可以将索引边界从-6~6扩展至-8~8的范围,使得索引指针可以在区间范围[0,16]之间移动。即,在两个缓存寄存器410和420的已有范围内进行左右两侧各2个单位的扩展。这里的边界扩展仅仅是指针上的扩展,并不需要实际扩展缓存寄存器的缓存范围。由此,使得指针idx的变换更加适用于系统二进制计算的特性(即,可以进行二进制递增循环),从而提升指针的移位效率。应该理解的是,在进行指针位置的上述公式计算时,仍然优选将第零缓存寄存器的左端视为起始点0。
为了进一步明确本发明的计算方案,图5示出了根据本发明的数据拆分方案进行数据拆分的例子。在此,输入数据的位宽M=6,输出数据的位宽N=4。在此以两个缓存寄存器身份不互换地从右往左以M位宽输入数据并从左往右以N位宽读取数据为例。
第一行表示传输块开始,此时两个缓存寄存器都为空。
随后,在第一时钟节拍,6位宽数据送入第一缓存寄存器,此时第一缓存寄存器内有效数字(例如,其对应状态寄存器内的计数)为6,第零缓存寄存器内有效数字(例如,其对应状态寄存器内的计数)为0。由于第零缓存寄存器内无有效数字,所以没有数据输出。
在第二时钟节拍,6位宽的数据送入第一缓存寄存器,已有的6位宽数据前移至第零缓存寄存器,此时第一和第零缓存寄存器内有效数字皆为6,指针idx位于起始位(第零缓存寄存器最左侧)。
在第三时钟节拍,索引指针idx从起始位向右滑动,划出一个4位宽的数据窗,以读取前4位数据,同时索引指针idx移至位置4(即,next_idx=current_idx+N=0+4=4)。此时第一缓存寄存器内有效数字为6,第零缓存寄存器内有效数字为2<4,因此下一拍将触发新的6位数据输入。
在第四时钟节拍,6位宽数据送入第一缓存寄存器,已有的8位宽数据前移,索引指针idx划出一个4位宽数据窗,移至位置2(即,next_idx=current_idx+N-M=4+4-6=2),此时第一缓存寄存器内有效数字为6,第零缓存寄存器内有效数字为4≤4,因此下一拍将触发新的6位数据输入。
在第五时钟节拍,6位宽数据送入第一缓存寄存器,已有的10位宽数据前移,索引指针idx划出一个4位宽数据窗,移至位置0(即,next_idx=current_idx+N-M=2+4-6=0),此时第一缓存寄存器内有效数字为6,第零缓存寄存器内有效数字为6>4,因此下一拍将不会触发新的6位数据输入。此时传输块传输结束。
在第六时钟节拍,索引指针idx划出一个4位宽数据窗,移至位置4(即,next_idx=current_idx+N=0+4=4),此时第一缓存寄存器内有效数字为6,第零缓存寄存器内有效数字为2<4,因此下一拍将触发第一缓存寄存器的6位数据向前送入。
在第七时钟节拍,剩余的8位宽数据前移,索引指针idx划出一个4位宽数据窗,移至位置2(即,next_idx=current_idx+N-M=4+4-6=2),此时第一缓存寄存器内有效数字为0,第零缓存寄存器内有效数字为4。
在第八时钟节拍,索引指针idx划出一个4位宽数据窗读取剩余的4位有效数字,此时两个缓存寄存器内的有效数字都为0,该传输块数据读取结束。
如上结合图5示出了根据本发明的数据拆分方案的一个具体例子。应该理解的是,根据具体应用,数据拆分的具体细节可以不同。
例如,在第二时钟节拍下,可以在将第一缓存寄存器内的数据送至第零缓存寄存器的同时,启动对已有数据的读取。例如,索引指针idx可以在此时钟节拍下就从0移至4,以开始读取4位宽数据。
例如,在传输块传输结束的情况下,在第七时钟节拍,剩余数据可以不前移,索引指针idx可以直接向右滑动至第一缓存寄存器的右侧结尾。
例如,在第八时钟节拍,倘若剩余的有效数字为2,索引指针idx仍然可以划出一个4位宽数据窗进行读取,但仅将读取的前2位数字看作是有效数字。
再例如,在第零和第一缓存寄存器身份可以互换的情况下,可以直接将第一时钟节拍送入数据的缓存寄存器看作是第零缓存寄存器,并在第二时钟节拍就开始读取。并在随后的操作中,不进行已有数据前移操作,而是直接通过缓存存储器身份互换来实现新数据的读取和已有数据的读取。
由上可知,本发明的数据拆分方案尤其适用于包括经由总线连接的多个模块并且其中存在特定模块内部位宽小于或等于总线位宽的片上系统。这时,可以在所述特定模块和所述总线之间布置如上所述的数据拆分结构。
在一个实施例中,该特定模块包括用于神经网络计算推理的高并行度计算模块。由此,该片上系统可由适用于高并行度计算的ASIC、FPGA或GPU实现。在上述用于进行高并行度计算的片上系统中,由于带宽通常成为系统效率的瓶颈,因此引入本发明所述的高效数据拆分结构成为确保系统整体效率的关键。
典型的CNN由一系列有序运行的层组成。CNN模型的参数被称为“权重”。CNN的第一层读取输入图,并输出一系列的特征图。下面的层读取由上一层产生的特征图,并输出新的特征图。最后一个分类器输出输入图可能属于某一类别的概率。CONV层(卷积层)和FC层(全连层)是CNN中两种基本层类型。CONV层后通常接有池化层。特征图是在神经网络的各层计算中传递的数据。在神经网络计算中,特征图通常包括长(height)、宽(width)、通道(channels)三个维度。
在用于神经网络计算的一个例子中,本发明的数据拆分方案尤其适用于数据复用率高的并行计算,例如,CNN中最为常见的卷积计算。为了方便理解,图6示出了卷积操作的一个例子。如图6所示,使用一个3x3的卷积核,以步长1对一个5x5的输入特征图进行卷积计算。图的左侧示出了第一次卷积计算,中间示出了第二次卷积计算,依次类推。在经过9次卷积计算后,得到图3右侧的经卷积的特征图。
由于这9次的卷积计算之间不存在依赖关系,因此可以在高并行计算模块的单次操作中完成执行(并行度M通常可以达到数千量级)。由于步长为1,因此每个相邻卷积窗中有6个数据可以复用,如图6中左图和中间图所示。当神经网络计算中对特征图进行逐通道的读取时,尤其在复用度T(此例中为6)且小于输出位宽N(例如,N为8)的情况下,可以利用上文所述的数据复用时的计算公式。即,在没有新的M位宽数据送入时,下一指针的指示位置可以为next_idx=current_idx+N-T;在有新的M位宽数据送入时,下一指针的指示位置可以为next_idx=current_idx+N-T-M。
如上结合图3-6描述了根据本发明的数据拆分结构及其片上应用。在一个实施例中,本发明的数据拆分方案还可以是一种数据拆分方法。图7示出了根据本发明一个实施例的数据拆分方法的流程示意图。
该数据拆分方法700用于将输入的M位宽数据拆分成N位宽数据进行输出,其中N≤M。在步骤S710,将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出。在步骤S720,在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器,其中所述指针存储指示当前要读取的N位宽数据的起点。由此,可以确保每一个时钟节拍都有一个新的N位宽数据被从所述两个缓存寄存器中读出。
在一个实施例中,本发明的数据拆分方法可以包括数据的单向输入和读取。具体地,步骤S710可以包括:将M位宽的数据从第一缓存寄存器送入,以N位宽从第零缓存寄存器的读出。相应地,步骤S710可以包括:在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器内的已有数据存入第零缓存寄存器,并将新的M位宽数据送入第一缓存寄存器。
在另一个实施例中,本发明的数据拆分方法可以包括两个缓存寄存器的身份互换。具体地,步骤S710可以包括:依次将M位宽的数据从第一和第零缓存寄存器送入,以N位宽从第零和第一缓存寄存器的读出。相应地,步骤S720可以包括在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器和第零缓存寄存器进行身份互换,并将新的M位宽数据送入身份互换后的第一缓存寄存器。此时,可以在数据输入开始时直接从第一时钟节拍有M位宽数据送入的第一缓存寄存器开始读取N位宽的数据。
在一个实施例中,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N;在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-M。而在输出的N位宽数据存在复用且复用度为T的情况下,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N-T;在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-T-M。
在一个实施例中,可以通过引入由状态寄存器存储的状态来优化对数据输入和读取的判断。于是,步骤S710可以包括:基于状态存储器中存储的一个缓存寄存器的所述有效数据个数,判断所述一个缓存寄存器在下一时钟节拍是否包括未读取数据,并相应地判断是否将新的M位宽数据送入一个缓存寄存器。
上述状态还有利于对传输结束时有效数据的分辨。在一个实施例中,本发明的数据拆分方法还可以包括:在一个状态寄存器中指示一个缓存寄存器内有效数据个数为0,且另一个状态寄存器中指示一个缓存寄存器内有效数据个数为a且a<N时,仅将读取的N位宽数据中的前a位的数据作为有效数据。
在M不等于2的整数幂的情况下,还可以将索引指针idx扩展至指示的范围,其中表示[log2M]向上取整。由此,使得指针idx的变换更加适用于系统二进制计算的特性(即,可以进行二进制递增循环),从而提升指针的移位效率。
在另一个实施例中,本发明还涉及一种片上系统操作方法,所述片上系统包括经由总线连接的多个模块,其中在特定模块内部位宽小于或等于总线位宽的情况下,所述片上系统在所述特定模块和所述总线之间执行如上所述的数据拆分方法。该片上系统操作方法还可以包括从通道方向读取的特征图数据作为输入的M位宽数据。在更新步长小于卷积核长宽时,以复用数据的方式读取N位宽数据。
以上结合图3-7描述了本发明的数据拆分方案。本方案使用的硬件逻辑特别少,适合于小型到大型的各种规模的系统;拆分效率高,基本能达到理论最大效率;设计规整,可以参数化设计,易于匹配各种各样的系统需求。
图8示出了根据本发明一个实施例可用于实现上述拆分方法的计算设备的结构示意图。
参见图8,计算设备800包括存储器810和处理器820。
处理器820可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器820可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器820可以使用定制的电路实现,例如特定用途集成电路(ASIC)或者现场可编程逻辑门阵列(FPGA)。出于执行效率考虑,处理器820优选为通用处理器(CPU)
存储器810可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM)和永久存储装置。其中,ROM可以存储处理器820或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器810可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1010可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器810上存储有可处理代码,当可处理代码被处理器820处理时,可以使处理器820执行上文述及的直接定点方法。在一个实施例中,上文述及的压缩编译器可以实现为压缩编译程序,同样可由存储器810存储,并由处理器820执行。
在实际使用中,上述计算设备800可以是包括大容量存储装置810和CPU 820的通用计算设备。该通用计算设备可以与专用于执行神经网络计算且至少部分由数字电路实现的定点计算平台相结合,以实现高效的神经网络计算。在一个实施例中,本发明的神经网络计算系统可以在包括通用处理器、存储器和数字电路的片上系统(SoC)实现。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可由执行规定的功能或操作的专用的基于硬件的系统实现,或者可由专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (28)
1.一种数据拆分结构,用于将输入的M位宽数据拆分成N位宽数据进行输出,其中N≤M,包括:
两个宽为M的缓存寄存器,其中M位宽的数据从一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出;以及
指针寄存器,用于存储指示当前要读取的N位宽数据的起点的指针,其中在所述指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器。
2.如权利要求1所述的结构,其中,每一个时钟节拍都有N位宽数据被从所述两个缓存寄存器中读出。
3.如权利要求2所述的结构,其中,两个缓存寄存器包括第零缓存寄存器和第一缓存寄存器,其中M位宽的数据从第一缓存寄存器送入,以N位宽从第零缓存寄存器的读出,并且在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器内的已有数据存入第零缓存寄存器,并将新的M位宽数据送入第一缓存寄存器。
4.如权利要求2所述的结构,其中,两个缓存寄存器包括第零缓存寄存器和第一缓存寄存器,并且在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器和第零缓存寄存器进行身份互换,并将新的M位宽数据送入身份互换后的第一缓存寄存器。
5.如权利要求1所述的结构,其中,在数据输入开始时直接从第一时钟节拍有M位宽数据送入的一个缓存寄存器开始读取N位宽的数据。
6.如权利要求3或4所述的结构,其中,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N;
在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-M。
7.如权利要求3或4所述的结构,其中,在输出的N位宽数据存在复用且复用度为T的情况下,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N-T;
在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-T-M。
8.如权利要求1所述的结构,还包括两个状态寄存器,分别用于存储与其对应的一个缓存寄存器内的有效数据个数,并且
基于一个缓存寄存器的所述有效数据个数,判断所述一个缓存寄存器在下一时钟节拍是否包括未读取数据,并相应地判断是否将新的M位宽数据送入一个缓存寄存器。
9.如权利要求8所述的结构,其中,在一个状态寄存器中指示一个缓存寄存器内有效数据个数为0,且另一个状态寄存器中指示一个缓存寄存器内有效数据个数为a且a<N时,仅将读取的N位宽数据中的前a位的数据作为有效数据。
10.如权利要求1所述的结构,其中,所述指针指示的范围,其中表示[log2M]向上取整。
11.一种片上系统,包括经由总线连接的多个模块,其中在特定模块内部位宽小于或等于总线位宽的情况下,在所述特定模块和所述总线之间布置如权利要求1-10中任一项所述的数据拆分结构。
12.如权利要求11所述的系统,其中,所述特定模块包括用于神经网络计算推理的高并行度计算模块。
13.如权利要求11所述的系统,其中,所述片上系统由ASIC、FPGA或GPU实现。
14.如权利要求11所述的系统,其中,输出的N位宽数据包括更新步长小于卷积核长宽时复用的数据。
15.一种数据拆分方法,用于将输入的M位宽数据拆分成N位宽数据进行输出,其中N≤M,包括:
将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出;以及
在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器,其中所述指针存储指示当前要读取的N位宽数据的起点。
16.如权利要求15所述的方法,其中,将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出包括:
每一个时钟节拍都有N位宽数据被从所述两个缓存寄存器中读出。
17.如权利要求15所述的方法,其中,将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出包括:
将M位宽的数据从第一缓存寄存器送入,以N位宽从第零缓存寄存器的读出,
并且在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器包括:
在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器内的已有数据存入第零缓存寄存器,并将新的M位宽数据送入第一缓存寄存器。
18.如权利要求15所述的方法,其中,将M位宽的数据向两个宽为M的缓存寄存器中的一个缓存寄存器送入,以N位宽从一个缓存寄存器的读出包括:
依次将M位宽的数据从第一和第零缓存寄存器送入,以N位宽从第零和第一缓存寄存器的读出,
并且在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器包括:
在第零缓存寄存器的当前指针current_idx≥M-N时,在下一时钟节拍将第一缓存寄存器和第零缓存寄存器进行身份互换,并将新的M位宽数据送入身份互换后的第一缓存寄存器。
19.如权利要求18所述的方法,其中,在数据输入开始时直接从第一时钟节拍有M位宽数据送入的第一缓存寄存器读取N位宽的数据。
20.如权利要求17或18所述的方法,其中,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N;
在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-M。
21.如权利要求17或18所述的方法,其中,在输出的N位宽数据存在复用且复用度为T的情况下,在没有新的M位宽数据送入时,下一指针的指示位置为next_idx=current_idx+N-T;
在有新的M位宽数据送入时,下一指针的指示位置next_idx=current_idx+N-T-M。
22.如权利要求15所述的方法,其中,在指针的位置指示其中一个缓存寄存器在下一时钟节拍将不包括未读取数据时,将新的M位宽数据送入一个缓存寄存器包括:
基于状态存储器中存储的一个缓存寄存器的所述有效数据个数,判断所述一个缓存寄存器在下一时钟节拍是否包括未读取数据,并相应地判断是否将新的M位宽数据送入一个缓存寄存器。
23.如权利要求15所述的方法,还包括:
在一个状态寄存器中指示一个缓存寄存器内有效数据个数为0,且另一个状态寄存器中指示一个缓存寄存器内有效数据个数为a且a<N时,仅将读取的N位宽数据中的前a位的数据作为有效数据。
24.如权利要求15所述的方法,其中,所述指针指示的范围,其中表示[log2M]向上取整。
25.一种片上系统操作方法,所述片上系统包括经由总线连接的多个模块,其中在特定模块内部位宽小于或等于总线位宽的情况下,所述片上系统在所述特定模块和所述总线之间执行如权利要求15-24中任一项所述的数据拆分方法。
26.如权利要求25所述的方法,还包括:
在更新步长小于卷积核长宽时,以复用数据的方式读取N位宽数据。
27.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求15-26中任一项所述的方法。
28.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求15-26中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539699.7A CN110554886B (zh) | 2018-05-30 | 2018-05-30 | 数据拆分结构、方法及其片上实现 |
PCT/IB2019/000791 WO2019229538A2 (zh) | 2018-05-30 | 2019-05-30 | 数据转换结构、方法及其片上实现 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539699.7A CN110554886B (zh) | 2018-05-30 | 2018-05-30 | 数据拆分结构、方法及其片上实现 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110554886A true CN110554886A (zh) | 2019-12-10 |
CN110554886B CN110554886B (zh) | 2021-12-10 |
Family
ID=68735071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810539699.7A Active CN110554886B (zh) | 2018-05-30 | 2018-05-30 | 数据拆分结构、方法及其片上实现 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110554886B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112073316A (zh) * | 2020-09-09 | 2020-12-11 | 南京盛科网络有限公司 | 多通道位宽变化的数据传输系统、方法、设备和存储介质 |
CN112686901A (zh) * | 2021-03-11 | 2021-04-20 | 北京小白世纪网络科技有限公司 | 基于深度神经网络的us-ct图像分割方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208703B1 (en) * | 1998-05-15 | 2001-03-27 | Hewlett Packard Company | First-in-first-out synchronizer |
US6513105B1 (en) * | 1999-05-07 | 2003-01-28 | Koninklijke Philips Electronics N.V. | FIFO system with variable-width interface to host processor |
US20050283589A1 (en) * | 2004-06-16 | 2005-12-22 | Renesas Technology Corp. | Data processor |
CN101042640A (zh) * | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种带有位扩充和位压缩单元的数字信号处理器 |
CN101237415A (zh) * | 2008-02-22 | 2008-08-06 | 浙江大学 | 一种实现arp协议ip核的方法 |
US20090254785A1 (en) * | 2008-04-07 | 2009-10-08 | Micron Technology, Inc. | Test mode for parallel load of address dependent data to enable loading of desired data backgrounds |
CN102567254A (zh) * | 2010-12-31 | 2012-07-11 | 重庆重邮信科通信技术有限公司 | 采用dma控制器进行数据归一化处理的方法 |
CN102707922A (zh) * | 1995-08-31 | 2012-10-03 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
CN106462502A (zh) * | 2014-06-05 | 2017-02-22 | Gsi科技公司 | 涉及多组双管道存储器电路的系统和方法 |
CN106502922A (zh) * | 2016-10-28 | 2017-03-15 | 上海顺久电子科技有限公司 | 一种fifo数据缓存器的数据读写方法及数据缓存器 |
CN107833589A (zh) * | 2016-09-15 | 2018-03-23 | 华邦电子股份有限公司 | 非易失性半导体存储装置 |
-
2018
- 2018-05-30 CN CN201810539699.7A patent/CN110554886B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707922A (zh) * | 1995-08-31 | 2012-10-03 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
US6208703B1 (en) * | 1998-05-15 | 2001-03-27 | Hewlett Packard Company | First-in-first-out synchronizer |
US6513105B1 (en) * | 1999-05-07 | 2003-01-28 | Koninklijke Philips Electronics N.V. | FIFO system with variable-width interface to host processor |
US20050283589A1 (en) * | 2004-06-16 | 2005-12-22 | Renesas Technology Corp. | Data processor |
CN101042640A (zh) * | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种带有位扩充和位压缩单元的数字信号处理器 |
CN101237415A (zh) * | 2008-02-22 | 2008-08-06 | 浙江大学 | 一种实现arp协议ip核的方法 |
US20090254785A1 (en) * | 2008-04-07 | 2009-10-08 | Micron Technology, Inc. | Test mode for parallel load of address dependent data to enable loading of desired data backgrounds |
CN102567254A (zh) * | 2010-12-31 | 2012-07-11 | 重庆重邮信科通信技术有限公司 | 采用dma控制器进行数据归一化处理的方法 |
CN106462502A (zh) * | 2014-06-05 | 2017-02-22 | Gsi科技公司 | 涉及多组双管道存储器电路的系统和方法 |
CN107833589A (zh) * | 2016-09-15 | 2018-03-23 | 华邦电子股份有限公司 | 非易失性半导体存储装置 |
CN106502922A (zh) * | 2016-10-28 | 2017-03-15 | 上海顺久电子科技有限公司 | 一种fifo数据缓存器的数据读写方法及数据缓存器 |
Non-Patent Citations (1)
Title |
---|
闫广续等: "基于ARM嵌入式Linux的数据采集系统设计", 《计算机测量与控制》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112073316A (zh) * | 2020-09-09 | 2020-12-11 | 南京盛科网络有限公司 | 多通道位宽变化的数据传输系统、方法、设备和存储介质 |
CN112686901A (zh) * | 2021-03-11 | 2021-04-20 | 北京小白世纪网络科技有限公司 | 基于深度神经网络的us-ct图像分割方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110554886B (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110554852B (zh) | 数据拼接结构、方法及其片上实现 | |
US11544057B2 (en) | Computer processor for higher precision computations using a mixed-precision decomposition of operations | |
US10846089B2 (en) | Unified logic for aliased processor instructions | |
EP3885997A1 (en) | Efficient hardware architecture for accelerating grouped convolutions | |
US9647684B2 (en) | Memory-based history search | |
RU2656730C2 (ru) | Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой | |
Mittal et al. | A survey of encoding techniques for reducing data-movement energy | |
KR20100122493A (ko) | 프로세서 | |
CN114764407B (zh) | 加速器和词典解码的近存储加速的方法 | |
WO2008110633A1 (en) | A circuit for compressing data and a processor employing same | |
US10666288B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
EP3623940A2 (en) | Systems and methods for performing horizontal tile operations | |
US11550586B2 (en) | Method and tensor traversal engine for strided memory access during execution of neural networks | |
CN110554886B (zh) | 数据拆分结构、方法及其片上实现 | |
CN112148251A (zh) | 跳过无意义的矩阵运算的系统和方法 | |
WO2019229538A2 (zh) | 数据转换结构、方法及其片上实现 | |
Liu et al. | GPU-accelerated BWT construction for large collection of short reads | |
KR20220094180A (ko) | 병합 조인 동작들의 가속을 위한 시스템, 방법, 및 장치 | |
US20190138308A1 (en) | Unaligned memory accesses | |
JP6094321B2 (ja) | バッファ回路及び半導体集積回路 | |
US20210157485A1 (en) | Pattern-based cache block compression | |
US20210082082A1 (en) | Data processing method and processing circuit | |
CN116415100A (zh) | 业务处理方法、装置、处理器及计算设备 | |
US20230059970A1 (en) | Weight sparsity in data processing engines | |
US20240184578A1 (en) | Neoharry: high-performance parallel multi-literal matching algorithm |
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 |