CN114840255A - 处理数据的方法、装置及设备可读存储介质 - Google Patents

处理数据的方法、装置及设备可读存储介质 Download PDF

Info

Publication number
CN114840255A
CN114840255A CN202210776138.5A CN202210776138A CN114840255A CN 114840255 A CN114840255 A CN 114840255A CN 202210776138 A CN202210776138 A CN 202210776138A CN 114840255 A CN114840255 A CN 114840255A
Authority
CN
China
Prior art keywords
data
data elements
boundary value
vector
instruction
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
CN202210776138.5A
Other languages
English (en)
Other versions
CN114840255B (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.)
Phytium Technology Co Ltd
Original Assignee
Phytium Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202210776138.5A priority Critical patent/CN114840255B/zh
Publication of CN114840255A publication Critical patent/CN114840255A/zh
Application granted granted Critical
Publication of CN114840255B publication Critical patent/CN114840255B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

提供一种处理数据的方法、装置及设备可读存储介质。该方法包括:利用SIMD指令集中的第一向量指令将数据集中的第i组数据元素加载至多个向量寄存器,每个向量寄存器包括多个通道,一个通道用于存储第i组数据中的一个数据元素,一个向量寄存器的多个通道与另一向量寄存器的多个通道一一对应;并行地计算各个对应通道中的数据元素的边界值,从而确定第i组数据元素的边界值;利用条件选择指令将第i组数据元素的边界值与数据集的全局边界值进行比较,以更新全局边界值。本申请通过多个向量寄存器可以并行地对数据元素进行比较,且使用条件选择指令将第i组数据元素的边界值与全局边界值进行比较,从而可以提高数据处理速度。

Description

