CN114840175B - 一种实现取余运算的装置、方法及运算芯片 - Google Patents

一种实现取余运算的装置、方法及运算芯片 Download PDF

Info

Publication number
CN114840175B
CN114840175B CN202210754558.3A CN202210754558A CN114840175B CN 114840175 B CN114840175 B CN 114840175B CN 202210754558 A CN202210754558 A CN 202210754558A CN 114840175 B CN114840175 B CN 114840175B
Authority
CN
China
Prior art keywords
dividend
stage
remainder
operation unit
unit
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
Application number
CN202210754558.3A
Other languages
English (en)
Other versions
CN114840175A (zh
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.)
Shenglong Singapore Pte Ltd
Original Assignee
Sunlune Technology Beijing Co Ltd
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 Sunlune Technology Beijing Co Ltd filed Critical Sunlune Technology Beijing Co Ltd
Priority to CN202210754558.3A priority Critical patent/CN114840175B/zh
Publication of CN114840175A publication Critical patent/CN114840175A/zh
Application granted granted Critical
Publication of CN114840175B publication Critical patent/CN114840175B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本文公开一种实现取余运算的装置、方法及运算芯片。实现取余运算的装置包括输入模块、运算模块和输出模块;输入模块配置为接收原始被除数和原始除数并转换为二进制无符号整数形式,当原始被除数等于原始除数时将余数设置为0,当原始被除数小于原始除数时将余数设置为原始被除数;当原始被除数大于原始除数时将原始被除数和原始除数输出给运算模块;运算模块配置为确定原始被除数的有效位宽n和原始除数的有效位宽m,调用至多
Figure 100004_DEST_PATH_IMAGE001
个级联的运算单元进行减法运算得到余数,将最后一级运算单元计算得到的余数输出给输出模块;输出模块配置为输出余数。本文的方案能通过减少流水线结构的级数减少资源的占用并缩短取余运算的运算时间。

Description

