CN112650496B - 混洗方法及计算装置 - Google Patents
混洗方法及计算装置 Download PDFInfo
- Publication number
- CN112650496B CN112650496B CN201910954852.7A CN201910954852A CN112650496B CN 112650496 B CN112650496 B CN 112650496B CN 201910954852 A CN201910954852 A CN 201910954852A CN 112650496 B CN112650496 B CN 112650496B
- Authority
- CN
- China
- Prior art keywords
- shuffling
- unit
- encoded
- data
- shuffling unit
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 169
- 238000012545 processing Methods 0.000 claims description 38
- 108091026890 Coding region Proteins 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 25
- 239000000945 filler Substances 0.000 description 10
- 238000012856 packing Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 208000019037 Hemihyperplasia-multiple lipomatosis syndrome Diseases 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 108700026244 Open Reading Frames Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请涉及一种混洗方法及计算装置。该方法包括:接收主处理器发送的编码微指令,所述编码微指令中携带有目标从处理器的标识;如果所述第一从处理器的标识与所述目标从处理器的标识相同,则所述第一从处理器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;确定各第一混洗单元的编码长度;根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。采用本申请可以降低编码率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种混洗方法及计算装置。
背景技术
目前,SOC(System on a Chip,片上系统)中数据的编解码过程中,需要进行数据补齐,从而导致编解码率较高。因此,亟需一种可以降低编解码率的方案。
发明内容
基于此,有必要针对上述技术问题,提供一种混洗方法及计算装置。
第一方面,提供了一种混洗方法,所述方法应用于主从处理器架构中的第一从处理器,所述方法包括:
接收主处理器发送的编码微指令,所述编码微指令中携带有目标从处理器的标识;
如果所述第一从处理器的标识与所述目标从处理器的标识相同,则所述第一从处理器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
第二方面,提供了一种混洗方法,所述方法应用于主从处理器架构中的第一从处理器,所述方法包括:
接收主处理器发送的解码微指令,所述解码微指令中携带有目标从处理器的标识;
如果所述第一从处理器的标识与所述目标从处理器的标识相同,则所述第一从处理器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个解码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
第三方面,提供了一种计算装置,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收源数据,并将所述源数据发送至所述多个从处理器;
所述多个从处理器,用于根据编码微指令,使用第一方面任一项所述的方法对所述编码微指令对应的待编码数据块进行编码,得到编码数据块,并将所述编码数据块传送至所述主处理器;
所述主处理器,还用于根据各编码数据块,确定所述源数据对应的编码数据。
作为一种可选的实施方式,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
作为一种可选的实施方式,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述主片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令,所述编码微指令为编码非广播微指令或编码广播微指令。
作为一种可选的实施方式,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块。
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述从片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令。
作为一种可选的实施方式,所述主处理器,还用于向所述从处理器发送所述编码微指令,指示所述从处理器执行编码过程。
第四方面,提供了一种计算装置,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收编码数据,并将所述编码数据发送至所述多个从处理器;
所述多个从处理器,用于根据解码微指令,使用第二方面任一项所述的方法对所述解码微指令对应的待解码数据块进行解码,得到解码数据块,并将所述解码数据块传送至所述主处理器;
所述主处理器,还用于根据各解码数据块,确定所述编码数据对应的源数据。
作为一种可选的实施方式,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
作为一种可选的实施方式,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述主片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令,所述解码微指令为解码非广播微指令或解码广播微指令。
作为一种可选的实施方式,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块。
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述从片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令。
作为一种可选的实施方式,所述主处理器,还用于向所述从处理器发送所述解码微指令,指示所述从处理器执行解码过程。
本申请实施例提供了一种混洗方法及计算装置。第一从处理器接收主处理器发送的编码微指令。其中,编码微指令中携带有目标从处理器的标识。如果第一从处理器的标识与目标从处理器的标识相同,则根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。然后,第一从处理器确定各第一混洗单元的编码长度,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。之后,第一从处理器将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。这样,通过对待编码数据块的各编码流进行混洗,可以保证各编码流的编码长度相近,从而避免由于各个编码流之间的对齐要求造成的补数过多,进而降低编码率。同时,还可以避免各编码流之间产生死锁情况。另外,针对不同的编码微指令,主处理器可以将不同的编码微指令发送至不同的从处理器,每个从处理器仅对接收到的编码微指令对应的编码区域中的源数据块进行编码处理,从而可以使多个从处理器同时对同一个源数据进行编码处理,进而提高编码的效率。
附图说明
图1A为本申请实施例提供的一种编解码器的结构示意图;
图1B为本申请实施例提供的一种主从处理架构的示意图;
图1C为本申请实施例提供的另一种主从处理架构的示意图;
图2为本申请实施例提供的一种编码流的生成方法的流程示意图;
图3为本申请实施例提供的一种源数据的示意图;
图4A为本申请实施例提供的一种流块划分的示意图;
图4B为本申请实施例提供的一种流块划分的示意图;
图5为本申请实施例提供的一种混洗方法的流程示意图;
图6为本申请实施例提供的一种确定输出/输入混洗单元的流程示意图;
图7A为本申请实施例提供的一种编码流的混洗前的示意图;
图7B为本申请实施例提供的另一种编码流的混洗前的示意图;
图8A为本申请实施例提供的一种编码流的混洗过程的示意图;
图8B为本申请实施例提供的另一种编码流的混洗过程的示意图;
图9A为本申请实施例提供的一种编码流的混洗完成的示意图;
图9B为本申请实施例提供的另一种编码流的混洗完成的示意图;
图10为本申请实施例提供的一种编码数据的示意图;
图11为本申请实施例提供的一种源数据子块拼接的示意图;
图12A为本申请实施例提供的一种编码数据子块拼接的示意图;
图12B为本申请实施例提供的一种编码数据子块拼接的示意图;
图12C为本申请实施例提供的一种编码数据子块拼接的示意图;
图12D为本申请实施例提供的一种编码数据子块拼接的示意图;
图13为本申请实施例提供的一种混洗方法的流程示意图;
图14为本申请实施例提供的一种确定输出/输入混洗单元的流程示意图;
图15为本申请实施例提供的一种解码流混洗前的示意图;
图16为本申请实施例提供的一种解码流混洗过程的示意图;
图17为本申请实施例提供的一种解码流混洗完成的示意图;
图18为本申请实施例提供的一种编码头数据的示意图;
图19为本申请实施例提供的一种待解码时数据划分的示意图;
图20为本申请实施例提供的一种待解码时数据划分的示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包含”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包含复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包含这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本申请实施例提供了一种混洗方法,该方法可以应用于编解码器(codec)。图1A为本申请实施例提供的一种编解码器的系统架构图。如图1A所示,该编解码器采用主从处理架构,该主从处理架构包含主处理器和多个从处理器。多个从处理器分别与主处理器连接。具体地,主处理器可以用于对输入数据执行前序处理,以及与多个从处理器之间传输数据。具体地,多个从处理器用于使用从主处理器传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理器。主处理器还用于对从处理器传输来的多个中间结果进行后续处理。进一步地,该主处理器还设有上述实施例中的数据存取电路。该数据存取电路用于数据的存取。可选地,运算装置根据主处理器与从处理器功能的区别,在硬件层面上设置主处理器和从处理器,也可以在设置多个相同的运算单元,在实际处理数据过程中,从该多个相同的运算单元中指定主处理器和从处理器。该主处理器和至少一个从处理器可以为IPU(Intelligent Processing Unit,智能处理器)或CPU(Central ProcessingUnit,中央处理器)或GPU(Graphics Processing Unit,图形处理器)。
可选的,如图1B所示,多个从处理器呈阵列分布;每个从处理器与相邻的其他从处理器连接,主处理器连接多个从处理器中的k个从处理器,该k个从处理器为:第1行的n个从处理器、第m行的n个从处理器以及第1列的m个从处理器。需要说明的是,如图1B所示的K个从处理器仅包括第1行的n个从处理器、第m行的n个从处理器以及第1列的m个从处理器,即该k个从处理器为多个从处理器中直接与主处理器连接的从处理器。具体地,该K个从处理器,用于在主处理器以及多个从处理器之间转发数据。进一步地,该主处理器可以包括数据存取电路。数据存取电路主要用于是向主处理器搬运待运算数据。该从处理器还包括转发电路,用于将中间结果转发至主处理器。
可选的,如图1C所示,主从处理架构还可以包括分支处理器,主处理器与一个或多个分支处理器连接,分支处理器与一个或多个从处理器连接。具体地,该分支处理器,用于转发主处理器与从处理器之间的数据。该主处理器可以包括数据存取电路。其中,数据存取电路主要用于向主处理器搬运待运算数据。具体地,从处理器包括包括转发电路,用于将中间结果转发至主处理器。
为了便于理解,本申请实施例优先对本申请实施例提供的一种编码流的生成方法进行详细的说明。如图2所示,具体步骤如下:
步骤201,获取待编码的源数据。
在实施中,当编解码器的主处理器需要对源数据进行编码时,主处理器可以获取预先存储的待编码的源数据。如图3所示,源数据的格式为二维格式,低维为X,高维为Y,起始地址为数据地址(data address),源数据的大小为低维数据大小(data size X)*高维数据大小(data size Y),源数据的在低维上的步幅(stride)为低维数据步幅(data strideX)。源数据可以进一步在二维上均匀的划分为多个源数据块(block),如图3所示,每个方块表示一个源数据块,源数据块的大小为低维源数据块大小(block size X)*高维源数据块大小(block size Y),相邻两个源数据块之间的低维间隔为低维源数据块步幅(blockstride X),高维间隔为高维源数据块步幅(block stride Y)。
步骤202,根据接收到的编码微指令,在源数据中,确定编码微指令对应的编码区域,编码区域包含至少一个待编码数据块,待编码数据块为源数据块或源数据子块。
在实施中,主处理器获取到待编码的源数据后,可以向各从处理器发送编码微指令。其中该编码微指令中携带有目标从处理器的标识。当某一从处理器(以下成为第一从处理器)接收到该编码微指令后,可以判断该编码微指令中携带的目标从处理器的标识与该第一从处理器的标识是否相同。如果相同,则第一从处理器根据接收到的编码微指令,在源数据中,确定该编码微指令对应的编码区域。其中,编码区域包含至少一个待编码数据块,待编码数据块为源数据块或源数据子块。如图3所示,虚线框为编码区域,该编码区域可以通过在源数据中指定低维方向上的低维偏移量(offset X)和指定高维方向上的高维偏移量(offset Y)得到。其中,该编码区域在低维方向上包含低维源数据块数目(block num X)个源数据块,在高维方向上包含高维源数据块数目(block num Y)个源数据块。该编码区域的起始地址(start address)为起始源数据块的地址。
第一从处理器得到该编码微指令对应的编码区域后,针对中央的源数据块(即图3中使用竖线方块表示的源数据块),第一从处理器可以直接对该源数据块进行编码。而对于边缘的源数据块(即图3中使用斜线方块表示的源数据块),第一从处理器可以通过指定上(top)、下(bottom)、左(left)和右(right)四个参数在源数据块中确定源数据子块,并对确定出的源数据子块进行编码。
需要说明的是,除编码区域外,该源数据中的其他区域中的数据无需进行分块,其他区域中的数据的大小也无需对齐到源数据块的大小,低维偏移量、高维偏移量、低维源数据块步幅、高维源数据块步幅、低维源数据大小、高维源数据大小和低维源数据步幅也无需与低维源数据块大小或高维源数据块大小对齐。也即第一从处理器支持在源数据中任意地分块,并在得到的源数据块中任意取出编码区域进行编码。
步骤203,针对至少一个待编码数据块中的每个待编码数据块,将该待编码数据块划分为多个流块,并将多个流块发送至该待编码数据块对应的多个编码流,作为多个编码流中的待混洗流块。
在实施中,为了提高编码的吞吐量,第一从处理器可以通过多个编码流并行对同一待编码数据块进行编码。同理,第一从处理器在进行混洗时,针对每个待编码数据块,第一从处理器可以将该待编码数据块划分为多个流块,并将多个流块发送至该待编码数据块对应的多个编码流,作为多个编码流中的待混洗流块。可选的,第一从处理器可以将待编码数据块划分成多个行序列,每个行序列中包含至少一个待编码数据子块。然后,针对每个行序列中的每个待编码数据子块,第一从处理器可以将该待编码数据子块划分为多个流块。这样,可以保证每个编码流中的流块的数目相近。例如,如图4A所示,第一从处理器将待编码数据块划分为4个行序列。其中,第一行序列包含待编码数据子块1、待编码数据子块2、待编码数据子块3和待编码数据子块4;第二行序列包含待编码数据子块5、待编码数据子块6、待编码数据子块7和待编码数据子块8;第三行序列包含待编码数据子块9、待编码数据子块10、待编码数据子块11和待编码数据子块12;第四行序列包含待编码数据子块13、待编码数据子块14、待编码数据子块15和待编码数据子块16,各行序列中斜线方块表示该待编码数据块中非编码数据。然后,如图4B所示,针对每个行序列中的每个待编码数据子块,第一从处理器可以将该待编码数据子块划分为4个流块,分别发送至编码流(steam)1至编码流4中,作为各编码流中的待混洗流块。其中,编码流1和编码流2包含16个待混洗流块,编码流3和编码流4包含12个待混洗流块。
下面将结合具体的实施例,对本申请实施例提供的一种混洗方法进行详细的说明,该混洗方法应用于编码过程。如图5所示,具体步骤如下:
步骤501,接收主处理器发送的编码微指令。其中,编码微指令中携带有目标从处理器的标识。
在实施中,主处理器获取到待编码的源数据后,可以向各从处理器发送编码微指令。其中该编码微指令中携带有目标从处理器的标识。当第一从处理器接收到该编码微指令后,可以判断该编码微指令中携带的目标从处理器的标识与该第一从处理器的标识是否相同。如果相同,则执行步骤502。如果不相同,则不进行处理。其中,该编码微指令可以为编码非广播微指令,也可以为编码广播微指令。
步骤502,根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。
在实施中,第一从处理器可以根据各编码流包含的流块数目的差异,在预设的各混洗等级中选取对应的混洗等级。例如,第一从处理器中可以预设三个混洗等级,混洗等级1、混洗等级2和混洗等级3。第一从处理器选定某一混洗等级(即第一混洗等级)后,可以进一步根据该第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。
可选的,第一从处理器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组的处理过程为获取待编码数据块对应的多个编码流。根据第一混洗等级,将多个编码流划分为多个第一混洗单元,并将多个第一混洗单元划分为至少一个第一混洗组。其中,第一混洗单元包含至少一个编码流,第一混洗组包含多个第一混洗单元。
在实施中,当第一从处理器需要根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组时,第一从处理器可以获取待编码数据块对应的多个编码流。然后,第一从处理器可以根据第一混洗等级,将多个编码流划分为多个第一混洗单元,并将多个第一混洗单元划分为至少一个第一混洗组。其中,第一混洗单元包含至少一个编码流,第一混洗组包含多个第一混洗单元。例如,待编码数据块对应32个编码流,当第一混洗等级为混洗等级1时,第一从处理器可以将32个编码流划分为32个第一混洗单元,并将32个第一混洗单元划分为8个第一混洗组,也即,每相邻的4个编码流进行混洗;当第一混洗等级为混洗等级2时,第一从处理器可以将32个编码流划分为8个第一混洗单元,并将8个第一混洗单元划分为2个第一混洗组,也即,每相邻的16个编码流中以4个编码流为一个混洗单元进行混洗;当第一混洗等级为混洗等级3时,第一从处理器可以将32个编码流划分为2个第一混洗单元,并将2个第一混洗单元划分为1个第一混洗组,也即,32个编码流中以16个编码流为一个混洗单元进行混洗。
步骤503,确定各第一混洗单元的编码长度。
在实施中,第一从处理器确定出待编码数据块对应的第一混洗组后,针对每个第一混洗组,第一从处理器可以进一步确定该第一混洗组中各第一混洗单元的编码长度。可选的,针对每个第一混洗组中的每个第一混洗单元,第一从处理器可以将该第一混洗单元包含的编码流中的待编码流块的总编码长度,确定为该第一混洗单元的编码长度。针对混洗处理和编码处理同步进行的情况,第一从处理器还可以将第一混洗单元包含的编码流中的待编码流块和已编码流块的总编码长度,确定为该第一混洗单元的编码长度。
步骤504,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。
在实施中,第一从处理器确定出各第一混洗单元的编码长度后,可以根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。其中,如图6所示,第一从处理器根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元的处理过程如下:
步骤601,根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型。
在实施中,第一从处理器确定出各第一混洗单元的编码长度后,第一从处理器可以根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型。其中,第一从处理器根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型的方式可以是多种多样的,本申请实施例提供了两种可行的方式,具体如下:
方式一,针对每个第一混洗单元,第一从处理器可以根据该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值。
在实施中,第一从处理器确定出各第一混洗单元的编码长度后,针对每个第一混洗单元,第一从处理器可以进一步确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值。示例一,如图7A所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+5,编码流2的编码长度为N+9,编码流3的编码长度为N,编码流4的编码长度为N+3,N为正整数,则编码流1对应的第一差值为{-4,5,2},编码流2对应的第一差值为{4,9,6},编码流3对应的第一差值为{-5,-9,-3},编码流4对应的第一差值为{-2,-6,3}。
示例二,如图7B所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+15,编码流2的编码长度为N+10,编码流3的编码长度为N+8,编码流4的编码长度为N,N为正整数,则编码流1对应的第一差值为{5,7,15},编码流2对应的第一差值为{-5,2,10},编码流3对应的第一差值为{-7,-2,8},编码流4对应的第一差值为{-15,-10,-8}。
步骤二,根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
在实施中,第一从处理器中可以预先存储有第一预设差值阈值。该第一预设差值阈值可以由技术人员根据经验进行设置。第一从处理器得到该第一混洗单元对应的第一差值后,可以判断该第一混洗单元对应的第一差值中是否存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值是否均为正数。如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值均为正数,则第一从处理器执行步骤三。如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值中存在负数的目标差值,则第一从处理器执行步骤四。如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值。则第一从处理器执行步骤五。
步骤三,确定该第一混洗单元的混洗类型为高编码类型。
在实施中,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值均为正数,则第一从处理器可以确定该第一混洗单元的混洗类型为高编码类型(以下用H表示)。例如,在上述示例一中,如图7A所示,第一预设差值阈值为7,则编码流2的混洗类型为H,在上述示例二中,如图7B所示,第一预设差值阈值为7,则编码流1和编码流2的混洗类型为H。
步骤四,确定该第一混洗单元的混洗类型为低编码类型。
在实施中,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值中存在负数的目标差值,则第一从处理器可以确定该第一混洗单元的混洗类型为低编码类型(以下用L表示)。例如,在上述示例一中,如图7A所示,第一预设差值阈值为7,则编码流3的混洗类型为L,在上述示例二中,如图7B所示,第一预设差值阈值为7,则编码流3和编码流4的混洗类型为L。
步骤五,确定该第一混洗单元的混洗类型为中编码类型。
在实施中,如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则第一从处理器可以确定该第一混洗单元的混洗类型为中编码类型(以下用M表示)。例如,在上述示例一中,如图7A所示,第一预设差值阈值为7,则编码流1和编码流4的混洗类型为M。
方式二,针对每个第一混洗单元,第一从处理器可以根据该第一混洗单元的编码长度与平均编码长度的第二差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,根据各第一混洗单元的编码长度,确定平均编码长度。
在实施中,第一从处理器确定出各第一混洗单元的编码长度后,可以根据各第一混洗单元的编码长度,确定平均编码长度。示例三,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+5,编码流2的编码长度为N+9,编码流3的编码长度为N,编码流4的编码长度为N+3,N为正整数,则平均编码长度为N+4.25。
示例四,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1的编码长度为N+15,编码流2的编码长度为N+10,编码流3的编码长度为N+8,编码流4的编码长度为N,N为正整数,则平均编码长度为N+8.25。
步骤二,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与平均编码长度的第二差值。
在实施中,第一从处理器确定出平均编码长度后,针对每个第一混洗单元,第一从处理器可以进一步确定该第一混洗单元的编码长度与平均编码长度的第二差值。例如,在上述示例三中,编码流1对应的第二差值为0.75,编码流2对应的第二差值为4.75,编码流3对应的第二差值为-4.25,编码流4对应的第二差值为-1.25;在上述示例四中,编码流1对应的第二差值为6.75,编码流2对应的第二差值为1.75,编码流3对应的第二差值为-0.25,编码流4对应的第二差值为-8.25。
步骤三,根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
在实施中,第一从处理器中可以预先存储有第二预设差值阈值。该第二预设差值阈值可以由技术人员根据经验进行设置。第一从处理器得到该第一混洗单元对应的第二差值后,可以判断该第一混洗单元对应的第二差值的绝对值是否大于或等于第二预设差值阈值,且第二差值是否为正数。如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为正数,则第一从处理器执行步骤四。如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为负数,则第一从处理器执行步骤五。如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则第一从处理器执行步骤六。
步骤四,确定该第一混洗单元的混洗类型为高编码类型。
在实施中,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为正数,则第一从处理器可以确定该第一混洗单元的混洗类型为高编码类型(即H)。例如,在上述示例三中,第二预设差值阈值为4,则编码流2的混洗类型为H;在上述示例四中,第二预设差值阈值为6,则编码流1的混洗类型为H。
步骤五,确定该第一混洗单元的混洗类型为低编码类型。
在实施中,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为负数,则第一从处理器可以确定该第一混洗单元的混洗类型为低编码类型(即L)。例如,在上述示例三中,第二预设差值阈值为4,则编码流3的混洗类型为L;在上述示例四中,第二预设差值阈值为6,则编码流4的混洗类型为L。
步骤六,确定该第一混洗单元的混洗类型为中编码类型。
在实施中,如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则第一从处理器可以确定该第一混洗单元的混洗类型为中编码类型(即M)。例如,在上述示例三中,第二预设差值阈值为4,则编码流1和编码流4的混洗类型为M;在上述示例四中,第二预设差值阈值为6,则编码流2和编码流3的混洗类型为M。
步骤602,根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元。
在实施中,第一从处理器中可以预先存储有混洗规则。该混洗规则可以由技术人员根据经验进行设置。第一从处理器得到各第一混洗单元的混洗类型后,可以进一步根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元。其中,第一从处理器根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元的处理过程如下:
步骤一,如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则将第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
在实施中,如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则第一从处理器可以将第一目标混洗单元确定为输出混洗单元。然后,针对每个输出混洗单元,第一从处理器可以在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。其中,一个第二目标混洗单元可以仅作为一个输出混洗单元对应的输入混洗单元,也可以作为多个输出混洗单元对应的输入混洗单元,本申请实施例不作限定。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为HMML时,第一从处理器可以将编码流1确定为输出混洗单元,并将编码流4确定为编码流1的输入混洗单元;当编码流1至编码流4的混洗类型为HMLL时,第一从处理器可以将编码流1确定为输出混洗单元,并将编码流3和编码流4确定为编码流1的输入混洗单元;当编码流1至编码流4的混洗类型为HLLL时,第一从处理器可以将编码流1确定为输出混洗单元,并将编码流2、编码流3和编码流4确定为编码流1的输入混洗单元;当编码流1至编码流4的混洗类型为HHLL时,第一从处理器可以将编码流1和编码流2确定为输出混洗单元,并将编码流3确定为编码流1的输入混洗单元,将编码流4确定为编码流2的输入混洗单元,第一从处理器也可以将编码流3和编码流4确定为编码流1的输入混洗单元,将和编码流3和编码流4确定为编码流2的输入混洗单元,第一从处理器也可以将编码流3确定为编码流1的输入混洗单元,将和编码流3和编码流4确定为编码流2的输入混洗单元。
步骤二,如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则将第二数目个第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
在实施中,如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则第一从处理器可以在各第一目标混洗单元中将第二数目个第一目标混洗单元确定为输出混洗单元。然后,针对每个输出混洗单元,第一从处理器可以在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。其中,一个第二目标混洗单元可以仅作为一个输出混洗单元对应的输入混洗单元,也可以作为多个输出混洗单元对应的输入混洗单元,本申请实施例不作限定。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为HHML时,第一从处理器可以将编码流2确定为输出混洗单元,并将编码流4确定为编码流2的输入混洗单元;当编码流1至编码流4的混洗类型为HHHL时,第一从处理器可以将编码流3确定为输出混洗单元,并将编码流4确定为编码流1的输入混洗单元。
需要说明的是,如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,且各混洗单元中存在中编码类型的第三目标混洗单元,则第一从处理器还可以进一步在除确定为第二目标混洗单元对应的输出混洗单元(以下称为第一输出混洗单元)以外的第一目标混洗单元中,确定若干个第一目标混洗单元作为输出混洗单元(以下称为第二输出混洗单元),并针对每个第二输出混洗单元,第一从处理器可以在第三目标混洗单元中,确定至少一个第三目标混洗单元作为该第二输出混洗单元对应的输入混洗单元。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为HHML时,第一从处理器可以将编码流2确定为第一输出混洗单元,并将编码流4确定为编码流2的输入混洗单元;同时,第一从处理器还可以将编码流1确定为第二输出混洗单元,并将编码流3确定为编码流1的输入混洗单元。
另外,对于中编码类型的第三目标混洗单元,针对每个第三目标混洗单元,第一从处理器可以将该第三目标混洗单元确定为输出混洗单元,并将自身确定为该第三目标混洗单元对应的输入混洗单元。例如,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,当编码流1至编码流4的混洗类型为MMMM时,第一从处理器可以将编码流1确定为输出混洗单元,并将编码流1确定为编码流1的输入混洗单元,编码流2至编码流4与之类似,此处不再赘述。
步骤505,将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。
在实施中,第一从处理器中可以预先存储有第一预设数目。该第一预设数目可以由技术人员根据经验进行设置。第一从处理器确定出输出混洗单元和输入混洗单元后,第一从处理器可以将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。其中,第一预设数目可以大于或等于输入混洗单元的数目;每个输入混洗单元接收到的待混洗流块可以相同,也可以不同;针对每个输入混洗单元,第一从处理器还可以将该输入混洗单元中第三预设数目个待混洗单元输入至该输入混洗单元的待编码队列,作为该输入混洗单元的第一待编码流块。
可选的,针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块。
在实施中,第一从处理器中可以预先存储有第二预设数目。该第二预设数目可以由技术人员根据经验进行设置。对于输出混洗单元与输入混洗单元对应的情况,针对每个输出混洗单元,第一从处理器可以将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块。其中,第二预设数目可以大于或等于该输出混洗单元对应的输入混洗单元的数目,且每个输入混洗单元接收到的待混洗流块的数目可以相同,也可以不同。这样,可以保证各个混洗单元的编码长度相近。例如,如图8A所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1至编码流4的混洗类型为MHLM,则编码流2为输出混洗单元,编码流3为编码流2的输入混洗单元,则编码流1可以向编码流1输出1个待混洗流块,编码流2可以向编码流3输出1个待混洗流块,编码流4可以向编码流4输出1个待混洗流块。这样,如图9A所示,混洗完成后编码流1的编码长度为N+8,编码流2的编码长度为N+9,编码流3的编码长度为N+3,编码流4的编码长度为N+6,编码流1至编码流4的混洗类型为MMMM。又如,如图8B所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个编码流为例,编码流1至编码流4的混洗类型为HHLL,则编码流1和编码流2为输出混洗单元,编码流3和编码流4为编码流1的输入混洗单元,编码流4为编码流2的输入混洗单元,则编码流1可以分别向编码流3和编码流4输出1个待混洗流块,编码流2可以向编码流4输出2个待混洗流块。这样,如图9B所示,混洗完成后编码流1的编码长度为N+15,编码流2的编码长度为N+10,编码流3的编码长度为N+11,编码流4的编码长度为N+9,编码流1至编码流4的混洗类型为MMMM。
作为一种可选地实施方式,第一从处理器可以根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个编码流。然后,第一从处理器可以将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
在实施中,第一从处理器根据第一混洗等级对待编码数据块对应的编码流进行混洗后,第一从处理器还可以进一步根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个编码流。第一从处理器根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组的处理过程如步骤501类似,此处不再赘述。然后,第一从处理器可以将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
需要说明的是,第一从处理器根据第二混洗等级对待编码数据块对应的编码流进行混洗后,还可以进一步根据第三混洗等级对待编码数据块对应的编码流进行混洗。例如,第一从处理器可以按照混洗等级1-混洗等级2—混洗等级3对待编码数据块对应的编码流进行混洗,也可以按照混洗等级1-混洗等级3—混洗等级2对待编码数据块对应的编码流进行混洗,还可以按照混洗等级2-混洗等级3—混洗等级1对待编码数据块对应的编码流进行混洗。
作为一种可选地实施方式,当第一从处理器检测到多个编码流中的第一编码流编码完成时,将多个编码流中未编码完成的第二编码流中第三预设数目个待编码流块发送至第一编码流,作为第一编码流中的待编码流块。
在实施中,为了进一步平衡各个编码流的编码长度,提高小数据块编码时的编码率。第一从处理器中可以预先存储有第三预设数目。该第三预设数目可以由技术人员根据经验进行设置。当第一从处理器检测到多个编码流中的第一编码流编码完成(也即第一编码流输出编码流结束(StreamFinish)标记)时,可以将多个编码流中未编码完成的第二编码流中第三预设数目个待编码流块发送至第一编码流,作为第一编码流中的待编码流块。其中,第二编码流可以为多个编码流中全部的未编码完成的编码流,也可以为多个编码流中部分的未编码完成的编码流。
作为一种可选地实施方式,第一从处理器通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码的处理过程如下:
步骤一,根据预设字符对应的第一编码规则,对第一待编码流块中包含的预设字符进行编码,得到第一编码数据。
在实施中,第一从处理器中可以预先存储有预设字符对应的第一编码规则。该预设字符对应的第一编码规则可以由技术人员根据经验进行设置。第一从处理器可以根据预设字符对应的第一编码规则,对第一待编码流块中包含的预设字符进行编码,得到第一编码数据。其中,由于神经网络数据具有稀疏特性,因此,技术人员可以将连续若干个全零字符设置为预设字符。表一为各预设字符,如表一所示:
表一
步骤二,根据预设的第二编码规则对第一编码数据进行编码。
在实施中,第一从处理器中可以预先存储有第二编码规则。该第二编码规则可以为前缀码编码算法,也可以为其他编码算法,本申请实施例不作限定。第一从处理器得到第一编码数据后,可以进行一步根据预设的第二编码规则对第一编码数据进行编码。
作为一种可选地实施方式,第一从处理器对待编码数据块进行编码,得到编码数据块后,可以生成各待编码数据块对应的编码数据块的编码头块。其中,编码头块中包含编码头块对应的编码数据块的存储地址。然后,第一从处理器可以将各编码头块进行存储,并在各编码头块之后存储各编码数据块。
在实施中,对于待编码数据块对应的编码数据块,如图10所示,第一从处理器采用头-数据块(header-data block)映射的形式进行存储。该映射形式分为两大部分,分别为编码头(header)部分和编码数据块(data block)部分。编码头部分的起始地址为编码头地址(head address);编码头部分占据的空间为编码头总数目(head total number)个编码头块的大小,编码头总数目可以大于或等于有效的编码头块的数目。其中,每个编码头块的大小为16比特(byte),每个编码头块中存储有该编码头块对应的编码数据块的起始地址和实际大小等信息,各个编码头块在存储设备中连续存放。编码数据块部分紧挨着编码头部分的结束地址存放。每个编码数据块部分包含了若干个编码数据块,每个编码数据块与h编码头块一一对应。其中,编码数据块的存储格式分为打包(packing)格式和非打包(unpacking)格式两种。
可选的,对于打包格式,编码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。
在实施中,如图10所示,打包格式下,编码数据块紧密存放,每个编码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。也即,编码数据块占据的空间为待编码数据块编码后的实际大小。
可选的,对于非打包格式,编码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。
在实施中,如图10所示,非打包格式下,每个编码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。也即,每个编码数据块都占用相同的空间,且等于编码前一个完整的待编码数据块的大小。其中,前一部分为编码数据,后一部分为保留的填充数据。
作为一种可选地实施方式,编码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成。在打包格式下,编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。在非打包格式下,编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。
在实施中,第一从处理器根据不同的编码微指令,在源数据中确定多个编码区域时,可能会将一个完整的源数据块切分成多个源数据子块。其中,各编码微指令对应的编码区域在相邻的那一侧,要么都编码完整的源数据块,而且源数据块之间互不重叠;要么各自编码同一源数据块的一部分(也即源数据子块),且各源数据子块在源数据块内部的边界正好重叠。如图11所示,四个编码微指令在源数据中确定出的四个编码区域将部分源数据块(以灰色斜线方块表示)切分成多个源数据子块,同一源数据块中的各源数据子块的边界正好重叠。第一从处理器根据不同编码微指令对同一源数据块中的各源数据子块进行编码,得到编码数据子块。第一从处理器在对同一源数据块中的多个源数据子块对应的编码数据子块进行存储时,可以将该编码数据子块存储至同一编码数据块中。这样,可以实现多条编码微指令协同完成特定编码区域的拼接,其效果与通过一条编码微指令进行编码完全相同,并且这些编码微指令的执行顺序可以任意甚至并发执行,从而在多核的源数据划分和单核内部为了流水执行而分块的情况下,能够将编码任务进行划分。
如图12A所示,一个源数据块在低维和高维均被划分为两部分,使得该源数据块划分为4个源数据子块,分别为TL(top-left),TR(top-right),BL(bottom-left)和BR(bottom-right)。其中,每个源数据子块的大小如图12A所示,第一从处理器可以通过源数据块内部的block left,block right,block top,blockbottom四个参数指定。每个源数据子块可以是编码数据,也可以是非编码数据。在非打包格式下的编码数据块中,上述4个源数据子块对应4个编码数据子块可以按照TL-TR-BL-BR的固定顺序存储,每个编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。也即,每个编码数据子块所占据的空间为该编码数据子块对应的源数据子块编码前的大小。这样,编码数据块的空间与源数据块的大小相同,从而保证了如果源数据块的每个源数据子块都是由不同的编码微指令进行编码,每条编码微指令都可以根据划分信息(可以通过指令域计算得到)计算出所负责的编码数据子块的地址,从而实现多条编码微指令结果的拼接。
如图12A所示,第一从处理器可以通过编码移动(Move)等方式将非打包格式下的编码数据块转化为打包格式下的编码数据块。在打包格式下的编码数据块中,每个编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。其中,各编码数据子块之间紧密存放,每个编码数据子块的起始地址需要根据前面的编码数据子块的实际大小累加获得,整个编码数据块所占据的空间就是所有编码数据子块的大小之和。
如图12B所示,一个源数据块在高维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和BL,或者BL和BR。如图12C所示,一个源数据块在低维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和TR,或者TR和BR。
一个源数据块在低维和高维均不进行划分,仅有一个源数据子块,该源数据子块可以为TL、TR、BL或BR。如图12D所示,一个源数据块仅有TL一个源数据子块。
为了支持不同编码区域的拼接,包含多个编码数据子块的编码数据块对应的编码头的格式如表二所示。
表二
作为一种可选地实施方式,如果各第一混洗组中待编码流块总编码长度大于待编码数据块的原长度,则终止对待编码数据块的编码处理。
在实施中,为了保证编码数据块可以按照非打包格式进行存储,需要保证编码数据块的大小不能超过待编码数据块的大小。第一从处理器在对待编码数据块进行混洗处理时,如果检测到各第一混洗组中待编码流块总编码长度大于待编码数据块的原长度,则终止对待编码数据块的编码处理。然后第一从处理器可以重新发送请求读取待编码数据块,读取的待编码数据块无需进行编码处理,直接进行存储。可选的,第一从处理器还可以在对待编码数据块进行编码时,如果检测到编码处理输出的编码长度大于待编码数据块的大小,则终止对待编码数据块的编码处理。
本申请实施例提供了一种混洗方法。第一从处理器接收主处理器发送的编码微指令。其中,编码微指令中携带有目标从处理器的标识。如果第一从处理器的标识与目标从处理器的标识相同,则根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个编码流。然后,第一从处理器确定各第一混洗单元的编码长度,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。之后,第一从处理器将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待编码流块,以通过输入混洗单元根据预设的编码算法对第一待编码流块进行编码。这样,通过对待编码数据块的各编码流进行混洗,可以保证各编码流的编码长度相近,从而避免由于各个编码流之间的对齐要求造成的补数过多,进而降低编码率。同时,还可以避免各编码流之间产生死锁情况。另外,针对不同的编码微指令,主处理器可以将不同的编码微指令发送至不同的从处理器,每个从处理器仅对接收到的编码微指令对应的编码区域中的源数据块进行编码处理,从而可以使多个从处理器同时对同一个源数据进行编码处理,进而提高编码的效率。
本申请实施例还提供了一种混洗方法,该混洗方法应用于解码过程。如图13所示,具体步骤如下:
步骤1301,接收主处理器发送的解码微指令。其中,解码微指令中携带有目标从处理器的标识。
步骤1301的处理过程与步骤501的处理过程类似,此处不再赘述。
步骤1302,如果第一从处理器的标识与目标从处理器的标识相同,则第一从处理器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个解码流。
可选的,第一从处理器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组的处理过程为:第一从处理器获取待解码数据块对应的多个解码流,根据第一混洗等级,将多个解码流划分为多个第一混洗单元,并将多个第一混洗单元划分为至少一个第一混洗组。其中,第一混洗单元包含至少一个解码流,第一混洗组包含多个第一混洗单元。
步骤1302的处理过程与步骤502的处理过程类似,此处不再赘述。
步骤1303,确定各第一混洗单元的编码长度。
可选的,针对每个第一混洗组中的每个第一混洗单元,第一从处理器将该第一混洗单元包含的解码流中的待解码流块的总编码长度,确定为该第一混洗单元的编码长度。针对混洗处理和解码处理同步进行的情况,第一从处理器还可以将第一混洗单元包含的解码流中的待解码流块和已解码流块的总编码长度,确定为该第一混洗单元的编码长度。
步骤1303的处理过程与步骤503的处理过程类似,此处不再赘述。
步骤1304,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。
步骤1304的处理过程与步骤504的处理过程类似,此处不再赘述。
可选的,如图14所示,第一从处理器根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元的处理过程如下:
步骤1401,根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型。其中,第一从处理器根据各第一混洗单元的编码长度,确定各第一混洗单元的混洗类型的方式可以是多种多样的,本申请实施例提供了两种可行的方式,具体如下:
方式一,针对每个第一混洗单元,第一从处理器可以根据该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值。
示例五,如图15所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个解码流为例,解码流1的编码长度为N+5,解码流2的编码长度为N+9,解码流3的编码长度为N,解码流4的编码长度为N+3,N为正整数,则解码流1对应的第一差值为{-4,5,2},解码流2对应的第一差值为{4,9,6},解码流3对应的第一差值为{-5,-9,-3},解码流4对应的第一差值为{-2,-6,3}。
步骤二,根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
步骤三,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型。
例如,在上述示例五中,如图15所示,第一预设差值阈值为7,则解码流2的混洗类型为H。
步骤四,如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
例如,在上述示例五中,如图15所示,第一预设差值阈值为7,则解码流3的混洗类型为L。
步骤五,如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
例如,在上述示例五中,如图15所示,第一预设差值阈值为7,则解码流1和解码流4的混洗类型为M。
方式二,针对每个第一混洗单元,第一从处理器可以根据该第一混洗单元的编码长度与平均编码长度的第二差值,确定该第一混洗单元的混洗类型。具体处理过程如下:
步骤一,根据各第一混洗单元的编码长度,确定平均编码长度。
步骤二,针对各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与平均编码长度的第二差值。
步骤三,根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
步骤四,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型。
步骤五,如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
步骤六,如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
步骤1401的处理过程与步骤601的处理过程类似,此处不再赘述。
步骤1402,根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元。
可选的,第一从处理器根据各第一混洗单元的混洗类型和预设的混洗规则,在各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元的处理过程如下:
步骤一,如果高解码类型的第一目标混洗单元的第一数目大于低解码类型的第二目标混洗单元的第二数目,则将第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
步骤二,如果高解码类型的第一目标混洗单元的第一数目小于或等于低解码类型的第二目标混洗单元的第二数目,则将第一数目个第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
步骤1402的处理过程与步骤602的处理过程类似,此处不再赘述。
步骤1305,将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待解码流块,以通过输入混洗单元根据预设的解码算法对第一待解码流块进行解码。
可选的,针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待解码流块。
例如,如图16所示,以4个混洗单元为一个混洗组进行混洗,每个混洗单元包含一个解码流为例,解码流1至解码流4的混洗类型为MHLM,则解码流3为输出混洗单元,解码流2为解码流3的输入混洗单元,则解码流1可以向解码流1输出1个待混洗流块,解码流3可以向解码流2输出1个待混洗流块,解码流4可以向解码流4输出1个待混洗流块。这样,如图17所示,混洗完成后解码流1的编码长度为N+8,解码流2的编码长度为N+9,解码流3的编码长度为N+3,解码流4的编码长度为N+6,解码流1至解码流4的混洗类型为MMMM。
步骤1305的处理过程与步骤505的处理过程类似,此处不再赘述。
作为一种可选地实施方式,第一从处理器根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个解码流。然后,第一从处理器将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
在实施中,第一从处理器根据第一混洗等级对待解码数据块对应的解码流进行混洗后,第一从处理器还可以进一步根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组。其中,第二混洗组包含多个第二混洗单元,第二混洗单元包含至少一个解码流。第一从处理器根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组的处理过程如步骤1301类似,此处不再赘述。然后,第一从处理器可以将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
需要说明的是,第一从处理器根据第二混洗等级对待解码数据块对应的解码流进行混洗后,还可以进一步根据第三混洗等级对待解码数据块对应的解码流进行混洗。例如,第一从处理器可以按照混洗等级1-混洗等级2—混洗等级3对待解码数据块对应的解码流进行混洗,也可以按照混洗等级1-混洗等级3—混洗等级2对待解码数据块对应的解码流进行混洗,还可以按照混洗等级2-混洗等级3—混洗等级1对待解码数据块对应的解码流进行混洗。
作为一种可选地实施方式,当第一从处理器检测到多个解码流中的第一解码流解码完成时,将多个解码流中未解码完成的第二解码流中第二预设数目个待解码流块发送至第一解码流,作为第一解码流中的待解码流块。
在实施中,为了进一步平衡各个解码流的编码长度,提高小数据块解码时的解码率。第一从处理器中可以预先存储有第三预设数目。该第三预设数目可以由技术人员根据经验进行设置。当第一从处理器检测到多个解码流中的第一解码流解码完成(也即第一解码流输出解码流结束(StreamFinish)标记)时,可以将多个解码流中未解码完成的第二解码流中第三预设数目个待解码流块发送至第一解码流,作为第一解码流中的待解码流块。其中,第二解码流可以为多个解码流中全部的未解码完成的解码流,也可以为多个解码流中部分的未解码完成的解码流。
作为一种可选地实施方式,第一从处理器获取解码流的处理过程如下:
步骤一,获取待解码数据对应的编码头数据。
在实施中,对于编码数据块,如图10所示,第一从处理器采用头-数据块(header-data block)映射的形式进行存储。当第一从处理器需要获取待解码数据时,第一从处理器需要先获取待解码数据对应的编码头数据。如图18所示,编码头数据的格式为二维格式,低维为X,高维维Y,编码头数据的大小为低维编码头大小(head size X)*高维编码头大小(head size Y)。编码头数据可以进一步在二维上均匀的划分为多个编码头块(block)。
步骤二,根据接收到的解码微指令,在编码头数据中,确定解码微指令对应的包含至少一个编码头块的解码区域,并获取至少一个编码头块对应的至少一个待解码数据块。其中,编码头块中包含编码头块对应的编码数据块的存储地址。
在实施中,第一从处理器获取到编码头数据后,可以根据接收到的解码微指令,在编码头数据中,确定解码微指令对应的包含至少一个编码头块的解码区域。如图18所示,解码区域的起始地址为编码头起始(head start)位置,可以通过低维编码头偏移(headoffset X)和高维编码头偏移(head offset Y)得到。该解码区域在低维方向上包含低维编码头数目(head number X)个编码头块,在高维上包含高维编码头数目(head number Y)个编码头块。其中,编码头块中包含编码头块对应的编码数据块的存储地址。第一从处理器得到解码区域后,针对解码区域中的每个编码头块,第一从处理器可以根据该编码头块中存储的编码数据块的存储地址,获取待解码数据块。
步骤三,针对至少一个待解码数据块中的每个待解码数据块,将该待解码数据块划分为多个流块,并将多个流块发送至该待解码数据块对应的多个解码流,作为多个解码流中的待混洗流块。
在实施中,为了提高解码的吞吐量,第一从处理器可以通过多个解码流并行对同一待解码数据块进行解码。同理,第一从处理器在进行混洗时,针对每个待解码数据块,第一从处理器可以将该待解码数据块划分为多个流块,并将多个流块发送至该待解码数据块对应的多个解码流,作为多个解码流中的待混洗流块。可选的,第一从处理器可以将待解码数据块划分成多个行序列,每个行序列中包含至少一个待解码数据子块。然后,针对每个行序列中的每个待解码数据子块,第一从处理器可以将该待解码数据子块划分为多个流块。这样,可以保证每个解码流中的流块的数目相近。
可选的,打包格式下,待解码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。
在实施中,如图10所示,打包格式下,解码数据块紧密存放,每个解码数据块由编码数据组成,编码数据的大小等于待编码数据块中待编码数据编码后的大小。也即,解码数据块占据的空间为待编码数据块编码后的实际大小。
可选的,非打包格式下,待解码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。
在实施中,如图10所示,非打包格式下,每个解码数据块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于待编码数据块的大小。也即,每个解码数据块都占用相同的空间,且等于编码前一个完整的待编码数据块的大小。其中,前一部分为编码数据,后一部分为保留的填充数据。
可选的,待解码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成。在打包格式下,编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。在非打包格式下,编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。
在实施中,第一从处理器根据不同的编码微指令,在源数据中确定多个编码区域时,可能会将一个完整的源数据块切分成多个源数据子块。其中,各编码微指令对应的编码区域在相邻的那一侧,要么都编码完整的源数据块,而且源数据块之间互不重叠;要么各自编码同一源数据块的一部分(也即源数据子块),且各源数据子块在源数据块内部的边界正好重叠。如图11所示,四个编码微指令在源数据中确定出的四个编码区域将部分源数据块(以灰色斜线方块表示)切分成多个源数据子块,同一源数据块中的各源数据子块的边界正好重叠。第一从处理器根据不同编码微指令对同一源数据块中的各源数据子块进行编码,得到编码数据子块。第一从处理器在对同一源数据块中的多个源数据子块对应的编码数据子块进行存储时,可以将该编码数据子块存储至同一编码数据块中。这样,可以实现多条编码微指令协同完成特定编码区域的拼接,其效果与通过一条编码微指令进行编码完全相同,并且这些编码微指令的执行顺序可以任意甚至并发执行,从而在多核的源数据划分和单核内部为了流水执行而分块的情况下,能够将编码任务进行划分。
如图12A所示,一个源数据块在低维和高维均被划分为两部分,使得该源数据块划分为4个源数据子块,分别为TL(top-left),TR(top-right),BL(bottom-left)和BR(bottom-right)。其中,每个源数据子块的大小如图12A所示,第一从处理器可以通过源数据块内部的block left,block right,block top,blockbottom四个参数指定。每个源数据子块可以是编码数据,也可以是非编码数据。在非打包格式下的编码数据块中,上述4个源数据子块对应4个编码数据子块可以按照TL-TR-BL-BR的固定顺序存储,每个编码数据子块由编码数据和填充数据组成,编码数据的大小和填充数据的大小之和等于源数据子块的大小。也即,每个编码数据子块所占据的空间为该编码数据子块对应的源数据子块编码前的大小。这样,编码数据块的空间与源数据块的大小相同,从而保证了如果源数据块的每个源数据子块都是由不同的编码微指令进行编码,每条编码微指令都可以根据划分信息(可以通过指令域计算得到)计算出所负责的编码数据子块的地址,从而实现多条编码微指令结果的拼接。
如图12A所示,第一从处理器可以通过编码移动(Move)等方式将非打包格式下的编码数据块转化为打包格式下的编码数据块。在打包格式下的编码数据块中,每个编码数据子块由编码数据组成,编码数据的大小等于源数据子块中待编码数据编码后的大小。其中,各编码数据子块之间紧密存放,每个编码数据子块的起始地址需要根据前面的编码数据子块的实际大小累加获得,整个编码数据块所占据的空间就是所有编码数据子块的大小之和。
如图12B所示,一个源数据块在高维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和BL,或者BL和BR。如图12C所示,一个源数据块在低维被划分为两部分,使得该源数据块划分为2个源数据子块,分别为TL和TR,或者TR和BR。
一个源数据块在低维和高维均不进行划分,仅有一个源数据子块,该源数据子块可以为TL、TR、BL或BR。如图12D所示,一个源数据块仅有TL一个源数据子块。
可选的,解码时的数据划分与编码时可能不同,当解码微指令的数据划分与编码数据块的划分不对齐时,就会有编码时的边界数据块,对于边界数据块,如果它只有TL部分,那么如果这部分是未编码的源数据形式,那么可以只读出所需要的部分,如果是已编码的编码数据形式,那么需要对整个编码数据块解压后,只将需要的部分写到目的地址。如果边界数据块本身包含四个部分,并且与编码时的划分不同,那么会出现对于4个编码数据子块的再次划分。如图19所示,实线框表示编码(encode)时的数据划分,虚线框表示了解码时的数据划分,它们的划分点不同,使得解码时的待解码数据块可能是一个编码数据块的一部分,如左斜线方块表示的TL块,也可能是最多4个子数据块的部分拼接而成,如竖线方块表示的BR块。
这种划分共有如图20所示的四种情况,分别对应解码划分的交叉点和编码划分的交叉点不同的位置关系,考虑到每种情况下解码时都需要取4种不同的数据块(TL,TR,BL,BR),解码时共有16种不同的数据块。此处只考虑了最一般的情形,其它的划分不足4块或者编码和解码时的划分对齐的情况可以看做这4类情况的特例。
本申请实施例提供了一种混洗方法。第一从处理器接收主处理器发送的解码微指令。其中,解码微指令中携带有目标从处理器的标识;如果第一从处理器的标识与目标从处理器的标识相同,则第一从处理器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组。其中,第一混洗组包含多个第一混洗单元,第一混洗单元包含至少一个解码流。然后,第一从处理器确定各第一混洗单元的编码长度,根据各第一混洗单元的编码长度,在各第一混洗单元中,确定输出混洗单元和输入混洗单元。之后,第一从处理器将输出混洗单元中第一预设数目个待混洗流块,发送至输入混洗单元,作为输入混洗单元中的第一待解码流块,以通过输入混洗单元根据预设的解码算法对第一待解码流块进行解码。这样,通过对待解码数据块的各解码流进行混洗,可以保证各解码流的编码长度相近,从而避免由于各个解码流之间的对齐要求造成的补数过多,进而降低解码流。同时,还可以避免各解码流之间产生死锁情况。另外,针对不同的解码微指令,主处理器可以将不同的解码微指令发送至不同的从处理器,每个从处理器仅对接收到的解码微指令对应的解码区域中的编码数据块进行解码处理,从而可以使多个从处理器同时对同一个解码数据进行解码处理,进而提高解码的效率。
本申请实施例还提供了一种计算装置,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收源数据,并将所述源数据发送至所述多个从处理器;
所述多个从处理器,用于根据编码微指令,使用上述的方法对所述编码微指令对应的待编码数据块进行编码,得到编码数据块,并将所述编码数据块传送至所述主处理器;
所述主处理器,还用于根据各编码数据块,确定所述源数据对应的编码数据。
作为一种可选的实施方式,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
作为一种可选的实施方式,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述主片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令。
作为一种可选的实施方式,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块。
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述从片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令。
作为一种可选的实施方式,所述主处理器,还用于向所述从处理器发送所述编码微指令,指示所述从处理器执行编码过程。
本申请实施例还提供了一种计算装置,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收编码数据,并将所述编码数据发送至所述多个从处理器;
所述多个从处理器,用于根据解码微指令,使用上述的方法对所述解码微指令对应的待解码数据块进行解码,得到解码数据块,并将所述解码数据块传送至所述主处理器;
所述主处理器,还用于根据各解码数据块,确定所述编码数据对应的源数据。
作为一种可选的实施方式,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
作为一种可选的实施方式,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述主片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令。
作为一种可选的实施方式,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块。
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述从片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令。
作为一种可选的实施方式,所述主处理器,还用于向所述从处理器发送所述解码微指令,指示所述从处理器执行解码过程。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包含多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包含但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包含若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1,对应权1;条款A2,对应权2;条款A3,对应权3;条款A4,对应权4;条款A5,对应权5;条款A6,对应权6;条款A7,对应权7;条款A8,对应权8;条款A9,对应权9;条款A10,对应权10;条款A11,对应权11;条款A12,对应权12;条款A13,对应权13;条款A14,对应权14;条款A15,对应权15;条款A16,对应权16;条款A17,对应权17;条款A18,对应权18;条款A19,对应权19;条款A20,对应权20;条款A21,对应权21;条款A22,对应权22;条款A23,对应权23;条款A24,对应权24;条款A25,对应权25;条款A26,对应权26;条款A27,对应权27;条款A28,对应权28;条款A29,对应权29;条款A30,对应权30;条款A31,对应权31;条款A32,对应权32;条款A33,对应权33;条款A34,对应权34;条款A35,对应权35;条款A36,对应权36;条款A37,对应权37;条款A38,对应权38;条款A39,对应权39;条款A40,对应权40;条款A41,对应权41;条款A42,对应权42;条款A43,对应权43;条款A44,对应权44;条款A45,对应权45。
例如,条款A1、一种混洗方法,所述方法应用于主从处理器架构中的第一从处理器,所述方法包括:
接收主处理器发送的编码微指令,所述编码微指令中携带有目标从处理器的标识;
如果所述第一从处理器的标识与所述目标从处理器的标识相同,则所述第一从处理器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
条款A2、根据条款A1所述的方法,所述根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,包括:
获取待编码数据块对应的多个编码流;
根据第一混洗等级,将所述多个编码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个编码流,所述第一混洗组包含多个第一混洗单元。
条款A3、根据条款A1所述的方法,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的编码流中的待编码流块的总编码长度,确定为该第一混洗单元的编码长度。
条款A4、根据条款A1所述的方法,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块。
条款A5、根据条款A4所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
条款A6、根据条款A5所述的方法,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
条款A7、根据条款A6所述的方法,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A8、根据条款A4所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
条款A9、根据条款A8所述的方法,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
条款A10、根据条款A9所述的方法,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A11、根据条款A4所述的方法,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则将第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则将第二数目个第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
条款A12、根据条款A1所述的方法,所述方法还包括:
获取待编码的源数据;
根据接收到的编码微指令,在所述源数据中,确定所述编码微指令对应的编码区域,所述编码区域包含至少一个待编码数据块,所述待编码数据块为源数据块或源数据子块;
针对所述至少一个待编码数据块中的每个待编码数据块,将该待编码数据块划分为多个流块,并将所述多个流块发送至该待编码数据块对应的多个编码流,作为所述多个编码流中的待混洗流块。
条款A13、根据条款A1所述的方法,所述方法还包括:
当检测到多个编码流中的第一编码流编码完成时,将所述多个编码流中未编码完成的第二编码流中第四预设数目个待编码流块发送至所述第一编码流,作为所述第一编码流中的待编码流块。
条款A14、根据条款A1所述的方法,所述方法还包括:
如果各第一混洗组中待编码流块总编码长度大于所述待编码数据块的原长度,则终止对所述待编码数据块的编码处理。
条款A15、根据条款A1所述的方法,所述方法包括:
根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个编码流;
将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
条款A16、根据条款A1所述的方法,所述通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码,包括:
根据预设字符对应的第一编码规则,对所述第一待编码流块中包含的预设字符进行编码,得到第一编码数据;
根据预设的第二编码规则对所述第一编码数据进行编码。
条款A17、根据条款A12所述的方法,所述方法还包括:
生成各待编码数据块对应的编码数据块的编码头块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
将各编码头块进行存储,并在所述各编码头块之后存储各编码数据块。
条款A18、根据条款A17所述的方法,所述编码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述编码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
条款A19、根据条款A17所述的方法,所述编码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
条款A20、一种混洗方法,所述方法应用于主从处理器架构中的第一从处理器,所述方法包括:
接收主处理器发送的解码微指令,所述解码微指令中携带有目标从处理器的标识;
如果所述第一从处理器的标识与所述目标从处理器的标识相同,则所述第一从处理器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个解码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
条款A21、根据条款A20所述的方法,所述根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,包括:
获取待解码数据块对应的多个解码流;
根据第一混洗等级,将所述多个解码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个解码流,所述第一混洗组包含多个第一混洗单元。
条款A22、根据条款A20所述的方法,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的解码流中的待解码流块的总编码长度,确定为该第一混洗单元的编码长度。
条款A23、根据条款A20所述的方法,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待解码流块。
条款A24、根据条款A23所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
条款A25、根据条款A24所述的方法,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
条款A26、根据条款A25所述的方法,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A27、根据条款A23所述的方法,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
条款A28、根据条款A27所述的方法,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
条款A29、根据条款A28所述的方法,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
条款A30、根据条款A23所述的方法,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高解码类型的第一目标混洗单元的第一数目大于低解码类型的第二目标混洗单元的第二数目,则将第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高解码类型的第一目标混洗单元的第一数目小于或等于低解码类型的第二目标混洗单元的第二数目,则将第一数目个第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
条款A31、根据条款A20所述的方法,所述方法还包括:
获取待解码数据对应的编码头数据;
根据接收到的解码微指令,在所述编码头数据中,确定所述解码微指令对应的包含至少一个编码头块的解码区域,并获取所述至少一个编码头块对应的至少一个待解码数据块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
针对所述至少一个待解码数据块中的每个待解码数据块,将该待解码数据块划分为多个流块,并将所述多个流块发送至该待解码数据块对应的多个解码流,作为所述多个解码流中的待混洗流块。
条款A32、根据条款A31所述的方法,所述待解码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述待解码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
条款A33、根据条款A31所述的方法,所述待解码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
条款A34、根据条款A20所述的方法,所述方法还包括:
当检测到多个解码流中的第一解码流解码完成时,将所述多个解码流中未解码完成的第二解码流中第二预设数目个待解码流块发送至所述第一解码流,作为所述第一解码流中的待解码流块。
条款A35、根据条款A20所述的方法,所述方法还包括:
根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个解码流;
将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
条款A36、一种计算装置,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收源数据,并将所述源数据发送至所述多个从处理器;
所述多个从处理器,用于根据编码微指令,使用条款A1-条款A19任一项所述的方法对所述编码微指令对应的待编码数据块进行编码,得到编码数据块,并将所述编码数据块传送至所述主处理器;
所述主处理器,还用于根据各编码数据块,确定所述源数据对应的编码数据。
条款A37、根据条款A36所述的计算装置,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
条款A38、根据条款A36所述的计算装置,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述主片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令,所述编码微指令为编码非广播微指令或编码广播微指令。
条款A39、根据条款A36所述的计算装置,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块。
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述从片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令。
条款A40、根据条款A38或条款A39所述的计算装置,所述主处理器,还用于向所述从处理器发送所述编码微指令,指示所述从处理器执行编码过程。
条款A41、一种计算装置,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收编码数据,并将所述编码数据发送至所述多个从处理器;
所述多个从处理器,用于根据解码微指令,使用条款A20-条款A35任一项所述的方法对所述解码微指令对应的待解码数据块进行解码,得到解码数据块,并将所述解码数据块传送至所述主处理器;
所述主处理器,还用于根据各解码数据块,确定所述编码数据对应的源数据。
条款A42、根据条款A41所述的计算装置,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
条款A43、根据条款A41所述的计算装置,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述主片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令,所述解码微指令为解码非广播微指令或解码广播微指令。
条款A44、根据条款A41所述的计算装置,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块。
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述从片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令。
条款A45、根据条款A43或条款A44所述的计算装置,所述主处理器,还用于向所述从处理器发送所述解码微指令,指示所述从处理器执行解码过程。
所述控制模块包括解码单元,所述解码单元用于执行解码微指令,将所述解码微指令译码为微指令。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
Claims (45)
1.一种混洗方法,其特征在于,所述方法应用于主从处理器架构中的第一从处理器,所述方法包括:
接收主处理器发送的编码微指令,所述编码微指令中携带有目标从处理器的标识;
如果所述第一从处理器的标识与所述目标从处理器的标识相同,则所述第一从处理器根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个编码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,以通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码。
2.根据权利要求1所述的方法,其特征在于,所述根据第一混洗等级,确定待编码数据块对应的至少一个第一混洗组,包括:
获取待编码数据块对应的多个编码流;
根据第一混洗等级,将所述多个编码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个编码流,所述第一混洗组包含多个第一混洗单元。
3.根据权利要求1所述的方法,其特征在于,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的编码流中的待编码流块的总编码长度,确定为该第一混洗单元的编码长度。
4.根据权利要求1所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待编码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待编码流块。
5.根据权利要求4所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
6.根据权利要求5所述的方法,其特征在于,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
8.根据权利要求4所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
9.根据权利要求8所述的方法,其特征在于,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
11.根据权利要求4所述的方法,其特征在于,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高编码类型的第一目标混洗单元的第一数目小于或等于低编码类型的第二目标混洗单元的第二数目,则将第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高编码类型的第一目标混洗单元的第一数目大于低编码类型的第二目标混洗单元的第二数目,则将第二数目个第一目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第二目标混洗单元中,确定至少一个第二目标混洗单元作为该输出混洗单元对应的输入混洗单元。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取待编码的源数据;
根据接收到的编码微指令,在所述源数据中,确定所述编码微指令对应的编码区域,所述编码区域包含至少一个待编码数据块,所述待编码数据块为源数据块或源数据子块;
针对所述至少一个待编码数据块中的每个待编码数据块,将该待编码数据块划分为多个流块,并将所述多个流块发送至该待编码数据块对应的多个编码流,作为所述多个编码流中的待混洗流块。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到多个编码流中的第一编码流编码完成时,将所述多个编码流中未编码完成的第二编码流中第四预设数目个待编码流块发送至所述第一编码流,作为所述第一编码流中的待编码流块。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果各第一混洗组中待编码流块总编码长度大于所述待编码数据块的原长度,则终止对所述待编码数据块的编码处理。
15.根据权利要求1所述的方法,其特征在于,所述方法包括:
根据第二混洗等级,确定待编码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个编码流;
将各第二混洗单元中的待编码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
16.根据权利要求1所述的方法,其特征在于,所述通过所述输入混洗单元根据预设的编码算法对所述第一待编码流块进行编码,包括:
根据预设字符对应的第一编码规则,对所述第一待编码流块中包含的预设字符进行编码,得到第一编码数据;
根据预设的第二编码规则对所述第一编码数据进行编码。
17.根据权利要求12所述的方法,其特征在于,所述方法还包括:
生成各待编码数据块对应的编码数据块的编码头块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
将各编码头块进行存储,并在所述各编码头块之后存储各编码数据块。
18.根据权利要求17所述的方法,其特征在于,所述编码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述编码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
19.根据权利要求17所述的方法,其特征在于,所述编码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
20.一种混洗方法,其特征在于,所述方法应用于主从处理器架构中的第一从处理器,所述方法包括:
接收主处理器发送的解码微指令,所述解码微指令中携带有目标从处理器的标识;
如果所述第一从处理器的标识与所述目标从处理器的标识相同,则所述第一从处理器根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,所述第一混洗组包含多个第一混洗单元,所述第一混洗单元包含至少一个解码流;
确定各第一混洗单元的编码长度;
根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元;
将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,以通过所述输入混洗单元根据预设的解码算法对所述第一待解码流块进行解码。
21.根据权利要求20所述的方法,其特征在于,所述根据第一混洗等级,确定待解码数据块对应的至少一个第一混洗组,包括:
获取待解码数据块对应的多个解码流;
根据第一混洗等级,将所述多个解码流划分为多个第一混洗单元,并将所述多个第一混洗单元划分为至少一个第一混洗组,所述第一混洗单元包含至少一个解码流,所述第一混洗组包含多个第一混洗单元。
22.根据权利要求20所述的方法,其特征在于,所述确定各第一混洗单元的编码长度,包括:
针对每个第一混洗组中的每个第一混洗单元,将该第一混洗单元包含的解码流中的待解码流块的总编码长度,确定为该第一混洗单元的编码长度。
23.根据权利要求20所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,在所述各第一混洗单元中,确定输出混洗单元和输入混洗单元,包括:
根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型;
根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元;
所述将所述输出混洗单元中第一预设数目个待混洗流块,发送至所述输入混洗单元,作为所述输入混洗单元中的第一待解码流块,包括:
针对每个输出混洗单元,将该输出混洗单元中第二预设数目个待混洗流块,发送至该输出混洗单元对应的输入混洗单元,作为该输入混洗单元中的第一待解码流块。
24.根据权利要求23所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与其他第一混洗单元的编码长度的第一差值;
根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型。
25.根据权利要求24所述的方法,其特征在于,所述根据该第一混洗单元对应的第一差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值均为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第一差值中存在绝对值大于或等于第一预设差值阈值的目标差值,且所述目标差值中存在负数的目标差值,则确定该第一混洗单元的混洗类型为低编码类型。
26.根据权利要求25所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第一差值中不存在绝对值大于或等于第一预设差值阈值的目标差值,则确定该第一混洗单元的混洗类型为中编码类型。
27.根据权利要求23所述的方法,其特征在于,所述根据所述各第一混洗单元的编码长度,确定所述各第一混洗单元的混洗类型,包括:
根据所述各第一混洗单元的编码长度,确定平均编码长度;
针对所述各第一混洗单元中的每个第一混洗单元,确定该第一混洗单元的编码长度与所述平均编码长度的第二差值;
根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型。
28.根据权利要求27所述的方法,其特征在于,所述根据该第一混洗单元对应的第二差值,确定该第一混洗单元的混洗类型,包括:
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为正数,则确定该第一混洗单元的混洗类型为高编码类型;
如果该第一混洗单元对应的第二差值的绝对值大于或等于第二预设差值阈值,且所述第二差值为负数,则确定该第一混洗单元的混洗类型为低编码类型。
29.根据权利要求28所述的方法,其特征在于,所述方法还包括:
如果该第一混洗单元对应的第二差值的绝对值小于第二预设差值阈值,则确定该第一混洗单元的混洗类型为中编码类型。
30.根据权利要求23所述的方法,其特征在于,所述根据所述各第一混洗单元的混洗类型和预设的混洗规则,在所述各第一混洗单元中,确定输出混洗单元以及每个输出混洗单元对应的输入混洗单元,包括:
如果高解码类型的第一目标混洗单元的第一数目大于低解码类型的第二目标混洗单元的第二数目,则将第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元;
如果高解码类型的第一目标混洗单元的第一数目小于或等于低解码类型的第二目标混洗单元的第二数目,则将第一数目个第二目标混洗单元确定为输出混洗单元,并针对每个输出混洗单元,在第一目标混洗单元中,确定至少一个第一目标混洗单元作为该输出混洗单元对应的输入混洗单元。
31.根据权利要求20所述的方法,其特征在于,所述方法还包括:
获取待解码数据对应的编码头数据;
根据接收到的解码微指令,在所述编码头数据中,确定所述解码微指令对应的包含至少一个编码头块的解码区域,并获取所述至少一个编码头块对应的至少一个待解码数据块,所述编码头块中包含所述编码头块对应的编码数据块的存储地址;
针对所述至少一个待解码数据块中的每个待解码数据块,将该待解码数据块划分为多个流块,并将所述多个流块发送至该待解码数据块对应的多个解码流,作为所述多个解码流中的待混洗流块。
32.根据权利要求31所述的方法,其特征在于,所述待解码数据块由编码数据组成,所述编码数据的大小等于待编码数据块中待编码数据编码后的大小;或者,
所述待解码数据块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于待编码数据块的大小。
33.根据权利要求31所述的方法,其特征在于,所述待解码数据块由属于同一源数据块中的多个源数据子块对应的编码数据子块组成;
所述编码数据子块由编码数据组成,所述编码数据的大小等于源数据子块中待编码数据编码后的大小;或者,
所述编码数据子块由编码数据和填充数据组成,所述编码数据的大小和所述填充数据的大小之和等于所述源数据子块的大小。
34.根据权利要求20所述的方法,其特征在于,所述方法还包括:
当检测到多个解码流中的第一解码流解码完成时,将所述多个解码流中未解码完成的第二解码流中第二预设数目个待解码流块发送至所述第一解码流,作为所述第一解码流中的待解码流块。
35.根据权利要求20所述的方法,其特征在于,所述方法还包括:
根据第二混洗等级,确定待解码数据块对应的至少一个第二混洗组,所述第二混洗组包含多个第二混洗单元,所述第二混洗单元包含至少一个解码流;
将各第二混洗单元中的待解码流块作为待混洗流块重新进行混洗处理,直到各第二混洗单元的编码长度满足预设接近度条件。
36.一种计算装置,其特征在于,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收源数据,并将所述源数据发送至所述多个从处理器;
所述多个从处理器,用于根据编码微指令,使用权利要求1-19任一项所述的方法对所述编码微指令对应的待编码数据块进行编码,得到编码数据块,并将所述编码数据块传送至所述主处理器;
所述主处理器,还用于根据各编码数据块,确定所述源数据对应的编码数据。
37.根据权利要求36所述的计算装置,其特征在于,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
38.根据权利要求36所述的计算装置,其特征在于,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述主片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令,所述编码微指令为编码非广播微指令或编码广播微指令。
39.根据权利要求36所述的计算装置,其特征在于,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为编码微指令,利用所述编码微指令控制所述从处理器根据所述从片上存储模块中的源数据进行运算,并写入片外存储模块;
所述控制模块包括编码单元,所述编码单元用于执行所述编码微指令。
40.根据权利要求38或39所述的计算装置,其特征在于,所述主处理器,还用于向所述从处理器发送所述编码微指令,指示所述从处理器执行编码过程。
41.一种计算装置,其特征在于,包括:主处理器和与所述主处理器连接的多个从处理器;
所述主处理器,用于接收编码数据,并将所述编码数据发送至所述多个从处理器;
所述多个从处理器,用于根据解码微指令,使用权利要求20-35任一项所述的方法对所述解码微指令对应的待解码数据块进行解码,得到解码数据块,并将所述解码数据块传送至所述主处理器;
所述主处理器,还用于根据各解码数据块,确定所述编码数据对应的源数据。
42.根据权利要求41所述的计算装置,其特征在于,所述计算装置还包括位于所述主处理器和所述从处理器之间的分支处理器,
所述分支处理器用于所述主处理器和所述从处理器之间的数据转发。
43.根据权利要求41所述的计算装置,其特征在于,所述主处理器包括控制模块和主片上存储模块,所述从处理器包括运算模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述主片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令,所述解码微指令为解码非广播微指令或解码广播微指令。
44.根据权利要求41所述的计算装置,其特征在于,所述主处理器包括控制模块,所述从处理器包括运算模块和从片上存储模块;
所述控制模块,用于将所述主处理器接收到的机器指令译码为解码微指令,利用所述解码微指令控制所述从处理器根据所述从片上存储模块中的编码数据进行运算,并写入片外存储模块;
所述控制模块包括解码单元,所述解码单元用于执行所述解码微指令。
45.根据权利要求43或44所述的计算装置,其特征在于,所述主处理器,还用于向所述从处理器发送所述解码微指令,指示所述从处理器执行解码过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910954852.7A CN112650496B (zh) | 2019-10-09 | 2019-10-09 | 混洗方法及计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910954852.7A CN112650496B (zh) | 2019-10-09 | 2019-10-09 | 混洗方法及计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650496A CN112650496A (zh) | 2021-04-13 |
CN112650496B true CN112650496B (zh) | 2024-04-26 |
Family
ID=75342527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910954852.7A Active CN112650496B (zh) | 2019-10-09 | 2019-10-09 | 混洗方法及计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650496B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631596B (zh) * | 2019-10-09 | 2024-09-10 | 安徽寒武纪信息科技有限公司 | 混洗方法及计算装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1813241A (zh) * | 2003-06-30 | 2006-08-02 | 英特尔公司 | 混洗数据的方法和装置 |
CN104335166A (zh) * | 2012-06-29 | 2015-02-04 | 英特尔公司 | 用于执行混洗和操作(混洗-操作)的系统、装置和方法 |
WO2016112511A1 (zh) * | 2015-01-15 | 2016-07-21 | 华为技术有限公司 | 一种数据混洗的装置及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100630143B1 (ko) * | 2002-09-30 | 2006-09-29 | 삼성전자주식회사 | 통신 시스템에서 셔플링 데이터의 수신 방법 및 장치 |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and instructions |
-
2019
- 2019-10-09 CN CN201910954852.7A patent/CN112650496B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1813241A (zh) * | 2003-06-30 | 2006-08-02 | 英特尔公司 | 混洗数据的方法和装置 |
CN104335166A (zh) * | 2012-06-29 | 2015-02-04 | 英特尔公司 | 用于执行混洗和操作(混洗-操作)的系统、装置和方法 |
WO2016112511A1 (zh) * | 2015-01-15 | 2016-07-21 | 华为技术有限公司 | 一种数据混洗的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112650496A (zh) | 2021-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318851B2 (en) | Generating and decoding two-dimensional code | |
AU700606B2 (en) | Method and apparatus for compressing and decompressing three-dimensional digital data using fractal transform | |
US9569860B2 (en) | Method and apparatus for compressing and decompressing data | |
RU2018125511A (ru) | Древовидная структура множественного типа кодирования видео | |
JP2007020208A (ja) | ブロック単位での画像データの圧縮及び圧縮解除 | |
JP2016513916A5 (zh) | ||
TW411715B (en) | Pixel colour value encoding and decoding | |
US20160142710A1 (en) | Image encoding and decoding method and apparatus | |
TW201235937A (en) | Data processing apparatus and method | |
CN112650496B (zh) | 混洗方法及计算装置 | |
US9918098B2 (en) | Memory management of motion vectors in high efficiency video coding motion vector prediction | |
US8761529B2 (en) | Apparatus and method for parallel encoding and decoding image data based on correlation of macroblocks | |
KR20180077060A (ko) | 화소들의 리스트들을 인코딩 및 디코딩하는 방법 및 장치 | |
JP2019511865A5 (zh) | ||
CN112631596B (zh) | 混洗方法及计算装置 | |
EP2635026A2 (en) | Parallel pyramid entropy coding for video and image compression | |
CN112631597B (zh) | 混洗方法及计算装置 | |
CN112631595B (zh) | 混洗方法、装置、计算机设备及可读存储介质 | |
TW200818900A (en) | Method for mapping memory addresses, memory accessing apparatus and method thereof | |
CN116894457B (zh) | 深度学习模型的网络权重存取方法 | |
CN104079941A (zh) | 一种深度信息编解码方法、装置及视频处理播放设备 | |
CN111083119A (zh) | 一种基于二维码的大容量信息传输方法 | |
CN113557529B (zh) | 混合二维条码阅读器 | |
CN108280502B (zh) | 一种qr码容量提升方法及终端 | |
US20230319248A1 (en) | Method for switching atlas according to user's watching point and device therefor |
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 |