CN112416294B - 处理器及其二进制累加方法和计算机可读介质 - Google Patents
处理器及其二进制累加方法和计算机可读介质 Download PDFInfo
- Publication number
- CN112416294B CN112416294B CN202011307927.1A CN202011307927A CN112416294B CN 112416294 B CN112416294 B CN 112416294B CN 202011307927 A CN202011307927 A CN 202011307927A CN 112416294 B CN112416294 B CN 112416294B
- Authority
- CN
- China
- Prior art keywords
- data
- accumulation
- order
- binary
- result
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- 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/30098—Register arrangements
Abstract
本申请涉及计算机硬件领域,公开了一种处理器及其二进制累加方法和计算机可读介质。本申请中的处理器采用两个加法器进行累加操作,使用低位加法器将二进制操作数与累加寄存器的低位区域中保存数据相加得到累加结果的低位数据,在同一时钟周期中使用高位加法器将二进制操作数对应的符号位扩展数据与累加寄存器的高位区域中保存数据相加,得到累加结果的高位数据。这种方式实现了计算效率的提高,提升了累加运算的计算速度。还通过低位加法器的进位信号和二进制操作数的符号位数据的异或运算结果来控制是否将累加结果的高位数据写入累加寄存器的高位区域,无需在每个时钟周期将累加结果的高位数据写入累加寄存器,降低了累加寄存器的动态功耗。
Description
技术领域
本申请涉及计算机硬件技术领域,特别涉及一种处理器及其二进制累加方法和计算机可读介质。
背景技术
二进制数的累加运算在中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、协处理器(Coprocessor)中是很常见的运算。二进制的累加运算是将多个位宽相同的二进制操作数相加,每个时钟周期中相加的二进制操作数不一定相等,相加次数为预先设定的累加次数,最终得到二进制累加结果。
当前在处理器中实现二进制数的累加运算是使用一个加法器对二进制操作数进行累加,如图1所示,加法器102在每个时钟周期中执行一次与二进制操作数103相关的二进制加法,然后将得到的二进制累加结果104写回到累加寄存器101中。由于现有的累加运算方法中,二进制操作数103的位宽与二进制累加结果104的位宽一般不同,故需要将二进制操作数103的位宽扩展到二进制累加结果104的位宽后再进行相加,相加的次数越多,加法器102的计算时间越长;另外,在累加运算的每个时钟周期都会将二进制累加结果104写回到累加寄存器101中,使得累加寄存器101在每个时钟周期都会产生相应的动态功耗。
发明内容
本申请实施例提供了一种处理器及其二进制累加方法和计算机可读介质。
第一方面,本申请实施例提供了一种处理器,其特征在于,包括累加装置,所述累加装置包括低位加法器、高位加法器、累加寄存器和异或模块,其中,
低位加法器,用于将二进制操作数与累加寄存器的低位区域中保存数据进行二进制相加,得到累加结果的低位数据;
高位加法器,用于将二进制操作数对应的符号位扩展数据与累加寄存器的高位区域中保存数据进行二进制相加,得到累加结果的高位数据;
累加寄存器,分为低位区域和高位区域,用于接收累加结果的高位数据和低位数据,将累加结果的低位数据写入累加寄存器的低位区域,并根据累加寄存器的高位区域对应的使能信号端所接收的使能信号确定是否将累加结果的高位数据写入累加寄存器的高位区域,其中,使能信号表示累加寄存器的高位区域是否接受累加结果的高位数据的写入;
异或模块,用于对低位加法器的进位信号和二进制操作数的符号位数据进行异或运算,并将异或运算结果输出至累加寄存器的高位区域对应的使能信号端,其中,在异或运算结果为置位数据时,使能信号表示可以将累加结果的高位数据写入累加寄存器的高位区域,在异或运算结果为复位数据时,使能信号表示不将累加结果的高位数据写入所述累加寄存器的高位区域。
在此,置位数据为二进制数“1”,表示逻辑上为“真”,复位数据为二进制数“0”,表示逻辑上为“假”。在该方案中,处理器采用两个加法器并行进行累加操作,使用低位加法器将二进制操作数直接与累加寄存器的低位区域中保存数据相加得到累加结果的低位数据,在同一个时钟周期中使用高位加法器将二进制操作数对应的符号位扩展数据与累加寄存器的高位区域中保存数据相加,得到累加结果的高位数据。通过在一个时钟周期中并行进行两个加法器的相加过程,实现了计算效率的提高,提升了累加运算的计算速度。另外,通过低位加法器的进位信号和二进制操作数的符号位数据的异或运算结果来控制是否将累加结果的高位数据写入累加寄存器的高位区域,使得保存在累加寄存器中的数据为正确的累加结果。在上述第一方面的一种可能的实现中,低位加法器和高位加法器的位宽之和与累加结果的位宽相同。
即在该方案中,低位加法器和高位加法器的位宽无需与累加结果的位宽相同,由于加法器的位宽越大,计算时间越长,减少两个加法器的位宽且让两个加法器并行运行,可以减少计算的时间。
在上述第一方面的一种可能的实现中,低位加法器的位宽、累加结果的低位数据的位宽、累加寄存器的低位区域中保存数据的位宽与二进制操作数的位宽相同;高位加法器的位宽为累加结果的位宽与二进制操作数的位宽之差;累加结果的高位数据的位宽、累加寄存器的高位区域的位宽与高位加法器的位宽相同。
即在该方案中,根据二进制操作数的位宽来确定低位加法器的位宽、累加结果的低位数据的位宽和累加寄存器的低位区域中保存数据的位宽,使得可以直接根据二进制操作数来进行计算和相关结果数据的保存,无需对二进制操作数的位宽进行扩展,避免使用与二进制操作数的位宽不匹配的加法器或结果数据保存设备所产生的计算性能损耗。另外,根据累加结果的位宽与二进制操作数的位宽之差确定高位加法器的位宽、累加结果的高位数据的位宽、累加寄存器的高位区域的位宽,使得与累加结果的高位数据的计算和相关结果数据的保存相匹配,避免不匹配导致的计算性能损耗。
在上述第一方面的一种可能的实现中,处理器通过以下方式生成二进制操作数对应的符号位扩展数据:
将二进制操作数对应的符号位扩展数据的最低有效位赋值为置位数据,并使用二进制操作数的符号位数据为符号位扩展数据的其它二进制位进行赋值。
即在该方案中,将符号位扩展数据的最低有效位赋值为“1”,再使用二进制操作数的符号位数据为其它二进制位进行赋值,通过这种方式生成的符号位扩展数据可直接用于累加结果的高位数据的计算,无需处理低位加法器产生的进位,实现了低位加法器的相加过程和高位加法器相加过程的分离,低位加法器的相加过程和高位加法器的相加过程没有顺序方面的限制。
在上述第一方面的一种可能的实现中,上述处理器还包括时钟门控模块,时钟门控模块用于接收异或模块的异或运算结果,并根据异或运算结果生成时钟门控信号,再将时钟门控信号输出至累加寄存器的高位区域对应的使能信号端。
即在该方案中,通过时钟门控模块实现对累加寄存器的高位区域的写入控制,在时钟门控信号为置位信号(即置位数据“1”)的情况下才将累加结果的高位数据写入累加寄存器的高位区域,避免在每个时钟周期都对累加寄存器的高位区域进行写入,从而降低了累加寄存器的动态功耗。
在上述第一方面的一种可能的实现中,在二进制操作数与累加寄存器的低位区域中保存数据进行二进制相加的过程中在最高位产生进位的情况下,低位加法器将进位信号赋值为置位数据。
即在该方案中,在二进制操作数与累加寄存器的低位区域中数据相加在最高位产生了进位的情况下,该进位无法在低位加法器中处理,也不能保存在累加结果的低位数据中,因此将该进位保存至进位信号,即将进位信号赋值为“1”,再输出到异或模块进行处理。通过这种方式,可以避免直接使用累加结果的高位数据对进位进行处理所带来的低位加法器和高位加法器之间的前后关联。
在上述第一方面的一种可能的实现中,累加寄存器的低位区域对应的使能信号端接收的使能信号为置位信号。
即在该方案中,每个时钟周期都将累加结果的低位数据写入累加寄存器的低位区域,从而保存当前时钟周期正确的累加结果的低位数据,供下一时钟周期中使用该低位数据与二进制操作数进行下一次相加。
第二方面,本申请实施例提供了一种二进制累加方法,其特征在于,包括:
在当前时钟周期将二进制操作数和上一时钟周期的累加结果的低位数据进行二进制相加,得到当前时钟周期的累加结果的低位数据和进位数据,并且
将二进制操作数对应的符号位扩展数据和上一时钟周期的累加结果的高位数据进行二进制相加,得到当前时钟周期的累加结果的高位数据;
根据进位数据和符号位数据的异或运算结果,确定是否使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新,其中,在异或运算结果为置位数据时,表示可以使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新,并且
使用当前时钟周期的累加结果的低位数据对上一时钟周期的累加结果的低位数据进行更新;
增加当前时钟周期的累加次数,其中,在累加次数达到预设累加次数的情况下,输出由累加结果的低位数据和累加结果的高位数据组合得到的累加结果。
即在该方案中,分别计算累加结果的高位数据和低位数据,每个计算过程相对独立,再根据计算累加结果的低位数据时产生的进位数据和二进制操作数的符号位数据进行异或运算,根据异或运算结果来确定是否用当前时钟周期得到的累加结果的高位数据对上一时钟周期得到的累加结果的高位数据进行替换,在异或运算结果为“1”(即进位数据和符号位数据不同)的情况下才进行替换,从而使得在分别计算累加结果的低位数据和高位数据时得到正确的累加结果。
在上述第二方面的一种可能的实现中,在二进制操作数和上一时钟周期的累加结果的低位数据进行二进制相加的过程中在最高位产生进位的情况下,将进位数据赋值为置位数据。
即在该方案中,在二进制操作数与上一时钟周期的累加结果的低位数据相加在最高位产生了进位的情况下,该进位无法保存在累加结果的低位数据中,因此将该进位保存至进位数据,即将进位数据赋值为“1”,再作为异或运算的输入。通过这种方式,可以避免直接将进位加到累加结果的高位数据所导致的串行计算,进而避免计算效率的降低。
在上述第二方面的一种可能的实现中,二进制操作数对应的符号位扩展数据的生成方法,包括:
将二进制操作数对应的符号位扩展数据的最低有效位赋值为置位数据;
使用二进制操作数的符号位数据为符号位扩展数据的其它二进制位进行赋值。
即在该方案中,将符号位扩展数据的最低有效位赋值为“1”,再使用二进制操作数的符号位数据为其它二进制位进行赋值,通过这种方式生成的符号位扩展数据可直接用于累加结果的高位数据的计算,无需处理计算累加结果的低位数据时产生的进位,实现了累加结果的低位数据的计算过程和累加结果的高位数据的计算过程的互不干扰,两种计算过程没有顺序方面的限制。
在上述第二方面的一种可能的实现中,根据进位数据和符号位数据的异或运算结果,确定是否使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新,还包括:
根据进位数据和符号位数据的异或运算结果通过时钟门控技术得到时钟门控输出数据,根据时钟门控输出数据确定是否使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新。
即在该方案中,通过时钟门控技术实现对累加结果的高位数据的写入控制,在时钟门控输出数据为“1”的情况下才使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行替换,避免在每个时钟周期都对累加结果的高位数据进行替换,从而降低了保存累加结果的高位数据的设备的动态功耗。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括如前述第一方面提供的处理器。
第四方面,本申请实施例提供了一种机器可读介质,该机器可读介质上存储有指令,该指令在机器上执行时使机器执行如前述第二方面提供的方法。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括处理器,该处理器可执行如前述第二方面提供的方法。
本申请中的处理器采用两个加法器并行进行累加操作,使用低位加法器将二进制操作数直接与累加寄存器的低位区域中保存数据相加得到累加结果的低位数据,在同一个时钟周期中使用高位加法器将二进制操作数对应的符号位扩展数据与累加寄存器的高位区域中保存数据相加,得到累加结果的高位数据。如此,在一个时钟周期中进行两个加法器的相加过程,通过将现有累加运算中的加法操作调整为并行的加法操作实现了计算效率的提高,提升了累加运算的计算速度。另外,还通过低位加法器的进位信号和二进制操作数的符号位数据的异或运算结果来控制是否将累加结果的高位数据写入累加寄存器的高位区域,使得无需在每个时钟周期都将累加结果的高位数据写入累加寄存器,可以降低累加寄存器的动态功耗。
附图说明
图1示出了一种进行二进制累加运算的现有方案的场景图;
图2根据本申请的一些实施例,示出了一种电子设备的框图。
图3根据本申请的一些实施例,示出了一种处理器的结构图。
图4根据本申请的一些实施例,示出了一种累加装置的结构图。
图5a,5b,5c根据本申请的一些实施例,示出了一种根据不同类型的操作数生成符号位扩展数据的场景图。
图6a,6b,6c,6d根据本申请的一些实施例,示出了一种对二进制有符号数进行累加运算的场景图。
图7a,7b,7c根据本申请的一些实施例,示出了一种对二进制无符号数进行累加运算的场景图。
图8根据本申请的一些实施例,示出了一种手机的结构图。
图9根据本申请的一些实施例,示出了一种片上系统(SoC)的框图。
具体实施方式
本申请的说明性实施例包括但不限于处理器及其二进制累加方法和计算机可读介质。
本申请的各实施例中,采用两个加法器并行进行累加操作,即将每个时钟周期得到的累加结果分为低位数据和高位数据,其中低位数据的位宽被设置为与参与累加的二进制操作数(可以包括符号位和数据位)的位宽相同,以采用低位加法器将二进制操作数直接与低位数据相加得到累加结果的低位数据。同时,高位加法器用于将二进制操作数对应的符号位扩展数据与累加寄存器的高位区域中保存数据相加,得到累加结果的高位数据。如此,在一个时钟周期中进行两个加法器的相加过程,通过将现有累加运算中的一次加法操作调整为两次并行的加法操作实现了计算效率的提高,提升了累加运算的计算速度。
另外,本申请的各实施例中还包括异或模块,异或模块用于对低位加法器产生的进位信号和二进制操作数的符号位数据进行异或运算,根据得到的异或运算结果确定是否将高位加法器得到的累加结果的高位数据写入累加寄存器的高位区域中。另外,本申请的各实施例还直接将累加结果的低位数据写入累加寄存器的低位区域。将累加寄存器的高位区域中保存数据和低位区域中保存数据进行组合即可得到正确的累加结果。例如,在异或运算结果为置位数据(即二进制数“1”)的情况下,表示计算得到的累加结果的高位数据为正确数据,因此才将累加结果的高位数据写回累加寄存器的高位区域,从而在确保累加结果准确度的同时减少对累加寄存器的写入次数,使得无需在每个时钟周期都将累加结果的高位数据写入累加寄存器,降低累加寄存器的动态功耗。即异或运算结果为置位数据,说明累加寄存器的高位区域中保存数据需要更新,如果二进制操作数的符号位数据为“0”,低位加法器产生的进位信号为“1”,则累加寄存器的高位区域中保存数据需要更新;而如果二进制操作数的符号位数据为“1”,低位加法器产生的进位信号为“1”,则累加寄存器的高位区域中保存数据不需要更新。
例如,保存在累加寄存器中的前一时钟周期的累加结果数据为“0000000000001111”,假如二进制操作数的位数为8位,则累加寄存器的低位数据为“00001111”,累加寄存器的高位数据为“00000000”,当前时钟周期要与其累加的有符号二进制操作数为“00001111”。在本申请实施例中,低位加法器将累加寄存器的低位数据与二进制操作数进行相加得到累加结果的低位数据“00011110”,高位加法器将二进制操作数对应的符号位(即最左侧二进制位,数据为“0”)的扩展数据“00000001”与累加寄存器的高位数据进行相加得到累加结果的高位数据“00000001”。由于低位加法器没有产生进位,因此进位信号为“0”,二进制操作数的符号位数据为“0”,异或模块得到的异或结果为“0”,因此不将计算得到的累加结果的高位数据“00000001”写入累加寄存器的高位区域(即累加寄存器的高位数据保持为“00000000”)。将累加结果的低位数据“00011110”写入累加寄存器的低位区域,因此累加寄存器的低位数据变为“00011110”。最后,保存在累加寄存器中的当前时钟周期的累加结果数据为“0000000000011110”。
可以理解,本文中,因为二进制操作数的符号位位于二进制操作数的最左侧,而累加结果是与二进制操作数同样的二进制有符号数,累加结果的位宽通常要大于二进制操作数的位宽并且累加结果中符号位同样位于最左侧,两者的符号位所在的位置不同。例如,假设二进制操作数为有符号数中的负数,其位宽为8位,因此二进制操作数中符号位(位于最左侧的二进制位)是从右往左数的第8位,且符号位的数据为“1”,经过累加运算得到的累加结果与二进制操作数同样为有符号数,其位宽为16位,因此累加结果中符号位(同样是位于最左侧的二进制位)是从右往左数的第16位,,累加结果的符号位在第16位而二进制操作数的符号位在第8位,二进制操作数的符号位对应到累加结果中是数据位,为产生正确的累加结果的符号位数据,故将二进制操作数对应的符号位扩展数据与累加寄存器的高位数据相加。
二进制操作数可以是有符号数,也可以是无符号数,二进制操作数是有符号数时最高位(即位于最左侧的二进制位)为符号位,符号位数据用来表示正数或负数,其中“0”表示正数,“1”表示负数;二进制操作数是无符号数时没有符号位,但是符号位数据当作“0”。
本申请的实施例中,二进制形式的符号位扩展数据是根据二进制操作数的符号位得到的扩展数据,具体生成方法是将符号位扩展数据的最低有效位(Least SignificantBit,LSB)的数据设置为置位数据(即“1”),将其它二进制位的数据设置为二进制操作数的符号位数据,符号位扩展数据的最低有效位(Least Significant Bit,LSB)是位于最右侧的二进制位。二进制操作数对应的二进制形式的符号位扩展数据对应十进制数中的+1(正1)或-1(负1)。
此外,可以理解,在本申请的技术方案中,设置异或模块,是因为使用了两个加法器分别计算累加结果的低位数据和高位数据,低位加法器产生的进位信号没有采用现有方法中直接将进位加到累加结果的高位数据上的方式,而是采用了直接对累加结果的高位数据加上+1(十进制)或-1(十进制)的方式,为保证累加运算结果的准确性,通过异或模块对进位信号和符号位数据进行异或运算来控制累加结果的高位数据的正确性。例如,低位加法器将一个无符号的二进制操作数和累加寄存器的低位数据相加时产生了进位,即进位信号为“1”,二进制操作数的符号位数据为“0”,异或模块根据进位信号和符号位数据得到的异或运算结果为“1”,而符号位扩展数据为+1,累加结果的高位数据是对累加寄存器的高位数据加1后得到的结果,体现了无符号数相加后的进位,是正确结果,因此可以将累加结果的高位数据保存到累加寄存器的高位区域中。
仍以前述案例为例,保存在累加寄存器中的前一时钟周期的累加结果数据为“0000000000001111”,当前时钟周期要与其累加的有符号二进制操作数为“00001111”,累加寄存器的低位数据为“00001111”,累加寄存器的高位数据为“00000000”,低位加法器将累加寄存器的低位数据和二进制操作数相加得到累加结果的低位数据为“00011110”,高位加法器将二进制操作数对应的符号位的扩展数据“00000001”和累加寄存器的高位数据相加得到累加结果的高位数据为“00000001”,如果不使用异或模块来确定是否将累加结果的高位数据写入累加寄存器的高位区域,而是直接将累加结果的高位数据写入累加寄存器的高位区域,即将累加寄存器的高位数据修改为“00000001”,从而使得累加寄存器中保存的累加结果数据为“0000000100011110”,而该累加结果是不正确的数据,会导致累加运算的结果不正确;如果使用异或模块并根据低位加法器的进位信号“0”和二进制操作数的符号位数据“0”得到异或模块输出的异或结果“0”,从而确定不将当前时钟周期的累加结果的高位数据写入累加寄存器的高位区域,所得到的累加寄存器中数据“0000000000011110”为正确数据。
可以理解,本申请的实施例中,两个加法器的位宽之和与现有方法中使用的一个加法器的位宽相同。
为了使本发明的实施例的描述便于理解,下面先对本发明涉及的一些概念进行介绍。
加法器是通过门电路实现两个二进制数相加得到相加结果的电路,在本申请的实施例中,加法器用于将累加寄存器中保存的二进制数据与二进制操作数相加并输出相加结果。
累加寄存器是用于存储二进制数的时序逻辑电路,在本申请的实施例中,累加寄存器用于保存二进制累加结果。
二进制操作数用于描述指令操作中所使用的数据,在本申请的实施例中,二进制操作数为累加运算中与累加寄存器中上次保留的累加结果进行相加的二进制数,可以是带有符号位的操作数,也可以是无符号位的操作数。
时钟周期是计算机中最基本和最小的时间单位,由计算机系统产生的时钟信号控制,在一个时钟周期中处理器仅完成一个最基本的动作,在本申请的实施例中,在一个时钟周期中完成一次累加操作。
有效沿通常指时钟信号的上升沿,即时钟信号中由低电平变为高电平的时刻,在本申请的实施例中,有效沿可触发将二进制累加结果写回累加寄存器的动作。
可以理解,本申请的累加技术方案适用于各种具有计算功能的电子设备,例如,包括但不限于,膝上型计算机、台式计算机、平板计算机、智能手机、服务器、可穿戴设备、头戴式显示器、移动电子邮件设备、便携式游戏机、便携式音乐播放器、阅读器设备、其中嵌入或耦接有一个或多个处理器的电视机、或具有计算功能的其他电子设备。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施例作进一步地详细描述。
为了便于说明,下面以图2所示的电子设备1400为例进行说明。
如图2所示,在一些实施例中,电子设备1400可以包括一个或多个处理器1404,与处理器1404中的至少一个连接的系统控制逻辑1408,与系统控制逻辑1408连接的系统内存1412,与系统控制逻辑1408连接的非易失性存储器(NVM)1416,以及与系统控制逻辑1408连接的网络接口1420。
在一些实施例中,处理器1404可以包括一个或多个单核或多核处理器。在一些实施例中,处理器1404可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在电子设备1400采用eNB(Evolved Node B,增强型基站)101或RAN(Radio Access Network,无线接入网)控制器102的实施例中,处理器1404可以被配置为执行各种适用于本申请技术方案的实施例,例如,如图4-7所示的多个实施例中的一个或多个。在本申请的一些实施例中,处理器1404中的累加操作采用本申请公开的技术方案实现,下文将进行详细的描述。在一些实施例中,处理器1404可包括累加装置、存储模块、控制模块和结果寄存器,累加装置从存储模块获取二进制操作数,并根据控制模块发送的控制指令执行累加操作,在由多次累加操作组成的累加运算完成后,将累加结果输出至结果寄存器中保存,供处理器1404后续的处理过程使用。
在一些实施例中,系统控制逻辑1408可以包括任意合适的接口控制器,以向处理器1404中的至少一个和/或与系统控制逻辑1408通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,系统控制逻辑1408可以包括一个或多个存储器控制器,以提供连接到系统内存1412的接口。系统内存1412可以用于加载以及存储数据和/或指令。在一些实施例中电子设备1400的内存1412可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。
NVM/存储器1416可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器1416可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如HDD(Hard Disk Drive,硬盘驱动器),CD(Compact Disc,光盘)驱动器,DVD(Digital Versatile Disc,数字通用光盘)驱动器中的至少一个。
NVM/存储器1416可以包括电子设备1400上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口1420通过网络访问NVM/存储1416。
特别地,系统内存1412和NVM/存储器1416可以分别包括:指令1424的暂时副本和永久副本。指令1424可以包括:由处理器1404中的至少一个执行时导致电子设备1400实施如图4-7所示的方法的指令。在一些实施例中,指令1424、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑1408,网络接口1420和/或处理器1404中。
网络接口1420可以包括收发器,用于为电子设备1400提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口1420可以集成于电子设备1400的其他组件。例如,网络接口1420可以集成于处理器1404,系统内存1412,NVM/存储器1416,和具有指令的固件设备(未示出)中的至少一种。
网络接口1420可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口1420可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器1404中的至少一个可以与用于系统控制逻辑1408的一个或多个控制器的逻辑封装在一起,以形成系统封装(SiP)。在一个实施例中,处理器1404中的至少一个可以与用于系统控制逻辑1408的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(SoC)。
电子设备1400可以进一步包括:输入/输出(I/O)设备1432。I/O设备1432可以包括用户界面,使得用户能够与电子设备1400进行交互;外围组件接口的设计使得外围组件也能够与电子设备1400交互。在一些实施例中,电子设备1400还包括传感器,用于确定与电子设备1400相关的环境条件和位置信息的至少一种。
在一些实施例中,用户界面可包括但不限于显示器(例如,液晶显示器,触摸屏显示器等),扬声器,麦克风,一个或多个相机(例如,静止图像照相机和/或摄像机),手电筒(例如,发光二极管闪光灯)和键盘。
在一些实施例中,外围组件接口可以包括但不限于非易失性存储器端口、音频插孔和电源接口。
在一些实施例中,传感器可包括但不限于陀螺仪传感器,加速度计,近程传感器,环境光线传感器和定位单元。定位单元还可以是网络接口1420的一部分或与网络接口1420交互,以与定位网络的组件(例如,全球定位系统(GPS)卫星)进行通信。
下面以处理器200为例说明本申请的二进制累加方法。根据本申请的实施例,图3示出了执行本申请的二进制累加方法的一示例处理器200的结构示意图。
如图3所示,该处理器200包括累加装置201、存储模块202、控制模块203和结果寄存器204。
可以理解,图3中仅示出了处理器中仅具有1个累加装置、1个存储模块、1个控制模块和1个结果寄存器,但是此处累加装置、存储模块、控制模块和结果寄存器的数量仅仅是示例性的,在此不做限制,处理器200可以包括任意数量的累加装置、存储模块、控制模块和结果寄存器。
其中,存储模块202用于存储累加运算中使用的二进制操作数,可以为缓存或寄存器等设备。
控制模块203用于对累加装置201的累加运算过程进行控制,向累加装置201发送相应的控制指令,例如预先设定的累加次数N、当前累加为有符号数累加或无符号数累加等。
结果寄存器204用于保存累加运算的累加结果,供后续的计算过程使用。
累加装置201用于从存储模块202中获取二进制操作数进行相应的累加操作,并根据接收的由控制模块203发送的控制指令控制累加运算的过程,将最终得到的累加结果保存到结果寄存器204中。
在本申请的实施例中,累加运算可包括多次累加操作,累加装置201在进行累加操作时,采用低位加法器对二进制操作数和累加寄存器的低位数据进行相加,得到累加结果的低位数据;采用高位加法器对二进制操作数对应的符号位扩展数据和累加寄存器的高位数据进行相加,得到累加结果的高位数据;累加结果的低位数据写回到累加寄存器的低位区域供下一次累加操作使用,再根据累加寄存器的高位数据对应的使能信号端接收的使能信号确定是否将累加结果的高位数据写回到累加寄存器的高位区域。
图4示出了一种累加装置的结构示意图。如图4所示,累加装置300包括:低位加法器301、高位加法器302、累加寄存器303和异或模块312。
累加寄存器303可用于保存累加结果的低位数据和高位数据,将其划分为低位区域和高位区域,低位区域用于保存累加结果的低位数据,高位区域用于保存累加结果的高位数据,为方便描述,将累加寄存器的低位区域中保存的数据定义为累加寄存器的低位数据,将累加寄存器的高位区域中保存的数据定义为累加寄存器的高位数据。
累加寄存器303的低位区域和高位区域各自对应有控制信号端和数据端。控制信号端可接收外部信号并根据接收的外部信号对累加寄存器的低位数据304或高位数据305进行更新等处理,控制信号端例如有使能信号端、时钟信号端等,例如,分别用于接收使能信号和时钟信号。数据端包括数据输入端和数据输出端,数据输入端可接收外部输入的二进制数据并根据相应的控制信号确定是否将输入数据保存为低位数据304或高位数据305,数据输出端可将保存的低位数据304或高位数据305进行输出。在本申请的一些实施例中,可通过如Verilog或VHDL等硬件描述语言提供累加寄存器303的低位和高位数据对应的控制信号端和数据端等功能的具体实现。
为方便进行描述,本申请的实施例中将累加寄存器303的低位区域与虚拟低位寄存器314进行对应,虚拟低位寄存器314用于保存累加寄存器的低位数据304,并根据接收的相应控制信号如使能信号、时钟信号等完成对低位数据304的处理;另外还将累加寄存器303的高位区域与虚拟高位寄存器315进行对应,虚拟高位寄存器315用于保存累加寄存器的高位数据305,并根据接收的控制信号如使能信号、时钟信号等完成对高位数据305的处理。
本申请的实施例中,保持虚拟低位寄存器314的使能信号端接收的使能信号为“1”,表示可以将虚拟低位寄存器314的数据输入端接收的数据进行写入,从而将当前时钟周期中计算得到的累加结果的低位数据308写入虚拟低位寄存器314。具体来说,是在当前时钟周期的写入时机将累加结果的低位数据308写入虚拟低位寄存器314,写入时机通常为当前时钟周期的有效沿。由于虚拟低位寄存器314中保存数据实际对应累加寄存器303的低位数据304,因此实际上是将累加寄存器303的低位数据304更新为累加结果的低位数据308。
另外,根据虚拟高位寄存器315的使能信号端所接收的使能信号确定是否将累加结果的高位数据写入虚拟高位寄存器315。其中,虚拟高位寄存器315的使能信号端接收来自异或模块312输出的使能信号,当使能信号为置位信号(即信号“1”)表示打开虚拟高位寄存器315的时钟信号端,使得虚拟高位寄存器315可以正常接收时钟信号,进而可根据时钟信号触发将虚拟高位寄存器315的数据输入端接收的累加结果的高位数据309写入虚拟高位寄存器315(实际写入累加寄存器303的高位区域);当使能信号为复位信号(即信号“0”)表示关闭虚拟高位寄存器315的时钟信号端,使得虚拟高位寄存器315无法接收到时钟信号,从而不会将数据输入端接收的累加结果的高位数据309写入虚拟高位寄存器315。
低位加法器301用于将二进制操作数306与累加寄存器的低位数据304进行二进制加法,得到累加结果的低位数据308。本申请的实施例中,二进制操作数306的位宽是预先设定的,为避免对操作数306的位宽进行扩展导致的加法器计算速度下降,将实现操作数306加法的低位加法器301的位宽设置为与操作数306的位宽相同,同样将累加寄存器303的低位数据304的位宽设置为与操作数306的位宽相同,低位加法器301输出的累加结果的低位数据308的位宽同样与操作数306的位宽相同。例如,继续参考图4,假设二进制操作数306的位宽为n,则低位加法器301的位宽也为n,累加寄存器303的低位数据304的位宽、累加结果的低位数据308的位宽都为n。
高位加法器302用于将二进制操作数对应的符号位扩展数据307与累加寄存器的高位数据305进行二进制加法,得到累加结果的高位数据309。类似地,二进制累加结果的位宽同样是预先设定的,例如为m(m>n),则高位加法器302的位宽可设置为m-n,累加结果的高位数据309的位宽与累加寄存器303的高位数据305的位宽也都为m-n,符号位扩展数据307的位宽同样为m-n。因此,在二进制操作数的位宽为n,累加结果的位宽为m的情况下,低位加法器301和高位加法器302的位宽之和为m,与前述现有技术示例中一个加法器的位宽m相同。
异或模块312用于对低位加法器的进位信号和二进制操作数的符号位数据进行异或运算并将异或运算结果作为使能信号输出至累加寄存器的高位区域对应的使能信号端,异或运算结果可以为置位数据(即二进制数“1”)或复位数据(即二进制数“0”)。具体来说,异或模块可使用异或门实现,异或门(Exclusive-OR gate,XOR gate)是用于实现逻辑异或的逻辑门,可以有两个输入端和一个输出端,如果两个输入端的电平不同,则异或门输出高电平(即信号“1”);如果两个输入端的电平相同,则异或门输出低电平(即信号“0”)。
本申请的一些实施例中,异或模块312输出的异或运算结果可输入时钟门控模块313中,最终时钟门控模块313输出的信号作为使能信号输入虚拟高位寄存器315的使能信号端。时钟门控(Clock Gating)模块可在数据无效时将虚拟高位寄存器315的时钟信号关闭,从而减少虚拟高位寄存器315跟随时钟信号进行的多余翻转,达到降低功耗的效果。可以理解,如果时钟门控产生的使能信号为置位信号(即信号“1”),则虚拟高位寄存器315可以正常接收时钟信号,从而在接收的当前时钟信号的有效沿将输入的累加结果的高位数据309进行写入,实际上是累加寄存器303中的高位数据305更新为累加结果的高位数据309;如果时钟门控产生的使能信号为复位信号(即信号“0”),则虚拟高位寄存器315对应的时钟信号被关闭,不会对输入的累加结果的高位数据309进行写入。本申请的实施例中,时钟门控模块313的输出信号与接收的异或运算结果保持一致。
具体地,在一些实施例中,上述累加装置的累加过程如下:
1)在当前时钟周期获取二进制操作数306和累加寄存器中上一时钟周期得到的累加结果的低位数据304并输入低位加法器301进行相加,得到累加结果的低位数据308。例如,当前时钟周期中,获取的二进制操作数306为“00001111”,该二进制操作数306是一个有符号的正数,符号位是该数最左边的一个二进制位,其值为“0”,累加寄存器中上一时钟周期得到的累加结果为“0000000000001111”,其中,累加寄存器的低位数据为“00001111”,经过低位加法器301相加后,得到“00011110”。
2)根据二进制操作数306的符号位确定二进制操作数对应的符号位扩展数据307,将二进制操作数对应的符号位扩展数据307和累加寄存器的高位数据305输入高位加法器302进行相加,得到累加结果的高位数据309。例如,对于上述保存在累加寄存器中的累加结果“0000000000001111”,累加寄存器的高位数据为“00000000”,二进制操作数对应的符号位扩展数据307为“00000001”,得到的累加结果的高位数据309为“00000001”。
图5(a)、5(b)和5(c)示出了本申请实施例中根据二进制操作数生成符号位扩展数据的示例。如图5(a)、5(b)和5(c)所示,二进制操作数可以为有符号正数、有符号负数和无符号数三种类型,二进制操作数的位宽为8位,生成的对应二进制形式的符号位扩展数据的位宽也为8位,图中的“X”表示可为二进制数“0”或“1”,如图5(a)所示,二进制操作数为有符号数且符号位数据为“0”(表示有符号正数),则生成的符号位扩展数据为“00000001”,对应的十进制数为+1;如图5(b)所示,二进制操作数为有符号数且符号位数据为“1”(表示有符号负数),则得到的符号位扩展数据为“11111111”,对应的十进制数为-1;如图5(c)所示,二进制操作数为无符号数,没有符号位,无符号数都是正数,将“0”作为其符号位数据,得到的符号位扩展数据为“00000001”,对应的十进制数为+1。
3)在当前时钟周期的有效沿将累加结果的低位数据308写入虚拟低位寄存器314,并根据低位加法器301的进位信号310和二进制操作数306的符号位的异或运算结果确定是否将累加结果的高位数据309写入虚拟高位寄存器315。继续参考图4,虚拟高位寄存器315的使能信号端接收的使能信号由低位加法器301产生的进位信号310和二进制操作数306的符号位数据311所确定,本申请的实施例中,进位信号310和二进制操作数306的符号位数据311输入到异或模块312中,异或模块312对进位信号310和符号位数据311进行异或运算后得到异或运算结果,异或运算结果可直接作为使能信号输出到虚拟高位寄存器315的使能信号端,从而控制对虚拟高位寄存器315的写入。
此外,可以理解,当进位信号和二进制操作数306的符号位数据的异或运算结果为“1”时,表示虚拟高位寄存器315对应的使能信号端接收的使能信号为“1”,虚拟高位寄存器315对应的时钟信号端可正常接收时钟信号,故将累加结果的高位数据309写入虚拟高位寄存器315(实际写入累加寄存器303的高位区域)。
例如,上述数据累加实例中,由于累加寄存器的低位数据为“00001111”,二进制操作数306为“00001111”,两者相加没有在最高位产生进位,可以得知低位加法器301的进位信号310为“0”,二进制操作数306的符号位数据为“0”,将“0”和“0”进行异或运算后,得到的结果为“0”,表示累加寄存器303的高位区域对应的使能信号端接收的使能信号为“0”,累加寄存器303的高位区域对应的时钟信号端被关闭,故不将累加结果的高位数据309“00000001”写入累加寄存器的高位区域。
4)在当前时钟周期的累加操作执行完成后,将当前的累加次数增加一,并将当前的累加次数与预先设定的累加次数进行比较,如果当前的累加次数小于预先设定的累加次数,则在后续的时钟周期中继续计算累加结果的低位数据308和高位数据309并保存至累加寄存器303,否则将累加运算的最后一个时钟周期结束后累加寄存器303中保存的二进制数据(即累加寄存器的高位数据和低位数据)作为累加结果输出。
在本申请的实施例中,累加运算中的一次累加操作在一个时钟周期中完成,累加操作包括低位加法器301的相加操作、高位加法器302的相加操作和将累加结果的低位数据308写入累加寄存器303的低位区域的操作,如果需要将累加结果的高位数据309写入累加寄存器303的高位区域,还包括将累加结果的高位数据309写入累加寄存器303的高位区域的操作。累加寄存器303所保存的当前时钟周期累加结果的低位数据(或高位数据)可被后一时钟周期累加结果的低位数据(或高位数据)所替代。
一次累加操作完成后累加寄存器303的低位数据304与累加结果的低位数据308一致,累加寄存器303的高位数据305可与累加结果的高位数据309一致,也可与累加结果的高位数据309不一致。图4中二进制位中的“X”表示可以为二进制数“0”或“1”。
下面结合具体的场景说明本申请的累加方法的技术方案。
图6(a)-图6(d)示出了一个对二进制有符号数进行累加运算的场景,其中二进制有符号数为二进制操作数,每个时钟周期中用于累加的二进制操作数306不相同,预先设定的累加次数为4,预先设定的累加次数用于确定累加运算中累加操作的次数,在达到预先设定的累加次数后停止累加运算。具体地,在图6(a)-图6(d)所示的场景中,预先设定二进制操作数306的位宽为8位,累加结果的位宽为16位,则低位加法器301和高位加法器302的位宽分别设置为8位,累加结果的低位数据308和高位数据309的位宽分别设置为8位,累加寄存器303的低位数据304和高位数据305的位宽分别设置为8位。
如图6(a)所示,对二进制操作数306进行第一次累加操作的具体过程如下:
1)对累加寄存器303进行初始化,将二进制的低位数据304和二进制的高位数据305都初始化为0,即所有的二进制位都为0,因此与低位数据304对应的虚拟低位寄存器314、与高位数据305对应的虚拟高位寄存器315中保存的二进制数据同样都为“00000000”。
2)在第一个时钟周期中将二进制操作数306“01110000”和虚拟低位寄存器314中保存的二进制数据“00000000”输入低位加法器301中进行相加,得到输出的累加结果的低位数据308“01110000”,由于本次相加没有产生进位,因此进位信号310为“0”。
3)同样在第一个时钟周期中将二进制操作数306对应的符号位扩展数据307“00000001”和虚拟高位寄存器315中保存的二进制数据“00000000”输入高位加法器302中进行相加,得到输出的累加结果的高位数据309“00000001”。
符号位扩展数据307的生成方法中,是将最低有效位LSB设置为“1”,其它二进制位使用二进制操作数306的符号位数据进行赋值,这里二进制操作数306的符号位数据为“0”,则符号位扩展数据307中除了最低有效位LSB之外的另外7个二进制位都为“0”,最终得到的符号位扩展数据307为二进制数“00000001”,亦即十进制数+1(即正1)。
4)将累加结果的低位数据308“01110000”输出到虚拟低位寄存器314的数据输入端,由于虚拟低位寄存器314的使能信号端接收的使能信号一直为“1”,因此虚拟低位寄存器314可根据时钟信号对输入数据“01110000”进行保存,具体是在第一个时钟周期对应时钟信号的有效沿将输入数据写入虚拟低位寄存器314。
虚拟低位寄存器314的使能信号端接收的使能信号可持续为置位信号,即使能信号保持为信号“1”。可以理解,使能信号保持为“1”则虚拟低位寄存器314可持续正常接收时钟信号,因此可在时钟信号的有效沿将累加结果的低位数据308“01110000”写入虚拟低位寄存器314。
在每个时钟信号的有效沿,累加寄存器的低位数据304都会将接收的、该时钟信号对应时钟周期内得到的累加结果的低位数据308进行保存。
5)将累加结果的高位数据309“00000001”输出到虚拟高位寄存器315的数据输入端,此时需要根据虚拟高位寄存器315的使能信号端接收的使能信号确定是否将输入的数据“00000001”进行写入。将低位加法器301产生的进位信号310和二进制操作数306的符号位数据311输入异或模块312,此时进位信号310为“0”,操作数符号位数据311为“0”,因此异或模块312输出的信号为“0”。
异或模块312对输入的数据进行异或运算,异或运算是一种二元逻辑运算,在输入的两个值相同时,异或运算结果为0,在输入的两个值不同时,异或运算结果为1。对进位信号310和操作数的符号位数据311进行异或运算,可以得到的异或运算结果如下表1所示:
进位信号 | 操作数符号位 | 异或运算结果 |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
表1
6)将异或模块312输出的信号“0”输入到时钟门控模块313中,时钟门控模块313根据输入的信号“0”生成输出信号“0”,输出信号“0”作为使能信号输出到虚拟高位寄存器315的使能信号端。
时钟门控模块313根据接收的异或运算结果生成相应的输出信号,本申请的实施例中,将生成的输出信号作为使能信号输出到虚拟高位寄存器315的使能信号端。时钟门控模块313的输出信号与接收的异或运算结果保持一致,例如异或运算结果为“0”,则生成的输出信号为“0”,异或运算结果为“1”,生成的输出信号为“1”。
7)由于虚拟高位寄存器315的使能信号端接收的使能信号为信号“0”,将虚拟高位寄存器315的时钟信号端关闭,因此虚拟高位寄存器315不会接收到时钟信号,进而不会将累加结果的高位数据309“00000001”写入到虚拟高位寄存器315,虚拟高位寄存器315中保存的数据仍然为“00000000”。
在第一次累加操作完成后,虚拟高位寄存器315中保存的8位二进制数为“00000000”,虚拟低位寄存器314中保存的8位二进制数为“01110000”,将这两个二进制数组合起来可得到16位累加结果为“0000000001110000”,该累加结果与二进制操作数306同样为有符号数,最高位为“0”表明其为正数。
另外,当前的累加次数用于统计当前已经完成多少次累加操作。可以理解,当前的累加次数初始化为0,完成一次累加操作则将当前的累加次数增加1。第一次累加操作完成后当前的累加次数为1,由于当前的累加次数未达到预先设定的累加次数4,则在下一个时钟周期中继续进行累加操作。
如图6(b)所示,对二进制操作数306进行第二次累加操作的具体过程如下:
1)在第二个时钟周期中将二进制操作数306“11110000”和虚拟低位寄存器314中保存的二进制数据“01110000”输入低位加法器301中进行相加,得到输出的累加结果的低位数据308“01100000”,本次相加在最高位产生进位,进位信号310为“1”;
2)当前的二进制操作数306为“11110000”,符号位数据为“1”,因此得到的符号位扩展数据307为“11111111”,同样在第二时钟周期中将符号位扩展数据307“11111111”和虚拟高位寄存器315中保存的二进制数据“00000000”输入高位加法器302中进行相加,得到累加结果的高位数据309“11111111”。
3)将累加结果的低位数据308“01100000”输出到虚拟低位寄存器314的数据输入端,由于虚拟低位寄存器314的使能信号端接收的使能信号一直为“1”,因此在第二个时钟周期对应时钟信号的有效沿将累加结果的低位数据308“01100000”写入虚拟低位寄存器314。
4)将累加结果的高位数据309“11111111”输出到虚拟高位寄存器315的数据输入端,此时低位加法器301产生的进位信号310为“1”,操作数符号位数据311为“1”,将两者输入异或模块312后输出的信号为“0”。
5)将异或模块312输出的信号“0”输入到时钟门控模块313中,时钟门控模块313的输出信号为“0”,因此虚拟高位寄存器315的使能信号端接收的使能信号为“0”。
6)虚拟高位寄存器315的使能信号端接收的使能信号为“0”,则累加结果的高位数据309“11111111”不会写入到虚拟高位寄存器315中,虚拟高位寄存器315中保存的数据保持为“00000000”。
在第二次累加操作完成后,虚拟高位寄存器315中保存的8位二进制数为“00000000”,虚拟低位寄存器314中保存的8位二进制数为“01100000”,组合起来得到的16位累加结果为“0000000001100000”。
类似地,第二次累加操作完成后当前的累加次数为2,未达到预先设定的累加次数4,则在下一个时钟周期中继续进行累加操作。
如图6(c)所示,对二进制操作数306进行第三次累加操作的具体过程如下:
1)在第三个时钟周期中将二进制操作数306“10000000”和虚拟低位寄存器314中保存的二进制数据“01100000”输入低位加法器301中进行相加,得到输出的累加结果的低位数据308“11100000”,本次相加没有在最高位产生进位,进位信号310为“0”;
2)当前的二进制操作数306为“10000000”,符号位数据为“1”,因此得到的符号位扩展数据307为“11111111”,同样在第三个时钟周期中将符号位扩展数据307“11111111”和虚拟高位寄存器315中保存的二进制数据“00000000”输入高位加法器302中进行相加,得到累加结果的高位数据309“11111111”。
3)将累加结果的低位数据308“11100000”输出到虚拟低位寄存器314的数据输入端,由于虚拟低位寄存器314的使能信号端接收的使能信号一直为“1”,因此在第三个时钟周期对应的时钟信号的有效沿将累加结果的低位数据308“11100000”写入虚拟低位寄存器314。
4)将累加结果的高位数据309“11111111”输出到虚拟高位寄存器315的数据输入端,此时低位加法器301产生的进位信号310为“0”,操作数符号位数据311为“1”,将两者输入异或模块312后输出的信号为“1”。
5)将异或模块312输出的信号“1”输入到时钟门控模块313中,时钟门控模块313的输出信号为“1”,因此虚拟高位寄存器315的使能信号端接收的使能信号为“1”。
6)虚拟高位寄存器315的使能信号端接收的使能信号为“1”,则累加结果的高位数据309“11111111”会写入到虚拟高位寄存器315中,虚拟高位寄存器315中保存的数据更新为“11111111”。
在第三次累加操作完成后,虚拟高位寄存器315中保存的8位二进制数为“11111111”,虚拟低位寄存器314中保存的8位二进制数为“11100000”,组合起来得到的16位累加结果为“1111111111100000”。
类似地,第三次累加操作完成后当前的累加次数为3,未达到预先设定的累加次数4,则在下一个时钟周期中继续进行累加操作。
如图6(d)所示,对二进制操作数306进行第四次累加操作的具体过程如下:
1)在第四个时钟周期中将二进制操作数306“01100000”和虚拟低位寄存器314中保存的二进制数据“11100000”输入低位加法器301中进行相加,得到输出的累加结果的低位数据308“01000000”,本次相加在最高位产生进位,进位信号310为“1”;
2)当前的二进制操作数306为“01100000”,符号位数据为“0”,因此得到的符号位扩展数据307为“00000001”,同样在第四个时钟周期中将符号位扩展数据307“00000001”和虚拟高位寄存器315中保存的二进制数据“11111111”输入高位加法器302中进行相加,得到累加结果的高位数据309“00000000”,高位加法器302产生的进位信号被忽略。
3)将累加结果的低位数据308“01000000”输出到虚拟低位寄存器314的数据输入端,由于虚拟低位寄存器314的使能信号端接收的使能信号一直为“1”,因此在第四个时钟周期对应的时钟信号的有效沿将累加结果的低位数据308“01000000”写入虚拟低位寄存器314。
4)将累加结果的高位数据309“00000000”输出到虚拟高位寄存器315的数据输入端,此时低位加法器301产生的进位信号310为“1”,操作数符号位数据311为“0”,将两者输入异或模块312后输出的信号为“1”。
5)将异或模块312输出的信号“1”输入到时钟门控模块313中,时钟门控模块313的输出信号为“1”,因此虚拟高位寄存器315的使能信号端接收的使能信号为“1”。
6)虚拟高位寄存器315的使能信号端接收的使能信号为“1”,则累加结果的高位数据309“00000000”会写入到虚拟高位寄存器315中,虚拟高位寄存器315中保存的数据更新为“00000000”。
在第四次累加操作完成后,虚拟高位寄存器315中保存的8位二进制数为“00000000”,虚拟低位寄存器314中保存的8位二进制数为“01000000”,组合起来得到的16位累加结果为“0000000001000000”。第四次累加操作完成后当前的累加次数为4,当前的累加次数达到预先设定的累加次数4,则停止进行累加运算,将累加结果输出到结果寄存器中进行保存,供后续的计算过程使用。
可以理解,图6(a)-6(d)中仅示出了累加运算中4次累加操作的运算过程,但是,此处二进制操作数的类型、数据和累加操作的次数仅仅是示例性的,在此不做限制,可以使用任意类型和数据的二进制操作数,累加操作的次数也可为任意次数。在一些实施例中,并不是每一次累加结果的高位数据都不会写入到累加寄存器的高位数据中,累加结果的高位数据在符合条件的情况下会写入到累加寄存器的高位数据以保持累加操作的正确性。
图7(a)-图7(c)示出了一个对二进制无符号数进行累加运算的场景,其中预先设定的累加次数为3。该二进制无符号数没有符号位,其最高位(最左侧的二进制位)为数据位,在此,将“0”作为该二进制无符号数的符号位数据。具体地,在图7(a)-图7(c)所示的场景中,预先设定二进制操作数306的位宽为8位,累加结果的位宽为16位,则低位加法器301和高位加法器302的位宽分别设置为8位,累加结果的低位数据308和高位数据309的位宽分别设置为8位,累加寄存器303的低位数据304和高位数据305的位宽分别设置为8位。
如图7(a)所示,对二进制操作数306进行第一次累加操作的具体过程如下:
1)对累加寄存器303进行初始化,将二进制的低位数据304和二进制的高位数据305都初始化为0,即所有的二进制位都为0,因此与低位数据304对应的虚拟低位寄存器314、与高位数据305对应的虚拟高位寄存器315中保存的二进制数据同样都为“00000000”。
2)在第一个时钟周期中将二进制操作数306“11110000”和虚拟低位寄存器314中保存的二进制数据“00000000”输入低位加法器301中进行相加,得到输出的累加结果的低位数据308“11110000”,由于本次相加没有产生进位,因此进位信号310为“0”。
3)同样在第一个时钟周期中将二进制操作数306对应的符号位扩展数据307“00000001”和虚拟高位寄存器315中保存的二进制数据“00000000”输入高位加法器302中进行相加,得到输出的累加结果的高位数据309“00000001”。
符号位扩展数据307的生成方法中,是将最低有效位LSB设置为“1”,其它二进制位使用二进制操作数306的符号位数据进行赋值,这里将“0”作为二进制操作数306的符号位数据,则符号位扩展数据307中除了最低有效位LSB之外的另外7个二进制位都为“0”,最终得到的符号位扩展数据307为二进制数“00000001”,亦即十进制数1。
4)将累加结果的低位数据308“11110000”输出到虚拟低位寄存器314的数据输入端,由于虚拟低位寄存器314的使能信号端接收的使能信号一直为“1”,因此虚拟低位寄存器314可根据时钟信号对输入数据“11110000”进行保存,具体是在第一个时钟周期对应时钟信号的有效沿将输入数据写入虚拟低位寄存器314。
虚拟低位寄存器314的使能信号端接收的使能信号可持续为置位信号,即使能信号保持为信号“1”。可以理解,使能信号保持为“1”则虚拟低位寄存器314可持续正常接收时钟信号,因此可在时钟信号的有效沿将累加结果的低位数据308“11110000”写入虚拟低位寄存器314。
在每个时钟信号的有效沿,累加寄存器的低位数据304都会将接收的、该时钟信号对应时钟周期内得到的累加结果的低位数据308进行保存。
5)将累加结果的高位数据309“00000001”输出到虚拟高位寄存器315的数据输入端,此时需要根据虚拟高位寄存器315的使能信号端接收的使能信号确定是否将输入的数据“00000001”进行写入。将低位加法器301产生的进位信号310和二进制操作数306的符号位数据311输入异或模块312,此时进位信号310为“0”,操作数符号位数据311为“0”,因此异或模块312输出的信号为“0”。
6)将异或模块312输出的信号“0”输入到时钟门控模块313中,时钟门控模块313根据输入的信号“0”生成输出信号“0”,输出信号“0”作为使能信号输出到虚拟高位寄存器315的使能信号端。
时钟门控模块313根据接收的异或运算结果生成相应的输出信号,本申请的实施例中,将生成的输出信号作为使能信号输出到虚拟高位寄存器315的使能信号端。时钟门控模块313的输出信号与接收的异或运算结果保持一致,例如异或运算结果为“0”,则生成的输出信号为“0”,异或运算结果为“1”,生成的输出信号为“1”。
7)由于虚拟高位寄存器315的使能信号端接收的使能信号为信号“0”,因此虚拟高位寄存器315的时钟信号端不能正常接收时钟信号,因此不将累加结果的高位数据“00000001”写入到虚拟高位寄存器315,虚拟高位寄存器315中保存的数据保持“00000000”不变。
在第一次累加操作完成后,虚拟高位寄存器315中保存的8位二进制数为“00000000”,虚拟低位寄存器314中保存的8位二进制数为“11110000”,将这两个二进制数组合起来可得到16位累加结果为“0000000011110000”,该累加结果与二进制操作数306同样为无符号数。
另外,当前的累加次数用于统计当前已经完成多少次累加操作。可以理解,当前的累加次数初始化为0,完成一次累加操作则将当前的累加次数增加1。第一次累加操作完成后当前的累加次数为1,由于当前的累加次数未达到预先设定的累加次数3,则在下一个时钟周期中继续进行累加操作。
如图7(b)所示,对二进制操作数306进行第二次累加操作的具体过程如下:
1)在第二个时钟周期中将二进制操作数306“11000000”和虚拟低位寄存器314中保存的二进制数据“11110000”输入低位加法器301中进行相加,得到输出的累加结果的低位数据308“10110000”,本次相加在最高位产生了进位,进位信号310为“1”;
2)同样在第二时钟周期中将符号位扩展数据307“00000001”和虚拟高位寄存器315中保存的二进制数据“00000000”输入高位加法器302中进行相加,得到累加结果的高位数据309“00000001”。
3)将累加结果的低位数据308“10110000”输出到虚拟低位寄存器314的数据输入端,由于虚拟低位寄存器314的使能信号端接收的使能信号一直为“1”,因此在第二个时钟周期对应时钟信号的有效沿将累加结果的低位数据308“10110000”写入虚拟低位寄存器314。
4)将累加结果的高位数据309“00000001”输出到虚拟高位寄存器315的数据输入端,此时低位加法器301产生的进位信号310为“1”,操作数符号位数据311为“0”,将两者输入异或模块312后输出的信号为“1”。
5)将异或模块312输出的信号“1”输入到时钟门控模块313中,时钟门控模块313的输出信号为“1”,因此虚拟高位寄存器315的使能信号端接收的使能信号为“1”。
6)虚拟高位寄存器315的使能信号端接收的使能信号为“1”,则将累加结果的高位数据309“00000001”写入到虚拟高位寄存器315中,虚拟高位寄存器315中保存的数据更新为“00000001”。
在第二次累加操作完成后,虚拟高位寄存器315中保存的8位二进制数为“00000001”,虚拟低位寄存器314中保存的8位二进制数为“10110000”,组合起来得到的16位累加结果为“0000000110110000”。
类似地,第二次累加操作完成后当前的累加次数为2,未达到预先设定的累加次数3,则在下一个时钟周期中继续进行累加操作。
如图7(c)所示,对二进制操作数306进行第三次累加操作的具体过程如下:
1)在第三个时钟周期中将二进制操作数306“00110000”和虚拟低位寄存器314中保存的二进制数据“10110000”输入低位加法器301中进行相加,得到输出的累加结果的低位数据308“11100000”,本次相加没有产生进位,进位信号310为“0”;
2)同样在第三个时钟周期中将符号位扩展数据307“00000001”和虚拟高位寄存器315中保存的二进制数据“00000001”输入高位加法器302中进行相加,得到累加结果的高位数据309“00000010”。
3)将累加结果的低位数据308“11100000”输出到虚拟低位寄存器314的数据输入端,由于虚拟低位寄存器314的使能信号端接收的使能信号一直为“1”,因此在第三个时钟周期对应的时钟信号的有效沿将累加结果的低位数据308“11100000”写入虚拟低位寄存器314。
4)将累加结果的高位数据309“00000010”输出到虚拟高位寄存器315的数据输入端,此时低位加法器301产生的进位信号310为“0”,操作数符号位数据311为“0”,将两者输入异或模块312后输出的信号为“0”。
5)将异或模块312输出的信号“0”输入到时钟门控模块313中,时钟门控模块313的输出信号为“0”,因此虚拟高位寄存器315的使能信号端接收的使能信号为“0”。
6)虚拟高位寄存器315的使能信号端接收的使能信号为“0”,则累加结果的高位数据309“00000010”不会写入到虚拟高位寄存器315中,虚拟高位寄存器315中保存的数据保持为“00000001”。
在第三次累加操作完成后,虚拟高位寄存器315中保存的8位二进制数为“00000001”,虚拟低位寄存器314中保存的8位二进制数为“11100000”,组合起来得到的16位累加结果为“0000000111100000”。
第三次累加操作完成后当前的累加次数为3,当前的累加次数达到预先设定的累加次数3,则停止进行累加运算,将累加结果输出到结果寄存器中进行保存,供后续的计算过程使用。
可以理解,图7(a)-7(c)中仅示出了累加运算中3次累加操作的运算过程,但是,此处二进制操作数的类型、数据和累加操作的次数仅仅是示例性的,在此不做限制,可以使用任意类型和数据的二进制操作数,累加操作的次数也可为任意次数。
在本申请的一些实施例中,虚拟低位寄存器314和虚拟高位寄存器315可分别使用物理寄存器来实现,即使用两个物理寄存器来实现一个累加寄存器的功能。对应虚拟低位寄存器314的物理寄存器为低位寄存器,对应虚拟高位寄存器315的物理寄存器为高位寄存器,实现累加运算的过程与前述过程类似,在此不再赘述。
如图8所示,手机80可以包括处理器810、电源模块840、存储器880,移动通信模块830、无线通信模块820、传感器模块890、音频模块850、摄像头870、接口模块860、按键801以及显示屏802等。
可以理解的是,本发明实施例示意的结构并不构成对手机80的具体限定。在本申请另一些实施例中,手机80可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器810可以包括一个或多个处理单元,例如,可以包括中央处理器CPU(Central Processing Unit)、图像处理器GPU(Graphics Processing Unit)、数字信号处理器DSP、微处理器MCU(Micro-programmed Control Unit)、AI(ArtificialIntelligence,人工智能)处理器或可编程逻辑器件FPGA(Field Programmable GateArray)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器810中可以设置存储单元,用于存储指令和数据。在一些实施例中,处理器810中的存储单元为高速缓冲存储器880。在一些实施例中,处理器810中的处理单元可包括累加装置和控制模块,存储单元用于存储二进制操作数和累加结果,处理单元从存储单元中获取二进制操作数并执行累加操作,并将得到的累加结果保存至存储单元。
电源模块840可以包括电源、电源管理部件等。电源可以为电池。电源管理部件用于管理电源的充电和电源向其他模块的供电。在一些实施例中,电源管理部件包括充电管理模块和电源管理模块。充电管理模块用于从充电器接收充电输入;电源管理模块用于连接电源,充电管理模块与处理器810。电源管理模块接收电源和/或充电管理模块的输入,为处理器810,显示屏802,摄像头870,及无线通信模块820等供电。
移动通信模块830可以包括但不限于天线、功率放大器、滤波器、LNA(Low noiseamplify,低噪声放大器)等。移动通信模块830可以提供应用在手机80上的包括2G/3G/4G/5G等无线通信的解决方案。在一些实施例中,移动通信模块830的至少部分功能模块可以被设置于处理器810中。在一些实施例中,移动通信模块830至少部分功能模块可以与处理器810的至少部分模块被设置在同一个器件中。
无线通信模块820可以包括天线,并经由天线实现对电磁波的收发。无线通信模块820可以提供应用在手机80上的无线通信的解决方案。手机80可以通过无线通信技术与网络以及其他设备进行通信。
在一些实施例中,手机80的移动通信模块830和无线通信模块820也可以位于同一模块中。
显示屏802用于显示人机交互界面、图像、视频等。显示屏102包括显示面板。
传感器模块890可以包括接近光传感器、压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
音频模块850用于将数字音频信息转换成模拟音频信号输出,或者将模拟音频输入转换为数字音频信号。音频模块850还可以用于对音频信号编码和解码。在一些实施例中,音频模块850可以设置于处理器810中,或将音频模块850的部分功能模块设置于处理器810中。在一些实施例中,音频模块850可以包括扬声器、听筒、麦克风以及耳机接口。
摄像头870用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给ISP(Image SignalProcessing,图像信号处理)转换成数字图像信号。
接口模块860包括外部存储器接口、通用串行总线(universal serial bus,USB)接口及用户标识模块(subscriber identification module,SIM)卡接口等。其中外部存储器接口可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机80的存储能力。外部存储卡通过外部存储器接口与处理器810通信,实现数据存储功能。
在一些实施例中,手机80还包括按键801、马达以及指示器等。其中,按键801可以包括音量键、开/关机键等。马达用于使手机80产生振动效果,以提示用户接听手机80来电。指示器可以包括激光指示器、射频指示器、LED指示器等。
根据本申请的实施例,图9示出了一种SoC(System on Chip,片上系统)1200的框图。在图9中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图9中,SoC 1200包括:互连单元1250,其被耦合至应用处理器1215;系统代理单元1270;总线控制器单元1280;集成存储器控制器单元1240;一组或一个或多个协处理器1220,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1230;直接存储器存取(DMA)单元1260。在一个实施例中,协处理器1220包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。在一些实施例中,处理器1210或协处理器1220可包括累加装置、存储模块、控制模块和结果寄存器,累加装置从存储模块获取二进制操作数,并根据控制模块发送的控制指令执行累加操作,在由多次累加操作组成的累加运算完成后,将累加结果输出至结果寄存器中保存,供处理器1210或协处理器1220后续的处理过程使用。本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读光盘(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (14)
1.一种处理器,其特征在于,包括累加装置,所述累加装置包括低位加法器、高位加法器、累加寄存器和异或模块,其中,
低位加法器,用于将二进制操作数与累加寄存器的低位区域中保存数据进行二进制相加,得到累加结果的低位数据;
高位加法器,用于将所述二进制操作数对应的符号位扩展数据与累加寄存器的高位区域中保存数据进行二进制相加,得到所述累加结果的高位数据;
累加寄存器,分为低位区域和高位区域,用于接收所述累加结果的高位数据和低位数据,将所述累加结果的低位数据写入所述累加寄存器的低位区域,并根据所述累加寄存器的高位区域对应的使能信号端所接收的使能信号确定是否将所述累加结果的高位数据写入所述累加寄存器的高位区域,其中,所述使能信号表示所述累加寄存器的高位区域是否接受所述累加结果的高位数据的写入;
异或模块,用于对所述低位加法器的进位信号和所述二进制操作数的符号位数据进行异或运算,并将异或运算结果输出至所述累加寄存器的高位区域对应的使能信号端,其中,在所述异或运算结果为置位数据时,所述使能信号表示可以将所述累加结果的高位数据写入所述累加寄存器的高位区域,在所述异或运算结果为复位数据时,所述使能信号表示不将所述累加结果的高位数据写入所述累加寄存器的高位区域。
2.根据权利要求1所述的处理器,其特征在于,所述低位加法器和所述高位加法器的位宽之和与所述累加结果的位宽相同。
3.根据权利要求2所述的处理器,其特征在于,所述低位加法器的位宽、所述累加结果的低位数据的位宽、所述累加寄存器的低位区域中保存数据的位宽与所述二进制操作数的位宽相同;
所述高位加法器的位宽为所述累加结果的位宽与所述二进制操作数的位宽之差;
所述累加结果的高位数据的位宽、所述累加寄存器的高位区域中保存数据的位宽与所述高位加法器的位宽相同。
4.根据权利要求1至3中任一项所述的处理器,其特征在于,所述处理器通过以下方式生成所述二进制操作数对应的符号位扩展数据:
将所述二进制操作数对应的符号位扩展数据的最低有效位赋值为置位数据;
使用所述二进制操作数的符号位数据为所述符号位扩展数据的其它二进制位进行赋值。
5.根据权利要求1所述的处理器,其特征在于,还包括:
时钟门控模块,用于接收所述异或模块的异或运算结果,并根据所述异或运算结果生成时钟门控信号,再将所述时钟门控信号输出至所述累加寄存器的高位区域对应的使能信号端。
6.根据权利要求5所述的处理器,其特征在于,在所述二进制操作数与所述累加寄存器的低位区域中保存数据进行二进制相加的过程中在最高位产生进位的情况下,所述低位加法器将进位信号赋值为置位数据。
7.根据权利要求5或6所述的处理器,其特征在于,所述累加寄存器的低位区域对应的使能信号端接收的使能信号为置位信号。
8.一种二进制累加方法,其特征在于,包括:
在当前时钟周期将二进制操作数和上一时钟周期的累加结果的低位数据进行二进制相加,得到当前时钟周期的累加结果的低位数据和进位数据,并且
将所述二进制操作数对应的符号位扩展数据和上一时钟周期的累加结果的高位数据进行二进制相加,得到当前时钟周期的累加结果的高位数据;
根据所述进位数据和符号位数据的异或运算结果,确定是否使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新,其中,在所述异或运算结果为置位数据时,表示可以使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新,并且
使用当前时钟周期的累加结果的低位数据对上一时钟周期的累加结果的低位数据进行更新;
增加当前时钟周期的累加次数,其中,在所述累加次数达到预设累加次数的情况下,输出由累加结果的低位数据和累加结果的高位数据组合得到的累加结果。
9.根据权利要求8所述的二进制累加方法,其特征在于,在所述二进制操作数和上一时钟周期的累加结果的低位数据进行二进制相加的过程中在最高位产生进位的情况下,将所述进位数据赋值为置位数据。
10.根据权利要求8所述的二进制累加方法,其特征在于,所述二进制操作数对应的符号位扩展数据的生成方法,包括:
将所述二进制操作数对应的符号位扩展数据的最低有效位赋值为置位数据;
使用所述二进制操作数的符号位数据为所述符号位扩展数据的其它二进制位进行赋值。
11.根据权利要求8所述的二进制累加方法,其特征在于,根据所述进位数据和所述符号位数据的异或运算结果,确定是否使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新,还包括:
根据所述进位数据和所述符号位数据的异或运算结果通过时钟门控技术得到时钟门控输出数据,根据所述时钟门控输出数据确定是否使用当前时钟周期的累加结果的高位数据对上一时钟周期的累加结果的高位数据进行更新。
12.一种电子设备,其特征在于,包括权利要求1至7中任一项所述的处理器。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,该指令在计算机上执行时使计算机执行权利要求8至11中任一项所述的二进制累加方法。
14.一种电子设备,其特征在于,包括处理器,所述处理器用于执行如权利要求8至11中任一项所述的二进制累加方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011307927.1A CN112416294B (zh) | 2020-11-20 | 2020-11-20 | 处理器及其二进制累加方法和计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011307927.1A CN112416294B (zh) | 2020-11-20 | 2020-11-20 | 处理器及其二进制累加方法和计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416294A CN112416294A (zh) | 2021-02-26 |
CN112416294B true CN112416294B (zh) | 2022-09-16 |
Family
ID=74773799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011307927.1A Active CN112416294B (zh) | 2020-11-20 | 2020-11-20 | 处理器及其二进制累加方法和计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416294B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116700795B (zh) * | 2023-08-01 | 2023-12-01 | 广州中基国威电子科技有限公司 | 一种位操作控制系统及控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4203157A (en) * | 1978-09-05 | 1980-05-13 | Motorola, Inc. | Carry anticipator circuit and method |
EP0416869A2 (en) * | 1989-09-05 | 1991-03-13 | Sony Corporation | Digital adder/accumulator |
US6584485B1 (en) * | 2000-04-14 | 2003-06-24 | International Business Machines Corporation | 4 to 2 adder |
CN207115387U (zh) * | 2017-05-19 | 2018-03-16 | 京东方科技集团股份有限公司 | Xiu‑累加寄存器、xiu‑累加寄存器电路、以及电子设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4514825A (en) * | 1982-03-09 | 1985-04-30 | Kinex Corporation | High speed digital modem |
US4876660A (en) * | 1987-03-20 | 1989-10-24 | Bipolar Integrated Technology, Inc. | Fixed-point multiplier-accumulator architecture |
JP3222313B2 (ja) * | 1993-04-27 | 2001-10-29 | 松下電器産業株式会社 | 演算装置及び演算方法 |
CN1122024A (zh) * | 1994-08-15 | 1996-05-08 | 张胤微 | 一种任意字长、任意精度的乘法运算方法及乘法器 |
KR100325430B1 (ko) * | 1999-10-11 | 2002-02-25 | 윤종용 | 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법 |
US7043517B2 (en) * | 2003-03-07 | 2006-05-09 | Faraday Technology Corp. | Multiply accumulator for two N bit multipliers and an M bit addend |
US7266580B2 (en) * | 2003-05-12 | 2007-09-04 | International Business Machines Corporation | Modular binary multiplier for signed and unsigned operands of variable widths |
US7660841B2 (en) * | 2004-02-20 | 2010-02-09 | Altera Corporation | Flexible accumulator in digital signal processing circuitry |
US20060004902A1 (en) * | 2004-06-30 | 2006-01-05 | Siva Simanapalli | Reconfigurable circuit with programmable split adder |
US20130339677A1 (en) * | 2011-02-28 | 2013-12-19 | St. Jude Medical Ab | Multiply-and-accumulate operation in an implantable microcontroller |
US9519460B1 (en) * | 2014-09-25 | 2016-12-13 | Cadence Design Systems, Inc. | Universal single instruction multiple data multiplier and wide accumulator unit |
US10216479B2 (en) * | 2016-12-06 | 2019-02-26 | Arm Limited | Apparatus and method for performing arithmetic operations to accumulate floating-point numbers |
EP3499362B1 (en) * | 2017-12-13 | 2022-11-30 | ARM Limited | Vector add-with-carry instruction |
-
2020
- 2020-11-20 CN CN202011307927.1A patent/CN112416294B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4203157A (en) * | 1978-09-05 | 1980-05-13 | Motorola, Inc. | Carry anticipator circuit and method |
EP0416869A2 (en) * | 1989-09-05 | 1991-03-13 | Sony Corporation | Digital adder/accumulator |
US6584485B1 (en) * | 2000-04-14 | 2003-06-24 | International Business Machines Corporation | 4 to 2 adder |
CN207115387U (zh) * | 2017-05-19 | 2018-03-16 | 京东方科技集团股份有限公司 | Xiu‑累加寄存器、xiu‑累加寄存器电路、以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112416294A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230099652A1 (en) | Scalable neural network processing engine | |
CN110045960B (zh) | 基于芯片的指令集处理方法、装置及存储介质 | |
US10235945B2 (en) | Apparatus and method for controlling display in electronic device having processors | |
TWI697228B (zh) | 用於密碼雜湊運算之硬體加速器 | |
CN112416294B (zh) | 处理器及其二进制累加方法和计算机可读介质 | |
CN114416723B (zh) | 一种数据的处理方法、装置、设备及存储介质 | |
CN111045732A (zh) | 数据处理方法、芯片、设备及存储介质 | |
CN110928574A (zh) | 微控制器、中断处理芯片、设备及中断处理方法 | |
US20140297933A1 (en) | Numeric representation to improve life of solid state storage devices | |
CN116826892A (zh) | 充电方法、充电装置、电子设备及可读存储介质 | |
CN111273862A (zh) | 数据存储方法及其装置、可读介质和系统 | |
CN113657584B (zh) | 神经网络模型计算方法、数据处理方法、电子设备及介质 | |
JP2019505037A (ja) | シナリオに従いグラフィック処理解像度を変更する方法及びポータブル電子装置 | |
CN107193530B (zh) | 一种生成随机数的方法和装置 | |
WO2021218502A1 (zh) | 一种页交换的方法、存储系统和电子设备 | |
CN113128673B (zh) | 数据处理方法、存储介质、神经网络处理器及电子设备 | |
CN112925644A (zh) | 深度学习算子优化方法、装置、设备及存储介质 | |
CN113656331A (zh) | 基于高低位的确定访问地址的方法和装置 | |
CN113419702B (zh) | 一种数据累加方法、处理器、电子设备及可读介质 | |
CN116881194B (zh) | 处理器、数据处理方法及计算机设备 | |
CN109690956B (zh) | 电子设备和用于电子设备的方法 | |
CN111510553A (zh) | 一种运动轨迹展示方法、装置和可读存储介质 | |
JP3928730B2 (ja) | 半導体装置、マイクロコンピュータ及び電子機器 | |
EP4357928A1 (en) | Methods and system for efficient access to solid state drive | |
WO2023197316A1 (en) | Scheduling ml services and models with heterogeneous resources |
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 |