CN115718622A - 一种arm架构下的数据处理方法、装置及电子设备 - Google Patents
一种arm架构下的数据处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115718622A CN115718622A CN202211493394.XA CN202211493394A CN115718622A CN 115718622 A CN115718622 A CN 115718622A CN 202211493394 A CN202211493394 A CN 202211493394A CN 115718622 A CN115718622 A CN 115718622A
- Authority
- CN
- China
- Prior art keywords
- data processing
- data
- thread
- sub
- architecture
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Advance Control (AREA)
Abstract
本申请提供了一种ARM架构下的数据处理方法、装置及电子设备,ARM架构包括多个寄存器,ARM架构下的数据处理方法包括:根据寄存器的数量和预设线程创建算法,确定多个数据处理线程,并为每个数据处理线程分配一个对应的子运算任务;针对于每个数据处理线程,利用数据处理线程,对与数据处理线程相对应的子运算任务按照预设线程运算算法进行运算处理,得到数据处理线程对应的子处理结果;确定待处理数据元素对应的一个目标处理结果。本申请实现了能够在ARM架构下通过多个数据处理线程来并行处理待处理数据元素,使得ARM架构在能够实现同X86架构一样的对数据进行并行运算的能力的同时,还能够提高处理效率,简化处理过程。
Description
技术领域
本申请涉及计算机技术领域,尤其是涉及一种ARM架构下的数据处理方法、装置及电子设备。
背景技术
高性能服务器以及计算机领域,主流采用的仍然是X86架构处理器,X86架构的处理器是复杂指令集架构,主要采用单指令多数据运算单元(single instruction multipledata,SIMD),且SIMD可以帮助X86架构理器实现并行处理数据,使得X86架构能够一次性获得所有操作数据来进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。
然而,在现有技术中,X86架构由于架构的原因,需要依靠较高的位数才能够实现数据的运算和处理,而ARM架构中的ARM处理器使用的是众核架构,结构简单,且功耗非常低,但ARM架构的位数有限,因此,无法实现同X86架构一样的对数据的并行运算。
发明内容
有鉴于此,本申请的目的在于提供一种ARM架构下的数据处理方法、装置及电子设备,实现了能够在ARM架构下通过多个数据处理线程来并行处理待处理数据元素,使得ARM架构在能够实现同X86架构一样的对数据进行并行运算的能力的同时,还能够提高处理效率,简化处理过程。
本申请实施例提供了一种ARM架构下的数据处理方法,所述ARM架构下的数据处理方法包括:
进一步的,通过以下方式确定所述寄存器的数量;
根据X86架构中单指令多数据流单元的第一位数和ARM架构中寄存器的第二位数,确定阈值数量,并将所述寄存器的数量确定为大于等于所述阈值数量。
进一步的,所述ARM架构中的寄存器为存储有相同数据类型的NEON单元。
进一步的,所述基于各个所述数据处理线程对应的各个所述子处理结果,确定所述待处理数据元素对应的一个目标处理结果,包括:
将各个数据处理线程对应的各个子处理结果按照预设子线程汇总算法进行汇总,确定所述待处理数据元素对应的一个目标处理结果。
进一步的,所述预设线程创建算法为pthread_create函数。
本申请实施例还提供了一种ARM架构下的数据处理装置,所述ARM架构下的数据处理装置包括多个寄存器,所述ARM架构下的数据处理装置包括:
所述ARM架构下的数据处理装置包括多个寄存器,所述ARM架构下的数据处理装置包括:
第一确定模块,用于根据所述寄存器的数量和预设线程创建算法,确定多个数据处理线程,并为每个所述数据处理线程分配一个对应的子运算任务;所述子运算任务是根据待处理数据元素的数量和预设线程运算算法得到的。
生成模块,用于针对于每个所述数据处理线程,利用所述数据处理线程,对与所述数据处理线程相对应的所述子运算任务按照所述预设线程运算算法进行运算处理,得到所述数据处理线程对应的子处理结果。
第二确定模块,用于基于各个所述数据处理线程对应的各个所述子处理结果,确定所述待处理数据元素对应的一个目标处理结果。
进一步的,所述第一确定模块通过以下方式确定所述寄存器的数量;
根据X86架构中单指令多数据流单元的第一位数和ARM架构中寄存器的第二位数,确定阈值数量,并将所述寄存器的数量确定为大于等于所述阈值数量。
所述ARM架构中的寄存器为存储有相同数据类型的NEON单元。
本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的ARM架构下的数据处理方法的步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的ARM架构下的数据处理方法的步骤。
本申请实施例提供的ARM架构下的数据处理方法、装置及电子设备,与现有技术中的X86架构的数据处理方法相比,本申请提供的实施例通过在ARM架构下创建多个寄存器,并通过预设线程创建算法创建在每个寄存器下的数据处理线程,实现了能够在ARM架构下通过多个数据处理线程来并行处理待处理数据元素,使得ARM架构在能够实现同X86架构一样的对数据进行并行运算的能力的同时,还能够提高处理效率,简化处理过程。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种ARM架构下的数据处理方法的流程图之一;
图2示出了本申请实施例所提供的一种ARM架构下的数据处理方法的流程图之二;
图3示出了本申请实施例所提供的一种ARM架构下的数据处理装置的结构示意图;
图4示出了本申请实施例所提供的一种电子设备的结构示意图。
图中:
300-ARM架构下的数据处理装置;310-第一确定模块;320-生成模块;330-第二确定模块;400-电子设备;410-处理器;420-存储器;430-总线。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
首先,对本申请可适用的应用场景进行介绍。本申请可应用于计算机技术领域。
经研究发现,在现有技术中,X86架构由于架构的原因,需要依靠较高的位数才能够实现数据的运算和处理,而ARM架构中的ARM处理器使用的是众核架构,结构简单,且功耗非常低,但ARM架构的位数有限,因此,无法实现同X86架构一样的对数据的并行运算。
且现有技术中,ARM架构普遍应用的寄存器仅仅能够提供128位的矢量操作,即寄存器只有128bit,因此,如何能够提供一种加速的ARM架构,使得ARM架构能够代替X86下SIMD的数据处理能力和运行能力是现代技术急需解决的问题。
基于此,本申请实施例提供了一种ARM架构下的数据处理方法、装置及电子设备,实现了能够在ARM架构下通过多个数据处理线程来并行处理待处理数据元素,使得ARM架构在能够实现同X86架构一样的对数据进行并行运算的能力的同时,还能够提高处理效率,简化处理过程。
请参阅图1,图1为本申请实施例所提供的一种ARM架构下的数据处理方法的流程图之一。如图1中所示,本申请实施例提供的ARM架构下的数据处理方法,包括:
S101、根据所述寄存器的数量和预设线程创建算法,确定多个数据处理线程,并为每个所述数据处理线程分配一个对应的子运算任务;所述子运算任务是根据待处理数据元素的数量和预设线程运算算法得到的。
该步骤中,ARM架构全称为精简指令集(Acorn RISC Machine),是一种低功耗、低成本以及高性能的计算机处理器。
这里,ARM架构所采用的版本可以根据不同应用场景下的不同使用需求来进行自定义的设置,这里,本申请提供的实施例采用的时ARM V7架构,且ARM V7架构会中的寄存器为存储有相同数据类型的ARM架构处理器扩展单元(NEON),然后将存储有相同数据类型的NEON单元的预设数量与本申请实施例中的预设线程创建算法相结合,确定多个与数据处理线程,且数据处理线程的个数与所述存储有相同数据类型的NEON单元的数量相同,且在确定数据处理线程的个数之后,为每个数据处理线程分配一个用于进行数据处理的子运算任务,该子运算任务为对部分待处理数据元素进行对应用场景运算的子任务。
上述中,存储有相同数据类型的NEON单元用于将存储有相同数据类型的NEON单元按照类型进行分类存储,也就是说,在确定了NEON单元的数量之后,也就确定了待处理数据元素的数据类别和待处理数据元素数据类别的数量。
这里,ARMV7架构会中的寄存器为存储有相同数据类型的NEON单元,为了区别于X86架构中的单指令多数据运算单元(single instruction multiple data,SIMD)而建立的。
其中,X86架构中的单指令多数据运算单元(single instruction multipledata,SIMD)能够加速如C和Java等语言的处理,单指令多数据运算单元能够同时对多个数据元素进行并行操作,从而使主机能够快速处理大量数据。
这样,X86架构中的单指令多数据运算单元包括但不限制于为64位紧缩整数指令(MMX)、128位紧缩单精度指令(SSE)以及256位紧缩双精度指令(AVX)等,且上述指令下还包括有各个类型的子指令,而本申请提供的实施例中使用56位的紧缩双精度指令(AVX),由于56位紧缩双精度指令(AVX)可以支持512bit的单指令多数据运算单元操作。
其中,X86架构中除了并行处理数据元素外,还可以使用单指令单数据(singleinstruction single data,SISD)处理单数据的运算,但是处理的过程比较繁琐,现以一个实施例来说明:
步骤1、单指令单数据指令(single instruction single data,SISD)在处理单数据的加法指令时,单指令单数据指令(single instruction single data,SISD)的处理器首先对加法指令进行译码。
步骤2、在译码后,执行部件先访问内存,取得第一个操作数。
步骤3、执行部件再次访问内存,取得第二个操作数。
步骤4、对第一个操作数和第二个操作数进行求和运算。
上述的X86框架在执行单指令单数据(single instruction single data,SISD)处理单数据的运算过程时,过程较为繁琐,而本申请的实施例所提供的ARM架构中的存储有相同数据类型的NEON单元可以一次性获得所有操作数进行运算,即能够实现如X86框架中的单指令多数据运算单元(single instruction multiple data,SIMD)的对待处理数据元素的处理能力,且由于ARM架构的特性,即ARM架构使用放入精简指令集,更接近原子操作,可以实行在对同样数据量的待处理数据元素进行运算处理的情况下,本申请提供的实施例中的ARM架构能够降低待处理数据元素运算过程中的功耗。
上述中,原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何切换到另一个线程的过程,即原子操作,是指每条指令的工作大都可以由处理器在一个操作内完成,但是,复杂指令集中的处理器必须执行3或4个更简单的指令来实现运算,例如,可以命令一个复杂指令集处理器对2个数求和,并把结果存入主内存中,为了完成这个运算,处理器首先从地址1中取得第一个数(操作1),然后从地址2中取得另一个数(操作2),然后求和(操作3),即复杂指令集规模较大,更加复杂,而本申请提供的实施例中的原子操作的操作指令更加的简洁。
因此,ARM架构下的ARM的作业分配单元(big.LITTLE)是一项Intel一时无法复制的系统架构,因此,ARM架构相比X86架构存在架构上的优势。
进一步的,通过以下方式确定所述寄存器的数量;
根据X86架构中单指令多数据流单元的第一位数和ARM架构中寄存器的第二位数,确定阈值数量,并将所述寄存器的数量确定为大于等于所述阈值数量。
这里,假设X86架构中单指令多数据流单元的第一位数为Y,ARM架构中寄存器的第二位数为Z,且将Y除以128确定为X,则阈值数量标表示为X,此时,ARM架构中寄存器的第二位数Z大于等于所述阈值数量X。
其中,寄存器的第二位数为128bit,且单个ARM架构下的处理器可以达到2.0GHz以上的主频以及40核以上的内核数,且由于ARM架构采用了与X86架构不同的架构和指令集,因此ARM处理器组成的系统便于裁剪,结构简单,且功耗非常低,具有广阔的应用前景。
这样,由于ARM架构下的NEON单元只有128bit,因此,本申请提供的实施例需要将多个NEON单元进行并行运行,实现对待处理数据元素的并行处理,以此实现通过具有多个数量的NEON单元的ARM架构可以达到实现X86架构下高位数(如512bit)中SIMD单元同样的数据处理能力,即本申请提供的实施例中的ARM架构下的多个低位数的NEON单元,可以实现X86架构下的高位数SIMD单元的性能。
进一步的,所述预设线程创建算法为线程创建函数(pthread_create)。
这里,预设线程创建算法为与ARM架构下的NEON单元行对应的线程创建算法,包括但不限制为函数pthread_create。
S102、针对于每个所述数据处理线程,利用所述数据处理线程,对与所述数据处理线程相对应的所述子运算任务按照所述预设线程运算算法进行运算处理,得到所述数据处理线程对应的子处理结果。
该步骤中,针对于每个数据处理线程,利用数据处理线程,对与所述数据处理线程相对应的子运算任务按照不用应用场景对应的预设线程运算算法进行运算处理。
这里,预设线程运算算法为NEON单元中常用的内置行数,所述预设线程运算算法包括但不限制于vld1q_f32函数、vst1q_f32vst1q_f32函数、vld2q_f32函数、vst2q_f32函数、vld3q_f32函数、vst3q_f32函数、vld4q_f32函数以及vst4q_f32函数等,上述函数用于处理不同类型的运算处理过程。
S103、基于各个所述数据处理线程对应的各个所述子处理结果,确定所述待处理数据元素对应的一个目标处理结果。
该步骤中,在确定了各个数据处理线程对应的各个所述子处理结果之后,将各个数据处理线程对应的各个所述子处理结果按照不同的应用场景下的汇总要求进行不同类型的汇总,进而确定待处理数据元素对应的唯一的一个目标处理结果。
本申请实施例提供的ARM架构下的数据处理方法,与现有技术相比,本申请提供的实施例通过在ARM架构下创建多个寄存器,并通过预设线程创建算法创建在每个寄存器下的数据处理线程,实现了能够在ARM架构下通过多个数据处理线程来并行处理待处理数据元素,使得ARM架构在能够实现同X86架构一样的对数据进行并行运算的能力的同时,还能够提高处理效率,简化处理过程,由此可以,本申请提供的实施例中的ARM架构更适合于待处理数据元素密集型的运算处理。
请参阅图2,图2为本申请另一种ARM架构下的数据处理方法的流程图之二。如图2中所示,本申请实施例提供的ARM架构下的数据处理方法,包括以下步骤:
S201、根据所述寄存器的数量和预设线程创建算法,确定多个数据处理线程,并为每个所述数据处理线程分配一个对应的子运算任务;所述子运算任务是根据待处理数据元素的数量和预设线程运算算法得到的。
该步骤中,ARM架构全称为Acorn RISC Machine,是一种低功耗、低成本以及高性能的计算机处理器。
这里,ARM架构所采用的版本可以根据不同应用场景下的不同使用需求来进行自定义的设置,这里,本申请提供的实施例采用的时ARM V7架构,且ARM V7架构会中的寄存器为存储有相同数据类型的NEON单元,然后将存储有相同数据类型的NEON单元的预设数量与本申请实施例中的预设线程创建算法相结合,确定多个与数据处理线程,且数据处理线程的个数与所述存储有相同数据类型的NEON单元的数量相同,且在确定数据处理线程的个数之后,为每个数据处理线程分配一个用于进行数据处理的子运算任务,该子运算任务为对部分待处理数据元素进行对应用场景运算的子任务。
上述中,存储有相同数据类型的NEON单元用于将存储有相同数据类型的NEON单元按照类型进行分类存储,也就是说,在确定了NEON单元的数量之后,也就确定了待处理数据元素的数据类别和待处理数据元素数据类别的数量。
这里,ARM V7架构会中的寄存器为存储有相同数据类型的NEON单元,为了区别于X86架构中的单指令多数据运算单元(single instruction multiple data,SIMD)而建立的。
其中,X86架构中的单指令多数据运算单元(single instruction multipledata,SIMD)能够加速如C和Java等语言的处理,单指令多数据运算单元能够同时对多个数据元素进行并行操作,从而使主机能够快速处理大量数据。
这样,X86架构中的单指令多数据运算单元包括但不限制于为64位紧缩整数指令(MMX)、128位紧缩单精度指令(SSE)以及256位紧缩双精度指令(AVX)等,且上述指令下还包括有各个类型的子指令,而本申请提供的实施例中使用56位紧缩双精度指令(AVX),由于56位紧缩双精度指令(AVX)可以支持512bit的单指令多数据运算单元操作。
其中,X86架构中除了并行处理数据元素外,还可以使用单指令单数据(singleinstruction single data,SISD)处理单数据的运算,但是处理的过程比较繁琐,现以一个实施例来说明:
步骤1、单指令单数据指令(single instruction single data,SISD)在处理单数据的加法指令时,单指令单数据指令(single instruction single data,SISD)的处理器首先对加法指令进行译码。
步骤2、在译码后,执行部件先访问内存,取得第一个操作数。
步骤3、执行部件再次访问内存,取得第二个操作数。
步骤4、对第一个操作数和第二个操作数进行求和运算。
上述的X86框架在执行单指令单数据(single instruction single data,SISD)处理单数据的运算过程时,过程较为繁琐,而本申请的实施例所提供的ARM架构中的存储有相同数据类型的NEON单元可以一次性获得所有操作数进行运算,即能够实现如X86框架中的单指令多数据运算单元(single instruction multiple data,SIMD)的对待处理数据元素的处理能力,且由于ARM架构的特性,即ARM架构使用放入精简指令集,更接近原子操作,可以实行在对同样数据量的待处理数据元素进行运算处理的情况下,本申请提供的实施例中的ARM架构能够降低待处理数据元素运算过程中的功耗。
上述中,原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何切换到另一个线程的过程,即原子操作,是指每条指令的工作大都可以由处理器在一个操作内完成,但是,复杂指令集中的处理器必须执行3或4个更简单的指令来实现运算,例如,可以命令一个复杂指令集处理器对2个数求和,并把结果存入主内存中,为了完成这个运算,处理器首先从地址1中取得第一个数(操作1),然后从地址2中取得另一个数(操作2),然后求和(操作3),即复杂指令集规模较大,更加复杂,而本申请提供的实施例中的原子操作的操作指令更加的简洁。
因此,ARM架构下的ARM的作业分配单元(big.LITTLE)是一项Intel一时无法复制的系统架构,因此,ARM架构相比X86架构存在架构上的优势。
进一步的,通过以下方式确定所述寄存器的数量;
根据X86架构中单指令多数据流单元的第一位数和ARM架构中寄存器的第二位数,确定阈值数量,并将所述寄存器的数量确定为大于等于所述阈值数量。
这里,假设X86架构中单指令多数据流单元的第一位数为Y,ARM架构中寄存器的第二位数为Z,且将Y除以128确定为X,则阈值数量标表示为X,此时,ARM架构中寄存器的第二位数Z大于等于所述阈值数量X。
其中,寄存器的第二位数为128bit,且单个ARM架构下的处理器可以达到2.0GHz以上的主频以及40核以上的内核数,且由于ARM架构采用了与X86架构不同的架构和指令集,因此ARM处理器组成的系统便于裁剪,结构简单,且功耗非常低,具有广阔的应用前景。
这样,由于ARM架构下的NEON单元只有128bit,因此,本申请提供的实施例需要将多个NEON单元进行并行运行,实现对待处理数据元素的并行处理,以此实现通过具有多个数量的NEON单元的ARM架构可以达到实现X86架构下高位数(如512bit)中SIMD单元同样的数据处理能力,即本申请提供的实施例中的ARM架构下的多个低位数的NEON单元,可以实现X86架构下的高位数SIMD单元的性能。
进一步的,所述预设线程创建算法为pthread_create函数。
这里,预设线程创建算法为与ARM架构下的NEON单元行对应的线程创建算法,包括但不限制为pthread_create函数。
S202、针对于每个所述数据处理线程,利用所述数据处理线程,对与所述数据处理线程相对应的所述子运算任务按照所述预设线程运算算法进行运算处理,得到所述数据处理线程对应的子处理结果。
该步骤中,针对于每个数据处理线程,利用数据处理线程,对与所述数据处理线程相对应的子运算任务按照不用应用场景对应的预设线程运算算法进行运算处理。
这里,预设线程运算算法为NEON单元中常用的内置行数,所述预设线程运算算法包括但不限制于vld1q_f32函数、vst1q_f32vst1q_f32函数、vld2q_f32函数、vst2q_f32函数、vld3q_f32函数、vst3q_f32函数、vld4q_f32函数以及vst4q_f32函数等,上述函数用于处理不同类型的运算处理过程。
S203、将各个数据处理线程对应的各个子处理结果按照预设子线程汇总算法进行汇总,确定所述待处理数据元素对应的一个目标处理结果。
该步骤中,在确定了各个数据处理线程对应的各个所述子处理结果之后,将各个数据处理线程对应的各个所述子处理结果按照不同的应用场景下的汇总要求(即不同的预设子线程汇总算法)进行不同类型的汇总,进而确定待处理数据元素对应的唯一的一个目标处理结果。
上述中,预设子线程汇总算法包括但不限制为使用pthread_jion算法进行汇总。
其中,S201至S202的描述可以参照S101至S102的描述,并且能达到相同的技术效果,对此不做赘述。
下面,以一个具体的实施例来说明X86架构与ARM架构的数据处理的过程和区别;
实施例一,X86架构下的单核处理流程,这里,选取X86架构下的E52863处理器,基础主频为2.1GHz:
步骤1、获取待处理数据元素。
步骤2、使用builtin_ia32_loadups256()函数将待处理数据元素写入X86架构下的第一寄存器和第二寄存器。
步骤3、使用builtin_muips256()函数将第一寄存器和第二寄存器内的部分待处理数据元素分别进行对应的点乘操作,然后将对应的点乘结果存储进第三寄存器。
步骤4、用builtin_storeups256()函数将第三寄存器内的点乘结果进行汇总,然后输出目标结果。
实施例二,ARM架构下的单核处理流程,这里,选取ARM架构下的Qualcomm Centriq2434,40核处理器,基础主频2.3GHz:
步骤1、构建与实施例中所述X86架构中SIMD位数相匹配的数量的NEON单元,如SIMD位数为512位数,则确定ARM架构的NEON单元的数量为512/216,为4个,并对4个NEON单元中的待处理数据元素进行向量化表示。
步骤2、使用pthread_create函数创建多个数据处理线程。
步骤3、针对于每个数据处理线程,使用vmulq_f32()函数对寄存器中数据做矩阵乘运算,并存入NEON单元,等待所有数据处理线程运行完成。
步骤4、使用pthread_join对所有数据处理线程进行汇总,确定待处理数据元素对应的一个目标处理结果。
本申请实施例提供的ARM架构下的数据处理方法,与现有技术相比,本申请提供的实施例通过在ARM架构下创建多个寄存器,并通过预设线程创建算法创建在每个寄存器下的数据处理线程,实现了能够在ARM架构下通过多个数据处理线程来并行处理待处理数据元素,使得ARM架构在能够实现同X86架构一样的对数据进行并行运算的能力的同时,还能够提高处理效率,简化处理过程,由此可以,本申请提供的实施例中的ARM架构更适合于待处理数据元素密集型的运算处理。
请参阅图3,图3为本申请实施例所提供的一种ARM架构下的数据处理装置的结构示意图。如图3中所示,所述ARM架构下的数据处理装置300包括:
第一确定模块310,用于根据所述寄存器的数量和预设线程创建算法,确定多个数据处理线程,并为每个所述数据处理线程分配一个对应的子运算任务;所述子运算任务是根据待处理数据元素的数量和预设线程运算算法得到的。
进一步的,所述预设线程创建算法为pthread_create函数。
进一步的,所述第一确定模块310通过以下方式确定所述寄存器的数量;
根据X86架构中单指令多数据流单元的第一位数和ARM架构中寄存器的第二位数,确定阈值数量,并将所述寄存器的数量确定为大于等于所述阈值数量。
进一步的,所述第一确定模块310中所述ARM架构中的寄存器存储有相同数据类型的NEON单元。
生成模块320,用于针对于每个所述数据处理线程,利用所述数据处理线程,对与所述数据处理线程相对应的所述子运算任务按照所述预设线程运算算法进行运算处理,得到所述数据处理线程对应的子处理结果。
第二确定模块330,用于基于各个所述数据处理线程对应的各个所述子处理结果,确定所述待处理数据元素对应的一个目标处理结果。
进一步的,所述第二确定模块330,具体用于:
将各个数据处理线程对应的各个子处理结果按照预设子线程汇总算法进行汇总,确定所述待处理数据元素对应的一个目标处理结果。
本申请实施例提供的ARM架构下的数据处理装置300,与现有技术相比,本申请提供的实施例通过在ARM架构下创建多个寄存器,并通过预设线程创建算法创建在每个寄存器下的数据处理线程,实现了能够在ARM架构下通过多个数据处理线程来并行处理待处理数据元素,使得ARM架构在能够实现同X86架构一样的对数据进行并行运算的能力的同时,还能够提高处理效率,简化处理过程,由此可以,本申请提供的实施例中的ARM架构更适合于待处理数据元素密集型的运算处理。
请参阅图4,图4为本申请实施例所提供的一种电子设备的结构示意图。如图4中所示,所述电子设备400包括处理器410、存储器420和总线430。
所述存储器420存储有所述处理器410可执行的机器可读指令,当电子设备400运行时,所述处理器410与所述存储器420之间通过总线430通信,所述机器可读指令被所述处理器410执行时,可以执行如上述图1以及图2所示方法实施例中的ARM架构下的数据处理方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1以及图2所示方法实施例中的ARM架构下的数据处理方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种ARM架构下的数据处理方法,其特征在于,所述ARM架构包括多个寄存器,所述ARM架构下的数据处理方法包括:
根据所述寄存器的数量和预设线程创建算法,确定多个数据处理线程,并为每个所述数据处理线程分配一个对应的子运算任务;所述子运算任务是根据待处理数据元素的数量和预设线程运算算法得到的;
针对于每个所述数据处理线程,利用所述数据处理线程,对与所述数据处理线程相对应的所述子运算任务按照所述预设线程运算算法进行运算处理,得到所述数据处理线程对应的子处理结果;
基于各个所述数据处理线程对应的各个所述子处理结果,确定所述待处理数据元素对应的一个目标处理结果。
2.根据权利要求1所述的ARM架构下的数据处理方法,其特征在于,通过以下方式确定所述寄存器的数量;
根据X86架构中单指令多数据流单元的第一位数和ARM架构中寄存器的第二位数,确定阈值数量,并将所述寄存器的数量确定为大于等于所述阈值数量。
3.根据权利要求2所述的ARM架构下的数据处理方法,其特征在于,所述ARM架构中的寄存器为存储有相同数据类型的NEON单元。
4.根据权利要求1所述的ARM架构下的数据处理方法,其特征在于,所述基于各个所述数据处理线程对应的各个所述子处理结果,确定所述待处理数据元素对应的一个目标处理结果,包括:
将各个数据处理线程对应的各个子处理结果按照预设子线程汇总算法进行汇总,确定所述待处理数据元素对应的一个目标处理结果。
5.根据权利要求1所述的ARM架构下的数据处理方法,其特征在于,所述预设线程创建算法为pthread_create函数。
6.一种ARM架构下的数据处理装置,其特征在于,所述ARM架构下的数据处理装置包括多个寄存器,所述ARM架构下的数据处理装置包括:
第一确定模块,用于根据所述寄存器的数量和预设线程创建算法,确定多个数据处理线程,并为每个所述数据处理线程分配一个对应的子运算任务;所述子运算任务是根据待处理数据元素的数量和预设线程运算算法得到的;
生成模块,用于针对于每个所述数据处理线程,利用所述数据处理线程,对与所述数据处理线程相对应的所述子运算任务按照所述预设线程运算算法进行运算处理,得到所述数据处理线程对应的子处理结果;
第二确定模块,用于基于各个所述数据处理线程对应的各个所述子处理结果,确定所述待处理数据元素对应的一个目标处理结果。
7.根据权利要求6的所述ARM架构下的数据处理装置,其特征在于,所述第一确定模块通过以下方式确定所述寄存器的数量;
根据X86架构中单指令多数据流单元的第一位数和ARM架构中寄存器的第二位数,确定阈值数量,并将所述寄存器的数量确定为大于等于所述阈值数量。
8.根据权利要求6的所述ARM架构下的数据处理装置,其特征在于,所述ARM架构中的寄存器存储有相同数据类型的NEON单元。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1-5任一所述的ARM架构下的数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-5任一所述的ARM架构下的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211493394.XA CN115718622B (zh) | 2022-11-25 | 2022-11-25 | 一种arm架构下的数据处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211493394.XA CN115718622B (zh) | 2022-11-25 | 2022-11-25 | 一种arm架构下的数据处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115718622A true CN115718622A (zh) | 2023-02-28 |
CN115718622B CN115718622B (zh) | 2023-10-13 |
Family
ID=85256531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211493394.XA Active CN115718622B (zh) | 2022-11-25 | 2022-11-25 | 一种arm架构下的数据处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115718622B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737390A (zh) * | 2023-07-06 | 2023-09-12 | 摩尔线程智能科技(北京)有限责任公司 | 原子操作的处理方法、装置、电子设备和存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547695A (zh) * | 2001-08-27 | 2004-11-17 | ض� | 具有基于活动线程号的寄存器分配的多线程微处理器 |
CN1570855A (zh) * | 2004-04-30 | 2005-01-26 | 浙江大学 | Arm处理器架构的微内核设计方法 |
CN104919416A (zh) * | 2012-12-29 | 2015-09-16 | 英特尔公司 | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 |
CN108351781A (zh) * | 2015-12-24 | 2018-07-31 | 英特尔公司 | 用于利用monitor和mwait架构的用户级线程同步的方法和设备 |
CN110275732A (zh) * | 2019-05-28 | 2019-09-24 | 上海交通大学 | 在ARMv8处理器上质点网格法的并行实现方法 |
US20200104164A1 (en) * | 2018-09-28 | 2020-04-02 | Intel Corporation | Memory system architecture for multi-threaded processors |
CN111240457A (zh) * | 2020-01-17 | 2020-06-05 | 济南浪潮高新科技投资发展有限公司 | 一种基于risc-v的动态功耗管理方法 |
CN112395093A (zh) * | 2020-12-04 | 2021-02-23 | 龙芯中科(合肥)技术有限公司 | 多线程数据处理方法、装置、电子设备及可读存储介质 |
CN114691474A (zh) * | 2020-12-29 | 2022-07-01 | 华为技术有限公司 | 程序检测方法及装置 |
CN115328547A (zh) * | 2022-07-29 | 2022-11-11 | 安谋科技(中国)有限公司 | 一种数据处理方法、电子设备及存储介质 |
-
2022
- 2022-11-25 CN CN202211493394.XA patent/CN115718622B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547695A (zh) * | 2001-08-27 | 2004-11-17 | ض� | 具有基于活动线程号的寄存器分配的多线程微处理器 |
CN1570855A (zh) * | 2004-04-30 | 2005-01-26 | 浙江大学 | Arm处理器架构的微内核设计方法 |
CN104919416A (zh) * | 2012-12-29 | 2015-09-16 | 英特尔公司 | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 |
CN108351781A (zh) * | 2015-12-24 | 2018-07-31 | 英特尔公司 | 用于利用monitor和mwait架构的用户级线程同步的方法和设备 |
US20200104164A1 (en) * | 2018-09-28 | 2020-04-02 | Intel Corporation | Memory system architecture for multi-threaded processors |
CN110275732A (zh) * | 2019-05-28 | 2019-09-24 | 上海交通大学 | 在ARMv8处理器上质点网格法的并行实现方法 |
CN111240457A (zh) * | 2020-01-17 | 2020-06-05 | 济南浪潮高新科技投资发展有限公司 | 一种基于risc-v的动态功耗管理方法 |
CN112395093A (zh) * | 2020-12-04 | 2021-02-23 | 龙芯中科(合肥)技术有限公司 | 多线程数据处理方法、装置、电子设备及可读存储介质 |
CN114691474A (zh) * | 2020-12-29 | 2022-07-01 | 华为技术有限公司 | 程序检测方法及装置 |
CN115328547A (zh) * | 2022-07-29 | 2022-11-11 | 安谋科技(中国)有限公司 | 一种数据处理方法、电子设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737390A (zh) * | 2023-07-06 | 2023-09-12 | 摩尔线程智能科技(北京)有限责任公司 | 原子操作的处理方法、装置、电子设备和存储介质 |
CN116737390B (zh) * | 2023-07-06 | 2024-03-22 | 摩尔线程智能科技(北京)有限责任公司 | 原子操作的处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115718622B (zh) | 2023-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lemire | Fast random integer generation in an interval | |
Thakkur et al. | Internet streaming SIMD extensions | |
RU2263947C2 (ru) | Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных | |
CN109661647B (zh) | 数据处理装置和方法 | |
CN112099852A (zh) | 可变格式、可变稀疏矩阵乘法指令 | |
US9542154B2 (en) | Fused multiply add operations using bit masks | |
KR101105474B1 (ko) | 범위 검출을 수행하기 위한 명령어 및 로직 | |
EP1623307A2 (en) | Processor reduction unit for accumulation of multiple operands with or without saturation | |
EP1735694A2 (en) | Processor having parallel vector multiply and reduce operations with sequential semantics | |
JP4349265B2 (ja) | プロセッサ | |
EP2972782A1 (en) | Path profiling using hardware and software combination | |
TW201331828A (zh) | 降低於一處理器之積和熔加運算(fma)單元中之功率消耗的技術 | |
JP2005332361A (ja) | プログラム命令圧縮装置および方法 | |
Yoshida et al. | Sparc64 XIfx: Fujitsu's next-generation processor for high-performance computing | |
KR20170097618A (ko) | 큰 정수 산술 연산을 수행하기 위한 방법 및 장치 | |
CN115718622B (zh) | 一种arm架构下的数据处理方法、装置及电子设备 | |
TW201721409A (zh) | 向量運算指令 | |
US20240311204A1 (en) | Techniques for balancing workloads when parallelizing multiply-accumulate computations | |
WO2022161013A1 (zh) | 处理器装置及其指令执行方法、计算设备 | |
Li et al. | Efficient AES implementation on Sunway TaihuLight supercomputer: A systematic approach | |
WO2023142524A1 (zh) | 指令处理方法、装置、芯片、电子设备以及存储介质 | |
WO2014105187A1 (en) | Leading change anticipator logic | |
CN116917859A (zh) | 带有可变长度指令的并行解码指令集合计算机架构 | |
CN112230993A (zh) | 数据处理方法及装置、电子设备 | |
JP2022523620A (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 |