CN110554852B - 数据拼接结构、方法及其片上实现 - Google Patents

数据拼接结构、方法及其片上实现 Download PDF

Info

Publication number
CN110554852B
CN110554852B CN201810547232.7A CN201810547232A CN110554852B CN 110554852 B CN110554852 B CN 110554852B CN 201810547232 A CN201810547232 A CN 201810547232A CN 110554852 B CN110554852 B CN 110554852B
Authority
CN
China
Prior art keywords
data
cache
bit wide
bit
registers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810547232.7A
Other languages
English (en)
Other versions
CN110554852A (zh
Inventor
方绍峡
于谦
王俊斌
隋凌志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Priority to CN201810547232.7A priority Critical patent/CN110554852B/zh
Priority to PCT/IB2019/000791 priority patent/WO2019229538A2/zh
Publication of CN110554852A publication Critical patent/CN110554852A/zh
Application granted granted Critical
Publication of CN110554852B publication Critical patent/CN110554852B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/14Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提出了一种数据拼接结构、方法及其片上实现。所述数据拼接结构用于将输入的M位宽数据拼接成N位宽数据进行输出,其中N≥M,并且包括:K个宽为M的缓存寄存器,其中M位宽的数据从K个缓存寄存器的尾端输入,以N位宽从所述K个缓存寄存器的首端输出,并且其中K=ceil(N/M)+1,ceil表示向上取整;指针寄存器,用于存储指示当前要读取的N位宽数据的起点的指针,其中所述指针的移动范围限于首段缓存寄存器内。该方案通过合理配置寄存器数量和指针位置,能够高效利用每个时钟节拍送入的数据,以实现对于高带宽系统(例如,神经网络计算平台)至关重要的数据高效转换。

Description

数据拼接结构、方法及其片上实现
技术领域
本发明涉及硬件架构领域,尤其涉及一种数据拼接方案及使用该方案的结构和片上系统。
背景技术
数据拼接转换在硬件架构上是很常见的需求,转换效率直接关乎整个硬件系统的运行效率。特别是对于例如神经网络计算平台的高带宽系统,数据转换对效率的影响更加明显。现有的数据拼接方案多是基于输入数据的直接拼接,其通常无法很好地处理输入位宽和输出位宽之差带来的读取效率损失。
因此,仍然需要一种能够优化数据拼接操作的相关方案。
发明内容
为了解决上述至少一个问题,本发明提出了一种新的数据拼接方案,该方案通过合理配置寄存器数量和指针位置,能够高效利用每个时钟节拍送入的数据,以实现对于高带宽系统(例如,神经网络计算平台)至关重要的数据高效转换。
根据本发明的一个方面,提出了一种数据拼接结构,用于将输入的M位宽数据拼接成N位宽数据进行输出,其中N≥M,包括:K个宽为M的缓存寄存器,其中M位宽的数据从K个缓存寄存器的尾端输入,以N位宽从所述K个缓存寄存器的首端输出,并且其中K=ceil(N/M)+1,ceil表示向上取整;指针寄存器,用于存储指示当前要读取的N位宽数据的起点的指针,其中所述指针的移动范围限于首段缓存寄存器内。
通过额外增加一个缓存寄存器并将指针限制在首段,能够更有效率和条理地实现数据拼接。
优选地,每一个时钟节拍都有一个新的M位宽数据输入尾段缓存寄存器,并且所述K个缓存寄存器中的已有数据依次向首端前移一个缓存寄存器。相应地,仅在所述首段缓存寄存器内包含有效数据的时钟节拍下触发对位于所述K个缓存寄存器首端的N位宽数据的读取。由此确保对输入带宽的完全利用和对输出数据的合理读取。
本发明的数据拼接结构还可以包括:首段缓存有效数据计数器,用于对所述首段缓存寄存器内包含的有效数据进行计数;进一步地,还可以包括:全局缓存有效数据计数器,用于对所述K个缓存寄存器内包含的有效数据进行计数。
在所述首段缓存有效数据计数器和所述全局缓存有效数据计数器的计数值相同且都为a的情况下,仅将读取的N位宽数据中的前a位的数据作为有效数据。由此,可以在传输结束时确保对有效数据的准确读取。
根据本发明的另一个方面,提供了一种片上系统,包括经由总线连接的多个模块,其中在特定模块内部位宽大于或等于总线位宽的情况下,在所述特定模块和所述总线之间布置如上所述的数据拼接结构。
特定模块可以包括用于神经网络计算推理的高并行度计算模块。片上系统则可由ASIC、FPGA或GPU实现。
优选地,输入的M位宽数据包括从通道方向读取的特征图数据,并且在所述特定模块内部重排成N位宽数据。由此,上述数据重排不会对数据处理效率带来任何阻碍。
根据本发明的再一个方面,提供了一种数据拼接方法,用于将输入的M位宽数据拼接成N位宽数据进行输出,其中N≥M,包括:将M位宽的数据从K个宽为M的缓存寄存器的尾端输入,用于以N位宽从所述K个缓存寄存器的首端输出,其中K=ceil(N/M)+1,ceil表示向上取整;以及基于移动范围限于首段缓存寄存器内且指示前要读取的N位宽数据的起点的指针,读取指针所示位置起的N位宽数据。
将M位宽的数据从K个宽为M的缓存寄存器的尾端输入可以包括:在每一个时钟节拍将一个新的M位宽数据输入尾段缓存寄存器,并使得所述K个缓存寄存器中的已有数据依次向首端前移一个缓存寄存器。
读取指针所示位置起的N位宽可以包括:仅在所述首段缓存寄存器内包含有效数据的时钟节拍下触发对位于所述K个缓存寄存器首端的N位宽数据的读取。首段缓存寄存器内包含有效数据可由首段缓存有效数据计数器进行计数。
优选地,读取指针所示位置起的N位宽数据还可包括:在所述首段缓存寄存器内包含的有效数据与所述K个缓存寄存器内包含的有效数据计数值相同且都为a的情况下,仅将读取的N位宽数据中的前a位的数据作为有效数据。K个缓存寄存器内包含的有效数据由全局缓存有效数据计数器进行计数。
根据本发明的另一个方面,提供了一种片上系统操作方法,所述片上系统包括经由总线连接的多个模块,其中在特定模块内部位宽大于或等于总线位宽的情况下,所述片上系统在所述特定模块和所述总线之间执行如上所述的数据拼接方法。该方法还可以优选地包括从通道方向读取的特征图数据作为输入的M位宽数据。
根据本发明的又一个方面,提出了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的数据拼接方法。
根据本发明的另一个方面,提出了一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的数据拼接方法。
使用根据本发明的数据拼接方案,能够高效利用每一个时钟节拍输入的数据,并对其进行合理的处理,以实现对于高带宽系统(例如,神经网络计算平台)至关重要的数据高效转换。该方案可以简单地通过将指针限制在首段寄存器内并相应地增加一个寄存器来实现对输入数据的无间歇利用,并且通过对首段和全体队列内有效数据的计数,实现高效且准确的数据拼接和读取。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了需要数据拼接转换的一个场景例。
图2示出了需要重新组织的数据传输流。
图3示出了根据本发明一个实施例的数据拼接结构的示意图。
图4示出了根据本发明另一个实施例的数据拼接结构的示意图。
图5A-5C示出了根据本发明的数据拼接方案进行数据拼接的例子。
图6示出了特征图读取和重排的一个例子。
图7示出了根据本发明一个实施例的数据拼接方法的流程示意图。
图8示出了根据本发明一个实施例可用于实现上述拼接方法的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
数据拼接转换在硬件架构上是很常见的需求,转换效率直接关乎整个硬件系统的运行效率。特别是对于例如神经网络计算平台的高带宽系统,数据转换对效率的影响更加明显。
数据拼接转换的一个常见的应用场景是片上系统。典型的片上系统(SoC,Systemon Chip)设计由多个模块(例如,IP)组成,例如可以包如CPU、GPU、USB控制器、PCIE控制器、DDR控制器等。各个IP通过片上总线互联以实现相互通信。实际应用中有可能出现总线数据位宽与IP内部使用的数据位宽不一致问题。图1示出了需要数据拼接转换的一个场景例。如图1所示,总线数据位宽M,IP内部数据位宽N,且N>=M。当位宽为M的数据经由总线输入时,需要将其位宽更改为N以供IP内部进行后续处理。在此,数据位宽的计数单位可以基于任意规则确定,例如,可以以比特、4比特或是字节等为单位,本发明对此不做限制。
图2示出了需要重新组织的数据传输流。如图2所示,从总线输入的数据流由多个传输块组成。作为有效数据的传输块之间存在一定量的无效数据。本发明提出了一种高效率的数据位宽拼接结构,以便将有效数据切分成多个位宽为N的数据段。
图3示出了根据本发明一个实施例的数据拼接结构300的示意图。该结构可以用于高效率地将输入的M位宽数据拼接成N位宽数据进行输出,其中N≥M。数据拼接结构300可以包括K个宽为M的缓存寄存器310以及用于存储指示当前要读取的N位宽数据的起点的指针的指针寄存器320。
如图3所示,K个缓存寄存器从尾端至首端依次编号为K-1,…,2,1,0,其中将第K-1个缓存寄存器称为尾段缓存寄存器,将第0个缓存寄存器称为首段缓存寄存器。M位宽的数据从K个缓存寄存器的尾端输入,以N位宽从所述K个缓存寄存器的首端输出,并且其中K=ceil(N/M)+1,ceil表示向上取整。例如,ceil(3.2)=4。指针寄存器(PTR)310用于存储指向当前需要切块的位宽为N的数据段的起点的指针。在本发明中,将指针的移动范围限于首段缓存寄存器内。
虽然通常情况下K=ceil(N/M)就能够确保缓存下足够的输入数据,但上述配置并不能应对每一时钟节拍都有M位宽的数据输入的情况。相比之下,本发明通过将K增加为ceil(N/M)+1,并将指针保持在首段缓存寄存器内,就能够在确保每一时钟节拍都有M位宽输入的情况下实现对N位宽数据的高效输出,从而实现数据转换效率的最大化。
具体地,每一个时钟节拍都有一个新的M位宽数据输入尾段缓存寄存器310_K-1,并且K个缓存寄存器中的已有数据依次向首端前移一个缓存寄存器。
由于指针的指示范围被限制在首段缓存寄存器内,因此仅在首段缓存寄存器310_0内包含有效数据的时钟节拍下触发对位于K个缓存寄存器首端的N位宽数据的读取。换句话说,当某一时钟节拍下的读取导致前两个寄存器内的数据都被取空时,下一节拍需要填充缓存寄存器310_1内的数据,因此该节拍下无数据输出。在一个实施例中,可以使用首段缓存有效数据计数器来对所述首段缓存寄存器内包含的有效数据进行计数。在另一个实施例中,本发明的数据拼接结构还可以可变全局缓存有效数据计数器,后者可用于对所述K个缓存寄存器内包含的有效数据进行计数。
图4示出了根据本发明另一个实施例的数据拼接结构400的示意图。除了K个缓存寄存器410和指针寄存器420之外,该结构还包括首段缓存有效数据计数器(Counter_F)420和全局缓存有效数据计数器(Counter_F)430。全局缓存有效数据计数器430内的计数有助于在传输结束时做出正确反映。例如,在如图2所示的每一个传输块传输结束时后接无效数据。随着K个缓存寄存器逐渐被读空,在所述首段缓存有效数据计数器和所述全局缓存有效数据计数器的计数值相同(例如,都为a)的情况下,仅将读取的N位宽数据中的前a位的数据作为有效数据。由此防止对无效数据的误读。
为了进一步明确本发明的计算方案,图5示出了根据本发明的数据拼接方案进行数据拼接的例子。在此,输入数据的位宽M=8,输出数据的位宽N=11,因此K=ceil(11/8)+1=3。
如图5A所示,第一行表示传输块开始,此时三个缓存寄存器都为空。
随后,在第一时钟节拍,8位宽数据送入尾端缓存寄存器,此时队列内有效数字(例如,全局缓存有效数据计数器的计数值)为8,首段内有效数字(例如,首段缓存有效数据计数器的计数值)为0。由于首段内无有效数字,所以没有数据输出。
在第二时钟节拍,8位宽数据送入尾端缓存寄存器,已有的8位宽数据前移至中段缓存寄存器,此时队列内有效数字为16,首段内有效数字仍然为0。由于首段内无有效数字,所以没有数据输出。
在第三时钟节拍,8位宽数据送入尾端缓存寄存器,已有的16位宽数据依次前移缓存寄存器,此时队列内有效数字为24,首段内有效数字变为8,因此触发对数据的读取。
在第四时钟节拍,读取前11位数据,同时8位宽数据送入尾端缓存寄存器,已有的13位宽数据依次前移缓存寄存器,此时队列内有效数字为21,首段内有效数字变为5,因此触发对数据的读取。
在第五时钟节拍,读取前11位数据,同时8位宽数据送入尾端缓存寄存器,已有的10位宽数据依次前移缓存寄存器,此时队列内有效数字为18,首段内有效数字变为2,因此触发对数据的读取。
在第六时钟节拍,读取前11位数据,同时8位宽数据送入尾端缓存寄存器,已有的7位宽数据前移至中段缓存寄存器,此时队列内有效数字为15,首段内有效数字变为0,因此下一拍不触发对数据的读取。
在第七时钟节拍,不读取数据,同时8位宽数据送入尾端缓存寄存器,该传输块传输结束。已有的15位宽数据依次前移缓存寄存器,此时队列内有效数字为23,首段内有效数字变为7,因此触发对数据的读取。
图5B示出了传输块传输结束后的操作的一个例子。
上接图5A,在第八时钟节拍,读取前11位数据,剩余的12位宽数据前移至首段和中段缓存寄存器,此时队列内有效数字为12,首段内有效数字为4,因此触发对数据的读取。
在第九时钟节拍,读取前11位数据,剩余的1位宽数据前移至首段缓存寄存器,此时队列内有效数字为1,首段内有效数字为1,因此触发对数据的读取。
在第十时钟节拍,由于队列内有效数字和首段内有效数字都为1,因此仅将读取的第一位数字看作有效数字。此时队列内有效数字和首段内有效数字都为0,该传输块数据读取结束。
图5C示出了传输块传输结束后的操作的另一个例子。
在图示的第一时钟节拍(可以理解的是,这并非是该传输块传输的第二节拍),该传输块传输结束。队列内有效数字为18,首段内有效数字为2,因此触发对数据的读取。
在图示的第二时钟节拍,读取前11位数据,剩余的7位宽数据前移至中段缓存寄存器,此时队列内有效数字为7,首段有效数字变为0,因此下一拍不触发对数据的读取。
在图示的第三时钟节拍,不读取数据,剩余的7位宽数据前移至首段缓存寄存器,此时队列内有效数字为7,首段内有效数字变为7,因此触发对数据的读取。
在图示的第四时钟节拍,由于队列内有效数字和首段内有效数字都为7,因此仅将读取的前7位数字看作有效数字。此时队列内有效数字和首段内有效数字都为0,该传输块数据读取结束。
由上可知,本发明的数据拼接方案尤其适用于包括经由总线连接的多个模块并且其中存在特定模块内部位宽大于或等于总线位宽的片上系统。这时,可以在所述特定模块和所述总线之间布置如上所述的数据拼接结构。
在一个实施例中,该特定模块包括用于神经网络计算推理的高并行度计算模块。由此,该片上系统可由适用于高并行度计算的ASIC、FPGA或GPU实现。在上述用于进行高并行度计算的片上系统中,由于带宽通常成为系统效率的瓶颈,因此引入本发明所述的高效数据拼接结构成为确保系统整体效率的关键。
在用于神经网络计算的一个例子中,输入的M位宽数据包括从通道方向读取的特征图数据。图6示出了特征图读取和重排的一个例子。
典型的CNN由一系列有序运行的层组成。CNN模型的参数被称为“权重”。CNN的第一层读取输入图,并输出一系列的特征图。下面的层读取由上一层产生的特征图,并输出新的特征图。最后一个分类器输出输入图可能属于某一类别的概率。CONV层(卷积层)和FC层(全连层)是CNN中两种基本层类型。CONV层后通常接有池化层。
因此,特征图是在神经网络的各层计算中传递的数据。在神经网络计算中,特征图通常包括如图6所示的长(height)、宽(width)、通道(channels)三个维度。图6示出了逐一读取每个像素的所有通道数据的读取方式。因此,如图6所示从通道方向读取特征图数据再重排成用于特定IP(例如,卷积计算模块)中进行运算的数据并不会由于数据重排的方式而对系统效率造成任何不利影响。
如上结合图3-6描述了根据本发明的数据拼接结构及其片上应用。在一个实施例中,本发明的数据拼接方案还可以是一种数据拼接方法。图7示出了根据本发明一个实施例的数据拼接方法的流程示意图。
该数据拼接方法700用于将输入的M位宽数据拼接成N位宽数据进行输出,其中N≥M。在步骤S710,将M位宽的数据从K个宽为M的缓存寄存器的尾端输入,用于以N位宽从所述K个缓存寄存器的首端输出,其中K=ceil(N/M)+1,ceil表示向上取整。随后,在步骤S720,基于移动范围限于首段缓存寄存器内且指示前要读取的N位宽数据的起点的指针,读取指针所示位置起的N位宽数据。
在一个实施例中,步骤S710还可以包括:在每一个时钟节拍将一个新的M位宽数据输入尾段缓存寄存器,并使得所述K个缓存寄存器中的已有数据依次向首端前移一个缓存寄存器。由此确保最高的位宽转换效率。
在一个实施例中,步骤S720还可以包括:仅在所述首段缓存寄存器内包含有效数据的时钟节拍下触发对位于所述K个缓存寄存器首端的N位宽数据的读取。首段缓存寄存器内包含有效数据可由首段缓存有效数据计数器进行计数。
在一个实施例中,步骤S720还可以包括:在所述首段缓存寄存器内包含的有效数据与所述K个缓存寄存器内包含的有效数据计数值相同且都为a的情况下,仅将读取的N位宽数据中的前a位的数据作为有效数据。K个缓存寄存器内包含的有效数据则可由全局缓存有效数据计数器进行计数。
在另一个实施例中,本发明还涉及一种片上系统操作方法,所述片上系统包括经由总线连接的多个模块,其中在特定模块内部位宽大于或等于总线位宽的情况下,所述片上系统在所述特定模块和所述总线之间执行如上所述的数据拼接方法。该片上系统操作方法还可以包括从通道方向读取的特征图数据作为输入的M位宽数据。
图8示出了根据本发明一个实施例可用于实现上述拼接方法的计算设备的结构示意图。
参见图8,计算设备800包括存储器810和处理器820。
处理器820可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器820可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器820可以使用定制的电路实现,例如特定用途集成电路(ASIC)或者现场可编程逻辑门阵列(FPGA)。
存储器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 (20)

1.一种数据拼接结构,用于将输入的M位宽数据拼接成N位宽数据进行输出,其中N≥M,包括:
K个宽为M的缓存寄存器,其中M位宽的数据从K个缓存寄存器的尾端输入,以N位宽从所述K个缓存寄存器的首端输出,并且其中K=ceil(N/M)+1,ceil表示向上取整;
指针寄存器,用于存储指示当前要读取的N位宽数据的起点的指针,其中所述指针的移动范围限于首段缓存寄存器内。
2.如权利要求1所述的结构,其中,每一个时钟节拍都有一个新的M位宽数据输入尾段缓存寄存器,并且所述K个缓存寄存器中的已有数据依次向首端前移一个缓存寄存器。
3.如权利要求2所述的结构,其中,仅在所述首段缓存寄存器内包含有效数据的时钟节拍下触发对位于所述K个缓存寄存器首端的N位宽数据的读取。
4.如权利要求3所述的结构,还包括:
首段缓存有效数据计数器,用于对所述首段缓存寄存器内包含的有效数据进行计数。
5.如权利要求4所述的结构,还包括:
全局缓存有效数据计数器,用于对所述K个缓存寄存器内包含的有效数据进行计数。
6.如权利要求5所述的结构,其中,在所述首段缓存有效数据计数器和所述全局缓存有效数据计数器的计数值相同且都为a的情况下,仅将读取的N位宽数据中的前a位的数据作为有效数据。
7.一种片上系统,包括经由总线连接的多个模块,其中在特定模块内部位宽大于或等于总线位宽的情况下,在所述特定模块和所述总线之间布置如权利要求1-6中任一项所述的数据拼接结构。
8.如权利要求7所述的系统,其中,所述特定模块包括用于神经网络计算推理的高并行度计算模块。
9.如权利要求7所述的系统,其中,所述片上系统由ASIC、FPGA或GPU实现。
10.如权利要求7所述的系统,其中,输入的M位宽数据包括从通道方向读取的特征图数据,并且在所述特定模块内部重排成N位宽数据。
11.一种数据拼接方法,用于将输入的M位宽数据拼接成N位宽数据进行输出,其中N≥M,包括:
将M位宽的数据从K个宽为M的缓存寄存器的尾端输入,用于以N位宽从所述K个缓存寄存器的首端输出,其中K=ceil(N/M)+1,ceil表示向上取整;以及
基于移动范围限于首段缓存寄存器内且指示前要读取的N位宽数据的起点的指针,读取指针所示位置起的N位宽数据。
12.如权利要求11所述的方法,其中,将M位宽的数据从K个宽为M的缓存寄存器的尾端输入包括:
在每一个时钟节拍将一个新的M位宽数据输入尾段缓存寄存器,并使得所述K个缓存寄存器中的已有数据依次向首端前移一个缓存寄存器。
13.如权利要求12所述的方法,其中,读取指针所示位置起的N位宽数据包括:
仅在所述首段缓存寄存器内包含有效数据的时钟节拍下触发对位于所述K个缓存寄存器首端的N位宽数据的读取。
14.如权利要求13所述的方法,其中所述首段缓存寄存器内包含有效数据由首段缓存有效数据计数器进行计数。
15.如权利要求13所述的方法,读取指针所示位置起的N位宽数据包括:
在所述首段缓存寄存器内包含的有效数据与所述K个缓存寄存器内包含的有效数据计数值相同且都为a的情况下,仅将读取的N位宽数据中的前a位的数据作为有效数据。
16.如权利要求15所述的方法,其中所述K个缓存寄存器内包含的有效数据由全局缓存有效数据计数器进行计数。
17.一种片上系统操作方法,所述片上系统包括经由总线连接的多个模块,其中在特定模块内部位宽大于或等于总线位宽的情况下,所述片上系统在所述特定模块和所述总线之间执行如权利要求11-16中任一项所述的数据拼接方法。
18.如权利要求17所述的方法,还包括:
从通道方向读取的特征图数据作为输入的M位宽数据。
19.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求11-18中任一项所述的方法。
20.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求11-18中任一项所述的方法。
CN201810547232.7A 2018-05-30 2018-05-31 数据拼接结构、方法及其片上实现 Active CN110554852B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810547232.7A CN110554852B (zh) 2018-05-31 2018-05-31 数据拼接结构、方法及其片上实现
PCT/IB2019/000791 WO2019229538A2 (zh) 2018-05-30 2019-05-30 数据转换结构、方法及其片上实现

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810547232.7A CN110554852B (zh) 2018-05-31 2018-05-31 数据拼接结构、方法及其片上实现

Publications (2)

Publication Number Publication Date
CN110554852A CN110554852A (zh) 2019-12-10
CN110554852B true CN110554852B (zh) 2021-11-12

Family

ID=68734331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810547232.7A Active CN110554852B (zh) 2018-05-30 2018-05-31 数据拼接结构、方法及其片上实现

Country Status (1)

Country Link
CN (1) CN110554852B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111599389B (zh) * 2020-05-13 2022-09-06 芯颖科技有限公司 数据存取方法、数据存取电路、芯片和电子设备
CN111949574B (zh) * 2020-06-30 2023-10-20 厦门汉印电子技术有限公司 一种总线位数的判断方法、装置、设备及可读存储介质
CN112073316B (zh) * 2020-09-09 2022-08-26 南京盛科通信有限公司 多通道位宽变化的数据传输系统、方法、设备和存储介质
CN112153054B (zh) * 2020-09-25 2023-04-07 超越科技股份有限公司 一种任意字节长度拼接缓存的实现方法和系统
CN113434545B (zh) * 2021-06-02 2022-11-18 中科驭数(北京)科技有限公司 数据缓存装置及数据提供方法
CN113343735B (zh) * 2021-08-05 2021-11-05 深圳市成为信息技术有限公司 一种读写器的标签处理方法、读写器及存储介质
CN116796685B (zh) * 2023-08-07 2024-02-09 深圳云豹智能有限公司 数据拼接模块及数据传递方法、介质、电子设备、芯片

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513105B1 (en) * 1999-05-07 2003-01-28 Koninklijke Philips Electronics N.V. FIFO system with variable-width interface to host processor
CN1859312A (zh) * 2006-04-12 2006-11-08 华为技术有限公司 一种ip报文分片重组的方法
CN1959661A (zh) * 2006-11-21 2007-05-09 北京中星微电子有限公司 一种总线接口装置和方法
EP2370937B1 (en) * 2008-11-26 2014-03-12 Danmarks Tekniske Universitet Biologically inspired hardware cell architecture
US9104510B1 (en) * 2009-07-21 2015-08-11 Audience, Inc. Multi-function floating point unit
CN105573711A (zh) * 2014-10-14 2016-05-11 深圳市中兴微电子技术有限公司 一种数据缓存方法及装置
CN106294234A (zh) * 2016-08-01 2017-01-04 深圳云天励飞技术有限公司 一种数据传输方法及装置
CN106502922A (zh) * 2016-10-28 2017-03-15 上海顺久电子科技有限公司 一种fifo数据缓存器的数据读写方法及数据缓存器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1756751A2 (en) * 2004-04-08 2007-02-28 Silicon Optix Method and apparatus for high density storage and handling of bit plane data
CN101162919B (zh) * 2006-10-11 2011-01-05 中兴通讯股份有限公司 一种数据缓存电路

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513105B1 (en) * 1999-05-07 2003-01-28 Koninklijke Philips Electronics N.V. FIFO system with variable-width interface to host processor
CN1859312A (zh) * 2006-04-12 2006-11-08 华为技术有限公司 一种ip报文分片重组的方法
CN1959661A (zh) * 2006-11-21 2007-05-09 北京中星微电子有限公司 一种总线接口装置和方法
EP2370937B1 (en) * 2008-11-26 2014-03-12 Danmarks Tekniske Universitet Biologically inspired hardware cell architecture
US9104510B1 (en) * 2009-07-21 2015-08-11 Audience, Inc. Multi-function floating point unit
CN105573711A (zh) * 2014-10-14 2016-05-11 深圳市中兴微电子技术有限公司 一种数据缓存方法及装置
CN106294234A (zh) * 2016-08-01 2017-01-04 深圳云天励飞技术有限公司 一种数据传输方法及装置
CN106502922A (zh) * 2016-10-28 2017-03-15 上海顺久电子科技有限公司 一种fifo数据缓存器的数据读写方法及数据缓存器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SoC调试跟踪系统的设计与实现;徐文昌;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130415;I135-182 *

Also Published As

Publication number Publication date
CN110554852A (zh) 2019-12-10

Similar Documents

Publication Publication Date Title
CN110554852B (zh) 数据拼接结构、方法及其片上实现
US11907830B2 (en) Neural network architecture using control logic determining convolution operation sequence
KR101687081B1 (ko) 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치
KR101908768B1 (ko) 상태 기계 엔진에 의해 수신된 데이터를 핸들링하기 위한 방법들 및 시스템들
US9582426B2 (en) Hardware managed compressed cache
US20120182163A1 (en) Data compression devices, operating methods thereof, and data processing apparatuses including the same
CN101473308A (zh) 非易失性存储器纠错系统和方法
US9766820B2 (en) Arithmetic processing device, information processing device, and control method of arithmetic processing device
RU2015151128A (ru) Процессоры, способы, системы и инструкции для транскодирования точек кода переменной длины знаков unicode
US11714651B2 (en) Method and tensor traversal engine for strided memory access during execution of neural networks
US20170371811A1 (en) Systems and devices for accessing a state machine
US11947979B2 (en) Systems and devices for accessing a state machine
JP2017027149A (ja) 半導体装置
WO2020257748A1 (en) Dma-scatter and gather operations for non-contiguous memory
KR101747794B1 (ko) 에러 정정 디코더 및 그것의 에러 정정 방법
CN110554886B (zh) 数据拆分结构、方法及其片上实现
WO2019229538A2 (zh) 数据转换结构、方法及其片上实现
US10637780B2 (en) Multiple datastreams processing by fragment-based timeslicing
KR102425596B1 (ko) 로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법
US9740428B1 (en) Circular buffer descriptor for describing and/or accessing a circular buffer
JP2007140858A (ja) メモリアクセス方法及びメモリアクセス装置
US11381250B2 (en) Decode device
CN115905038B (zh) 缓存数据读取方法、装置、计算机设备和存储介质
CN110190934B (zh) 一种数据打孔的方法及设备
US9413391B2 (en) Chien search device, storage device, and chien search method

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