处理数据的方法、装置及设备可读存储介质
技术领域
本申请涉及处理器领域,具体涉及一种处理数据的方法、装置及设备可读存储介质。
背景技术
目前,查找数据集中的边界值(如最大值或最小值)主要是通过对数据集中的数据元素进行遍历的方式来实现。具体地,可以先初始化一个全局边界值,对于每个遍历到的数据元素,可以将该数据元素与全局边界值进行比较,以更新全局边界值。待所有的数据元素全部遍历完之后,得到的更新后的全局边界值即为数据集的边界值。但是,这种方式一次只能比较两个数据元素,无法做到并行比较,从而会影响数据处理速度。
另外,在将数据元素与全局边界值进行比较时,通常是采用中央处理单元(central processing unit,CPU)分支预测机制来实现。但是,CPU分支预测机制会存在预测失败的情况。如果预测失败,会导致流水线重排,不利于提高数据处理速度。
发明内容
本申请实施例提供一种处理数据的方法、装置及设备可读存储介质,能够提高数据处理速度。
第一方面,提供一种处理数据的方法,包括:利用SIMD指令集中的第一向量指令将数据集中的第i组数据元素加载至处理器的多个向量寄存器,所述多个向量寄存器中的每个向量寄存器包括多个通道,且所述多个通道中的一个通道用于存储所述第i组数据中的一个数据元素,所述多个向量寄存器中的一个向量寄存器的多个通道与所述多个向量寄存器中的另一向量寄存器的多个通道一一对应;并行地计算所述多个向量寄存器的各个对应通道中的数据元素的边界值;根据所述多个向量寄存器的各个对应通道中的数据元素的边界值,确定所述第i组数据元素的边界值;利用条件选择指令将所述第i组数据元素的边界值与所述数据集的全局边界值进行比较,以更新所述全局边界值。
作为一种可能的实现方式,所述方法还包括:在将所述数据集中的所有数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;如果所述目标边界值属于所述数据集的第I组数据元素,则将所述第I组数据元素中的每个数据元素分别与所述目标边界值进行比较,得到所述目标边界值为所述第I组数据元素中的第k个数据元素;确定所述目标边界值的索引为(I-1)*m+k,其中,m为一个数据元素组中的数据元素的数量。
作为一种可能的实现方式,所述数据集包括n组数据元素以及除所述n组数据元素之外的p个数据元素,所述第i组数据元素为所述n组数据元素中的一组数据元素,其中,p小于一个数据元素组中的数据元素的数量m,所述方法还包括:在将所述n组数据元素遍历完之后,将所述p个数据元素中的每个数据元素与所述数据集的全局边界值进行比较,以更新所述全局边界值。
作为一种可能的实现方式,所述方法还包括:在将所述n组数据元素以及所述p个数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;如果所述目标边界值为所述p个数据元素中的第q个数据元素,则确定所述目标边界值的索引为n*m+q。
作为一种可能的实现方式,所述处理器包括目标向量寄存器,所述目标向量寄存器包括多个通道,且所述目标向量寄存器的所述多个通道用于存储所述多个向量寄存器的各个对应通道中的数据元素的边界值,所述根据所述多个向量寄存器的各个对应通道中的数据元素的边界值,确定所述第i组数据元素的边界值,包括:利用第二向量指令计算所述目标向量寄存器的各个通道中的数据元素的边界值,以得到所述第i组数据元素的边界值。
作为一种可能的实现方式,所述条件选择指令为CSEL指令。
作为一种可能的实现方式,所述第一向量指令为LD1指令。
第二方面,提供一种处理数据的装置,其特征在于,所述装置包括:加载单元,用于利用单指令多数据SIMD指令集中的第一向量指令将数据集中的第i组数据元素加载至处理器的多个向量寄存器,所述多个向量寄存器中的每个向量寄存器包括多个通道,且所述多个通道中的一个通道用于存储所述第i组数据中的一个数据元素,所述多个向量寄存器中的一个向量寄存器的多个通道与所述多个向量寄存器中的另一向量寄存器的多个通道一一对应;计算单元,用于并行地计算所述多个向量寄存器的各个对应通道中的数据元素的边界值;确定单元,用于根据所述多个向量寄存器的各个对应通道中的数据元素的边界值,确定所述第i组数据元素的边界值;比较单元,用于利用条件选择指令将所述第i组数据元素的边界值与所述数据集的全局边界值进行比较,以更新所述全局边界值。
作为一种可能的实现方式,所述确定单元还用于:在将所述数据集中的所有数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;所述比较单元还用于:如果所述目标边界值属于所述数据集的第I组数据元素,则将所述第I组数据元素中的每个数据元素分别与所述目标边界值进行比较,得到所述目标边界值为所述第I组数据元素中的第k个数据元素;所述确定单元还用于确定所述目标边界值的索引为(I-1)*m+k,其中,m为一个数据元素组中的数据元素的数量。
作为一种可能的实现方式,所述数据集包括n组数据元素以及除所述n组数据元素之外的p个数据元素,所述第i组数据元素为所述n组数据元素中的一组数据元素,其中,p小于一个数据元素组中的数据元素的数量m,所述比较单元还用于:在将所述n组数据元素遍历完之后,将所述p个数据元素中的每个数据元素与所述数据集的全局边界值进行比较,以更新所述全局边界值。
作为一种可能的实现方式,所述确定单元还用于:在将所述n组数据元素以及所述p个数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;如果所述目标边界值为所述p个数据元素中的第q个数据元素,则确定所述目标边界值的索引为n*m+q。
作为一种可能的实现方式,所述处理器包括目标向量寄存器,所述目标向量寄存器包括多个通道,且所述目标向量寄存器的所述多个通道用于存储所述多个向量寄存器的各个对应通道中的数据元素的边界值,所述确定单元用于:利用第二向量指令计算所述目标向量寄存器的各个通道中的数据元素的边界值,以得到所述第i组数据元素的边界值。
作为一种可能的实现方式,所述条件选择指令为CSEL指令。
作为一种可能的实现方式,所述第一向量指令为LD1指令。
第三方面,提供一种处理数据的装置,包括:存储器,用于存储指令;处理器,用于执行所述存储器中存储的指令,以执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法。
第四方面,提供一种设备可读存储介质,其上存储有用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
第五方面,提供一种程序产品,包括用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。
本申请实施例提供的处理数据的方法可以基于多个向量寄存器实现对数据元素的并行比较,从而可以提高数据处理速度。另外,在将第i组数据元素的边界值与数据集的全局边界值进行比较时,可以使用条件选择指令进行比较,从而可以避免CPU分支预测失败的问题,有利于提高数据处理速度。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例中的向量寄存器的一种可能的结构示意图。
图2是本申请实施例提供的一种处理数据的方法的流程示意图。
图3是本申请实施例提供的一种对多个向量寄存器中的多个通道进行并行计算的方法的示意图。
图4是本申请实施例提供的一种计算一个向量寄存器的各个通道中的数据元素的边界值的方法的示意图。
图5是本申请实施例提供的一种对数据集中的数据元素进行分组的示意图。
图6是一种基于图5划分的数据元素组确定边界值的索引的方法的示意图。
图7是另一种基于图5划分的数据元素组确定边界值的索引的方法的示意图。
图8是本申请实施例提供的一种处理数据的装置的结构示意图。
图9是本申请实施例提供的另一种处理数据的装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
本申请实施例的方法用于查找数据集中的边界值。例如,查找数据集中的最大值或最小值。
目前,查找数据集中的边界值主要是通过对数据集中的数据元素进行遍历的方式来实现。具体地,可以先确定一个初始的全局边界值,然后将数据集中的数据元素逐个与初始边界值进行比较。对于每个遍历到的数据元素,比较该数据元素与全局边界值的大小,以确定是否需要更新全局边界值。如果需要更新全局边界值,则将该数据元素作为更新后的全局边界值。在数据集中的数据元素全部遍历完之后,更新后的全局边界值即为该数据集的边界值。
另外,由于数据元素是依次进行遍历的,因此,在得到数据集的边界值后,也可以得到数据集的边界值的索引。数据集的边界值的索引可以理解为数据集的边界值在数据集中的位置,即数据集的边界值为数据集中的第几个数据元素。
下面以边界值为最大值为例,对确定数据集的最大值以及最大值的索引的方式进行说明。
确定数据集的最大值以及最大值的索引的过程使用c语言可以表示为如下:
brief 查找大数据集中的最大值及索引
param[in] data 数据集
param[in] num 数据集中的个数
param[out] max 查找后数据集中的最大值
param[out] max_index 查找后数据集中最大值的索引
void find_max(data_type *data, int num,
data_type *max, int *max_index)
{
int i;
int globe_max_index = -1;
data_type globe_max = DATA_TYPE_MIN;
for (i = 0; i < num; i ++) {
if (data[i] > globe_max) {
globe_max = data[i];
globe_max_index = i;
}
}
max = globe_max;
max_index = globe_max_index;
}
在上述过程中,可以定义初始的全局最大值索引globe_max_index为-1,全局最大值globe_max为DATA_TYPE_MIN。其中,DATA_TYPE_MIN可以理解为数据集中所有数据元素的可能的最小值。
在确定数据集的最大值的过程中,可以将数据集中的第i个数据元素与全局最大值进行比较,以更新全局最大值,其中,0≤i<num。换句话说,可以从数据集中的第0个数据元素开始进行循环迭代,直到i的取值达到num。i=0时,将第0个数据元素与全局最大值进行比较。如果第0个数据元素大于全局最大值(即DATA_TYPE_MIN),则更新全局最大值,将全局最大值更新为第0个数据元素,即globe_max = data[0]。另外,也需要对全局最大值的索引进行更新,即globe_max_index=0。如果第0个数据元素不大于全局最大值,则不对全局最大值和全局最大值的索引进行更新。
将i的取值加1,并重复上述步骤。i=1时,将第1个数据元素与全局最大值进行比较。如果第1个数据元素大于全局最大值,则更新全局最大值,将全局最大值更新为第1个数据元素,即globe_max = data[1]。另外,也需要对全局最大值的索引进行更新,即globe_max_index=1。如果第1个数据元素不大于全局最大值,则不对全局最大值和全局最大值的索引进行更新。
将i的取值加1,并重复上述过程,直到遍历完数据集中的所有数据元素。在数据集中的所有数据元素遍历完之后,得到更新后的全局最大值和更新后的全局最大值的索引。该更新后的全局最大值即为数据集的最大值,该更新后的全局最大值的索引即为数据集的最大值的索引。
在上述过程中,需要根据数据元素与全局最大值的比较结果,来更新全局最大值。对于每个被遍历到的数据元素,如果都是等到比较结果出来后,才对全局最大值进行更新,这将会耗费很长的时间。为了提高数据处理速度,可以采用CPU分支预测机制来对全局最大值进行更新。在未得到数据元素与全局最大值的比较结果之前,处理器可以先对比较结果进行预测,并根据预测结果对全局最大值进行更新。如果预测正确,则处理器可以继续执行后续的操作。如果预测失败,处理器需要清空流水线,重新加载正确的分支进行操作。
从上述过程可以看出,虽然CPU分支预测机制在一定程度上可以提高处理速度,但是CPU预测机制仍会存在预测失败的情况。如果预测失败,则会导致流水线重排,不利于提高数据处理速度。
另外,上述方式在确定数据集的边界值以及边界值的索引过程中,需要将数据集中的数据元素依次进行遍历,且一次只能比较两个数据元素,无法做到并行比较,从而会影响数据处理速度。
为了解决上述问题,本申请实施例提出一种处理数据的方法。本申请实施例提供的方法中,可以使用单指令多数据(single instruction multiple data,SIMD)指令集中的第一向量指令,将数据集中的第i组数据元素加载至多个向量寄存器,然后将多个向量寄存器中的各个对应通道的数据元素并行地进行比较,以得到第i组数据元素的边界值。在得到第i组数据元素的边界值后,可以使用条件选择指令将第i组数据元素的边界值与全局边界值进行比较,以更新全局边界值。本申请实施例提供的处理数据的方法可以基于多个向量寄存器实现对数据元素的并行比较,从而可以提高数据处理速度。另外,在将第i组数据元素的边界值与数据集的全局边界值进行比较时,可以使用条件选择指令进行比较,从而可以避免CPU分支预测失败的问题,有利于提高数据处理速度。
本申请实施例的方法可应用于机器学习、人工智能、图像处理等技术领域。本申请实施例的方法可以由处理器执行。该处理器可以包括多个向量寄存器。多个向量寄存器中的每个向量寄存器包括多个通道,多个通道中的每个通道可分别用于存储一个数据元素。
一个向量寄存器包括的通道数量与数据元素的大小有关。例如,如果一个向量寄存器具有128比特,一个数据元素的大小为32比特,那么该向量寄存器可以包括4个通道,即该向量寄存器可以存储4个数据元素。如图1所示。
数据元素的大小可以根据数据元素的类型确定。数据元素的类型不同,则数据元素的大小可能不同。数据元素的类型可以包括以下中的一种或多种:浮点型、整型。浮点可以包括单精度浮点型(float)、双精度浮点型(double)等。整型可以包括有符号的整型、无符号的整型、长整型、短整型等。举例说明,如果数据元素的类型为单精度浮点型,则该数据元素的大小为32比特。如果数据元素的类型为双精度浮点型,则该数据元素的大小为64比特。
本申请实施例中,一组数据元素包含的数据元素的数量与多个向量寄存器包括的通道数量有关。在一些实施例中,一组数据元素包含的数据元素的数量可以与多个向量寄存器包括的通道数量相等。例如,如果多个向量寄存器包括m个通道,则一组数据元素可以包括m个数据元素。举例说明,如果处理器包括4个向量寄存器,一个向量寄存器包括4个通道,则一组数据元素可以包括16个数据元素。当然,在一些实施例中,如果数据集中数据元素的数量不能被m整除,则最后一组数据元素中数据元素的数量可以小于m。
数据集中可以包括多组数据元素。为方便描述,下文以数据集中的第i组数据元素为例,对数据集的全局边界值的确定方式进行举例说明。应理解,第i组数据元素可以为数据集中的任意一组数据元素。例如,该第i组数据元素可以为数据集中的第1组数据元素,也可以为数据集中的最后一组数据元素。该数据集中的每组数据元素都可以按照下文描述的第i组数据元素的处理逻辑进行相同或类似的处理。
参见图2,在步骤S210、利用SIMD指令集中的第一向量指令将数据集中的第i组数据元素加载至处理器的多个向量寄存器。SIMD指令集例如可以为arm架构(如arm64架构)的SIMD指令集。
第一向量指令可以为向量加载指令。第一向量指令可以每次从数据集中读取一组数据元素,并将该一组数据元素加载至多个向量寄存器。本申请实施例对第一向量指令的表述方式不做具体限定。实际上,第一向量指令的表述方式与加载方式有关。例如,如果加载方式是连续加载或按顺序读取,则第一向量指令可以为LD1指令。如果加载方式为跳一个读取,则第一向量指令可以为LD2指令。如果加载方式为跳3个位置读取,则第一向量指令可以为LD3指令。如果加载方式为跳4个位置读取,则第一向量指令可以为LD4指令。
多个向量寄存器中的每个向量寄存器可以包括多个通道,且多个通道中的一个通道用于存储第i组数据元素中的一个数据元素。如图3所示,4个向量寄存器包括16个通道,该16个通道中的每个通道可用于存储第i组数据元素中的一个数据元素。
多个向量寄存器中的一个向量寄存器的多个通道与多个向量寄存器中的另一向量寄存器的多个通道一一对应。
举例说明,参见图3,多个向量寄存器包括4个向量寄存器,分别为向量寄存器V0、向量寄存器V1、向量寄存器V2、向量寄存器V3。上述4个向量寄存器均包括4个通道,即通道1、通道2、通道3和通道4。以向量寄存器V0和向量寄存器V1为例,向量寄存器V0的4个通道与向量寄存器V1的4个通道一一对应。具体地,向量寄存器V0的通道1与向量寄存器V1的通道1对应,向量寄存器V0的通道2与向量寄存器V1的通道2对应,向量寄存器V0的通道3与向量寄存器V1的通道3对应,向量寄存器V0的通道4与向量寄存器V1的通道4对应。需要说明的是,其他任意两个向量寄存器的通道之间的对应关系,与向量寄存器V0和向量寄存器V1的通道之间的对应关系类似,为了简洁,此处不再赘述。
为方便描述,下文将多个向量寄存器的通道1称为对应通道1,将多个向量寄存器的通道2称为对应通道2,将多个向量寄存器的通道3称为对应通道3,将多个向量寄存器的通道4称为对应通道4,以此类推。
在步骤S220、并行地计算多个向量寄存器的各个对应通道中的数据元素的边界值。
为方便描述,下文将对应通道中数据元素的边界值简称为对应通道的边界值。该边界值可以为最大值,也可以为最小值。
多个向量寄存器的各个对应通道中的数据元素可以并行地进行比较,从而可以得到各个对应通道的边界值。相比于现有技术一次只能比较两个数据元素的方案,使用向量寄存器可以并行地对多个数据元素进行比较,从而可以提高数据处理速度。
仍以图3为例,对应通道1、对应通道2、对应通道3和对应通道4中的数据元素可以并行地进行比较。将对应通道1中的数据元素进行比较,可以得到对应通道1的边界值。将对应通道2中的数据元素进行比较,可以得到对应通道2的边界值。将对应通道3中的数据元素进行比较,可以得到对应通道3的边界值。将对应通道4中的数据元素进行比较,可以得到对应通道4的边界值。
各个对应通道的边界值可以存储在一个向量寄存器中。作为一个示例,处理器还可以包括目标向量寄存器,目标向量寄存器包括多个通道,目标向量寄存器的多个通道用于存储多个向量寄存器的各个对应通道中的数据元素的边界值。举例说明,以图3为例,目标向量寄存器为向量寄存器Vz,向量寄存器Vz包括4个通道。向量寄存器Vz的通道1用于存储向量寄存器1~4的对应通道1的数据元素的边界值,向量寄存器Vz的通道2用于存储向量寄存器1~4的对应通道2的数据元素的边界值,向量寄存器Vz的通道3用于存储向量寄存器1~4的对应通道3的数据元素的边界值,向量寄存器Vz的通道4用于存储向量寄存器1~4的对应通道4的数据元素的边界值。
目标向量寄存器可以为一个新的向量寄存器,也可以为多个向量寄存器中的一个向量寄存器。举例说明,向量寄存器Vz可以为一个新的向量寄存器,也可以为向量寄存器V0~V3中的任意一个向量寄存器。
在对多个向量寄存器中的各个对应通道中的数据元素进行比较时,可以直接将多个向量寄存器的对应通道中的数据元素进行比较,得到对应通道的边界值,或者也可以将多个向量寄存器进行两两比较,然后再基于两两比较结果,确定多个向量寄存器中对应通道的边界值。
举例说明,继续参见图3,可以将向量寄存器V0与向量寄存器V1进行比较,得到向量寄存器V0与向量寄存器V1的各个对应通道的边界值。将向量寄存器V2与向量寄存器V3进行比较,得到向量寄存器V2与向量寄存器V3的各个对应通道的边界值。然后将向量寄存器V0与向量寄存器V1的各个对应通道的边界值,与向量寄存器V2与向量寄存器V3的各个对应通道的边界值进行比较,得到向量寄存器V0~V3的各个对应通道的边界值。
本申请实施例对各个对应通道的边界值的存储位置不做具体限定。例如,向量寄存器V0与向量寄存器V1的各个对应通道的边界值可以存储在一个新的向量寄存器中,也可以存储在向量寄存器V0或向量寄存器V1中。换句话说,图3中的向量寄存器Vx可以为一个新的向量寄存器,也可以为向量寄存器V0或向量寄存器V1。
类似地,向量寄存器V2与向量寄存器V3的各个对应通道的边界值可以存储在一个新的向量寄存器中,也可以存储在向量寄存器V2或向量寄存器V3中。换句话说,图3中的向量寄存器Vy可以为一个新的向量寄存器,也可以为向量寄存器V2或向量寄存器V3。
下面以向量寄存器Vx为例,对向量寄存器V0与向量寄存器V1的各个对应通道的边界值的存储位置进行介绍。如图3所示,向量寄存器Vx的通道1可用于存储向量寄存器V0与向量寄存器V1的对应通道1的边界值,向量寄存器Vx的通道2可用于存储向量寄存器V0与向量寄存器V1的对应通道2的边界值,向量寄存器Vx的通道3可用于存储向量寄存器V0与向量寄存器V1的对应通道3的边界值,向量寄存器Vx的通道4可用于存储向量寄存器V0与向量寄存器V1的对应通道4的边界值。
重新参见图2,在步骤S230、根据多个向量寄存器的各个对应通道中的数据元素的边界值,确定第i组数据元素的边界值。
在得到各个通道的边界值后,可以将各个对应通道的边界值进行比较,从而得到第i组数据元素的边界值。
仍以上述4个向量寄存器为例,在得到对应通道1~4的边界值后,可以将对应通道1~4的边界值进行比较,得到该4个向量寄存器中所有通道的边界值,该边界值即为第i组数据元素的边界值。该边界值也可以称为局部边界值。
如前文所述,多个向量寄存器的各个对应通道的边界值可以存储在目标向量寄存器中,在计算目标向量寄存器的所有通道的边界值时,可以使用第二向量指令进行计算。也就是说,可以利用第二向量指令计算目标向量寄存器的各个通道中的数据元素的边界值。
第二向量指令可以为MAXV指令或MINV指令。如果边界值为最大值,则第二向量指令为MAXV指令。如果边界值为最小值,则第二向量指令为MINV指令。
第二向量指令的表述方式与数据元素的类型有关。如果数据的类型为浮点类型,则第二向量指令可以为FMAXV指令或FMINV指令。如果数据的类型为无符号整型,则第二向量指令可以为UMAXV指令或UMINV指令。如果数据的类型为有符号整型,则第二向量指令可以为SMAXV指令或SMINV指令。
在使用第二向量指令得到第i组数据元素的边界值后,可以将第i组数据元素的边界值存储在一个向量寄存器中。如图4所示,使用第二向量指令将向量寄存器Vz中的各个通道的数据元素进行比较,可以得到向量寄存器Vz中数据元素的边界值。进一步地,可以将向量寄存器Vz中数据元素的边界值存储至向量寄存器V4中。
在步骤S240、利用条件选择指令将第i组数据元素的边界值与数据集的全局边界值进行比较,以更新全局边界值。
以边界值为最大值为例,如果第i组数据元素的边界值大于全局边界值,则使用第i组数据元素的边界值更新全局边界值,即将第i组数据元素的边界值作为更新后的全局边界值。如果第i组数据元素的边界值不大于全局边界值,则不对全局边界值进行更新,即全局边界值保持原来的值不变。
在将第i组数据元素的边界值与全局边界值进行比较时,可以利用条件选择指令进行比较,这样可以无需使用CPU分支预测机制,从而就可以避免预测失败导致流水线重排的问题,利用条件选择指令进行比较有利于提高处理性能。下面对条件选择指令的比较方式进行介绍。
本申请实施例的条件选择指令例如可以为CSEL指令。CSEL指令可以表示为:CSELXd, Xn, Xm, cond。Xd表示目的寄存器,即将计算结果存入Xd中。Xn为第一个源操作数的寄存器,如果条件满足则将Xn存入Xd。Xm为第二个源操作数的寄存器,如果条件不满足则将Xm存入Xd。cond表示条件。
在一些实施例中,可以先使用比较指令(如CMP指令)比较局部边界值和全局边界值,比较的结果可以存放在标志位(如PSTATE. {N, Z, C, V})上。然后,可以使用条件选择指令根据比较结果更新全局边界值。
条件选择指令的表述方式与数据元素的类型有关。例如,如果数据元素的类型为浮点型,则条件选择指令可以为FCSEL指令。如果数据元素的类型为无符号的整型,则条件选择指令可以为UCSEL指令。如果数据元素的类型为有符号的整型,则条件选择指令可以为SCSEL指令。
上文以数据集的第i组数据为例,对更新全局边界值的过程进行了介绍。数据集中的任意一组数据元素都可以按照上文描述的方式进行计算,以更新全局边界值。在数据集的所有数据元素组都遍历完之后,即可得到数据集的目标边界值。
在一些实施例中,数据集的最后一组数据元素的数量可能小于多个向量寄存器包括的通道数量,或者说,数据集的最后一组数据元素的数量小于其他组的数据元素的数量。在该情况下,为了降低计算复杂度,在对最后一组数据元素进行比较时,可以按照传统方式,将最后一组数据元素中的每个数据元素逐个与全局最大值进行比较,以更新全局最大值。由于最后一组数据元素的数量并不是很多,采用两两比较的方式也不会对处理速度产生很大影响。
举例说明,如图5所示,数据集可以包括n组数据元素以及除该n组数据元素之外的p个数据元素。其中,第i组数据元素为n组数据元素中的一组数据元素,p小于n组数据元素中一个数据元素组中的数据元素的数量。该p个数据元素即为上文描述的最后一组数据元素。在采用前文描述的方法将n组数据元素遍历完之后,可以将p个数据元素中的每个数据元素与数据集的全局边界值进行比较,以更新全局边界值。
上文对确定目标边界值的过程进行了介绍,下面对确定目标边界值的索引进行介绍。
在对数据集中的所有数据元素组遍历完之后,可以将更新后的全局边界值确定为数据集的目标边界值。如果目标边界值属于数据集的第I组数据元素,则可以将第I组数据元素中的每个数据元素与目标边界值进行比较,得到目标边界值在第I组数据元素中的位置。如果目标边界值为第I组数据元素中的第k个数据元素,则可以确定目标边界值的索引为(I-1)*m+k,其中,m为一个数据元素组包括的数据元素的数量,如图6所示。
如前文所述,数据集可以包括n个数据元素组和p个数据元素,在该情况下,会存在目标边界值属于p个数据元素中的一个数据元素的情况。由于p个数据元素是采用传统的方式进行遍历,因此,在根据该p个数据元素得到目标边界值的同时,也能得到目标边界值的索引。
如图所示,在对n个数据元素以及p个数据元素进行遍历后,可以将更新后的全局边界值确定为目标边界值。如果目标边界值为p个数据元素中的第q个数据元素,则可以确定目标边界值的索引为n*m+q,如图7所示。
下面以向量寄存器V0~V3为例,给出图1所示方法的一个具体示例。在下面的示例中,数据元素的类型为浮点型,且以下示例是以确定数据集的最大值为例进行说明的。应注意,下面的示例仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将本申请实施例限于所示例的协议或具体场景。本领域技术人员根据下面的示例,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本申请实施例的范围内。
本申请实施例的方法的代码实现可以如下:
LD1 {V0.4S - V3.4S}, X0, #64
FMAX V0.4S, V0.4S, V1.4S
FMAX V2.4S, V2.4S, V3.4S
FMAX V0.4S, V0.4S, V2.4S
FMAXV V4, V0.4S
FCMP V5, V4 //V5保存全局最大值
FCSEL V5, V4, V5, lt //根据条件更新最大值
CSEL w5, w6, w5, lt //根据条件更新最大值索引
//w6是遍历索引,w5是全局最大值索引
使用LD1指令将数据集中的一组数据元素加载至向量寄存器V0~V3。使用FMAX指令将向量寄存器V0与向量寄存器V1的各个对应通道的数据元素进行比较,比较的结果存储至向量寄存器V0中。使用FMAX指令将向量寄存器V2和向量寄存器V3的各个对应通道的数据元素进行比较,比较的结果存储至向量寄存器V2中。进一步地,可以将向量寄存器V0和向量寄存器V2中的各个对应通道的数据元素进行比较,比较的结果存储至向量寄存器V0中,即得到向量寄存器V0~V3的各个对应通道的最大值。在得到向量寄存器V0~V3的各个对应通道的最大值后,可以使用FMAXV指令计算向量寄存器V0的各个通道中的数据元素的最大值,将得到的最大值存储至向量寄存器V4中。向量寄存器V4中存储的数据元素为一组数据元素的局部最大值。
全局最大值存储在向量寄存器V5中,在得到局部最大值后,可以使用FCMP指令将向量寄存器V4中的局部最大值与向量寄存器V5中的全局最大值进行比较。进一步地,可以使用FCSEL指令对向量寄存器V5中的全局最大值进行更新。lt为判断条件,如果条件满足,则将向量寄存器V4中的数据元素存储至向量寄存器V5中,即将局部最大值作为更新后的全局最大值;如果条件不满足,则将向量寄存器V5中的数据元素存储至向量寄存器V5中,即不对全局最大值进行更新。
类似地,可以使用CSEL指令对全局最大值的索引进行更新。其中,w6为局部最大值的索引,w5为当前全局最大值的索引。如果lt条件满足,则更新后的全局最大值的索引为w6;如果lt条件不满足,则更新后的全局最大值的索引为w5。
上文结合图1至图7,详细描述了本申请的方法实施例,下面结合图8和图9,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图8是本申请实施例提供的一种处理数据的装置的结构示意图。图8所示的装置800可以包括加载单元810、计算单元820、确定单元830以及比较单元840。下面对这些单元进行详细介绍。
加载单元810,用于利用SIMD指令集中的第一向量指令将数据集中的第i组数据元素加载至处理器的多个向量寄存器,所述多个向量寄存器中的每个向量寄存器包括多个通道,且所述多个通道中的一个通道用于存储所述第i组数据中的一个数据元素,所述多个向量寄存器中的一个向量寄存器的多个通道与所述多个向量寄存器中的另一向量寄存器的多个通道一一对应。
计算单元820,用于并行地计算所述多个向量寄存器的各个对应通道中的数据元素的边界值。
确定单元830,用于根据所述多个向量寄存器的各个对应通道中的数据元素的边界值,确定所述第i组数据元素的边界值。
比较单元840,用于利用条件选择指令将所述第i组数据元素的边界值与所述数据集的全局边界值进行比较,以更新所述全局边界值。
作为一种可能的实现方式,所述确定单元830还用于:在将所述数据集中的所有数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;所述比较单元840还用于:如果所述目标边界值属于所述数据集的第I组数据元素,则将所述第I组数据元素中的每个数据元素分别与所述目标边界值进行比较,得到所述目标边界值为所述第I组数据元素中的第k个数据元素;所述确定单元830还用于确定所述目标边界值的索引为(I-1)*m+k,其中,m为一个数据元素组中的数据元素的数量。
作为一种可能的实现方式,所述数据集包括n组数据元素以及除所述n组数据元素之外的p个数据元素,所述第i组数据元素为所述n组数据元素中的一组数据元素,其中,p小于一个数据元素组中的数据元素的数量m,所述比较单元840还用于:在将所述n组数据元素遍历完之后,将所述p个数据元素中的每个数据元素与所述数据集的全局边界值进行比较,以更新所述全局边界值。
作为一种可能的实现方式,所述确定单元830还用于:在将所述n组数据元素以及所述p个数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;如果所述目标边界值为所述p个数据元素中的第q个数据元素,则确定所述目标边界值的索引为n*m+q。
作为一种可能的实现方式,所述处理器包括目标向量寄存器,所述目标向量寄存器包括多个通道,且所述目标向量寄存器的所述多个通道用于存储所述多个向量寄存器的各个对应通道中的数据元素的边界值,所述确定单元830用于:利用第二向量指令计算所述目标向量寄存器的各个通道中的数据元素的边界值,以得到所述第i组数据元素的边界值。
作为一种可能的实现方式,所述条件选择指令为CSEL指令。
作为一种可能的实现方式,所述第一向量指令为LD1指令。
图9是本申请实施例提供的另一种处理数据的装置的结构示意图。该装置90可用于实现上述方法实施例中描述的方法。装置90可以是计算机或任意类型的电子设备。
装置90可以包括存储器92和处理器94。存储器92可用于存储指令。控制器94可用于根据存储器92中存储的指令,执行前文任一实施例描述的方法。
该处理器94可以是通用处理器或者专用处理器。例如,该处理器可以为中央处理单元(central processing unit,CPU)。或者,该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例还提供一种机器可读存储介质,用于存储程序。该计算机可读存储介质可应用于本申请实施例提供的终端设备或网络设备中,并且该程序使得计算机执行本申请各个实施例中的由终端设备或网络设备执行的方法。
本申请实施例还提供一种计算机程序产品。该计算机程序产品包括程序。该计算机程序产品可应用于本申请实施例提供的终端设备或网络设备中,并且该程序使得计算机执行本申请各个实施例中的由终端设备或网络设备执行的方法。
本申请实施例还提供一种计算机程序。该计算机程序可应用于本申请实施例提供的终端设备或网络设备中,并且该计算机程序使得计算机执行本申请各个实施例中的由终端设备或网络设备执行的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种处理数据的方法,其特征在于,所述方法包括:
利用单指令多数据SIMD指令集中的第一向量指令将数据集中的第i组数据元素加载至处理器的多个向量寄存器,所述多个向量寄存器中的每个向量寄存器包括多个通道,且所述多个通道中的一个通道用于存储所述第i组数据中的一个数据元素,所述多个向量寄存器中的一个向量寄存器的多个通道与所述多个向量寄存器中的另一向量寄存器的多个通道一一对应;
并行地计算所述多个向量寄存器的各个对应通道中的数据元素的边界值;
根据所述多个向量寄存器的各个对应通道中的数据元素的边界值,确定所述第i组数据元素的边界值;
利用条件选择指令将所述第i组数据元素的边界值与所述数据集的全局边界值进行比较,以更新所述全局边界值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述数据集中的所有数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;
如果所述目标边界值属于所述数据集的第I组数据元素,则将所述第I组数据元素中的每个数据元素分别与所述目标边界值进行比较,得到所述目标边界值为所述第I组数据元素中的第k个数据元素;
确定所述目标边界值的索引为(I-1)*m+k,其中,m为一个数据元素组中的数据元素的数量。
3.根据权利要求1所述的方法,其特征在于,所述数据集包括n组数据元素以及除所述n组数据元素之外的p个数据元素,所述第i组数据元素为所述n组数据元素中的一组数据元素,其中,p小于一个数据元素组中的数据元素的数量m,
所述方法还包括:
在将所述n组数据元素遍历完之后,将所述p个数据元素中的每个数据元素与所述数据集的全局边界值进行比较,以更新所述全局边界值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在将所述n组数据元素以及所述p个数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;
如果所述目标边界值为所述p个数据元素中的第q个数据元素,则确定所述目标边界值的索引为n*m+q。
5.根据权利要求1所述的方法,其特征在于,所述处理器包括目标向量寄存器,所述目标向量寄存器包括多个通道,且所述目标向量寄存器的所述多个通道用于存储所述多个向量寄存器的各个对应通道中的数据元素的边界值,
所述根据所述多个向量寄存器的各个对应通道中的数据元素的边界值,确定所述第i组数据元素的边界值,包括:
利用第二向量指令计算所述目标向量寄存器的各个通道中的数据元素的边界值,以得到所述第i组数据元素的边界值。
6.根据权利要求1所述的方法,其特征在于,所述条件选择指令为CSEL指令。
7.根据权利要求1所述的方法,其特征在于,所述第一向量指令为LD1指令。
8.一种处理数据的装置,其特征在于,所述装置包括:
加载单元,用于利用单指令多数据SIMD指令集中的第一向量指令将数据集中的第i组数据元素加载至处理器的多个向量寄存器,所述多个向量寄存器中的每个向量寄存器包括多个通道,且所述多个通道中的一个通道用于存储所述第i组数据中的一个数据元素,所述多个向量寄存器中的一个向量寄存器的多个通道与所述多个向量寄存器中的另一向量寄存器的多个通道一一对应;
计算单元,用于并行地计算所述多个向量寄存器的各个对应通道中的数据元素的边界值;
确定单元,用于根据所述多个向量寄存器的各个对应通道中的数据元素的边界值,确定所述第i组数据元素的边界值;
比较单元,用于利用条件选择指令将所述第i组数据元素的边界值与所述数据集的全局边界值进行比较,以更新所述全局边界值。
9.根据权利要求8所述的装置,其特征在于,
所述确定单元还用于:在将所述数据集中的所有数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;
所述比较单元还用于:如果所述目标边界值属于所述数据集的第I组数据元素,则将所述第I组数据元素中的每个数据元素分别与所述目标边界值进行比较,得到所述目标边界值为所述第I组数据元素中的第k个数据元素;
所述确定单元还用于:确定所述目标边界值的索引为(I-1)*m+k,其中,m为一个数据元素组中的数据元素的数量。
10.根据权利要求8所述的装置,其特征在于,所述数据集包括n组数据元素以及除所述n组数据元素之外的p个数据元素,所述第i组数据元素为所述n组数据元素中的一组数据元素,其中,p小于一个数据元素组中的数据元素的数量m,
所述比较单元还用于:在将所述n组数据元素遍历完之后,将所述p个数据元素中的每个数据元素与所述数据集的全局边界值进行比较,以更新所述全局边界值。
11.根据权利要求10所述的装置,其特征在于,所述确定单元还用于:
在将所述n组数据元素以及所述p个数据元素遍历完之后,将更新后的所述全局边界值确定为所述数据集的目标边界值;
如果所述目标边界值为所述p个数据元素中的第q个数据元素,则确定所述目标边界值的索引为n*m+q。
12.根据权利要求8所述的装置,其特征在于,所述处理器包括目标向量寄存器,所述目标向量寄存器包括多个通道,且所述目标向量寄存器的所述多个通道用于存储所述多个向量寄存器的各个对应通道中的数据元素的边界值,
所述确定单元用于:
利用第二向量指令计算所述目标向量寄存器的各个通道中的数据元素的边界值,以得到所述第i组数据元素的边界值。
13.根据权利要求8所述的装置,其特征在于,所述条件选择指令为CSEL指令。
14.根据权利要求8所述的装置,其特征在于,所述第一向量指令为LD1指令。
15.一种处理数据的装置,其特征在于,包括:
存储器,用于存储指令;
处理器,用于执行所述存储器中存储的指令,以执行如权利要求1-7中任一项所述的方法。
16.一种设备可读存储介质,其特征在于,其上存储有用于执行如权利要求1-7中任一项所述的方法的指令。
CN202210776138.5A 2022-07-04 2022-07-04 处理数据的方法、装置及设备可读存储介质 Active CN114840255B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210776138.5A CN114840255B (zh) 2022-07-04 2022-07-04 处理数据的方法、装置及设备可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210776138.5A CN114840255B (zh) 2022-07-04 2022-07-04 处理数据的方法、装置及设备可读存储介质

Publications (2)

Publication Number Publication Date
CN114840255A true CN114840255A (zh) 2022-08-02
CN114840255B CN114840255B (zh) 2022-09-27

Family

ID=82574166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210776138.5A Active CN114840255B (zh) 2022-07-04 2022-07-04 处理数据的方法、装置及设备可读存储介质

Country Status (1)

Country Link
CN (1) CN114840255B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102804135A (zh) * 2009-06-05 2012-11-28 Arm有限公司 用于处理向量指令的数据处理设备和方法
CN104050230A (zh) * 2013-03-15 2014-09-17 英特尔公司 使用simd指令集架构查找大数据集中最小和最大值的快速方法
CN107690618A (zh) * 2015-06-26 2018-02-13 英特尔公司 用于提供向量紧缩直方图功能的方法、装置、指令和逻辑
CN108369509A (zh) * 2015-12-21 2018-08-03 英特尔公司 用于基于通道的跨步分散操作的指令和逻辑
CN110321161A (zh) * 2019-06-26 2019-10-11 中国人民解放军国防科技大学 使用simd指令的向量函数快速查表法、系统及介质
CN111752606A (zh) * 2019-03-27 2020-10-09 英特尔公司 用于对多个数据元素值执行约简操作的方法和装置
CN111984316A (zh) * 2019-05-24 2020-11-24 德州仪器公司 用于在处理器中比较源数据的方法和设备
CN112384748A (zh) * 2018-05-15 2021-02-19 轻物质公司 光子处理系统和方法
CN114566178A (zh) * 2022-03-04 2022-05-31 太原科技大学 一种基于自学习复数卷积神经网络的鲁棒性语音增强方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102804135A (zh) * 2009-06-05 2012-11-28 Arm有限公司 用于处理向量指令的数据处理设备和方法
CN104050230A (zh) * 2013-03-15 2014-09-17 英特尔公司 使用simd指令集架构查找大数据集中最小和最大值的快速方法
CN107690618A (zh) * 2015-06-26 2018-02-13 英特尔公司 用于提供向量紧缩直方图功能的方法、装置、指令和逻辑
CN108369509A (zh) * 2015-12-21 2018-08-03 英特尔公司 用于基于通道的跨步分散操作的指令和逻辑
CN112384748A (zh) * 2018-05-15 2021-02-19 轻物质公司 光子处理系统和方法
CN111752606A (zh) * 2019-03-27 2020-10-09 英特尔公司 用于对多个数据元素值执行约简操作的方法和装置
CN111984316A (zh) * 2019-05-24 2020-11-24 德州仪器公司 用于在处理器中比较源数据的方法和设备
CN110321161A (zh) * 2019-06-26 2019-10-11 中国人民解放军国防科技大学 使用simd指令的向量函数快速查表法、系统及介质
CN114566178A (zh) * 2022-03-04 2022-05-31 太原科技大学 一种基于自学习复数卷积神经网络的鲁棒性语音增强方法

Also Published As

Publication number Publication date
CN114840255B (zh) 2022-09-27

Similar Documents

Publication Publication Date Title
CN109522254B (zh) 运算装置及方法
WO2017185391A1 (zh) 一种用于执行卷积神经网络训练的装置和方法
CN204945992U (zh) 一种处理器
CN109308191B (zh) 分支预测方法及装置
WO2020199058A1 (zh) 分支指令的处理方法、分支预测器及处理器
US20140025932A1 (en) Processor, information processing device, and control method of processor
US11636175B2 (en) Selection of Pauli strings for Variational Quantum Eigensolver
EP3444758B1 (en) Discrete data representation-supporting apparatus and method for back-training of artificial neural network
US11442727B2 (en) Controlling prediction functional blocks used by a branch predictor in a processor
CN114840255B (zh) 处理数据的方法、装置及设备可读存储介质
JP2020135549A (ja) 演算処理装置、情報処理装置および演算処理方法
JP4141112B2 (ja) プロセッサおよびプロセッサシステム
US10042813B2 (en) SIMD K-nearest-neighbors implementation
CN112579166B (zh) 一种多级分支预测器跳过训练标识的确定方法及装置
US20210012192A1 (en) Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program
US11010170B2 (en) Arithmetic processing apparatus which replaces values for future branch prediction upon wrong branch prediction
CN113853581A (zh) 具有用于分支预测的微分支目标缓冲器的处理装置
JP5206385B2 (ja) バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム
CN116187458B (zh) 量子电路处理方法、装置及电子设备
CN116187473B (zh) 联邦学习方法、装置、电子设备和计算机可读存储介质
US20210073666A1 (en) Computer-readable recording medium recording learning program and learning method
US11487545B2 (en) Processor branch prediction circuit employing back-invalidation of prediction cache entries based on decoded branch instructions and related methods
CN115480825A (zh) 数据处理方法、装置及可读存储介质
CN110097181B (zh) 用于执行人工神经网络正向运算的装置和方法
JPH10171653A (ja) 情報処理装置の分岐予測方式及びそれを用いた装置

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