CN112866181A - 数据解码装置、加速器、以及片上系统 - Google Patents

数据解码装置、加速器、以及片上系统 Download PDF

Info

Publication number
CN112866181A
CN112866181A CN201911188894.0A CN201911188894A CN112866181A CN 112866181 A CN112866181 A CN 112866181A CN 201911188894 A CN201911188894 A CN 201911188894A CN 112866181 A CN112866181 A CN 112866181A
Authority
CN
China
Prior art keywords
data
decoding
value
original
index
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
Application number
CN201911188894.0A
Other languages
English (en)
Other versions
CN112866181B (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.)
Shanghai Sensetime Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Intelligent Technology Co Ltd
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 Shanghai Sensetime Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Intelligent Technology Co Ltd
Priority to CN201911188894.0A priority Critical patent/CN112866181B/zh
Publication of CN112866181A publication Critical patent/CN112866181A/zh
Application granted granted Critical
Publication of CN112866181B publication Critical patent/CN112866181B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Abstract

本公开提供了一种数据解码装置、加速器、以及片上系统,其中,数据解码装置用于对编码数据进行解码处理,该数据解码装置包括:译码器、以及与所述译码器连接的多个选择器,其中,所述译码器,用于获取多个目标索引数据,生成与所述多个目标索引数据中每个目标索引数据对应的数据选择控制信息,并将与每个目标索引数据对应的数据选择控制信息传输至与所述每个目标索引数据对应的选择器;所述选择器,用于基于所述译码器传输的所述每个目标索引数据对应的数据选择控制信息,得到所述每个目标索引数据对应的解码结果。该装置能够提升对编码数据进行解码的效率。

Description

