CN116306707A - 一种计算x&(x-1)的加速电路及计算设备 - Google Patents

一种计算x&(x-1)的加速电路及计算设备 Download PDF

Info

Publication number
CN116306707A
CN116306707A CN202310247298.5A CN202310247298A CN116306707A CN 116306707 A CN116306707 A CN 116306707A CN 202310247298 A CN202310247298 A CN 202310247298A CN 116306707 A CN116306707 A CN 116306707A
Authority
CN
China
Prior art keywords
bit
gate
computing module
input
calculation
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.)
Pending
Application number
CN202310247298.5A
Other languages
English (en)
Inventor
尚德龙
孙拓拓
刘伟佳
李犇
乔树山
周玉梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongke Nanjing Intelligent Technology Research Institute
Original Assignee
Zhongke Nanjing Intelligent Technology Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongke Nanjing Intelligent Technology Research Institute filed Critical Zhongke Nanjing Intelligent Technology Research Institute
Priority to CN202310247298.5A priority Critical patent/CN116306707A/zh
Publication of CN116306707A publication Critical patent/CN116306707A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/16Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种计算x&(x‑1)的加速电路及计算设备,本发明采用依次串联的第一计算模块B0~Bn‑2和第二计算模块Bn‑1,第二计算模块Bn‑1对应输入二进制的最高位,第一计算模块B0~Bn‑2对应输入二进制的其余位,各计算模块根据输入二进制对应位的数值和上一级计算模块的一路输出,获得输出二进制对应位的数值和下一级计算模块的输入,实现计算x&(x‑1)的加速电路,可解放ALU的计算资源,降低计算资源的消耗。

Description

