CN105843591B - 多维数组滑动生成数据的方法、装置及处理器 - Google Patents
多维数组滑动生成数据的方法、装置及处理器 Download PDFInfo
- Publication number
- CN105843591B CN105843591B CN201610217578.1A CN201610217578A CN105843591B CN 105843591 B CN105843591 B CN 105843591B CN 201610217578 A CN201610217578 A CN 201610217578A CN 105843591 B CN105843591 B CN 105843591B
- Authority
- CN
- China
- Prior art keywords
- dimension
- array
- dimensional
- length
- byte
- 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 26
- 238000003491 array Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 20
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 241000272510 Apteryx Species 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供一种多维数组滑动生成数据的方法、装置及处理器。本发明多维数组滑动生成数据的方法,包括:通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;根据相同的预设规则分别将第一元素和第二元素组成N维第一数组和N维第二数组;在第一维度的方向上将第一数组和第二数组进行拼接;从第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿第一维度滑动移动量个字节;获取滑动后的N维滑动窗口中的所有数组元素组成目标元素。本发明实施例实现高效、便捷地从两个源元素中提取出满足需求数据模式的目标元素,提高处理器的效率,使处理器在相关的科学计算领域或者数字信号处理领域中处理具体的问题时更有效率。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种多维数组滑动生成数据的方法、装置及处理器。
背景技术
现如今需要实现数据的高效运算的应用越来越多,所以需要更有效的单指令流多数据流(Single Instruction stream Multiple Data streams,简称:SIMD)处理器,执行更有效的SIMD指令,因此如何根据具体的应用产生相应的SIMD指令所需要的数据格式,成为了有效实现SIMD处理的很关键的一个环节。
但是,现有的通过非对称访存、滑动操作等方式形成数据格式,需要多个访存操作或滑动操作,这样会导致很长的处理时间的问题,降低处理器的效率。
发明内容
本发明实施例提供一种多维数组滑动生成数据的方法、装置及处理器,以提高处理器的效率,使处理器在相关的科学计算领域或者数字信号处理领域中处理具体的问题时更有效率。
本发明实施例提供一种多维数组滑动生成数据的方法,包括:
通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;
根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;
在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;
从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;
获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素。
进一步的,所述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;
所述第一字段作为指令操作码,用来指示该条指令的控制信息,所述控制信息中包括第一元素的长度、第二元素的长度、多维数组的维度、每个维度的长度、将元素映射为多维数组的规则、以及用于两个多维数组拼接的所述第一维度的方向;
所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器;
所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器;
所述第四字段用来表示所述移动量大小。
进一步的,所述根据所述预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,包括:
根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,其中,L=N1×N2×……×Nn,L为大于1的自然数,N1、N2、……、Nn分别为所述N维数组的N个维度的长度;
根据所述每个维度的长度采用所述预设规则将所述第二元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第二数组。
进一步的,所述根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,包括:
根据以下公式确定所述第一元素的L个字节与所述N维数组的元素位置的对应关系:
其中,Mk为N维数组的第k维的长度,1≤k≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ik≤Mk,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置,[Number]为对应于一维向量所述第一元素或所述第二元素的字节编号;其中,ik为is+1中的任意一个元素;
根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组。
进一步的,所述从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动所述移动量个字节之前,还包括:
获取所述移动量,所述移动量小于所述第一维度的长度。
进一步的,所述获取所述移动量,包括:
根据存储器中的指示数据获取所述移动量;和/或者,
获取预设的所述移动量。
本发明实施例提供一种多维数组滑动生成数据的装置,包括:
元素获取模块,用于通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;
组成模块,用于根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;
拼接模块,用于在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;
滑动模块,用于从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;
数据生成模块,用于获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素。
进一步的,所述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;
所述第一字段作为指令操作码,用来指示该条指令的控制信息,所述控制信息中包括第一元素的长度、第二元素的长度、多维数组的维度、每个维度的长度、将元素映射为多维数组的规则、以及用于两个多维数组拼接的所述第一维度的方向;
所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器;
所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器;
所述第四字段用来表示所述移动量大小。
进一步的,所述组成模块,具体用于根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,其中,L=N1×N2×……×Nn,L为大于1的自然数,N1、N2、……、Nn分别为所述N维数组的N个维度的长度;根据所述每个维度的长度采用所述预设规则将所述第二元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第二数组。
进一步的,所述组成模块,具体用于根据以下公式确定所述第一元素的L个字节与所述N维数组的元素位置的对应关系:
其中,Mk为N维数组的第k维的长度,1≤k≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ik≤Mk,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,[Number]为对应于一维向量所述第一元素或所述第二元素的字节编号;其中,ik为is+1中的任意一个元素。
进一步的,还包括:
移动量获取模块,用于获取所述移动量,所述移动量小于所述第一维度的长度。
进一步的,所述移动量获取模块,具体用于根据存储器中的指示数据获取所述移动量;和/或者,获取预设的所述移动量。
本发明实施例提供一种处理器,所述处理器用于执行多维数组滑动操作指令,以执行上述多维数组滑动生成数据的方法。
本发明实施例多维数组滑动生成数据的方法、装置及处理器,通过多维数组滑动操作生成目的数据,实现高效、便捷地从两个源元素中提取出满足需求数据模式的目标元素,将需要多个访存操作、滑动操作、与或操作等一系列长的指令流操作才能实现的功能使用一个多维数组滑动操作就可以实现,提高处理器的效率,使处理器在相关的科学计算领域或者数字信号处理领域中处理具体的问题时更有效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明多维数组滑动生成数据的方法的一个实施例的流程图;
图2为原始元素的字节部署示意图;
图3a为4×2×2的三维数组的示意图;
图3b为4×2×2的三维数组的下层元素分布示意图;
图3c为4×2×2的三维数组的上层元素分布示意图;
图4a为本发明滑动初始状态示意图;
图4b为滑动结束状态示意图;
图5为目标元素的字节部署示意图;
图6为本发明多维数组滑动生成数据的装置的一个实施例的结构示意图;
图7为本发明多维数组滑动生成数据的装置的另一个实施例的结构示意图;
图8为本发明处理器的一个实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明多维数组滑动生成数据的方法的一个实施例的流程图,如图1所示,本实施例的方法可以包括:
步骤101、通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;
处理器在实现本发明多维数组滑动生成数据的方法时,先从源操作数或源寄存器获取两个元素,该源寄存器可以是两个,第一元素和第二元素分别来自这两个源寄存器。处理器获取的这两个元素长度相同,例如均为L个字节,这样第一元素和第二元素均相当于是1×L的一维向量。
上述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;所述第一字段作为指令操作码,用来指示该条指令的控制信息,所述控制信息中包括第一元素的长度和第二元素的长度,例如上述L个字节;多维数组的维度,例如N维数组;每个维度的长度;将元素映射为多维数组的规则,例如将L个字节映射为N维数组的规则;以及用于两个多维数组拼接的的方向,例如N维数组的一个维度的方向;所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器,即第一元素和第二元素的存储位置;所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器,即目标元素的存储位置;所述第四字段用来表示所述移动量大小。
步骤102、根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;
分别将第一元素和第二元素以字节为单位根据相同的预设规则组成两个N维数组,这里组成的数组具体是几维、每个维度的长度均可以从上述多维数组滑动操作指令中获取到,例如,多维数组滑动操作指令的第一个字段中的控制信息指示多维数组的维度为3,各维度的长度分别是4、2、2,即多维数组为三维数组4×2×2。根据预设规则将第一元素中的L个字节分别放置在N维数组的对应元素位置上组成第一数组,将第二元素中的L个字节分别放置在N维数组的对应元素位置上组成第二数组。
步骤103、在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;
将第一数组和第二数组在第一维度的方向上进行拼接,得到一个在该第一维度上长度扩展了一倍的N维数组。这里第一维度可以是N维中的任一维度,对此不做具体限定。例如,多维数组滑动操作指令中的第一个字段中的控制信息指示两个多维数组拼接的的方向是长度为4的这个维度方向,那么将第二数组长度为4的维度沿着该维度方向拼接在第一数组的任一侧均可,这样在该维度方向上拼接成的数组的长度变成8。
步骤104、从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;
沿着第一维度,可以将第一维度的原点作为起点,沿着该第一维度滑动N维滑动窗口,该N维滑动窗口同样具备N个维度,其各维度的长度与第一数组和第二数组的相同,因此N维滑动窗口中包括的所有数组元素的个数与第一元素和第二元素的字节数一致,例如三维滑动窗口4×2×2。N维滑动窗口滑动的距离可以由多维数组滑动操作指令的第四个字段指示,其可以是预设值,也可以由处理器从存储器中读取到的指示数据中获取,例如该指示数据的后两位、该指示数据相对于第一维度的长度取模等,也可以是预先设置的一个固定值。需要说明的是,本发明中移动量小于上述第一维度的长度。
步骤105、获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素。
滑动后的N维滑动窗口包含了第一数组和第二数组的各自一部分的数组元素,将滑动后的N维滑动窗口中的所有数组元素按照与组成数组的预设规则反向组成目标元素,该目标元素即为1×L的一维向量。
本实施例,通过多维数组滑动操作生成目的数据,实现高效、便捷地从两个源元素中提取出满足需求数据模式的目标元素,将需要多个访存操作、滑动操作、与或操作等一系列长的指令流操作才能实现的功能使用一个多维数组滑动操作就可以实现,提高处理器的效率,使处理器在相关的科学计算领域或者数字信号处理领域中处理具体的问题时更有效率。
下面采用一个具体的实施例,对图1所示方法实施例的技术方案进行详细说明。
处理器分别从两个源寄存器中读取第一元素和第二元素,其长度L为16个字节,图2为原始元素的字节部署示意图,如图2所示,从左至右第一元素和第二元素中的字节编号从[15]到[0]依次排列。
本实施例中,多维数组滑动操作指令指示了多维数组的维度为3和各维度的长度分别为4、2、2,即三维数组4×2×2,这样就需要分别将16个字节的第一元素和第二元素根据预设规则组成两个4×2×2的数组,16=4×2×2。
预设规则规定了16个字节具体如何在4×2×2的数组的各元素位置上放置,根据下述公式:
其中,Mk为N维数组的第k维的长度,1≤k≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ik≤Mk,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置,其中,ik为is+1中的任意一个元素。
可以将N维数组表示为Array[1:M1][1:M2]…[1:MN],数组中的每个元素对应一个序号,而该序号[Number]对应于一维向量第一元素或第二元素的各字节编号,基于此对应关系再加上具体环境中的大小尾端和处理数据的粒度大小,如字节、半字、字、双字等,就建立起了N维数组中的元素与一维向量的各字节之间的对应关系。根据这样的预设规则就可以分别将第一元素和第二元素组成N维第一数组和N维第二数组。图3a为4×2×2的三维数组的示意图,图3b为4×2×2的三维数组的下层元素分布示意图,图3c为4×2×2的三维数组的上层元素分布示意图,如图3a所示,4×2×2的三维数组中的所有元素分别对应于第一元素或第二元素的16个字节中的一个字节,该数组在Z轴上包括上下两层,下层的元素对应于图3b,其包含了[0]到[7]字节,上层的元素对应于图3c,其包含了[8]到[15]字节。需要说明的是,根据上述示例可以得到图3a到图3c所示的字节分布结果,本发明还可以采用其他的预设规则得到数组的元素位置与一维向量的各字节之间的映射关系,例如z轴方向的上下层可以分别分为单双号两排字节编号,对于该映射关系本发明不做具体限定。
在第一维度(即x轴方向)上将第二数组放置在第一数组的右边,从而将这两个数组进行拼接,形成一个8×2×2的三维数组,图4a为本发明滑动初始状态示意图,图4b为滑动结束状态示意图,如图4a所示,从x轴的原点开始,将一个4×2×2的三维滑动窗口在拼接后的8×2×2的三维数组上沿x轴向左滑动移动量个字节,本实施例中移动量为2,滑动后4×2×2的三维滑动窗口所处的位置如图4b所示,此时4×2×2的三维滑动窗口中包括的数组元素对应的字节编号包含了第一元素的部分字节编号和第二元素的部分字节编号,此时按照上述映射关系再将4×2×2的三维滑动窗口中的各数组元素反向组成16个字节的一维向量,即目标元素,图5为目标元素的字节部署示意图。
图6为本发明多维数组滑动生成数据的装置的一个实施例的结构示意图,如图6所示,本实施例的装置可以包括:元素获取模块11、组成模块12、拼接模块13、滑动模块14以及数据生成模块15,其中,元素获取模块11,用于通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;组成模块12,用于根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;拼接模块13,用于在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;滑动模块14,用于从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;数据生成模块15,用于获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步的,所述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;所述第一字段作为指令操作码,用来指示该条指令的控制信息,所述控制信息中包括第一元素的长度、第二元素的长度、多维数组的维度、每个维度的长度、将元素映射为多维数组的规则、以及用于两个多维数组拼接的所述第一维度的方向;所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器;所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器;所述第四字段用来表示所述移动量大小。
进一步的,所述组成模块12,具体用于根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,其中,L=N1×N2×……×Nn,L为大于1的自然数,N1、N2、……、Nn分别为所述N维数组的N个维度的长度,其中,n<=N;根据所述每个维度的长度采用所述预设规则将所述第二元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第二数组。
进一步的,所述组成模块12,具体用于根据以下公式确定所述第一元素的L个字节与所述N维数组的元素位置的对应关系:
其中,Mk为N维数组的k维的长度,1≤k≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ik≤Mk,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,其中,ik为is+1中的任意一个元素。
图7为本发明多维数组滑动生成数据的装置的另一个实施例的结构示意图,如图7所示,本实施例的装置在图6所示结构基础上,还包括:移动量获取模块16,用于获取所述移动量,所述移动量小于所述第一维度的长度。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步的,所述移动量获取模块16,具体用于根据存储器中的指示数据获取所述移动量;和/或者,获取预设的所述移动量。
图8为本发明处理器的一个实施例的结构示意图,如图8所示,本实施例的处理器20用于执行多维数组滑动操作指令,可以执行图1~图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (11)
1.一种多维数组滑动生成数据的方法,其特征在于,包括:
通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;
根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;
在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;
从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;
获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素;
其中,所述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;
所述第一字段作为指令操作码,用来指示所述多维数组滑动操作指令的控制信息,所述控制信息中包括第一元素的长度、第二元素的长度、多维数组的维度、每个维度的长度、将元素映射为多维数组的规则、以及用于两个多维数组拼接的所述第一维度的方向;
所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器;
所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器;
所述第四字段用来表示所述移动量大小。
2.根据权利要求1所述的方法,其特征在于,所述根据所述预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,包括:
根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在N维数组的对应元素位置上组成所述第一数组,其中,L=N1×N2×……×Nn,L为大于1的自然数,N1、N2、……、Nn分别为所述N维数组的N个维度的长度;
根据所述每个维度的长度采用所述预设规则将所述第二元素的L个字节分别放置在N维数组的对应元素位置上组成所述第二数组。
3.根据权利要求2所述的方法,其特征在于,所述根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,包括:
根据以下公式确定所述第一元素的L个字节与所述N维数组的元素位置的对应关系:
其中,Mk为N维数组的第k维的长度,1≤k≤N;i1,i2…,iN表示N维数组中的某一元素的位置,1≤ik≤Mk,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;[Number]为对应于一维向量所述第一元素或所述第二元素的字节编号;其中,ik为is+1中的任意一个元素;
根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组。
4.根据权利要求1所述的方法,其特征在于,所述从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动所述移动量个字节之前,还包括:
获取所述移动量,所述移动量小于所述第一维度的长度。
5.根据权利要求4所述的方法,其特征在于,所述获取所述移动量,包括:
根据存储器中的指示数据获取所述移动量;和/或者,
获取预设的所述移动量。
6.一种多维数组滑动生成数据的装置,其特征在于,包括:
元素获取模块,用于通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;
组成模块,用于根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;
拼接模块,用于在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;
滑动模块,用于从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;
数据生成模块,用于获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素;
其中,所述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;
所述第一字段作为指令操作码,用来指示所述多维数组滑动操作指令的控制信息,所述控制信息中包括第一元素的长度、第二元素的长度、多维数组的维度、每个维度的长度、将元素映射为多维数组的规则、以及用于两个多维数组拼接的所述第一维度的方向;
所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器;
所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器;
所述第四字段用来表示所述移动量大小。
7.根据权利要求6所述的装置,其特征在于,所述组成模块,具体用于根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在N维数组的对应元素位置上组成所述第一数组,其中,L=N1×N2×……×Nn,L为大于1的自然数,N1、N2、……、Nn分别为所述N维数组的N个维度的长度;根据所述每个维度的长度采用所述预设规则将所述第二元素的L个字节分别放置在N维数组的对应元素位置上组成所述第二数组。
8.根据权利要求7所述的装置,其特征在于,所述组成模块,具体用于根据以下公式确定所述第一元素的L个字节与所述N维数组的元素位置的对应关系:
其中,Mk为N维数组的第k维的长度,1≤k≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ik≤Mk,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;[Number]为对应于一维向量所述第一元素或所述第二元素的字节编号;其中,ik为is+1中的任意一个元素;
根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组。
9.根据权利要求6所述的装置,其特征在于,还包括:
移动量获取模块,用于获取所述移动量,所述移动量小于所述第一维度的长度。
10.根据权利要求9所述的装置,其特征在于,所述移动量获取模块,具体用于根据存储器中的指示数据获取所述移动量;和/或者,获取预设的所述移动量。
11.一种处理器,其特征在于,所述处理器用于执行多维数组滑动操作指令,以执行权利要求1~5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610217578.1A CN105843591B (zh) | 2016-04-08 | 2016-04-08 | 多维数组滑动生成数据的方法、装置及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610217578.1A CN105843591B (zh) | 2016-04-08 | 2016-04-08 | 多维数组滑动生成数据的方法、装置及处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105843591A CN105843591A (zh) | 2016-08-10 |
CN105843591B true CN105843591B (zh) | 2018-06-19 |
Family
ID=56598106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610217578.1A Active CN105843591B (zh) | 2016-04-08 | 2016-04-08 | 多维数组滑动生成数据的方法、装置及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843591B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107748723B (zh) * | 2017-09-28 | 2020-03-20 | 中国人民解放军国防科技大学 | 支持无冲突跨步按块访问的存储方法及访存装置 |
CN107656876A (zh) * | 2017-10-19 | 2018-02-02 | 浪潮金融信息技术有限公司 | 数据存储方法及装置、计算机可读存储介质、终端 |
CN112840356B (zh) * | 2018-10-09 | 2023-04-11 | 华为技术有限公司 | 运算加速器、处理方法及相关设备 |
CN110597644B (zh) * | 2019-09-10 | 2022-05-10 | 深圳市元征科技股份有限公司 | 数据流传输方法、传输装置、电子设备及存储介质 |
CN112307030B (zh) * | 2020-11-05 | 2023-12-26 | 金蝶软件(中国)有限公司 | 一种维度组合获取方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2204138A1 (en) * | 2009-01-06 | 2010-07-07 | GC Corporation | Method for creating three-dimensional data of position of outer periphery at occlusal surface side of keeper with respect abutment for implant |
CN103049896A (zh) * | 2012-12-27 | 2013-04-17 | 浙江大学 | 三维模型的几何数据和纹理数据自动配准算法 |
CN104661010A (zh) * | 2013-11-20 | 2015-05-27 | 财团法人资讯工业策进会 | 三维立体模型的建立方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9252804B2 (en) * | 2013-01-18 | 2016-02-02 | International Business Machines Corporation | Re-aligning a compressed data array |
-
2016
- 2016-04-08 CN CN201610217578.1A patent/CN105843591B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2204138A1 (en) * | 2009-01-06 | 2010-07-07 | GC Corporation | Method for creating three-dimensional data of position of outer periphery at occlusal surface side of keeper with respect abutment for implant |
CN103049896A (zh) * | 2012-12-27 | 2013-04-17 | 浙江大学 | 三维模型的几何数据和纹理数据自动配准算法 |
CN104661010A (zh) * | 2013-11-20 | 2015-05-27 | 财团法人资讯工业策进会 | 三维立体模型的建立方法和装置 |
Non-Patent Citations (2)
Title |
---|
基于 VMIDS 开发***的时频分析仪;李金同;《工程科技辑》;20130331;第7页 * |
滑动窗口应用循环展开及其数据通路生成;董亚卓,刘明政,夏飞,窦勇;《计算机学报》;20080630;第2节 * |
Also Published As
Publication number | Publication date |
---|---|
CN105843591A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105843591B (zh) | 多维数组滑动生成数据的方法、装置及处理器 | |
CN111213125B (zh) | 使用simd指令进行高效的直接卷积 | |
EP3387549B1 (en) | Hardware accelerated machine learning | |
CN100492280C (zh) | 用于访问寄存器文件区域中的信息的方法、装置和*** | |
US11941399B2 (en) | Exposing valid byte lanes as vector predicates to CPU | |
JP5461533B2 (ja) | ローカル及びグローバルのデータ共有 | |
CN104838357B (zh) | 向量化方法、***及处理器 | |
CN110383237A (zh) | 可重新配置的矩阵乘法器***和方法 | |
CN104952032B (zh) | 图的处理方法、装置以及栅格化表示及存储方法 | |
CN105573962B (zh) | 单指令多数据处理器与相关方法 | |
US11860790B2 (en) | Streaming engine with separately selectable element and group duplication | |
CN109240744A (zh) | 排序加速处理器、方法、***和指令 | |
CN103810111A (zh) | 有源存储器件中的地址生成的方法及其处理元件 | |
CN109313549A (zh) | 用于向量的元素排序的装置、方法和*** | |
CN107220029A (zh) | 掩码置换指令的装置和方法 | |
CN108205448A (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
CN109992305A (zh) | 用于将片寄存器对归零的***和方法 | |
US20060149938A1 (en) | Determining a register file region based at least in part on a value in an index register | |
CN109416633A (zh) | 用于执行重新排列操作的设备及方法 | |
Pawley et al. | The implementation of lattice calculations on the DAP | |
US7441099B2 (en) | Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit | |
CN106796502A (zh) | 从3d坐标计算3d z曲线索引的机器级指令 | |
CN102884505B (zh) | 数据处理装置和数据处理方法 | |
CN108369515A (zh) | 用于跨步加载的***、设备和方法 | |
EP2097808A1 (en) | Methods and apparatuses for compaction and/or decompaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |