CN105843591A - 多维数组滑动生成数据的方法、装置及处理器 - Google Patents

多维数组滑动生成数据的方法、装置及处理器 Download PDF

Info

Publication number
CN105843591A
CN105843591A CN201610217578.1A CN201610217578A CN105843591A CN 105843591 A CN105843591 A CN 105843591A CN 201610217578 A CN201610217578 A CN 201610217578A CN 105843591 A CN105843591 A CN 105843591A
Authority
CN
China
Prior art keywords
array
dimensional
dimension
length
dimensional array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610217578.1A
Other languages
English (en)
Other versions
CN105843591B (zh
Inventor
汪文祥
杨灿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201610217578.1A priority Critical patent/CN105843591B/zh
Publication of CN105843591A publication Critical patent/CN105843591A/zh
Application granted granted Critical
Publication of CN105843591B publication Critical patent/CN105843591B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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维数组的元素位置的对应关系:
[ N u m b e r ] = Σ s = 0 N - 1 [ ( i s + 1 - 1 ) ( Π k = 0 s M k ) ]
其中,Mj为N维数组的第j维的长度,1≤j≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ij≤Mj,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;
根据所述对应关系将所述第一元素的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维数组的元素位置的对应关系:
[ N u m b e r ] = Σ s = 0 N - 1 [ ( i s + 1 - 1 ) ( Π k = 0 s M k ) ]
其中,Mj为N维数组的第j维的长度,1≤j≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ij≤Mj,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组。
进一步的,还包括:
移动量获取模块,用于获取所述移动量,所述移动量小于所述第一维度的长度。
进一步的,所述移动量获取模块,具体用于根据存储器中的指示数据获取所述移动量;和/或者,获取预设的所述移动量。
本发明实施例提供一种处理器,所述处理器用于执行多维数组滑动操作指令,以执行上述多维数组滑动生成数据的方法。
本发明实施例多维数组滑动生成数据的方法、装置及处理器,通过多维数组滑动操作生成目的数据,实现高效、便捷地从两个源元素中提取出满足需求数据模式的目标元素,将需要多个访存操作、滑动操作、与或操作等一系列长的指令流操作才能实现的功能使用一个多维数组滑动操作就可以实现,提高处理器的效率,使处理器在相关的科学计算领域或者数字信号处理领域中处理具体的问题时更有效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图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的数组的各元素位置上放置,根据下述公式:
其中,Mj为N维数组的第j维的长度,1≤j≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ij≤Mj,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置。
可以将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维数组的元素位置的对应关系:
&lsqb; N u m b e r &rsqb; = &Sigma; s = 0 N - 1 &lsqb; ( i s + 1 - 1 ) ( &Pi; k = 0 s M k ) &rsqb;
其中,Mj为N维数组的第j维的长度,1≤j≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ij≤Mj,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组。
图7为本发明多维数组滑动生成数据的装置的另一个实施例的结构示意图,如图7所示,本实施例的装置在图6所示结构基础上,还包括:移动量获取模块16,用于获取所述移动量,所述移动量小于所述第一维度的长度。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步的,所述移动量获取模块16,具体用于根据存储器中的指示数据获取所述移动量;和/或者,获取预设的所述移动量。
图8为本发明处理器的一个实施例的结构示意图,如图8所示,本实施例的处理器20用于执行多维数组滑动操作指令,可以执行图1~图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (13)

1.一种多维数组滑动生成数据的方法,其特征在于,包括:
通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;
根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;
在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;
从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;
获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素。
2.根据权利要求1所述的方法,其特征在于,所述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;
所述第一字段作为指令操作码,用来指示该条指令的控制信息,所述控制信息中包括第一元素的长度、第二元素的长度、多维数组的维度、每个维度的长度、将元素映射为多维数组的规则、以及用于两个多维数组拼接的所述第一维度的方向;
所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器;
所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器;
所述第四字段用来表示所述移动量大小。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,包括:
根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,其中,L=N1×N2×……×Nn,L为大于1的自然数,N1、N2、……、Nn分别为所述N维数组的N个维度的长度;
根据所述每个维度的长度采用所述预设规则将所述第二元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第二数组。
4.根据权利要求3所述的方法,其特征在于,所述根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,包括:
根据以下公式确定所述第一元素的L个字节与所述N维数组的元素位置的对应关系:
&lsqb; N u m b e r &rsqb; = &Sigma; s = 0 N - 1 &lsqb; ( i s + 1 - 1 ) ( &Pi; k = 0 s M k ) &rsqb;
其中,Mj为N维数组的第j维的长度,1≤j≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ij≤Mj,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;
根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组。
5.根据权利要求1所述的方法,其特征在于,所述从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动所述移动量个字节之前,还包括:
获取所述移动量,所述移动量小于所述第一维度的长度。
6.根据权利要求5所述的方法,其特征在于,所述获取所述移动量,包括:
根据存储器中的指示数据获取所述移动量;和/或者,
获取预设的所述移动量。
7.一种多维数组滑动生成数据的装置,其特征在于,包括:
元素获取模块,用于通过执行多维数组滑动操作指令获取长度相同的第一元素和第二元素;
组成模块,用于根据相同的预设规则分别将所述第一元素和所述第二元素组成N维第一数组和N维第二数组,N为自然数;
拼接模块,用于在第一维度的方向上将所述第一数组和所述第二数组进行拼接,所述第一维度为所述N维中的一个维度;
滑动模块,用于从所述第一维度的原点开始将N维滑动窗口在拼接后的N维数组上沿所述第一维度滑动移动量个字节,所述N维滑动窗口与所述第一数组或所述第二数组在N个维度的长度分别相同;
数据生成模块,用于获取滑动后的所述N维滑动窗口中的所有数组元素组成目标元素。
8.根据权利要求7所述的装置,其特征在于,所述多维数组滑动操作指令包括:第一字段、第二字段、第三字段和第四字段;
所述第一字段作为指令操作码,用来指示该条指令的控制信息,所述控制信息中包括第一元素的长度、第二元素的长度、多维数组的维度、每个维度的长度、将元素映射为多维数组的规则、以及用于两个多维数组拼接的所述第一维度的方向;
所述第二字段用来表示所述多维数组滑动操作指令的源操作数或者源寄存器;
所述第三字段用来表示所述多维数组滑动操作指令的目的操作数或者目的寄存器;
所述第四字段用来表示所述移动量大小。
9.根据权利要求7或8所述的装置,其特征在于,所述组成模块,具体用于根据所述每个维度的长度采用所述预设规则将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组,其中,L=N1×N2×… …×Nn,L为大于1的自然数,N1、N2、……、Nn分别为所述N维数组的N个维度的长度;根据所述每个维度的长度采用所述预设规则将所述第二元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第二数组。
10.根据权利要求9所述的装置,其特征在于,所述组成模块,具体用于根据以下公式确定所述第一元素的L个字节与所述N维数组的元素位置的对应关系:
&lsqb; N u m b e r &rsqb; = &Sigma; s = 0 N - 1 &lsqb; ( i s + 1 - 1 ) ( &Pi; k = 0 s M k ) &rsqb;
其中,Mj为N维数组的第j维的长度,1≤j≤N;i1,i2,…,iN表示N维数组中的某一元素的位置,1≤ij≤Mj,i1表示元素位于N维数组的第1维的i1位置,i2表示元素位于N维数组的第2维的i2位置,i3表示元素位于N维数组的第3维的i3位置,…,iN表示元素位于N维数组的第N维的iN位置;根据所述对应关系将所述第一元素的L个字节分别放置在所述N维数组的对应元素位置上组成所述第一数组。
11.根据权利要求7所述的装置,其特征在于,还包括:
移动量获取模块,用于获取所述移动量,所述移动量小于所述第一维度的长度。
12.根据权利要求11所述的装置,其特征在于,所述移动量获取模块,具体用于根据存储器中的指示数据获取所述移动量;和/或者,获取预设的所述移动量。
13.一种处理器,其特征在于,所述处理器用于执行多维数组滑动操作指令,以执行权利要求1~6中任一项所述的方法。
CN201610217578.1A 2016-04-08 2016-04-08 多维数组滑动生成数据的方法、装置及处理器 Active CN105843591B (zh)

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 true CN105843591A (zh) 2016-08-10
CN105843591B 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)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107656876A (zh) * 2017-10-19 2018-02-02 浪潮金融信息技术有限公司 数据存储方法及装置、计算机可读存储介质、终端
CN107748723A (zh) * 2017-09-28 2018-03-02 中国人民解放军国防科技大学 支持无冲突跨步按块访问的存储方法及访存装置
CN110597644A (zh) * 2019-09-10 2019-12-20 深圳市元征科技股份有限公司 数据流传输方法、传输装置、电子设备及存储介质
WO2020073211A1 (zh) * 2018-10-09 2020-04-16 华为技术有限公司 运算加速器、处理方法及相关设备
CN112307030A (zh) * 2020-11-05 2021-02-02 金蝶软件(中国)有限公司 一种维度组合获取方法及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
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 浙江大学 三维模型的几何数据和纹理数据自动配准算法
US20140208053A1 (en) * 2013-01-18 2014-07-24 International Business Machines Corporation Re-aligning a compressed data array
CN104661010A (zh) * 2013-11-20 2015-05-27 财团法人资讯工业策进会 三维立体模型的建立方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
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 浙江大学 三维模型的几何数据和纹理数据自动配准算法
US20140208053A1 (en) * 2013-01-18 2014-07-24 International Business Machines Corporation Re-aligning a compressed data array
CN104661010A (zh) * 2013-11-20 2015-05-27 财团法人资讯工业策进会 三维立体模型的建立方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李金同: "基于 VMIDS 开发系统的时频分析仪", 《工程科技辑》 *
董亚卓,刘明政,夏飞,窦勇: "滑动窗口应用循环展开及其数据通路生成", 《计算机学报》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107748723A (zh) * 2017-09-28 2018-03-02 中国人民解放军国防科技大学 支持无冲突跨步按块访问的存储方法及访存装置
CN107748723B (zh) * 2017-09-28 2020-03-20 中国人民解放军国防科技大学 支持无冲突跨步按块访问的存储方法及访存装置
CN107656876A (zh) * 2017-10-19 2018-02-02 浪潮金融信息技术有限公司 数据存储方法及装置、计算机可读存储介质、终端
WO2020073211A1 (zh) * 2018-10-09 2020-04-16 华为技术有限公司 运算加速器、处理方法及相关设备
CN110597644A (zh) * 2019-09-10 2019-12-20 深圳市元征科技股份有限公司 数据流传输方法、传输装置、电子设备及存储介质
CN112307030A (zh) * 2020-11-05 2021-02-02 金蝶软件(中国)有限公司 一种维度组合获取方法及相关设备
CN112307030B (zh) * 2020-11-05 2023-12-26 金蝶软件(中国)有限公司 一种维度组合获取方法及相关设备