一种实现取余运算的装置、方法及运算芯片
技术领域
本申请实施例涉及集成电路设计领域,尤其涉及一种实现取余运算的装置、方法及运算芯片。
背景技术
支持工作量证明(Proof Of Work,简称POW)机制的芯片在用硬件实现Ethash算法时,需要做被除数最大位宽为32位,除数最小位宽为22位的二进制整数的取余运算。对于32位二进制整数取余,相关技术中的解决方案是使用除法器进行取余运算,除法器一般采用32级运算单元构成的流水线结构,但是32级流水线结构占用资源过多,运算速度较慢,影响了POW芯片的运算性能。
发明内容
本申请实施例提供了一种实现取余运算的装置,包括:输入模块、运算模块和输出模块;
输入模块,配置为接收原始被除数和原始除数并转换为二进制无符号整数形式,比较原始被除数和原始除数的大小,当原始被除数等于原始除数时,将余数设置为0并输出给输出模块;当原始被除数小于原始除数时,将余数设置为原始被除数并输出给输出模块;当原始被除数大于原始除数时,将原始被除数和原始除数输出给运算模块;
运算模块,配置为确定原始被除数的有效位宽
Figure DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 296190DEST_PATH_IMAGE002
,调用至多
Figure DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,将最后一级运算单元计算得到的余数输出给输出模块;其中,第
Figure DEST_PATH_IMAGE005
级运算单元进行减法运算得到
Figure 534798DEST_PATH_IMAGE006
位余数;第一级运算单元截取原始被除数中从最高不为0的位开始的高
Figure DEST_PATH_IMAGE007
位数据作为本级被除数;除第一级运算单元外的第
Figure 841145DEST_PATH_IMAGE008
级运算单元将上一级运算单元生成的
Figure DEST_PATH_IMAGE009
位余数和原始被除数中的
Figure 531889DEST_PATH_IMAGE010
位数据组合为被除数,所述
Figure 817246DEST_PATH_IMAGE009
位余数作为被除数的高位部分,所述
Figure 115503DEST_PATH_IMAGE010
位原始被除数的数据作为被除数的低位部分;所有运算单元的除数为原始除数;所有运算单元按照从高位到低位的顺序依次从原始被除数中截取
Figure DEST_PATH_IMAGE011
位数据,任意两个运算单元截取的原始被除数的数据位之间没有交集;
Figure 361677DEST_PATH_IMAGE012
Figure 100002_DEST_PATH_IMAGE013
Figure 859042DEST_PATH_IMAGE014
Figure DEST_PATH_IMAGE015
Figure 671009DEST_PATH_IMAGE016
Figure DEST_PATH_IMAGE017
;二进制无符号整数的有效位宽是从最高不为0的位开始至最低位的比特序列的位数;
输出模块,配置为输出余数。
本申请实施例提供了一种实现取余运算的方法,包括:
输入模块接收原始被除数和原始除数并转换为二进制无符号整数形式,比较原始被除数和原始除数的大小,当原始被除数等于原始除数时,将余数设置为0并输出给输出模块;当原始被除数小于原始除数时,将余数设置为原始被除数并输出给输出模块;当原始被除数大于原始除数时,将原始被除数和原始除数输出给运算模块;
如果运算模块获取到原始被除数和原始除数,则确定原始被除数的有效位宽
Figure 327118DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 670375DEST_PATH_IMAGE002
,调用至多
Figure 765239DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,将最后一级运算单元计算得到的余数输出给输出模块;其中,第
Figure 713603DEST_PATH_IMAGE005
级运算单元进行减法运算得到
Figure 415980DEST_PATH_IMAGE006
位余数;第一级运算单元截取原始被除数中从最高不为0的位开始的高
Figure 436413DEST_PATH_IMAGE007
位数据作为本级被除数;除第一级运算单元外的第
Figure 85700DEST_PATH_IMAGE008
级运算单元将上一级运算单元生成的
Figure 934576DEST_PATH_IMAGE009
位余数和原始被除数中的
Figure 11117DEST_PATH_IMAGE010
位数据组合为被除数,所述位余数作为被除数的高位部分,所述
Figure 515916DEST_PATH_IMAGE010
位原始被除数的数据作为被除数的低位部分;所有运算单元的除数为原始除数;所有运算单元按照从高位到低位的顺序依次从原始被除数中截取
Figure 500053DEST_PATH_IMAGE011
位数据,任意两个运算单元截取的原始被除数的数据位之间没有交集;
Figure 157430DEST_PATH_IMAGE012
Figure 919719DEST_PATH_IMAGE013
Figure 928126DEST_PATH_IMAGE014
Figure 159694DEST_PATH_IMAGE015
Figure 671578DEST_PATH_IMAGE016
Figure 604768DEST_PATH_IMAGE017
;二进制无符号整数的有效位宽是从最高不为0的位开始至最低位的比特序列的位数;
输出模块输出余数。
本申请实施例提供了一种运算芯片,包括上述实现取余运算的装置。
本申请实施例提供的实现取余运算的装置包括输入模块、运算模块和输出模块。输入模块通过分类处理节省了原始被除数小于或等于原始除数时的求余运算的时间。和相关技术中被除数为N位位宽的除法器不同,本申请实施例的运算模块通过确定原始被除数的有效位宽
Figure 569313DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 410099DEST_PATH_IMAGE002
,第一级运算单元从原始被除数中可以直接获取
Figure 776489DEST_PATH_IMAGE002
位高位数据作为本级运算单元的被除数,实现了动态调用至多
Figure 880581DEST_PATH_IMAGE003
个级联的运算单元(也即
Figure 598001DEST_PATH_IMAGE003
级流水线结构)完成取余运算,通过减少流水线结构的级数,能够减少资源的占用并缩短取余运算的运算时间。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例的一种实现取余运算的装置的结构示意图;
图2为本申请实施例的一种运算模块的结构示意图;
图3为本申请实施例的另一种运算模块的结构示意图;
图4为本申请实施例的另一种运算模块的结构示意图;
图5为本申请实施例的另一种运算模块的结构示意图;
图6为本申请实施例的一种实现取余运算的方法的流程图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由所附权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由所附权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
本申请实施例提供了一种实现取余运算的装置。如图1所示,一种实现取余运算的装置,包括:输入模块、运算模块和输出模块;
输入模块,配置为接收原始被除数和原始除数并转换为二进制无符号整数形式,比较原始被除数和原始除数的大小,当原始被除数等于原始除数时,将余数设置为0并输出给输出模块;当原始被除数小于原始除数时,将余数设置为原始被除数并输出给输出模块;当原始被除数大于原始除数时,将原始被除数和原始除数输出给运算模块;
运算模块,配置为确定原始被除数的有效位宽
Figure 183090DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 200725DEST_PATH_IMAGE002
,调用至多
Figure 226450DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,将最后一级运算单元计算得到的余数输出给输出模块;其中,第
Figure 477171DEST_PATH_IMAGE005
级运算单元进行减法运算得到
Figure 613755DEST_PATH_IMAGE006
位余数;第一级运算单元截取原始被除数中从最高不为0的位开始的高
Figure 204005DEST_PATH_IMAGE007
位数据作为本级被除数;除第一级运算单元外的第
Figure 931790DEST_PATH_IMAGE008
级运算单元将上一级运算单元生成的
Figure 623802DEST_PATH_IMAGE009
位余数和原始被除数中的
Figure 547765DEST_PATH_IMAGE010
位数据组合为被除数,所述
Figure 8833DEST_PATH_IMAGE009
位余数作为被除数的高位部分,所述
Figure 628558DEST_PATH_IMAGE010
位原始被除数的数据作为被除数的低位部分;所有运算单元的除数为原始除数;所有运算单元按照从高位到低位的顺序依次从原始被除数中截取
Figure 276708DEST_PATH_IMAGE011
位数据,任意两个运算单元截取的原始被除数的数据位之间没有交集;
Figure 4361DEST_PATH_IMAGE012
Figure 382253DEST_PATH_IMAGE013
Figure 904370DEST_PATH_IMAGE014
Figure 305395DEST_PATH_IMAGE015
Figure 571161DEST_PATH_IMAGE016
Figure 803559DEST_PATH_IMAGE017
;二进制无符号整数的有效位宽是从最高不为0的位开始至最低位的比特序列的位数;
输出模块,配置为输出余数。
本申请实施例提供的实现取余运算的装置包括输入模块、运算模块和输出模块。输入模块通过分类处理节省了原始被除数小于或等于原始除数时的求余运算的时间。和相关技术中被除数为N位位宽的除法器不同,本申请实施例的运算模块通过确定原始被除数的有效位宽
Figure 247310DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 387828DEST_PATH_IMAGE002
,第一级运算单元从原始被除数中可以直接获取
Figure 4755DEST_PATH_IMAGE002
位高位数据作为本级运算单元的被除数,实现动态调用至多
Figure 544189DEST_PATH_IMAGE003
个级联的运算单元(也即
Figure 627683DEST_PATH_IMAGE003
级流水线结构)完成取余运算,通过减少流水线结构的级数,能够减少资源的占用并缩短取余运算的运算时间。
二进制无符号整数的有效位宽是从最高不为0的位开始至最低位的比特序列的位数。比如,一个最大位宽为8位的非零二进制无符号整数(
Figure 49306DEST_PATH_IMAGE018
)是“00101110”,其最高不为0的位是
Figure DEST_PATH_IMAGE019
,从
Figure 328977DEST_PATH_IMAGE019
到最低位
Figure 535968DEST_PATH_IMAGE020
的比特序列的位数为6位,因此,“00101110”的有效位宽是6位。二进制无符号整数0的有效位宽为0位。
在一些应用场景下,原始除数为最小位宽为M的无符号二进制整数。比如Ethash算法中要求除数的最小位宽为22。本申请实施例提供的运算装置在除数的最小位宽较大时能够明显缩短取余运算的时间。
如图2和图3所示,在一些示例性的实施方式中,所述运算模块包括:移位寄存器21、移位指针控制器22和多个级联的运算单元23;
移位寄存器,配置为存储原始被除数从最高不为0的位开始至最低位的比特序列,在移位指针控制器的控制下向左移出一位或多位数据;
移位指针控制器,配置为确定原始被除数的有效位宽
Figure DEST_PATH_IMAGE021
和原始除数的有效位宽
Figure 523120DEST_PATH_IMAGE022
,调用至多
Figure DEST_PATH_IMAGE023
个级联的运算单元进行减法运算得到余数,按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 307406DEST_PATH_IMAGE024
位数据至第
Figure DEST_PATH_IMAGE025
级运算单元;
Figure 187506DEST_PATH_IMAGE026
Figure DEST_PATH_IMAGE027
Figure 639216DEST_PATH_IMAGE028
Figure DEST_PATH_IMAGE029
如图2所示,在一些示例性的实施方式中,移位指针控制器,配置为采用以下方式按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 330091DEST_PATH_IMAGE011
位数据至第
Figure 729236DEST_PATH_IMAGE005
级运算单元:
调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序向左移出1位数据至所述运算单元。
如图3所示,在一些示例性的实施方式中,移位指针控制器,配置为采用以下方式按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 429339DEST_PATH_IMAGE011
位数据至第
Figure 797872DEST_PATH_IMAGE005
级运算单元:
调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则确定所述运算单元的上一级运算单元生成的余数的有效位宽
Figure 190807DEST_PATH_IMAGE030
,如果
Figure DEST_PATH_IMAGE031
,则确定移位寄存器中剩余数据的有效位宽t,如果
Figure 746422DEST_PATH_IMAGE032
,则从移位寄存器中按照从高位到低位的顺序向左移出所有数据至所述运算单元,如果
Figure DEST_PATH_IMAGE033
,则从移位寄存器中按照从高位到低位的顺序向左移出有效位宽为m的多位数据至所述运算单元;如果
Figure 171587DEST_PATH_IMAGE034
,则确定移位寄存器中剩余数据的位宽t,如果
Figure DEST_PATH_IMAGE035
,则从移位寄存器中按照从高位到低位的顺序向左移出t位数据至所述运算单元;如果
Figure 335240DEST_PATH_IMAGE033
-a,则从移位寄存器中按照从高位到低位的顺序向左移出
Figure 430235DEST_PATH_IMAGE036
位数据至所述运算单元;其中,移位寄存器中剩余数据的有效位宽是从最高不为0的位开始至最低位的比特序列的位数,移位寄存器中剩余数据的位宽是剩余数据从最高位开始至最低位的比特序列的位数。
在一些示例性的实施方式中,所述移位指针控制器,还配置为调用任意一级运算单元时,如果所述运算单元是最后一级运算单元,则控制所述运算单元向输出模块输出本级运算单元生成的余数,如果所述运算单元不是最后一级运算单元,则控制所述运算单元向下一级运算单元输出本级运算单元生成的余数。
在一些示例性的实施方式中,移位指针控制器,配置为采用以下方式判断所述运算单元是否为最后一级运算单元:
如果移位寄存器向所述运算单元移出数据后,移位寄存器中剩余0位数据,则判定所述运算单元为最后一级运算单元;
如果移位寄存器向所述运算单元移出数据后,移位寄存器中剩余至少一位数据,则判定所述运算单元不是最后一级运算单元。
如图4所示,所述运算模块包括:移位寄存器21、移位指针控制器22和多个级联的运算单元23;
移位寄存器,配置为存储原始被除数从最高不为0的位开始至最低位的比特序列,在移位指针控制器的控制下向左移出一位或多位数据;
移位指针控制器,配置为确定原始被除数的有效位宽
Figure 4305DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 46210DEST_PATH_IMAGE002
,调用
Figure 936806DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 920811DEST_PATH_IMAGE011
位数据至第
Figure 201751DEST_PATH_IMAGE005
级运算单元:调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序向左移出1位数据至所述运算单元;调用任意一级运算单元时,如果所述运算单元是最后一级运算单元,则控制所述运算单元向输出模块输出本级运算单元生成的余数,如果所述运算单元不是最后一级运算单元,则控制所述运算单元向下一级运算单元输出本级运算单元生成的余数;
Figure 358932DEST_PATH_IMAGE014
Figure DEST_PATH_IMAGE037
Figure 231597DEST_PATH_IMAGE015
Figure 137236DEST_PATH_IMAGE016
Figure 702210DEST_PATH_IMAGE017
所述运算单元包括:被除数高位存储单元1、被除数低位存储单元2、被除数组合单元3,除数存储单元4,比较器5,减法器6和余数存储单元7;
除第一级运算单元外的任意一级运算单元的被除数高位存储单元,配置为从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元,配置为不存储数据;
任意一级运算单元的被除数低位存储单元,配置为从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元,配置为将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元,配置为获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器,配置为比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器,配置为用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元,配置为存储本级余数;
除最后一级运算单元外的任意一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向下一级运算单元输出本级余数;
最后一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向输出模块输出本级余数。
上述实施例提供的运算模块,移位指针控制器确定原始被除数的有效位宽
Figure 335185DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 403635DEST_PATH_IMAGE002
,调用
Figure 729443DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,移位指针控制器控制第一级运算单元从移位寄存器获取
Figure 47292DEST_PATH_IMAGE002
位原始被除数的高位数据作为本级运算单元的被除数,其他级运算单元按照从高位到低位的顺序依次从移位寄存器获取1位数据作为本级运算单元的被除数的低位部分,移位指针控制器控制最后一级运算单元之前的所有级运算单元的余数存储单元向下一级运算单元的被除数高位存储单元输出数据,移位指针控制器控制最后一级运算单元的余数存储单元向输出模块输出数据(最终的余数)。运算模块动态调用
Figure 483959DEST_PATH_IMAGE003
级运算单元进行运算,减少了资源的占用并缩短了取余运算的运算时间。
假设原始被除数A从最高不为0的位开始至最低位的比特序列为
Figure 141336DEST_PATH_IMAGE038
,也即原始被除数的有效位宽
Figure 185516DEST_PATH_IMAGE001
为7,原始除数B的有效位宽
Figure 434401DEST_PATH_IMAGE002
为4。移位寄存器中存储原始被除数A从最高不为0的位开始至最低位的比特序列
Figure 425491DEST_PATH_IMAGE038
第一级运算单元的被除数低位存储单元从移位寄存器获取到原始被除数从最高不为0的位开始的高4位数据,也即
Figure DEST_PATH_IMAGE039
,第一级运算单元的被除数高位存储单元没有数据,第一级运算单元的被除数为
Figure 124326DEST_PATH_IMAGE039
。假设第一级运算单元生成的余数为
Figure 588674DEST_PATH_IMAGE040
第二级运算单元的被除数高位存储单元从第一级运算单元的余数存储单元获取第一级运算单元生成的余数
Figure 553219DEST_PATH_IMAGE040
作为本级被除数的高位部分,第二级运算单元的被除数低位存储单元从移位寄存器获取到原始被除数的第3位数据
Figure DEST_PATH_IMAGE041
作为本级被除数的低位部分,则组合成的第二级运算单元的被除数为
Figure 534950DEST_PATH_IMAGE042
。假设第二级运算单元生成的余数为
Figure DEST_PATH_IMAGE043
第三级运算单元的被除数高位存储单元从第二级运算单元的余数存储单元获取第二级运算单元生成的余数
Figure 153538DEST_PATH_IMAGE043
作为本级被除数的高位部分,第三级运算单元的被除数低位存储单元从移位寄存器获取到原始被除数的第2位数据
Figure 477203DEST_PATH_IMAGE044
作为本级被除数的低位部分,则组合成的第三级运算单元的被除数为
Figure DEST_PATH_IMAGE045
。因为第三级运算单元的被除数
Figure 443891DEST_PATH_IMAGE045
小于除数B,因此,第三级运算单元生成的余数为
Figure 26051DEST_PATH_IMAGE045
第四级运算单元的被除数高位存储单元从第三级运算单元的余数存储单元获取第三级运算单元生成的余数
Figure 512527DEST_PATH_IMAGE046
作为本级被除数的高位部分,第四级运算单元的被除数低位存储单元从移位寄存器获取到原始被除数的第1位数据
Figure DEST_PATH_IMAGE047
作为本级被除数的低位部分,则组合成的第四级运算单元的被除数为
Figure 990782DEST_PATH_IMAGE048
。假设第四级运算单元生成的余数为
Figure DEST_PATH_IMAGE049
,则运算模块最终的余数为
Figure 385378DEST_PATH_IMAGE049
,运算模块将余数
Figure 53120DEST_PATH_IMAGE049
输出给输出模块。
现有技术中,假设被除数的最大位宽为32位,则被除数无论实际位宽为多少,都通过在高位补零成为32位二进制数,除法器通常采用固定级数(32级)的流水线结构完成取余运算。因此,相较于现有技术中的固定级数(32级)流水线结构,本申请通过动态调用4级(
Figure 643370DEST_PATH_IMAGE003
)流水线结构完成取余运算,大大节省了资源的占用和运算时间。
在一些示例性的实施方式中,如图5所示,所述运算模块包括:移位寄存器21、移位指针控制器22和多个级联的运算单元23;
移位寄存器,配置为存储原始被除数,在移位指针控制器的控制下向左移出一位或多位数据;
移位指针控制器,配置为确定原始被除数的有效位宽
Figure 105576DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 515697DEST_PATH_IMAGE002
,调用至多
Figure 455971DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 166307DEST_PATH_IMAGE011
位数据至第
Figure 268256DEST_PATH_IMAGE005
级运算单元:调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则确定所述运算单元的上一级运算单元生成的余数的有效位宽
Figure 978723DEST_PATH_IMAGE030
,如果
Figure 709306DEST_PATH_IMAGE031
,则确定移位寄存器中剩余数据的有效位宽t,如果
Figure 821618DEST_PATH_IMAGE032
,则从移位寄存器中按照从高位到低位的顺序向左移出所有数据至所述运算单元,如果
Figure 609315DEST_PATH_IMAGE033
,则从移位寄存器中按照从高位到低位的顺序向左移出有效位宽为m的多位数据至所述运算单元;如果
Figure 10340DEST_PATH_IMAGE034
,则确定移位寄存器中剩余数据的位宽t,如果
Figure 276105DEST_PATH_IMAGE035
,则从移位寄存器中按照从高位到低位的顺序向左移出t位数据至所述运算单元;如果
Figure 508503DEST_PATH_IMAGE050
,则从移位寄存器中按照从高位到低位的顺序向左移出
Figure 952254DEST_PATH_IMAGE036
位数据至所述运算单元;调用任意一级运算单元时,如果所述运算单元是最后一级运算单元,则控制所述运算单元向输出模块输出本级运算单元生成的余数,如果所述运算单元不是最后一级运算单元,则控制所述运算单元向下一级运算单元输出本级运算单元生成的余数;其中,移位寄存器中剩余数据的有效位宽是从最高不为0的位开始至最低位的比特序列的位数,移位寄存器中剩余数据的位宽是剩余数据从最高位开始至最低位的比特序列的位数;
Figure 355423DEST_PATH_IMAGE014
Figure DEST_PATH_IMAGE051
Figure 720869DEST_PATH_IMAGE016
Figure 11036DEST_PATH_IMAGE017
所述运算单元包括:被除数高位存储单元1、被除数低位存储单元2、被除数组合单元3,除数存储单元4,比较器5,减法器6和余数存储单元7;
除第一级运算单元外的任意一级运算单元的被除数高位存储单元,配置为从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元,配置为不存储数据;
任意一级运算单元的被除数低位存储单元,配置为从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元,配置为将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元,配置为获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器,配置为比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器,配置为用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元,配置为存储本级余数;确定所述本级余数的有效位宽,将所述本级余数的有效位宽信息发送给移位指针控制器;
除最后一级运算单元外的任意一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向下一级运算单元输出本级余数;
最后一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向输出模块输出本级余数。
上述实施例提供的运算模块,移位指针控制器确定原始被除数的有效位宽
Figure 609376DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 984994DEST_PATH_IMAGE002
,每一级运算单元通过向移位指针控制器反馈本级运算单元生成的余数的位宽信息,使得移位指针控制器至多调用
Figure 405611DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,移位指针控制器控制第一级运算单元从移位寄存器获取
Figure 533973DEST_PATH_IMAGE002
位原始被除数的高位数据作为本级运算单元的被除数,其他级运算单元按照从高位到低位的顺序依次从移位寄存器获取一位或多位数据作为本级运算单元的被除数的低位部分,移位指针控制器控制最后一级运算单元之前的所有级运算单元的余数存储单元向下一级运算单元的被除数高位存储单元输出数据,移位指针控制器控制最后一级运算单元的余数存储单元向输出模块输出数据(最终的余数)。运算模块动态调用至多
Figure 116264DEST_PATH_IMAGE003
级运算单元进行运算,减少了资源的占用并缩短了取余运算的运算时间。
假设原始被除数A从最高不为0的位开始至最低位的比特序列为
Figure 228445DEST_PATH_IMAGE052
,也即原始被除数的有效位宽为16,原始除数B的有效位宽
Figure 390436DEST_PATH_IMAGE002
为4。移位寄存器中存储原始被除数A从最高不为0的位开始至最低位的比特序列
Figure 451933DEST_PATH_IMAGE052
第一级运算单元的被除数低位存储单元从移位寄存器获取到原始被除数从最高不为0的位开始的高4位数据,也即
Figure DEST_PATH_IMAGE053
,第一级运算单元的被除数高位存储单元没有数据,第一级运算单元的被除数为
Figure 598268DEST_PATH_IMAGE053
。假设第一级运算单元生成的余数R为
Figure 728904DEST_PATH_IMAGE054
Figure 694586DEST_PATH_IMAGE054
的有效位宽a为1。
第二级运算单元的被除数高位存储单元从第一级运算单元的余数存储单元获取第一级运算单元生成的余数
Figure 63119DEST_PATH_IMAGE054
作为本级被除数的高位部分,因为第一级运算单元生成的余数R的有效位宽
Figure DEST_PATH_IMAGE055
,则确定移位寄存器中剩余数据
Figure 377426DEST_PATH_IMAGE056
的位宽为12,因为
Figure DEST_PATH_IMAGE057
,所以第二级运算单元的被除数低位存储单元从移位寄存器获取到移位寄存器中剩余数据
Figure 949353DEST_PATH_IMAGE056
中从高到低的
Figure 705344DEST_PATH_IMAGE058
位数据(
Figure DEST_PATH_IMAGE059
)作为本级被除数的低位部分,组合成的第二级运算单元的被除数为
Figure 397225DEST_PATH_IMAGE060
。假设第二级运算单元生成的余数R为0,R的有效位宽a为0。
第三级运算单元的被除数高位存储单元从第二级运算单元的余数存储单元获取第二级运算单元生成的余数0作为本级被除数的高位部分,因为第二级运算单元生成的余数R的有效位宽
Figure DEST_PATH_IMAGE061
,则确定移位寄存器中剩余数据
Figure 882433DEST_PATH_IMAGE062
的有效位宽为7(假设
Figure DEST_PATH_IMAGE063
两位均为0),因为
Figure 128607DEST_PATH_IMAGE064
,所以第三级运算单元的被除数低位存储单元从移位寄存器获取到移位寄存器中剩余数据
Figure 232829DEST_PATH_IMAGE062
中从高到低的
Figure DEST_PATH_IMAGE065
位数据(
Figure 250988DEST_PATH_IMAGE066
)作为本级被除数的低位部分,
Figure 782463DEST_PATH_IMAGE066
的有效位宽为4,组合成的第三级运算单元的被除数为
Figure 578250DEST_PATH_IMAGE066
Figure 158267DEST_PATH_IMAGE063
两位均为0)。假设第三级运算单元生成的余数R为
Figure DEST_PATH_IMAGE067
Figure 824741DEST_PATH_IMAGE067
的有效位宽a为2。
第四级运算单元的被除数高位存储单元从第三级运算单元的余数存储单元获取第三级运算单元生成的余数
Figure 730380DEST_PATH_IMAGE067
作为本级被除数的高位部分,因为第三级运算单元生成的余数R的有效位宽
Figure 13462DEST_PATH_IMAGE055
,则确定移位寄存器中剩余数据
Figure 193908DEST_PATH_IMAGE068
的位宽为3,因为
Figure DEST_PATH_IMAGE069
,所以第四级运算单元的被除数低位存储单元从移位寄存器获取到移位寄存器中剩余数据
Figure 237257DEST_PATH_IMAGE068
中从高到低的
Figure 313798DEST_PATH_IMAGE070
位数据(
Figure DEST_PATH_IMAGE071
)作为本级被除数的低位部分,组合成的第四级运算单元的被除数为
Figure 287439DEST_PATH_IMAGE072
。假设第四级运算单元生成的余数R为0,R的有效位宽a为0。
第五级运算单元的被除数高位存储单元从第四级运算单元的余数存储单元获取第四级运算单元生成的余数作为本级被除数的高位部分,因为第四级运算单元生成的余数R的有效位宽
Figure 989685DEST_PATH_IMAGE061
,则确定移位寄存器中剩余数据
Figure DEST_PATH_IMAGE073
的有效位宽为1,因为
Figure 834013DEST_PATH_IMAGE074
,所以第五级运算单元的被除数低位存储单元从移位寄存器获取到移位寄存器中剩余数据
Figure 81454DEST_PATH_IMAGE073
中的所有数据
Figure 621020DEST_PATH_IMAGE073
作为本级被除数的低位部分,组合成的第五级运算单元的被除数为
Figure 864307DEST_PATH_IMAGE073
。因为第五级运算单元的被除数
Figure 172929DEST_PATH_IMAGE073
小于除数B,因此,第五级运算单元生成的余数为
Figure 840539DEST_PATH_IMAGE073
,则运算模块最终的余数为
Figure 336243DEST_PATH_IMAGE073
,运算模块将余数
Figure 114712DEST_PATH_IMAGE073
输出给输出模块。
现有技术中,假设被除数的最大位宽为32位,则被除数无论实际位宽为多少,都通过在高位补零成为32位二进制数,除法器通常采用固定级数(32级)的流水线结构完成取余运算。因此,相较于现有技术中的固定级数(32级)流水线结构,本申请通过动态调用5级流水线结构完成取余运算,大大节省了资源的占用和运算时间。
在一些示例性的实施方式中,移位指针控制器,还配置为向除最后一级运算单元外的所有级运算单元的余数存储单元发送第一使能信号,向最后一级运算单元的余数存储单元发送第二使能信号;
在一些示例性的实施方式中,任意一级运算单元的余数存储单元,还配置为如果接收到第一使能信号,则向下一级运算单元输出本级运算单元生成的余数,如果接收到第二使能信号,则向输出模块输出本级运算单元生成的余数。
本申请实施例提供一种实现取余运算的方法。如图6所示,一种实现取余运算的方法,包括:
步骤S10,输入模块接收原始被除数和原始除数并转换为二进制无符号整数形式,比较原始被除数和原始除数的大小,当原始被除数等于原始除数时,将余数设置为0并输出给输出模块;当原始被除数小于原始除数时,将余数设置为原始被除数并输出给输出模块;当原始被除数大于原始除数时,将原始被除数和原始除数输出给运算模块;
步骤S20,如果运算模块获取到原始被除数和原始除数,则确定原始被除数的有效位宽
Figure 746681DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 132663DEST_PATH_IMAGE002
,调用至多
Figure 99351DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,将最后一级运算单元计算得到的余数输出给输出模块;其中,第
Figure 432244DEST_PATH_IMAGE005
级运算单元进行减法运算得到
Figure 436496DEST_PATH_IMAGE006
位余数;第一级运算单元截取原始被除数中从最高不为0的位开始的高
Figure 727800DEST_PATH_IMAGE007
位数据作为本级被除数;除第一级运算单元外的第
Figure 916205DEST_PATH_IMAGE008
级运算单元将上一级运算单元生成的
Figure 52788DEST_PATH_IMAGE009
位余数和原始被除数中的
Figure 908618DEST_PATH_IMAGE010
位数据组合为被除数,所述
Figure 839665DEST_PATH_IMAGE009
位余数作为被除数的高位部分,所述
Figure 780945DEST_PATH_IMAGE010
位原始被除数的数据作为被除数的低位部分;所有运算单元的除数为原始除数;所有运算单元按照从高位到低位的顺序依次从原始被除数中截取
Figure 517956DEST_PATH_IMAGE011
位数据,任意两个运算单元截取的原始被除数的数据位之间没有交集;
Figure 713446DEST_PATH_IMAGE012
Figure 864329DEST_PATH_IMAGE013
Figure 43637DEST_PATH_IMAGE014
Figure 771291DEST_PATH_IMAGE015
Figure 86866DEST_PATH_IMAGE016
Figure 608983DEST_PATH_IMAGE017
;二进制无符号整数的有效位宽是从最高不为0的位开始至最低位的比特序列的位数;
步骤S30,输出模块输出余数。
本申请实施例提供的实现取余运算的方法,输入模块通过分类处理节省了原始被除数小于或等于原始除数时的求余运算的时间。和相关技术中被除数为N位位宽的除法运算不同,本申请实施例的运算模块不需要每次运算都使用N级流水线结构,而可以通过确定原始被除数的有效位宽
Figure 10008DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 88823DEST_PATH_IMAGE002
动态调用至多
Figure 508171DEST_PATH_IMAGE003
个级联的运算单元(也即
Figure 217502DEST_PATH_IMAGE003
级流水线结构)完成取余运算,通过减少流水线结构的级数,能够减少资源的占用并缩短取余运算的运算时间。
在一些示例性的实施方式中,运算模块调用至多
Figure 369739DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,包括:
移位寄存器存储原始被除数从最高不为0的位开始至最低位的比特序列;移位指针控制器确定原始被除数的有效位宽
Figure 189928DEST_PATH_IMAGE001
和原始除数的有效位宽
Figure 463783DEST_PATH_IMAGE002
,调用至多
Figure 140752DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 500058DEST_PATH_IMAGE011
位数据至第
Figure 123937DEST_PATH_IMAGE005
级运算单元;
Figure 517878DEST_PATH_IMAGE014
Figure 569011DEST_PATH_IMAGE015
Figure 228663DEST_PATH_IMAGE016
Figure 174009DEST_PATH_IMAGE017
其中,所述运算模块包括:移位寄存器、移位指针控制器和多个级联的运算单元。
在一些示例性的实施方式中,移位指针控制器按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 438769DEST_PATH_IMAGE011
位数据至第
Figure 378912DEST_PATH_IMAGE005
级运算单元,包括:
移位指针控制器调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序向左移出1位数据至所述运算单元。
在一些示例性的实施方式中,移位指针控制器调用至多
Figure 729122DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 491541DEST_PATH_IMAGE011
位数据至第
Figure 860074DEST_PATH_IMAGE005
级运算单元,包括:
除第一级运算单元外的任意一级运算单元的被除数高位存储单元从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元不存储数据;
任意一级运算单元的被除数低位存储单元从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元存储本级余数;
除最后一级运算单元外的任意一级运算单元的余数存储单元在移位指针控制器的控制下向下一级运算单元输出本级余数;最后一级运算单元的余数存储单元在移位指针控制器的控制下向输出模块输出本级余数;
其中,所述运算单元包括:被除数高位存储单元、被除数低位存储单元、被除数组合单元,除数存储单元,比较器,减法器和余数存储单元。
在一些示例性的实施方式中,移位指针控制器按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 253010DEST_PATH_IMAGE011
位数据至第
Figure 74204DEST_PATH_IMAGE005
级运算单元,包括:
移位指针控制器调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则确定所述运算单元的上一级运算单元生成的余数的有效位宽
Figure DEST_PATH_IMAGE075
,如果
Figure 502299DEST_PATH_IMAGE076
,则确定移位寄存器中剩余数据的有效位宽t,如果
Figure DEST_PATH_IMAGE077
,则从移位寄存器中按照从高位到低位的顺序向左移出所有数据至所述运算单元,如果
Figure 459759DEST_PATH_IMAGE078
,则从移位寄存器中按照从高位到低位的顺序向左移出有效位宽为m的多位数据至所述运算单元;如果
Figure DEST_PATH_IMAGE079
,则确定移位寄存器中剩余数据的位宽t,如果
Figure 758017DEST_PATH_IMAGE080
,则从移位寄存器中按照从高位到低位的顺序向左移出t位数据至所述运算单元;如果
Figure DEST_PATH_IMAGE081
,则从移位寄存器中按照从高位到低位的顺序向左移出
Figure 535349DEST_PATH_IMAGE082
位数据至所述运算单元;其中,移位寄存器中剩余数据的有效位宽是从最高不为0的位开始至最低位的比特序列的位数,移位寄存器中剩余数据的位宽是剩余数据从最高位开始至最低位的比特序列的位数。
在一些示例性的实施方式中,移位指针控制器调用至多
Figure 92101DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 920380DEST_PATH_IMAGE011
位数据至第
Figure 907315DEST_PATH_IMAGE005
级运算单元,包括:
除第一级运算单元外的任意一级运算单元的被除数高位存储单元从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元不存储数据;
任意一级运算单元的被除数低位存储单元从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元存储本级余数;确定所述本级余数的有效位宽,将所述本级余数的有效位宽信息发送给移位指针控制器;
除最后一级运算单元外的任意一级运算单元的余数存储单元在移位指针控制器的控制下向下一级运算单元输出本级余数;最后一级运算单元的余数存储单元在移位指针控制器的控制下向输出模块输出本级余数;
其中,所述运算单元包括:被除数高位存储单元、被除数低位存储单元、被除数组合单元,除数存储单元,比较器,减法器和余数存储单元。
在一些示例性的实施方式中,所述移位指针控制器调用至多
Figure 250571DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,包括:移位指针控制器调用任意一级运算单元时,如果所述运算单元是最后一级运算单元,则控制所述运算单元向输出模块输出本级运算单元生成的余数,如果所述运算单元不是最后一级运算单元,则控制所述运算单元向下一级运算单元输出本级运算单元生成的余数。
在一些示例性的实施方式中,所述移位指针控制器调用至多
Figure 830588DEST_PATH_IMAGE003
个级联的运算单元进行减法运算得到余数,包括:如果移位寄存器向所述运算单元移出数据后,移位寄存器中剩余0位数据,则移位指针控制判定所述运算单元为最后一级运算单元;如果移位寄存器向所述运算单元移出数据后,移位寄存器中剩余至少一位数据,则移位指针控制判定所述运算单元不是最后一级运算单元。
本申请实施例提供了一种运算芯片,包括上述实现取余运算的装置。
在一些示例性的实施方式中,所述运算芯片支持工作量证明机制(Proof OfWork,简称POW)。
在一些示例性的实施方式中,所述运算芯片通过所述取余运算的装置实现Ethash算法中的取余运算。
本领域普通技术人员可以理解,上文中所公开的装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (13)