一种计算x&(x-1)的加速电路及计算设备
技术领域
本发明涉及一种计算x&(x-1)的加速电路及计算设备,属于计算机领域。
背景技术
随着计算数据的以指数级增长,计算机的算术逻辑单元(ArithmeticlogicalUnit,ALU)需要承担更多的计算压力,耗费更多的计算资源,ALU在计算过程中是对计算对象逐步进行计算,并且将每一步计算的结果保存到寄存器之后,再进行下一步的计算,会使用大量的处理器资源,调用诸多计算模块和逻辑模块,不仅耗费较多时间同时耗费大量资源。
目前,采用加速电路实现ALU的部分计算功能,使得计算机ALU模块只需要进行数据的传输调度和加速器的调用,而不用参与到数据的计算处理当中,可以极大的降低了功耗,从而释放更多的资源。
x&(x-1)计算是为了将输入的二进制数据最右位的1变为0,使用x&(x-1)进行位运算的一个常见应用是计算一个正整数的二进制表示中1的个数,这个算法被称为BrianKernighan算法。可以通过重复执行x&(x-1)操作,直到x的值变为0,来计算x的二进制表示中1的个数。每次执行x&(x-1)操作都会将最后一个1变成0,所以需要执行的操作次数就是x的二进制表示中1的个数。它可以用于各种需要高速位运算的应用场景,例如计算机网络、图像处理、嵌入式系统、数据压缩等。x&(x-1)若采用ALU进行计算,则需要消耗大量的资源,为了释放资源现在急需计算x&(x-1)的加速电路。
发明内容
本发明提供了一种计算x&(x-1)的加速电路及计算设备,解决了背景技术中披露的问题。
为了解决上述技术问题,本发明所采用的技术方案是:
一种计算x&(x-1)的加速电路,包括依次串联的第一计算模块B0~Bn-2和第二计算模块Bn-1
第一计算模块B0~Bn-2分别与x的0位至n-2位对应;其中,x为输入所述加速电路的n位二进制数;
第一计算模块B0的两路输入分别为A0和0,两路输出分别为A0和0;其中,0作为y的0位数值,A0作为第一计算模块B1的输入,A0为x的0位数值;
第一计算模块Bi的两路输入分别为Ai
Figure BDA0004126416160000021
两路输出分别为/>
Figure BDA0004126416160000022
和/>
Figure BDA0004126416160000023
其中,/>
Figure BDA0004126416160000024
作为y的i位数值,/>
Figure BDA0004126416160000025
作为第一计算模块Bi+1的输入,Ai为x的i位数值,y为所述加速电路输出的n位二进制数,i和j均为整数,0<i≤n-2;
第二计算模块Bn-1与x的n-1位对应,第二计算模块Bn-1两路输入分别为An-1
Figure BDA0004126416160000026
一路输出为/>
Figure BDA0004126416160000027
其中,An-1为x的n-1位数值。
第一计算模块包括与门和或门,第一计算模块的两路输入为与门的输入,也是或门的输入,与门的输出作为对应的y位数值,或门的输出作为下一级第一计算模块或第二计算模块的输入。
第二计算模块为与门。
与门为二输入与门。
或门为二输入或门。
一种计算设备,包括中央处理器和所述的加速电路;中央处理器的算术逻辑单元向所述的加速电路输入x,接收所述的加速电路反馈的y。
本发明所达到的有益效果:本发明采用依次串联的第一计算模块B0~Bn-2和第二计算模块Bn-1,第二计算模块Bn-1对应输入二进制的最高位,第一计算模块B0~Bn-2对应输入二进制的其余位,各计算模块根据输入二进制对应位的数值和上一级计算模块的一路输出,获得输出二进制对应位的数值和下一级计算模块的输入,实现计算x&(x-1)的加速电路,可解放ALU的计算资源,降低计算资源的消耗。
附图说明
图1为加速电路的示意图;
图2为迭代结构。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,一种计算x&(x-1)的加速电路,包括依次串联的第一计算模块B0~Bn-2和第二计算模块Bn-1
第一计算模块B0~Bn-2分别与x的0位至n-2位对应,第二计算模块Bn-1与x的n-1位对应;其中,x为输入所述加速电路的n位二进制数。
第一计算模块B0的两路输入分别为A0和0,两路输出分别为A0和0;其中,0作为y的0位数值,A0作为第一计算模块B1的输入,A0为x的0位数值;第一计算模块Bi的两路输入分别为Ai
Figure BDA0004126416160000031
两路输出分别为/>
Figure BDA0004126416160000032
和/>
Figure BDA0004126416160000033
其中,/>
Figure BDA0004126416160000034
作为y的i位数值,/>
Figure BDA0004126416160000035
作为第一计算模块Bi+1的输入,Ai为x的i位数值,y为所述加速电路输出的n位二进制数,i和j均为整数,0<i≤n-2。
第二计算模块Bn-1两路输入分别为An-1
Figure BDA0004126416160000041
一路输出为/>
Figure BDA0004126416160000042
其中,An-1为x的n-1位数值。
上述电路采用依次串联的第一计算模块B0~Bn-2和第二计算模块Bn-1,第二计算模块Bn-1对应输入二进制的最高位,第一计算模块B0~Bn-2对应输入二进制的其余位,各计算模块根据输入二进制对应位的数值和上一级计算模块的一路输出,获得输出二进制对应位的数值和下一级计算模块的输入,实现计算x&(x-1)的加速电路,可解放ALU的计算资源,降低计算资源的消耗。
x&(x-1)计算是为了将输入的二进制数最右位的1变为0,如输入11110010计算后的结果为11110000,即将1位变为0,由于是按位计算,可将x&(x-1)视为x与二进制数-1(即二进制数11111111)相加再与x进行与运算。利用进位加法器的思想,将每位的计算结果作为更高一位的输入之一。
因此可设计一个迭代结构,如图2所示,与门输入为低一位的进位输出和该位的数据输入,与门输出为该位计算后的输出;或门的输入为低一位的进位输出和该位的数据输入,或门的输出为该位计算后向更高一位的进位输出。
定义当前为i位,图中,Ci-1为前一位的进位输入,Ai为输入二进制数(即x)的i位数值,Ci为计算后向高一位的进位,Yi为每位计算后的输出,即输出二进制数的i位。将x&(x-1)公式为两部分计算,一部分为与运算,另一部分为加减法运算。在加减法运算中引入加法器计算思想,将x-1视为加法器的输出Si那么根据加法器的计算公式可得:
Figure BDA0004126416160000043
又C0=A0 Y0=0
C1=A1+A0 Y1=A1·A0
C2=A2+A1+A0 Y2=A2·(A1+A0)
Figure BDA0004126416160000051
Figure BDA0004126416160000052
因此每位输出和输入之间的关系为
Figure BDA0004126416160000053
基于上述分析,加速电路包括次串联的第一计算模块B0~Bn-2和第二计算模块Bn-1,以8位二进制数为例,那么就包括7个第一计算模块和1个第二计算模块,其中,第一计算模块为上述的迭代结构,包括与门和或门,具体为二输入与门和二输入或门,第一计算模块的两路输入为与门的输入,也是或门的输入,与门的输出作为对应的y位数值,或门的输出作为下一级第一计算模块或第二计算模块的输入;第二计算模块为去除或门后的迭代结构,即仅保留与门。
假设输入二进制数x为11110100,经过上述加速器处理后的结果应为11110000。在加速器中首先计算最低位,即0位,由于最低位输入为0,即A0为0,在和0进行与运算之后输出结果Y0也为0,同时在和0进行或运算之后输出结果C0为0,并且C0作为Y1计算的输入之一与该位输入A1进行与运算。当计算到最右面1所在位的时候,由于前面低位输入都是0,所以根据进位公式
Figure BDA0004126416160000054
得进位输入为0,该位的输入1和0进行与运算的情况下会将该位输出变为0,该位输入为1在经过或运算之后得到输出进位为1,由于1与任何数值进行与运算的时候不改变数值结果,所以在之后的更高位的计算中将不改变输入的数值。
从上面的例子可以看出,上述加速电路可以实现将输入最右一位的1计算后变成0,那么如果是二的幂数或者0,如10000000,那么计算后的输入结果为00000000,所以也可以将根据输出从而判断输入是否是二的幂数或0。
上述加速电路可以使用标准单元库电路元件进行设计,设计流程和结果简便,同时只使用简单的与门和或门设计,设计结果面积小。
基于相同的技术方案,本发明还公开了一种计算设备,包括中央处理器和上述的加速电路;中央处理器的算术逻辑单元向所述的加速电路输入x,接收所述的加速电路反馈的y。
该计算设备的算术逻辑单元调用加速电路,在算术逻辑单元无需进行复杂的逻辑计算,只需要调度该加速器,使用传输数据,极大的解放了ALU的计算资源,降低计算资源的消耗。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (6)

