CN108733347B - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN108733347B CN108733347B CN201710262673.8A CN201710262673A CN108733347B CN 108733347 B CN108733347 B CN 108733347B CN 201710262673 A CN201710262673 A CN 201710262673A CN 108733347 B CN108733347 B CN 108733347B
- Authority
- CN
- China
- Prior art keywords
- data
- multiplied
- group
- bit width
- multiplier
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例提供了一种数据处理方法及装置,其中,该方法包括:获取第一组待相乘数据及其中每个数据的位宽、第二组待相乘数据及其中每个数据的位宽;通过预设数据合并方式,将第一组待相乘数据中所有数据合并后得到的数据确定为第一乘数,并将第二组待相乘数据中所有数据合并后得到的数据确定为第二乘数;通过预设定点乘法器对第一乘数与第二乘数进行相乘运算,获得乘法结果数据;根据预设数据合并方式、第一组待相乘数据中每个数据的位宽以及第二组待相乘数据中每个数据的位宽,从乘法结果数据中,提取第一组待相乘数据中每个数据与第二组待相乘数据中每个数据相乘的结果。通过本方案可以提高采用定点乘法器的芯片的工作效率、降低成本。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种数据处理方法及装置。
背景技术
近年来,随着多媒体技术、现代机器视觉技术及相关领域的不断发展,数字信号处理的规模越来越大,计算机的计算复杂度也大大增加,微处理器例如DSP(Digital SignalProcessor,数字信号处理器)对于完成运算的芯片的功能和计算性能的要求越来越高。其中,乘法器是芯片中的核心部件之一,乘法器的运算效率已经成为衡量芯片计算性能的一个重要特征,对于芯片的性能、功耗具有重要的影响。
在现代机器视觉技术中,例如图像处理的目标检测技术中所利用的卷积神经网络,是通过卷积核对图像的特征数据进行卷积运算,卷积运算中存在大量的乘法运算,即将卷积核中的多个数据分别与图像的多个特征数据进行乘法运算。现有的乘法运算处理过程,是利用定点乘法器每次进行两个数据的乘法,在被乘数及乘数的数量均很大时,只能通过定点乘法器的串行运算、配合多个定点乘法器的并行运算实现多个数据的乘法。
由于串行运算的处理时间长、并行运算的硬件成本高,并且,定点乘法器的位宽是固定的,存在高位宽的定点乘法器处理低位宽的数据的情况,使得采用定点乘法器的芯片的工作效率低且成本高。
发明内容
本发明实施例的目的在于提供一种数据处理方法及装置,以提高采用定点乘法器的芯片的工作效率、降低成本。具体技术方案如下:
第一方面,本发明实施例提供了一种数据处理方法,所述方法包括:
获得第一组待相乘数据及第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽,其中,所述第一组待相乘数据及所述第二组待相乘数据满足第一位宽条件,所述第一位宽条件为:所述第一组待相乘数据中所有数据合并后的第一位宽小于或等于预设定点乘法器的第一输入端口位宽,所述第二组待相乘数据中所有数据合并后的第二位宽小于或等于所述预设定点乘法器的第二输入端口位宽,所述第一位宽与所述第二位宽的总和小于或等于所述预设定点乘法器的输出位宽;
通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数,其中,所述预设数据合并方式为按序排列所有数据,并根据所述第一组待相乘数据中每个数据的位宽及所述第二组待相乘数据中每个数据的位宽,在每两个数据之间补充满足预设数目的0;
通过所述预设定点乘法器对输入的所述第一乘数与所述第二乘数进行相乘运算,获得乘法结果数据;
根据所述预设数据合并方式、所述第一组待相乘数据中每个数据的位宽以及所述第二组待相乘数据中每个数据的位宽,从所述乘法结果数据中,提取出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的结果。
第二方面,本发明实施例提供了一种数据处理装置,所述装置包括:
输入数据处理单元,用于获得第一组待相乘数据及第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽,其中,所述第一组待相乘数据及所述第二组待相乘数据满足第一位宽条件,所述第一位宽条件为:所述第一组待相乘数据中所有数据合并后的第一位宽小于或等于定点乘法器的第一输入端口位宽,所述第二组待相乘数据中所有数据合并后的第二位宽小于或等于所述定点乘法器的第二输入端口位宽,所述第一位宽与所述第二位宽的总和小于或等于所述定点乘法器的输出位宽;通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数,其中,所述预设数据合并方式为按序排列所有数据,并根据所述第一组待相乘数据中每个数据的位宽及所述第二组待相乘数据中每个数据的位宽,在每两个数据之间补充满足预设数目的0;发送所述第一乘数及所述第二乘数至所述定点乘法器;
定点乘法器,用于对输入数据处理单元发送的所述第一乘数与所述第二乘数进行相乘运算,获得乘法结果数据;输出所述乘法结果数据至输出数据处理单元;
输出数据处理单元,根据所述预设数据合并方式、所述第一组待相乘数据中每个数据的位宽以及所述第二组待相乘数据中每个数据的位宽,从所述乘法结果数据中,提取出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的结果;输出所述相乘的结果。
本发明实施例提供的数据处理方法及装置,通过将需要做乘法运算的两组数据分别进行合并,利用预设定点乘法器可以对合并后的两个数据进行乘法运算,根据合并方式及每个数据的位宽对乘积结果进行拆分,可以得到任意两个相乘的数据的乘积结果,本发明实施例仅通过一次乘法运算便可得到多个乘积结果,提高了用于数据处理的芯片的工作效率;并且,由于只利用一个乘法器便可得到多个乘积结果,降低了用于数据处理的芯片的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的数据处理方法的第一种流程示意图;
图2为本发明实施例的数据处理方法的第二种流程示意图;
图3为本发明实施例的数据处理装置的第一种结构示意图;
图4为本发明实施例的数据处理装置的第二种结构示意图;
图5为本发明实施例的数据处理装置的第三种结构示意图;
图6为本发明实施例中输入数据处理单元的一种具体结构示意图;
图7为本发明实施例中输出数据处理单元的一种具体结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了提高采用定点乘法器的芯片的工作效率、降低成本,本发明实施例提供了一种数据处理方法及装置。
下面首先对本发明实施例所提供的一种数据处理方法进行介绍。
需要说明的是,本发明实施例所提供的一种数据处理方法的执行主体可以为一种微处理器,也可以为CPU(Central Processing Unit,中央处理器),还可以为包含有定点乘法器的芯片的处理装置。其中,可以通过软件实现本发明实施例所提供的一种数据处理方法,也可以通过硬件电路或者逻辑电路实现本发明实施例所提供的一种数据处理方法。需要强调的是,本发明实施例的应用场景可以为图像处理的卷积神经网络,也可以为视觉识别的深度神经网络,当然,所有利用乘法运算的应用场景都适用本发明实施例。
如图1所示,本发明实施例所提供的一种数据处理方法,可以包括如下步骤:
S101,获取第一组待相乘数据、第二组待相乘数据,及第一组待相乘数据中每个数据的位宽、第二组待相乘数据中每个数据的位宽。
其中,第一组待相乘数据及第二组待相乘数据满足第一位宽条件,第一位宽条件为:第一组待相乘数据中所有数据合并后的第一位宽小于或等于预设定点乘法器的第一输入端口位宽,第二组待相乘数据中所有数据合并后的第二位宽小于或等于预设定点乘法器的第二输入端口位宽;其中,第一位宽与第二位宽的总和小于或等于预设定点乘法器的输出位宽。需要保证第一组待相乘数据中的每一个数据与第二组待相乘数据中的每一个数据相乘的结果之间不相交织,即输出的相乘结果中,每两个数据相乘的结果之间不可以出现相互影响的情况。预设定点乘法器为处理器中的定点乘法器,可以是预先选定固化在硬核中的定点乘法器,定点乘法器为只能实现整数与整数相乘,输出整数结果的乘法器,硬核为在芯片中固化,用于专门实现特定功能的电路单元。预设定点乘法器的两个输入端口的位宽可以是相等的,也可以是不相等的,这里不做限定。
可选的,上述第一位宽条件,可以为:第一乘数与第二组待相乘数据中任一数据的位宽之差,小于或等于预设定点乘法器的第一输入端口位宽;第一乘数乘以第二数量减1的积、与第二组待相乘数据中任一数据的位宽之和,小于或等于预设定点乘法器的第二输入端口位宽;其中,第一乘数为第一组待相乘数据中任一数据的位宽与第二组待相乘数据中任一数据的位宽的和、与第一数量的乘积,第一数量为第一组待相乘数据中所有数据的总数量,第二数量为第二组待相乘数据中所有数据的总数量。
具体的,第一组待相乘数据中所有数据的位宽均相等;第二组待相乘数据中所有数据的位宽均相等。
需要说明的是,在实际应用中,为了保证计算的一致性及减小芯片的复杂度,一般将进行运算的两组待相乘数据中每一组待相乘数据的所有数据限定为位宽相等的数据。如果存在某一组待相乘数据中存在位宽不相等的数据,可以先将该组中位宽相等的数据划为一组,得到新的待相乘数据,例如,第一组待相乘数据中有10个位宽为8比特的数据、20个位宽为16比特的数据,则可以将10个位宽为8比特的数据划为为一个第一组待相乘数据,20个位宽为16比特的数据划分为另一个第一组待相乘数据,分别进行计算。
具体的,第一组待相乘数据及第二组待相乘数据满足如公式(1)所示的第一位宽条件。
其中,h1为第一组待相乘数据中任一数据的位宽,h2第二组待相乘数据中任一数据的位宽,m1为第一数量,r1为预设定点乘法器的第一输入端口位宽,(h1+h2)×m1为第一乘数,m2为第二数量,r2为预设定点乘法器的第二输入端口位宽。例如,假设存在两组数据,其中第一组数据中包含两个位宽均为2比特的数据,第二组数据中包含两个位宽均为4比特的数据,预设定点乘法器的两个输入端口位宽均为16比特,通过计算得到第一组数据中任一数据的位宽与第二组数据中任一数据的位宽之和为2+4=6,该和与第一组数据中所有数据的数量的乘积为6×2=12,该乘积与第二组数据中任一数据的位宽之差为12-4=8,小于预设定点乘法器的第一输入端口位宽;第一组数据中任一数据的位宽与第二组数据中任一数据的位宽之和为2+4=6,该和与第一组数据中所有数据的数量的乘积为6×2=12,该乘积与第二组数据中所有数据的总数量减1的乘积为12×(2-1)=12,乘积与第二组数据中任一数据的位宽之和为12+4=16,等于预设定点乘法器的第二输入端口位宽;则可将第一组数据作为第一组待相乘数据,第二组数据作为第二组待相乘数据。再例如,假设存在两组数据,其中第一组数据中包含两个位宽均为4比特的数据,第二组数据中包含两个位宽均为8比特的数据,预设定点乘法器的两个输入端口位宽均为16比特,通过计算得到第一组数据中任一数据的位宽与第二组数据中任一数据的位宽之和为4+8=12,该和与第一组数据中所有数据的数量的乘积为12×2=24,该乘积与第二组数据中任一数据的位宽之差为24-8=16,等于预设定点乘法器的第一输入端口位宽;第一组数据中任一数据的位宽与第二组数据中任一数据的位宽之和为4+8=12,该和与第一组数据中所有数据的数量的乘积为12×2=24,该乘积与第二组数据中所有数据的总数量减1的乘积为24×(2-1)=24,乘积与第二组数据中任一数据的位宽之和为24+8=32,大于预设定点乘法器的第二输入端口位宽;则第一组数据及第二组数据不满足第一位宽条件,所以不可将第一组数据确定为第一组待相乘数据、不可将第二组数据确定为第二组待相乘数据。
需要说明的是,通常情况下,第一组待相乘数据中至少包括两个数据,第二组待相乘数据中至少包括两个数据,并且第一组待相乘数据中的数据与第二组待相乘数据中的数据需要两两作乘法。以图像处理的卷积神经网络为例,由于卷积神经网络是利用卷积核与图像的特征数据进行卷积运算,需要将卷积核里的数据分别与图像的所有特征数据相乘,因此,可以确定卷积核里的所有数据为第一组待相乘数据,图像的所有特征数据为第二组待相乘数据。
在进行乘法运算时,输入的两组待相乘数据中存在一组只有一个数据的情况。针对这种情况,设定第一组待相乘数据中只包含一个数据,第二组待相乘数据中可以包含有多个数据,则对应的第一位宽条件为:第一组待相乘数据中唯一数据的第三位宽小于或等于预设定点乘法器的第一输入端口位宽,第二组待相乘数据中所有数据合并后的第四位宽小于或等于预设定点乘法器的第二输入端口位宽;其中,第三位宽与第四位宽的总和小于或等于预设定点乘法器的输出位宽。需要保证第一组待相乘数据中唯一数据与第二组待相乘数据中的每一个数据相乘的结果之间不相交织,即输出的相乘结果中,每两个数据相乘的结果之间不可以出现相互影响的情况。预设定点乘法器为处理器中的定点乘法器,可以是预先选定固化在硬核中的定点乘法器,定点乘法器为只能实现整数与整数相乘,输出整数结果的乘法器,硬核为在芯片中固化,用于专门实现特定功能的电路单元。预设定点乘法器的两个输入端口的位宽可以是相等的,也可以是不相等的,这里不做限定。
可选的,在第一组待相乘数据中只包含一个数据时,第二组待相乘数据中所有数据的位宽均相等,并且第二组待相乘数据中包括2个数据。
需要说明的是,上述第一位宽条件可以为:第一组待相乘数据中唯一数据的位宽、小于或等于预设定点乘法器的第一输入端口位宽,第二乘积与第一和值的差值、小于或等于预设定点乘法器的第二输入端口位宽;其中,第二乘积为第一组待相乘数据中唯一数据的位宽与第二组待相乘数据中任一数据的位宽的和的两倍、与第三数量的乘积,第三数量为第二组待相乘数据中所有数据的数量,第一和值为第一组待相乘数据中唯一数据的位宽的两倍与第二组待相乘数据中任一数据的位宽相加的和值。
需要说明的是,在实际应用中,为了保证计算的一致性及减小芯片的复杂度,一般将进行运算的第二组待相乘数据中的所有数据限定为位宽相等的数据。如果第二组待相乘数据中存在位宽不相等的数据,可以先将该组中位宽相等的数据划为一组,得到新的待相乘数据。
具体的,在第一组待相乘数据中只包含一个数据时,第一组待相乘数据及第二组待相乘数据满足如公式(2)所示的第二位宽条件。
其中,h3为第一组待相乘数据中唯一数据的位宽,r1为预设定点乘法器的第一输入端口位宽,h4第二组待相乘数据中任一数据的位宽,m3为第三数量,2×(h3+h4)×m3为第二乘积,2×h3+h4为第一和值,r2为预设定点乘法器的第二输入端口位宽。例如,假设存在两组数据,其中第一组数据中包含一个位宽为16比特的数据,第二组数据中包含两个位宽均为2比特的数据,预设定点乘法器的两个输入端口位宽均为38比特,第一组数据的位宽小于预设定点乘法器的第一输入端口位宽;通过计算得到第一组数据中唯一数据的位宽与第二组数据中任一数据的位宽之和为16+2=18,该和的2倍与第二组数据中所有数据的数量的乘积为2×18×2=72,第一组数据中唯一数据的位宽的两倍与第二组数据中任一数据的位宽相加的和值为16×2+2=34,则该乘积与和值的差值为72-34=38,等于预设定点乘法器的第二输入端口位宽,则可将第一组数据作为第一组待相乘数据,第二组数据作为第二组待相乘数据。再例如,假设还是上述两组数据,而预设定点乘法器的两个输入端口位宽均为16比特,第一组数据的位宽等于预设定点乘法器的第一输入端口位宽;而通过计算得到的差值,大于预设定点乘法器的第二输入端口位宽;则第一组数据及第二组数据不满足第二位宽条件,所以不可将第一组数据确定为第一组待相乘数据、不可将第二组数据确定为第二组待相乘数据。
需要说明的是,通常情况下,在第一组待相乘数据中只包括一个数据时,第二组待相乘数据中至少包括两个数据,并且第一组待相乘数据中唯一数据与第二组待相乘数据中的数据需要两两作乘法。以图像处理的卷积神经网络为例,由于卷积神经网络是利用卷积核与图像的特征数据进行卷积运算,在使用1×1的卷积核进行卷积运算时,需要将卷积核里的数据分别与图像的所有特征数据相乘,并且卷积核中只有一个数据,因此,可以确定卷积核里的唯一数据为第一组待相乘数据,图像的所有特征数据为第二组待相乘数据。
S102,通过预设数据合并方式,将第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数。
其中,预设数据合并方式为按序排列所有数据,并根据第一组待相乘数据中每个数据的位宽及第二组待相乘数据中每个数据的位宽,在每两个数据之间补充满足预设数目的0。需要说明的是,由于第一组待相乘数据及第二组待相乘数据中包含多个数据,为了提升芯片的工作效率,需要将第一组待相乘数据中的所有数据合并、将第二组待相乘数据中的所有数据合并,其中,合并是指将第一组待相乘数据中的所有数据组合成一个数据、将第二组待相乘数据中的所有数据组合成一个数据,作为定点乘法器的一个输入,可以理解为简单的拼接。需要强调的是,如果第一组待相乘数据或者第二组待相乘数据中的所有数据均为正数,则直接合并所有数据,如果第一组待相乘数据或者第二组待相乘数据中的所有数据存在负数,则需要做相应处理,负数的相应处理方法为现有技术,这里不再赘述。
需要强调的是,由于第一组待相乘数据或者第二组待相乘数据中的数据的正负对乘积结果具有影响,因此在合并第一组待相乘数据或者第二组待相乘数据中的所有数据时,需要记录每个数据的正负,数据的正负可以通过符号位进行判断,当然,符号数才具有符号位,无符号数没有符号位,无符号数仅能表示正数,如果第一组待相乘数据或者第二组待相乘数据中的数据均为无符号数,则不需要记录每个数据的正负。
可选的,所述将第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数的步骤之前,该数据处理方法还可以包括:
首先,提取第一组待相乘数据中所有数据的符号位。
需要说明的是,如果第一组待相乘数据中的所有数据为符号数,则提取所有数据的符号位。符号数中,符号位为数据的最高位,最高位为0代表该数据为正数,最高位为1代表该数据为负数,其余数位用作数值位,代表数值。
其次,提取第二组待相乘数据中所有数据的符号位。
需要说明的是,如果第二组待相乘数据中的所有数据为符号数,则提取所有数据的符号位。符号数中,符号位为数据的最高位,最高位为0代表该数据为正数,最高位为1代表该数据为负数,其余数位用作数值位,代表数值。
再次,提取第一组待相乘数据中每个数据与第二组待相乘数据中每个数据相乘结果的符号位。
可选的,所述通过预设数据合并方式,将第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数的步骤,可以包括:
首先,根据第二组待相乘数据中每个数据的位宽,确定第一预设数目;在第一组待相乘数据的每个数据的绝对值之间补充满足第一预设数目的0,得到第一乘数。
需要说的是,符号数往往以补码的形式存储,正数的补码为其本身,负数的补码为将负数对应的正数二进制表示所有位取反后加1,例如+5的8位二进制符号数为00000101,而-5的8位二进制符号数为11111011,负数的绝对值,就是通过符号数减1,然后再取反得到。
其次,根据第二组待相乘数据中每个数据的位宽及第一乘数的位宽,确定第二预设数目;在第二组待相乘数据的每两个数据的绝对值之间补充满足第二预设数目的0,得到第二乘数。
需要说明的是,符号数往往以补码的形式存储,正数的补码为其本身,负数的补码为将负数对应的正数二进制表示所有位取反后加1,例如+5的8位二进制符号数为00000101,而-5的8位二进制符号数为11111011,负数的绝对值,就是通过符号数减1,然后再取反得到。
具体的,所述数据处理方法还可以包括:
获得运算控制指令。
需要说明的是,运算控制指令包括高精度运算指令、合并运算指令及高位宽运算指令。运算控制指令,可以是处理器的分析模块在获取到第一组待相乘数据及第二组待相乘数据之后,通过分析、判断两组待相乘数据中是否存在无法合并的高位宽数据,如果有其中一组待相乘数据中存在无法合并的高位宽数据时,则生成高位宽运算指令;如果两组待相乘数据中都存在无法合并的高位宽数据时,则生成高精度运算指令;如果两组待相乘数据中都不存在无法合并的高位宽数据时,则生成合并运算指令。运算控制指令也可以是本领域技术人员通过分析输入的数据,确定两组待相乘数据中有一组待相乘数据的位宽较大,通过交互界面或者开关发送的;还可以是通过数据存储模块及分析电路生成的。
所述在第一组待相乘数据的每两个数据的绝对值之间补充满足第一预设数目的0,得到第一乘数的步骤,可以包括:
当运算控制指令为高精度运算指令时,第一组待相乘数据中只包含一个数据,将该数据的绝对值作为第一乘数;
当运算控制指令为合并运算指令时,将第一组待相乘数据中的所有数据的绝对值,按照预设定点乘法器的位宽进行数据位排布,获得与预设定点乘法器的第一输入端口位宽相同的第一乘数。
需要说明的是,在运算控制指令为高精度运算指令时,定点乘法器输入的两组待相乘数据只能是两个高位宽的数据,因此第一组待相乘数据中只包含一个数据;在运算控制指令为合并运算指令时,定点乘法器输入的两组待相乘数据都可以正常合并。
当运算控制指令为高位宽运算指令时,如果第一组待相乘数据中每个数据的位宽大于第二组待相乘数据中每个数据的位宽,确定第一组待相乘数据中位宽最大的数据的绝对值为第一乘数。
可选的,第一组待相乘数据中所有数据的数量与第二组待相乘数据中所有数据的数量相等,且可以均为2。
可选的,在第一组待相乘数据中所有数据的数量为2时,所述将第一组待相乘数据中的所有数据的绝对值,按照预设定点乘法器的位宽进行数据位排布,获得与预设定点乘法器的第一输入端口位宽相同的第一乘数的步骤,可以包括:
首先,从第一组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第一预设序列中空闲区间的最低位序。
其中,第一预设序列中的最低位序的位宽与所提取的绝对值的位宽相等。需要说明的是,第一预设序列可以理解为一个中间序列,用于存储数据,在数据存储完成后,该第一预设序列对应的数据即为第一乘数。第一预设序列中的最低位序是指存储第一组待相乘数据中任一数据的区间,例如,第一组待相乘数据中数据的位宽均为4比特,则可将第一组待相乘数据中任一数据存储至第一预设序列中空闲区间的第0位至第3位,其中,第0位至第3位即为第一预设序列中空闲区间的最低位序。
其次,在第一预设序列中已存储的数据的最高位之前,设置与第二组待相乘数据中任一数据的位宽相同数目的0。
需要说明的是,在第一预设序列中的已存储的数据的最高位之前,添加0,假如第一预设序列中已存储的数据占了第一预设序列的第0位至第3位,那么从第4位开始设置0,例如,第二组待相乘数据中数据的位宽为8比特,并且第一预设序列中的第0位至第3位已存储数据,则从第4位开始,至第11位,设置8个0。
再次,从第一组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至第一预设序列中已存储的最高位的0之前。
需要说明的是,在补0之后,需要从第一组待相乘数据中提取另一个数据,存储至第一预设序列中,在已补0的最高位之前按位存储即可。例如,假设第一组待相乘数据中包含有两个数据A1、A2,且位宽均为p比特,第二组待相乘数据中包含有两个数据B1、B2,且位宽均为q比特,则得到如表1所示,为第一组待相乘数据中的所有数据合并后的第一预设序列。
表1
然后,获取已存储第一组待相乘数据中所有数据的绝对值的第一预设序列的位宽,并比较第一预设序列的位宽与预设定点乘法器的第一输入端口位宽的大小。
若第一预设序列的位宽等于预设定点乘法器的第一输入端口位宽,确定第一预设序列为第一乘数;
若第一预设序列的位宽小于预设定点乘法器的第一输入端口位宽,在第一预设序列的最高位之前依位补0,直至补0后的第一预设序列的位宽等于预设定点乘法器的第一输入端口位宽,确定补0后的第一预设序列为第一乘数。
需要说明的是,在完成第一组待相乘数据存储至第一预设序列之后,第一预设序列的位宽不一定完全等于预设定点乘法的第一输入端口位宽,如果第一预设序列的位宽小于预设定点乘法器的第一输入端口位宽,则需要对第一预设序列的高位进行补0。例如,完成第一组待相乘数据的存储之后,得到的第一预设序列为12位,数据为110100100100,而预设定点乘法器的第一输入端口位宽为16位,则需要对第一预设序列的数据进行补0,补齐16位,即补0后的数据为0000110100100100。
可选的,在第一组待相乘数据中只包含一个数据时,第二组待相乘数据中所有数据的数量可以为2。
可选的,在第一组待相乘数据中只包含一个数据,且第二组待相乘数据中所有数据的数量为2时,所述得到第一乘数的步骤,可以包括:
首先,从第一组待相乘数据中提取唯一数据的绝对值。
其次,比较所提取的绝对值的位宽与预设定点乘法器的第一输入端口位宽的大小。
若所提取的绝对值的位宽等于预设定点乘法器的第一输入端口位宽,确定所提取的绝对值为第一乘数;
若所提取的绝对值的位宽小于预设定点乘法器的第一输入端口位宽,在所提取的绝对值的最高位之前依位补0,直至补0后的数据的位宽等于预设定点乘法器的第一输入端口位宽,确定补0后的数据为第一乘数。
需要说明的是,第一组待相乘数据中唯一数据的位宽不一定完全等于预设定点乘法的第一输入端口位宽,如果第一组待相乘数据中唯一数据的位宽小于预设定点乘法器的第一输入端口位宽,则需要对该数据的高位进行补0。例如,第一组待相乘数据中唯一数据的位宽为12位,数据为100110101101,而预设定点乘法器的第一输入端口位宽为16位,则该数据进行补0,补齐16位,即补0后的数据为0000100110101101。
所述在第二组待相乘数据的每两个数据的绝对值之间补充满足第二预设数目的0,得到第二乘数的步骤,可以包括:
当运算控制指令为高精度运算指令时,第二组待相乘数据中只包括一个数据,将该数据的绝对值作为第二乘数;
当运算控制指令为合并运算指令时,将第二组待相乘数据中的所有数据的绝对值,按照预设定点乘法器的位宽进行数据位排布,获得与预设定点乘法器的第二输入端口位宽相同的第二乘数。
需要说明的是,在运算控制指令为高精度运算指令时,定点乘法器输入的两组待相乘数据只能是两个高位宽的数据,因此第二组待相乘数据中只包含一个数据;在运算控制指令为合并运算指令时,定点乘法器输入的两组待相乘数据都可以正常合并。
当运算控制指令为高位宽运算指令时,如果第二组待相乘数据中每个数据的位宽大于第一组待相乘数据中每个数据的位宽,确定第二组待相乘数据中位宽最大的数据的绝对值为第二乘数。
可选的,在第二组待相乘数据中所有数据的数量为2时,所述将第二组待相乘数据中的所有数据的绝对值,按照预设定点乘法器的位宽进行数据位排布,获得与预设定点乘法器的第二输入端口位宽相同的第二乘数的步骤,可以包括:
首先,从第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第二预设序列中空闲区间的最低位序。
其中,第二预设序列中的最低位序的位宽与所提取的绝对值的位宽相等。需要说明的是,第二预设序列可以理解为一个中间序列,用于存储数据,在数据存储完成后,该第二预设序列对应的数据即为第二乘数。第二预设序列中的最低位序是指存储第二组待相乘数据中任一数据的区间,例如,第二组待相乘数据中数据的位宽均为4比特,则可将第二组待相乘数据中任一数据存储至第二预设序列中空闲区间的第0位至第3位,其中,第0位至第3位即为第二预设序列中空闲区间的最低位序。
其次,计算第一乘数与第二组待相乘数据中任一数据的位宽的差值,并在第二预设序列中已存储的所述第二数据的最高位之前,设置与差值相同的数目的0。
其中,第一乘数为第一组待相乘数据中任一数据的位宽与第二组待相乘数据中任一数据的位宽的和、与第一数量的乘积,第一数量为第一组待相乘数据中所有数据的总数量。
需要说明的是,为了保证数据相乘的结果,相互之间不会出现交织,需要在数据中间添加0,添加的0的位数,应至少为第一乘数与第二组待相乘数据中任一数据的位宽的差值。例如,第一组待相乘数据中数据的位宽为4比特,第二组待相乘数据中数据的位宽均为8比特,且第一组待相乘数据中所有数据的总数量与第二组待相乘数据中所有数据的总数量均为2,则添加的0的位数至少为16位。
再次,从第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至第二预设序列中已存储的最高位的0之前。
需要说明的是,在补0之后,需要从第二组待相乘数据中提取另一个数据,存储至第二预设序列中,在已补0的最高位之前按位存储即可。例如,假设第一组待相乘数据中包含有两个数据A1、A2,且位宽均为p比特,第二组待相乘数据中包含有两个数据B1、B2,且位宽均为q比特,则得到如表2所示,为第二组待相乘数据中的所有数据合并后的第二预设序列。
表2
然后,获取已存储第二组待相乘数据中所有数据的绝对值的第二预设序列的位宽,并比较第二预设序列的位宽与预设定点乘法器的第二输入端口位宽的大小。
若第二预设序列的位宽等于预设定点乘法器的第二输入端口位宽,确定第二预设序列为第二乘数;
若第二预设序列的位宽小于预设定点乘法器的第二输入端口位宽,在第二预设序列的最高位之前依位补0,直至补0后的第二预设序列的位宽等于预设定点乘法器的第二输入端口位宽,确定所述补0后的第二预设序列为第二乘数。
需要说明的是,在完成第二组待相乘数据存储至第二预设序列之后,第二预设序列的位宽不一定完全等于预设定点乘法的第二输入端口位宽,如果第二预设序列的位宽小于预设定点乘法器的第二输入端口位宽,则需要对第二预设序列的高位进行补0。例如,完成第二组待相乘数据的存储之后,得到的第二预设序列为15位,数据为110100101100101,而预设定点乘法器的第二输入端口位宽为16位,则需要对第二预设序列的数据进行补0,补齐16位,即补0后的数据为0110100101100101。
在第一组待相乘数据中只包含一个数据时,所述将第二组待相乘数据中的所有数据的绝对值,按照预设定点乘法器的位宽进行数据位排布,获得与预设定点乘法器的第二输入端口位宽相同的第二乘数的步骤,可以包括:
首先,从第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第三预设序列中空闲区间的最低位序。
其中,第三预设序列中的最低位序的位宽与所提取的绝对值的位宽相等。需要说明的是,第三预设序列可以理解为一个中间序列,用于存储数据,在数据存储完成后,该第三预设序列对应的数据即为第四乘数。第三预设序列中的最低位序是指存储第二组待相乘数据中任一数据的区间,例如,第二组待相乘数据中数据的位宽均为4比特,则可将第二组待相乘数据中任一数据存储至第三预设序列中空闲区间的第0位至第3位,其中,第0位至第3位即为第三预设序列中空闲区间的最低位序。
其次,计算第二组待相乘数据中任一数据的位宽与第一组待相乘数据中唯一数据的位宽的两倍的和值,并在第三预设序列中已存储的数据的最高位之前,设置与该和值相同数目的0。
需要说明的是,为了保证数据相乘的结果,相互之间不会出现交织,需要在数据中间添加0,添加的0的位数,应至少为第二组待相乘数据中任一数据的位宽与第一组待相乘数据中唯一数据的位宽的两倍的和值。例如,第一组待相乘数据中数据的位宽为16比特,第二组待相乘数据中数据的位宽均为2比特,则添加的0的位数至少为34位。
再次,从第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至第三预设序列中已存储的最高位的0之前。
需要说明的是,在补0之后,需要从第二组待相乘数据中提取另一个数据,存储至第三预设序列中,在已补0的最高位之前按位存储即可。例如,假设第一组待相乘数据中包只有一个数据A2,且位宽为p比特,第二组待相乘数据中包含有两个数据B1、B2,且位宽均为q比特,则得到如表3所示,为第二组待相乘数据中的所有数据合并后的第三预设序列。
表3
然后,获取已存储第二组待相乘数据中所有数据的绝对值的第三预设序列的位宽,并比较第三预设序列的位宽与预设定点乘法器的第二输入端口位宽的大小。
若第三预设序列的位宽等于预设定点乘法器的第二输入端口位宽,确定第三预设序列为第二乘数;
若第三预设序列的位宽小于预设定点乘法器的第二输入端口位宽,在第三预设序列的最高位之前依位补0,直至补0后的第三预设序列的位宽等于预设定点乘法器的第二输入端口位宽,确定所述补0后的第三预设序列为第二乘数。
需要说明的是,在完成第二组待相乘数据存储至第三预设序列之后,第三预设序列的位宽不一定完全等于预设定点乘法的第二输入端口位宽,如果第三预设序列的位宽小于预设定点乘法器的第二输入端口位宽,则需要对第三预设序列的高位进行补0。例如,完成第二组待相乘数据的存储之后,得到的第三预设序列为15位,数据为100111101010100,而预设定点乘法器的第二输入端口位宽为16位,则需要对第三预设序列的数据进行补0,补齐16位,即补0后的数据为0100111101010100。
S103,通过预设定点乘法器对输入的第一乘数与第二乘数进行相乘运算,获得乘法结果数据。
需要说明的是,一般的定点乘法器都是对两个输入数据进行乘法运算,因此需要将上述步骤确定的第一乘数及第二乘数作为定点乘法器的输入,输入预设定点乘法器,通过预设定点乘法器对两个输入数据进行乘法运算,输出乘法结果数据,定点乘法器的乘法过程为现有技术,这里不再赘述。
S104,根据预设数据合并方式、第一组待相乘数据中每个数据的位宽以及第二组待相乘数据中每个数据的位宽,从乘法结果数据中,提取出第一组待相乘数据中每个数据与第二组待相乘数据中每个数据相乘的结果。
需要说明的是,第一组待相乘数据的数据合并方式和每个数据的位宽,以及第二组待相乘数据的数据合并方式和每个数据的位宽,影响着乘法结果数据中的相乘结果,其中,第一组待相乘数据的数据合并方式为:第一乘数中的第一组待相乘数据的所有数据的顺序,以及每两个数据间设置的0的个数,例如,合并第一组待相乘数据中的所有数据的过程,是按照先放置位宽大的数据,再放置位宽小的数据的顺序,或者按照先放置位宽大的数据,在放置位宽小的数据的顺序;合并数据时的放置顺序决定了数据间设置的0的个数,一般情况下,先放置位宽小的数据,数据间设置的0的个数较少,而先放置位宽大的数据,数据间设置的0的个数较多。第二组待相乘数据的数据合并方式与第一组待相乘数据的数据合并方式相似,这里不再赘述。一般情况下,每一组待相乘数据中所有数据的位宽是相等的。
可选的,所述根据预设数据合并方式、第一组待相乘数据中每个数据的位宽以及第二组待相乘数据中每个数据的位宽,从乘法结果数据中,提取出第一组待相乘数据中每个数据与第二组待相乘数据中每个数据相乘的结果的步骤,可以包括:
首先,从乘法结果数据中,拆分出第一组待相乘数据中每个数据与第二组待相乘数据中每个数据相乘的乘积结果的绝对值。
需要说明的是,可以根据第一组待相乘数据及第二组待相乘数据中数据的合并方式和每个数据的位宽确定乘法结果数据中,哪些位的数据为待相乘数据中某两个数据的乘积结果的绝对值。例如,假设第一组待相乘数据中包含有两个数据A1、A2,且位宽均为p比特,第二组待相乘数据中包含有两个数据B1、B2,且位宽均为q比特,则得到如表4所示,为第一组待相乘数据中每个数据与第二组待相乘数据中每个数据相乘后得到的结果。
输出结果可以表示为:
C=(A1×22p+2q+A2)×(B1×2p+q+B2)
=A1×B1×23p+3q+A1×B2×22p+2q+A2×B1×2p+q+A2×B2
表4
其次,根据第一组待相乘数据中每个数据的符号位及第二组待相乘数据中每个数据的符号位,确定每个乘积结果的正负特性,并根据每个乘积结果的正负特性,确定最终的每个乘积结果。
可选的,在第一组待相乘数据中只包含一个数据时,所述根据预设数据合并方式、第一组待相乘数据中每个数据的位宽以及第二组待相乘数据中每个数据的位宽,从乘法结果数据中,提取出第一组待相乘数据中每个数据与第二组待相乘数据中每个数据相乘的结果的步骤,可以包括:
首先,从乘法结果数据中,拆分出第一组待相乘数据中唯一数据与第二组待相乘数据中每个数据相乘的乘积结果的绝对值。
需要说明的是,可以根据第一组待相乘数据中唯一数据的位宽,及第二组待相乘数据中数据合并方式和每个数据的位宽,确定乘法结果数据中,哪些位的数据为待相乘数据中某两个数据的乘积结果的绝对值。例如,假设第一组待相乘数据中只有一个数据A2,且位宽为p比特,第二组待相乘数据中包含有两个数据B1、B2,且位宽均为q比特,则得到如表5所示,为第一组待相乘数据中唯一数据与第二组待相乘数据中每个数据相乘后得到的结果。
输出结果可以表示为:
C=A2×(B1×22p+2q+B2)=A2×B1×22p+2q+A2×B2
表5
其次,根据第一组待相乘数据中唯一数据的符号位及第二组待相乘数据中每个数据的符号位,确定每个乘积结果的正负特性,并根据每个乘积结果的正负特性,确定最终的每个乘积结果。
需要说明的是,在第一组待相乘数据中的数据及第二组待相乘数据中的数据均为符号数时,数据的正负特征对乘法结果具有影响,例如,两个正数相乘,结果为正数;两个负数相乘,结果为正数;两个符号不同的数据相乘,结果为负数。根据第一组待相乘数据中每个数据的符号位及第二组待相乘数据中每个数据的符号位,可以确定相乘结果的正负特性。例如,第一组待相乘数据中包括第一数据和第二数据,第二组待相乘数据中包括第三数据和第四数据,第一组待相乘数据中的每个数据与第二组待相乘数据中的每个数据相乘的结果的正负特性如表6所示,表6为相乘结果的正负特性表,表中,任一项为该项对应的两个符号数据相乘的正负特性,例如,第一数据为正,第三数据为负,则第一数据与第三数据相乘的结果为负。
表6
具体的,在第一组待相乘数据中第一数据与第二组待相乘数据中第二数据相乘的结果为正时,确定从乘法结果数据中提取的第一数据的绝对值与第二数据的绝对值相乘的结果,作为第一数据与第二数据相乘的结果。
其中,第一数据为第一组待相乘数据中的任一数据,第二数据为第二组待相乘数据中的任一数据。需要说明的是,如果第一组待相乘数据及第二组待相乘数据均为符号数,则合并时,放置的是符号数的绝对值,由于正数的绝对值为该正数本身,所以可以直接提取两个绝对值的乘积的结果。
在第一数据与第二数据相乘的结果为负时,确定从乘法结果数据中提取的第一数据的绝对值与第二数据的绝对值相乘的第一结果,并对第一结果内的数据进行补码运算得到第一数据与第二数据相乘的结果。
需要说明的是,相乘的结果为负时,由于是对绝对值合并,进行乘法运算,则得到的结果也为绝对值,所以需要进行补码运算才能得到正确的结果,例如,第一组待运算数据中的第一数据与第二组待运算数据中的第二数据的绝对值的相乘结果为00001111,即十进制数的15,而通过符号位判断第一数据与第二数据的乘积为负,则需要对00001111进行补码运算,得到11110001。
可选的,所述在第一组待相乘数据中第一数据与第二组待相乘数据中第二数据相乘的结果为正时,确定从乘法结果数据中提取的第一数据的绝对值与第二数据的绝对值相乘的结果,作为第一数据与第二数据相乘的结果的步骤,可以包括:
在第一数据的绝对值与第二数据的绝对值相乘的结果前,添加0,得到第三数据,并将第三数据作为第一数据与第二数据相乘的结果。
所述在第一数据与第二数据相乘的结果为负时,确定从乘法结果数据中提取的第一数据的绝对值与第二数据的绝对值相乘的第一结果,并对第一结果内的数据进行补码运算得到第一数据与第二数据相乘的结果的步骤,可以包括:
在对第一结果内的数据进行补码运算得到的数据前,添加1,得到第四数据,并将第四数据作为第一数据与第二数据相乘的结果。
需要说明的是,输出的结果需要携带符号位,因此需要在得到的相乘的结果最高位添加符号位,如果为正,则添加0;如果为负,则添加1。需要强调的是,输出的结果可以用于后续的加法、减法等运算,也可以将结果存储,以备其它装置或运算使用。
应用本实施例,通过将需要做乘法运算的两组数据分别进行合并,利用预设定点乘法器可以对合并后的两个数据进行乘法运算,根据合并方式及每个数据的位宽对乘积结果进行拆分,可以得到任意两个相乘的数据的乘积结果,本发明实施例仅通过一次乘法运算便可得到多个乘积结果,提高了用于数据处理的芯片的工作效率;并且,由于只利用一个乘法器便可得到多个乘积结果,降低了用于数据处理的芯片的成本;而且,由于定点乘法器对合并后的数据进行乘法运算,合并后的数据的位宽较合并前的数据的位宽,更接近于定点乘法器的位宽,提高了定点乘法器的利用率。
如图2所示,本发明实施例的所提供的一种数据处理方法,在图1所示的实施例的步骤S101之前,该数据处理方法还可以包括:
S201,获取第一组待运算数据及第二组待运算数据。
需要说明的是,第一组待运算数据及第二组待运算数据为需要进行运算的数据,待运算数据可能会有很多个,而待相乘数据是待运算数据中当前需要进行乘法运算的数据。
S202,根据预设算法,分别从第一组待运算数据中及第二组待运算数据中提取第一组待相乘数据及第二组待相乘数据。
其中,第一组待相乘数据及第二组待相乘数据满足所述第一位宽条件。需要说明的是,预设算法为需要运用乘法运算的算法,例如图像处理领域的卷积运算,提取待相乘数据的过程与预设算法相关,例如,在进行的运算时,为第一组待运算数据,为第二组待运算数据,则在计算之前,可以提取第一组待运算数据中的第一行[24]作为第一组待相乘数据,提取第二组待运算数据中的第一列作为第二组待相乘数据;或者可以提取第一组待运算数据中的第一行[24]作为第一组待相乘数据,提取第二组待运算数据中的第二列作为第二组待相乘数据;或者可以提取第一组待运算数据中的第二行[35]作为第一组待相乘数据,提取第二组待运算数据中的第一列作为第二组待相乘数据;或者可以提取第一组待运算数据中的第二行[35]作为第一组待相乘数据,提取第二组待运算数据中的第二列作为第二组待相乘数据。在第一组待相乘数据中只包含一个数据时,预设算法如图像处理领域的卷积运算,提取待相乘数据的过程与预设算法相关,例如,在进行的运算时,10为第一组待运算数据,为第二组待运算数据,则在计算之前,可以提取第一组待运算数据中的数据作为第一组待相乘数据,提取第二组待运算数据中的第一列、第二列、第一行、第二行或者所有数据作为第二组待相乘数据。
需要说明的是,S101至S104与图1所示实施例相同,这里不再赘述。
应用本实施例,通过将需要做乘法运算的两组数据分别进行合并,利用预设定点乘法器可以对合并后的两个数据进行乘法运算,根据合并方式及每个数据的位宽对乘积结果进行拆分,可以得到任意两个相乘的数据的乘积结果,本发明实施例仅通过一次乘法运算便可得到多个乘积结果,提高了用于数据处理的芯片的工作效率;并且,由于只利用一个乘法器便可得到多个乘积结果,降低了用于数据处理的芯片的成本;而且,由于定点乘法器对合并后的数据进行乘法运算,合并后的数据的位宽较合并前的数据的位宽,更接近于定点乘法器的位宽,提高了定点乘法器的利用率;并且通过预设算法从待运算的数据中提取待相乘数据,提高运算的效率。
相应于上述方法实施例,本发明实施例提供了一种数据处理装置,如图3所示,所述装置可以包括:
输入数据处理单元310,用于获得第一组待相乘数据及第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽,其中,所述第一组待相乘数据及所述第二组待相乘数据满足第一位宽条件,所述第一位宽条件为:所述第一组待相乘数据中所有数据合并后的第一位宽小于或等于定点乘法器的第一输入端口位宽,所述第二组待相乘数据中所有数据合并后的第二位宽小于或等于所述定点乘法器的第二输入端口位宽,所述第一位宽与所述第二位宽的总和小于或等于所述定点乘法器的输出位宽;通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数,其中,所述预设数据合并方式为按序排列所有数据,并根据所述第一组待相乘数据中每个数据的位宽及所述第二组待相乘数据中每个数据的位宽,在每两个数据之间补充满足预设数目的0;发送所述第一乘数及所述第二乘数至所述定点乘法器;
定点乘法器320,用于对输入数据处理单元发送的所述第一乘数与所述第二乘数进行相乘运算,获得乘法结果数据;输出所述乘法结果数据至输出数据处理单元;
输出数据处理单元330,根据所述第一组待相乘数据的数据合并方式和每个数据的位宽,以及所述第二组待相乘数据的数据合并方式和每个数据的位宽,从所述乘法结果数据中,提取出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的结果;输出所述相乘的结果。
可选的,所述输入数据处理单元310,可以包括:
第一待相乘数据获得子单元,用于获得第一组待相乘数据及第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽,其中,所述第一组待相乘数据及所述第二组待相乘数据满足第一位宽条件,所述第一位宽条件为:所述第一组待相乘数据中所有数据合并后的第一位宽小于或等于预设定点乘法器的第一输入端口位宽,所述第二组待相乘数据中所有数据合并后的第二位宽小于或等于所述预设定点乘法器的第二输入端口位宽,所述第一位宽与所述第二位宽的总和小于或等于所述预设定点乘法器的输出位宽;
第一乘数确定子单元,用于通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数;
第二乘数确定子单元,用于通过预设数据合并方式,将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数;
第一发送子单元,用于将所述第一乘数及所述第二乘数输入所述预设定点乘法器。
可选的,所述输入数据处理单元310,还可以包括:
第一符号位提取子单元,用于提取所述第一组待相乘数据中所有数据的符号位;提取所述第二组待相乘数据中所有数据的符号位;提取所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘结果的符号位;
所述第一乘数确定子单元,具体用于根据所述第二组待相乘数据中每个数据的位宽,确定第一预设数目;在所述第一组待相乘数据的每两个数据的绝对值之间补充满足所述第一预设数目的0,得到第一乘数;
所述第二乘数确定子单元,具体用于根据所述第二组待相乘数据中每个数据的位宽及所述第一乘数的位宽,确定第二预设数目;在所述第二组待相乘数据的每两个数据的绝对值之间补充满足所述第二预设数目的0,得到第二乘数;
所述输出数据处理单元330,可以包括:
第一拆分子单元,用于从所述乘法结果数据中,拆分出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的乘积结果的绝对值;
第一符号确定子单元,用于根据所述第一组待相乘数据中每个数据的符号位及所述第二组待相乘数据中每个数据的符号位,确定所述每个乘积结果的正负特性,并根据所述每个乘积结果的正负特性,确定最终的每个乘积结果;
输出子单元,用于输出所述乘积结果。
可选的,所述第一符号确定子单元,可以包括:
第一结果提取组件,用于在所述第一组待相乘数据中第一数据与所述第二组待相乘数据中第二数据相乘的结果为正时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的结果,作为所述第一数据与所述第二数据相乘的结果,其中,所述第一数据为所述第一组待相乘数据中的任一数据,所述第二数据为所述第二组待相乘数据中的任一数据;
第二结果提取组件,用于在所述第一数据与所述第二数据相乘的结果为负时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的第一结果,并对所述第一结果内的数据进行补码运算得到所述第一数据与所述第二数据相乘的结果。
可选的,所述第一结果提取组件,具体可以用于:
在所述第一数据的绝对值与所述第二数据的绝对值相乘的结果前,添加0,得到第三数据,并将所述第三数据作为所述第一数据与所述第二数据相乘的结果;
所述第二结果提取组件,具体可以用于:
在对所述第一结果内的数据进行补码运算得到的数据前,添加1,得到第四数据,并将所述第四数据作为所述第一数据与所述第二数据相乘的结果。
可选的,所述输入数据处理单元310,还可以包括:
指令获得子单元,用于获得运算控制指令;
所述第一乘数确定子单元,具体可以用于:
当所述运算控制指令为高精度运算指令时,所述第一组待相乘数据中只包含一个数据,将该数据的绝对值作为第一乘数;
当所述运算控制指令为合并运算指令时,将所述第一组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第一输入端口位宽相同的第一乘数;
当所述运算控制指令为高位宽运算指令时,如果所述第一组待相乘数据中每个数据的位宽大于所述第二组待相乘数据中每个数据的位宽,确定所述第一组待相乘数据中位宽最大的数据的绝对值为第一乘数;
所述第二乘数确定子单元,具体可以用于:
当所述运算控制指令为高精度运算指令时,所述第二组待相乘数据中只包括一个数据,将该数据的绝对值作为第二乘数;
当所述运算控制指令为合并运算指令时,将所述第二组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第二输入端口位宽相同的第二乘数;
当所述运算控制指令为高位宽运算指令时,如果所述第二组待相乘数据中每个数据的位宽大于所述第一组待相乘数据中每个数据的位宽,确定所述第二组待相乘数据中位宽最大的数据的绝对值为第二乘数。
可选的,在所述第一组待相乘数据中所有数据的数量与所述第二组待相乘数据中所有数据的数量相等、且均为2时,所述第一获得组件,具体可以用于:
从所述第一组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第一预设序列中空闲区间的最低位序,其中,所述第一预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
在所述第一预设序列中已存储的数据的最高位之前,设置与所述第二组待相乘数据中任一数据的位宽相同数目的0;
从所述第一组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第一预设序列中已存储的最高位的0之前;
获取已存储所述第一组待相乘数据中所有数据的绝对值的第一预设序列的位宽,并比较所述第一预设序列的位宽与所述预设定点乘法器的第一输入端口位宽的大小;
若所述第一预设序列的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述第一预设序列为第一乘数;
若所述第一预设序列的位宽小于所述预设定点乘法器的第一输入端口位宽,在所述第一预设序列的最高位之前依位补0,直至补0后的第一预设序列的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述补0后的第一预设序列为第一乘数;
所述第二乘数确定子单元,具体还可以用于:
从所述第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第二预设序列中空闲区间的最低位序,其中,所述第二预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
计算所述第一乘数与所述第二组待相乘数据中任一数据的位宽的差值,并在所述第二预设序列中已存储的所述第二数据的最高位之前,设置与所述差值相同的数目的0;
从所述第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第二预设序列中已存储的最高位的0之前;
获取已存储所述第二组待相乘数据中所有数据的绝对值的第二预设序列的位宽,并比较所述第二预设序列的位宽与所述预设定点乘法器的第二输入端口位宽的大小;
若所述第二预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述第二预设序列为第二乘数;
若所述第二预设序列的位宽小于所述预设定点乘法器的第二输入端口位宽,在所述第二预设序列的最高位之前依位补0,直至补0后的第二预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述补0后的第二预设序列为第二乘数。
在所述第一组待相乘数据中仅包含一个数据,且所述第二组待相乘数据中所有数据的数量为2时,所述第一乘数确定子单元,具体还用于:
从所述第一组待相乘数据中提取唯一数据的绝对值;
比较所提取的绝对值的位宽与所述预设定点乘法器的第一输入端口位宽的大小;
若所提取的绝对值的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所提取的绝对值为第一乘数;
若所提取的绝对值的位宽小于所述预设定点乘法器的第一输入端口位宽,在所提取的绝对值的最高位之前依位补0,直至补0后的数据的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述补0后的数据为第一乘数;
所述第二乘数确定子单元,具体还用于:
从所述第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第三预设序列中空闲区间的最低位序,其中,所述第三预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
计算所述第二组待相乘数据中任一数据的位宽与所述第一组待相乘数据中唯一数据的位宽的两倍的和值,并在所述第三预设序列中已存储的数据的最高位之前,设置与所述和值相同的数目的0;
从所述第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第三预设序列中已存储的最高位的0之前;
获取已存储所述第二组待相乘数据中所有数据的绝对值的第三预设序列的位宽,并比较所述第三预设序列的位宽与所述预设定点乘法器的第二输入端口位宽的大小;
若所述第三预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述第三预设序列为第二乘数;
若所述第三预设序列的位宽小于所述预设定点乘法器的第二输入端口位宽,在所述第三预设序列的最高位之前依位补0,直至补0后的第三预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述补0后的第三预设序列为第二乘数。
可选的,所述运算控制指令为:根据所述第一组待相乘数据中数据的位宽、所述第二组待相乘数据中数据的位宽、所述预设定点乘法器的第一输入端口位宽和第二输入端口位宽,以及所述预设定点乘法器的输出端口位宽生成的指令。
应用本实施例,通过将需要做乘法运算的两组数据分别进行合并,利用预设定点乘法器可以对合并后的两个数据进行乘法运算,根据合并方式及每个数据的位宽对乘积结果进行拆分,可以得到任意两个相乘的数据的乘积结果,本发明实施例仅通过一次乘法运算便可得到多个乘积结果,提高了用于数据处理的芯片的工作效率;并且,由于只利用一个乘法器便可得到多个乘积结果,降低了用于数据处理的芯片的成本;而且,由于定点乘法器对合并后的数据进行乘法运算,合并后的数据的位宽较合并前的数据的位宽,更接近于定点乘法器的位宽,提高了定点乘法器的利用率。
更进一步的,在包含输入数据处理单元310、定点乘法器320、输出数据处理单元330的基础上,如图4所示,本发明实施例所提供的一种数据处理装置还可以包括:
控制单元340,用于接收运算控制指令;控制所述输入数据处理单元处理输入的第一组待相乘数据及第二组待相乘数据;控制所述输出数据处理单元拆分所述定点乘法器输出的乘积结果。
应用本实施例,通过将需要做乘法运算的两组数据分别进行合并,利用预设定点乘法器可以对合并后的两个数据进行乘法运算,根据合并方式及每个数据的位宽对乘积结果进行拆分,可以得到任意两个相乘的数据的乘积结果,本发明实施例仅通过一次乘法运算便可得到多个乘积结果,提高了用于数据处理的芯片的工作效率;并且,由于只利用一个乘法器便可得到多个乘积结果,降低了用于数据处理的芯片的成本;而且,由于定点乘法器对合并后的数据进行乘法运算,合并后的数据的位宽较合并前的数据的位宽,更接近于定点乘法器的位宽,提高了定点乘法器的利用率。并且通过增加控制单元,根据运算控制指令的不同,控制输入数据处理单元及输出数据处理单元的配置,以完成相应运算,提高运算效率。
更进一步的,在包含输入数据处理单元310、定点乘法器320、输出数据处理单元330的基础上,如图5所示,本发明实施例所提供的一种数据处理装置还可以包括:
第一运算数据获取单元510,用于获取第一组待运算数据及第二组待运算数据;
第一待相乘数据提取单元520,用于根据预设算法,分别从所述第一组待运算数据中及所述第二组待运算数据中提取第一组待相乘数据及第二组待相乘数据,其中,所述第一组待相乘数据及所述第二组待相乘数据满足所述第一位宽条件。
需要说明的是,第一运算数据获取单元510及第一待相乘数据提取单元520的效果也可由输入数据处理单元310实现,这里不再赘述。
应用本实施例,通过将需要做乘法运算的两组数据分别进行合并,利用预设定点乘法器可以对合并后的两个数据进行乘法运算,根据合并方式及每个数据的位宽对乘积结果进行拆分,可以得到任意两个相乘的数据的乘积结果,本发明实施例仅通过一次乘法运算便可得到多个乘积结果,提高了用于数据处理的芯片的工作效率;并且,由于只利用一个乘法器便可得到多个乘积结果,降低了用于数据处理的芯片的成本;而且,由于定点乘法器对合并后的数据进行乘法运算,合并后的数据的位宽较合并前的数据的位宽,更接近于定点乘法器的位宽,提高了定点乘法器的利用率;并且通过预设算法从待运算的数据中提取待相乘数据,提高运算的效率。
需要说明的是,本发明实施例的数据处理装置为应用上述数据处理方法的装置,则上述数据处理方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
下面结合具体的应用实例,对本发明实施例所提供的数据处理方法及装置再进行详细说明。
假设需要进行C=(A1+A2)×(B1+B2)的运算,则输入4个数据,4个数据分别为A1、A2、B1和B2,由于C=A1×B1+A1×B2+A2×B1+A2×B2,其中,A1和A2的位宽均为4比特,B1和B2的位宽也均为4比特,图3所示实施例的输入数据处理单元310的内部结构如图6所示,第一符号位提取子单元311包括:第一组件601、第二组件602、第三组件603及第四组件604,第一组件601用于计算A1*B1的符号位,第二组件602用于计算A1*B2的符号位,第三组件603用于计算A2*B1的符号位,第四组件604用于计算A2*B2的符号位,符号位的计算需要根据输入数据的符号位情况进行确定,假定A1为正数、A2为正数、B1为正数、B2为负数,则第一组件601的输出为正、第二组件602的输出为负、第三组件603的输出为正、第四组件604的输出为负;第一乘数确定子单元312包括:第五组件605、第六组件606及第七组件607,第五组件605用于对A1取绝对值,第六组件606用于对A2取绝对值,假设A1的十进制数为+3,A2的十进制数为+12,则对应二进制的绝对值分别为:A1的绝对值为0011、A2的绝对值为1100,第七组件607对A1、A2进行合并,先放置A2,则如表7所示,为A1、A2合并后得到的A口数据,第0位至第3位放置A2的绝对值,即1100,第4位至第15位补0,第16位至第19位放置A1的绝对值,即0011,得到的第一乘数为00110000000000001100;
表7
第二乘数确定子单元313包括:第八组件608、第九组件609及第十组件610,第八组件608用于对B1取绝对值,第九组件609用于对B2取绝对值,假设B1的十进制数为+7,B2的十进制数为-9,则对应二进制的绝对值分别为:B1的绝对值为0111、B2的绝对值为1001,第十组件610对B1、B2进行合并,先放置B2,则如表8所示,为B1、B2合并后得到的B口数据,第0位至第3位放置B2的绝对值,即1001,第4位至第7位补0,第8位至第11位放置B1的绝对值,即0111,得到第二乘数为011100001001。
表8
假设预设定点乘法器的位宽为20比特,第一乘数的位宽为20比特,与预设定点乘法器的位宽相等,第二乘数的位宽为12比特,比预设定点乘法器的位宽小,则预设定点乘法器可以完成第一乘数与第二乘数的乘法,如表9所示,为A口数据与B口数据相乘结果的C口数据,具体A口数据与B口数据相乘后得到的结果为:00010101000110110101010001101100。
表9
图3所示实施例的输出数据处理单元330的内部结构如图7所示,通过第一拆分子单元331,输出:A2的绝对值乘以B2的绝对值的结果为01101100、A2的绝对值乘以B1的绝对值的结果为01010100、A1的绝对值乘以B2的绝对值的结果为00011011、A1的绝对值乘以B1的绝对值的结果为00010101;第一符号确定子单元332包括:第一符号位组件701、第二符号位组件702、第三符号位组件703及第四符号位组件704,由于第一符号位组件701记录A1*B1的结果为正,则第一符号位组件701输出结果为000010101;第二符号位组件702记录A1*B2的结果为负,则第二符号位组件702输出结果为111100101;第三符号位组件703记录A2*B1的结果为正,则第三符号位组件703输出结果为001010100;第四符号位组件704记录A2*B2的结果为负,则第四符号位组件704输出结果为110010100。
与现有技术相比,本方案中,通过将需要做乘法运算的两组数据分别进行合并,利用预设定点乘法器可以对合并后的两个数据进行乘法运算,根据合并方式及每个数据的位宽对乘积结果进行拆分,可以得到任意两个相乘的数据的乘积结果,本发明实施例仅通过一次乘法运算便可得到多个乘积结果,提高了用于数据处理的芯片的工作效率;并且,由于只利用一个乘法器便可得到多个乘积结果,降低了用于数据处理的芯片的成本;而且,由于定点乘法器对合并后的数据进行乘法运算,合并后的数据的位宽较合并前的数据的位宽,更接近于定点乘法器的位宽,提高了定点乘法器的利用率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (17)
1.一种数据处理方法,其特征在于,所述方法包括:
获得第一组待相乘数据、第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽,其中,所述第一组待相乘数据及所述第二组待相乘数据满足第一位宽条件,所述第一位宽条件为:所述第一组待相乘数据中所有数据合并后的第一位宽小于或等于预设定点乘法器的第一输入端口位宽,所述第二组待相乘数据中所有数据合并后的第二位宽小于或等于所述预设定点乘法器的第二输入端口位宽,所述第一位宽与所述第二位宽的总和小于或等于所述预设定点乘法器的输出位宽;
通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数,其中,所述预设数据合并方式为按序排列所有数据,并根据所述第一组待相乘数据中每个数据的位宽及所述第二组待相乘数据中每个数据的位宽,在每两个数据之间补充满足预设数目的0;
通过所述预设定点乘法器对输入的所述第一乘数与所述第二乘数进行相乘运算,获得乘法结果数据;
根据所述预设数据合并方式、所述第一组待相乘数据中每个数据的位宽以及所述第二组待相乘数据中每个数据的位宽,从所述乘法结果数据中,提取出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的结果;
所述通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数的步骤之前,所述方法还包括:
提取所述第一组待相乘数据中所有数据的符号位;
提取所述第二组待相乘数据中所有数据的符号位;
提取所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘结果的符号位;
所述通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数的步骤,包括:
根据所述第二组待相乘数据中每个数据的位宽,确定第一预设数目;在所述第一组待相乘数据的每两个数据的绝对值之间补充满足所述第一预设数目的0,得到第一乘数;
根据所述第二组待相乘数据中每个数据的位宽及所述第一乘数的位宽,确定第二预设数目;在所述第二组待相乘数据的每两个数据的绝对值之间补充满足所述第二预设数目的0,得到第二乘数;
所述根据所述预设数据合并方式、所述第一组待相乘数据中每个数据的位宽以及所述第二组待相乘数据中每个数据的位宽,从所述乘法结果数据中,提取出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的结果的步骤,包括:
从所述乘法结果数据中,拆分出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的乘积结果的绝对值;
根据所述第一组待相乘数据中每个数据的符号位及所述第二组待相乘数据中每个数据的符号位,确定所述每个乘积结果的正负特性,并根据所述每个乘积结果的正负特性,确定最终的每个乘积结果。
2.根据权利要求1所述的数据处理方法,其特征在于,所述获得第一组待相乘数据、第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽的步骤之前,所述方法还包括:
获取第一组待运算数据及第二组待运算数据;
根据预设算法,分别从所述第一组待运算数据中及所述第二组待运算数据中提取第一组待相乘数据及第二组待相乘数据,其中,所述第一组待相乘数据及所述第二组待相乘数据满足所述第一位宽条件。
3.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述第一组待相乘数据中每个数据的符号位及所述第二组待相乘数据中每个数据的符号位,确定所述每个乘积结果的正负特性,并根据所述每个乘积结果的正负特性,确定最终的每个乘积结果的步骤,包括:
在所述第一组待相乘数据中第一数据与所述第二组待相乘数据中第二数据相乘的结果为正时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的结果,作为所述第一数据与所述第二数据相乘的结果,其中,所述第一数据为所述第一组待相乘数据中的任一数据,所述第二数据为所述第二组待相乘数据中的任一数据;
在所述第一数据与所述第二数据相乘的结果为负时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的第一结果,并对所述第一结果内的数据进行补码运算得到所述第一数据与所述第二数据相乘的结果。
4.根据权利要求3所述的数据处理方法,其特征在于,所述在所述第一组待相乘数据中第一数据与所述第二组待相乘数据中第二数据相乘的结果为正时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的结果,作为所述第一数据与所述第二数据相乘的结果的步骤,包括:
在所述第一数据的绝对值与所述第二数据的绝对值相乘的结果前,添加0,得到第三数据,并将所述第三数据作为所述第一数据与所述第二数据相乘的结果;
所述在所述第一数据与所述第二数据相乘的结果为负时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的第一结果,并对所述第一结果内的数据进行补码运算得到所述第一数据与所述第二数据相乘的结果的步骤,包括:
在对所述第一结果内的数据进行补码运算得到的数据前,添加1,得到第四数据,并将所述第四数据作为所述第一数据与所述第二数据相乘的结果。
5.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:获得运算控制指令;
所述在所述第一组待相乘数据的每两个数据的绝对值之间补充满足所述第一预设数目的0,得到第一乘数的步骤,包括:
当所述运算控制指令为高精度运算指令时,所述第一组待相乘数据中只包含一个数据,将该数据的绝对值作为第一乘数;
当所述运算控制指令为合并运算指令时,将所述第一组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第一输入端口位宽相同的第一乘数;
当所述运算控制指令为高位宽运算指令时,如果所述第一组待相乘数据中每个数据的位宽大于所述第二组待相乘数据中每个数据的位宽,确定所述第一组待相乘数据中位宽最大的数据的绝对值为第一乘数;
所述在所述第二组待相乘数据的每两个数据的绝对值之间补充满足所述第二预设数目的0,得到第二乘数的步骤,包括:
当所述运算控制指令为高精度运算指令时,所述第二组待相乘数据中只包括一个数据,将该数据的绝对值作为第二乘数;
当所述运算控制指令为合并运算指令时,将所述第二组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第二输入端口位宽相同的第二乘数;
当所述运算控制指令为高位宽运算指令时,如果所述第二组待相乘数据中每个数据的位宽大于所述第一组待相乘数据中每个数据的位宽,确定所述第二组待相乘数据中位宽最大的数据的绝对值为第二乘数。
6.根据权利要求5所述的数据处理方法,其特征在于,在所述第一组待相乘数据中所有数据的数量与所述第二组待相乘数据中所有数据的数量相等、且均为2时,所述将所述第一组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第一输入端口位宽相同的第一乘数的步骤,包括:
从所述第一组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第一预设序列中空闲区间的最低位序,其中,所述第一预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
在所述第一预设序列中已存储的数据的最高位之前,设置与所述第二组待相乘数据中任一数据的位宽相同数目的0;
从所述第一组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第一预设序列中已存储的最高位的0之前;
获取已存储所述第一组待相乘数据中所有数据的绝对值的第一预设序列的位宽,并比较所述第一预设序列的位宽与所述预设定点乘法器的第一输入端口位宽的大小;
若所述第一预设序列的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述第一预设序列为第一乘数;
若所述第一预设序列的位宽小于所述预设定点乘法器的第一输入端口位宽,在所述第一预设序列的最高位之前依位补0,直至补0后的第一预设序列的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述补0后的第一预设序列为第一乘数;
所述将所述第二组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第二输入端口位宽相同的第二乘数的步骤,包括:
从所述第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第二预设序列中空闲区间的最低位序,其中,所述第二预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
计算所述第一乘数与所述第二组待相乘数据中任一数据的位宽的差值,并在所述第二预设序列中已存储的第二数据的最高位之前,设置与所述差值相同的数目的0;所述第二数据为所述第二组待相乘数据中的任一数据;
从所述第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第二预设序列中已存储的最高位的0之前;
获取已存储所述第二组待相乘数据中所有数据的绝对值的第二预设序列的位宽,并比较所述第二预设序列的位宽与所述预设定点乘法器的第二输入端口位宽的大小;
若所述第二预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述第二预设序列为第二乘数;
若所述第二预设序列的位宽小于所述预设定点乘法器的第二输入端口位宽,在所述第二预设序列的最高位之前依位补0,直至补0后的第二预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述补0后的第二预设序列为第二乘数。
7.根据权利要求5所述的数据处理方法,其特征在于,在所述第一组待相乘数据中仅包含一个数据,且所述第二组待相乘数据中所有数据的数量为2时,所述将所述第一组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第一输入端口位宽相同的第一乘数的步骤,包括:
从所述第一组待相乘数据中提取唯一数据的绝对值;
比较所提取的绝对值的位宽与所述预设定点乘法器的第一输入端口位宽的大小;
若所提取的绝对值的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所提取的绝对值为第一乘数;
若所提取的绝对值的位宽小于所述预设定点乘法器的第一输入端口位宽,在所提取的绝对值的最高位之前依位补0,直至补0后的数据的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述补0后的数据为第一乘数;
所述将所述第二组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第二输入端口位宽相同的第二乘数的步骤,包括:
从所述第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第三预设序列中空闲区间的最低位序,其中,所述第三预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
计算所述第二组待相乘数据中任一数据的位宽与所述第一组待相乘数据中唯一数据的位宽的两倍的和值,并在所述第三预设序列中已存储的数据的最高位之前,设置与所述和值相同的数目的0;
从所述第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第三预设序列中已存储的最高位的0之前;
获取已存储所述第二组待相乘数据中所有数据的绝对值的第三预设序列的位宽,并比较所述第三预设序列的位宽与所述预设定点乘法器的第二输入端口位宽的大小;
若所述第三预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述第三预设序列为第二乘数;
若所述第三预设序列的位宽小于所述预设定点乘法器的第二输入端口位宽,在所述第三预设序列的最高位之前依位补0,直至补0后的第三预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述补0后的第三预设序列为第二乘数。
8.根据权利要求5所述的数据处理方法,其特征在于,所述运算控制指令为:根据所述第一组待相乘数据中数据的位宽、所述第二组待相乘数据中数据的位宽、所述预设定点乘法器的第一输入端口位宽和第二输入端口位宽,以及所述预设定点乘法器的输出端口位宽生成的指令。
9.一种数据处理装置,其特征在于,所述装置包括:
输入数据处理单元,用于获得第一组待相乘数据及第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽,其中,所述第一组待相乘数据及所述第二组待相乘数据满足第一位宽条件,所述第一位宽条件为:所述第一组待相乘数据中所有数据合并后的第一位宽小于或等于定点乘法器的第一输入端口位宽,所述第二组待相乘数据中所有数据合并后的第二位宽小于或等于所述定点乘法器的第二输入端口位宽,所述第一位宽与所述第二位宽的总和小于或等于所述定点乘法器的输出位宽;通过预设数据合并方式,将所述第一组待相乘数据中的所有数据合并后得到的数据确定为第一乘数,并将所述第二组待相乘数据中的所有数据合并后得到的数据确定为第二乘数,其中,所述预设数据合并方式为按序排列所有数据,并根据所述第一组待相乘数据中每个数据的位宽及所述第二组待相乘数据中每个数据的位宽,在每两个数据之间补充满足预设数目的0;发送所述第一乘数及所述第二乘数至所述定点乘法器;
定点乘法器,用于对输入数据处理单元发送的所述第一乘数与所述第二乘数进行相乘运算,获得乘法结果数据;输出所述乘法结果数据至输出数据处理单元;
输出数据处理单元,根据所述预设数据合并方式、所述第一组待相乘数据中每个数据的位宽以及所述第二组待相乘数据中每个数据的位宽,从所述乘法结果数据中,提取出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的结果;输出所述相乘的结果;
所述输入数据处理单元,还包括:
第一符号位提取子单元,用于提取所述第一组待相乘数据中所有数据的符号位;提取所述第二组待相乘数据中所有数据的符号位;提取所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘结果的符号位;
第一待相乘数据获得子单元,用于获得第一组待相乘数据、第二组待相乘数据,及所述第一组待相乘数据中每个数据的位宽、所述第二组待相乘数据中每个数据的位宽,其中,所述第一组待相乘数据及所述第二组待相乘数据满足第一位宽条件,所述第一位宽条件为:所述第一组待相乘数据中所有数据合并后的第一位宽小于或等于预设定点乘法器的第一输入端口位宽,所述第二组待相乘数据中所有数据合并后的第二位宽小于或等于所述预设定点乘法器的第二输入端口位宽,所述第一位宽与所述第二位宽的总和小于或等于所述预设定点乘法器的输出位宽;
第一乘数确定子单元,具体用于根据所述第二组待相乘数据中每个数据的位宽,确定第一预设数目;在所述第一组待相乘数据的每两个数据的绝对值之间补充满足所述第一预设数目的0,得到第一乘数;
第二乘数确定子单元,具体用于根据所述第二组待相乘数据中每个数据的位宽及所述第一乘数的位宽,确定第二预设数目;在所述第二组待相乘数据的每两个数据的绝对值之间补充满足所述第二预设数目的0,得到第二乘数;
所述输出数据处理单元,包括:
第一拆分子单元,用于从所述乘法结果数据中,拆分出所述第一组待相乘数据中每个数据与所述第二组待相乘数据中每个数据相乘的乘积结果的绝对值;
第一符号确定子单元,用于根据所述第一组待相乘数据中每个数据的符号位及所述第二组待相乘数据中每个数据的符号位,确定所述每个乘积结果的正负特性,并根据所述每个乘积结果的正负特性,确定最终的每个乘积结果;
输出子单元,用于输出所述乘积结果。
10.根据权利要求9所述的数据处理装置,其特征在于,所述的数据处理装置,还包括:
第一运算数据获取单元,用于获取第一组待运算数据及第二组待运算数据;
第一待相乘数据提取单元,用于根据预设算法,分别从所述第一组待运算数据中及所述第二组待运算数据中提取第一组待相乘数据及第二组待相乘数据,其中,所述第一组待相乘数据及所述第二组待相乘数据满足所述第一位宽条件。
11.根据权利要求9所述的数据处理装置,其特征在于,所述第一符号确定子单元,包括:
第一结果提取组件,用于在所述第一组待相乘数据中第一数据与所述第二组待相乘数据中第二数据相乘的结果为正时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的结果,作为所述第一数据与所述第二数据相乘的结果,其中,所述第一数据为所述第一组待相乘数据中的任一数据,所述第二数据为所述第二组待相乘数据中的任一数据;
第二结果提取组件,用于在所述第一数据与所述第二数据相乘的结果为负时,确定从所述乘法结果数据中提取的所述第一数据的绝对值与所述第二数据的绝对值相乘的第一结果,并对所述第一结果内的数据进行补码运算得到所述第一数据与所述第二数据相乘的结果。
12.根据权利要求11所述的数据处理装置,其特征在于,所述第一结果提取组件,具体用于:
在所述第一数据的绝对值与所述第二数据的绝对值相乘的结果前,添加0,得到第三数据,并将所述第三数据作为所述第一数据与所述第二数据相乘的结果;
所述第二结果提取组件,具体用于:
在对所述第一结果内的数据进行补码运算得到的数据前,添加1,得到第四数据,并将所述第四数据作为所述第一数据与所述第二数据相乘的结果。
13.根据权利要求9所述的数据处理装置,其特征在于,所述输入数据处理单元,还包括:
指令获得子单元,用于获得运算控制指令;
所述第一乘数确定子单元,具体用于:
当所述运算控制指令为高精度运算指令时,所述第一组待相乘数据中只包含一个数据,将该数据的绝对值作为第一乘数;
当所述运算控制指令为合并运算指令时,将所述第一组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第一输入端口位宽相同的第一乘数;
当所述运算控制指令为高位宽运算指令时,如果所述第一组待相乘数据中每个数据的位宽大于所述第二组待相乘数据中每个数据的位宽,确定所述第一组待相乘数据中位宽最大的数据的绝对值为第一乘数;
所述第二乘数确定子单元,具体用于:
当所述运算控制指令为高精度运算指令时,所述第二组待相乘数据中只包括一个数据,将该数据的绝对值作为第二乘数;
当所述运算控制指令为合并运算指令时,将所述第二组待相乘数据中的所有数据的绝对值,按照所述预设定点乘法器的位宽进行数据位排布,获得与所述预设定点乘法器的第二输入端口位宽相同的第二乘数;
当所述运算控制指令为高位宽运算指令时,如果所述第二组待相乘数据中每个数据的位宽大于所述第一组待相乘数据中每个数据的位宽,确定所述第二组待相乘数据中位宽最大的数据的绝对值为第二乘数。
14.根据权利要求13所述的数据处理装置,其特征在于,在所述第一组待相乘数据中所有数据的数量与所述第二组待相乘数据中所有数据的数量相等、且均为2时,所述第一乘数确定子单元,具体还用于:
从所述第一组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第一预设序列中空闲区间的最低位序,其中,所述第一预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
在所述第一预设序列中已存储的数据的最高位之前,设置与所述第二组待相乘数据中任一数据的位宽相同数目的0;
从所述第一组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第一预设序列中已存储的最高位的0之前;
获取已存储所述第一组待相乘数据中所有数据的绝对值的第一预设序列的位宽,并比较所述第一预设序列的位宽与所述预设定点乘法器的第一输入端口位宽的大小;
若所述第一预设序列的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述第一预设序列为第一乘数;
若所述第一预设序列的位宽小于所述预设定点乘法器的第一输入端口位宽,在所述第一预设序列的最高位之前依位补0,直至补0后的第一预设序列的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述补0后的第一预设序列为第一乘数;
所述第二乘数确定子单元,具体还用于:
从所述第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第二预设序列中空闲区间的最低位序,其中,所述第二预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
计算所述第一乘数与所述第二组待相乘数据中任一数据的位宽的差值,并在所述第二预设序列中已存储的第二数据的最高位之前,设置与所述差值相同的数目的0;所述第二数据为所述第二组待相乘数据中的任一数据;
从所述第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第二预设序列中已存储的最高位的0之前;
获取已存储所述第二组待相乘数据中所有数据的绝对值的第二预设序列的位宽,并比较所述第二预设序列的位宽与所述预设定点乘法器的第二输入端口位宽的大小;
若所述第二预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述第二预设序列为第二乘数;
若所述第二预设序列的位宽小于所述预设定点乘法器的第二输入端口位宽,在所述第二预设序列的最高位之前依位补0,直至补0后的第二预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述补0后的第二预设序列为第二乘数。
15.根据权利要求13所述的数据处理装置,其特征在于,在所述第一组待相乘数据中仅包含一个数据,且所述第二组待相乘数据中所有数据的数量为2时,所述第一乘数确定子单元,具体还用于:
从所述第一组待相乘数据中提取唯一数据的绝对值;
比较所提取的绝对值的位宽与所述预设定点乘法器的第一输入端口位宽的大小;
若所提取的绝对值的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所提取的绝对值为第一乘数;
若所提取的绝对值的位宽小于所述预设定点乘法器的第一输入端口位宽,在所提取的绝对值的最高位之前依位补0,直至补0后的数据的位宽等于所述预设定点乘法器的第一输入端口位宽,确定所述补0后的数据为第一乘数;
所述第二乘数确定子单元,具体还用于:
从所述第二组待相乘数据中提取任一数据的绝对值,并将所提取的绝对值存储至第三预设序列中空闲区间的最低位序,其中,所述第三预设序列中的最低位序的位宽与所提取的绝对值的位宽相等;
计算所述第二组待相乘数据中任一数据的位宽与所述第一组待相乘数据中唯一数据的位宽的两倍的和值,并在所述第三预设序列中已存储的数据的最高位之前,设置与所述和值相同的数目的0;
从所述第二组待相乘数据中提取另一数据的绝对值,并将所提取的绝对值存储至所述第三预设序列中已存储的最高位的0之前;
获取已存储所述第二组待相乘数据中所有数据的绝对值的第三预设序列的位宽,并比较所述第三预设序列的位宽与所述预设定点乘法器的第二输入端口位宽的大小;
若所述第三预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述第三预设序列为第二乘数;
若所述第三预设序列的位宽小于所述预设定点乘法器的第二输入端口位宽,在所述第三预设序列的最高位之前依位补0,直至补0后的第三预设序列的位宽等于所述预设定点乘法器的第二输入端口位宽,确定所述补0后的第三预设序列为第二乘数。
16.根据权利要求13所述的数据处理装置,其特征在于,所述运算控制指令为:根据所述第一组待相乘数据中数据的位宽、所述第二组待相乘数据中数据的位宽、所述预设定点乘法器的第一输入端口位宽和第二输入端口位宽,以及所述预设定点乘法器的输出端口位宽生成的指令。
17.根据权利要求9所述的数据处理装置,其特征在于,所述装置还包括:
控制单元,用于接收运算控制指令;控制所述输入数据处理单元处理输入的第一组待相乘数据及第二组待相乘数据;控制所述输出数据处理单元拆分所述定点乘法器输出的乘积结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710262673.8A CN108733347B (zh) | 2017-04-20 | 2017-04-20 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710262673.8A CN108733347B (zh) | 2017-04-20 | 2017-04-20 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108733347A CN108733347A (zh) | 2018-11-02 |
CN108733347B true CN108733347B (zh) | 2021-01-29 |
Family
ID=63933228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710262673.8A Active CN108733347B (zh) | 2017-04-20 | 2017-04-20 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108733347B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262773B (zh) * | 2019-04-28 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种计算机数据处理方法及装置 |
CN114424161A (zh) * | 2019-09-20 | 2022-04-29 | 华为技术有限公司 | 一种乘法器 |
CN110780845B (zh) * | 2019-10-17 | 2021-11-30 | 浙江大学 | 一种用于量化卷积神经网络的可配置近似乘法器及其实现方法 |
CN113610222B (zh) * | 2021-07-07 | 2024-02-27 | 绍兴埃瓦科技有限公司 | 计算神经网络卷积运算的方法及系统、硬件装置 |
CN116540975A (zh) * | 2023-07-06 | 2023-08-04 | 福建福大北斗通信科技有限公司 | 一种基于硬件的自适应符号乘法器及其实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11285005A (ja) * | 1998-03-27 | 1999-10-15 | Fuji Xerox Co Ltd | 映像符号化装置 |
CN101493760A (zh) * | 2008-12-24 | 2009-07-29 | 京信通信系统(中国)有限公司 | 一种高速除法器及其实现高速除法运算的方法 |
CN101685386A (zh) * | 2008-08-15 | 2010-03-31 | 北京北大众志微系统科技有限责任公司 | 用于处理任意宽度数据的算术逻辑单元及其处理方法 |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
CN103092559A (zh) * | 2013-01-30 | 2013-05-08 | 上海交通大学 | 用于hevc标准下dct/idct电路的乘法器结构 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11506230A (ja) * | 1996-03-28 | 1999-06-02 | フィリップス エレクトロニクス ネムローゼ フェンノートシャップ | シーケンシャルプロセッサにおいてデータ要素の組を処理する方法およびコンピュータシステム |
US7539714B2 (en) * | 2003-06-30 | 2009-05-26 | Intel Corporation | Method, apparatus, and instruction for performing a sign operation that multiplies |
CN100555213C (zh) * | 2003-10-14 | 2009-10-28 | 松下电器产业株式会社 | 数据转换器 |
CN102662623A (zh) * | 2012-04-28 | 2012-09-12 | 电子科技大学 | 基于单fpga的并行矩阵乘法器及其实现方法 |
CN106066881B (zh) * | 2016-05-31 | 2019-10-22 | 深圳市永兴元科技股份有限公司 | 数据处理方法及装置 |
-
2017
- 2017-04-20 CN CN201710262673.8A patent/CN108733347B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11285005A (ja) * | 1998-03-27 | 1999-10-15 | Fuji Xerox Co Ltd | 映像符号化装置 |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
CN101685386A (zh) * | 2008-08-15 | 2010-03-31 | 北京北大众志微系统科技有限责任公司 | 用于处理任意宽度数据的算术逻辑单元及其处理方法 |
CN101493760A (zh) * | 2008-12-24 | 2009-07-29 | 京信通信系统(中国)有限公司 | 一种高速除法器及其实现高速除法运算的方法 |
CN103092559A (zh) * | 2013-01-30 | 2013-05-08 | 上海交通大学 | 用于hevc标准下dct/idct电路的乘法器结构 |
Also Published As
Publication number | Publication date |
---|---|
CN108733347A (zh) | 2018-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733347B (zh) | 一种数据处理方法及装置 | |
CN115934030B (zh) | 算数逻辑单元、浮点数乘法计算的方法及设备 | |
US8239440B2 (en) | Processor which implements fused and unfused multiply-add instructions in a pipelined manner | |
CN103959192B (zh) | 用于估算超越函数的数学电路 | |
CN103294446B (zh) | 一种定点乘累加器 | |
US11328395B2 (en) | Image processing method, image processing device, electronic equipment and computer readable storage medium | |
US10949168B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
EP2435904B1 (en) | Integer multiply and multiply-add operations with saturation | |
CN113076083B (zh) | 数据乘加运算电路 | |
Venkatachalam et al. | Approximate sum-of-products designs based on distributed arithmetic | |
US11704543B2 (en) | Neural network hardware acceleration with stochastic adaptive resource allocation | |
Adams et al. | Energy-efficient approximate MAC unit | |
CN112835551B (zh) | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 | |
CN114296682A (zh) | 浮点数处理装置、方法、电子设备、存储介质及芯片 | |
CN113126954B (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
CN113591031A (zh) | 低功耗矩阵运算方法及装置 | |
CN115827555A (zh) | 数据处理方法、计算机设备、存储介质和乘法器结构 | |
CN111930674B (zh) | 乘累加运算装置及方法、异构智能处理器及电子设备 | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
CN107491288B (zh) | 一种基于单指令多数据流结构的数据处理方法及装置 | |
US9804998B2 (en) | Unified computation systems and methods for iterative multiplication and division, efficient overflow detection systems and methods for integer division, and tree-based addition systems and methods for single-cycle multiplication | |
Ghaffari et al. | A Fully Pipelined FPGA Architecture for Multiscale BRISK Descriptors With a Novel Hardware-Aware Sampling Pattern | |
Chang et al. | Fixed-point computing element design for transcendental functions and primary operations in speech processing | |
CN102929575A (zh) | 一种模乘法器 | |
US20240069868A1 (en) | Mac operator related to correcting a computational error |
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 |