本申请实施例提供了一种数据操作位宽的扩展方法及装置,涉及计算机技术领域,包括:读取矢量宽度控制寄存器中的可变矢量信息,基于可变矢量信息确定扩展后的最大数据操作位宽。若待处理数据的宽度大于原始数据操作位宽,且小于等于最大数据操作位宽,则基于待处理数据的宽度和单个运算单元的位宽,确定用于处理待处理数据的运算单元的目标个数。将目标个数减一后写入运算单元控制寄存器,以控制启动目标个数的运算单元,对待处理数据进行处理。利用新定义两个控制寄存器实现在未改变原有模式的前提下进行可变矢量扩展,从原始数据操作位宽扩展到更大的数据操作位宽,在不需要指令集扩展以及代码重写的情况下,提高了数据处理的并行化能力。并行化能力。并行化能力。
【技术实现步骤摘要】
一种数据操作位宽的扩展方法及装置
[0001]本申请实施例涉及计算机
,尤其涉及一种数据操作位宽的扩展方法及装置。
技术介绍
[0002]传统的通用处理器都是标量处理器,一条指令执行只得到一个数据结果。但对于图像、信号处理等应用,存在大量的数据并行计算操作,这个时候,提高数据的并行性从而提高运算的性能就显得尤为重要。因此,单指令流多数据技术(Single Instruction Multiple Data,简称SIMD)应运而生。
[0003]MIPS SIMD Architecture(MSA),是MIPS科技公司在MIPS64 R5中实现的矢量指令集模块,在其P5600 SoC中第一次实现。MSA旨在通过启用通用编译器支持来加速许多计算密集型应用程序。
[0004]随着处理器应用领域的不断扩大,对数据处理的并行化能力及性能的需求也在不断提高,硬件架构的并行度升级似乎成为一种必然趋势。然而,MSA的数据操作位宽是固定的,即128bit。那么,每次硬件对并行度的扩展都意味着MSA指令集的扩展以及代码的重写,这将增加更多额外劳动,耗时费力且效率低。
技术实现思路
[0005]本申请实施例提供了一种数据操作位宽的扩展方法及装置,用于降低扩展数据处理的并行化能力的成本和耗时,提高扩展效率。
[0006]一方面,本申请实施例提供了一种数据操作位宽的扩展方法,包括:
[0007]获取待处理数据,并读取矢量宽度控制寄存器中的可变矢量信息,并基于所述可变矢量信息确定扩展后的最大数据操作位宽;
[0008]若所述待处理数据的宽度大于扩展前的原始数据操作位宽,且小于等于所述最大数据操作位宽,则基于所述待处理数据的宽度和单个运算单元的位宽,确定用于处理所述待处理数据的运算单元的目标个数;
[0009]将所述目标个数减一后写入运算单元控制寄存器,以控制启动所述目标个数的运算单元,对所述待处理数据进行处理。
[0010]可选地,所述运算单元的位宽与所述原始数据操作位宽相同,所述运算单元包括多个算术逻辑单元,所述运算单元至少用于对整数和浮点数进行运算。
[0011]可选地,还包括:
[0012]若所述待处理数据的宽度小于等于所述原始数据操作位宽,则启动一个运算单元,对所述待处理数据进行处理。
[0013]可选地,所述基于所述可变矢量信息确定扩展后的最大数据操作位宽,包括:
[0014]将所述可变矢量信息加一,获得处于可用状态的运算单元的总数量;
[0015]基于所述总数量和单个运算单元的位宽,确定所述最大数据操作位宽。
[0016]可选地,还包括:
[0017]若所述待处理数据的宽度大于所述最大数据操作位宽,则将所述运算单元的总数量减一后写入所述运算单元控制寄存器,以控制启动所述总数量的运算单元,对所述待处理数据中所述最大数据操作位宽的数据进行处理;
[0018]针对所述待处理数据中的剩余数据,基于所述剩余数据与所述最大数据操作位宽和所述原始数据操作位宽之间的关联关系,选择相应数量的运算单元,对所述剩余数据进行处理,直到所述剩余数据处理完毕。
[0019]可选地,所述运算单元控制寄存器中保存的数值小于等于所述矢量宽度控制寄存器中保存的数值。
[0020]一方面,本申请实施例提供了一种数据操作位宽的扩展装置,包括:
[0021]获取模块,用于获取待处理数据,并读取矢量宽度控制寄存器中的可变矢量信息,并基于所述可变矢量信息确定扩展后的最大数据操作位宽;
[0022]判断模块,用于若所述待处理数据的宽度大于扩展前的原始数据操作位宽,且小于等于所述最大数据操作位宽,则基于所述待处理数据的宽度和单个运算单元的位宽,确定用于处理所述待处理数据的运算单元的目标个数;
[0023]处理模块,用于将所述目标个数减一后写入运算单元控制寄存器,以控制启动所述目标个数的运算单元,对所述待处理数据进行处理。
[0024]可选地,所述运算单元的位宽与所述原始数据操作位宽相同,所述运算单元包括多个算术逻辑单元,所述运算单元至少用于对整数和浮点数进行运算。
[0025]可选地,所述处理模块还用于:
[0026]若所述待处理数据的宽度小于等于所述原始数据操作位宽,则启动一个运算单元,对所述待处理数据进行处理。
[0027]可选地,所述获取模块具体用于:
[0028]将所述可变矢量信息加一,获得处于可用状态的运算单元的总数量;
[0029]基于所述总数量和单个运算单元的位宽,确定所述最大数据操作位宽。
[0030]可选地,所述处理模块还用于:
[0031]若所述待处理数据的宽度大于所述最大数据操作位宽,则将所述运算单元的总数量减一后写入运算单元控制寄存器,以控制启动所述总数量的运算单元,对所述待处理数据中所述最大数据操作位宽的数据进行处理;
[0032]针对所述待处理数据中的剩余数据,基于所述剩余数据与所述最大数据操作位宽和所述原始数据操作位宽之间的关联关系,选择相应数量的运算单元,对所述剩余数据进行处理,直到所述剩余数据处理完毕。
[0033]可选地,所述运算单元控制寄存器中保存的数值小于等于所述矢量宽度控制寄存器中保存的数值。
[0034]一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据操作位宽的扩展方法的步骤。
[0035]一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述
数据操作位宽的扩展方法的步骤。
[0036]本申请实施例中,利用预留的控制寄存器,新定义两个控制寄存器实现在未改变原有128bit模式的前提下进行可变矢量扩展,进而实现从原始数据操作位宽,扩展到更大的数据操作位宽,这样不仅提高了数据处理的并行化能力及性能,同时不需要进行MSA指令集的扩展以及代码的重写,从而降低成本,提高了效率。其次,本申请的方案支持现有二进制代码直接在新的不确定位数的SIMD环境下运行,现有源码通过重新编译可以在新硬件上得到优势,未来扩展位数(比如扩展到512bit或1024bit)不再需要重写/重新编译。新编译的二进制代码,可以在没有扩展的硬件上运行,即实现了双向兼容。
附图说明
[0037]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0038]图1为本申请实施例提供的MSA的软件检测位的示意图;
[0039]图2为本申请实施例提供的MSA的软件检测位的示意图;
[0040]图3为本申请实施例提供的一本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种数据操作位宽的扩展方法,其特征在于,包括:获取待处理数据,并读取矢量宽度控制寄存器中的可变矢量信息,并基于所述可变矢量信息确定扩展后的最大数据操作位宽;若所述待处理数据的宽度大于扩展前的原始数据操作位宽,且小于等于所述最大数据操作位宽,则基于所述待处理数据的宽度和单个运算单元的位宽,确定用于处理所述待处理数据的运算单元的目标个数;将所述目标个数减一后写入运算单元控制寄存器,以控制启动所述目标个数的运算单元,对所述待处理数据进行处理。2.如权利要求1所述的方法,其特征在于,所述运算单元的位宽与所述原始数据操作位宽相同,所述运算单元包括多个算术逻辑单元,所述运算单元至少用于对整数和浮点数进行运算。3.如权利要求2所述的方法,其特征在于,还包括:若所述待处理数据的宽度小于等于所述原始数据操作位宽,则启动一个运算单元,对所述待处理数据进行处理。4.如权利要求1所述的方法,其特征在于,所述基于所述可变矢量信息确定扩展后的最大数据操作位宽,包括:将所述可变矢量信息加一,获得处于可用状态的运算单元的总数量;基于所述总数量和单个运算单元的位宽,确定所述最大数据操作位宽。5.如权利要求4所述的方法,其特征在于,还包括:若所述待处理数据的宽度大于所述最大数据操作位宽,则将所述运算单元的总数量减一后写入所述运算单元控制寄存器,以控制启动所述总数量的运算单元,对所述待处理数据中所述最大数据操作位宽的数据进行处理;针对所述待处理数据中的剩余数据,基于所述剩余数据与所述最大数据操作位宽和所述原始数据操作位宽之间的关联关系,选择相应数量的运算单元,对所述剩余数据进行处理,直到所述剩余数据处理完毕...
【专利技术属性】
技术研发人员:苏运强,张欣悦,安贝贝,
申请(专利权)人:上海芯联芯智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。