CN114416180B - 向量数据的压缩方法、向量数据的解压方法、装置及设备 - Google Patents
向量数据的压缩方法、向量数据的解压方法、装置及设备 Download PDFInfo
- Publication number
- CN114416180B CN114416180B CN202210312611.4A CN202210312611A CN114416180B CN 114416180 B CN114416180 B CN 114416180B CN 202210312611 A CN202210312611 A CN 202210312611A CN 114416180 B CN114416180 B CN 114416180B
- Authority
- CN
- China
- Prior art keywords
- vector
- data
- merged
- target
- group
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 901
- 238000000034 method Methods 0.000 title claims abstract description 85
- 230000006837 decompression Effects 0.000 title claims abstract description 43
- 238000013144 data compression Methods 0.000 title abstract description 33
- 238000007906 compression Methods 0.000 claims description 23
- 230000006835 compression Effects 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 21
- 238000009826 distribution Methods 0.000 claims description 11
- 238000006073 displacement reaction Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 34
- 238000010586 diagram Methods 0.000 description 21
- 238000013473 artificial intelligence Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 12
- 230000009286 beneficial effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101100063435 Caenorhabditis elegans din-1 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种向量数据的压缩方法、向量数据的解压方法、装置及设备,涉及数据处理技术领域。所述方法包括:源向量寄存器存储源向量数据,该源向量数据被划分为n个源子向量,n个源子向量和n组多路选择器一一对应;n组多路选择器中的第i组多路选择器对源向量数据中的第i个源子向量中的有效元素进行选择性排列,得到第i个目标子向量;数据合并装置对n个源子向量对应的n个目标子向量进行移位合并,得到目标向量数据;其中,目标向量数据中的有效元素位于目标向量数据的头部;目标向量寄存器对目标向量数据中的有效元素进行存储。本申请通过对向量数据进行分段压缩,再进行合并,可有效减少布线的拥塞程度,从而大幅度减小处理器的面积。
Description
技术领域
本申请实施例涉及数据处理技术领域,特别涉及一种向量数据的压缩方法、向量数据的解压方法、装置及设备。
背景技术
目前,对于一些业界主流AI(Artificial Intelligence,人工智能)处理器,设计有数据压缩指令,该数据压缩指令可用于加速AI处理器的推理和训练的效率。数据压缩指令的实现方式对AI处理器有着重要影响。
在相关技术中,通过采用一组MUX(Multiplexer,多路选择器)直接对向量数据进行压缩,以实现数据压缩指令。例如,在对具有16个元素的向量数据进行数据压缩时,需要设置15个MUX,该15个MUX从低位到高位依次为:16选1、15选1、…、2选1等类型的MUX。
然而,在相关技术中,随着AI处理器的向量处理并行度的上升,所需的MUX数量也随之上升,MUX的端口数量也随之剧增,导致布线拥塞严重,以及AI处理器的面积很大。
发明内容
本申请实施例提供了一种向量数据的压缩方法、向量数据的解压方法、装置及设备,能够减轻AI处理器中数据压缩指令实现所需的布线的拥塞程度,以及减少AI处理器的面积。所述技术方案可以包括如下内容。
根据本申请实施例的一个方面,提供了一种向量数据的压缩方法,所述方法由处理器执行,所述处理器包括源向量寄存器、n组多路选择器、数据合并装置和目标向量寄存器,n为大于1的整数;
所述方法包括:
所述源向量寄存器存储源向量数据,所述源向量数据被划分为n个源子向量,所述n个源子向量和所述n组多路选择器一一对应;
所述n组多路选择器中的第i组多路选择器对所述源向量数据中的第i个源子向量中的有效元素进行选择性排列,得到所述第i个源子向量对应的第i个目标子向量;其中,所述第i个目标子向量中的有效元素位于所述第i个目标子向量的头部,i为小于或等于n的正整数;
所述数据合并装置对所述n个源子向量对应的n个目标子向量进行移位合并,得到目标向量数据;其中,所述目标向量数据中的有效元素位于所述目标向量数据的头部;
所述目标向量寄存器对所述目标向量数据中的有效元素进行存储。
根据本申请实施例的一个方面,提供了一种向量数据的解压方法,所述方法由处理器执行,所述处理器包括目标向量寄存器、数据拆分装置和n组多路选择器,n为大于1的整数;
所述方法包括:
所述目标向量寄存器存储目标向量数据,所述目标向量数据中的有效元素位于所述目标向量数据的头部;
所述数据拆分装置对所述目标向量数据进行移位拆分,得到n个目标子向量;其中,所述目标子向量中的有效元素位于所述目标子向量的头部;
所述n组多路选择器分别对所述n个目标子向量进行解压,得到n个源子向量;其中,所述n个源子向量用于组合得到源向量数据。
根据本申请实施例的一个方面,提供了一种处理器,所述处理器包括源向量寄存器、n组多路选择器、数据合并装置和目标向量寄存器;其中,每组多路选择器中包括至少两个多路选择器,n为大于1的整数;
所述源向量寄存器包括n组输出端口,所述n组输出端口分别与所述n组多路选择器的输入端口连接;
所述n组多路选择器的输出端口与所述数据合并装置的输入端口连接;
所述目标向量寄存器的输入端口与所述数据合并装置的输出端口连接。
根据本申请实施例的一个方面,提供了一种处理器,所述处理器包括目标向量寄存器、数据拆分装置和n组多路选择器;其中,每组多路选择器中包括至少两个多路选择器,n为大于1的整数;
所述目标向量寄存器的输出端口与所述数据拆分装置的输入端口连接;
所述数据拆分装置的输出端口与所述n组多路选择器的输入端口连接。
根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述向量数据的压缩方法,或实现上述向量数据的解压方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述向量数据的压缩方法,或实现上述向量数据的解压方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述向量数据的压缩方法,或实现上述向量数据的解压方法。
本申请实施例提供的技术方案可以包括如下有益效果。
通过n组多路选择器,分别对源向量数据划分而成的n个源子向量进行压缩,得到n个目标子向量,再对n个目标子向量进行移位合并,得到目标向量数据,即压缩后的源向量数据,实现了对向量数据的分治处理,从而减少了处理器中向量数据压缩所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低了布线交叉程度(如对于源向量寄存器的某一输出端口,需要连接至多个多路选择器),进而大大减轻了处理器中向量数据压缩所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。
另外,通过n组多路选择器,对n个源子向量进行并行压缩,进而减少向量数据的压缩时延,进而提高向量数据的压缩效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的处理器(对应向量数据压缩)的示意图;
图2是本申请一个实施例提供的处理器(对应向量数据压缩)的示意图;
图3是本申请另一个实施例提供的处理器(对应向量数据压缩)的示意图;
图4是本申请一个实施例提供的向量数据的压缩方法的流程图;
图5是本申请一个实施例提供的源向量数据和压缩后的源向量数据的示意图;
图6是本申请一个实施例提供的源子向量和压缩后的源子向量的示意图;
图7是本申请一个实施例提供的待合并向量的合并方法的示意图;
图8是本申请一个实施例提供的填补后的待合并向量的获取方法的示意图;
图9是本申请一个实施例提供的处理器(对应向量数据解压)的示意图;
图10是本申请另一个实施例提供的处理器(对应向量数据解压)的示意图;
图11是本申请一个实施例提供的向量数据的解压方法的流程图;
图12是本申请一个实施例提供的目标向量数据和解压后的目标向量数据的示意图;
图13是本申请一个实施例提供的目标子向量和解压后的目标子向量的示意图;
图14是本申请一个实施例提供的待拆分向量的拆分方法的示意图;
图15是本申请一个实施例提供的向量数据的压缩装置的框图;
图16是本申请一个实施例提供的向量数据的解压装置的框图;
图17是本申请一个实施例提供的计算机设备的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在相关技术中,通常是直接使用多个MUX对整个向量数据(或矢量数据)进行压缩。例如,根据数据压缩指令,每个MUX依次从向量数据中选择出一个元素,以使得向量数据中的有效元素集中于向量数据的头部,向量数据中的无效元素集中于向量数据的尾部,从而得到压缩后的向量数据。其中,有效元素可以是指对处理器(如AI处理器)的推理、训练等有用的元素,无效元素可以是指对处理器(如AI处理器)的推理、训练等无用的元素。
示例性地,参考图1,其示出了相关技术提供的处理器的示意图。处理器100的向量处理并行度为128,也即同时有128个元素输入至处理器100中。处理器100可以是指AI处理器,其可用于执行数据压缩指令,该数据压缩指令是指将源向量数据中有效元素压缩至头部,并挤掉无效元素的指令。可选地,处理器100也可以是指AI芯片,处理器100也可以被称之为向量压缩单元,本申请实施例对此不作限定。
处理器100包括源向量寄存器101、目标向量寄存器102和127个多路选择器。源向量寄存器101用于存储源向量数据,该源向量数据是指待压缩的向量数据。可选地,源向量寄存器101具有128个输出端口,从低位到高位(即从右至左)依次排序为:dout0至dout127。
该127个多路选择器,从低位到高位依次排序为:128选1多路选择器、127选1多路选择器、…、2选1多路选择器。其中,128选1多路选择器的输入端口与源向量寄存器101的128个输出端口连接(可选地,本文中涉及端口的连接均是指电性连接),用于从源向量数据对应的128个元素中选择出第1个有效元素(从低位到高位的顺序),128选1多路选择器的输出端口与目标寄存器102的输入端口din0连接,用于将该第1个有效元素输入至目标寄存器102中。目标寄存器102用于存储目标向量数据,即压缩后的源向量数据。可选地,目标寄存器102还可以用于存储目标向量数据中的有效元素。
127选1多路选择器的输入端口与源向量寄存器101的127个高位输出端口连接(即左起127个),用于从源向量数据对应的127个元素(除掉dout0对应的元素)中选择出第2个有效元素,127选1多路选择器的输出端口与目标寄存器102的输入端口din1连接,用于将该第2个有效元素输入至目标寄存器102中。
依次类推,通过127个多路选择器,可以对源向量数据中的元素进行选择性排列,得到压缩后的源向量数据,即目标向量数据。其中,源向量寄存器的输出端口dout127直接与目标向量寄存器的输入端口127连接,则源向量数据对应的最后一个元素可以直接输入至目标向量寄存器中。
可见,基于上述数据压缩所需要的硬件架构,在处理器具有高向量处理并行度的情况下,布线区域103中,将存在大量布线。例如,若处理器的向量处理并行度为128,则布线区域103中,将存在128+127+126+…+3+2+1=8256条布线。如此,随着处理器的向量处理并行度的提升,布线区域103中的布线数量也会随之剧增,如此将会大大增加布线的拥塞程度,甚至无法收敛,布线压力极大。同时,也会大大增加处理器100的面积。而且,在布线区域103中,大量布线之间存在交叉,例如,源向量寄存器的输出端口dout127需要与每个多路选择器连接,源向量寄存器的输出端口dout126也需要与每个多路选择器连接,这中间就已经存在多个布线交叉,随着处理器的向量处理并行度的提升,布线交叉程度也会随之剧增,这将进一步加大布线压力。
本申请提出了一种向量数据的压缩方法,支持对向量数据进行分治处理,可以减少处理器中向量数据压缩所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低布线交叉程度(如对于源向量寄存器的某一输出端口,需要连接至多个多路选择器),从而大大减轻处理器中向量数据压缩所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。下文将对本申请提供的向量数据的压缩方法进行具体介绍说明。
请参考图2,其示出了本申请一个实施例提供的处理器的示意图。处理器200包括源向量寄存器201、n组多路选择器、数据合并装置202和目标向量寄存器203。其中,每组多路选择器中包括至少两个多路选择器,n为大于1的整数。
源向量寄存器201包括n组输出端口,该n组输出端口分别与n组多路选择器的输入端口连接。其中,n组输出端口中的第p组输出端口与n组多路选择器中的第p组多路选择器的输入端口连接,p为小于或等于n的正整数。
例如,参考图3,以处理器的向量处理并行度为128为例,源向量寄存器301的128个输出端口(即图3中的dout127-dout0)被分成了4组,第1组输出端口(dout127-dout96)与第1组多路选择器的输入端口(din127-din96)一一对应连接;第2组输出端口(dout95-dout64)与第2组多路选择器的输入端口(din95-din64)一一对应连接;第3组输出端口(dout63-dout32)与第3组多路选择器的输入端口(din63-din32)一一对应连接;第4组输出端口(dout31-dout0)与第4组多路选择器的输入端口(din31-din0)一一对应连接。
可选地,上述n可以被设置为2的整数倍,如2、4、6等,以便处理器的硬件布局,如布线、多路选择器等,本申请实施例对此不作限定。
在一个示例中,第p组输出端口包括x个输出端口,第p组多路选择器包括x-1个多路选择器,x为正整数。第p组输出端口可以是指n组输出端口中的任一组输出端口。可选地,可以对n组输出端口进行均分,也可以将每组输出端口设置成不同的输出端口数量,本申请实施例对此不作限定。例如,参考图3,每组输出端口均包括32个输出端口,则每组多路选择器均包括31个多路选择器。
可选地,按照从低位到高位的顺序,该x-1个多路选择器中的第a个多路选择器包括x-a+1个输入端口,第a个多路选择器对应的x-a+1个输入端口,按照从高位到低位的顺序,分别与第p组输出端口的x-a+1个输出端口一一连接,a为小于x的正整数。
例如,参考图3,按照从高位到低位的顺序,第1组多路选择器(din127-din96)中的第1个多路选择器(即32选1多路选择器)包括32-1+1=32个输入端口,该第1个多路选择器的32个输入端口,按照从低位到高位的顺序,分别与第1组输出端口(dout127-dout96)的32个输出端口一一对应连接。又例如,按照从低位到高位的顺序,第1组多路选择器(din127-din96)中的第2个多路选择器(即31选1多路选择器,图3中未示出)包括32-2+1=31个输入端口,该第2个多路选择器的31个输入端口,按照从高位到低位的顺序,分别与第1组输出端口(dout127-dout96)的左起31个输出端口(即dout127-dout97)一一对应连接。
可选地,第p组输出端口的第一输出端口与数据合并装置202的输入端口连接,第一输出端口是指按照从高位到低位的顺序,第p组输出端口对应的第一个输出端口。例如,参考图3,第1组输出端口的第1输出端口(即dout127)直接与数据合并装置中的数据合并单元1的输入端口连接。
在一个示例中,n组多路选择器的输出端口与数据合并装置202的输入端口连接。示例性地,数据合并装置202可以包括m组数据合并单元,m为正整数。
其中,第一组数据合并单元中的数据合并单元的输入端口与每两个相邻的一组多路选择器的输出端口连接。例如,参考图3,数据合并装置包括2组数据合并单元,第1组数据合并单元包括:数据合并单元1和数据合并单元2,第2组数据合并单元包括数据合并单元3。数据合并单元1的输入端口与第1组多路选择的输出端口(din127-din96)和第2组多路选择的输出端口(din95-din64)连接,数据合并单元2的输入端口与第3组多路选择的输出端口(din63-din32)和第4组多路选择的输出端口(din31-din0)连接。
可选地,第z组数据合并单元中的数据合并单元的输入端口与第z-1组数据合并单元中的每两个相邻的数据合并单元的输出端口连接,z为大于1的整数。例如,参考图3,第2组数据合并单元中的数据合并单元3的输入端口与第1组数据合并单元中的数据合并单元1的输出端口和数据合并单元2的输出端口连接。
可选地,在第z组数据合并单元中的数据合并单元的数量为奇数的情况下,第z组数据合并单元中的目标数据合并单元的输出端口与第z+1组数据合并单元中的目标数据合并单元的输入端口连接,目标数据合并单元是指按照从高位到低位的顺序,每组数据合并单元中的最后一个数据合并单元。例如,在第1组数据合并单元中的数据合并单元的数量为3的情况下,第1组数据合并单元中的最后一个数据合并单元的输出端口与第2组数据合并单元中的最后一个数据合并单元的输入端口连接。
目标向量寄存器203的输入端口与数据合并装置202的输出端口连接。示例性地,m组数据合并单元中的最后一组数据合并单元中的数据合并单元的输出端口与目标向量寄存器203的输入端口连接。例如,参考图3,数据合并单元3的输出端口与目标向量寄存器302的输入端口连接。
可选地,上述数据合并单元可以由移位器和多路选择器组合而成。示例性地,上述数据合并单元由桶形移位器和2选1多路选择器组合而成。下文将对通过桶形移位器和2选1多路选择器进行向量数据合并的方法进行说明,这里不再赘述。
在一个示例性实施例中,参考图3,每组组多路选择器对应的布线区域,存在32+31+…+3+2+1=528条布线,则共计存在528*4=2112条布线,与相关技术中的8256条布线相比,大大减少了布线数量,从而降低了布线压力和布线所需面积。同时,随着布线数量的大大减少,布线交叉程度也随之大大减少。
通过Design Compiler(一种用于做电路综合的工具)对相关技术和本申请中的数据压缩硬件(如上述处理器100和处理器300)进行综合,相关技术对应的面积为1031um^2,而本申请对应的面积为711um^2,可见,本申请实现数据压缩指令所需的面积大大小于相关技术对应的面积,且仅为相关技术对应的面积的69%。另外,随着处理器的向量处理并行度的提升,针对面积的改善效果会更加显著。
综上所述,本申请实施例提供的技术方案,通过n组多路选择器,分别对源向量数据划分而成的n个源子向量进行压缩,得到n个目标子向量,再对n个目标子向量进行移位合并,得到目标向量数据,即压缩后的源向量数据,实现了对向量数据的分治处理,从而减少了处理器中向量数据压缩所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低了布线交叉程度(如对于源向量寄存器的某一输出端口,需要连接至多个多路选择器),进而大大减轻了处理器中向量数据压缩所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。
另外,通过n组多路选择器,对n个源子向量进行并行压缩,进而减少向量数据的压缩时延,进而提高向量数据的压缩效率。
请参考图4,其示出了本申请一个实施例提供的向量数据的解压方法的流程图,该方法由处理器执行,如上述图2所示的处理器。该方法可以包括如下几个步骤(401~404)。
步骤401,源向量寄存器存储源向量数据,该源向量数据被划分为n个源子向量,n个源子向量和n组多路选择器一一对应。
源向量寄存器是指用于存储源向量数据的寄存器。根据数据压缩指令,处理器可以从源向量寄存器中调取源向量数据。源向量数据是指待压缩的向量数据。在本申请实施例中,源向量数据中的元素数量可以根据处理器的向量处理并行度来判断。例如,源向量数据中的元素数量可以与处理器的向量处理并行度相同。
可选地,源向量数据中可以包括有效元素和无效元素。有效元素可以是指对处理器(如AI处理器)的推理、训练等有用的元素,无效元素可以是指对处理器(如AI处理器)的推理、训练等无用的元素。在一些示例中,处理器除了调用源向量数据之外,还会调用与源向量数据伴生的布尔向量。该布尔向量中的元素用于指示源向量数据中的有效元素的分布,布尔向量可以存储在源向量寄存器中,也可以存储在其他寄存器中,本申请实施例对此不作限定。例如,参考图5,布尔向量501中的每一个元素是一个布尔值,1代表在源向量数据502中对应位置上的元素是有效元素,0代表在源向量数据502中对应位置上的元素是无效元素,在后续向量数据压缩过程中,无效元素需要被挤掉。
本申请实施例引入了分治策略,也即在源向量数据的压缩过程中,对源向量数据中的元素进行分组并行压缩。示例性地,参考图3,源向量数据被划分成了4个源子向量,每个源子向量对应源向量数据中的一组元素。例如,按照从高位到低位,依次将具有128个元素的源向量数据均分为4个具有32个元素的源子向量,4个源子向量分别对应一组多路选择器,每组多路选择器用于对各自对应的源子向量进行压缩。
步骤402,n组多路选择器中的第i组多路选择器对源向量数据中的第i个源子向量中的有效元素进行选择性排列,得到第i个源子向量对应的第i个目标子向量;其中,第i个目标子向量中的有效元素位于第i个目标子向量的头部,i为小于或等于n的正整数。
第i组多路选择器可以是指n组多路选择器中的任一组多路选择器,第i个源子向量是指与第i组多路选择器对应的源子向量。例如,参考图3,按照从高位到低位的顺序,第1个源子向量(由dout127-dout96对应的元素组成)对应于第1组多路选择器(din127-din96);第2个源子向量(由dout95-dout64对应的元素组成)对应于第2组多路选择器(din95-din64);第3个源子向量(由dout63-dout32对应的元素组成)对应于第3组多路选择器(din63-din32);第4个源子向量(由dout31-dout0对应的元素组成)对应于第4组多路选择器(din31-din0)。
在一个示例中,可以根据源子向量中的元素数量,来确定各组多路选择器中的多路选择器的数量。示例性地,对于第i个源子向量,该第i个源子向量中包括x个元素,x个元素中包括y个有效元素,则第i组多路选择器中包括x-1个不同类型的多路选择器,x为正整数,y为小于或等于x的正整数。例如,参考图3,对于第1个源子向量(由dout127-dout96对应的元素组成),第1个源子向量包括32个元素,则第1个源子向量对应的第1组多路选择器包括31个不同类型的多路选择器。
以第i个源子向量的压缩过程为例,第i个源子向量对应的第i个目标子向量的获取过程可以如下:x-1个多路选择器中的y个多路选择器基于源向量数据对应的布尔向量,按照从低位到高位的顺序,依次从x个元素中选择出y个有效元素,且按照从低位到高位的顺序,对y个有效元素进行排列,得到第i个目标子向量。
例如,参考图6,第i个源子向量602包括9个元素,9个元素中包括5个有效元素,按照从低位到高位的顺序依次为:D0、D1、D2、D3、D4。第i个源子向量602对应的一组多路选择器中的右起5个多路选择器,基于子布尔向量601(即由第i个源子向量在布尔向量中对应的元素组成),按照从低位到高位的顺序,依次从9个元素中选择出该5个有效元素,且按照从低位到高位的顺序,对5个有效元素进行排列,得到第i个目标子向量603,第i个目标子向量中的5个有效元素按序排列在第i个目标子向量603的头部。可选地,剩余的无效元素亦可按照从低位到高位的顺序,依次排序在第i个目标子向量603中剩余的位置上。
在一个示例中,第i个目标子向量的每个位置上的元素的具体确定过程可以如下:y个多路选择器中的第z个多路选择器基于布尔向量,从第i个源子向量中的第z位元素到第x位元素中择出第z个有效元素,z为小于或等于y的正整数;第z个多路选择器将第z个有效元素添加至第i个目标子向量的第z位。其中,第z个多路选择器可以是指y个多路选择器中的任一多路选择器。
例如,参考图6,按照从低位到高位的顺序,第1个多路选择器基于子布尔向量601,从第i个源子向量602中的第1位元素到第9位元素中择出第1个有效元素:D0,并将第1个有效元素添加至第i个目标子向量603的第1位;第2个多路选择器基于子布尔向量601,从第i个源子向量602中的第2位元素到第9位元素中择出第2个有效元素:D1,并将第2个有效元素添加至第i个目标子向量603的第2位,依次类推,则可以将第i个源子向量602对应的5个有效元素排列至在第i个目标子向量603的头部。
步骤403,数据合并装置对n个源子向量对应的n个目标子向量进行移位合并,得到目标向量数据;其中,目标向量数据中的有效元素位于目标向量数据的头部。
可选地,数据合并装置包括m组数据合并单元,该m组数据合并单元用于对n个目标子向量进行p轮移位合并,得到目标向量数据,m为大于1的整数,p为正整数。例如,参考图3,数据合并装置包括2组数据合并单元,第1组数据合并单元包括:数据合并单元1和数据合并单元2,第2组数据合并单元包括数据合并单元3。该2组数据合并单元用于对4个目标子向量(由4组多路选择器的输出分别组成)进行2轮移位合并。
可选地,p可以被设置为等于m,也即m组数据合并单元可以对n个目标子向量进行m轮移位合并,得到目标向量数据。
目标向量数据是指源向量数据压缩后得到的向量数据。可选地,目标向量数据可以只保留源向量数据中的有效元素,也可以将源向量数据中的有效元素和无效元素均保留,本申请实施例对此不作限定。例如,参考图5,对源向量数据502进行压缩后,可以得到目标向量数据503,目标向量数据503中的有效元素(D0-Dn)位于目标向量数据503的头部。
在一个示例中,上述p轮移位合并的具体过程可以如下:对于第q轮移位合并,m组数据合并单元中的第q组数据合并单元,对第q组待合并向量进行移位合并,得到第q组合并向量,q为小于或等于p的正整数;其中,当q等于1时,第q组待合并向量为n个目标子向量;当q大于1时,第q组待合并向量为第q-1组合并向量,第p组合并向量为目标向量数据。
例如,参考图3,第1组数据合并单元(数据合并单元1和数据合并单元2)用于对4个目标子向量(即4个具有32个元素的待合并向量)进行第一轮移位合并,得到第1组合并向量(即2个具有64个元素的合并向量),第2组数据合并单元(数据合并单元3)用于对第1组合并向量进行第二轮移位合并,得到目标向量数据(即1个具有128个元素的合并向量)。
在一个示例中,第q组数据合并单元中的数据合并单元对第q组待合并向量中的每两个相邻的待合并向量进行移位合并,得到第q组合并向量。例如,参考图3,第1组数据合并单元中的据合并单元1对相邻的第1个目标子向量(由第1组多路选择器的输出分别组成)和第2个目标子向量(由第2组多路选择器的输出分别组成)进行移位合并,第1组数据合并单元中的据合并单元2对相邻的第3个目标子向量(由第3组多路选择器的输出分别组成)和第4个目标子向量(由第4组多路选择器的输出分别组成)进行移位合并,得到第1组合并向量。
可选地,在第q组待合并向量中的待合并向量的数量为奇数的情况下,数据合并装置将第q组待合并向量中的目标待合并向量,添加至第q组合并向量中;其中,第q组待合并向量中的目标待合并向量是指按照从低位到高位的顺序,第q组待合并向量中的第一个待合并向量。例如,在第q组待合并向量中的待合并向量的数量为3的情况下,可以直接将第q组待合并向量中的右起第1个待合并向量,添加至第q组合并向量中。并对第q组待合并向量中的右起第2个待合并向量和第3个待合并向量进行移位合并。
在一个示例中,在第q组数据合并单元中的第一数据合并单元对第q组待合并向量中的第一待合并向量和第二待合并向量进行移位合并的情况下,该移位合并过程可以如下:
1、第一数据合并单元根据第二待合并向量,对第一待合并向量进行移位调整,得到调整后的第一待合并向量。
其中,相对于第一待合并向量对应的元素在源向量数据中的位置,第二待合并向量对应的元素在源向量数据中的位置位于低位。可选地,第一待合并向量可以被称之为高位待合并向量,第二待合并向量可以被称之为低位待合并向量。第一数据合并单元可以是指第q组数据合并单元中的任一数据合并单元,第一待合并向量和第二待合并向量是指第一数据合并单元对应的相邻的两个待合并向量。
可选地,调整后的第一待合并向量的具体获取过程可以如下:第一数据合并单元根据第二待合并向量的元素数量,对第一待合并向量进行元素填补,得到填补后的第一待合并向量,填补后的第一待合并向量的元素数量为第二待合并向量的元素数量和第一待合并向量的元素数量之间的和值;第一数据合并单元根据第二待合并向量的无效元素数量,对填补后的第一待合并向量中的非填补元素进行整体移位,得到调整后的第一待合并向量,调整后的第一待合并向量的头部对应的填补元素数量与第二待合并向量的有效元素数量相同。
例如,参考图7,第一待合并向量701具有32个元素,第二待合并向量704也具有32个元素,则可以判断填补后的第一待合并向量702具有64个元素。可选地,先在第一待合并向量701的高位补充32个零元素,再将32个非填补元素整体向高位整体移31位,即可得到填补后的第一待合并向量702。可选地,可以通过移位器对32个非填补元素进行整体移位。例如,通过桶形移位器对32个非填补元素进行整体移位。
其中,桶形移位器可用于对向量数据中的元素进行向左循环移位,所以控制输入仅需明确移动位数,该移动位数以二进制数值串(以下简称S)表示,例如,设桶形移位器对应64个输入端口和64个输出端口,当S=00000时,表示向左循环移位0,则dout63=din63,当S=11111时,表示向左循环移位31,则dout63=din31。可选地,可以进行多步移位,例如,当S=11111时,可以先后移动16位、 8位、4位、2位和1位。示例性地,参考图8,以S=11111为例,该过程具体可以如下:
在对第一待合并向量701进行元素填补后,利用2选1多路选择器对元素填补后的第一待合并向量701和第一待合并向量701进行合并,得到具有64个元素的过渡待合并向量。再设置S=10000,则桶形移位器将非填补元素向左循环移位16,利用2选1多路选择器对第一次移位后的过渡待合并向量和过渡待合并向量进行合并,得到第一中间向量。依次类推,再设置S=01000,则桶形移位器将非填补元素向左循环移位8,然后设置S=00100,则桶形移位器将非填补元素向左循环移位4,继而设置S=00010,则桶形移位器将非填补元素向左循环移位2,最后设置S=00001,则桶形移位器将非填补元素向左循环移位1,得到填补后的第一待合并向量702。
设第二待合并向量704包括a个无效元素,32-a个有效元素,则可以通过桶形移位器将填补后的第一待合并向量702中的32个非填补元素向低位整体移动32-a-1位(即S=32-a-1),即可得到调整后的第一待合并向量703,调整后的第一待合并向量703的低位留有32-a个位置,以放置第二待合并向量704中的32-a个有效元素。
在一些实施例中,可以直接根据第二待合并向量中的有效元素数量,将补充元素后的第一待合并向量中的非填补元素向高位整体移动,第二待合并向量中的有效元素数量-1位。
2、第一数据合并单元对调整后的第一待合并向量和第二待合并向量进行合并,得到第q组合并向量对应的第一合并向量。
可选地,第一数据合并单元按照从低位到高位的顺序,从调整后的第一待合并向量和第二待合并向量中,选择出第一合并向量对应的元素。其中,对于第一合并向量对应的第k位元素,第一数据合并单元从调整后的第一待合并向量中的第k位元素和第二待合并向量中的第k位元素,选择出第一合并向量对应的第k位元素,k为正整数。第k位元素可以是指第一合并向量中的任一位元素。
示例性地,在调整后的第一待合并向量中的第k位元素为有效元素的情况下,第一数据合并单元将调整后的第一待合并向量中的第k位元素确定为第一合并向量对应的第k位元素;或者,在第二待合并向量中的第k位元素为有效元素的情况下,第一数据合并单元将第二待合并向量中的第k位元素确定为第一合并向量对应的第k位元素。
例如,参考图7,调整后的第一待合并向量703的低位留有32-a个位置,该32-a个位置对应的元素均为零元素,等效于无效元素,第一数据合并单元中的2选1多路选择器,具有两个输入端口,一路输入端口用于获取调整后的第一待合并向量703对应的元素,另一路输入端口用于获取第二待合并向量704对应的元素。例如,按照从低位到高位的顺序,调整后的第一待合并向量703对应的第1个元素为零元素,第二待合并向量704对应的第1个元素为有效元素,则将第二待合并向量704对应的第1个元素确定为第一合并向量705的第1个元素。依次类推,则可以依次把第一待合并向量701和第二待合并向量704中有效元素压缩至第一合并向量705的头部,并且有有效元素的排列顺序符合布尔向量。可选地,对于2选1多路选择器的两个输入均为无效元素时,择其一即可。
在经过p轮移位合并之后,即可得到目标向量数据。由于在每轮移位合并的过程中,每一轮要么移动固定位,要么不移位,且每一个数据合并单元的输入只有两个向量,不存在交叉布线,有利于降低布线压力和处理器的面积。
步骤404,目标向量寄存器对目标向量数据中的有效元素进行存储。
目标向量寄存器可用于对目标向量数据中的所有元素进行存储,也可以只对目标向量数据中的有效元素进行存储,本申请实施例对此不作限定。可选地,在需要使用目标向量数据的情况下,可以直接只调用目标向量数据中的有效元素,基于目标向量数据中的有效元素和布尔向量进行解压,即可得到源向量数据。
综上所述,本申请实施例提供的技术方案,通过n组多路选择器,分别对源向量数据划分而成的n个源子向量进行压缩,得到n个目标子向量,再对n个目标子向量进行移位合并,得到目标向量数据,即压缩后的源向量数据,实现了对向量数据的分治处理,从而减少了处理器中向量数据压缩所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低了布线交叉程度(如对于源向量寄存器的某一输出端口,需要连接至多个多路选择器),进而大大减轻了处理器中向量数据压缩所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。
另外,通过n组多路选择器,对n个源子向量进行并行压缩,进而减少向量数据的压缩时延,进而提高向量数据的压缩效率。
另外,在相邻两个待合并向量的合并过程中,采用对数位移器的移位方式,对高位待合并向量进行移位,有利于进一步减少处理器的面积。
另外,对待合并向量进行分级合并,便于流水线的划分与实现,可以进一步提高了向量数据的压缩效率,有利于提高数据压缩指令的性能。
请参考图9,其示出了本申请另一个实施例提供的处理器的示意图。处理器900包括目标向量寄存器901、数据拆分装置902和n组多路选择器;其中,每组多路选择器中包括至少两个多路选择器,n为大于1的整数。
在本申请实施例中,处理器900用于对压缩后的向量数据进行解压。例如,根据数据解压指令,处理器900按照布尔向量将目标向量数据解压成源向量数据。数据解压指令用于指示将目标向量数据中的有效元素,解压到布尔向量指定的位置,以及对剩余位置进行无效数据填充。可选地,处理器900可以为AI处理器、AI芯片等,处理器900也可以被称之为数据解压单元。
目标向量寄存器901的输出端口与数据拆分装置902的输入端口连接。可选地,数据拆分装置902包括m组数据拆分单元,m为正整数。本申请实施例对每组数据拆分单元中的数据拆分单元的数量作限定。示例性地,参考图10,以向量处理并行度为128的处理器1000为例。在处理器1000中,数据拆分装置包括2组数据拆分单元,第一组数据拆分单元包括数据拆分单元1,第二组数据拆分单元包括数据拆分单元2和数据拆分单元3。
可选地,对于m组数据拆分单元中的第一组数据拆分单元,第一组数据拆分单元中的数据拆分单元的输入端口与目标向量寄存器的输出端口连接。对于剩余的m-1组数据拆分单元中的任一组数据拆分单元:第z组数据拆分单元,第z组数据拆分单元中的数据拆分单元的输入端口与第z-1组数据拆分单元中的数据拆分单元的输出端口连接,z为大于1的整数。
例如,参考图10,第一组数据拆分单元中的数据拆分单元1的输入端口与目标向量寄存器1001的输出端口连接。第二组数据拆分单元中的数据拆分单元2的输入端口与数据拆分单元1的输出端口连接,第二组数据拆分单元中的数据拆分单元3的输入端口也与数据拆分单元1的输出端口连接。可选地,数据拆分单元2与数据拆分单元1之间的连接端口数量可以和数据拆分单元3与数据拆分单元1之间的连接端口数量相同。
数据拆分装置902的输出端口与n组多路选择器的输入端口连接。示例性地,上述第m组数据拆分单元中的数据拆分单元的输出端口与n组多路选择器的输入端口连接。例如,参考图10,第二组数据拆分单元中的数据拆分单元2的输出端口与第1组多路选择器的输入端口(din127-din96)和第2组多路选择器的输入端口(din95-din64)连接;第二组数据拆分单元中的数据拆分单元3的输出端口与第3组多路选择器的输入端口(din63-din32)和第4组多路选择器的输入端口(din31-din0)连接。
在一个示例中,对于第m组数据拆分单元(也即最后一组数据拆分单元),第m组数据拆分单元中的目标数据拆分单元包括x个输出端口,目标数据拆分单元对应有至少两组多路选择器,x为正整数。例如,参考图10,数据拆分单元2对应有64个输出端口,其中,左起32个输出端口与第1组多路选择器对应的输入端口(din127-din96)一一对应连接,右起32个输出端口与第2组多路选择器对应的输入端口(din95-din64)一一对应连接。
可选地,对于目标数据拆分单元对应的目标组多路选择器,目标组多路选择器中的多路选择器的数量等于目标数据拆分单元与该目标组多路选择器之间的连接端口数-1(记为u-1)。
示例性地,按照从高位到低位的顺序,目标组多路选择器中的第p个多路选择器包括u-p+1个输入端口,第p个多路选择器对应的u-p+1个输入端口,按照从低位到高位的顺序,分别与目标数据拆分单元对应的u个输出端口一一连接,p为小于x的正整数,目标数据拆分单元的第一输出端口不与多路选择器连接,该第一输出端口是指按照从低位到高位的顺序,目标数据拆分单元对应的第一个输出端口。
例如,参考图10,第1组多路选择器中的第1个多路选择器,与数据拆分单元2的左起32个输出端口一一对应连接;第1组多路选择器中的第2个多路选择器的31个输入端口,与数据拆分单元2对应的左2至左32输出端口一一对应连接,依次类推。可选地,数据拆分单元2对应的左起第32个输出端口(即dout32)不与多路选择器连接,该输出端口可以直接输出为源子向量1对应的右起第一个元素。
综上所述,本申请实施例提供的技术方案,通过支持对目标向量数据进行分治解压,有利于减少了处理器中向量数据解压所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低了布线交叉程度(如对于目标向量寄存器的某一输出端口,需要连接至多个多路选择器),进而大大减轻了处理器中向量数据解压所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。
另外,通过支持对目标向量数据进行分治解压,有利于减少向量数据的解压时延,进而提高向量数据的解压效率。
请参考图11,其示出了本申请一个实施例提供的向量数据的解压方法的流程图,该方法由处理器执行,如上述图9所示的处理器,该方法可以包括如下几个步骤(1101~1103)。
步骤1101,目标向量寄存器存储目标向量数据,目标向量数据中的有效元素位于目标向量数据的头部。
其中,目标向量寄存器可用于仅存储目标向量数据中的有效元素,也可用于存储目标向量数据的全部元素。可选地,在目标向量寄存器仅存储目标向量数据中的有效元素的情况下,根据布尔向量对其进行元素补位,即可得到目标向量数据。例如,参考图12,目标向量数据1202中的有效元素(Dn-D0)位于标向量数据1202的头部。
步骤1102,数据拆分装置对目标向量数据进行移位拆分,得到n个目标子向量;其中,目标子向量中的有效元素位于目标子向量的头部。
数据拆分装置用于对向量数据进行拆分,数据拆分装置可以根据数据解压指令,从目标向量寄存器中提取出目标向量数据。可选地,本申请实施例对n的值不作限定。例如,可以将n设置为2的倍数,也可以将n设置为4的倍数。
可选地,数据拆分装置包括m组数据拆分单元,m组数据拆分单元用于对目标向量数据进行p轮移位拆分,得到n个目标子向量,m为大于1的整数,p为正整数。
示例性地,对于第q轮移位拆分,m组数据拆分单元中的第q组数据拆分单元,对第q组待拆分向量进行移位拆分,得到第q组拆分向量,q为小于或等于p的正整数;其中,当q等于1时,第q组待拆分向量为目标向量数据;当q大于1时,第q组待拆分向量为第q-1组拆分向量,第p组拆分向量为n个目标子向量。
例如,参考图10,数据拆分装置包括2组数据拆分单元,第一组数据拆分单元包括数据拆分单元1,第二组数据拆分单元包括数据拆分单元2和数据拆分单元3。第一组数据拆分单元用于对第1组待拆分向量(即目标向量数据)进行移位拆分,得到第1组拆分向量,第二组数据拆分单元用于对第2组待拆分向量(即第1组拆分向量)进行移位拆分,得到第2组拆分向量,即4个目标子向量(目标子向量1由数据拆分单元2的左起32个输出端口的输出组成、目标子向量2由数据拆分单元2的右起32个输出端口的输出组成、目标子向量3由数据拆分单元3的左起32个输出端口的输出组成、目标子向量4由数据拆分单元3的右起32个输出端口的输出组成,图10中未示出)。
在一个示例中,在第q组数据拆分单元中的第一数据拆分单元对第q组待拆分向量中的第一待拆分向量进行移位拆分的情况下,第一待拆分向量对应的s个拆分向量的获取过程可以如下:
1、第一数据拆分单元确定第一待拆分向量对应的s个拆分元素数量,s为大于1的整数。
第一待拆分向量可以是指第q组待拆分向量中的任一待拆分向量。拆分元素数量用于指示所得到的拆分向量的元素数量。s可以根据实际使用需求进行设置与调整。
例如,参考图10,每个待拆分向量对应有2个拆分元素数量,也即每个数据拆分单元将待拆分向量拆分成2个拆分向量。可选地,同一待拆分向量对应的两个拆分向量的元素数量相同。在图10中,数据拆分单元1将目标向量数据拆分成两个具有64个元素的拆分向量,数据拆分单元2将其中一个具有64个元素的拆分向量拆分成两个具有32个元素的拆分向量,即上述目标子向量1和目标子向量2,数据拆分单元3将另一个具有64个元素的拆分向量也拆分成两个具有32个元素的拆分向量,即上述目标子向量3和目标子向量4。
2、第一数据拆分单元根据目标向量数据对应的布尔向量和s个拆分元素数量,确定s组拆分有效元素;其中,布尔向量中的元素用于指示源向量数据中的有效元素的分布。
例如,参考图12,按照从高位到低位的顺序,设第1个拆分元素数量为5,则第1个拆分元素数量对应的拆分有效元素的数量为3(即左起5个布尔值中有3个1),依次类推,即可得到s个拆分元素数量分别对应的s组拆分有效元素。
3、第一数据拆分单元根据s组拆分有效元素,在第一待拆分向量中,分别对s组拆分有效元素进行整体移位,得到移位后的第一待拆分向量。
可选地,对于s个拆分元素数量中的目标拆分元素数量,第一数据拆分单元根据目标拆分元素数量对应的目标拆分有效元素在第一待拆分向量中的位置和目标拆分元素数量对应的目标拆分元素在布尔向量中的位置之间的差值,确定目标移动位;其中,目标拆分元素数量对应的目标拆分有效元素是指按照从高位到低位的顺序,目标拆分元素数量对应的最后一个拆分有效元素,目标拆分元素数量对应的目标拆分元素是指按照从高位到低位的顺序,目标拆分元素数量对应的最后一个拆分元素。
例如,参考图13,按照从高位到低位的顺序,第1组拆分元素数量为4,第2组拆分元素数量为5。第1组拆分元素数量对应的最后一位拆分有效元素位于待拆分向量1302的第7位,第1组拆分元素数量对应的最后一位拆分元素位于子布尔向量1301的第4位,则可以得到目标移动位为:7-4=3。
可选地,在待拆分向量只对应2组拆分元素数量的情况下,可以直接将第1组拆分元素数量对应的拆分有效元素数量,确定为目标移动位。例如,参考图13,第1组拆分元素数量为4,第2组拆分元素数量为5。基于子布尔向量1301,可确定第1组拆分元素数量对应有3个拆分有效元素,则可以确定目标移动位为3。
第一数据拆分单元根据目标移动位,对第一待拆分向量中的目标拆分元素数量对应的拆分有效元素进行整体移位,得到中间第一待拆分向量;继续根据剩余的拆分元素数量分别对应的目标移动位,对中间第一待拆分向量进行移位,得到移位后的第一待拆分向量。
例如,参考图13,基于上述实施例,可以直接在待拆分向量1302中,将第1组拆分元素数量对应的3个拆分有效元素(D4、D3和D2)向高位整体移动3位,即可得到移位后的待拆分向量1303。
4、第一数据拆分单元根据s个拆分元素数量,对移位后的第一待拆分向量进行拆分,得到第一待拆分向量对应的s个拆分向量。
可选地,第一数据拆分单元根据目标拆分元素数量,确定目标拆分元素数量对应的目标拆分向量在布尔向量中对应的区域;第一数据拆分单元根据目标拆分向量在布尔向量中对应的区域,确定出目标拆分向量在移位后的第一待拆分向量中对应的目标区域;第一数据拆分单元将目标区域中的元素,确定为目标拆分向量的元素。
例如,参考图14,对于移位后的第一待拆分向量1401,第一数据拆分单元根据第1拆分元素数量,确定出第1拆分元素数量在布尔向量中对应的区域,再根据第1拆分元素数量在布尔向量中对应的区域,确定出第1拆分元素数量在移位后的第一待拆分向量1401中对应的目标区域1402,可以直接将目标区域1402中的元素,确定为第1拆分向量1404对应的元素。同理,可以将第2拆分元素数量在移位后的第一待拆分向量1401中对应的目标区域1403中的元素,确定为第2拆分向量1405对应的元素。
可选地,本申请实施例中的移位方法与上述实施例介绍相同,本申请实施例未介绍的内容,可以参考上述实施例,这里不再赘述。
步骤1103,n组多路选择器分别对n个目标子向量进行解压,得到n个源子向量;其中,n个源子向量用于组合得到源向量数据。
可选地,对于n个目标子向量中的第t个目标子向量,第t个目标子向量对应的第t组多路选择器根据布尔向量,确定第t个目标子向量对应的有效元素位置分布,t为小于或等于n的正整数;第t组多路选择器,按照从高位到低位的顺序,依次将第t个目标子向量中的有效元素,排列至有效元素位置分布对应的位置,得到第t个目标子向量对应的第t个源子向量。
例如,参考图13,对于移位后的待拆分向量1303,可拆分得到目标子向量1304和目标子向量1305。根据子布尔向量1301,即可确定出目标子向量1304对应的源子向量1306中的有效元素位置分布,再根据有效元素位置分布,按照从高位到低位的顺序,依次对各个有效元素进行调整,即可得到源子向量1306。同理,即可得到目标子向量1305对应的源子向量1307。
可选地,在得到n个源子向量之后,对n个源子向量进行组合,即可得到目标向量数据。例如,参考图12,基于布尔向量1201,对目标向量数据1202对应的n个源子向量进行组合,即可得到源向量数据1203。
可选地,数据压缩指令的实现所用到的硬件资源和数据解压指令的实现所用到的硬件资源较为相似,在实际实现过程中,可以复用这些资源(如多路选择器、位移器等),以进一步减小处理器的面积。
综上所述,本申请实施例提供的技术方案,通过支持对目标向量数据进行分治解压,有利于减少了处理器中向量数据解压所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低了布线交叉程度(如对于目标向量寄存器的某一输出端口,需要连接至多个多路选择器),进而大大减轻了处理器中向量数据解压所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。
另外,通过支持对目标向量数据进行分治解压,有利于减少向量数据的解压时延,进而提高向量数据的解压效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
参考图15,其示出了本申请一个实施例提供的向量数据的压缩装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的计算机设备,也可以设置在计算机设备中。如图15所示,该装置1500包括:源数据存储模块1501、子向量压缩模块1502、子向量合并模块1503和目标数据存储模块1504。
源数据存储模块1501,用于控制所述源向量寄存器存储源向量数据,所述源向量数据被划分为n个源子向量,所述n个源子向量和所述n组多路选择器一一对应。
子向量压缩模块1502,用于控制所述n组多路选择器中的第i组多路选择器对所述源向量数据中的第i个源子向量中的有效元素进行选择性排列,得到所述第i个源子向量对应的第i个目标子向量;其中,所述第i个目标子向量中的有效元素位于所述第i个目标子向量的头部,i为小于或等于n的正整数。
子向量合并模块1503,用于控制所述数据合并装置对所述n个源子向量对应的n个目标子向量进行移位合并,得到目标向量数据;其中,所述目标向量数据中的有效元素位于所述目标向量数据的头部。
目标数据存储模块1504,用于控制所述目标向量寄存器对所述目标向量数据中的有效元素进行存储。
在一个示例性实施例中,所述第i个源子向量中包括x个元素,所述x个元素中包括y个有效元素,所述第i组多路选择器中包括x-1个不同类型的多路选择器,x为正整数,y为小于或等于x的正整数;
所述子向量压缩模块1502,用于控制所述x-1个多路选择器中的y个多路选择器基于所述源向量数据对应的布尔向量,按照从低位到高位的顺序,依次从所述x个元素中选择出所述y个有效元素,且按照从低位到高位的顺序,对所述y个有效元素进行排列,得到所述第i个目标子向量;其中,所述布尔向量中的元素用于指示所述源向量数据中的有效元素的分布。
在一个示例性实施例中,所述子向量压缩模块1502,还用于:
控制所述y个多路选择器中的第z个多路选择器基于所述布尔向量,从所述第i个源子向量中的第z位元素到第x位元素中择出第z个有效元素,z为小于或等于y的正整数;
控制所述第z个多路选择器将所述第z个有效元素添加至所述第i个目标子向量的第z位。
在一个示例性实施例中,所述数据合并装置包括m组数据合并单元,所述m组数据合并单元用于对所述n个目标子向量进行p轮移位合并,得到所述目标向量数据,m为大于1的整数,p为正整数;
所述子向量合并模块1503,用于对于第q轮移位合并,控制所述m组数据合并单元中的第q组数据合并单元,对第q组待合并向量进行移位合并,得到第q组合并向量,q为小于或等于p的正整数;其中,当q等于1时,所述第q组待合并向量为所述n个目标子向量;当q大于1时,所述第q组待合并向量为第q-1组合并向量,第p组合并向量为所述目标向量数据。
在一个示例性实施例中,所述子向量合并模块1503,还用于控制所述第q组数据合并单元中的数据合并单元对所述第q组待合并向量中的每两个相邻的待合并向量进行移位合并,得到所述第q组合并向量。
在一个示例性实施例中,所述子向量合并模块1503,还用于在所述第q组数据合并单元中的数据合并单元的数量为奇数的情况下,控制所述数据合并装置将所述第q组待合并向量中的目标待合并向量,添加至所述第q组合并向量中;其中,所述第q组待合并向量中的目标待合并向量是指按照从低位到高位的顺序,所述第q组待合并向量中的第一个待合并向量。
在一个示例性实施例中,在所述第q组数据合并单元中的第一数据合并单元对所述第q组待合并向量中的第一待合并向量和第二待合并向量进行移位合并的情况下,所述子向量合并模块1503,还用于:
控制所述第一数据合并单元根据所述第二待合并向量,对所述第一待合并向量进行移位调整,得到调整后的第一待合并向量;
控制所述第一数据合并单元对所述调整后的第一待合并向量和所述第二待合并向量进行合并,得到所述第q组合并向量对应的第一合并向量;其中,相对于所述第一待合并向量对应的元素在所述源向量数据中的位置,所述第二待合并向量对应的元素在所述源向量数据中的位置位于低位。
在一个示例性实施例中,所述子向量合并模块1503,还用于:
控制所述第一数据合并单元根据所述第二待合并向量的元素数量,对所述第一待合并向量进行元素填补,得到填补后的第一待合并向量,所述填补后的第一待合并向量的元素数量为所述第二待合并向量的元素数量和所述第一待合并向量的元素数量之间的和值;
控制所述第一数据合并单元根据所述第二待合并向量的无效元素数量,对所述填补后的第一待合并向量中的非填补元素进行整体移位,得到所述调整后的第一待合并向量,所述调整后的第一待合并向量的头部对应的填补元素数量与所述第二待合并向量的有效元素数量相同。
在一个示例性实施例中,所述子向量合并模块1503,还用于控制所述第一数据合并单元按照从低位到高位的顺序,从所述调整后的第一待合并向量和所述第二待合并向量中,选择出所述第一合并向量对应的元素;其中,对于所述第一合并向量对应的第k位元素,所述第一数据合并单元从所述调整后的第一待合并向量中的第k位元素和所述第二待合并向量中的第k位元素,选择出所述第一合并向量对应的第k位元素,k为正整数。
在一个示例性实施例中,所述子向量合并模块1503,还用于:
在所述调整后的第一待合并向量中的第k位元素为有效元素的情况下,控制所述第一数据合并单元将所述调整后的第一待合并向量中的第k位元素确定为所述第一合并向量对应的第k位元素;
或者,在所述第二待合并向量中的第k位元素为有效元素的情况下,控制所述第一数据合并单元将所述第二待合并向量中的第k位元素确定为所述第一合并向量对应的第k位元素。
综上所述,本申请实施例提供的技术方案,通过n组多路选择器,分别对源向量数据划分而成的n个源子向量进行压缩,得到n个目标子向量,再对n个目标子向量进行移位合并,得到目标向量数据,即压缩后的源向量数据,实现了对向量数据的分治处理,从而减少了处理器中向量数据压缩所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低了布线交叉程度(如对于源向量寄存器的某一输出端口,需要连接至多个多路选择器),进而大大减轻了处理器中向量数据压缩所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。
另外,通过n组多路选择器,对n个源子向量进行并行压缩,进而减少向量数据的压缩时延,进而提高向量数据的压缩效率。
参考图16,其示出了本申请一个实施例提供的向量数据的解压装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的计算机设备,也可以设置在计算机设备中。如图16所示,该装置1600包括:目标数据存储模块1601、目标数据拆分模块1602和子向量解压模块1603。
目标数据存储模块1601,用于控制所述目标向量寄存器存储目标向量数据,所述目标向量数据中的有效元素位于所述目标向量数据的头部。
目标数据拆分模块1602,用于控制所述数据拆分装置对所述目标向量数据进行移位拆分,得到n个目标子向量;其中,所述目标子向量中的有效元素位于所述目标子向量的头部。
子向量解压模块1603,用于控制所述n组多路选择器分别对所述n个目标子向量进行解压,得到n个源子向量;其中,所述n个源子向量用于组合得到源向量数据。
在一个示例性实施例中,所述数据拆分装置包括m组数据拆分单元,所述m组数据拆分单元用于对所述目标向量数据进行p轮移位拆分,得到所述n个目标子向量,m为大于1的整数,p为正整数;
所述目标数据拆分模块1602,用于对于第q轮移位拆分,控制所述m组数据拆分单元中的第q组数据拆分单元,对第q组待拆分向量进行移位拆分,得到第q组拆分向量,q为小于或等于p的正整数;其中,当q等于1时,所述第q组待拆分向量为所述目标向量数据;当q大于1时,所述第q组待拆分向量为第q-1组拆分向量,第p组拆分向量为所述n个目标子向量。
在一个示例性实施例中,所述目标数据拆分模块1602,还用于:
控制所述第一数据拆分单元确定所述第一待拆分向量对应的s个拆分元素数量,s为大于1的整数;
控制所述第一数据拆分单元根据所述目标向量数据对应的布尔向量和所述s个拆分元素数量,确定s组拆分有效元素;其中,所述布尔向量中的元素用于指示所述源向量数据中的有效元素的分布;
控制所述第一数据拆分单元根据所述s组拆分有效元素,在所述第一待拆分向量中,分别对所述s组拆分有效元素进行整体移位,得到移位后的第一待拆分向量;
控制所述第一数据拆分单元根据所述s个拆分元素数量,对所述移位后的第一待拆分向量进行拆分,得到所述第一待拆分向量对应的s个拆分向量。
在一个示例性实施例中,所述目标数据拆分模块1602,还用于:
对于所述s个拆分元素数量中的目标拆分元素数量,控制所述第一数据拆分单元根据所述目标拆分元素数量对应的目标拆分有效元素在所述第一待拆分向量中的位置和所述目标拆分元素数量对应的目标拆分元素在所述布尔向量中的位置之间的差值,确定目标移动位;其中,所述目标拆分元素数量对应的目标拆分有效元素是指按照从高位到低位的顺序,所述目标拆分元素数量对应的最后一个拆分有效元素,所述目标拆分元素数量对应的目标拆分元素是指按照从高位到低位的顺序,所述目标拆分元素数量对应的最后一个拆分元素;
控制所述第一数据拆分单元根据所述目标移动位,对所述第一待拆分向量中的所述目标拆分元素数量对应的拆分有效元素进行整体移位,得到中间第一待拆分向量;
控制继续根据剩余的拆分元素数量分别对应的目标移动位,对所述中间第一待拆分向量进行移位,得到所述移位后的第一待拆分向量。
在一个示例性实施例中,所述目标数据拆分模块1602,还用于:
控制所述第一数据拆分单元根据目标拆分元素数量,确定所述目标拆分元素数量对应的目标拆分向量在所述布尔向量中对应的区域;
控制所述第一数据拆分单元根据所述目标拆分向量在所述布尔向量中对应的区域,确定出所述目标拆分向量在所述移位后的第一待拆分向量中对应的目标区域;
控制所述第一数据拆分单元将所述目标区域中的元素,确定为所述目标拆分向量的元素。
在一个示例性实施例中,所述子向量解压模块1603,用于:
对于所述n个目标子向量中的第t个目标子向量,控制所述第t个目标子向量对应的第t组多路选择器根据所述布尔向量,确定所述第t个目标子向量对应的有效元素位置分布,t为小于或等于n的正整数;
控制所述第w组多路选择器,按照从高位到低位的顺序,依次将所述第t个目标子向量中的有效元素,排列至所述有效元素位置分布对应的位置,得到所述第t个目标子向量对应的第t个源子向量。
综上所述,本申请实施例提供的技术方案,通过支持对目标向量数据进行分治解压,有利于减少了处理器中向量数据解压所需的布线数量(如无需多个高并行度的多路选择器,可以减少多路选择器的接入端口的数量)和降低了布线交叉程度(如对于目标向量寄存器的某一输出端口,需要连接至多个多路选择器),进而大大减轻了处理器中向量数据解压所需的布线的拥塞程度,以及有利于大幅度减小处理器的面积,尤其是高向量处理并行度的处理器的面积。
另外,通过支持对目标向量数据进行分治解压,有利于减少向量数据的解压时延,进而提高向量数据的解压效率。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图17,其示出了本申请一个实施例提供的计算机设备的结构框图。该计算机设备可以用于实施上述实施例中提供的向量数据的压缩方法或向量数据的解压方法。具体可以包括如下内容。
该计算机设备1700包括中央处理单元(如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)和FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)等)1701、包括RAM(Random-Access Memory,随机存取存储器)1702和ROM(Read-Only Memory,只读存储器)1703的系统存储器1704,以及连接系统存储器1704和中央处理单元1701的系统总线1705。该计算机设备1700还包括帮助服务器内的各个器件之间传输信息的基本输入/输出系统(Input Output System,I/O系统)1706,和用于存储操作系统1713、应用程序1714和其他程序模块1715的大容量存储设备1707。
该基本输入/输出系统1706包括有用于显示信息的显示器1708和用于用户输入信息的诸如鼠标、键盘之类的输入设备1709。其中,该显示器1708和输入设备1709都通过连接到系统总线1705的输入输出控制器1710连接到中央处理单元1701。该基本输入/输出系统1706还可以包括输入输出控制器1710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1710还提供输出到显示屏、打印机或其他类型的输出设备。
该大容量存储设备1707通过连接到系统总线1705的大容量存储控制器(未示出)连接到中央处理单元1701。该大容量存储设备1707及其相关联的计算机可读介质为计算机设备1700提供非易失性存储。也就是说,该大容量存储设备1707可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,该计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦写可编程只读存储器)、闪存或其他固态存储技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知该计算机存储介质不局限于上述几种。上述的系统存储器1704和大容量存储设备1707可以统称为存储器。
根据本申请实施例,该计算机设备1700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1700可以通过连接在该系统总线1705上的网络接口单元1711连接到网络1712,或者说,也可以使用网络接口单元1711来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述向量数据的压缩方法或向量数据的解压方法。
在一个示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集在被处理器执行时以实现上述向量数据的压缩方法或向量数据的解压方法。
可选地,该计算机可读存储介质可以包括:ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存储器)、SSD(Solid State Drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在一个示例性实施例中,还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质中读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述向量数据的压缩方法或向量数据的解压方法。
需要说明的是,本申请所涉及的信息(包括但不限于对象设备信息、对象个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经对象授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的布线方式、处理器的硬件架构等都是在充分授权的情况下获取的。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (17)
1.一种向量数据的压缩方法,其特征在于,所述方法由处理器执行,所述处理器包括源向量寄存器、n组多路选择器、数据合并装置和目标向量寄存器;其中,所述数据合并装置包括m组数据合并单元,m为大于1的整数,n为大于1的整数;
所述方法包括:
所述源向量寄存器存储源向量数据,所述源向量数据被划分为n个源子向量,所述n个源子向量和所述n组多路选择器一一对应;
所述n组多路选择器中的第i组多路选择器对所述源向量数据中的第i个源子向量中的有效元素进行选择性排列,得到所述第i个源子向量对应的第i个目标子向量;其中,所述第i个目标子向量中的有效元素位于所述第i个目标子向量的头部,i为小于或等于n的正整数;
所述m组数据合并单元对所述n个源子向量对应的n个目标子向量进行p轮移位合并,得到目标向量数据;其中,所述目标向量数据中的有效元素位于所述目标向量数据的头部,p为正整数;
所述目标向量寄存器对所述目标向量数据中的有效元素进行存储。
2.根据权利要求1所述的方法,其特征在于,所述第i个源子向量中包括x个元素,所述x个元素中包括y个有效元素,所述第i组多路选择器中包括x-1个不同类型的多路选择器,x为正整数,y为小于或等于x的正整数;
所述n组多路选择器中的第i组多路选择器对所述源向量数据中的第i个源子向量中的有效元素进行选择性排列,得到所述第i个源子向量对应的第i个目标子向量,包括:
所述x-1个多路选择器中的y个多路选择器基于所述源向量数据对应的布尔向量,按照从低位到高位的顺序,依次从所述x个元素中选择出所述y个有效元素,且按照从低位到高位的顺序,对所述y个有效元素进行排列,得到所述第i个目标子向量;其中,所述布尔向量中的元素用于指示所述源向量数据中的有效元素的分布。
3.根据权利要求2所述的方法,其特征在于,所述x-1个多路选择器中的y个多路选择器基于所述源向量数据对应的布尔向量,按照从低位到高位的顺序,依次从所述x个元素中选择出所述y个有效元素,且按照从低位到高位的顺序,对所述y个有效元素进行排列,得到所述第i个目标子向量,包括:
所述y个多路选择器中的第z个多路选择器基于所述布尔向量,从所述第i个源子向量中的第z位元素到第x位元素中择出第z个有效元素,z为小于或等于y的正整数;
所述第z个多路选择器将所述第z个有效元素添加至所述第i个目标子向量的第z位。
4.根据权利要求1所述的方法,其特征在于,所述m组数据合并单元对所述n个源子向量对应的n个目标子向量进行p轮移位合并,得到目标向量数据,包括:
对于第q轮移位合并,所述m组数据合并单元中的第q组数据合并单元,对第q组待合并向量进行移位合并,得到第q组合并向量,q为小于或等于p的正整数;
其中,当q等于1时,所述第q组待合并向量为所述n个目标子向量;当q大于1时,所述第q组待合并向量为第q-1组合并向量,第p组合并向量为所述目标向量数据。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第q组数据合并单元中的数据合并单元对所述第q组待合并向量中的每两个相邻的待合并向量进行移位合并,得到所述第q组合并向量。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述第q组待合并向量中的待合并向量的数量为奇数的情况下,所述数据合并装置将所述第q组待合并向量中的目标待合并向量,添加至所述第q组合并向量中;其中,所述第q组待合并向量中的目标待合并向量是指按照从低位到高位的顺序,所述第q组待合并向量中的第一个待合并向量。
7.根据权利要求5所述的方法,其特征在于,在所述第q组数据合并单元中的第一数据合并单元对所述第q组待合并向量中的第一待合并向量和第二待合并向量进行移位合并的情况下,所述方法还包括:
所述第一数据合并单元根据所述第二待合并向量,对所述第一待合并向量进行移位调整,得到调整后的第一待合并向量;
所述第一数据合并单元对所述调整后的第一待合并向量和所述第二待合并向量进行合并,得到所述第q组合并向量对应的第一合并向量;
其中,相对于所述第一待合并向量对应的元素在所述源向量数据中的位置,所述第二待合并向量对应的元素在所述源向量数据中的位置位于低位。
8.根据权利要求7所述的方法,其特征在于,所述第一数据合并单元根据所述第二待合并向量,对所述第一待合并向量进行移位调整,得到调整后的第一待合并向量,包括:
所述第一数据合并单元根据所述第二待合并向量的元素数量,对所述第一待合并向量进行元素填补,得到填补后的第一待合并向量,所述填补后的第一待合并向量的元素数量为所述第二待合并向量的元素数量和所述第一待合并向量的元素数量之间的和值;
所述第一数据合并单元根据所述第二待合并向量的无效元素数量,对所述填补后的第一待合并向量中的非填补元素进行整体移位,得到所述调整后的第一待合并向量,所述调整后的第一待合并向量的头部对应的填补元素数量与所述第二待合并向量的有效元素数量相同。
9.根据权利要求7所述的方法,其特征在于,所述第一数据合并单元对所述调整后的第一待合并向量和所述第二待合并向量进行合并,得到所述第q组合并向量对应的第一合并向量,包括:
所述第一数据合并单元按照从低位到高位的顺序,从所述调整后的第一待合并向量和所述第二待合并向量中,选择出所述第一合并向量对应的元素;
其中,对于所述第一合并向量对应的第k位元素,所述第一数据合并单元从所述调整后的第一待合并向量中的第k位元素和所述第二待合并向量中的第k位元素,选择出所述第一合并向量对应的第k位元素,k为正整数。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在所述调整后的第一待合并向量中的第k位元素为有效元素的情况下,所述第一数据合并单元将所述调整后的第一待合并向量中的第k位元素确定为所述第一合并向量对应的第k位元素;
或者,
在所述第二待合并向量中的第k位元素为有效元素的情况下,所述第一数据合并单元将所述第二待合并向量中的第k位元素确定为所述第一合并向量对应的第k位元素。
11.一种向量数据的解压方法,其特征在于,所述方法由处理器执行,所述处理器包括目标向量寄存器、数据拆分装置和n组多路选择器;其中,所述数据拆分装置包括m组数据拆分单元,m为大于1的整数,n为大于1的整数;
所述方法包括:
所述目标向量寄存器存储目标向量数据,所述目标向量数据中的有效元素位于所述目标向量数据的头部;
所述m组数据拆分单元对所述目标向量数据进行p轮移位拆分,得到n个目标子向量;其中,所述目标子向量中的有效元素位于所述目标子向量的头部,p为正整数;
所述n组多路选择器分别对所述n个目标子向量进行解压,得到n个源子向量;其中,所述n个源子向量用于组合得到源向量数据。
12.一种处理器,其特征在于,所述处理器包括源向量寄存器、n组多路选择器、数据合并装置和目标向量寄存器;其中,每组多路选择器中包括至少两个多路选择器,所述数据合并装置包括m组数据合并单元,m为正整数,n为大于1的整数;
所述源向量寄存器包括n组输出端口,所述n组输出端口分别与所述n组多路选择器的输入端口连接;
所述n组多路选择器的输出端口与所述数据合并装置的输入端口连接;
所述数据合并装置中第一组数据合并单元中的数据合并单元的输入端口与每两个相邻的一组多路选择器的输出端口连接;
所述数据合并装置中第z组数据合并单元中的数据合并单元的输入端口与第z-1组数据合并单元中的每两个相邻的数据合并单元的输出端口连接;其中,在所述第z组数据合并单元中的数据合并单元的数量为奇数的情况下,所述第z组数据合并单元中的目标数据合并单元的输出端口与第z+1组数据合并单元中的目标数据合并单元的输入端口连接,所述目标数据合并单元是指按照从高位到低位的顺序,每组数据合并单元中的最后一个数据合并单元,z为大于1的整数;
所述数据合并装置中最后一组数据合并单元中的数据合并单元的输出端口与所述目标向量寄存器的输入端口连接。
13.根据权利要求12所述的处理器,其特征在于,
所述n组输出端口中的第p组输出端口与所述n组多路选择器中的第p组多路选择器的输入端口连接,p为小于或等于n的正整数。
14.根据权利要求13所述的处理器,其特征在于,
所述第p组输出端口包括x个输出端口,所述第p组多路选择器包括x-1个多路选择器,x为正整数;
其中,按照从低位到高位的顺序,所述x-1个多路选择器中的第a个多路选择器包括x-a+1个输入端口,所述第a个多路选择器对应的x-a+1个输入端口,按照从高位到低位的顺序,分别与所述第p组输出端口的x-a+1个输出端口一一连接,a为小于x的正整数,所述第p组输出端口的第一输出端口与所述数据合并装置的输入端口连接,所述第一输出端口是指按照从高位到低位的顺序,所述第p组输出端口对应的第一个输出端口。
15.一种处理器,其特征在于,所述处理器包括目标向量寄存器、数据拆分装置和n组多路选择器;其中,每组多路选择器中包括至少两个多路选择器,所述数据拆分装置包括m组数据拆分单元,所述m组数据拆分单元用于对所述目标向量寄存器中的目标向量数据进行p轮移位拆分,m为正整数,n为大于1的整数,p为正整数;
所述目标向量寄存器的输出端口与所述数据拆分装置的输入端口连接;
所述数据拆分装置中第一组数据拆分单元中的数据拆分单元的输入端口与所述目标向量寄存器的输出端口连接;
所述数据拆分装置中第z组数据拆分单元中的数据拆分单元的输入端口与第z-1组数据拆分单元中的数据拆分单元的输出端口连接,z为大于1的整数;
所述数据拆分装置中最后一组数据拆分单元中的数据拆分单元的输出端口与所述n组多路选择器的输入端口连接。
16.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-10任一项所述的向量数据的压缩方法,或实现如权利要求11所述的向量数据的解压方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-10任一项所述的向量数据的压缩方法,或实现如权利要求11所述的向量数据的解压方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210312611.4A CN114416180B (zh) | 2022-03-28 | 2022-03-28 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
PCT/CN2023/076224 WO2023185294A1 (zh) | 2022-03-28 | 2023-02-15 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
US18/368,419 US20240004649A1 (en) | 2022-03-28 | 2023-09-14 | Method and apparatus for compressing vector data, method and apparatus for decompressing vector data, and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210312611.4A CN114416180B (zh) | 2022-03-28 | 2022-03-28 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416180A CN114416180A (zh) | 2022-04-29 |
CN114416180B true CN114416180B (zh) | 2022-07-15 |
Family
ID=81263836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210312611.4A Active CN114416180B (zh) | 2022-03-28 | 2022-03-28 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114416180B (zh) |
WO (1) | WO2023185294A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416180B (zh) * | 2022-03-28 | 2022-07-15 | 腾讯科技(深圳)有限公司 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
CN118095194A (zh) * | 2024-04-28 | 2024-05-28 | 英诺达(成都)电子科技有限公司 | 多路选择器的识别处理方法、装置、设备、介质及产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253173B1 (en) * | 1997-10-20 | 2001-06-26 | Nortel Networks Corporation | Split-vector quantization for speech signal involving out-of-sequence regrouping of sub-vectors |
CN106575216A (zh) * | 2014-09-19 | 2017-04-19 | 英特尔公司 | 数据元素选择和合并处理器、方法、系统和指令 |
CN110766136A (zh) * | 2019-10-16 | 2020-02-07 | 北京航空航天大学 | 一种稀疏矩阵与向量的压缩方法 |
CN113485750A (zh) * | 2021-06-29 | 2021-10-08 | 海光信息技术股份有限公司 | 数据处理方法及数据处理装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8731317B2 (en) * | 2010-09-27 | 2014-05-20 | Xerox Corporation | Image classification employing image vectors compressed using vector quantization |
US9280342B2 (en) * | 2011-07-20 | 2016-03-08 | Oracle International Corporation | Vector operations for compressing selected vector elements |
CN103499787B (zh) * | 2013-09-24 | 2016-01-27 | 中国科学院自动化研究所 | 一种测试数据压缩方法、数据解压缩装置及解压缩方法 |
CN104866278B (zh) * | 2014-02-21 | 2018-05-18 | 北京国睿中数科技股份有限公司 | 用于浮点复数平行加减的装置和方法 |
US10732972B2 (en) * | 2018-08-23 | 2020-08-04 | International Business Machines Corporation | Non-overlapping substring detection within a data element string |
CN114416180B (zh) * | 2022-03-28 | 2022-07-15 | 腾讯科技(深圳)有限公司 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
-
2022
- 2022-03-28 CN CN202210312611.4A patent/CN114416180B/zh active Active
-
2023
- 2023-02-15 WO PCT/CN2023/076224 patent/WO2023185294A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253173B1 (en) * | 1997-10-20 | 2001-06-26 | Nortel Networks Corporation | Split-vector quantization for speech signal involving out-of-sequence regrouping of sub-vectors |
CN106575216A (zh) * | 2014-09-19 | 2017-04-19 | 英特尔公司 | 数据元素选择和合并处理器、方法、系统和指令 |
CN110766136A (zh) * | 2019-10-16 | 2020-02-07 | 北京航空航天大学 | 一种稀疏矩阵与向量的压缩方法 |
CN113485750A (zh) * | 2021-06-29 | 2021-10-08 | 海光信息技术股份有限公司 | 数据处理方法及数据处理装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023185294A1 (zh) | 2023-10-05 |
CN114416180A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114416180B (zh) | 向量数据的压缩方法、向量数据的解压方法、装置及设备 | |
US7171535B2 (en) | Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline | |
US5557734A (en) | Cache burst architecture for parallel processing, such as for image processing | |
CN116414350A (zh) | 低时延矩阵乘法部件 | |
JPH01232463A (ja) | データプロセッサシステムとそれを備えるビデオプロセッサシステム | |
KR20220007700A (ko) | 행렬 연산들을 위한 장치 및 방법 | |
KR100390326B1 (ko) | 고속푸리에변환처리장치,고속푸리에변환처리시스템및고속푸리에변환처리방법 | |
WO2022110386A1 (zh) | 数据处理方法及人工智能处理器 | |
US20110066821A1 (en) | data handling system comprising a rearrangement network | |
CN111767994A (zh) | 一种神经元计算模块 | |
NO141105B (no) | Databehandlingssystem som har en hoeyhastighets bufferlager - enhet for overfoering av data mellom et hovedlager og en sentral behandlingsenhet | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
CN111313912B (zh) | 一种ldpc码编码器及编码方法 | |
JP5532132B2 (ja) | Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 | |
CN117539546A (zh) | 基于非空列存储的稀疏矩阵向量乘加速方法及装置 | |
JP2015503785A (ja) | Fft/dftの逆順ソーティングシステム、方法およびその演算システム | |
US5668748A (en) | Apparatus for two-dimensional discrete cosine transform | |
US11886719B2 (en) | Memory circuit for storing parsimonious data | |
CN115828044B (zh) | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 | |
CN108108189A (zh) | 一种计算方法及相关产品 | |
CN113052304A (zh) | 用于具有部分读取/写入的脉动阵列的系统和方法 | |
US6367063B1 (en) | Method and apparatus for selectively performing a plurality of logic operations and memory functions | |
EP4398096A1 (en) | Vector data compression method, vector data decompression method, apparatus, and device | |
US20240004649A1 (en) | Method and apparatus for compressing vector data, method and apparatus for decompressing vector data, and device | |
CN101101538A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40067547 Country of ref document: HK |