1.一种实现取余运算的装置,包括:输入模块、运算模块和输出模块;
输入模块,配置为接收原始被除数和原始除数并转换为二进制无符号整数形式,比较原始被除数和原始除数的大小,当原始被除数等于原始除数时,将余数设置为0并输出给输出模块;当原始被除数小于原始除数时,将余数设置为原始被除数并输出给输出模块;当原始被除数大于原始除数时,将原始被除数和原始除数输出给运算模块;
运算模块,配置为确定原始被除数的有效位宽n和原始除数的有效位宽m,调用至多n-m +1个级联的运算单元进行减法运算得到余数,将最后一级运算单元计算得到的余数输出给 输出模块;其中,第j级运算单元进行减法运算得到
Figure 408489DEST_PATH_IMAGE001
位余数;第一级运算单元截取原始被 除数中从最高不为0的位开始的高
Figure 263313DEST_PATH_IMAGE002
位数据作为本级被除数;除第一级运算单元外的第i级 运算单元将上一级运算单元生成的
Figure 230001DEST_PATH_IMAGE003
位余数和原始被除数中的
Figure 890789DEST_PATH_IMAGE004
位数据组合为被除 数,所述
Figure 377265DEST_PATH_IMAGE003
位余数作为被除数的高位部分,所述
Figure 730886DEST_PATH_IMAGE004
位原始被除数的数据作为被除数的低 位部分;所有运算单元的除数为原始除数;所有运算单元按照从高位到低位的顺序依次从 原始被除数中截取
Figure 653712DEST_PATH_IMAGE005
位数据,任意两个运算单元截取的原始被除数的数据位之间没有交 集;
Figure 383770DEST_PATH_IMAGE006
Figure 724753DEST_PATH_IMAGE007
Figure 249275DEST_PATH_IMAGE008
Figure 659397DEST_PATH_IMAGE009
Figure 68513DEST_PATH_IMAGE010
Figure 857477DEST_PATH_IMAGE011
;二进制无符号整数的 有效位宽是从最高不为0的位开始至最低位的比特序列的位数;
输出模块,配置为输出余数;
所述运算模块包括:移位寄存器、移位指针控制器和多个级联的运算单元;
移位寄存器,配置为存储原始被除数从最高不为0的位开始至最低位的比特序列,在移位指针控制器的控制下向左移出一位或多位数据;
移位指针控制器,配置为确定原始被除数的有效位宽n和原始除数的有效位宽m,调用 至多n-m+1个级联的运算单元进行减法运算得到余数,按照从高位到低位的顺序依次从移 位寄存器中向左移出
Figure 208693DEST_PATH_IMAGE005
位数据至第j级运算单元。
2.如权利要求1所述的装置,其特征在于:
移位指针控制器,配置为采用以下方式按照从高位到低位的顺序依次从移位寄存器中 向左移出
Figure 981477DEST_PATH_IMAGE005
位数据至第
Figure 928704DEST_PATH_IMAGE012
级运算单元:
调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序向左移出1位数据至所述运算单元。
3.如权利要求2所述的装置,其特征在于:
所述移位指针控制器,还配置为调用任意一级运算单元时,如果所述运算单元是最后一级运算单元,则控制所述运算单元向输出模块输出本级运算单元生成的余数,如果所述运算单元不是最后一级运算单元,则控制所述运算单元向下一级运算单元输出本级运算单元生成的余数;
所述运算单元包括:被除数高位存储单元、被除数低位存储单元、被除数组合单元,除数存储单元,比较器,减法器和余数存储单元;
除第一级运算单元外的任意一级运算单元的被除数高位存储单元,配置为从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元,配置为不存储数据;
任意一级运算单元的被除数低位存储单元,配置为从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元,配置为将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元,配置为获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器,配置为比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器,配置为用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元,配置为存储本级余数;
除最后一级运算单元外的任意一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向下一级运算单元输出本级余数;
最后一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向输出模块输出本级余数。
4.如权利要求1所述的装置,其特征在于:
移位指针控制器,配置为采用以下方式按照从高位到低位的顺序依次从移位寄存器中 向左移出
Figure 103334DEST_PATH_IMAGE005
位数据至第
Figure 94292DEST_PATH_IMAGE012
级运算单元:
调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中 按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是 第一级运算单元,则确定所述运算单元的上一级运算单元生成的余数的有效位宽
Figure DEST_PATH_IMAGE013
,如果
Figure 26476DEST_PATH_IMAGE014
,则确定移位寄存器中剩余数据的有效位宽t,如果
Figure 761083DEST_PATH_IMAGE015
,则从移位寄存器中按照 从高位到低位的顺序向左移出所有数据至所述运算单元,如果
Figure 790219DEST_PATH_IMAGE016
,则从移位寄存器中 按照从高位到低位的顺序向左移出有效位宽为m的多位数据至所述运算单元;如果
Figure 968390DEST_PATH_IMAGE017
, 则确定移位寄存器中剩余数据的位宽t,如果
Figure 450187DEST_PATH_IMAGE018
,则从移位寄存器中按照从高位到 低位的顺序向左移出t位数据至所述运算单元;如果
Figure 988485DEST_PATH_IMAGE019
,则从移位寄存器中按照从 高位到低位的顺序向左移出m-a位数据至所述运算单元;其中,移位寄存器中剩余数据的有 效位宽是从最高不为0的位开始至最低位的比特序列的位数,移位寄存器中剩余数据的位 宽是剩余数据从最高位开始至最低位的比特序列的位数。
5.如权利要求3所述的装置,其特征在于:
所述移位指针控制器,还配置为调用任意一级运算单元时,如果所述运算单元是最后一级运算单元,则控制所述运算单元向输出模块输出本级运算单元生成的余数,如果所述运算单元不是最后一级运算单元,则控制所述运算单元向下一级运算单元输出本级运算单元生成的余数;
所述运算单元包括:被除数高位存储单元、被除数低位存储单元、被除数组合单元,除数存储单元,比较器,减法器和余数存储单元;
除第一级运算单元外的任意一级运算单元的被除数高位存储单元,配置为从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元,配置为不存储数据;
任意一级运算单元的被除数低位存储单元,配置为从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元,配置为将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元,配置为获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器,配置为比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器,配置为用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元,配置为存储本级余数;确定所述本级余数的有效位宽,将所述本级余数的有效位宽信息发送给移位指针控制器;
除最后一级运算单元外的任意一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向下一级运算单元输出本级余数;
最后一级运算单元的余数存储单元,还配置为在移位指针控制器的控制下向输出模块输出本级余数。
6.如权利要求1或2或3所述的装置,其特征在于:
所述移位指针控制器,还配置为调用任意一级运算单元时,如果所述运算单元是最后一级运算单元,则控制所述运算单元向输出模块输出本级运算单元生成的余数,如果所述运算单元不是最后一级运算单元,则控制所述运算单元向下一级运算单元输出本级运算单元生成的余数。
7.如权利要求6所述的装置,其特征在于:
移位指针控制器,配置为采用以下方式判断所述运算单元是否为最后一级运算单元:
如果移位寄存器向所述运算单元移出数据后,移位寄存器中剩余0位数据,则判定所述运算单元为最后一级运算单元;
如果移位寄存器向所述运算单元移出数据后,移位寄存器中剩余至少一位数据,则判定所述运算单元不是最后一级运算单元。
8.一种实现取余运算的方法,包括:
输入模块接收原始被除数和原始除数并转换为二进制无符号整数形式,比较原始被除数和原始除数的大小,当原始被除数等于原始除数时,将余数设置为0并输出给输出模块;当原始被除数小于原始除数时,将余数设置为原始被除数并输出给输出模块;当原始被除数大于原始除数时,将原始被除数和原始除数输出给运算模块;
如果运算模块获取到原始被除数和原始除数,则确定原始被除数的有效位宽n和原始 除数的有效位宽m,调用至多n-m+1个级联的运算单元进行减法运算得到余数,将最后一级 运算单元计算得到的余数输出给输出模块;其中,第j级运算单元进行减法运算得到
Figure 137706DEST_PATH_IMAGE001
位余 数;第一级运算单元截取原始被除数中从最高不为0的位开始的高
Figure 486779DEST_PATH_IMAGE002
位数据作为本级被除 数;除第一级运算单元外的第i级运算单元将上一级运算单元生成的
Figure 455872DEST_PATH_IMAGE003
位余数和原始被 除数中的
Figure 532282DEST_PATH_IMAGE004
位数据组合为被除数,所述
Figure 536010DEST_PATH_IMAGE003
位余数作为被除数的高位部分,所述
Figure 55984DEST_PATH_IMAGE004
位原始 被除数的数据作为被除数的低位部分;所有运算单元的除数为原始除数;所有运算单元按 照从高位到低位的顺序依次从原始被除数中截取
Figure 902586DEST_PATH_IMAGE005
位数据,任意两个运算单元截取的原始 被除数的数据位之间没有交集;
Figure 658052DEST_PATH_IMAGE006
Figure 126074DEST_PATH_IMAGE007
Figure 941583DEST_PATH_IMAGE008
Figure 9902DEST_PATH_IMAGE009
Figure 569060DEST_PATH_IMAGE010
Figure 422746DEST_PATH_IMAGE011
;二进制无符号整数的有效位宽是从最高不为0的位开始至最低位的比特序列的位 数;
输出模块输出余数;
其中,运算模块调用至多n-m+1个级联的运算单元进行减法运算得到余数,包括:
移位寄存器存储原始被除数从最高不为0的位开始至最低位的比特序列;移位指针控 制器确定原始被除数的有效位宽n和原始除数的有效位宽m,调用至多n-m+1个级联的运算 单元进行减法运算得到余数,按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 143577DEST_PATH_IMAGE005
位 数据至第
Figure 699193DEST_PATH_IMAGE012
级运算单元;
所述运算模块包括:移位寄存器、移位指针控制器和多个级联的运算单元。
9.如权利要求8所述的方法,其特征在于:
移位指针控制器按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 796462DEST_PATH_IMAGE005
位数据至 第
Figure 770234DEST_PATH_IMAGE012
级运算单元,包括:
移位指针控制器调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所述运算单元不是第一级运算单元,则从移位寄存器中按照从高位到低位的顺序向左移出1位数据至所述运算单元。
10.如权利要求9所述的方法,其特征在于:
移位指针控制器调用至多n-m+1个级联的运算单元进行减法运算得到余数,按照从高 位到低位的顺序依次从移位寄存器中向左移出
Figure 786600DEST_PATH_IMAGE005
位数据至第j级运算单元,包括:
除第一级运算单元外的任意一级运算单元的被除数高位存储单元从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元不存储数据;
任意一级运算单元的被除数低位存储单元从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元存储本级余数;
除最后一级运算单元外的任意一级运算单元的余数存储单元在移位指针控制器的控制下向下一级运算单元输出本级余数;最后一级运算单元的余数存储单元在移位指针控制器的控制下向输出模块输出本级余数;
其中,所述运算单元包括:被除数高位存储单元、被除数低位存储单元、被除数组合单元,除数存储单元,比较器,减法器和余数存储单元。
11.如权利要求8所述的方法,其特征在于:
移位指针控制器按照从高位到低位的顺序依次从移位寄存器中向左移出
Figure 704878DEST_PATH_IMAGE005
位数据至 第
Figure 481204DEST_PATH_IMAGE012
级运算单元,包括:
移位指针控制器调用任意一级运算单元时,如果所述运算单元是第一级运算单元,则 从移位寄存器中按照从高位到低位的顺序连续向左移出m位数据至所述运算单元;如果所 述运算单元不是第一级运算单元,则确定所述运算单元的上一级运算单元生成的余数的有 效位宽
Figure 168537DEST_PATH_IMAGE013
,如果
Figure 621384DEST_PATH_IMAGE014
,则确定移位寄存器中剩余数据的有效位宽t,如果
Figure 761378DEST_PATH_IMAGE015
,则从移位 寄存器中按照从高位到低位的顺序向左移出所有数据至所述运算单元,如果
Figure 341395DEST_PATH_IMAGE016
,则从 移位寄存器中按照从高位到低位的顺序向左移出有效位宽为m的多位数据至所述运算单 元;如果
Figure 883235DEST_PATH_IMAGE017
,则确定移位寄存器中剩余数据的位宽t,如果
Figure 772563DEST_PATH_IMAGE018
,则从移位寄存器 中按照从高位到低位的顺序向左移出t位数据至所述运算单元;如果
Figure 275219DEST_PATH_IMAGE019
,则从移位 寄存器中按照从高位到低位的顺序向左移出m-a位数据至所述运算单元;其中,移位寄存器 中剩余数据的有效位宽是从最高不为0的位开始至最低位的比特序列的位数,移位寄存器 中剩余数据的位宽是剩余数据从最高位开始至最低位的比特序列的位数。
12.如权利要求11所述的方法,其特征在于:
移位指针控制器调用至多n-m+1个级联的运算单元进行减法运算得到余数,按照从高 位到低位的顺序依次从移位寄存器中向左移出
Figure 517982DEST_PATH_IMAGE005
位数据至第
Figure 38962DEST_PATH_IMAGE012
级运算单元,包括:
除第一级运算单元外的任意一级运算单元的被除数高位存储单元从上一级运算单元的余数存储单元获取数据作为本级被除数的高位部分;第一级运算单元的被除数高位存储单元不存储数据;
任意一级运算单元的被除数低位存储单元从移位寄存器获取一位或多位数据作为本级被除数的低位部分;
任意一级运算单元的被除数组合单元将被除数低位存储单元中的数据和被除数高位存储单元中的数据进行组合生成本级被除数,被除数低位存储单元中的数据作为本级被除数的低位部分,被除数高位存储单元中的数据作为本级被除数的高位部分;
任意一级运算单元的除数存储单元获取原始除数并作为本级除数进行存储;
任意一级运算单元的比较器比较被除数组合单元中的本级被除数与除数存储单元中的本级除数的大小,如果本级被除数大于或等于本级除数,则将本级被除数和本级除数发送至减法器;如果本级被除数小于本级除数,则将本级被除数作为本级余数发送至余数存储单元;
任意一级运算单元的减法器用本级被除数减去本级除数得到差值,将所述差值作为本级余数发送至余数存储单元;
任意一级运算单元的余数存储单元存储本级余数;确定所述本级余数的有效位宽,将所述本级余数的有效位宽信息发送给移位指针控制器;
除最后一级运算单元外的任意一级运算单元的余数存储单元在移位指针控制器的控制下向下一级运算单元输出本级余数;最后一级运算单元的余数存储单元在移位指针控制器的控制下向输出模块输出本级余数;
其中,所述运算单元包括:被除数高位存储单元、被除数低位存储单元、被除数组合单元,除数存储单元,比较器,减法器和余数存储单元。
13.一种运算芯片,包括权利要求1-7中任一项所述的实现取余运算的装置。
CN202210754558.3A 2022-06-30 2022-06-30 一种实现取余运算的装置、方法及运算芯片 Active CN114840175B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210754558.3A CN114840175B (zh) 2022-06-30 2022-06-30 一种实现取余运算的装置、方法及运算芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210754558.3A CN114840175B (zh) 2022-06-30 2022-06-30 一种实现取余运算的装置、方法及运算芯片