数据解码装置、加速器、以及片上系统
技术领域
本公开涉及数据处理技术领域,具体而言,涉及一种数据解码装置、加速器、以及片上系统。
背景技术
在深度学习领域中,通常采用加速器来实现神经网络模型的训练任务、或者数据处理任务的加速执行。例如多个加速器分别与总控中央处理器(Central ProcessingUnit,CPU)连接,总控CPU能够将不同的计算任务分配到不同的加速器;任一加速器在接收到总控中央处理器分配的计算任务后,基于计算任务对存储器中存储的数据进行读取操作,并基于读取的数据执行相应计算任务,并在执行完相应计算任务后,将执行计算任务生成的结果再写入到存储器中。而随着分担的计算任务的增加,加速器需要频繁对存储器中的数据进行存取,而加速器与存储器之间的传输带宽有限,导致加速器与存储器的数据传输逐渐成为制约提升神经网络计算速度与能效的重要问题。
为了节省加速器与存储器之间的传输带宽,通常需要对数据进行压缩,生成编码数据之后传输;在对编码数据进行解码时,解码效率较低,影响加速器的计算任务处理效率。
发明内容
本公开实施例至少提供一种数据解码装置、加速器、以及片上系统。
第一方面,本公开实施例提供了一种数据解码装置,用于对编码数据进行解码处理,所述装置包括:译码器、以及与所述译码器连接的多个选择器,其中,所述译码器,用于获取多个目标索引数据,生成与所述多个目标索引数据中每个目标索引数据对应的数据选择控制信息,并将与每个目标索引数据对应的数据选择控制信息传输至与所述每个目标索引数据对应的选择器;所述选择器,用于基于所述译码器传输的所述每个目标索引数据对应的数据选择控制信息,得到所述每个目标索引数据对应的解码结果。
这样,能够通过硬件方式对编码数据进行解码,不需要消耗加速器的计算资源,且在解码的时候,每一个时钟周期均能够解压出多个数据,提升解码的效率,提升加速器执行计算任务的效率。
一种可选实施方式中,所述编码数据是通过对待处理图像或所述待处理图像的特征图进行编码处理得到的。
一种可选实施方式中,还包括:输出部件,用于输出所述多个目标索引数据中每个目标索引数据对应的解码结果。
一种可选实施方式中,所述选择器,在基于所述译码器传输的所述每个目标索引数据对应的数据选择控制信息,得到所述每个目标索引数据对应的解码结果时,用于:在所述数据选择控制信息为第一控制信息的情况下,将预设数据作为所述解码结果;和/或,在所述数据选择控制信息为第二控制信息的情况下,从所述编码数据包括的数值序列中获取目标数值作为所述解码结果。
这样,通过第一控制信息和第二控制信息,控制解码结果的输出,能够准确得到解码数据。
一种可选实施方式中,所述第二控制信息包括数据偏移指示信息,所述选择器,在从所述编码数据包括的数值序列中获取目标数值作为所述解码结果的情况下,用于:基于所述第二控制信息中的数据偏移指示信息,确定所述目标数值在多个备选数值中的位置,并基于所述位置从所述多个备选数值中获取所述目标数值作为所述解码结果;其中,所述多个备选数值,为所述数值序列中连续的多个非零原始数据值。
这样,通过数据偏移指示信息,能够从数据序列中准确确定目标数值,以得到准确的解码结果。
一种可选实施方式中,还包括:数值存储器,用于存储所述数值序列;所述选择器在从所述编码数据包括的数值序列中获取目标数值作为所述解码结果的情况下,用于:从所述数值存储器存储的数值序列中获取所述目标数值。
一种可选实施方式中,所述数值存储器,还用于获取第一推进数据,并基于所述第一推进数据,确定所述多个备选数值在所述数值序列中的起始位置。
这样,通过第一推进数据,能够实现对数值序列的推进,保证数值序列被有序无误的读取到第一选择部件中,以保证数值序列有序无误的被解码。
一种可选实施方式中,所述第一控制信息包括第一数据类型指示信息,所述第一数据类型指示信息用于指示对应的原始数据值为0;所述第二控制信息包括第二数据类型指示信息,所述第二数据类型指示信息用于指示对应的原始数据值不为0。
一种可选实施方式中,所述选择器包括第一选择部件和第二选择部件;所述第一选择部件,用于在所述数据选择控制信息为所述第二控制信息的情况下,从所述编码数据包括的数值序列中获取目标数值,并将获取的目标数值传输至所述第一选择部件;所述第二选择部件,用于在所述数据选择控制信息为第二控制信息的情况下,将从所述第二选择部件中获取目标数值作为所述解码结果。
一种可选实施方式中,所述第一选择部件和/或所述第二选择部件,还用于基于所述数据选择控制信息中包括的数据类型指示信息,确定所述数据选择控制信息为所述第一控制信息或所述第二控制信息。
一种可选实施方式中,还包括:数据填充器;所述数据填充器,用于获取所述编码数据包括的多个原始索引数据,对所述多个原始索引数据进行数据填充处理,得到所述多个目标索引数据,并将所述多个目标索引数据传输至所述译码器。
这样,能够在对编码数据进行解码的同时,完成数据填充过程,同样不需要消耗加速器的计算资源,且将数据填充过程和解码过程一起执行,降低数据填充过程对加速器计算资源的消耗,进一步提升加速器在执行计算任务时的效率。
一种可选实施方式中,所述数据填充器,在对所述多个原始索引数据进行数据填充处理时,用于:确定是否对所述多个原始索引数据进行填充。
一种可选实施方式中,还包括:索引存储器,用于存储所述编码数据包括的索引序列;所述数据填充器,在获取所述编码数据包括的多个原始索引数据时,用于:从所述索引存储器获取所述多个原始索引数据。
一种可选实施方式中,所述索引存储器,还用于获取第二偏移数据,并基于所述第二偏移数据,确定所述多个原始索引数据在所述索引序列中的位置。
一种可选实施方式中,所述数据填充器,还用于生成所述第二偏移数据,并将所述第二偏移数据传输至所述索引存储器。
这样,通过第二偏移数据,能够实现对索引序列的推进,进而保证了索引序列被有序无误的读取到数据填充器中,保证数据填充逻辑的有序无误、且迅速的执行。
一种可选实施方式中,所述数据填充器,在对所述多个原始索引数据进行数据填充时,用于:根据图像尺寸信息和填充宽度信息,确定对所述编码数据包括的索引序列进行填充的数据填充位置以及数据填充数量;基于所述数据填充位置、所述数据填充数量以及所述多个原始索引数据对应的位置信息,对所述多个原始索引数据进行数据填充处理。
一种可选实施方式中,所述数据填充器用于对所述索引序列依次进行头部填充、中部填充和尾部填充。
这样,通过将索引序列划分为三部分,实现对搜音序列的快速填充。
一种可选实施方式中,所述数据填充器,在对所述多个原始索引数据进行数据填充处理之前,还用于:基于填充部位指示信息,从多个填充部位中,确定当前填充对应的目标填充部位,其中,所述多个填充部位包括头部、中部以及尾部;所述数据填充器,在对所述多个原始索引数据进行数据填充时,用于:根据所述目标填充部位当前得到的填充后的数据的位置信息以及所述目标填充部位的目标填充数据信息,对所述多个原始索引数据进行数据填充处理。
一种可选实施方式中,所述数据填充器,在确定填充索引数据相对所述多个原始索引数据的填充位置时,用于:基于图像尺寸信息、填充宽度信息,确定多个填充部位中每个填充部位对应的填充数据图样;基于所述多个填充部位中每个填充部位的填充数据图样以及所述多个原始索引数据在所述索引序列中的位置,确定填充索引数据相对所述多个原始索引数据的填充位置。
一种可选实施方式中,所述多个目标索引数据包括所述编码数据包括的多个原始索引数据和/或填充的至少一个填充索引数据。
第二方面,本公开实施例还提供一种加速器,包括:加速部件、以及如上述第一方面任一项所述的数据解码装置;其中,所述数据解码装置用于对编码数据进行解码,并将生成的解码数据传输至所述加速部件;所述加速部件用于基于所述解码数据执行加速任务。
第三方面,本公开实施例还提供一种片上系统(System On a Chip,SOC)包括:加速器、以及第一方面任一项所述的数据解码装置;所述数据解码装置,用于对编码数据进行解码,生成解码数据;所述加速器用于基于获取所述解码数据,并基于所述解码数据执行加速任务。
一种可选实施方式中,还包括:解码数据存储器;所述解码数据存储器,用于存储所述数据解码装置对所述编码数据进行解码后生成的解码数据;所述加速器,用于从所述解码数据存储器中获取所述解码数据,并基于所述解码数据执行所述加速任务。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种数据解码装置的示意图;
图2示出了本公开实施例所提供的另一种数据解码装置的示意图;
图3示出了本公开实施例所提供的另一种数据解码装置的示意图;
图4示出了本公开实施例所提供的一种加速器的示意图;
图5示出了本公开实施例所提供的一种片上系统的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,加速器在对编码数据进行解码时,通常采用下述两种解码方式:其一:通过硬件进行解码,但通过硬件进行解码的方式在一个时钟周期内,只能解压出单个数据,造成解码的效率较低。其二:通过软件进行解码,但通过软件进行解码的方式通常通过加速器的处理器来执行;通过软件进行解码通常也需要耗费较久的时间,造成解码的效率较低。
进一步地,在通过软件进行解码时,还需要加速器分配一定的计算资源用于对编码数据进行解码,这就相当于降低了加速器在执行计算任务时所能够提供的计算资源,进而降低了加速器执行计算任务的效率。
另外,在某些情况下,需要在对编码数据进行解码之后,对得到的解编码数据进行数据填充处理,这会更进一步增加加速器计算资源的消耗。
基于上述研究,本公开提供了一种数据解码装置、加速器及片上系统,能够通过硬件方式对编码数据进行解码,不需要消耗加速器的计算资源,且在解码的时候,每一个时钟周期均能够解压出多个数据,提升解码的效率,提升加速器执行计算任务的效率。
另外,本公开提供的数据解码装置,还能够在对编码数据进行解码的同时,完成数据填充过程,同样不需要消耗加速器的计算资源,且将数据填充过程和解码过程一起执行,降低数据填充过程对加速器计算资源的消耗,进一步提升加速器在执行计算任务时的效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据解码装置进行详细介绍,本公开实施例所提供的数据解码装置可以安装于深度学习领域,也可以用于其他需要对编码数据进行解码的领域。
本公开实施例中的编码数据包括:数值序列以及索引序列。在索引序列中,包括多个原始索引数据,在索引序列中的每个原始索引数据用于指示该原始索引数据对应的编码前的原始数据值是否为零;所述数值序列中的每个数据值为所述索引序列中指示的非零的原始数据值。
其中,原始数据值是指压缩前的原始数据中各个原始数据的值;对原始数据进行压缩,即得到编码数据。计算机以二进制对各个原始数据值进行存储,例如每个原始数据值被存储为8位二进制数,16位二进制数。
例如在将原始数据值以8位二进制数进行存储的情况下:
原始数据值为0时,对应的二进制数为:00000000;
原始数据值为1时,对应的二进制数为:00000001;
原始数据值为2时,对应的二进制数为:00000010;
原始数据值为3时,对应的二进制数为:00000011;
原始数据值为4时,对应的二进制数为:00000100;
原始数据值为5时,对应的二进制数为:00000101;
原始数据值为6时,对应的二进制数为:00000110;
原始数据值为7时,对应的二进制数为:00000111;
原始数据值为8时,对应的二进制数为:00001000;
原始数据值为9时,对应的二进制数为:00001001。
因此,例如编码前的原始数据值依次为:0、0、7、0、0、4、0、0、0、0、9、8、0、2、0、0,共计16个原始数据值,则在计算机中被存储为:00000000、00000000、00000111、00000000、00000000、00000100、00000000、00000000、00000000、00000000、00001001、00001000、00000000、00000010、00000000、00000000。每一个原始数据值的大小为8bit,而16个数据值共计128bit。
在对原始数据值进行编码后,生成数值序列以及索引序列。
其中,数值序列为:7、4、9、8、2,在计算机中仍然以8位的二进制数据进行存储;5个数据值共计30bit;
得到的索引序列为:0、0、1、0、0、1、0、0、0、0、1、1、0、1、0、0。索引序列中由于仅包括0和1,因此直接存储,16个原始索引数据共计16bit。
其中,索引序列中的每个原始索引数据,与原始数据中的原始数据值一一对应。且当原始索引数据为0时,表征与该原始索引数据对应的原始数据值为0;原始索引数据为1时,表征与该原始索引数据对应的原始数据值不为0。且原始索引数据中,第i个为1的原始索引数据,与数值序列中的第i个非零的原始数据值对应。
这样,上述原始数据在经过编码生成的编码数据后,共计56bit,实现了对原始数据的压缩。
例如,在深度学习领域中的神经网络的特征图(feature map)通常具有稀疏特性,也即,构成特征图中的元素存在大量元素值为0的情况。将特征图中的每个元素的元素值作为本公开实施例中的原始数据值,对特征图进行压缩,能够生成本公开实施例中的编码数据。另外,也可以直接对待处理图像进行编码,得到编码数据。
另外,在其他领域,若原始数据也具有稀疏特性,也即构成原始数据的原始数据值存在大量为0的情况,也能够对其进行压缩,生成本公开实施例中的编码数据。
下面对本公开实施例提供的数据解码装置加以详细说明。
参见图1所示,为本公开实施例提供的数据解码装置的示意图。包括:译码器10、与该译码器10连接的多个选择器20。其中:
所述译码器10,用于获取多个目标索引数据,生成与所述多个目标索引数据中每个目标索引数据对应的数据选择控制信息,并将与每个目标索引数据对应的数据选择控制信息传输至与所述每个目标索引数据对应的选择器20;
所述选择器20,用于基于所述译码器10传输的所述每个目标索引数据对应的数据选择控制信息,得到所述每个目标索引数据对应的解码结果。
这里,上述译码器10以及选择器20获取多个目标索引数据对应的解码结果,是周期性进行的,也即,在每个周期,译码器都会获取多个目标索引数据,译码器10和选择器20基于上述过程,获取在该周期对应的多个目标索引数据对应的解码结果;在下一个周期达到后,译码器10会重新获得新的目标索引数据。
下面分别对译码器10、选择器20、以及两者之间的连接关系、逻辑关系加以详细说明。
译码器10中,例如包括有可编程逻辑门阵列。该可编程逻辑门阵列包括有多个数据输入端,通过该多个数据输入端,译码器10能够接收外界传输的目标索引数据。其中,数据输入端的数量,大于或者等于其能够接收的目标索引数据的数量。目标索引数据经过可编程逻辑门阵列处理后,生成与每个目标索引数据对应的数据选择控制信息。
在译码器10上,还包括有多个数据输出端,每个数据输出端连接一个选择器20,译码器10通过多个输出端将数据选择控制信息传输至对应的选择器20。
具体地,数据选择控制信息包括:用于控制选择器20是否将预设数据作为解码结果的控制信息。
在数据选择控制信息包括:第一控制信息的情况下,该数据选择控制信息用于指示将预设数据作为解码结果;在数据选择控制信息包括第二控制信息的情况下,该数据选择控制信息用于指示从编码数据包括的数值序列中获取目标数值作为解码结果。
示例性的,数据选择控制信息例如包括但不限于下述两种实现方式:
(1):将控制信息用cv表示,将第一控制信息设置为区别于第二选择控制信息的任一数据。将第二选择控制信息设置为用于指示目标数值在编码数据中位置的信息。
示例性的,该指示目标数值在编码数据中位置的信息为数据偏移指示信息。
在数据选择控制信息为第二选择控制信息的情况下,选择器20基于所述第二控制信息中的数据偏移指示信息,确定所述目标数值在多个备选数值中的位置,并基于所述位置从所述多个备选数值中获取所述目标数值作为所述解码结果;其中,所述多个备选数值,为所述数值序列中连续的多个非零原始数据值。
示例性的,在一个时钟周期内解码得到8个解码数据的情况下,第一控制信息为4位二进制数xxxx;第二选择控制信息为四位二进制数0001~1000中任一个。
例如获取的索引数据有a1~a8共8个,分别为:0、0、1、0、0、1、0、0,索引数据a1~a8对应的原始数据值分别为:0、0、7、0、0、4、0、0。其中,a4对应有非零原始数据值7,a6对应有原始数据值4。且数值序列包括:(7,4,5,4,3,3,3,2,6,4,7,9)。备选数值包括:7,4,5,4,3,3,3,2。
在该示例中,与各个索引数据对应的数据偏移值分别用一四位的二进制数进行表示,分别为:
a1对应的数据偏移值cv0为:xxxx;
a2对应的数据偏移值cv1为:xxxx;
a3对应的数据偏移值cv2为:0001;
a4对应的数据偏移值cv3为:xxxx;
a5对应的数据偏移值cv4为:xxxx;
a6对应的数据偏移值cv5为:0010;
a7对应的数据偏移值cv6为:xxxx;
a8对应的数据偏移值cv7为:xxxx。
其中,xxxx为预先设定的数据值,具体可以根据实际情况进行设定例如在xxxx为预先设定的数据值的情况下,例如在该示例中,由于可能存在索引数据的数据值均为1的情况,因此可以将xxxx设定为0000、1001~1111中任一一个二进制数值。
在该示例中,0001指示备选数值中的第一个非零的原始数据值;0010指示备选数值中的第二个原始的非零数据值。
也即,cv3:0001,用于指示索引数据a3对应有原始数据值7,cv6:0010,用于指示索引数据a6对应有原始数据值4。且指示了7和4的顺序关系为7在4之前。
当cv为0000时,指示选择器20输出对应的解码数据0;
当cv为0001~1000中任一个时,从多个备选数值中选择对应的目标数值进行输出。其中,0001指示将多个备选数值中中当前的第一位非零原始数据值作为对应的目标数值;0020指示将多个备选数值中中当前的第二位非零原始数据值作为对应的目标数值;……;1000指示将数值序列中当前的第八位非零原始数据值作为对应的目标数值。
另外,需要注意的是,当前的第一位非零原始数据,是基于解码的过程而确定,本申请实施例中,通过第一推进数据来控制确定所述多个备选数值在所述数值序列中的起始位置。例如,在第一个解码周期内,当前的第一位非零原始数据为数据序列中的第一个数据;若第一个解码周期内,已经将数据序列中的第一个和第二个数据解码,那么在第二个解码周期内,当前的第一位非零原始数据,为数据序列中的第三个数据。
具体的推进过程参见下述,在此不再赘述。
在该示例中,在将cv1~cv8分别输入至对应的选择器M1~M8后,输入至M1、M2、M4、M5、M7和M8的数据偏移值均为xxxx,因此选择器M1、M2、M4、M5、M7和M8均将预设数据作为解码结果输出。输入至M3的数据偏移值为0001,因此,M3会将第一个非零数据值7作为解码结果输出。输入至M6的数据偏移值为0010,因此,M6会将第二个非零数据值4作为解码结果输出。
另外,数据偏移值也可以用更多位的二进制数进行表示,例如当获取的索引数据有16个时,4位的二进制数无法在16个索引数据均为1的情况下,满足cv1~cv16以及xxxx的表示需求,因此可以将索引数据用8位二进制数进行表示。
又例如在xxxx为空的情况下,数据偏移值也可以用更少的位数表示,例如当N为8时,3位二进制数就能在索引数据的数据值均为1的情况下,满足使用需求,因此可以用3位二进制数来表示数据偏移值。
例如,在该种情况下,当cv为000时,指示第一个非零的原始数据值;cv为001时,指示第二个非零的原始数据值;……;当cv为111时,指示第八个非零的原始数据值。
(2):第一控制信息中,还包括:第一数据类型指示信息,所述第一数据类型指示信息用于指示对应的原始数据值为0;
所述第二控制信息还包括第二数据类型指示信息,所述第二数据类型指示信息用于指示对应的原始数据值不为0。
示例性的,数据类型指示信息用pi表示,pi=0时,表示为第一数据类型指示信息;当pi=1时,表示第二数据类型指示信息。
也即,当pi=0时,指示选择器20将预设数据作为解码结果;当pi=1时,指示选择器20从数值序列中获取目标数值作为解码结果。
例如在上述示例中,各个索引数据分别对应的数据类型指示信息分别用一位二进制数进行表示,分别为:
a1对应的数据类型指示信息pi0为:0;
a2对应的数据类型指示信息pi1为:0;
a3对应的数据类型指示信息pi2为:1;
a4对应的数据类型指示信息pi3为:0;
a5对应的数据类型指示信息pi4为:0;
a6对应的数据类型指示信息pi5为:1;
a7对应的数据类型指示信息pi6为:0;
a8对应的数据类型指示信息pi7为:0。
当pi为0的时候,对应的选择器20的输出为0;当pi为1的时候,对应的选择器20的输出对应的目标数值。
在该示例中,pi2为:1,指示对应的选择器20输出的目标数值为7;pi5为:1,指示对应的选择器20输出的目标数值为4。
这里需要注意的是,选择器的输出为二进制数,例如可以是8位的二进制数,或者16位的二进制数。
例如,与pi1对应的选择器20输出的二进制数为:00000000;与pi3对应的选择器的输出为:00000111,进而实现了对编码数据的解码。
在另一实施例中,还包括输出部件,用于输出所述多个目标索引数据中每个目标索引数据对应的解码结果。
输出部件例如为选择器20的输出端。
在一实施例中,参见图2所示,选择器20包括N个第一选择部件21,以及N个第二选择部件22。
所述译码器10包括N个第一输出端和N个第二输出端,其中,所述N个第一输出端与N个第一选择部件一一连接,所述N个第二输出端与N个第二选择部件一一连接;所述N个第一选择部件的输出端与所述N个第二选择部件的输入端一一连接;N为大于1的正整数。
所述第一选择部件21,用于在所述数据选择控制信息为所述第二控制信息的情况下,从所述编码数据包括的数值序列中获取目标数值,并将获取的目标数值传输至所述第二选择部件21;
所述第二选择部件22,用于在所述数据选择控制信息为第二控制信息的情况下,将从所述第一选择部件22中获取目标数值作为所述解码结果。
例如,在数据选择控制信息为第二控制信息的情况下:
第二控制信息包括:第二数据类型指示信息,以及数据偏移值。
译码器10将数据偏移值传输至第一选择部件21,并将第二数据类型指示信息传输至第二选择部件22。
第一选择部件21基于数据偏移值,从编码数据包括的数据序列中获取目标数值,并将获取的目标数值传输至第二选择部件22。
第二选择部件22根据第二数据类型指示信息,输出从第一选择部件21获取的目标数值作为解码结果。
在数据选择控制信息为第一控制信息的情况下:
第一控制信息包括:第一数据类型指示信息,以及第一控制信息。
译码器10将第一控制信息传输至第一选择部件21,并将第一数据类型指示信息传输至第二选择部件22。
第一选择部件21,基于第一控制信息,输出为空,或者输出设定的值xxxx。
第二选择部件22,基于第一数据类型指示信息,输出预设数据作为解码结果。
在另一实施例中,所述第一选择部件和/或所述第二选择部件,还用于基于所述数据选择控制信息中包括的数据类型指示信息,确定所述数据选择控制信息为所述第一控制信息或所述第二控制信息。
译码器10在周期性获取N个索引数据时,包括但不限于下述两种情况中任一种。
A:在不需要进行数据填充的情况下,译码器10可以从存储有索引序列的索引存储器中周期性的读取多个原始索引数据,并基于读取的多个原始索引数据实现编码数据的解码过程。
这里,该索引存储器可以是为数据解码装置单独设置的存储器,该存储器能够从加速器的外部接收并存储索引序列,或者从加速器中的存储器中接收并存储索引序列。
在索引存储其从加速器中的存储器中接收并存储索引序列的情况下,加速器中的存储器用于从加速器外部接收并存储索引序列。
该索引存储器还可以是加速器原有的存储器,能够从加速器的外部接收并存储索引序列;该加速器原有的存储器能够被数据解码装置读取和写入数据。
在该种情况下,由于不需要对由原始数据值构成的原始数据进行数据填充,因此译码器10周期性获取的N个索引数据中,仅包括N个原始索引数据。
B:在需要进行数据填充的情况下,这里,进行数据填充,是指对将编码数据进行解码所形成的原始数据进行数据填充。
例如,数据填充操作是在神经网络特征图的周围添加一定宽度的0;这里,在神经网络特征图的周围添加的0为填充数据。
假如神经网络特征图为n×m维,如下所示:
Figure BDA0002293075630000131
在其周围添加宽度为2的0后,所得到的进行了数据填充的神经网络特征图为(n+2)×(m+2)维,如下所示:
Figure BDA0002293075630000132
本公开实施例中,为了进一步降低加速器在对神经网络特征图进行数据填充时所消耗的计算资源,会在对编码数据进行解码的时候,实现数据填充处理。
在该种情况下,本公开一实施例中,通过对索引序列进行填充处理,并基于进行了填充处理的索引序列进行解码的方式,在实现对编码数据的解码的同时,同时实现数据填充处理。
进而,译码器10周期性获取的N个索引数据可能存在下述三种情况:
(1)仅包括N个填充索引数据;
(2)仅包括N个原始索引数据;
(3)既包括填充索引数据,又包括原始索引数据。
为了实现数据填充操作,参见图3所示,本公开另一实施例中,还包括:数据填充器30。
其中,数据填充器30的第一输出端与译码器10的输入端连接。
数据填充器30,用于获取所述编码数据包括的多个原始索引数据,对所述多个原始索引数据进行数据填充处理,得到所述多个目标索引数据,并将所述多个目标索引数据传输至所述译码器10。
例如,数据填充器30会周期性获取N个原始索引数据,并确定是否对所述多个原始索引数据进行填充处理;在需要对任一周期获取的N个原始索引数据进行数据填充处理的情况下,对所述任一周期获取的N个原始索引数据进行数据填充,基于数据填充结果得到N个索引数据,并将所述任一周期的N个索引数据传输给所述译码器10;在不需要对所述任一周期获取的N个原始索引数据进行数据填充处理的情况下,将所述任一周期获取的N个所述原始索引数据作为所述索引数据传输给所述译码器10。
在一种实施例中,数据填充器30用于采用下述方式对任一周期获取的N个原始索引数据进行数据填充:根据图像尺寸信息和填充宽度信息,确定对所述编码数据包括的索引序列进行填充的数据填充位置以及数据填充数量;基于所述数据填充位置、所述数据填充数量以及所述多个原始索引数据对应的位置信息,对所述多个原始索引数据进行数据填充处理。
这里,图像尺寸信息例如包括:特征图的原始高度和原始宽度。
在一种实施例中,数据填充器30包括可编程逻辑门阵列、运算器、以及存储器。其中,存储器用于存储在进行数据填充过程中所需要用到的各种数据,例如由原始数据值构成的特征图的图像尺寸信息、填充宽度、任一周期获取的N个原始索引数据在索引序列中的位置、确定的填充位置等。
其中,原始高度、原始宽度、以及填充宽度例如为预先设定的,或者与加速器连接的总控中央处理器即时传输的。
在原始高度、原始宽度、以及填充宽度为总控中央处理器即时传输的情况下,在总控中央处理器为加速器分配计算任务时,会将原始高度、原始宽度、以及填充宽度作为计算参数传入至数据解码装置中,或者传入至加速器,并由加速器传入数据解码装置中。
任一周期获取的N个原始索引数据在所述索引序列中的位置,则是由运算器在运算过程中生成,并写入到存储器中的。
运算器,用于从存储器中读取数据,并基于读取的各项数据确定填充索引数据相对任一周期获取的N个原始索引数据的填充位置。
示例性的,本公开实施例,提供一种运算器对获得的N个原始索引数据进行数据填充,并基于数据填充结果,生成索引数据的具体方法的示例,在该示例中,所述数据填充器30用于对所述索引序列依次进行头部填充、中部填充和尾部填充。
数据填充器30在进行数据填充处理之前,还用于:基于填充部位指示信息,从多个填充部位中,确定当前填充对应的目标填充部位,其中,所述多个填充部位包括头部、中部以及尾部;
所述数据填充器30,在对所述多个原始索引数据进行数据填充时,用于:根据所述目标填充部位当前得到的填充后的数据的位置信息以及所述目标填充部位的目标填充数据信息,对所述多个原始索引数据进行数据填充处理。
在该示例中,特征如图上述n×m维的神经网络特征图所示,原始高度为n,原始宽度为m,填充宽度为p,则对该神经网络特征图进行编码后,生成的索引序列为:(V1,V2,V3,…Vn×m);其中:
V1与a11对应;V2与a12对应;……;Vm与a1m对应;V(m+1)与a21;……;V(2m+1)与a31对应;……;Vn×m与anm对应。
该示例包括:N指多个目标索引数据的个数,n指图像高度。
在第R个周期,获取N个原始索引数据:Vi~Vi+N-1
确定第R-1个周期中得到的新的填充部位指示信息k的值。其中,填充部位指示信息k用于指示数据填充位置;其中,填充部位指示信息k所指示的该处理位置包括:特征图的头部、特征图的中部以及特征图的尾部中任一个;且当k为1时,指示的处理位置为特征图的头部;当k为2时,指示的处理位置为特征图的中部;当k为3时,指示的处理位置为特征图的尾部。且在第一个周期,k被初始化为1。
①:在k的值为1的情况下:
步骤1.1:将第R-1个周期确定的新的第二内部变量maddr第一数量指示信息,已经填充的数据总量(包括填充的数据量和原始数据量)地址与第一常数f1目标填充部位总共要填充的数据量-16(一个周期填充的数据量)进行比对;
若maddr小于f1,则执行步骤1.2;
若maddr等于f1,则执行下述步骤1.5(最后一次填充,最后一次原始数据量是16的倍数);
若maddr大于f1,则执行下述步骤1.8(最后一次填充,最后一次原始数据量不是16的倍数)。
其中,第一常数f1满足:f1=p×(m+2p)-p-N。其中,在第一个周期时,maddr被初始化为0。
步骤1.2:确定的填充索引数据相对该第R个周期获取的N个原始索引数据的填充位置为:Vi之前的N位。并执行下述步骤1.3和步骤1.4。
步骤1.3:在读取的第一个原始索引数据Vi之前填充N个填充索引数据,基于数据填充结果,生成在该第R个周期的N个索引数据。此时,所生成的索引数据包括N个填充索引数据。
步骤1.4:将maddr加N,得到在该第R个周期的新的第二内部变量maddr。
进入下一个周期。
步骤1.5:确定的填充索引数据相对该第R个周期获取的N个原始索引数据的填充位置为:Vi之前的N位。并执行下述步骤1.6。
步骤1.6:在读取的第一个原始索引数据Vi之前填充N个填充索引数据,基于数据填充结果,生成在该第R个周期的N个索引数据。此时,所生成的索引数据包括N个填充索引数据。
步骤1.7:将k置为2,并将maddr重置为0。
进入下一个周期。
步骤1.8:确定的填充索引数据相对该第R个周期获取的N个原始索引数据的填充位置为:Vi之前的p×(m+2p)-p-maddr位。并执行下述步骤1.9。
步骤1.9:在读取的第一个原始索引数据Vi之前填充p×(m+2)p-p-m个填充索引数据;将k置为2,并将maddr重置为0。在该种情况下,由于已经对特征图头部的数据填充操作执行完毕,因此,一般情况下直接将该p×(m+2p)-p-maddr个填充索引数据,作为索引数据,并传输给译码器10。
进入下一个周期。
这里需要注意的是,在maddr大于f1的情况下,特征图的头部需要填充的填充索引数据的数量,并非是N的整数倍,因此在该种情况下,实则是对特征图的头部的最后一次填充操作,因此输出的索引数据的数量p×(m+2p)-p-maddr是大于0,小于N的正整数。
在进入下一个周期后,由于在步骤1.9中,已经将k置为2,因此,执行下述②的逻辑。
②:在k的值为2的情况下:
步骤2.1:计算第三内部变量g;其中,第三内部变量g满足:maddr%L。其中,%用于表示maddr对L取余数。
步骤2.2:将第R-1个周期确定的新的第二内部变量maddr与第二常数f2进行比对。
若maddr小于f2,则执行步骤2.3;
若maddr大于或者等于f2,则执行步骤2.8。
其中,第二常数f2满足:f2=n×L-N。其中,L为第四常数,且L满足:L=m+2p。
步骤2.3:判断g是否小于2p;如果否,则执行步骤2.4。如果是,则确定的填充索引数据相对于第R个周期的获取的N个原始索引数据的填充位置为:Vi之前的2p-g位。
在读取的第一个原始索引数据Li之前,填充2p-g个填充索引数据,并基于数据填充的结果,生成在该第R个周期的N个索引数据。此时,所生成的索引数据包括2p-g个填充索引数据、以及N-(2p-g)个原始索引数据。执行步骤2.7。
步骤2.4:判断g是否大于L-N,且小于或者等于L+2p-n;如果否,则执行步骤2.5。如果是,则确定填充索引数据相对于第R个周期获取的N个原始索引数据的填充位置为第L-g位原始索引数据后的N-(L-g)位,也即Vi+L-g-1后填充N(L-g)个填充索引数据。
在读取的第N个原始索引数据Vi+N-1之后,填充N-(L-g)个填充索引数据,并基于数据填充的结果,生成在该第R个周期的N个索引数据。此时,所生成的索引数据包括:L-g个原始索引数据,以及N-(L-g)个填充索引数据。执行步骤2.7。
步骤2.5:判断g是否大于L+2p-n,如果否,则执行步骤2.6。如果是,则确定填充索引数据相对于第R个周期获取的N个原始索引数据的填充位置为第L-g位后的2p个。
在读取的第L-g个原始索引数据Vi+L-G-1之后,填充2p个填充索引数据。并基于数据填充的结果,生成在该第R个周期的N个索引数据。
此时,所生成的索引数据包括:L-g个原始索引数据、2p个填充索引数据,以及g+N-L-2p个原始索引数据。
步骤2.6:确定填不对第R个周期获取的N个原始索引数据进行数据填充,将第R个周期获取的N个原始索引数据,作为索引数据传输给译码器。执行步骤2.7。
步骤2.7:将maddr加N,得到在该第R个周期的新的第二内部变量maddr。进入下一个周期。
步骤2.8:确定不对第R个周期获取的N个原始索引数据进行数据填充,将第R个周期获取的多个原始索引数据,作为索引数据传输给译码器。执行步骤2.9。
步骤2.9:将maddr重置为0。将k置为3,并进入下一个周期。
在该种情况下,读取到的原始索引数据的数量为n×L-maddr,若maddr等于f2,则n×L-maddr等于N;若maddr大于f2,则n×L-maddr为大于0,且小于N的正整数,即已经对特征图中部的数据填充执行到最后一个周期,一般情况下,不会对该周期内得到的原始索引数据进行数据填充,而是直接将获取的多个原始索引数据作为索引数据传输给译码器10。
在该种情况下,直接输出n×L-maddr个原始索引数据作为索引数据。
③:在k的值为3的情况下:
在该种情况下,由于已经对特征图的中部完成了数据填充过程,k的值为3时,是对特征图的尾部进行数据填充,此时,已经无法从序列存储器中读取到原始索引数据,因此,这里读取的原始索引数据的数量为0。在该种情况下,直接执行下述逻辑:
步骤3.1:将maddr与第三常数f3进行比对。其中,f3=p×(m+2p)+p-N。
若maddr小于f3,则基于N个填充索引数据,生成N个索引数据,并讲N个索引数据传输给译码器10。
将maddr加N,得到在该第R个周期的新的第二内部变量maddr。进入下一个周期。
若maddr大于或者等于f3,则基于p×(m+2p)+p-maddr个填充索引数据,生成p×(m+2p)+p-maddr个索引数据,并将p×(m+2p)+p-maddr个索引数据传输给译码器10。
结束该次解码的过程。
这里,需要注意的是,本公开实施例中,为了简化在数据填充器30中的数据填充逻辑,降低逻辑控制的复杂度,将数据填充逻辑在对一组特征图进行解压的过程中分为三个部分。
在另一实施例中,还提供数据填充器30确定填充索引数据相对所述多个原始索引数据的填充位置的另一种实施方式,包括:
基于图像尺寸信息、填充宽度信息,确定多个填充部位中每个填充部位对应的填充数据图样;
基于所述多个填充部位中每个填充部位的填充数据图样以及所述多个原始索引数据在所述索引序列中的位置,确定填充索引数据相对所述多个原始索引数据的填充位置。
这里,填充数据图样,是基于图像尺寸信息,和填充宽度信息预先确定的模版,然后基于模版,以及每个周期获取的多个原始索引数据再索引序列中的位置,以确定填充索引数据。
在其它实施例中,也可以设计其他的数据填充逻辑,以在对编码数据进行解码过程中,实现数据填充处理,本公开实施例中不做限定。
在本公开另一实施例中,在解码任务开始时,加速器的处理器会向数据填充器30传输一任务开始信号。数据填充器30在接收到该任务开始信号后,开始从序列存储器40中读取原始索引数据,并执行数据填充任务。在结束该次解码过程后,还可以向加速器发送任务结束信号,以通知加速器基于解码后的数据,执行计算任务。
另外,在本公开另一实施例中,在执行上述数据填充逻辑的时候,在每一个周期进行数据填充之后,还会基于上一周期的地址指示数据,以及输出的索引数据的数量,生成本周期对应的地址指示数据,并将该地址指示数据传输给加速器的存储器,以使加速器的存储器根据该地址指示数据,对解码得到的数据进行存储。
这里,在执行加压缩任务时,加速器的处理器会向数据填充器30传输一解码数据存储的起始地址,并且在第一个解码的周期时,会将该地址指示数据初始化为该起始地址。
另外,为了能够在进行数据填充的过程中,保证解码数据不会出现问题,在本公开另一实施例提供的数据解码装置中,还包括:序列存储器40。
该序列存储器40和数据填充器30连接。序列存储器40能够与数据填充器30之间进行数据交互,也即,数据填充器30能够从序列存储器40中读取N个原始索引数据,也能够向序列存储器40写入控制信号,以控制序列存储器40对N个原始索引数据的输出。该控制信号,即为下述第二推进数据。
具体地:所述序列存储器40用于从所述数据解码装置外部接收并存储所述索引序列;根据任一周期的前一周期对应的第二推进数据,确定所述任一周期在索引序列的第二起始位置;并基于所述第二起始位置,从所述索引序列中确定所述任一周期对应的N个原始索引数据,并将确定的N个原始索引数据传输给所述数据填充器30。
这里,序列存储器40可以从加速器的外部接收并存储索引序列,还可以从加速器中所设置的存储器中接收并存储索引序列。
数据填充器30,在得到所述任一周期的N个索引数据后,还用于:
根据所述索引数据中包括的原始索引数据的数量,生成所述任一周期对应的第二推进数据,并将所述第二推进数据传输给所述序列存储器40。
具体地,若数据填充器30在某个周期内,对从序列存储器40读取的N个原始索引数据进行数据填充后,所生成的索引数据中,包括了G个原始索引数据,并包括了N-G个填充索引数据,也即,其在该周期内,仅实现了对G个原始索引数据分别对应的原始数据值的解码,而剩余的N-G个原始索引数据分别对应的原始数据值仍然未实现解码,因此,数据填充器30会生成第二推进数据,该第二推进数据的值等于G,并将该第二推进数据传递给序列存储器40。
序列存储器40在接收到在该周期内的第二推进数据G后,将原始索引数据在下一周期的第二起始位置向后推移G位。
例如,索引序列中的原始索引数据为(V1,V2,V3,…Vn×m)。
在第R个周期,对应的第二起始位置为V3,且N为16,则在第L个周期,会将V3~V18作为第R个周期的16个原始索引数据传递给数据填充器30。
且在该第R个周期内,数据填充器30在对原始索引数据V3~V18进行数据填充后,所形成的索引数据中,包括了5个原始索引数据,也即V3~V7,进而,在R个周期内,实现了对V3~V7分别对应的原始数据值的解码。
此时,数据填充器30生成该第R个周期的第二推进数据,该第二推进数据的值为5,并将该第二推进数据传递给序列存储器40。
序列存储器40在接收到该第R个周期的第二推进数据后,根据该第二推进数据,确定第R+1个周期,对应的第二起始位置为:V8,也即,将第二起始位置按照索引序列中各个原始索引数据的位置顺序,向后推进5位,将V8作为第R+1个周期,向数据填充器30传递的16个原始索引数据的第一个原始索引数据。
也即,在第R+1个周期内,向数据填充器30传递的16个原始索引数据为:V8~V23
在本公开另一实施例中,还包括:数值存储器50。其中,所述数值存储器50的输入端,与所述数据填充器30的第二输出端连接;所述数值存储器50的N个输出端中的每个输出端分别与N个所述第一选择部件21连接;
所述数值存储器50,用于从所述数据解码装置外部接收并存储所述数值序列;根据任一周期的前一周期对应的第一推进数据,确定所述任一周期在所述数值序列中的第一起始位置;根据所述第一起始位置,从所述数值序列中获取N个原始数据值,并将N个原始数据值中的每个原始数据值传输给N个所述第一选择部件;
所述数据填充器30,在生成所述任一周期对应的N个索引数据后,基于所述N个索引数据,确定预设的目标数据值在所述N个索引数据中出现的次数;基于预设的所述目标数据值在所述N个索引数据中出现的次数,确定所述任一周期对应的第一推进数据。
在具体实施中,数值存储器存储有数值序列。数值存储器有N路输出,每路输出均连接N个第一选择部件21,且每路输出对应有数值序列中的一个非零原始数据值,例如N路输出,分别对应的原始数据值为:v1~vn当输入至第一选择部件的数据偏移值为xxxx时,第一选择部件不向与之连接的第二选择部件输出任何值,或者直接向第二选择部件输出xxxx;同时,在该种情况下,输出给与之连接的第二选择部件的pi值为0。此时,无论该第一选择部件向与之连接的第二选择部件输出了什么,该第二选择部件均会输出0。
当输入至第一选择部件的数据偏移值为0001时,第一选择部件选通与数值存储器的第1路输入端;由于第1路输入端与数值存储器中第1位非零原始数值对应,因此第一选择部件会从数值存储器中读取该第1位非零原始数据值,并将其传输给第二选择部件。同时,在该种情况下,输出给与之连接的第二选择部件的pi值为1,此时,第二选择部件将第一选择部件传输的第1位非零原始数据值输出。
当输入值第一选择部件的数据偏移值0010时,第一选择部件选通与数值存储器的第2路输入端;由于第2路输入端与数值存储器中第2位非零原始数值对应,因此第一选择部件会从数值存储器中读取该第2位非零原始数据值,并将其传输给第二选择部件。同时,在该种情况下,输出给与之连接的第二选择部件的pi值为1,此时,第二选择部件将第一选择部件传输的第2位非零原始数据值输出。
……
这样,既能够通过上述方式,向外输出解压后的数据。
在该过程中,数值存储器50需要知道其将数值序列中的哪一位非零的原始数据值,作为当前周期的第1位非零的原始数据值。因此,数据填充器30在生成任一周期对应的N个索引数据后,会基于生成的N个索引数据,确定预设的目标数据值在N个索引数据中出现的次数。此处,预设的目标数据值例如为1。也即,确定1在N个索引数据中出现的次数。然后基于该次数,确定该任一周期的第一推进数据r,并将该第一推进数据r传输给数值存储器50。
数值存储器50在接收到该任一周期的第一推进数据r后,在下一周期到达时,将数值序列中的原始数据值,向后推进r位,将第r+1位原始数据值,作为下一周期的第1位非零的原始数据值。
本公开提供了一种数据解码装置,能够通过硬件方式对编码数据进行解码,不需要消耗加速器的计算资源,且在解码的时候,每一个时钟周期均能够解压出多个数据,提升解码的效率,提升加速器执行计算任务的效率。
另外,本公开提供的数据解码装置,还能够在对编码数据进行解码的同时,完成数据填充过程,同样不需要消耗加速器的计算资源,且将数据填充过程和解码过程一起执行,降低数据填充过程对加速器计算资源的消耗,进一步提升加速器在执行计算任务时的效率。
基于同一发明构思,本公开实施例中还提供了与数据解码装置对应的加速器,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据解码装置相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种加速器的示意图,所述装置包括:包括:加速部件41、以及数据解码装置42;
其中,所述数据解码装置42用于对编码数据进行解码,并将生成的解码数据传输至加速部件41;所述加速部件41所述加速部件用于基于所述解码数据执行加速任务。
具体地:
所述数据解码装置42的详细结构请参见图1至图3对应的实施例所示,在此不再赘述。
本公开实施例还提供了一种计算机设备,如图4所示,为本公开实施例还提供一种片上系统SOC,包括:加速器51、以及数据解码装置52;
所述数据解码装置52,用于对编码数据进行解码,生成解码数据;
所述加速器51用于基于获取所述解码数据,并基于所述解码数据执行加速任务。
所述数据解码装置52的详细结构请参见图1至图3对应的实施例所示,在此不再赘述。
另一种可能的实施例中,还包括:解码数据存储器53;
所述解码数据存储器53,用于存储所述数据解码装置对所述编码数据进行解码后生成的解码数据;
所述加速器51,用于从所述解码数据存储器中获取所述解码数据,并基于所述解码数据执行所述加速任务。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种数据解码装置,用于对编码数据进行解码处理,其特征在于,所述装置包括:
译码器、以及与所述译码器连接的多个选择器,其中,
所述译码器,用于获取多个目标索引数据,生成与所述多个目标索引数据中每个目标索引数据对应的数据选择控制信息,并将与每个目标索引数据对应的数据选择控制信息传输至与所述每个目标索引数据对应的选择器;
所述选择器,用于基于所述译码器传输的所述每个目标索引数据对应的数据选择控制信息,得到所述每个目标索引数据对应的解码结果。
2.根据权利要求1所述的数据解码装置,其特征在于,所述编码数据是通过对待处理图像或所述待处理图像的特征图进行编码处理得到的。
3.根据权利要求1或2所述的数据解码装置,其特征在于,还包括:
输出部件,用于输出所述多个目标索引数据中每个目标索引数据对应的解码结果。
4.根据权利要求1至3中任一项所述的数据解码装置,其特征在于,
所述选择器,在基于所述译码器传输的所述每个目标索引数据对应的数据选择控制信息,得到所述每个目标索引数据对应的解码结果时,用于:
在所述数据选择控制信息包括第一控制信息的情况下,将预设数据作为所述解码结果;和/或,
在所述数据选择控制信息包括第二控制信息的情况下,从所述编码数据包括的数值序列中获取目标数值作为所述解码结果。
5.根据权利要求4所述的数据解码装置,其特征在于,所述第二控制信息包括数据偏移指示信息,所述选择器,在从所述编码数据包括的数值序列中获取目标数值作为所述解码结果的情况下,用于:
基于所述第二控制信息中的数据偏移指示信息,确定所述目标数值在多个备选数值中的位置,并基于所述位置从所述多个备选数值中获取所述目标数值作为所述解码结果;
其中,所述多个备选数值,为所述数值序列中连续的多个非零原始数据值。
6.根据权利要求4或5所述的数据解码装置,其特征在于,还包括:
数值存储器,用于存储所述数值序列;
所述选择器在从所述编码数据包括的数值序列中获取目标数值作为所述解码结果的情况下,用于:
从所述数值存储器存储的数值序列中获取所述目标数值。
7.根据权利要求6所述的数据解码装置,其特征在于,所述数值存储器,还用于获取第一推进数据,并基于所述第一推进数据,确定多个备选数值在所述数值序列中的起始位置。
8.一种加速器,其特征在于,包括:加速部件、以及如权利要求1-7任一项所述的数据解码装置;
其中,所述数据解码装置用于对编码数据进行解码,并将生成的解码数据传输至所述加速部件;
所述加速部件用于基于所述解码数据执行加速任务。
9.一种片上系统SOC,其特征在于,包括:加速器、以及如权利要求1-7任一项所述的数据解码装置;
所述数据解码装置,用于对编码数据进行解码,生成解码数据;
所述加速器用于基于获取所述解码数据,并基于所述解码数据执行加速任务。
10.根据权利要求9所述的片上系统,其特征在于,还包括:解码数据存储器;
所述解码数据存储器,用于存储所述数据解码装置对所述编码数据进行解码后生成的解码数据;
所述加速器,用于从所述解码数据存储器中获取所述解码数据,并基于所述解码数据执行所述加速任务。
CN201911188894.0A 2019-11-28 2019-11-28 数据解码装置、加速器、以及片上系统 Active CN112866181B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911188894.0A CN112866181B (zh) 2019-11-28 2019-11-28 数据解码装置、加速器、以及片上系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911188894.0A CN112866181B (zh) 2019-11-28 2019-11-28 数据解码装置、加速器、以及片上系统