1.一种计算x&(x-1)的加速电路,其特征在于,包括依次串联的第一计算模块B0~Bn-2和第二计算模块Bn-1
第一计算模块B0~Bn-2分别与x的0位至n-2位对应;其中,x为输入所述加速电路的n位二进制数;
第一计算模块B0的两路输入分别为A0和0,两路输出分别为A0和0;其中,0作为y的0位数值,A0作为第一计算模块B1的输入,A0为x的0位数值;
第一计算模块Bi的两路输入分别为Ai
Figure FDA0004126416150000011
两路输出分别为/>
Figure FDA0004126416150000012
和/>
Figure FDA0004126416150000013
其中,/>
Figure FDA0004126416150000014
作为y的i位数值,/>
Figure FDA0004126416150000015
作为第一计算模块Bi+1的输入,Ai为x的i位数值,y为所述加速电路输出的n位二进制数,i和j均为整数,0<i≤n-2;
第二计算模块Bn-1与x的n-1位对应,第二计算模块Bn-1两路输入分别为An-1
Figure FDA0004126416150000016
一路输出为/>
Figure FDA0004126416150000017
其中,An-1为x的n-1位数值。
2.根据权利要求1所述的计算x&(x-1)的加速电路,其特征在于,第一计算模块包括与门和或门,第一计算模块的两路输入为与门的输入,也是或门的输入,与门的输出作为对应的y位数值,或门的输出作为下一级第一计算模块或第二计算模块的输入。
3.根据权利要求1所述的计算x&(x-1)的加速电路,其特征在于,第二计算模块为与门。
4.根据权利要求2或3所述的计算x&(x-1)的加速电路,其特征在于,与门为二输入与门。
5.根据权利要求2所述的计算x&(x-1)的加速电路,其特征在于,或门为二输入或门。
6.一种计算设备,其特征在于,包括中央处理器和权利要求1~5任一项所述的加速电路;中央处理器的算术逻辑单元向所述的加速电路输入x,接收所述的加速电路反馈的y。
CN202310247298.5A 2023-03-15 2023-03-15 一种计算x&(x-1)的加速电路及计算设备 Pending CN116306707A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310247298.5A CN116306707A (zh) 2023-03-15 2023-03-15 一种计算x&(x-1)的加速电路及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310247298.5A CN116306707A (zh) 2023-03-15 2023-03-15 一种计算x&(x-1)的加速电路及计算设备

Publications (1)

Publication Number Publication Date
CN116306707A true CN116306707A (zh) 2023-06-23

Family

ID=86790014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310247298.5A Pending CN116306707A (zh) 2023-03-15 2023-03-15 一种计算x&(x-1)的加速电路及计算设备

Country Status (1)

Country Link
CN (1) CN116306707A (zh)

Similar Documents

Publication Publication Date Title
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
US20210349692A1 (en) Multiplier and multiplication method
US6601077B1 (en) DSP unit for multi-level global accumulation
KR101603471B1 (ko) 디지털 신호 프로세서들에서의 신호 처리를 위한 시스템 및 방법
US9495131B2 (en) Multi-input and binary reproducible, high bandwidth floating point adder in a collective network
TWI763079B (zh) 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置
CN114816331B (zh) 具有时钟选通的用于执行矩阵乘法的硬件单元
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
CN108256644B (zh) 微处理器电路以及执行神经网络运算的方法
US20230221924A1 (en) Apparatus and Method for Processing Floating-Point Numbers
CN108256638B (zh) 微处理器电路以及执行神经网络运算的方法
CN111936965A (zh) 随机舍入逻辑
US11847429B2 (en) Apparatus and method for processing floating-point numbers
CN113010148B (zh) 一种适用于混合精度神经网络的定点乘加运算单元及方法
Tan et al. Multiple-mode-supporting floating-point FMA unit for deep learning processors
EP4064036A1 (en) Floating-point number multiplication computation method and apparatus, and arithmetical logic unit
Lyu et al. PWL-based architecture for the logarithmic computation of floating-point numbers
US20200192633A1 (en) Arithmetic processing device and method of controlling arithmetic processing device
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
CN116306707A (zh) 一种计算x&amp;(x-1)的加速电路及计算设备
CN116306706A (zh) 一种计算x|(x+1)的加速电路及计算设备
CN209895329U (zh) 乘法器
CN112685001A (zh) 一种Booth乘法器及其运算方法
CN117075842B (zh) 十进制加法器及十进制运算方法
CN111142840A (zh) 基于fpga的数据计算方法和装置

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