Publications (2)

Publication Number Publication Date
CN114840175A CN114840175A (zh) 2022-08-02
CN114840175B true CN114840175B (zh) 2022-09-13

Family

ID=82574945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210754558.3A Active CN114840175B (zh) 2022-06-30 2022-06-30 一种实现取余运算的装置、方法及运算芯片

Country Status (1)

Country Link
CN (1) CN114840175B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09274560A (ja) * 1996-04-05 1997-10-21 Oki Micro Design Miyazaki:Kk べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
CN111813375A (zh) * 2020-08-14 2020-10-23 Oppo广东移动通信有限公司 求模运算处理方法及相关产品
KR102241252B1 (ko) * 2020-12-03 2021-04-15 국민대학교산학협력단 모듈러 연산 방법, 장치 및 시스템
CN113805846A (zh) * 2021-09-02 2021-12-17 哲库科技(北京)有限公司 取模运算方法、电路、电子设备和计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763241B (zh) * 2010-01-20 2012-02-08 西安电子科技大学 实现ecc密码体制中签名算法的大整数求模运算装置及求模方法
CN107766031B (zh) * 2017-11-14 2020-06-19 京东方科技集团股份有限公司 分段式除法器、分段式除法运算方法、以及电子设备
CN108334305B (zh) * 2018-01-18 2020-06-30 上海达梦数据库有限公司 一种除法运算方法、装置、设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09274560A (ja) * 1996-04-05 1997-10-21 Oki Micro Design Miyazaki:Kk べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
CN111813375A (zh) * 2020-08-14 2020-10-23 Oppo广东移动通信有限公司 求模运算处理方法及相关产品
KR102241252B1 (ko) * 2020-12-03 2021-04-15 국민대학교산학협력단 모듈러 연산 방법, 장치 및 시스템
CN113805846A (zh) * 2021-09-02 2021-12-17 哲库科技(北京)有限公司 取模运算方法、电路、电子设备和计算机可读存储介质