Publications (2)

Publication Number Publication Date
CN112866181A true CN112866181A (zh) 2021-05-28
CN112866181B CN112866181B (zh) 2023-05-26

Family

ID=75985280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911188894.0A Active CN112866181B (zh) 2019-11-28 2019-11-28 数据解码装置、加速器、以及片上系统

Country Status (1)

Country Link
CN (1) CN112866181B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102176205A (zh) * 2010-12-15 2011-09-07 中航华东光电有限公司 链码图像序列存储的文件格式及解码算法
WO2012172115A1 (en) * 2011-06-16 2012-12-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy coding supporting mode switching
CN106170921A (zh) * 2014-02-20 2016-11-30 古鲁洛吉克微系统公司 涉及符号压缩的数据的源编码和解码方法及装置
CN106651972A (zh) * 2015-11-03 2017-05-10 杭州海康威视数字技术股份有限公司 一种二值图像编码、解码方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102176205A (zh) * 2010-12-15 2011-09-07 中航华东光电有限公司 链码图像序列存储的文件格式及解码算法
WO2012172115A1 (en) * 2011-06-16 2012-12-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy coding supporting mode switching
CN106170921A (zh) * 2014-02-20 2016-11-30 古鲁洛吉克微系统公司 涉及符号压缩的数据的源编码和解码方法及装置
CN106651972A (zh) * 2015-11-03 2017-05-10 杭州海康威视数字技术股份有限公司 一种二值图像编码、解码方法及装置

