CN116679988B - 硬件加速单元、硬件加速方法、芯片及存储介质 - Google Patents
硬件加速单元、硬件加速方法、芯片及存储介质 Download PDFInfo
- Publication number
- CN116679988B CN116679988B CN202310963606.4A CN202310963606A CN116679988B CN 116679988 B CN116679988 B CN 116679988B CN 202310963606 A CN202310963606 A CN 202310963606A CN 116679988 B CN116679988 B CN 116679988B
- Authority
- CN
- China
- Prior art keywords
- acceleration
- division
- engine
- hardware acceleration
- quotient
- 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
- 230000001133 acceleration Effects 0.000 title claims abstract description 141
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000004364 calculation method Methods 0.000 claims abstract description 72
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000002372 labelling Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/535—Dividing 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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种硬件加速单元、硬件加速方法、芯片及存储介质,硬件加速单元包括多个并行运算的加速引擎,每一加速引擎实现一不同的数学运算,用于提供并行的除法运算、开根号运算、平方和开根号运算、正余弦运算或反正切运算;多个加速引擎分别通过总线与CPU进交互,且每一加速引擎对应一数据输入单元,用于按照运算顺序依次向各个数据输入单元进行数据写入,各个加速引擎根据运算顺序依次在总线空闲状态时读取对应数据输入单元的数据并执行对应的数学运算。本发明包含完整的电机控制支持所需的运算引擎,实现并行运算,能够支持复杂的矢量控制算法,解决现有三相无刷电机控制时存在的计算执行时间过长或不支持的问题。
Description
技术领域
本发明属于半导体设计领域,尤其涉及一种采用硬件加速单元提高芯片运行效率的方法,具体为一种硬件加速单元、硬件加速方法、芯片及存储介质。
背景技术
汽车应用涉及较多的三相无刷电机控制应用场景,例如:水泵、风扇、压缩机等,需使用FOC算法进行无刷电机的控制,该控制涉及矢量控制,需使用大量的除法、开根号、开平方根、三角函数等数学运算。
此类汽车电机应用所使用的计算控制芯片主频一般不高于48M,不同处理器内核对矢量控制所需的大量计算支持能力不足,主要体现在除法、开根号运算、开平方根、三角函数执行时间不能满足应用需求,或内核本身无法进行此类运算。
此类汽车电机应用所使用的计算控制芯片不带浮点运算单元,实际的电机矢量控制算法实现方案中,一般采用定点格式实现。一般而言,使用C语言编程时采用定标法来确定小数,此时变量定义为整型变量(int16或int32),只是通过假定小数点位于二进制码的哪一位来确定小数的精度。当用低1位表示小数时称为Q1,用低15位表示小数时称为Q15。int16所能表示的Q格式范围为Q0~Q15,int32所能表示的Q格式范围为Q0~Q31,对数据的放大的倍数为2,2^2,2^3,2^4,…。
因此,对于汽车应用涉及的三相无刷电机控制场景,主要存在如下缺陷:
1.汽车计算控制芯片内核对电机矢量控制所需的运算类型支持不足:计算执行时间过长或不支持。
2.在低成本却需要高性能的应用场景下,例如:水泵、风扇、压缩机等电机应用,需要使用复杂的矢量控制算法,导致中断负载率过高,不能满足应用需求。
3.少数汽车计算控制芯片包含除法和平方和开根号运算,但不能同时执行。
4.现有方案中少数厂家除法加速引擎支持32 bits /32 bits 除法,而实际的低成本电机场景中由于计算控制芯片的算力有限,且不支持浮点运算,因此必须采用低定点格式方式实现,一般采用Q15或Q14格式,采用32 bits /32 bits除法必要性不高,且会增加单个除法的计算时长。
5.现有方案中少数厂家平方和开根号加速引擎中用于计算两个32 bits有符号输入的计算,必要性不高,且会增加单次计算的时长。
6.现有方案不支持完整的电机控制支持所需的运算引擎方案:除法、开根号、开平方根、正弦、余弦、反正切等运算。
发明内容
为克服上述现有技术的不足,本发明提供一种采用硬件加速单元提高芯片运行效率的方法及装置,用以解决上述至少一个技术问题。
根据本发明说明书的一方面,提供一种硬件加速单元,包括多个并行运算的加速引擎,每一加速引擎实现一不同的数学运算,用于提供并行的除法运算、开根号运算、平方和开根号运算、正余弦运算或反正切运算;多个所述加速引擎分别通过总线与CPU进交互,且每一加速引擎对应一数据输入单元,用于按照运算顺序依次向各个数据输入单元进行数据写入,各个加速引擎根据运算顺序依次在总线空闲状态时读取对应数据输入单元的数据并执行对应的数学运算。
上述技术方案包含完整的电机控制支持所需的运算引擎,可以提供硬件加速的除法、开根号、平方和开根号、正余弦、反正切等运算,且各加速引擎可以同时运行而不会相互干扰,实现并行运算,能够支持复杂的矢量控制算法,解决现有三相无刷电机控制时存在的计算执行时间过长或不支持的问题。
可选地,每个加速引擎配置有BUSY标志位。不同加速引擎计算过程中,通过BUSY标志位判定是否计算完成,BUSY标志位清零后即可从加速引擎中获取计算结果。
可选地,所述总线可为高级高性能总线(Advanced High-performance Bus,AHB)。_
作为进一步的技术方案,用于除法运算的加速引擎,执行如下指令:
判断当前总线是否处于空闲状态;
在当前总线处于空闲状态时,判断输入除数是否为零;
在输入除数不为零时,对输入的除数和被除数取绝对值并进行除数比特流处理;
基于比特流处理后的数据,进行移位除法运算;
在输入的移位值位于可配置范围内时,进行除法递归计算;
组合不同迭代过程中的值,输出除法计算的商和余数。
上述技术方案用于除法的硬件加速计算,可以实现支持32位/24位的有、无符号除法,支持商和余数的计算,且包含除零标志指示,在准确可靠的前提下兼顾除法执行效率。
可选地,用于除法运算的加速引擎主要包括以下功能:有符号或者无符号整数除法运算;支持商和余数的计算;支持移位除法运算,方便不同定点数格式计算;写被除数寄存器后开始执行除法运算;除数为零时会产生除零错误标志位;32位被除数输入,24位除数输入,32位结果输出。
进一步地,所述加速引擎支持的除法计算公式为:x / y,x % y,(x<<z) / y,(x<<z) % y;其中,“/”表示除法求商计算,“%”表示除法求余数计算,“<<”表示左移移位操作;x为32位被除数输入,有符号除法时被除数范围为-(2^31) ~ (2^31-1),无符号除法时被除数范围为0 ~ (2^32-1);y为24位除数输入,有符号除法时除数范围为-(2^23) ~ (2^23-1),无符号除法时除数范围为0 ~ (2^24-1);z为5位移位输入,范围为0 ~ 31。
作为进一步的技术方案,用于平方和开根号运算和反正切运算的加速引擎,均执行如下指令:
判断当前总线是否处于空闲状态;
在当前总线处于空闲状态时,获取输入数据并进行绝对值处理;
执行迭代计算,并在达到设定的迭代计算次数后,通过计算类型标注位区分是平方和开根号运算或反正切运算。
作为进一步的技术方案,在通过计算类型标注位判定为反正切运算时,用于反正切运算的加速引擎还执行如下指令:对迭代计算结果进行四象限及边界处理,并以反正切格式输出计算结果。
可选地,用于反正切运算的加速引擎,其主要功能是计算两个输入值之商的反正切角度,并根据两个输入值的正负号进行象限处理,输出定点数格式为Q16的角度信号。
进一步地,所述加速引擎支持的反正切计算公式为:,其中,x,y为16位有符号数,范围为-(2^15) ~ (2^15-1),计算结果范围为(0~65535),重映射对应(0~360°)。
作为进一步的技术方案,在通过计算类型标注位判定为平方和开根号运算时,用于平方和开根号运算的加速引擎还执行如下指令:将输入数据写入寄存器,执行平方和开根号输出。
可选地,用于平方和开根号运算的加速引擎,其主要功能是计算两个输入值平方之和开根号的大小,广泛应用在电机矢量控制等高性能场景中,用于计算两个矢量电流或电压的幅值。
进一步地,所述加速引擎支持的平方和开根号计算公式为:,其中:x,y为16位有符号整数,范围为-(2^15) ~ (2^15-1)。
作为进一步的技术方案,用于正余弦运算的加速引擎,执行如下指令:
判断当前总线是否处于空闲状态;
在当前总线处于空闲状态时,获取输入数据并进行绝对值处理;
执行迭代角度查表,并在达到设定的迭代次数后,进行定点数格式处理,输出处理结果。
可选地,用于正余弦运算的加速引擎,其主要功能是计算角度的正余弦值大小,其中正余弦输入定点数格式为Q16,输出定点数格式为Q14。
进一步地,所述加速引擎支持的正余弦计算公式为:,/>,其中,x为16位无符号数,范围 (0~65535),重映射对应 (0~360°),正余弦运算输出为16位有符号数,范围(-16384 ~ 16383)重映射对应(-1 ~ 1)。
可选地,用于开根号运算的加速引擎,其主要功能是计算x的平方根值。
进一步地,所述加速引擎支持的开根号计算公式为,其中,x为32位无符号整数,范围为0 ~ (2^32-1)。
作为进一步的技术方案,所述数据输入单元为寄存器。
根据本发明说明书的一方面,提供一种硬件加速方法,采用所述的硬件加速单元实现,所述方法包括:
获取总线状态;
在总线处于空闲状态时,读取待运算数据;
执行与待运算数据对应的加速引擎,所述加速引擎包括用于除法运算的加速引擎、用于开根号运算的加速引擎、用于平方和开根号运算的加速引擎、用于正余弦运算的加速引擎和用于反正切运算的加速引擎;
读取加速引擎的计算结果。
根据本发明说明书的一方面,提供一种芯片,包括所述的硬件加速单元。
上述技术方案所设计的计算控制类芯片,适合支持复杂的矢量控制算法,能够降低系统中断负载率过高的现象,满足三相无刷电机矢量控制的应用场景需求。
根据本发明说明书的一方面,提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的硬件加速单元,或者,执行所述的硬件加速方法的步骤。
与现有技术相比,本发明的有益效果在于:
1.本发明构建了包括多个可并行运算的加速引擎的硬件加速单元,多个加速引擎通过AHB总线与CPU进行交互,可以提供硬件加速的除法、开根号、开平方根、三角函数等运算,能够支持复杂的矢量控制算法,降低系统中断负载率,满足三相无刷电机的矢量控制需求。
2.本发明的各加速引擎可以同时运行而不会相互干扰,实现并行运算。
3.本发明的除法加速引擎可实现支持32位/24位的有、无符号除法,支持商和余数的计算,且包含除零标志指示,在准确可靠的前提下兼顾除法执行效率。
4.本发明的平方和开根号加速引擎用于计算两个矢量电流或电压的幅值,支持Q0~Q15格式,输入范围为-32768~32767,仅需一个32bit寄存器进行数据输入,通过减少配置寄存器个数相应的减少了整个计算所需的时钟周期。
5.本发明的正余弦计算在Sin/Cos加速引擎中实现,计算角度的正余弦值大小,其中正余弦输入定点数格式为Q16,即输入范围为0~65536,输出定点数格式为Q14,即输出范围为-16384~16383,正余弦计算输出可同时得到。
6.本发明的反正切加速引擎计算两个输入值之商的反正切角度,并根据两个输入值的正负号进行象限处理,输出定点数格式为Q16的角度信号,即输出范围为0~65536。
附图说明
图1为根据本发明实施例的硬件加速单元结构示意图。
图2为根据本发明实施例的除法加速引擎的实现流程。
图3为根据本发明实施例的平方和开根号和反正切引擎的实现流程图。
图4为根据本发明实施例的正余弦引擎的实现流程图。
图5为根据本发明实施例的芯片结构示意图。
具体实施方式
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
本发明提供一种硬件加速单元,包括多个并行运算的加速引擎,每一加速引擎实现一不同的数学运算,用于提供并行的除法运算、开根号运算、平方和开根号运算、正余弦运算或反正切运算;多个所述加速引擎分别通过总线与CPU进交互,且每一加速引擎对应一数据输入单元,用于按照运算顺序依次向各个数据输入单元进行数据写入,各个加速引擎根据运算顺序依次在总线空闲状态时读取对应数据输入单元的数据并执行对应的数学运算。
图1为HAU结构框图,HAU (Hardware Acceleration Unit)硬件加速单元通过AHB总线与CPU进行交互,可以提供硬件加速的除法、开根号、开平方根、三角函数等运算,共包含5个加速引擎,分别为除法加速引擎、开根号加速引擎、平方和开根号加速引擎、正余弦加速引擎、反正切加速引擎。
不同加速引擎计算过程中,通过BUSY标志判定是否计算完成,BUSY标志位清零后即可从加速引擎中获取计算结果。
作为一种实施方式,除法加速引擎的实现方式具体包括:
定义除法计算的表达式为:
with |REM|<|D|ulp and Sign(REM) = Sign(X)
其中,X是被除数,D是除数,Q是商,REM是余数。
商的精度由ulp(unit of last position)来决定;如果ulp=1,商q则是整数;如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。
通过数字递归算法进行除法操作时迭代n次,每次迭代中产生基r的商,其中商的最高位先产生。经过n次迭代后除法完成,产生了n个商数,商Q表示为:
除法递归过程的表达式可以表示为:
Q的选择有三种情况:
当,则Q值为1, 即最高两比特为0.1;
当,则Q值为-1,即最高两比特为1.0;
其他情况,Q值为0;
如图2所示,除法加速引擎在开启HAU时钟后连接AHB时钟,判断输入除数是否为零,当出现除零情况时结束计算,除零指示标志置位。
需要说明的是,在判断输入除数是否为零之前,还要判断HAU模块的BUSY标志位确定当前总线是否处于空闲状态,并在总线处于空闲状态时,进行除数是否为零的判断。
若输入除数不为零,则对输入数据取绝对值并进行除数比特流处理。为方便不同定点数格式计算,加入移位除法运算处理进程,并判断除法输入的移位值是否在可配置范围内。当在正常范围内时进行除法递归过程计算,并通过不同迭代计算过程中的值,组合输出得到除法计算的商和余数的大小。
当计算类型为除法运算时,被除数在除法控制寄存器中输入,最大为24位。
除输入被除数外,除法寄存器还包含:被除数左移位数、结果值(商或余数)选择、除法符号类型(有符号/无符号)选择。
当设置为有符号除法时被除数范围为-(2^31) ~ (2^31-1),无符号除法时被除数范围为0 ~ (2^32-1),此时除法的所有配置及被除数只需写入一个32bit寄存器中即可存放和生效(正常需2个32bit寄存器),而每个寄存器写入需5~6个系统总线周期,通过减少配置寄存器个数,相应的减少了计算所需的时钟周期。
如图3所示,平方和开根号引擎和反正切引擎采用相同迭代算法实现,当开启HAU时钟后连接AHB时钟,判断HAU模块的BUSY标志位确定当前总线是否处于空闲状态,如是则获取输入参数的正负值极性,并进行绝对值处理开始迭代计算,当达到设定的迭代计算次数后,通过计算类型标注位区分是平方和开根号计算还是反正切计算。
当计算类型为反正切运算时,在Q16格式输出处理之前,对反正切结果进行象限及边界处理功能。
象限处理:
一象限Q16格式处理前计算输出:PI – z;
二象限Q16格式处理前计算输出:PI – z;
三象限Q16格式处理前计算输出:PI + z;
四象限Q16格式处理前计算输出:2*PI – z;
边界处理:
x0=0&y0<0时,计算输出:PI + z;
x0>0&y0=0时,计算输出:z;
结果特殊的Q16格式调整后,硬件反正切支持的计算公式如下:
其中:
x,y为16位有符号数,范围为-(2^15) ~ (2^15-1)。计算结果范围为 (0~65535),重映射对应 (0~360°)。
当计算类型为平方和开根号运算时,输入寄存器中输入x,y均为16位有符号整数,范围为-(2^15) ~ (2^15-1),此时只需写入一个32bit寄存器中即可存放和生效(正常需2个32bit寄存器),而每个寄存器写入需5~6个系统总线周期,通过减少配置寄存器个数,相应的减少了计算所需的时钟周期。
如图4所示,正余弦加速引擎在开启HAU时钟后连接AHB时钟,判断HAU模块的BUSY标志位确定当前总线是否处于空闲状态,如是则开始进行迭代角度查表,当达到设定的迭代计算次数后,再进行定点数格式处理并输出计算结果。
此过程中,正余弦计算输出可同时得到,其中正余弦输入定点数格式为Q16,输出定点数格式为Q14,即16位输入为无符号数,范围 (0~65535),重映射对应 (0~360°),16位输出为有符号数,范围 (-16384 ~ 16383)重映射对应(-1 ~ 1)。
本发明还提供一种硬件加速方法,可采用前面所述的硬件加速单元实现,所述方法包括:
步骤1,当加速引擎在开启硬件加速单元时钟后,连接AHB总线时钟,并判断硬件加速单元的BUSY标志位,以确定当前总线是否处于空前状态。
步骤2,在总线处于空闲状态时,读取待运算数据;待运算数据可通过寄存器读入。
步骤3,执行与待运算数据对应的加速引擎,所述加速引擎包括用于除法运算的加速引擎、用于开根号运算的加速引擎、用于平方和开根号运算的加速引擎、用于正余弦运算的加速引擎和用于反正切运算的加速引擎。
多个加速引擎可并行运算,相互之间不会干扰。
可选地,除法加速引擎执行指令如下:
判断输入除数是否为零;
在输入除数不为零时,对输入的除数和被除数取绝对值并进行除数比特流处理;
基于比特流处理后的数据,进行移位除法运算;
在输入的移位值位于可配置范围内时,进行除法递归计算;
组合不同迭代过程中的值,输出除法计算的商和余数。
可选地,平方和开根号加速引擎执行指令如下:
判断当前总线AHB是否处于空闲状态;
在当前总线AHB处于空闲状态时,获取输入数据并进行绝对值处理;
执行迭代计算,并在达到设定的迭代计算次数后,通过计算类型标注位区分是否为平方和开根号运算;
在通过计算类型标注位判定为平方和开根号运算时,将输入数据写入寄存器,执行平方和开根号输出。
可选地,反正切加速引擎执行指令如下:
判断当前总线AHB是否处于空闲状态;
在当前总线AHB处于空闲状态时,获取输入数据并进行绝对值处理;
执行迭代计算,并在达到设定的迭代计算次数后,通过计算类型标注位区分是否为反正切运算;
在通过计算类型标注位判定为反正切运算时,对迭代计算结果进行四象限及边界处理,并以反正切格式输出计算结果。
可选地,正余弦加速引擎执行指令如下:
判断当前总线AHB是否处于空闲状态;
在当前总线AHB处于空闲状态时,获取输入数据并进行绝对值处理;
执行迭代角度查表,并在达到设定的迭代次数后,进行定点数格式处理,输出处理结果。
步骤4,读取加速引擎的计算结果。不同加速引擎计算过程中,通过BUSY标志判定是否计算完成,BUSY标志位置位清零后即可从加速引擎中获取计算结果。
关于方法中各步骤的处理流程,以及各步骤之间的交互流程的描述可以参照上述硬件加速单元实施方式中的相关说明,在此不做赘述。
本发明还提供一种芯片,如图5所示,包括硬件加速单元、寄存器和总线,寄存器用于读入待运算数据;所述硬件加速单元与所述寄存器之间通过总线通信,使得所述硬件加速单元执行以下指令:
获取总线状态;
在总线处于空闲状态时,读取待运算数据;
执行与待运算数据对应的加速引擎,所述加速引擎包括用于除法运算的加速引擎、用于开根号运算的加速引擎、用于平方和开根号运算的加速引擎、用于正余弦运算的加速引擎和用于反正切运算的加速引擎;
读取加速引擎的计算结果。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述所述的硬件加速单元,或者执行上述方法实施例中所述的硬件加速方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本发明还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的硬件加速方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的产品的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本发明所提供的几个实施例中,应该理解到,所揭露的产品和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本说明书的描述中,参考术语“一个实施方式”、“某些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。
Claims (9)
1.一种硬件加速单元,其特征在于,包括多个并行运算的加速引擎,每一加速引擎实现一不同的数学运算,用于提供并行的除法运算、开根号运算、平方和开根号运算、正余弦运算或反正切运算;多个所述加速引擎分别通过总线与CPU进交互,且每一加速引擎对应一数据输入单元,用于按照运算顺序依次向各个数据输入单元进行数据写入,各个加速引擎根据运算顺序依次在总线空闲状态时读取对应数据输入单元的数据并执行对应的数学运算;
用于除法运算的加速引擎,执行如下指令:
判断当前总线是否处于空闲状态;
在当前总线处于空闲状态时,判断输入除数是否为零;
在输入除数不为零时,对输入的除数和被除数取绝对值并进行除数比特流处理;
基于比特流处理后的数据,进行移位除法运算;
在输入的移位值位于可配置范围内时,进行除法递归计算;
进一步包括:
定义除法计算的表达式为:
X=QD+REM
with|REM|<|D|ulp and Sign(REM)=Sign(X)
其中,X是被除数,D是除数,Q是商,REM是余数;
·商的精度由最后位置单元ulp来决定
·如果最后位置单元ulp=1,商q则是整数;
·如果最后位置单元ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数;
通过数字递归算法进行除法操作时迭代n次,每次迭代中产生基r的商,其中商的最高位先产生;经过n次迭代后除法完成,产生了n个商数,商Q表示为:
除法递归过程的表达式表示为:
Wi+1=rWj-D*Qi+1
Q的选择有三种情况:
当2Wi>=1/2,则Q值为1,即最高两比特为0.1;
当2Wi<-1/2,则Q值为-1,即最高两比特为1.0;
其他情况,Q值为0;
组合不同迭代过程中的值,输出除法计算的商和余数。
2.根据权利要求1所述的一种硬件加速单元,其特征在于,用于平方和开根号运算和反正切运算的加速引擎,均执行如下指令:
判断当前总线是否处于空闲状态;
在当前总线处于空闲状态时,获取输入数据并进行绝对值处理;
执行迭代计算,并在达到设定的迭代计算次数后,通过计算类型标注位区分是平方和开根号运算或反正切运算。
3.根据权利要求2所述的一种硬件加速单元,其特征在于,在通过计算类型标注位判定为反正切运算时,用于反正切运算的加速引擎还执行如下指令:对迭代计算结果进行四象限及边界处理,并以反正切格式输出计算结果。
4.根据权利要求2所述的一种硬件加速单元,其特征在于,在通过计算类型标注位判定为平方和开根号运算时,用于平方和开根号运算的加速引擎还执行如下指令:将输入数据写入寄存器,执行平方和开根号输出。
5.根据权利要求1所述的一种硬件加速单元,其特征在于,用于正余弦运算的加速引擎,执行如下指令:
判断当前总线是否处于空闲状态;
在当前总线处于空闲状态时,获取输入数据并进行绝对值处理;
执行迭代角度查表,并在达到设定的迭代次数后,进行定点数格式处理,输出处理结果。
6.根据权利要求1所述的一种硬件加速单元,其特征在于,所述数据输入单元为寄存器。
7.一种硬件加速方法,采用权利要求1-6中任一项所述的硬件加速单元实现,其特征在于,所述方法包括:
获取总线状态;
在总线处于空闲状态时,读取待运算数据;
执行与待运算数据对应的加速引擎,所述加速引擎包括用于除法运算的加速引擎、用于开根号运算的加速引擎、用于平方和开根号运算的加速引擎、用于正余弦运算的加速引擎和用于反正切运算的加速引擎;
读取加速引擎的计算结果。
8.一种芯片,其特征在于,包括如权利要求1-6中任一项所述的硬件加速单元。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6中任一项所述的硬件加速单元,或者,执行如权利要求7所述的硬件加速方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310963606.4A CN116679988B (zh) | 2023-08-02 | 2023-08-02 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310963606.4A CN116679988B (zh) | 2023-08-02 | 2023-08-02 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116679988A CN116679988A (zh) | 2023-09-01 |
CN116679988B true CN116679988B (zh) | 2023-10-27 |
Family
ID=87782221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310963606.4A Active CN116679988B (zh) | 2023-08-02 | 2023-08-02 | 硬件加速单元、硬件加速方法、芯片及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116679988B (zh) |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314331A (zh) * | 2011-08-02 | 2012-01-11 | 深圳市国微电子股份有限公司 | 除法器及其实现方法 |
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN102621563A (zh) * | 2012-03-20 | 2012-08-01 | 东南大学 | 一种基于fpga的gps软件接收机信号跟踪方法及其系统 |
CN102722469A (zh) * | 2012-05-28 | 2012-10-10 | 西安交通大学 | 基于浮点运算单元的基本超越函数运算方法及其协处理器 |
CN103257341A (zh) * | 2013-03-21 | 2013-08-21 | 西安电子科技大学 | 基于fpga的自聚焦算法快速实现方法 |
CN109635241A (zh) * | 2018-12-17 | 2019-04-16 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 求解对称或厄密对称正定矩阵逆矩阵方法 |
CN109726806A (zh) * | 2017-10-30 | 2019-05-07 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
CN111431557A (zh) * | 2020-06-12 | 2020-07-17 | 长沙北斗产业安全技术研究院有限公司 | 适用于多模调制体制的信号跟踪方法及信号跟踪系统 |
CN111595468A (zh) * | 2020-05-12 | 2020-08-28 | 浙江理工大学 | 一种补偿载波相位延迟非线性误差的pgc相位解调方法 |
CN111723336A (zh) * | 2020-06-01 | 2020-09-29 | 南京大学 | 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 |
CN111884552A (zh) * | 2020-07-02 | 2020-11-03 | 华中科技大学 | 基于电压反馈的永磁同步电机弱磁优化控制方法及系统 |
CN112486455A (zh) * | 2020-11-27 | 2021-03-12 | 南京大学 | 一种基于cordic方法求复数的n次开根号的硬件计算系统及其计算方法 |
CN112526208A (zh) * | 2020-12-23 | 2021-03-19 | 武汉第二船舶设计研究所(中国船舶重工集团公司第七一九研究所) | 一种基于高耦合度迭代模型的电能质量测量系统及方法 |
CN114981779A (zh) * | 2020-08-03 | 2022-08-30 | 辉达公司 | 用于实时深度学习分析操作的动态负载均衡 |
CN115118191A (zh) * | 2022-07-25 | 2022-09-27 | 湖南进芯电子科技有限公司 | 一种电机驱动控制方法、系统、装置及可读存储介质 |
US11494321B1 (en) * | 2021-09-30 | 2022-11-08 | Amazon Technologies, Inc. | State buffer memloc reshaping |
CN115904313A (zh) * | 2022-11-08 | 2023-04-04 | 中科南京智能技术研究院 | 一种应用于智能传感器的处理器 |
CN116384443A (zh) * | 2021-12-31 | 2023-07-04 | 想象技术有限公司 | 具有可配置池化处理单元的神经网络加速器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11178063B2 (en) * | 2017-06-30 | 2021-11-16 | Intel Corporation | Remote hardware acceleration |
US20220059189A1 (en) * | 2020-07-14 | 2022-02-24 | The Regents Of The University Of California | Methods, circuits, and articles of manufacture for searching within a genomic reference sequence for queried target sequence using hyper-dimensional computing techniques |
-
2023
- 2023-08-02 CN CN202310963606.4A patent/CN116679988B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314331A (zh) * | 2011-08-02 | 2012-01-11 | 深圳市国微电子股份有限公司 | 除法器及其实现方法 |
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN102621563A (zh) * | 2012-03-20 | 2012-08-01 | 东南大学 | 一种基于fpga的gps软件接收机信号跟踪方法及其系统 |
CN102722469A (zh) * | 2012-05-28 | 2012-10-10 | 西安交通大学 | 基于浮点运算单元的基本超越函数运算方法及其协处理器 |
CN103257341A (zh) * | 2013-03-21 | 2013-08-21 | 西安电子科技大学 | 基于fpga的自聚焦算法快速实现方法 |
CN109726806A (zh) * | 2017-10-30 | 2019-05-07 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
CN109635241A (zh) * | 2018-12-17 | 2019-04-16 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 求解对称或厄密对称正定矩阵逆矩阵方法 |
CN111595468A (zh) * | 2020-05-12 | 2020-08-28 | 浙江理工大学 | 一种补偿载波相位延迟非线性误差的pgc相位解调方法 |
CN111723336A (zh) * | 2020-06-01 | 2020-09-29 | 南京大学 | 一种采用循环迭代方式的基于cholesky分解的任意阶矩阵求逆硬件加速系统 |
CN111431557A (zh) * | 2020-06-12 | 2020-07-17 | 长沙北斗产业安全技术研究院有限公司 | 适用于多模调制体制的信号跟踪方法及信号跟踪系统 |
CN111884552A (zh) * | 2020-07-02 | 2020-11-03 | 华中科技大学 | 基于电压反馈的永磁同步电机弱磁优化控制方法及系统 |
CN114981779A (zh) * | 2020-08-03 | 2022-08-30 | 辉达公司 | 用于实时深度学习分析操作的动态负载均衡 |
CN112486455A (zh) * | 2020-11-27 | 2021-03-12 | 南京大学 | 一种基于cordic方法求复数的n次开根号的硬件计算系统及其计算方法 |
CN112526208A (zh) * | 2020-12-23 | 2021-03-19 | 武汉第二船舶设计研究所(中国船舶重工集团公司第七一九研究所) | 一种基于高耦合度迭代模型的电能质量测量系统及方法 |
US11494321B1 (en) * | 2021-09-30 | 2022-11-08 | Amazon Technologies, Inc. | State buffer memloc reshaping |
CN116384443A (zh) * | 2021-12-31 | 2023-07-04 | 想象技术有限公司 | 具有可配置池化处理单元的神经网络加速器 |
CN115118191A (zh) * | 2022-07-25 | 2022-09-27 | 湖南进芯电子科技有限公司 | 一种电机驱动控制方法、系统、装置及可读存储介质 |
CN115904313A (zh) * | 2022-11-08 | 2023-04-04 | 中科南京智能技术研究院 | 一种应用于智能传感器的处理器 |
Non-Patent Citations (1)
Title |
---|
开方运算单元的高层次综合设计;胡学良, 张春, 王志华;微电子学与计算机(第08期);第36-38页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116679988A (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6333439B2 (ja) | 命令に応じた丸め処理の実行 | |
EP3866001B1 (en) | Systems and methods for performing 16-bit floating-point vector dot product instructions | |
JP5731937B2 (ja) | ベクトル浮動小数点引数削減 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
TWI525538B (zh) | 超級乘加(super madd)指令技術 | |
JPH05241794A (ja) | 超越関数近似装置及びその方法 | |
CN103180820A (zh) | 用于执行浮点除法的方法和装置 | |
CN116028013B (zh) | 一种fpga除法运算的优化方法、装置、除法器和介质 | |
CN118331539B (zh) | 一种除法器及数据处理方法、系统、设备、计算机介质 | |
CN116466910A (zh) | 一种基于浮点数的查表方法、装置、电子设备及存储介质 | |
CN116679988B (zh) | 硬件加速单元、硬件加速方法、芯片及存储介质 | |
KR100847934B1 (ko) | 스케일링된 정수를 사용하는 부동 소수점 연산 | |
US20190286418A1 (en) | Architecture and instruction set to support integer division | |
CN117908827A (zh) | 浮点数据精度转换方法和装置 | |
CN116382782A (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
WO2005079435A2 (en) | Fast method for calculating powers of two as a floating point data type | |
CN109669667B (zh) | 一种在定点dsp芯片上实现的数据处理方法及装置 | |
EP1700208B1 (en) | Apparatus and method to avoid floating point control instructions in floating point to integer conversion | |
US20050010632A1 (en) | Digital signal processor based on jumping floating-point arithmetic | |
US20090073179A1 (en) | Addressing on chip memory for block operations | |
US20090094306A1 (en) | Cordic rotation angle calculation | |
CN115220691A (zh) | 运算电路、运算方法、装置、芯片、板卡、设备及介质 | |
CN117149132A (zh) | 数据处理方法、装置、设备和介质 | |
CN111324856A (zh) | 计算机可读存储介质、计算机实施的方法和计算逻辑区段 | |
CN116957013A (zh) | 浮点型卷积算子加速方法、装置、电子设备及存储介质 |
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 |