Also Published As

Publication number Publication date
CN114840175A (zh) 2022-08-02

Similar Documents

Publication Publication Date Title
US8495119B2 (en) Efficient check node message transform approximation for LDPC decoder
US20210349692A1 (en) Multiplier and multiplication method
US20200218509A1 (en) Multiplication Circuit, System on Chip, and Electronic Device
US20220334798A1 (en) Floating-point number multiplication computation method and apparatus, and arithmetic logic unit
KR20170008149A (ko) 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법
CN111813375A (zh) 求模运算处理方法及相关产品
US9009209B2 (en) Processor, control method of processor, and computer readable storage medium storing processing program for division operation
CN114840175B (zh) 一种实现取余运算的装置、方法及运算芯片
US6151612A (en) Apparatus and method for converting floating point number into integer in floating point unit
US4038538A (en) Integer and floating point to binary converter
US5945657A (en) Constant divider
CN114168106A (zh) 基于卷积神经网络的数据处理方法、装置及设备
US20190286418A1 (en) Architecture and instruction set to support integer division
US20050010632A1 (en) Digital signal processor based on jumping floating-point arithmetic
US20190332355A1 (en) Method and apparatus for pre-rounding in a multiplier-accumulator
US20140280405A1 (en) Conversion of a normalized n-bit value into a normalized m-bit value
JP2991788B2 (ja) 復号器
US20060277246A1 (en) Multiplication circuitry
US20230368496A1 (en) Super resolution device and method
US11042359B2 (en) Semiconductor device including an adder
CN111124312B (zh) 数据去重的方法及其装置
US20230325150A1 (en) Multiple-input floating-point number processing method and apparatus
US8346840B2 (en) Flexible accumulator for rational division
US9379735B1 (en) Method and apparatus for signal saturation
JP2000010763A (ja) 除算回路

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230425

Address after: 10 Jialeng Road, Singapore # 09-11

Patentee after: Shenglong (Singapore) Pte. Ltd.

Address before: 1605, floor 16, No. 9, North Fourth Ring West Road, Haidian District, Beijing 100080

Patentee before: SUNLUNE TECHNOLOGY DEVELOPMENT (BEIJING) Co.,Ltd.