Also Published As

Publication number Publication date
CN112866181B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
US11715287B2 (en) Systems and methods for exchange of data in distributed training of machine learning algorithms
CN110447010A (zh) 在硬件中执行矩阵乘法
US20210111741A1 (en) Decompression apparatus and control method thereof
CN111542839B (zh) 一种反卷积神经网络的硬件加速方法、装置和电子设备
EP3451165A1 (en) Neural network operation device and method supporting few-bit floating-point number
CN102694554A (zh) 数据压缩设备、其操作方法以及包括该设备的数据处理装置
CN109889205B (zh) 编码方法及系统、解码方法及系统、编解码方法及系统
US11715002B2 (en) Efficient data encoding for deep neural network training
CN113850389B (zh) 一种量子线路的构建方法及装置
CN110598867A (zh) 一种量子态信息转化方法
CN108717461B (zh) 海量数据结构化方法、装置、计算机设备及存储介质
CN110942151A (zh) 一种量子态层析方法及装置
CN110890985B (zh) 虚拟网络映射方法及其模型训练方法、装置
CN112866181B (zh) 数据解码装置、加速器、以及片上系统
CN110135465B (zh) 模型参数表示空间大小估计方法及装置、推荐方法
TWI745697B (zh) 用於神經網路參數的運算系統及其壓縮方法
CN103746701A (zh) 一种用于Rice无损数据压缩的快速编码选项选择方法
CN113222159A (zh) 一种量子态的确定方法及装置
GB2602570A (en) Selecting encoding options
US20180018980A1 (en) Frequency envelope vector quantization method and apparatus
US10931303B1 (en) Data processing system
CN111970007B (zh) 一种解码方法、解码器、设备及介质
CN110233627B (zh) 一种基于流水式的硬件压缩的系统及方法
CN109257047B (zh) 数据压缩方法及装置
CN111404557B (zh) 一种快速译码方法、设备及存储设备

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