Also Published As

Publication number Publication date
CN105843591B (zh) 2018-06-19

Similar Documents

Publication Publication Date Title
US10809933B2 (en) Matrix transfer accelerator system and method
CN105843591A (zh) 多维数组滑动生成数据的方法、装置及处理器
KR102278658B1 (ko) 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처
US20200394495A1 (en) System and architecture of neural network accelerator
US10346507B2 (en) Symmetric block sparse matrix-vector multiplication
US20200327079A1 (en) Data processing method and device, dma controller, and computer readable storage medium
TWI690896B (zh) 影像處理器、由其執行之方法、及非暫態機器可讀儲存媒體
CN103744639A (zh) 数据访问和置换单元
CN105512723A (zh) 一种用于稀疏连接的人工神经网络计算装置和方法
US9146902B2 (en) Parallel computation of matrix problems
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
JPS6363945B2 (zh)
DE102008005515A1 (de) Virtuelle Architektur und virtueller Befehlssatz für die Berechnung paralleler Befehlsfolgen
CN109992304A (zh) 用于加载片寄存器对的系统和方法
CN107423816A (zh) 一种多计算精度神经网络处理方法和系统
CN110807170B (zh) 多样本多通道卷积神经网络Same卷积向量化实现方法
CN110516316B (zh) 一种间断伽辽金法求解欧拉方程的gpu加速方法
CN114283099A (zh) 一种图处理的方法,系统以及装置
Nakano Optimal parallel algorithms for computing the sum, the prefix-sums, and the summed area table on the memory machine models
Pawley et al. The implementation of lattice calculations on the DAP
TWI724545B (zh) 用於影像處理之設備及方法
KR20210014561A (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
CN111459543B (zh) 一种管理寄存器文件单元的方法
CN109074334A (zh) 数据处理方法、设备、dma控制器及计算机可读存储介质
KR20200094771A (ko) 벡터 자리올림이 있는 가산 명령

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